axe-api 0.22.0 → 0.30.0-rc1
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/app/Config/Application.d.ts +3 -0
- package/build/dev-kit/app/Config/Application.js +14 -0
- package/build/dev-kit/app/Config/Database.d.ts +3 -0
- package/build/dev-kit/app/Config/Database.js +24 -0
- package/build/dev-kit/app/Events/UserEvent.d.ts +3 -0
- package/build/dev-kit/app/Events/UserEvent.js +16 -0
- package/build/dev-kit/app/Hooks/CustomerHook.d.ts +3 -0
- package/build/dev-kit/app/Hooks/CustomerHook.js +16 -0
- package/build/dev-kit/app/Hooks/EmployeeHook.d.ts +2 -0
- package/build/dev-kit/app/Hooks/EmployeeHook.js +16 -0
- package/build/dev-kit/app/Hooks/UserHook.d.ts +3 -0
- package/build/dev-kit/app/Hooks/UserHook.js +17 -0
- package/build/dev-kit/app/Models/Customer.d.ts +7 -0
- package/build/dev-kit/app/Models/Customer.js +15 -0
- package/build/dev-kit/app/Models/Employee.d.ts +9 -0
- package/build/dev-kit/app/Models/Employee.js +21 -0
- package/build/dev-kit/app/Models/EmployeeAddress.d.ts +8 -0
- package/build/dev-kit/app/Models/EmployeeAddress.js +18 -0
- package/build/dev-kit/app/Models/Post.d.ts +6 -0
- package/build/dev-kit/app/Models/Post.js +14 -0
- package/build/dev-kit/app/Models/User.d.ts +7 -0
- package/build/dev-kit/app/Models/User.js +23 -0
- package/build/dev-kit/app/Serialization/UserSerialization.d.ts +3 -0
- package/build/dev-kit/app/Serialization/UserSerialization.js +6 -0
- package/build/dev-kit/app/config.d.ts +3 -0
- package/build/dev-kit/app/config.js +31 -0
- package/build/dev-kit/app/init.d.ts +4 -0
- package/build/dev-kit/app/init.js +16 -0
- package/build/dev-kit/app/v1/Events/UserEvent.d.ts +3 -0
- package/build/dev-kit/app/v1/Events/UserEvent.js +16 -0
- package/build/dev-kit/app/v1/Hooks/CustomerHook.d.ts +3 -0
- package/build/dev-kit/app/v1/Hooks/CustomerHook.js +16 -0
- package/build/dev-kit/app/v1/Hooks/EmployeeHook.d.ts +2 -0
- package/build/dev-kit/app/v1/Hooks/EmployeeHook.js +16 -0
- package/build/dev-kit/app/v1/Hooks/UserHook.d.ts +3 -0
- package/build/dev-kit/app/v1/Hooks/UserHook.js +17 -0
- package/build/dev-kit/app/v1/Models/Customer.d.ts +7 -0
- package/build/dev-kit/app/v1/Models/Customer.js +15 -0
- package/build/dev-kit/app/v1/Models/Employee.d.ts +9 -0
- package/build/dev-kit/app/v1/Models/Employee.js +21 -0
- package/build/dev-kit/app/v1/Models/EmployeeAddress.d.ts +8 -0
- package/build/dev-kit/app/v1/Models/EmployeeAddress.js +18 -0
- package/build/dev-kit/app/v1/Models/Post.d.ts +6 -0
- package/build/dev-kit/app/v1/Models/Post.js +14 -0
- package/build/dev-kit/app/v1/Models/User.d.ts +7 -0
- package/build/dev-kit/app/v1/Models/User.js +23 -0
- package/build/dev-kit/app/v1/Serialization/PostSerialization.d.ts +3 -0
- package/build/dev-kit/app/v1/Serialization/PostSerialization.js +6 -0
- package/build/dev-kit/app/v1/Serialization/UserSerialization.d.ts +3 -0
- package/build/dev-kit/app/v1/Serialization/UserSerialization.js +5 -0
- package/build/dev-kit/app/v1/config.d.ts +3 -0
- package/build/dev-kit/app/v1/config.js +19 -0
- package/build/dev-kit/app/v1/init.d.ts +4 -0
- package/build/dev-kit/app/v1/init.js +16 -0
- package/build/dev-kit/app/v2/Events/UserEvent.d.ts +3 -0
- package/build/dev-kit/app/v2/Events/UserEvent.js +16 -0
- package/build/dev-kit/app/v2/Hooks/CustomerHook.d.ts +3 -0
- package/build/dev-kit/app/v2/Hooks/CustomerHook.js +16 -0
- package/build/dev-kit/app/v2/Hooks/EmployeeHook.d.ts +2 -0
- package/build/dev-kit/app/v2/Hooks/EmployeeHook.js +16 -0
- package/build/dev-kit/app/v2/Hooks/UserHook.d.ts +3 -0
- package/build/dev-kit/app/v2/Hooks/UserHook.js +17 -0
- package/build/dev-kit/app/v2/Models/Customer.d.ts +10 -0
- package/build/dev-kit/app/v2/Models/Customer.js +20 -0
- package/build/dev-kit/app/v2/Models/Employee.d.ts +9 -0
- package/build/dev-kit/app/v2/Models/Employee.js +21 -0
- package/build/dev-kit/app/v2/Models/EmployeeAddress.d.ts +8 -0
- package/build/dev-kit/app/v2/Models/EmployeeAddress.js +18 -0
- package/build/dev-kit/app/v2/Models/Post.d.ts +6 -0
- package/build/dev-kit/app/v2/Models/Post.js +14 -0
- package/build/dev-kit/app/v2/Models/User.d.ts +7 -0
- package/build/dev-kit/app/v2/Models/User.js +23 -0
- package/build/dev-kit/app/v2/Serialization/UserSerialization.d.ts +3 -0
- package/build/dev-kit/app/v2/Serialization/UserSerialization.js +5 -0
- package/build/dev-kit/app/v2/config.d.ts +3 -0
- package/build/dev-kit/app/v2/config.js +9 -0
- package/build/dev-kit/app/v2/init.d.ts +4 -0
- package/build/dev-kit/app/v2/init.js +16 -0
- package/build/dev-kit/app/v3/config.d.ts +3 -0
- package/build/dev-kit/app/v3/config.js +9 -0
- package/build/dev-kit/config.d.ts +3 -0
- package/build/dev-kit/config.js +31 -0
- package/build/dev-kit.d.ts +1 -0
- package/build/dev-kit.js +16 -0
- package/build/package.json +67 -0
- 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 +27 -25
- package/build/src/Enums.d.ts +8 -0
- package/build/src/Enums.js +10 -1
- 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 +4 -3
- package/build/src/Handlers/Helpers.js +9 -10
- 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 +34 -11
- package/build/src/Middlewares/acceptLanguageMiddleware.js +3 -5
- package/build/src/Model.d.ts +0 -1
- package/build/src/Model.js +0 -4
- package/build/src/Resolvers/FolderResolver.js +1 -0
- package/build/src/Resolvers/GeneralHookResolver.d.ts +4 -2
- package/build/src/Resolvers/GeneralHookResolver.js +5 -8
- package/build/src/Resolvers/ModelResolver.d.ts +4 -0
- package/build/src/Resolvers/ModelResolver.js +26 -8
- 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 +79 -0
- package/build/src/Services/DocumentationService.d.ts +3 -1
- package/build/src/Services/DocumentationService.js +6 -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 +3 -0
- package/build/src/Services/ModelService.js +4 -0
- package/build/src/Services/SchemaValidatorService.d.ts +3 -0
- package/build/src/Services/SchemaValidatorService.js +12 -8
- package/build/src/Services/index.d.ts +2 -1
- package/build/src/Services/index.js +3 -1
- package/build/src/Types.d.ts +2 -0
- package/build/src/Types.js +2 -0
- package/build/src/constants.js +0 -1
- package/package.json +2 -1
- package/CHANGELOG.md +0 -212
|
@@ -3,6 +3,8 @@ import { Express, Request, Response, NextFunction } from "express";
|
|
|
3
3
|
import { Column } from "knex-schema-inspector/lib/types/column";
|
|
4
4
|
import { HandlerTypes, LogLevels, HttpMethods, HookFunctionTypes, Extensions, Relationships, SortTypes, ConditionTypes, DependencyTypes } from "./Enums";
|
|
5
5
|
import Model from "./Model";
|
|
6
|
+
import { SerializationFunction } from "./Types";
|
|
7
|
+
import { ModelListService } from "./Services";
|
|
6
8
|
export interface IColumn extends Column {
|
|
7
9
|
table_name: string;
|
|
8
10
|
}
|
|
@@ -16,15 +18,18 @@ interface IHandlerBasedSerializer {
|
|
|
16
18
|
handler: HandlerTypes[];
|
|
17
19
|
serializer: ((data: any, request: Request) => void)[];
|
|
18
20
|
}
|
|
21
|
+
export interface IVersionConfig {
|
|
22
|
+
transaction: boolean | IHandlerBasedTransactionConfig | IHandlerBasedTransactionConfig[];
|
|
23
|
+
serializers: ((data: any, request: Request) => void)[] | IHandlerBasedSerializer[];
|
|
24
|
+
supportedLanguages: string[];
|
|
25
|
+
defaultLanguage: string;
|
|
26
|
+
}
|
|
19
27
|
export interface IApplicationConfig extends IConfig {
|
|
20
28
|
env: string;
|
|
21
29
|
port: number;
|
|
22
30
|
logLevel: LogLevels;
|
|
23
31
|
prefix: string;
|
|
24
|
-
|
|
25
|
-
serializers: ((data: any, request: Request) => void)[] | IHandlerBasedSerializer[];
|
|
26
|
-
supportedLanguages: string[];
|
|
27
|
-
defaultLanguage: string;
|
|
32
|
+
database: IDatabaseConfig;
|
|
28
33
|
}
|
|
29
34
|
export interface ILanguage {
|
|
30
35
|
title: string;
|
|
@@ -36,13 +41,27 @@ export interface IAcceptedLanguage {
|
|
|
36
41
|
quality: number;
|
|
37
42
|
}
|
|
38
43
|
export declare type IDatabaseConfig = Knex.Config;
|
|
39
|
-
export interface
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
export interface IVersionFolder {
|
|
45
|
+
root: string;
|
|
46
|
+
config: string;
|
|
47
|
+
events: string;
|
|
48
|
+
hooks: string;
|
|
49
|
+
middlewares: string;
|
|
50
|
+
models: string;
|
|
51
|
+
serialization: string;
|
|
52
|
+
}
|
|
53
|
+
export interface IVersion {
|
|
54
|
+
name: string;
|
|
55
|
+
config: IVersionConfig;
|
|
56
|
+
folders: IVersionFolder;
|
|
57
|
+
modelList: ModelListService;
|
|
58
|
+
modelTree: IModelService[];
|
|
59
|
+
}
|
|
60
|
+
export interface IAPI {
|
|
61
|
+
rootFolder: string;
|
|
62
|
+
appFolder: string;
|
|
63
|
+
versions: IVersion[];
|
|
64
|
+
config: IApplicationConfig;
|
|
46
65
|
}
|
|
47
66
|
export interface IGeneralHooks {
|
|
48
67
|
onBeforeInit: (app: Express) => void | null;
|
|
@@ -85,8 +104,10 @@ export interface IModelService {
|
|
|
85
104
|
events: Record<HookFunctionTypes, (params: IHookParameter) => void>;
|
|
86
105
|
isRecursive: boolean;
|
|
87
106
|
children: IModelService[];
|
|
107
|
+
serialize: SerializationFunction | null;
|
|
88
108
|
setColumns(columns: IColumn[]): void;
|
|
89
109
|
setExtensions(type: Extensions, hookFunctionType: HookFunctionTypes, data: (params: IHookParameter) => void): void;
|
|
110
|
+
setSerialization(callback: SerializationFunction): void;
|
|
90
111
|
}
|
|
91
112
|
export interface IRelation {
|
|
92
113
|
type: Relationships;
|
|
@@ -96,6 +117,8 @@ export interface IRelation {
|
|
|
96
117
|
foreignKey: string;
|
|
97
118
|
}
|
|
98
119
|
export interface IRequestPack {
|
|
120
|
+
api: IAPI;
|
|
121
|
+
version: IVersion;
|
|
99
122
|
req: Request;
|
|
100
123
|
res: Response;
|
|
101
124
|
handlerType: HandlerTypes;
|
|
@@ -9,15 +9,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
const Services_1 = require("../Services");
|
|
13
12
|
const Resolvers_1 = require("../Resolvers");
|
|
13
|
+
const Helpers_1 = require("../Helpers");
|
|
14
14
|
exports.default = (req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
|
|
15
15
|
// Application configuration is need for the default setting.
|
|
16
|
-
const
|
|
17
|
-
const application = configs.Application;
|
|
18
|
-
const { supportedLanguages, defaultLanguage } = application;
|
|
16
|
+
const version = yield (0, Helpers_1.getVersionByRequest)(req);
|
|
19
17
|
// Setting the current language by the supported, default and the client prefences
|
|
20
|
-
req.currentLanguage = Resolvers_1.AcceptLanguageResolver.resolve(req.get("accept-language") || "", supportedLanguages || ["en"], defaultLanguage || "en");
|
|
18
|
+
req.currentLanguage = Resolvers_1.AcceptLanguageResolver.resolve(req.get("accept-language") || "", version.config.supportedLanguages || ["en"], version.config.defaultLanguage || "en");
|
|
21
19
|
// Adding the `Content-Language` header to the response object
|
|
22
20
|
res.setHeader("Content-Language", req.currentLanguage.title);
|
|
23
21
|
next();
|
package/build/src/Model.d.ts
CHANGED
|
@@ -20,7 +20,6 @@ declare class Model {
|
|
|
20
20
|
hasMany(relatedModel: string, primaryKey?: string, foreignKey?: string): IRelation;
|
|
21
21
|
hasOne(relatedModel: string, primaryKey?: string, foreignKey?: string): IRelation;
|
|
22
22
|
belongsTo(relatedModel: string, primaryKey: string, foreignKey: string): IRelation;
|
|
23
|
-
serialize(data: any, request: Request): any;
|
|
24
23
|
private hasStringValue;
|
|
25
24
|
}
|
|
26
25
|
export default Model;
|
package/build/src/Model.js
CHANGED
|
@@ -130,10 +130,6 @@ class Model {
|
|
|
130
130
|
belongsTo(relatedModel, primaryKey, foreignKey) {
|
|
131
131
|
return this.hasOne(relatedModel, foreignKey, primaryKey);
|
|
132
132
|
}
|
|
133
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
134
|
-
serialize(data, request) {
|
|
135
|
-
return data;
|
|
136
|
-
}
|
|
137
133
|
hasStringValue() {
|
|
138
134
|
const tester = this.validations;
|
|
139
135
|
let status = false;
|
|
@@ -13,6 +13,7 @@ class FolderResolver {
|
|
|
13
13
|
Hooks: path_1.default.join(appFolder, "app", "Hooks"),
|
|
14
14
|
Middlewares: path_1.default.join(appFolder, "app", "Middlewares"),
|
|
15
15
|
Models: path_1.default.join(appFolder, "app", "Models"),
|
|
16
|
+
Serialization: path_1.default.join(appFolder, "app", "Serialization"),
|
|
16
17
|
};
|
|
17
18
|
}
|
|
18
19
|
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { IGeneralHooks } from "../Interfaces";
|
|
1
|
+
import { IGeneralHooks, IVersion } from "../Interfaces";
|
|
2
2
|
declare class GeneralHookResolver {
|
|
3
|
-
|
|
3
|
+
private version;
|
|
4
|
+
constructor(version: IVersion);
|
|
5
|
+
resolve(): Promise<IGeneralHooks>;
|
|
4
6
|
}
|
|
5
7
|
export default GeneralHookResolver;
|
|
@@ -8,19 +8,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
const path_1 = __importDefault(require("path"));
|
|
16
|
-
const Services_1 = require("../Services");
|
|
17
12
|
const _1 = require(".");
|
|
18
13
|
class GeneralHookResolver {
|
|
19
|
-
|
|
14
|
+
constructor(version) {
|
|
15
|
+
this.version = version;
|
|
16
|
+
}
|
|
17
|
+
resolve() {
|
|
20
18
|
return __awaiter(this, void 0, void 0, function* () {
|
|
21
|
-
const folders = (yield Services_1.IoCService.use("Folders"));
|
|
22
19
|
const fileResolver = new _1.FileResolver();
|
|
23
|
-
const content = yield fileResolver.resolveContent(
|
|
20
|
+
const content = yield fileResolver.resolveContent(this.version.folders.root);
|
|
24
21
|
if (content && content.init) {
|
|
25
22
|
const { onBeforeInit = null, onAfterInit = null } = content.init;
|
|
26
23
|
return { onBeforeInit, onAfterInit };
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
import { IVersion } from "../Interfaces";
|
|
1
2
|
declare class ModelResolver {
|
|
3
|
+
private version;
|
|
4
|
+
constructor(version: IVersion);
|
|
2
5
|
resolve(): Promise<void>;
|
|
3
6
|
private setModelRelations;
|
|
4
7
|
private getModelList;
|
|
5
8
|
private setDatabaseColumns;
|
|
6
9
|
private setModelHooks;
|
|
10
|
+
private setModelSerializations;
|
|
7
11
|
private getInstanceMethods;
|
|
8
12
|
}
|
|
9
13
|
export default ModelResolver;
|
|
@@ -16,17 +16,22 @@ const FileResolver_1 = __importDefault(require("./FileResolver"));
|
|
|
16
16
|
const Enums_1 = require("../Enums");
|
|
17
17
|
const Services_1 = require("../Services");
|
|
18
18
|
const constants_1 = require("../constants");
|
|
19
|
+
const AxeError_1 = __importDefault(require("../Exceptions/AxeError"));
|
|
19
20
|
class ModelResolver {
|
|
21
|
+
constructor(version) {
|
|
22
|
+
this.version = version;
|
|
23
|
+
}
|
|
20
24
|
resolve() {
|
|
21
25
|
return __awaiter(this, void 0, void 0, function* () {
|
|
22
|
-
const logger =
|
|
26
|
+
const logger = Services_1.LogService.getInstance();
|
|
23
27
|
const modelList = new Services_1.ModelListService(yield this.getModelList());
|
|
24
28
|
yield this.setModelRelations(modelList);
|
|
25
29
|
yield this.setDatabaseColumns(modelList);
|
|
26
30
|
yield this.setModelHooks(modelList, Enums_1.Extensions.Hooks);
|
|
27
31
|
yield this.setModelHooks(modelList, Enums_1.Extensions.Events);
|
|
28
|
-
|
|
29
|
-
|
|
32
|
+
yield this.setModelSerializations(modelList);
|
|
33
|
+
this.version.modelList = modelList;
|
|
34
|
+
logger.info(`[${this.version.name}] All models have been resolved.`);
|
|
30
35
|
});
|
|
31
36
|
}
|
|
32
37
|
setModelRelations(modelList) {
|
|
@@ -48,9 +53,8 @@ class ModelResolver {
|
|
|
48
53
|
getModelList() {
|
|
49
54
|
return __awaiter(this, void 0, void 0, function* () {
|
|
50
55
|
const list = [];
|
|
51
|
-
const folders = (yield Services_1.IoCService.use("Folders"));
|
|
52
56
|
const fileResolver = new FileResolver_1.default();
|
|
53
|
-
const models = yield fileResolver.resolve(folders.
|
|
57
|
+
const models = yield fileResolver.resolve(this.version.folders.models);
|
|
54
58
|
for (const key in models) {
|
|
55
59
|
list.push(new Services_1.ModelService(key, models[key]));
|
|
56
60
|
}
|
|
@@ -72,7 +76,7 @@ class ModelResolver {
|
|
|
72
76
|
for (const model of modelList.get()) {
|
|
73
77
|
const modelColumns = columns.filter((column) => column.table_name === model.instance.table);
|
|
74
78
|
if (modelColumns.length === 0) {
|
|
75
|
-
throw new
|
|
79
|
+
throw new AxeError_1.default(Enums_1.AxeErrorCode.TABLE_DOESNT_HAVE_ANY_COLUMN, `The "${model.instance.table}" table doesn't have any column.`);
|
|
76
80
|
}
|
|
77
81
|
model.setColumns(modelColumns);
|
|
78
82
|
}
|
|
@@ -80,9 +84,10 @@ class ModelResolver {
|
|
|
80
84
|
}
|
|
81
85
|
setModelHooks(modelList, hookType) {
|
|
82
86
|
return __awaiter(this, void 0, void 0, function* () {
|
|
83
|
-
const folders = (yield Services_1.IoCService.use("Folders"));
|
|
84
87
|
const fileResolver = new FileResolver_1.default();
|
|
85
|
-
const folder = hookType === Enums_1.Extensions.Hooks
|
|
88
|
+
const folder = hookType === Enums_1.Extensions.Hooks
|
|
89
|
+
? this.version.folders.hooks
|
|
90
|
+
: this.version.folders.events;
|
|
86
91
|
const hooks = yield fileResolver.resolveContent(folder);
|
|
87
92
|
for (const model of modelList.get()) {
|
|
88
93
|
const hookFileName = `${model.name}${hookType
|
|
@@ -99,6 +104,19 @@ class ModelResolver {
|
|
|
99
104
|
}
|
|
100
105
|
});
|
|
101
106
|
}
|
|
107
|
+
setModelSerializations(modelList) {
|
|
108
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
109
|
+
const fileResolver = new FileResolver_1.default();
|
|
110
|
+
const serializations = yield fileResolver.resolveContent(this.version.folders.serialization);
|
|
111
|
+
for (const model of modelList.get()) {
|
|
112
|
+
const fileName = `${model.name}Serialization`;
|
|
113
|
+
if (serializations[fileName]) {
|
|
114
|
+
const file = serializations[fileName];
|
|
115
|
+
model.setSerialization(file.default);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
}
|
|
102
120
|
getInstanceMethods(obj) {
|
|
103
121
|
const properties = Object.getOwnPropertyNames(obj.instance.constructor.prototype);
|
|
104
122
|
return properties.filter((name) => !constants_1.DEFAULT_METHODS_OF_MODELS.includes(name));
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { IModelService } from "../Interfaces";
|
|
1
|
+
import { IModelService, IVersion } from "../Interfaces";
|
|
2
2
|
import { HandlerTypes } from "../Enums";
|
|
3
3
|
declare class TransactionResolver {
|
|
4
|
-
|
|
4
|
+
private version;
|
|
5
|
+
constructor(version: IVersion);
|
|
6
|
+
resolve(model: IModelService, handlerType: HandlerTypes): Promise<boolean>;
|
|
5
7
|
private static resolveTransactionOption;
|
|
6
8
|
private static getTransactionConfiguration;
|
|
7
9
|
}
|
|
@@ -9,12 +9,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
const Services_1 = require("../Services");
|
|
13
12
|
class TransactionResolver {
|
|
14
|
-
|
|
13
|
+
constructor(version) {
|
|
14
|
+
this.version = version;
|
|
15
|
+
}
|
|
16
|
+
resolve(model, handlerType) {
|
|
15
17
|
return __awaiter(this, void 0, void 0, function* () {
|
|
16
|
-
const
|
|
17
|
-
const global = config.Application.transaction;
|
|
18
|
+
const global = this.version.config.transaction;
|
|
18
19
|
const local = model.instance.transaction;
|
|
19
20
|
let privilegedOption = false;
|
|
20
21
|
if (global) {
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
const path_1 = __importDefault(require("path"));
|
|
39
|
+
const fs_1 = __importDefault(require("fs"));
|
|
40
|
+
const AxeError_1 = __importDefault(require("../Exceptions/AxeError"));
|
|
41
|
+
const Enums_1 = require("../Enums");
|
|
42
|
+
class VersionConfigResolver {
|
|
43
|
+
constructor(version) {
|
|
44
|
+
this.version = version;
|
|
45
|
+
}
|
|
46
|
+
resolve() {
|
|
47
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
const versionConfigFile = path_1.default.join(this.version.folders.root, "config");
|
|
49
|
+
if (!fs_1.default.existsSync(`${versionConfigFile}.ts`) &&
|
|
50
|
+
!fs_1.default.existsSync(`${versionConfigFile}.js`)) {
|
|
51
|
+
throw new AxeError_1.default(Enums_1.AxeErrorCode.VERSION_CONFIG_NOT_FOUND, `The version file not found: ${versionConfigFile}.ts`);
|
|
52
|
+
}
|
|
53
|
+
const { default: content } = yield Promise.resolve().then(() => __importStar(require(versionConfigFile)));
|
|
54
|
+
this.version.config = content;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.default = VersionConfigResolver;
|
|
@@ -0,0 +1,65 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const validatorjs_1 = __importDefault(require("validatorjs"));
|
|
16
|
+
const promises_1 = require("fs/promises");
|
|
17
|
+
const Services_1 = require("../Services");
|
|
18
|
+
const AxeError_1 = __importDefault(require("../Exceptions/AxeError"));
|
|
19
|
+
const Enums_1 = require("../Enums");
|
|
20
|
+
const RESERVED_VERSION_FOLDERS = [
|
|
21
|
+
"Config",
|
|
22
|
+
"Events",
|
|
23
|
+
"Hooks",
|
|
24
|
+
"Models",
|
|
25
|
+
"Serialization",
|
|
26
|
+
];
|
|
27
|
+
class VersionResolver {
|
|
28
|
+
resolve() {
|
|
29
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
30
|
+
const logger = Services_1.LogService.getInstance();
|
|
31
|
+
yield this.getVersions();
|
|
32
|
+
logger.info("All API versions have been resolved.");
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
getVersions() {
|
|
36
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
37
|
+
const api = Services_1.APIService.getInstance();
|
|
38
|
+
const versionFolders = yield this.getDirectories(api.appFolder);
|
|
39
|
+
this.checkReservedKeys(versionFolders);
|
|
40
|
+
versionFolders.forEach((version) => {
|
|
41
|
+
const validation = new validatorjs_1.default({ version }, { version: "required|alpha_num" });
|
|
42
|
+
if (validation.fails()) {
|
|
43
|
+
const { version: versionError } = validation.errors.errors;
|
|
44
|
+
const [message] = versionError;
|
|
45
|
+
throw new AxeError_1.default(Enums_1.AxeErrorCode.UNACCEPTABLE_VERSION_NAME, `${message} ("${version}")`);
|
|
46
|
+
}
|
|
47
|
+
api.addVersion(version);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
getDirectories(source) {
|
|
52
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
53
|
+
return (yield (0, promises_1.readdir)(source, { withFileTypes: true }))
|
|
54
|
+
.filter((dirent) => dirent.isDirectory())
|
|
55
|
+
.map((dirent) => dirent.name);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
checkReservedKeys(names) {
|
|
59
|
+
const reservedName = names.find((name) => RESERVED_VERSION_FOLDERS.includes(name));
|
|
60
|
+
if (reservedName) {
|
|
61
|
+
throw new AxeError_1.default(Enums_1.AxeErrorCode.RESERVED_VERSION_NAME, `You can not use a reserved name in the app directory: ${reservedName}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.default = VersionResolver;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import AcceptLanguageResolver from "./AcceptLanguageResolver";
|
|
2
2
|
import FileResolver from "./FileResolver";
|
|
3
|
-
import FolderResolver from "./FolderResolver";
|
|
4
3
|
import GeneralHookResolver from "./GeneralHookResolver";
|
|
5
4
|
import ModelResolver from "./ModelResolver";
|
|
6
5
|
import TransactionResolver from "./TransactionResolver";
|
|
6
|
+
import VersionConfigResolver from "./VersionConfigResolver";
|
|
7
|
+
import VersionResolver from "./VersionResolver";
|
|
7
8
|
import WithQueryResolver from "./WithQueryResolver";
|
|
8
|
-
export { AcceptLanguageResolver, FileResolver,
|
|
9
|
+
export { AcceptLanguageResolver, FileResolver, GeneralHookResolver, ModelResolver, TransactionResolver, VersionConfigResolver, VersionResolver, WithQueryResolver, };
|
|
@@ -3,18 +3,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.WithQueryResolver = exports.
|
|
6
|
+
exports.WithQueryResolver = exports.VersionResolver = exports.VersionConfigResolver = exports.TransactionResolver = exports.ModelResolver = exports.GeneralHookResolver = exports.FileResolver = exports.AcceptLanguageResolver = void 0;
|
|
7
7
|
const AcceptLanguageResolver_1 = __importDefault(require("./AcceptLanguageResolver"));
|
|
8
8
|
exports.AcceptLanguageResolver = AcceptLanguageResolver_1.default;
|
|
9
9
|
const FileResolver_1 = __importDefault(require("./FileResolver"));
|
|
10
10
|
exports.FileResolver = FileResolver_1.default;
|
|
11
|
-
const FolderResolver_1 = __importDefault(require("./FolderResolver"));
|
|
12
|
-
exports.FolderResolver = FolderResolver_1.default;
|
|
13
11
|
const GeneralHookResolver_1 = __importDefault(require("./GeneralHookResolver"));
|
|
14
12
|
exports.GeneralHookResolver = GeneralHookResolver_1.default;
|
|
15
13
|
const ModelResolver_1 = __importDefault(require("./ModelResolver"));
|
|
16
14
|
exports.ModelResolver = ModelResolver_1.default;
|
|
17
15
|
const TransactionResolver_1 = __importDefault(require("./TransactionResolver"));
|
|
18
16
|
exports.TransactionResolver = TransactionResolver_1.default;
|
|
17
|
+
const VersionConfigResolver_1 = __importDefault(require("./VersionConfigResolver"));
|
|
18
|
+
exports.VersionConfigResolver = VersionConfigResolver_1.default;
|
|
19
|
+
const VersionResolver_1 = __importDefault(require("./VersionResolver"));
|
|
20
|
+
exports.VersionResolver = VersionResolver_1.default;
|
|
19
21
|
const WithQueryResolver_1 = __importDefault(require("./WithQueryResolver"));
|
|
20
22
|
exports.WithQueryResolver = WithQueryResolver_1.default;
|
package/build/src/Server.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
declare class Server {
|
|
2
|
-
start(
|
|
2
|
+
start(rootFolder: string): Promise<void>;
|
|
3
3
|
private bindDependencies;
|
|
4
4
|
private loadExpress;
|
|
5
|
-
private
|
|
5
|
+
private analyzeVersions;
|
|
6
|
+
private loadGeneralConfiguration;
|
|
6
7
|
private listen;
|
|
7
8
|
}
|
|
8
9
|
export default Server;
|