axe-api 1.0.0-rc8 → 1.0.0

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 (138) hide show
  1. package/build/index.d.ts +1 -0
  2. package/build/index.js +1 -0
  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 +2 -1
  6. package/build/src/Builders/RouterBuilder.js +22 -11
  7. package/build/src/Builders/SwaggerBuilder.d.ts +2 -0
  8. package/build/src/Builders/SwaggerBuilder.js +609 -0
  9. package/build/src/Enums.d.ts +6 -1
  10. package/build/src/Enums.js +7 -1
  11. package/build/src/Handlers/DocsHandler.js +41 -0
  12. package/build/src/Handlers/ErrorHandler.d.ts +6 -0
  13. package/build/src/Handlers/ErrorHandler.js +12 -0
  14. package/build/src/Handlers/Helpers.d.ts +16 -4
  15. package/build/src/Handlers/Helpers.js +202 -5
  16. package/build/src/Handlers/RequestHandler.d.ts +4 -1
  17. package/build/src/Handlers/RequestHandler.js +36 -40
  18. package/build/src/Handlers/{DocsHTMLHandler.js → SwaggerHandler.js} +8 -7
  19. package/build/src/Interfaces.d.ts +103 -35
  20. package/build/src/Middlewares/RateLimit/AdaptorFactory.d.ts +3 -3
  21. package/build/src/Middlewares/RateLimit/MemoryAdaptor.d.ts +2 -2
  22. package/build/src/Middlewares/RateLimit/RedisAdaptor.d.ts +12 -4
  23. package/build/src/Middlewares/RateLimit/RedisAdaptor.js +24 -0
  24. package/build/src/Middlewares/RateLimit/index.d.ts +22 -3
  25. package/build/src/Middlewares/RateLimit/index.js +23 -3
  26. package/build/src/Model.d.ts +256 -10
  27. package/build/src/Model.js +322 -30
  28. package/build/src/Phases/All/FetchPhase.d.ts +2 -2
  29. package/build/src/Phases/All/PreparePhase.d.ts +2 -2
  30. package/build/src/Phases/All/index.d.ts +1 -1
  31. package/build/src/Phases/CacheTagCleanPhase.d.ts +3 -0
  32. package/build/src/{Handlers/MetadataHandler.js → Phases/CacheTagCleanPhase.js} +6 -10
  33. package/build/src/Phases/Delete/ActionPhase.d.ts +2 -2
  34. package/build/src/Phases/Delete/ActionPhase.js +21 -2
  35. package/build/src/Phases/Delete/PreparePhase.d.ts +2 -2
  36. package/build/src/Phases/Delete/QueryPhase.d.ts +2 -2
  37. package/build/src/Phases/Delete/ResponsePhase.d.ts +2 -2
  38. package/build/src/Phases/Delete/ResponsePhase.js +2 -1
  39. package/build/src/Phases/Delete/index.d.ts +4 -4
  40. package/build/src/Phases/ForceDelete/ActionPhase.d.ts +2 -2
  41. package/build/src/Phases/ForceDelete/ActionPhase.js +7 -0
  42. package/build/src/Phases/ForceDelete/PreparePhase.d.ts +2 -2
  43. package/build/src/Phases/ForceDelete/QueryPhase.d.ts +2 -2
  44. package/build/src/Phases/ForceDelete/index.d.ts +3 -3
  45. package/build/src/Phases/GetCachePhase.d.ts +3 -0
  46. package/build/src/Phases/GetCachePhase.js +39 -0
  47. package/build/src/Phases/List/RelationalPhase.d.ts +2 -2
  48. package/build/src/Phases/List/ResultPhase.d.ts +2 -2
  49. package/build/src/Phases/List/ResultPhase.js +9 -1
  50. package/build/src/Phases/List/SerializePhase.d.ts +2 -2
  51. package/build/src/Phases/List/index.d.ts +3 -3
  52. package/build/src/Phases/Paginate/FetchPhase.d.ts +2 -2
  53. package/build/src/Phases/Paginate/FetchPhase.js +11 -0
  54. package/build/src/Phases/Paginate/PreparePhase.d.ts +2 -2
  55. package/build/src/Phases/Paginate/PreparePhase.js +0 -8
  56. package/build/src/Phases/Paginate/index.d.ts +2 -2
  57. package/build/src/Phases/Patch/PrepareActionPhase.d.ts +2 -2
  58. package/build/src/Phases/Patch/PrepareActionPhase.js +13 -10
  59. package/build/src/Phases/Patch/index.d.ts +1 -1
  60. package/build/src/Phases/Search/FetchPhase.d.ts +3 -0
  61. package/build/src/Phases/Search/FetchPhase.js +66 -0
  62. package/build/src/Phases/Search/PreparePhase.d.ts +3 -0
  63. package/build/src/Phases/Search/PreparePhase.js +19 -0
  64. package/build/src/Phases/Search/index.d.ts +5 -0
  65. package/build/src/Phases/Search/index.js +11 -0
  66. package/build/src/Phases/Show/FetchPhase.d.ts +2 -2
  67. package/build/src/Phases/Show/FetchPhase.js +11 -1
  68. package/build/src/Phases/Show/PreparePhase.d.ts +2 -2
  69. package/build/src/Phases/Show/PreparePhase.js +5 -13
  70. package/build/src/Phases/Show/index.d.ts +2 -2
  71. package/build/src/Phases/Single/GetPhase.d.ts +2 -2
  72. package/build/src/Phases/Single/PrepareGetPhase.d.ts +2 -2
  73. package/build/src/Phases/Single/RelationalPhase.d.ts +2 -2
  74. package/build/src/Phases/Single/ResultPhase.d.ts +2 -2
  75. package/build/src/Phases/Single/ResultPhase.js +9 -1
  76. package/build/src/Phases/Single/SerializePhase.d.ts +2 -2
  77. package/build/src/Phases/Single/index.d.ts +5 -5
  78. package/build/src/Phases/Store/ActionPhase.d.ts +2 -2
  79. package/build/src/Phases/Store/ActionPhase.js +18 -7
  80. package/build/src/Phases/Store/PreparePhase.d.ts +2 -2
  81. package/build/src/Phases/Store/PreparePhase.js +14 -9
  82. package/build/src/Phases/Store/ResultPhase.d.ts +3 -0
  83. package/build/src/Phases/Store/ResultPhase.js +23 -0
  84. package/build/src/Phases/Store/index.d.ts +3 -2
  85. package/build/src/Phases/Store/index.js +2 -0
  86. package/build/src/Phases/URLSearchParamPhase.d.ts +3 -0
  87. package/build/src/Phases/URLSearchParamPhase.js +37 -0
  88. package/build/src/Phases/Update/ActionPhase.d.ts +2 -2
  89. package/build/src/Phases/Update/ActionPhase.js +14 -3
  90. package/build/src/Phases/Update/PrepareActionPhase.d.ts +2 -2
  91. package/build/src/Phases/Update/PrepareActionPhase.js +13 -10
  92. package/build/src/Phases/Update/index.d.ts +2 -2
  93. package/build/src/Resolvers/ModelResolver.d.ts +1 -0
  94. package/build/src/Resolvers/ModelResolver.js +21 -2
  95. package/build/src/Resolvers/TransactionResolver.js +3 -15
  96. package/build/src/Resolvers/VersionConfigResolver.js +6 -1
  97. package/build/src/Resolvers/VersionResolver.js +1 -0
  98. package/build/src/Server.d.ts +5 -0
  99. package/build/src/Server.js +44 -11
  100. package/build/src/Services/APIService.d.ts +3 -3
  101. package/build/src/Services/APIService.js +3 -16
  102. package/build/src/Services/App.d.ts +94 -8
  103. package/build/src/Services/App.js +94 -29
  104. package/build/src/Services/AxeRequest.d.ts +51 -2
  105. package/build/src/Services/AxeRequest.js +51 -4
  106. package/build/src/Services/AxeResponse.d.ts +28 -1
  107. package/build/src/Services/AxeResponse.js +28 -0
  108. package/build/src/Services/ConverterService.d.ts +5 -3
  109. package/build/src/Services/DocumentationService.d.ts +5 -2
  110. package/build/src/Services/DocumentationService.js +13 -1
  111. package/build/src/Services/ElasticService.d.ts +14 -0
  112. package/build/src/Services/ElasticService.js +74 -0
  113. package/build/src/Services/IoCService.d.ts +29 -2
  114. package/build/src/Services/IoCService.js +33 -6
  115. package/build/src/Services/LimitService.d.ts +18 -0
  116. package/build/src/Services/LimitService.js +18 -0
  117. package/build/src/Services/ModelService.d.ts +9 -5
  118. package/build/src/Services/ModelService.js +11 -0
  119. package/build/src/Services/QueryService.d.ts +3 -3
  120. package/build/src/Services/QueryService.js +6 -0
  121. package/build/src/Services/SchemaValidatorService.d.ts +1 -0
  122. package/build/src/Services/SchemaValidatorService.js +4 -0
  123. package/build/src/Services/URLService.d.ts +6 -14
  124. package/build/src/Services/URLService.js +10 -8
  125. package/build/src/Steps/Event.d.ts +11 -0
  126. package/build/src/Steps/Event.js +17 -0
  127. package/build/src/Steps/Hook.d.ts +11 -0
  128. package/build/src/Steps/Hook.js +17 -0
  129. package/build/src/Steps/Phase.d.ts +11 -0
  130. package/build/src/Steps/Phase.js +18 -0
  131. package/build/src/Types.d.ts +12 -10
  132. package/build/src/constants.d.ts +8 -9
  133. package/build/src/constants.js +215 -152
  134. package/package.json +46 -36
  135. package/build/src/Middlewares/RateLimit/IAdaptor.d.ts +0 -6
  136. package/build/src/Middlewares/RateLimit/IAdaptor.js +0 -2
  137. /package/build/src/Handlers/{DocsHTMLHandler.d.ts → DocsHandler.d.ts} +0 -0
  138. /package/build/src/Handlers/{MetadataHandler.d.ts → SwaggerHandler.d.ts} +0 -0
@@ -3,12 +3,13 @@ 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.HANDLER_CYLES = exports.HANDLER_METHOD_MAP = exports.NUMERIC_PRIMARY_KEY_TYPES = exports.DEFAULT_VERSION_CONFIG = exports.RelationQueryFeatureMap = exports.ConditionQueryFeatureMap = exports.API_ROUTE_TEMPLATES = exports.DEFAULT_METHODS_OF_MODELS = exports.DEFAULT_HANDLERS = exports.RESERVED_KEYWORDS = void 0;
6
+ exports.ALL_HANDLERS = exports.DEFAULT_VERSION_CONFIG = exports.DEFAULT_APP_CONFIG = exports.DEFAULT_CACHE_CONFIGURATION = exports.HANDLER_CYLES = exports.HANDLER_METHOD_MAP = exports.STRING_COLUMN_TYPES = exports.NUMERIC_PRIMARY_KEY_TYPES = exports.RelationQueryFeatureMap = exports.ConditionQueryFeatureMap = exports.API_ROUTE_TEMPLATES = exports.DEFAULT_METHODS_OF_MODELS = exports.DEFAULT_HANDLERS = exports.RESERVED_KEYWORDS = void 0;
7
7
  const Enums_1 = require("./Enums");
8
8
  const LimitService_1 = require("./Services/LimitService");
9
9
  const Single_1 = __importDefault(require("./Phases/Single"));
10
10
  const List_1 = __importDefault(require("./Phases/List"));
11
11
  const Paginate_1 = __importDefault(require("./Phases/Paginate"));
12
+ const Search_1 = __importDefault(require("./Phases/Search"));
12
13
  const All_1 = __importDefault(require("./Phases/All"));
13
14
  const Show_1 = __importDefault(require("./Phases/Show"));
14
15
  const Store_1 = __importDefault(require("./Phases/Store"));
@@ -16,6 +17,14 @@ const Update_1 = __importDefault(require("./Phases/Update"));
16
17
  const Patch_1 = __importDefault(require("./Phases/Patch"));
17
18
  const Delete_1 = __importDefault(require("./Phases/Delete"));
18
19
  const ForceDelete_1 = __importDefault(require("./Phases/ForceDelete"));
20
+ const Phase_1 = __importDefault(require("./Steps/Phase"));
21
+ const Hook_1 = __importDefault(require("./Steps/Hook"));
22
+ const Event_1 = __importDefault(require("./Steps/Event"));
23
+ const ErrorHandler_1 = __importDefault(require("./Handlers/ErrorHandler"));
24
+ const GetCachePhase_1 = __importDefault(require("./Phases/GetCachePhase"));
25
+ const CacheTagCleanPhase_1 = __importDefault(require("./Phases/CacheTagCleanPhase"));
26
+ const URLSearchParamPhase_1 = __importDefault(require("./Phases/URLSearchParamPhase"));
27
+ const Helpers_1 = require("./Handlers/Helpers");
19
28
  exports.RESERVED_KEYWORDS = [
20
29
  "force",
21
30
  "model",
@@ -27,6 +36,7 @@ exports.RESERVED_KEYWORDS = [
27
36
  "event",
28
37
  "events",
29
38
  "all",
39
+ "swagger",
30
40
  ];
31
41
  exports.DEFAULT_HANDLERS = [
32
42
  Enums_1.HandlerTypes.INSERT,
@@ -66,11 +76,15 @@ exports.DEFAULT_METHODS_OF_MODELS = [
66
76
  "limits",
67
77
  "getFillableFields",
68
78
  "getValidationRules",
79
+ "cache",
80
+ "search",
81
+ "getSearchQuery",
69
82
  ];
70
83
  exports.API_ROUTE_TEMPLATES = {
71
84
  [Enums_1.HandlerTypes.INSERT]: (prefix, parentUrl, resource) => `/${prefix}/${parentUrl}${resource}`,
72
85
  [Enums_1.HandlerTypes.PAGINATE]: (prefix, parentUrl, resource) => `/${prefix}/${parentUrl}${resource}`,
73
86
  [Enums_1.HandlerTypes.ALL]: (prefix, parentUrl, resource) => `/${prefix}/${parentUrl}${resource}/all`,
87
+ [Enums_1.HandlerTypes.SEARCH]: (prefix, parentUrl, resource) => `/${prefix}/${parentUrl}${resource}/search`,
74
88
  [Enums_1.HandlerTypes.SHOW]: (prefix, parentUrl, resource, primaryKey) => `/${prefix}/${parentUrl}${resource}/:${primaryKey}`,
75
89
  [Enums_1.HandlerTypes.UPDATE]: (prefix, parentUrl, resource, primaryKey) => `/${prefix}/${parentUrl}${resource}/:${primaryKey}`,
76
90
  [Enums_1.HandlerTypes.PATCH]: (prefix, parentUrl, resource, primaryKey) => `/${prefix}/${parentUrl}${resource}/:${primaryKey}`,
@@ -97,28 +111,17 @@ exports.RelationQueryFeatureMap = {
97
111
  [Enums_1.Relationships.HAS_ONE]: Enums_1.QueryFeature.WithHasOne,
98
112
  [Enums_1.Relationships.HAS_MANY]: Enums_1.QueryFeature.WithHasMany,
99
113
  };
100
- exports.DEFAULT_VERSION_CONFIG = {
101
- transaction: false,
102
- serializers: [],
103
- supportedLanguages: ["en"],
104
- defaultLanguage: "en",
105
- query: {
106
- limits: [
107
- (0, LimitService_1.allow)(Enums_1.QueryFeature.All),
108
- (0, LimitService_1.deny)(Enums_1.QueryFeature.WithHasMany),
109
- (0, LimitService_1.deny)(Enums_1.QueryFeature.WhereLike),
110
- (0, LimitService_1.deny)(Enums_1.QueryFeature.WhereNotLike),
111
- (0, LimitService_1.deny)(Enums_1.QueryFeature.Trashed),
112
- ],
113
- defaults: {
114
- perPage: 10,
115
- minPerPage: 1,
116
- maxPerPage: 100,
117
- },
118
- },
119
- formidable: {},
120
- };
121
114
  exports.NUMERIC_PRIMARY_KEY_TYPES = ["integer", "bigint"];
115
+ exports.STRING_COLUMN_TYPES = [
116
+ "CHAR",
117
+ "VARCHAR",
118
+ "BINARY",
119
+ "VARBINARY",
120
+ "BLOB",
121
+ "TEXT",
122
+ "ENUM",
123
+ "SET",
124
+ ].map((item) => item.toLowerCase());
122
125
  exports.HANDLER_METHOD_MAP = {
123
126
  [Enums_1.HandlerTypes.INSERT]: Enums_1.HttpMethods.POST,
124
127
  [Enums_1.HandlerTypes.PAGINATE]: Enums_1.HttpMethods.GET,
@@ -128,152 +131,212 @@ exports.HANDLER_METHOD_MAP = {
128
131
  [Enums_1.HandlerTypes.FORCE_DELETE]: Enums_1.HttpMethods.DELETE,
129
132
  [Enums_1.HandlerTypes.PATCH]: Enums_1.HttpMethods.PATCH,
130
133
  [Enums_1.HandlerTypes.ALL]: Enums_1.HttpMethods.GET,
134
+ [Enums_1.HandlerTypes.SEARCH]: Enums_1.HttpMethods.GET,
131
135
  };
132
- class Phase {
133
- constructor(name, callback) {
134
- this.phaseName = name;
135
- this.callback = callback;
136
- }
137
- get() {
138
- return this.callback;
139
- }
140
- get name() {
141
- return this.phaseName;
142
- }
143
- isAsync() {
144
- return true;
145
- }
146
- }
147
- class Hook {
148
- constructor(hookFunctionType) {
149
- this.hookFunctionType = hookFunctionType;
150
- }
151
- get(model) {
152
- return model.hooks[this.hookFunctionType];
153
- }
154
- get name() {
155
- return `hook:${this.hookFunctionType}`;
156
- }
157
- isAsync() {
158
- return true;
159
- }
160
- }
161
- class Event {
162
- constructor(hookFunctionType) {
163
- this.hookFunctionType = hookFunctionType;
164
- }
165
- get(model) {
166
- return model.events[this.hookFunctionType];
167
- }
168
- get name() {
169
- return `event:${this.hookFunctionType}`;
170
- }
171
- isAsync() {
172
- return false;
173
- }
174
- }
175
136
  exports.HANDLER_CYLES = {
176
137
  [Enums_1.HandlerTypes.INSERT]: [
177
- new Phase("insert.prepare", Store_1.default.PreparePhase),
178
- new Hook(Enums_1.HookFunctionTypes.onBeforeInsert),
179
- new Event(Enums_1.HookFunctionTypes.onBeforeInsert),
180
- new Phase("insert.action", Store_1.default.ActionPhase),
181
- new Hook(Enums_1.HookFunctionTypes.onAfterInsert),
182
- new Event(Enums_1.HookFunctionTypes.onAfterInsert),
183
- new Phase("insert.serialize", Single_1.default.SerializePhase),
184
- new Phase("insert.response", Single_1.default.ResultPhase),
138
+ new Phase_1.default("insert.prepare", Store_1.default.PreparePhase),
139
+ new Hook_1.default(Enums_1.HookFunctionTypes.onBeforeInsert),
140
+ new Event_1.default(Enums_1.HookFunctionTypes.onBeforeInsert),
141
+ new Phase_1.default("insert.action", Store_1.default.ActionPhase),
142
+ new Hook_1.default(Enums_1.HookFunctionTypes.onAfterInsert),
143
+ new Event_1.default(Enums_1.HookFunctionTypes.onAfterInsert),
144
+ new Phase_1.default("insert.serialize", Single_1.default.SerializePhase),
145
+ new Phase_1.default("insert.response", Store_1.default.ResultPhase),
185
146
  ],
186
147
  [Enums_1.HandlerTypes.PAGINATE]: [
187
- new Phase("paginate.prepareQuery", Paginate_1.default.PreparePhase),
188
- new Hook(Enums_1.HookFunctionTypes.onBeforePaginate),
189
- new Event(Enums_1.HookFunctionTypes.onBeforePaginate),
190
- new Phase("paginate.query", Paginate_1.default.FetchPhase),
191
- new Phase("paginate.relational", List_1.default.RelationalPhase),
192
- new Hook(Enums_1.HookFunctionTypes.onAfterPaginate),
193
- new Event(Enums_1.HookFunctionTypes.onAfterPaginate),
194
- new Phase("paginate.serialize", List_1.default.SerializePhase),
195
- new Phase("paginate.response", List_1.default.ResultPhase),
148
+ new Phase_1.default("paginate.cache", GetCachePhase_1.default),
149
+ new Phase_1.default("paginate.URLSearchParamPhase", URLSearchParamPhase_1.default),
150
+ new Phase_1.default("paginate.prepareQuery", Paginate_1.default.PreparePhase),
151
+ new Hook_1.default(Enums_1.HookFunctionTypes.onBeforePaginate),
152
+ new Event_1.default(Enums_1.HookFunctionTypes.onBeforePaginate),
153
+ new Phase_1.default("paginate.query", Paginate_1.default.FetchPhase),
154
+ new Phase_1.default("paginate.relational", List_1.default.RelationalPhase),
155
+ new Hook_1.default(Enums_1.HookFunctionTypes.onAfterPaginate),
156
+ new Event_1.default(Enums_1.HookFunctionTypes.onAfterPaginate),
157
+ new Phase_1.default("paginate.serialize", List_1.default.SerializePhase),
158
+ new Phase_1.default("paginate.response", List_1.default.ResultPhase),
159
+ ],
160
+ [Enums_1.HandlerTypes.SEARCH]: [
161
+ new Phase_1.default("search.cache", GetCachePhase_1.default),
162
+ new Phase_1.default("search.URLSearchParamPhase", URLSearchParamPhase_1.default),
163
+ new Phase_1.default("search.prepareQuery", Search_1.default.PreparePhase),
164
+ new Hook_1.default(Enums_1.HookFunctionTypes.onBeforePaginate),
165
+ new Event_1.default(Enums_1.HookFunctionTypes.onBeforePaginate),
166
+ new Phase_1.default("search.query", Search_1.default.FetchPhase),
167
+ new Phase_1.default("search.relational", List_1.default.RelationalPhase),
168
+ new Hook_1.default(Enums_1.HookFunctionTypes.onAfterPaginate),
169
+ new Event_1.default(Enums_1.HookFunctionTypes.onAfterPaginate),
170
+ new Phase_1.default("search.serialize", List_1.default.SerializePhase),
171
+ new Phase_1.default("search.response", List_1.default.ResultPhase),
196
172
  ],
197
173
  [Enums_1.HandlerTypes.SHOW]: [
198
- new Phase("show.prepareQuery", Show_1.default.PreparePhase),
199
- new Hook(Enums_1.HookFunctionTypes.onBeforeShow),
200
- new Event(Enums_1.HookFunctionTypes.onBeforeShow),
201
- new Phase("show.query", Show_1.default.FetchPhase),
202
- new Phase("show.relational", Single_1.default.RelationalPhase),
203
- new Hook(Enums_1.HookFunctionTypes.onAfterShow),
204
- new Event(Enums_1.HookFunctionTypes.onAfterShow),
205
- new Phase("show.serialize", Single_1.default.SerializePhase),
206
- new Phase("show.response", Single_1.default.ResultPhase),
174
+ new Phase_1.default("show.cache", GetCachePhase_1.default),
175
+ new Phase_1.default("show.URLSearchParamPhase", URLSearchParamPhase_1.default),
176
+ new Phase_1.default("show.prepareQuery", Show_1.default.PreparePhase),
177
+ new Hook_1.default(Enums_1.HookFunctionTypes.onBeforeShow),
178
+ new Event_1.default(Enums_1.HookFunctionTypes.onBeforeShow),
179
+ new Phase_1.default("show.query", Show_1.default.FetchPhase),
180
+ new Phase_1.default("show.relational", Single_1.default.RelationalPhase),
181
+ new Hook_1.default(Enums_1.HookFunctionTypes.onAfterShow),
182
+ new Event_1.default(Enums_1.HookFunctionTypes.onAfterShow),
183
+ new Phase_1.default("show.serialize", Single_1.default.SerializePhase),
184
+ new Phase_1.default("show.response", Single_1.default.ResultPhase),
207
185
  ],
208
186
  [Enums_1.HandlerTypes.UPDATE]: [
209
- new Phase("update.prepareQuery", Single_1.default.PrepareGetPhase),
210
- new Hook(Enums_1.HookFunctionTypes.onBeforeUpdateQuery),
211
- new Event(Enums_1.HookFunctionTypes.onBeforeUpdateQuery),
212
- new Phase("update.query", Single_1.default.GetPhase),
213
- new Hook(Enums_1.HookFunctionTypes.onAfterUpdateQuery),
214
- new Event(Enums_1.HookFunctionTypes.onAfterUpdateQuery),
215
- new Phase("update.prepareAction", Update_1.default.PrepareActionPhase),
216
- new Hook(Enums_1.HookFunctionTypes.onBeforeUpdate),
217
- new Event(Enums_1.HookFunctionTypes.onBeforeUpdate),
218
- new Phase("update.action", Update_1.default.ActionPhase),
219
- new Hook(Enums_1.HookFunctionTypes.onAfterUpdate),
220
- new Event(Enums_1.HookFunctionTypes.onAfterUpdate),
221
- new Phase("update.serialize", Single_1.default.SerializePhase),
222
- new Phase("update.response", Single_1.default.ResultPhase),
187
+ new Phase_1.default("update.URLSearchParamPhase", URLSearchParamPhase_1.default),
188
+ new Phase_1.default("update.prepareQuery", Single_1.default.PrepareGetPhase),
189
+ new Hook_1.default(Enums_1.HookFunctionTypes.onBeforeUpdateQuery),
190
+ new Event_1.default(Enums_1.HookFunctionTypes.onBeforeUpdateQuery),
191
+ new Phase_1.default("update.query", Single_1.default.GetPhase),
192
+ new Hook_1.default(Enums_1.HookFunctionTypes.onAfterUpdateQuery),
193
+ new Event_1.default(Enums_1.HookFunctionTypes.onAfterUpdateQuery),
194
+ new Phase_1.default("update.prepareAction", Update_1.default.PrepareActionPhase),
195
+ new Hook_1.default(Enums_1.HookFunctionTypes.onBeforeUpdate),
196
+ new Event_1.default(Enums_1.HookFunctionTypes.onBeforeUpdate),
197
+ new Phase_1.default("update.action", Update_1.default.ActionPhase),
198
+ new Hook_1.default(Enums_1.HookFunctionTypes.onAfterUpdate),
199
+ new Event_1.default(Enums_1.HookFunctionTypes.onAfterUpdate),
200
+ new Phase_1.default("update.cleanCleanTags", CacheTagCleanPhase_1.default),
201
+ new Phase_1.default("update.serialize", Single_1.default.SerializePhase),
202
+ new Phase_1.default("update.response", Single_1.default.ResultPhase),
223
203
  ],
224
204
  [Enums_1.HandlerTypes.DELETE]: [
225
- new Phase("delete.prepareQuery", Delete_1.default.PreparePhase),
226
- new Hook(Enums_1.HookFunctionTypes.onBeforeDeleteQuery),
227
- new Event(Enums_1.HookFunctionTypes.onBeforeDeleteQuery),
228
- new Phase("delete.query", Delete_1.default.QueryPhase),
229
- new Hook(Enums_1.HookFunctionTypes.onAfterDeleteQuery),
230
- new Event(Enums_1.HookFunctionTypes.onAfterDeleteQuery),
231
- new Hook(Enums_1.HookFunctionTypes.onBeforeDelete),
232
- new Event(Enums_1.HookFunctionTypes.onBeforeDelete),
233
- new Phase("delete.action", Delete_1.default.ActionPhase),
234
- new Hook(Enums_1.HookFunctionTypes.onAfterDelete),
235
- new Event(Enums_1.HookFunctionTypes.onAfterDelete),
236
- new Phase("delete.response", Delete_1.default.ResponsePhase),
205
+ new Phase_1.default("delete.URLSearchParamPhase", URLSearchParamPhase_1.default),
206
+ new Phase_1.default("delete.prepareQuery", Delete_1.default.PreparePhase),
207
+ new Hook_1.default(Enums_1.HookFunctionTypes.onBeforeDeleteQuery),
208
+ new Event_1.default(Enums_1.HookFunctionTypes.onBeforeDeleteQuery),
209
+ new Phase_1.default("delete.query", Delete_1.default.QueryPhase),
210
+ new Hook_1.default(Enums_1.HookFunctionTypes.onAfterDeleteQuery),
211
+ new Event_1.default(Enums_1.HookFunctionTypes.onAfterDeleteQuery),
212
+ new Hook_1.default(Enums_1.HookFunctionTypes.onBeforeDelete),
213
+ new Event_1.default(Enums_1.HookFunctionTypes.onBeforeDelete),
214
+ new Phase_1.default("delete.action", Delete_1.default.ActionPhase),
215
+ new Hook_1.default(Enums_1.HookFunctionTypes.onAfterDelete),
216
+ new Event_1.default(Enums_1.HookFunctionTypes.onAfterDelete),
217
+ new Phase_1.default("delete.cleanCleanTags", CacheTagCleanPhase_1.default),
218
+ new Phase_1.default("delete.response", Delete_1.default.ResponsePhase),
237
219
  ],
238
220
  [Enums_1.HandlerTypes.FORCE_DELETE]: [
239
- new Phase("force-delete.prepareQuery", ForceDelete_1.default.PreparePhase),
240
- new Hook(Enums_1.HookFunctionTypes.onBeforeForceDeleteQuery),
241
- new Event(Enums_1.HookFunctionTypes.onBeforeForceDeleteQuery),
242
- new Phase("force-delete.query", ForceDelete_1.default.QueryPhase),
243
- new Hook(Enums_1.HookFunctionTypes.onAfterForceDeleteQuery),
244
- new Event(Enums_1.HookFunctionTypes.onAfterForceDeleteQuery),
245
- new Hook(Enums_1.HookFunctionTypes.onBeforeForceDelete),
246
- new Event(Enums_1.HookFunctionTypes.onBeforeForceDelete),
247
- new Phase("force-delete.action", ForceDelete_1.default.ActionPhase),
248
- new Hook(Enums_1.HookFunctionTypes.onAfterForceDelete),
249
- new Event(Enums_1.HookFunctionTypes.onAfterForceDelete),
250
- new Phase("force-delete.response", Delete_1.default.ResponsePhase),
221
+ new Phase_1.default("force-delete.URLSearchParamPhase", URLSearchParamPhase_1.default),
222
+ new Phase_1.default("force-delete.prepareQuery", ForceDelete_1.default.PreparePhase),
223
+ new Hook_1.default(Enums_1.HookFunctionTypes.onBeforeForceDeleteQuery),
224
+ new Event_1.default(Enums_1.HookFunctionTypes.onBeforeForceDeleteQuery),
225
+ new Phase_1.default("force-delete.query", ForceDelete_1.default.QueryPhase),
226
+ new Hook_1.default(Enums_1.HookFunctionTypes.onAfterForceDeleteQuery),
227
+ new Event_1.default(Enums_1.HookFunctionTypes.onAfterForceDeleteQuery),
228
+ new Hook_1.default(Enums_1.HookFunctionTypes.onBeforeForceDelete),
229
+ new Event_1.default(Enums_1.HookFunctionTypes.onBeforeForceDelete),
230
+ new Phase_1.default("force-delete.action", ForceDelete_1.default.ActionPhase),
231
+ new Hook_1.default(Enums_1.HookFunctionTypes.onAfterForceDelete),
232
+ new Event_1.default(Enums_1.HookFunctionTypes.onAfterForceDelete),
233
+ new Phase_1.default("force-delete.cleanCleanTags", CacheTagCleanPhase_1.default),
234
+ new Phase_1.default("force-delete.response", Delete_1.default.ResponsePhase),
251
235
  ],
252
236
  [Enums_1.HandlerTypes.PATCH]: [
253
- new Phase("patch.prepareQuery", Single_1.default.PrepareGetPhase),
254
- new Hook(Enums_1.HookFunctionTypes.onBeforeUpdateQuery),
255
- new Event(Enums_1.HookFunctionTypes.onBeforeUpdateQuery),
256
- new Phase("patch.query", Single_1.default.GetPhase),
257
- new Hook(Enums_1.HookFunctionTypes.onAfterUpdateQuery),
258
- new Event(Enums_1.HookFunctionTypes.onAfterUpdateQuery),
259
- new Phase("patch.prepareAction", Patch_1.default.PrepareActionPhase),
260
- new Hook(Enums_1.HookFunctionTypes.onBeforeUpdate),
261
- new Event(Enums_1.HookFunctionTypes.onBeforeUpdate),
262
- new Phase("patch.action", Update_1.default.ActionPhase),
263
- new Hook(Enums_1.HookFunctionTypes.onAfterUpdate),
264
- new Event(Enums_1.HookFunctionTypes.onAfterUpdate),
265
- new Phase("patch.serialize", Single_1.default.SerializePhase),
266
- new Phase("patch.response", Single_1.default.ResultPhase),
237
+ new Phase_1.default("patch.URLSearchParamPhase", URLSearchParamPhase_1.default),
238
+ new Phase_1.default("patch.prepareQuery", Single_1.default.PrepareGetPhase),
239
+ new Hook_1.default(Enums_1.HookFunctionTypes.onBeforeUpdateQuery),
240
+ new Event_1.default(Enums_1.HookFunctionTypes.onBeforeUpdateQuery),
241
+ new Phase_1.default("patch.query", Single_1.default.GetPhase),
242
+ new Hook_1.default(Enums_1.HookFunctionTypes.onAfterUpdateQuery),
243
+ new Event_1.default(Enums_1.HookFunctionTypes.onAfterUpdateQuery),
244
+ new Phase_1.default("patch.prepareAction", Patch_1.default.PrepareActionPhase),
245
+ new Hook_1.default(Enums_1.HookFunctionTypes.onBeforeUpdate),
246
+ new Event_1.default(Enums_1.HookFunctionTypes.onBeforeUpdate),
247
+ new Phase_1.default("patch.action", Update_1.default.ActionPhase),
248
+ new Hook_1.default(Enums_1.HookFunctionTypes.onAfterUpdate),
249
+ new Event_1.default(Enums_1.HookFunctionTypes.onAfterUpdate),
250
+ new Phase_1.default("patch.cleanCleanTags", CacheTagCleanPhase_1.default),
251
+ new Phase_1.default("patch.serialize", Single_1.default.SerializePhase),
252
+ new Phase_1.default("patch.response", Single_1.default.ResultPhase),
267
253
  ],
268
254
  [Enums_1.HandlerTypes.ALL]: [
269
- new Phase("all.prepareQuery", Paginate_1.default.PreparePhase),
270
- new Hook(Enums_1.HookFunctionTypes.onBeforePaginate),
271
- new Event(Enums_1.HookFunctionTypes.onBeforePaginate),
272
- new Phase("all.query", All_1.default.FetchPhase),
273
- new Phase("all.relational", List_1.default.RelationalPhase),
274
- new Hook(Enums_1.HookFunctionTypes.onAfterPaginate),
275
- new Event(Enums_1.HookFunctionTypes.onAfterPaginate),
276
- new Phase("all.serialize", List_1.default.SerializePhase),
277
- new Phase("all.response", List_1.default.ResultPhase),
255
+ new Phase_1.default("all.cache", GetCachePhase_1.default),
256
+ new Phase_1.default("all.URLSearchParamPhase", URLSearchParamPhase_1.default),
257
+ new Phase_1.default("all.prepareQuery", Paginate_1.default.PreparePhase),
258
+ new Hook_1.default(Enums_1.HookFunctionTypes.onBeforePaginate),
259
+ new Event_1.default(Enums_1.HookFunctionTypes.onBeforePaginate),
260
+ new Phase_1.default("all.query", All_1.default.FetchPhase),
261
+ new Phase_1.default("all.relational", List_1.default.RelationalPhase),
262
+ new Hook_1.default(Enums_1.HookFunctionTypes.onAfterPaginate),
263
+ new Event_1.default(Enums_1.HookFunctionTypes.onAfterPaginate),
264
+ new Phase_1.default("all.serialize", List_1.default.SerializePhase),
265
+ new Phase_1.default("all.response", List_1.default.ResultPhase),
278
266
  ],
279
267
  };
268
+ exports.DEFAULT_CACHE_CONFIGURATION = {
269
+ enable: false,
270
+ ttl: 100,
271
+ invalidation: Enums_1.CacheStrategies.TimeBased,
272
+ tagPrefix: "tag",
273
+ cachePrefix: "axe-cache",
274
+ responseHeader: "X-Axe-API-Cache",
275
+ cacheKey: Helpers_1.defaultCacheKeyFunction,
276
+ };
277
+ exports.DEFAULT_APP_CONFIG = {
278
+ prefix: "api",
279
+ env: "production",
280
+ port: 3000,
281
+ docs: true,
282
+ pino: {
283
+ level: "error",
284
+ transport: {
285
+ target: "pino-pretty",
286
+ },
287
+ },
288
+ rateLimit: {
289
+ enabled: false,
290
+ adaptor: "memory",
291
+ maxRequests: 200,
292
+ windowInSeconds: 5,
293
+ trustProxyIP: false,
294
+ },
295
+ database: {
296
+ client: "sqlite",
297
+ connection: {
298
+ filename: "./axedb.sql",
299
+ },
300
+ },
301
+ errorHandler: ErrorHandler_1.default,
302
+ redis: {},
303
+ cache: Object.assign({}, exports.DEFAULT_CACHE_CONFIGURATION),
304
+ elasticSearch: {
305
+ node: "http://localhost:9200",
306
+ },
307
+ search: {
308
+ indexPrefix: "axe",
309
+ },
310
+ };
311
+ exports.DEFAULT_VERSION_CONFIG = {
312
+ transaction: false,
313
+ serializers: [],
314
+ supportedLanguages: ["en"],
315
+ defaultLanguage: "en",
316
+ query: {
317
+ limits: [
318
+ (0, LimitService_1.allow)(Enums_1.QueryFeature.All),
319
+ (0, LimitService_1.deny)(Enums_1.QueryFeature.WithHasMany),
320
+ (0, LimitService_1.deny)(Enums_1.QueryFeature.WhereLike),
321
+ (0, LimitService_1.deny)(Enums_1.QueryFeature.WhereNotLike),
322
+ (0, LimitService_1.deny)(Enums_1.QueryFeature.Trashed),
323
+ ],
324
+ defaults: {
325
+ perPage: 10,
326
+ minPerPage: 1,
327
+ maxPerPage: 100,
328
+ },
329
+ },
330
+ formidable: {},
331
+ cache: null,
332
+ };
333
+ exports.ALL_HANDLERS = [
334
+ Enums_1.HandlerTypes.ALL,
335
+ Enums_1.HandlerTypes.DELETE,
336
+ Enums_1.HandlerTypes.FORCE_DELETE,
337
+ Enums_1.HandlerTypes.INSERT,
338
+ Enums_1.HandlerTypes.PAGINATE,
339
+ Enums_1.HandlerTypes.PATCH,
340
+ Enums_1.HandlerTypes.SHOW,
341
+ Enums_1.HandlerTypes.UPDATE,
342
+ ];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "axe-api",
3
- "version": "1.0.0-rc8",
3
+ "version": "1.0.0",
4
4
  "description": "AXE API is a simple tool to create Rest APIs quickly.",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -33,18 +33,25 @@
33
33
  "dev-kit": "ts-node-dev --respawn --clear dev-kit.ts",
34
34
  "dev-kit:install": "node ./scripts/dev-kit-install.js",
35
35
  "dev-kit:remove": "node ./scripts/dev-kit-remove.js",
36
+ "dev-kit:docs": "open-swagger-ui http://localhost:3000/swagger",
36
37
  "test": "jest --runInBand",
38
+ "test:all": "npm run lint && npm run prettier:check && npm run test && npm run test:sqlite",
37
39
  "test:dev": "jest --watch",
38
40
  "lint": "eslint --max-warnings=0 .",
39
41
  "lint:watch": "esw --watch --color",
40
42
  "prepare:integration": "nodemon --ignore \"./tests/**\" ./scripts/run-integration-test.js",
41
- "test:postgres": "sh ./scripts/test-postgres.sh",
43
+ "test:postgres11": "sh ./scripts/test-postgres11.sh",
44
+ "test:postgres12": "sh ./scripts/test-postgres12.sh",
45
+ "test:postgres13": "sh ./scripts/test-postgres13.sh",
46
+ "test:postgres14": "sh ./scripts/test-postgres14.sh",
47
+ "test:postgres15": "sh ./scripts/test-postgres15.sh",
42
48
  "test:cockroach": "sh ./scripts/test-cockroach.sh",
43
49
  "test:mysql57": "sh ./scripts/test-mysql57.sh",
44
50
  "test:mysql8": "sh ./scripts/test-mysql8.sh",
45
51
  "test:mariadb": "sh ./scripts/test-mariadb.sh",
46
52
  "test:sqlite": "sh ./scripts/test-sqlite.sh",
47
53
  "prettier:check": "prettier --check .",
54
+ "prettier:write": "prettier --write .",
48
55
  "prepare": "husky install"
49
56
  },
50
57
  "dependencies": {
@@ -52,54 +59,57 @@
52
59
  "change-case": "^4.1.2",
53
60
  "connect": "^3.7.0",
54
61
  "dotenv": "^16.3.1",
55
- "knex": "^2.5.1",
62
+ "formidable": "^3.5.1",
63
+ "knex": "^3.1.0",
56
64
  "knex-paginate": "^3.1.1",
57
- "knex-schema-inspector": "^3.0.1",
58
- "nanoid": "^3.3.6",
59
- "pino": "^8.15.0",
60
- "pino-pretty": "^10.2.0",
65
+ "knex-schema-inspector": "^3.1.0",
66
+ "nanoid": "^3.3.7",
67
+ "pino": "^8.16.2",
68
+ "pino-pretty": "^10.2.3",
61
69
  "pluralize": "^8.0.0",
62
70
  "validatorjs": "^3.22.1"
63
71
  },
64
72
  "devDependencies": {
65
- "@babel/core": "^7.22.10",
66
- "@babel/preset-env": "^7.22.10",
67
- "@babel/preset-typescript": "^7.22.5",
68
- "@types/accept-language-parser": "^1.5.3",
69
- "@types/aws-lambda": "^8.10.119",
70
- "@types/cors": "^2.8.13",
71
- "@types/formidable": "^3.4.1",
72
- "@types/multer": "^1.4.7",
73
- "@types/pluralize": "^0.0.30",
74
- "@types/validatorjs": "^3.15.0",
75
- "@typescript-eslint/eslint-plugin": "^5.62.0",
76
- "@typescript-eslint/parser": "^5.62.0",
77
- "babel-jest": "^29.6.2",
73
+ "@babel/core": "^7.23.5",
74
+ "@babel/preset-env": "^7.23.5",
75
+ "@babel/preset-typescript": "^7.23.3",
76
+ "@elastic/elasticsearch": "^8.10.0",
77
+ "@types/accept-language-parser": "^1.5.6",
78
+ "@types/aws-lambda": "^8.10.130",
79
+ "@types/cors": "^2.8.17",
80
+ "@types/formidable": "^3.4.5",
81
+ "@types/multer": "^1.4.11",
82
+ "@types/pluralize": "^0.0.33",
83
+ "@types/validatorjs": "^3.15.5",
84
+ "@typescript-eslint/eslint-plugin": "^6.13.2",
85
+ "@typescript-eslint/parser": "^6.13.2",
86
+ "babel-jest": "^29.7.0",
78
87
  "cors": "^2.8.5",
79
- "eslint": "^7.32.0",
80
- "eslint-config-standard": "^16.0.3",
81
- "eslint-plugin-import": "^2.28.1",
88
+ "eslint": "^8.55.0",
89
+ "eslint-config-standard": "^17.1.0",
90
+ "eslint-plugin-import": "^2.29.0",
82
91
  "eslint-plugin-node": "^11.1.0",
83
- "eslint-plugin-promise": "^5.1.0",
84
- "eslint-plugin-unicorn": "^33.0.1",
85
- "eslint-watch": "^7.0.0",
86
- "formidable": "^3.5.1",
87
- "glob": "^9.3.5",
92
+ "eslint-plugin-promise": "^6.1.1",
93
+ "eslint-plugin-unicorn": "^49.0.0",
94
+ "eslint-watch": "^8.0.0",
95
+ "glob": "^10.3.10",
88
96
  "husky": "^8.0.3",
89
- "jest": "^29.6.2",
90
- "lint-staged": "^13.3.0",
97
+ "jest": "^29.7.0",
98
+ "lint-staged": "^15.2.0",
91
99
  "multer": "^1.4.5-lts.1",
92
100
  "mysql": "^2.18.1",
93
101
  "node-cache": "^5.1.2",
94
- "node-color-log": "^10.0.2",
95
- "nodemon": "^2.0.22",
102
+ "node-color-log": "^11.0.0",
103
+ "nodemon": "^3.0.2",
104
+ "open-swagger-ui": "^1.2.0",
96
105
  "pg": "^8.11.3",
97
- "prettier": "^2.8.8",
98
- "redis": "^4.6.7",
106
+ "prettier": "^3.1.0",
107
+ "redis": "^4.6.11",
99
108
  "set-value": ">=4.1.0",
100
109
  "sqlite3": "^5.1.6",
101
- "ts-node": "^10.9.1",
102
- "typescript": "^5.1.6"
110
+ "ts-node": "^10.9.2",
111
+ "ts-node-dev": "^2.0.0",
112
+ "typescript": "^5.3.3"
103
113
  },
104
114
  "lint-staged": {
105
115
  "**/*": "prettier --write --ignore-unknown"
@@ -1,6 +0,0 @@
1
- interface IAdaptor {
2
- get(key: string): Promise<string | null>;
3
- set(key: string, value: string, ttl: number): Promise<void>;
4
- decr(key: string, ttl: number): Promise<void>;
5
- }
6
- export default IAdaptor;
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });