axe-api 1.0.0-rc3 → 1.0.0-rc31

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 (145) hide show
  1. package/build/index.d.ts +3 -1
  2. package/build/index.js +4 -1
  3. package/build/src/Builders/IndexBuilder.d.ts +7 -0
  4. package/build/src/Builders/IndexBuilder.js +35 -0
  5. package/build/src/Builders/ModelTreeBuilder.js +3 -3
  6. package/build/src/Builders/RouterBuilder.d.ts +1 -1
  7. package/build/src/Builders/RouterBuilder.js +24 -14
  8. package/build/src/Builders/SwaggerBuilder.d.ts +2 -0
  9. package/build/src/Builders/SwaggerBuilder.js +609 -0
  10. package/build/src/Enums.d.ts +6 -8
  11. package/build/src/Enums.js +20 -22
  12. package/build/src/Handlers/DocsHandler.js +41 -0
  13. package/build/src/Handlers/ErrorHandler.d.ts +4 -0
  14. package/build/src/Handlers/ErrorHandler.js +12 -0
  15. package/build/src/Handlers/Helpers.d.ts +16 -4
  16. package/build/src/Handlers/Helpers.js +202 -5
  17. package/build/src/Handlers/RequestHandler.d.ts +2 -1
  18. package/build/src/Handlers/RequestHandler.js +23 -19
  19. package/build/src/Handlers/{DocsHTMLHandler.js → SwaggerHandler.js} +8 -7
  20. package/build/src/Helpers.d.ts +0 -1
  21. package/build/src/Helpers.js +1 -53
  22. package/build/src/Interfaces.d.ts +126 -22
  23. package/build/src/Middlewares/RateLimit/AdaptorFactory.d.ts +6 -0
  24. package/build/src/Middlewares/RateLimit/AdaptorFactory.js +17 -0
  25. package/build/src/Middlewares/RateLimit/MemoryAdaptor.d.ts +10 -0
  26. package/build/src/Middlewares/RateLimit/MemoryAdaptor.js +41 -0
  27. package/build/src/Middlewares/RateLimit/RedisAdaptor.d.ts +19 -0
  28. package/build/src/Middlewares/RateLimit/RedisAdaptor.js +59 -0
  29. package/build/src/Middlewares/RateLimit/index.d.ts +23 -0
  30. package/build/src/Middlewares/RateLimit/index.js +138 -0
  31. package/build/src/Model.d.ts +256 -10
  32. package/build/src/Model.js +322 -30
  33. package/build/src/Phases/All/FetchPhase.d.ts +2 -2
  34. package/build/src/Phases/All/PreparePhase.d.ts +2 -2
  35. package/build/src/Phases/All/index.d.ts +1 -1
  36. package/build/src/Phases/CacheTagCleanPhase.d.ts +3 -0
  37. package/build/src/{Handlers/MetadataHandler.js → Phases/CacheTagCleanPhase.js} +6 -10
  38. package/build/src/Phases/Delete/ActionPhase.d.ts +2 -2
  39. package/build/src/Phases/Delete/ActionPhase.js +21 -2
  40. package/build/src/Phases/Delete/PreparePhase.d.ts +2 -2
  41. package/build/src/Phases/Delete/QueryPhase.d.ts +2 -2
  42. package/build/src/Phases/Delete/ResponsePhase.d.ts +2 -2
  43. package/build/src/Phases/Delete/ResponsePhase.js +2 -1
  44. package/build/src/Phases/Delete/index.d.ts +4 -4
  45. package/build/src/Phases/ForceDelete/ActionPhase.d.ts +2 -2
  46. package/build/src/Phases/ForceDelete/ActionPhase.js +7 -0
  47. package/build/src/Phases/ForceDelete/PreparePhase.d.ts +2 -2
  48. package/build/src/Phases/ForceDelete/PreparePhase.js +1 -3
  49. package/build/src/Phases/ForceDelete/QueryPhase.d.ts +2 -2
  50. package/build/src/Phases/ForceDelete/index.d.ts +3 -3
  51. package/build/src/Phases/GetCachePhase.d.ts +3 -0
  52. package/build/src/Phases/GetCachePhase.js +39 -0
  53. package/build/src/Phases/List/RelationalPhase.d.ts +2 -2
  54. package/build/src/Phases/List/ResultPhase.d.ts +2 -2
  55. package/build/src/Phases/List/ResultPhase.js +9 -1
  56. package/build/src/Phases/List/SerializePhase.d.ts +2 -2
  57. package/build/src/Phases/List/index.d.ts +3 -3
  58. package/build/src/Phases/Paginate/FetchPhase.d.ts +2 -2
  59. package/build/src/Phases/Paginate/FetchPhase.js +11 -0
  60. package/build/src/Phases/Paginate/PreparePhase.d.ts +2 -2
  61. package/build/src/Phases/Paginate/PreparePhase.js +0 -8
  62. package/build/src/Phases/Paginate/index.d.ts +2 -2
  63. package/build/src/Phases/Patch/PrepareActionPhase.d.ts +2 -2
  64. package/build/src/Phases/Patch/PrepareActionPhase.js +13 -10
  65. package/build/src/Phases/Patch/index.d.ts +1 -1
  66. package/build/src/Phases/Search/FetchPhase.d.ts +3 -0
  67. package/build/src/Phases/Search/FetchPhase.js +66 -0
  68. package/build/src/Phases/Search/PreparePhase.d.ts +3 -0
  69. package/build/src/Phases/Search/PreparePhase.js +19 -0
  70. package/build/src/Phases/Search/index.d.ts +5 -0
  71. package/build/src/Phases/Search/index.js +11 -0
  72. package/build/src/Phases/Show/FetchPhase.d.ts +2 -2
  73. package/build/src/Phases/Show/FetchPhase.js +11 -1
  74. package/build/src/Phases/Show/PreparePhase.d.ts +2 -2
  75. package/build/src/Phases/Show/PreparePhase.js +5 -13
  76. package/build/src/Phases/Show/index.d.ts +2 -2
  77. package/build/src/Phases/Single/GetPhase.d.ts +2 -2
  78. package/build/src/Phases/Single/PrepareGetPhase.d.ts +2 -2
  79. package/build/src/Phases/Single/RelationalPhase.d.ts +2 -2
  80. package/build/src/Phases/Single/ResultPhase.d.ts +2 -2
  81. package/build/src/Phases/Single/ResultPhase.js +9 -1
  82. package/build/src/Phases/Single/SerializePhase.d.ts +2 -2
  83. package/build/src/Phases/Single/index.d.ts +5 -5
  84. package/build/src/Phases/Store/ActionPhase.d.ts +2 -2
  85. package/build/src/Phases/Store/ActionPhase.js +18 -7
  86. package/build/src/Phases/Store/PreparePhase.d.ts +2 -2
  87. package/build/src/Phases/Store/PreparePhase.js +14 -9
  88. package/build/src/Phases/Store/ResultPhase.d.ts +3 -0
  89. package/build/src/Phases/Store/ResultPhase.js +23 -0
  90. package/build/src/Phases/Store/index.d.ts +3 -2
  91. package/build/src/Phases/Store/index.js +2 -0
  92. package/build/src/Phases/URLSearchParamPhase.d.ts +3 -0
  93. package/build/src/Phases/URLSearchParamPhase.js +37 -0
  94. package/build/src/Phases/Update/ActionPhase.d.ts +2 -2
  95. package/build/src/Phases/Update/ActionPhase.js +14 -3
  96. package/build/src/Phases/Update/PrepareActionPhase.d.ts +2 -2
  97. package/build/src/Phases/Update/PrepareActionPhase.js +13 -10
  98. package/build/src/Phases/Update/index.d.ts +2 -2
  99. package/build/src/Resolvers/ModelResolver.d.ts +1 -0
  100. package/build/src/Resolvers/ModelResolver.js +30 -6
  101. package/build/src/Resolvers/TransactionResolver.js +3 -15
  102. package/build/src/Resolvers/VersionConfigResolver.js +6 -1
  103. package/build/src/Resolvers/VersionResolver.js +2 -2
  104. package/build/src/Server.d.ts +5 -0
  105. package/build/src/Server.js +53 -19
  106. package/build/src/Services/APIService.d.ts +3 -3
  107. package/build/src/Services/APIService.js +4 -8
  108. package/build/src/Services/App.d.ts +94 -8
  109. package/build/src/Services/App.js +118 -10
  110. package/build/src/Services/AxeRequest.d.ts +52 -1
  111. package/build/src/Services/AxeRequest.js +77 -4
  112. package/build/src/Services/AxeResponse.d.ts +28 -1
  113. package/build/src/Services/AxeResponse.js +28 -0
  114. package/build/src/Services/ConverterService.d.ts +9 -0
  115. package/build/src/Services/ConverterService.js +49 -0
  116. package/build/src/Services/DocumentationService.d.ts +5 -2
  117. package/build/src/Services/DocumentationService.js +13 -1
  118. package/build/src/Services/ElasticService.d.ts +14 -0
  119. package/build/src/Services/ElasticService.js +74 -0
  120. package/build/src/Services/IoCService.d.ts +29 -2
  121. package/build/src/Services/IoCService.js +33 -6
  122. package/build/src/Services/LimitService.d.ts +18 -0
  123. package/build/src/Services/LimitService.js +18 -0
  124. package/build/src/Services/LogService.d.ts +8 -12
  125. package/build/src/Services/LogService.js +16 -33
  126. package/build/src/Services/ModelService.d.ts +9 -5
  127. package/build/src/Services/ModelService.js +11 -0
  128. package/build/src/Services/QueryService.d.ts +3 -3
  129. package/build/src/Services/QueryService.js +6 -0
  130. package/build/src/Services/SchemaValidatorService.d.ts +1 -0
  131. package/build/src/Services/SchemaValidatorService.js +5 -2
  132. package/build/src/Services/URLService.d.ts +6 -14
  133. package/build/src/Services/URLService.js +39 -9
  134. package/build/src/Steps/Event.d.ts +11 -0
  135. package/build/src/Steps/Event.js +17 -0
  136. package/build/src/Steps/Hook.d.ts +11 -0
  137. package/build/src/Steps/Hook.js +17 -0
  138. package/build/src/Steps/Phase.d.ts +11 -0
  139. package/build/src/Steps/Phase.js +18 -0
  140. package/build/src/Types.d.ts +19 -6
  141. package/build/src/constants.d.ts +8 -19
  142. package/build/src/constants.js +215 -152
  143. package/package.json +41 -27
  144. /package/build/src/Handlers/{DocsHTMLHandler.d.ts → DocsHandler.d.ts} +0 -0
  145. /package/build/src/Handlers/{MetadataHandler.d.ts → SwaggerHandler.d.ts} +0 -0
package/build/index.d.ts CHANGED
@@ -3,6 +3,8 @@ import Model from "./src/Model";
3
3
  import ApiError from "./src/Exceptions/ApiError";
4
4
  import { DEFAULT_HANDLERS, DEFAULT_VERSION_CONFIG } from "./src/constants";
5
5
  import { IoCService, allow, deny, App, AxeRequest, AxeResponse } from "./src/Services";
6
+ import { rateLimit } from "./src/Middlewares/RateLimit";
6
7
  export * from "./src/Enums";
7
8
  export * from "./src/Interfaces";
8
- export { App, AxeRequest, AxeResponse, Server, Model, ApiError, DEFAULT_HANDLERS, DEFAULT_VERSION_CONFIG, IoCService, allow, deny, };
9
+ export * from "./src/Types";
10
+ export { App, AxeRequest, AxeResponse, Server, Model, ApiError, DEFAULT_HANDLERS, DEFAULT_VERSION_CONFIG, IoCService, allow, deny, rateLimit, };
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.deny = exports.allow = exports.IoCService = exports.DEFAULT_VERSION_CONFIG = exports.DEFAULT_HANDLERS = exports.ApiError = exports.Model = exports.Server = exports.AxeResponse = exports.AxeRequest = exports.App = void 0;
20
+ exports.rateLimit = exports.deny = exports.allow = exports.IoCService = exports.DEFAULT_VERSION_CONFIG = exports.DEFAULT_HANDLERS = exports.ApiError = exports.Model = exports.Server = exports.AxeResponse = exports.AxeRequest = exports.App = 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"));
@@ -34,5 +34,8 @@ Object.defineProperty(exports, "deny", { enumerable: true, get: function () { re
34
34
  Object.defineProperty(exports, "App", { enumerable: true, get: function () { return Services_1.App; } });
35
35
  Object.defineProperty(exports, "AxeRequest", { enumerable: true, get: function () { return Services_1.AxeRequest; } });
36
36
  Object.defineProperty(exports, "AxeResponse", { enumerable: true, get: function () { return Services_1.AxeResponse; } });
37
+ const RateLimit_1 = require("./src/Middlewares/RateLimit");
38
+ Object.defineProperty(exports, "rateLimit", { enumerable: true, get: function () { return RateLimit_1.rateLimit; } });
37
39
  __exportStar(require("./src/Enums"), exports);
38
40
  __exportStar(require("./src/Interfaces"), exports);
41
+ __exportStar(require("./src/Types"), exports);
@@ -0,0 +1,7 @@
1
+ import { IVersion } from "../Interfaces";
2
+ declare class IndexBuilder {
3
+ private version;
4
+ constructor(version: IVersion);
5
+ build(): Promise<void>;
6
+ }
7
+ export default IndexBuilder;
@@ -0,0 +1,35 @@
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
+ class IndexBuilder {
14
+ constructor(version) {
15
+ this.version = version;
16
+ }
17
+ build() {
18
+ return __awaiter(this, void 0, void 0, function* () {
19
+ // Filtering the models that need Elastic Search index
20
+ const models = this.version.modelList
21
+ .get()
22
+ .filter((model) => model.instance.search);
23
+ // No need to create any index
24
+ if (models.length === 0) {
25
+ return;
26
+ }
27
+ const elastic = yield Services_1.IoCService.use("Elastic");
28
+ // Creating index for each model
29
+ for (const model of models) {
30
+ elastic.createIndex(model.name);
31
+ }
32
+ });
33
+ }
34
+ }
35
+ exports.default = IndexBuilder;
@@ -17,12 +17,11 @@ class ModelTreeBuilder {
17
17
  }
18
18
  build() {
19
19
  return __awaiter(this, void 0, void 0, function* () {
20
- const logger = Services_1.LogService.getInstance();
21
20
  const tree = this.getRootLevelOfTree();
22
21
  this.createRecursiveTree(tree);
23
22
  this.addNestedRoutes(tree);
24
23
  this.version.modelTree = tree;
25
- logger.info(`[${this.version.name}] Model tree has been created.`);
24
+ Services_1.LogService.debug(`[${this.version.name}] Model tree has been created.`);
26
25
  });
27
26
  }
28
27
  getRootLevelOfTree() {
@@ -60,7 +59,8 @@ class ModelTreeBuilder {
60
59
  this.version.modelList.get().forEach((model) => {
61
60
  const recursiveRelations = model.relations.filter((relation) => relation.model === model.name);
62
61
  if (recursiveRelations.length === 2) {
63
- tree.push(Object.assign(Object.assign({}, model), { isRecursive: true, children: [] }));
62
+ model.setAsRecursive();
63
+ tree.push(model);
64
64
  }
65
65
  });
66
66
  }
@@ -7,7 +7,7 @@ declare class RouterBuilder {
7
7
  private createRouteByModel;
8
8
  private createNestedRoutes;
9
9
  private createChildRoutes;
10
- private addExpressRoute;
10
+ private addRoute;
11
11
  private getResourcePath;
12
12
  private getRootPrefix;
13
13
  }
@@ -36,14 +36,13 @@ class RouterBuilder {
36
36
  }
37
37
  build() {
38
38
  return __awaiter(this, void 0, void 0, function* () {
39
- const app = yield Services_1.IoCService.useByType("App");
40
- const logger = Services_1.LogService.getInstance();
39
+ const app = yield Services_1.IoCService.use("App");
41
40
  const generalHooks = yield new Resolvers_1.GeneralHookResolver(this.version).resolve();
42
41
  if (generalHooks.onBeforeInit) {
43
42
  generalHooks.onBeforeInit(app);
44
43
  }
45
44
  yield this.createRoutesByModelTree();
46
- logger.info(`[${this.version.name}] Express routes have been created.`);
45
+ Services_1.LogService.debug(`[${this.version.name}] All endpoints have been created.`);
47
46
  if (generalHooks.onAfterInit) {
48
47
  generalHooks.onAfterInit(app);
49
48
  }
@@ -52,11 +51,11 @@ class RouterBuilder {
52
51
  createRoutesByModelTree() {
53
52
  return __awaiter(this, void 0, void 0, function* () {
54
53
  for (const model of this.version.modelTree) {
55
- yield this.createRouteByModel(model);
54
+ yield this.createRouteByModel(model, []);
56
55
  }
57
56
  });
58
57
  }
59
- createRouteByModel(model, urlPrefix = "", parentModel = null, relation = null, allowRecursive = true) {
58
+ createRouteByModel(model, parentPairs = [], urlPrefix = "", parentModel = null, relation = null, allowRecursive = true) {
60
59
  return __awaiter(this, void 0, void 0, function* () {
61
60
  if (model.instance.ignore) {
62
61
  return;
@@ -76,10 +75,10 @@ class RouterBuilder {
76
75
  const middlewares = [
77
76
  ...model.instance.getMiddlewares(handlerType),
78
77
  ];
79
- // Adding the route to the express
80
- yield this.addExpressRoute(handlerType, url, middlewares, model, parentModel, relation);
78
+ // Adding the endpoint
79
+ yield this.addRoute(handlerType, url, middlewares, model, parentPairs, parentModel, relation);
81
80
  }
82
- yield this.createChildRoutes(model, resource, urlPrefix);
81
+ yield this.createChildRoutes(model, resource, urlPrefix, parentPairs);
83
82
  yield this.createNestedRoutes(model, allowRecursive, urlPrefix, resource);
84
83
  });
85
84
  }
@@ -92,11 +91,16 @@ class RouterBuilder {
92
91
  const relation = model.relations.find((relation) => relation.model === model.name &&
93
92
  relation.type === Enums_1.Relationships.HAS_MANY);
94
93
  if (relation) {
95
- yield this.createRouteByModel(model, `${urlPrefix}${resource}/:${(0, change_case_1.camelCase)(relation.foreignKey)}/`, model, relation, false);
94
+ const paramName = (0, change_case_1.camelCase)(`${model.name}-${relation.primaryKey}`);
95
+ const parentPair = {
96
+ model,
97
+ paramName,
98
+ };
99
+ yield this.createRouteByModel(model, [parentPair], `${urlPrefix}${resource}/:${paramName}/`, model, relation, false);
96
100
  }
97
101
  });
98
102
  }
99
- createChildRoutes(model, resource, urlPrefix) {
103
+ createChildRoutes(model, resource, urlPrefix, parentPairs) {
100
104
  return __awaiter(this, void 0, void 0, function* () {
101
105
  if (model.children.length === 0) {
102
106
  return;
@@ -107,12 +111,18 @@ class RouterBuilder {
107
111
  const child = model.children.find((item) => item.name === relation.model);
108
112
  // It should be recursive
109
113
  if (child) {
110
- yield this.createRouteByModel(child, `${urlPrefix}${resource}/:${(0, change_case_1.camelCase)(relation.foreignKey)}/`, model, relation);
114
+ const paramName = (0, change_case_1.camelCase)(`${model.name}-${relation.primaryKey}`);
115
+ // Setting the new parent pair depth
116
+ const parentPair = {
117
+ model,
118
+ paramName,
119
+ };
120
+ yield this.createRouteByModel(child, [...parentPairs, parentPair], `${urlPrefix}${resource}/:${paramName}/`, model, relation);
111
121
  }
112
122
  }
113
123
  });
114
124
  }
115
- addExpressRoute(handlerType, url, middlewares, model, parentModel, relation) {
125
+ addRoute(handlerType, url, middlewares, model, parentPairs, parentModel, relation) {
116
126
  return __awaiter(this, void 0, void 0, function* () {
117
127
  const docs = Services_1.DocumentationService.getInstance();
118
128
  const data = {
@@ -123,9 +133,9 @@ class RouterBuilder {
123
133
  relation,
124
134
  };
125
135
  // Adding the route
126
- yield URLService_1.default.add(constants_1.HANDLER_METHOD_MAP[handlerType], url, data, middlewares);
136
+ yield URLService_1.default.add(constants_1.HANDLER_METHOD_MAP[handlerType], url, data, middlewares, parentPairs);
127
137
  // Documentation
128
- docs.push(this.version, handlerType, constants_1.HANDLER_METHOD_MAP[handlerType], url, model);
138
+ docs.push(this.version, handlerType, constants_1.HANDLER_METHOD_MAP[handlerType], url, model, parentModel);
129
139
  });
130
140
  }
131
141
  getResourcePath(model, relation) {
@@ -0,0 +1,2 @@
1
+ declare const _default: () => Promise<any>;
2
+ export default _default;