web_api_base 7.3.0 → 8.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 (66) hide show
  1. package/dist/Application.d.ts +1 -0
  2. package/dist/Application.d.ts.map +1 -1
  3. package/dist/Application.js +64 -34
  4. package/dist/Application.js.map +1 -1
  5. package/dist/ApplicationConfiguration.d.ts +1 -2
  6. package/dist/ApplicationConfiguration.d.ts.map +1 -1
  7. package/dist/ApplicationConfiguration.js +16 -28
  8. package/dist/ApplicationConfiguration.js.map +1 -1
  9. package/dist/bin/Factory.d.ts.map +1 -1
  10. package/dist/bin/Factory.js +7 -15
  11. package/dist/bin/Factory.js.map +1 -1
  12. package/dist/controllers/base/ControllerBase.d.ts.map +1 -1
  13. package/dist/controllers/base/ControllerBase.js +7 -2
  14. package/dist/controllers/base/ControllerBase.js.map +1 -1
  15. package/dist/decorators/controllers/ControllerDecorators.d.ts +36 -27
  16. package/dist/decorators/controllers/ControllerDecorators.d.ts.map +1 -1
  17. package/dist/decorators/controllers/ControllerDecorators.js +116 -65
  18. package/dist/decorators/controllers/ControllerDecorators.js.map +1 -1
  19. package/dist/decorators/metadata/MetadataDecorators.d.ts +3 -0
  20. package/dist/decorators/metadata/MetadataDecorators.d.ts.map +1 -1
  21. package/dist/decorators/metadata/MetadataDecorators.js +10 -0
  22. package/dist/decorators/metadata/MetadataDecorators.js.map +1 -1
  23. package/dist/decorators/validations/ValidationDecorators.d.ts +38 -27
  24. package/dist/decorators/validations/ValidationDecorators.d.ts.map +1 -1
  25. package/dist/decorators/validations/ValidationDecorators.js +107 -86
  26. package/dist/decorators/validations/ValidationDecorators.js.map +1 -1
  27. package/dist/dependencyInjection/DependecyService.d.ts +2 -1
  28. package/dist/dependencyInjection/DependecyService.d.ts.map +1 -1
  29. package/dist/dependencyInjection/DependecyService.js +42 -33
  30. package/dist/dependencyInjection/DependecyService.js.map +1 -1
  31. package/dist/dependencyInjection/Index.d.ts +8 -0
  32. package/dist/dependencyInjection/Index.d.ts.map +1 -0
  33. package/dist/dependencyInjection/Index.js +33 -0
  34. package/dist/dependencyInjection/Index.js.map +1 -0
  35. package/dist/documentation/CSS.d.ts.map +1 -1
  36. package/dist/documentation/CSS.js +22 -0
  37. package/dist/documentation/CSS.js.map +1 -1
  38. package/dist/documentation/Documentation.d.ts +1 -1
  39. package/dist/documentation/Documentation.d.ts.map +1 -1
  40. package/dist/documentation/Documentation.js +26 -21
  41. package/dist/documentation/Documentation.js.map +1 -1
  42. package/dist/documentation/Index.d.ts +13 -0
  43. package/dist/documentation/Index.d.ts.map +1 -0
  44. package/dist/documentation/Index.js +63 -0
  45. package/dist/documentation/Index.js.map +1 -0
  46. package/dist/documentation/JS.d.ts.map +1 -1
  47. package/dist/documentation/JS.js +120 -61
  48. package/dist/documentation/JS.js.map +1 -1
  49. package/dist/index.d.ts +26 -25
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +85 -66
  52. package/dist/index.js.map +1 -1
  53. package/dist/metadata/Index.d.ts +11 -0
  54. package/dist/metadata/Index.d.ts.map +1 -0
  55. package/dist/metadata/Index.js +36 -0
  56. package/dist/metadata/Index.js.map +1 -0
  57. package/dist/metadata/Type.d.ts +13 -5
  58. package/dist/metadata/Type.d.ts.map +1 -1
  59. package/dist/metadata/Type.js +112 -44
  60. package/dist/metadata/Type.js.map +1 -1
  61. package/dist/validation/Index.d.ts +10 -0
  62. package/dist/validation/Index.d.ts.map +1 -0
  63. package/dist/validation/Index.js +44 -0
  64. package/dist/validation/Index.js.map +1 -0
  65. package/package.json +52 -7
  66. package/readme.md +86 -7
@@ -7,13 +7,17 @@ const MetadataDecorators_1 = __importDefault(require("../decorators/metadata/Met
7
7
  const InvalidEntityException_1 = __importDefault(require("../exceptions/InvalidEntityException"));
8
8
  const OwnMetaDataContainer_1 = __importDefault(require("./OwnMetaDataContainer"));
9
9
  class Type {
10
- static CreateTemplateFrom(ctor) {
10
+ static CreateTemplateFrom(ctor, options) {
11
11
  let base = Reflect.construct(ctor, []);
12
12
  let keysVisiteds = [];
13
13
  let metadataOfCtor = OwnMetaDataContainer_1.default.GetAllMetadataForCtor(ctor).filter(s => s.Member && typeof s.CTor.prototype[s.Member] != 'function');
14
14
  for (let map of [...metadataOfCtor.map(s => s.Member), ...Object.keys(base)]) {
15
15
  if (keysVisiteds.includes(map))
16
16
  continue;
17
+ if ((options === null || options === void 0 ? void 0 : options.IgnorePaths) && options.IgnorePaths.filter(s => s == map).length > 0) {
18
+ delete base[map];
19
+ continue;
20
+ }
17
21
  if (map.indexOf('_') > -1)
18
22
  continue;
19
23
  let designType = Reflect.getMetadata("design:type", ctor, map);
@@ -23,7 +27,7 @@ class Type {
23
27
  if (!designType && base[map] != undefined)
24
28
  designType = base[map].constructor;
25
29
  if (!designType) {
26
- const metaOfField = designType = metadataOfCtor.filter(s => s.Member == map && s.Key == "design:type");
30
+ const metaOfField = metadataOfCtor.filter(s => s.Member == map && s.Key == "design:type");
27
31
  if (metaOfField.length > 0)
28
32
  designType = metaOfField[0].Value;
29
33
  }
@@ -36,14 +40,14 @@ class Type {
36
40
  }
37
41
  if (designType) {
38
42
  if (designType != Array)
39
- base[map] = Type.FillObject(Reflect.construct(designType, []));
43
+ base[map] = Type.FillObject(Reflect.construct(designType, []), options);
40
44
  else {
41
45
  if (elementType) {
42
- base[map] = [Type.FillObject(Reflect.construct(elementType, []))];
46
+ base[map] = [Type.FillObject(Reflect.construct(elementType, []), options)];
43
47
  }
44
48
  else if (base[map] && base[map].length > 0) {
45
49
  let element = base[map][0];
46
- base[map] = [Type.FillObject(Reflect.construct(element.constructor, []))];
50
+ base[map] = [Type.FillObject(Reflect.construct(element.constructor, []), options)];
47
51
  }
48
52
  else {
49
53
  base[map] = [];
@@ -54,12 +58,14 @@ class Type {
54
58
  base[map] = "";
55
59
  }
56
60
  }
57
- return Type.FillObject(base);
61
+ return Type.FillObject(base, options);
58
62
  }
59
- static FillObject(obj) {
63
+ static FillObject(obj, options) {
60
64
  let cs = [];
65
+ if (!obj)
66
+ return obj;
61
67
  for (let c in obj) {
62
- let d = Reflect.getMetadata("design:type", obj, c);
68
+ let d = Reflect.getMetadata("design:type", obj.constructor.prototype, c);
63
69
  if (!d && obj[c] != undefined && obj[c] != null)
64
70
  d = obj[c].constructor;
65
71
  if (!d) {
@@ -68,31 +74,40 @@ class Type {
68
74
  continue;
69
75
  }
70
76
  let vdefault = MetadataDecorators_1.default.GetDefaultValue(obj.constructor, c);
71
- let toIgnore = MetadataDecorators_1.default.IsToIgnoreInDocumentation(obj.constructor, c);
77
+ let toIgnore = (options === null || options === void 0 ? void 0 : options.UseIgnoreProperty) ? MetadataDecorators_1.default.IsToIgnoreInDocumentation(obj.constructor, c) : undefined;
72
78
  if (toIgnore)
73
79
  cs.push(c);
80
+ let propertyOnJSON = (options === null || options === void 0 ? void 0 : options.UseJSONPropertyName) ? MetadataDecorators_1.default.GetJSONPropertyName(obj.constructor, c) : undefined;
81
+ let propertyOnObject = c.toString();
82
+ if (!toIgnore && propertyOnJSON) {
83
+ propertyOnObject = propertyOnJSON;
84
+ obj[propertyOnObject] = obj[c];
85
+ cs.push(c);
86
+ }
74
87
  if (vdefault != undefined) {
75
- obj[c] = vdefault;
88
+ obj[propertyOnObject] = vdefault;
76
89
  continue;
77
90
  }
78
91
  if (d.name === "Number")
79
- obj[c] = -1;
92
+ obj[propertyOnObject] = -1;
80
93
  else if (d.name === "String")
81
- obj[c] = "";
94
+ obj[propertyOnObject] = "";
82
95
  else if (d.name === "Boolean")
83
- obj[c] = false;
96
+ obj[propertyOnObject] = false;
84
97
  else if (d.name === "Date")
85
- obj[c] = new Date();
86
- else if (d.name === "Object")
87
- obj[c] = {};
98
+ obj[propertyOnObject] = new Date();
99
+ else if (d.name === "Object" && !obj[propertyOnObject])
100
+ obj[propertyOnObject] = {};
101
+ else if (d == Array && !obj[propertyOnObject])
102
+ obj[propertyOnObject] = [];
88
103
  }
89
104
  for (let c of cs)
90
105
  delete obj[c];
91
106
  return obj;
92
107
  }
93
- static SetPrototype(obj, cTor) {
108
+ static SetPrototype(obj, cTor, options) {
94
109
  if ([String, Date, Number, Boolean].filter(s => s.name == cTor.name).length > 0)
95
- return Type.Cast(obj, cTor);
110
+ return Type.Cast(obj, cTor, options);
96
111
  if (cTor.name == Object.name)
97
112
  return obj;
98
113
  obj.__proto__ = cTor.prototype;
@@ -103,7 +118,11 @@ class Type {
103
118
  if (keysVisiteds.includes(k))
104
119
  continue;
105
120
  keysVisiteds.push(k);
106
- if (obj[k] == undefined) {
121
+ let propertyOnJSON = (options === null || options === void 0 ? void 0 : options.UseJSONPropertyName) ? MetadataDecorators_1.default.GetJSONPropertyName(cTor, k) : undefined;
122
+ if (propertyOnJSON)
123
+ keysVisiteds.push(propertyOnJSON);
124
+ let propertyOnObject = propertyOnJSON !== null && propertyOnJSON !== void 0 ? propertyOnJSON : k;
125
+ if (obj[propertyOnObject] == undefined) {
107
126
  let vdefault = MetadataDecorators_1.default.GetDefaultValue(cTor, k);
108
127
  if (vdefault != undefined)
109
128
  base[k] = vdefault;
@@ -113,7 +132,7 @@ class Type {
113
132
  if (!designType)
114
133
  designType = Reflect.getMetadata("design:type", cTor.prototype, k.toString());
115
134
  if (!designType) {
116
- const metaOfField = designType = metadataOfCtor.filter(s => s.Member == k && s.Key == "design:type");
135
+ const metaOfField = metadataOfCtor.filter(s => s.Member == k && s.Key == "design:type");
117
136
  if (metaOfField.length > 0)
118
137
  designType = metaOfField[0].Value;
119
138
  }
@@ -127,18 +146,18 @@ class Type {
127
146
  }
128
147
  if (designType) {
129
148
  if (designType != Array)
130
- base[k] = Type.Cast(obj[k], designType);
149
+ base[k] = Type.Cast(obj[propertyOnObject], designType, options);
131
150
  else {
132
151
  if (elementType) {
133
- for (let i in obj[k])
134
- base[k][i] = Type.Cast(obj[k][i], elementType);
152
+ for (let i of obj[propertyOnObject])
153
+ base[k][obj[propertyOnObject].indexOf(i)] = Type.Cast(obj[propertyOnObject][obj[propertyOnObject].indexOf(i)], elementType, options);
135
154
  }
136
155
  else
137
- base[k] = obj[k];
156
+ base[k] = obj[propertyOnObject];
138
157
  }
139
158
  }
140
159
  else
141
- base[k] = obj[k];
160
+ base[k] = obj[propertyOnObject];
142
161
  }
143
162
  for (let k in obj) {
144
163
  if (keysVisiteds.indexOf(k) == -1)
@@ -146,7 +165,17 @@ class Type {
146
165
  }
147
166
  return base;
148
167
  }
149
- static Cast(obj, type) {
168
+ static GetAllMethods(ctor) {
169
+ let methods = [];
170
+ let currentPrototype = ctor.prototype;
171
+ while (currentPrototype != undefined) {
172
+ let currentMethods = Reflect.ownKeys(currentPrototype).filter(m => typeof currentPrototype[m] == "function");
173
+ methods.push(...currentMethods.map(s => currentPrototype[s]));
174
+ currentPrototype = currentPrototype.__proto__;
175
+ }
176
+ return methods;
177
+ }
178
+ static Cast(obj, type, options) {
150
179
  if (obj == undefined || obj == null)
151
180
  return undefined;
152
181
  if (typeof obj == "string" && obj.indexOf('"') == 0 && obj.lastIndexOf('"') == obj.length - 1)
@@ -155,7 +184,7 @@ class Type {
155
184
  obj = obj.substring(1, obj.length - 1);
156
185
  if (type.name == Number.name) {
157
186
  let number = Number.parseFloat(obj.toString());
158
- if (number != Number.NaN) {
187
+ if (!Number.isNaN(number)) {
159
188
  return number;
160
189
  }
161
190
  else
@@ -181,54 +210,78 @@ class Type {
181
210
  return obj;
182
211
  }
183
212
  else {
184
- return Type.SetPrototype(obj, type);
213
+ return Type.SetPrototype(obj, type, options);
185
214
  }
186
215
  }
187
- static ValidateType(source, cTor) {
216
+ static ValidateType(source, cTor, options) {
217
+ var _a;
218
+ if (cTor == undefined || [String, Date, Number, Boolean].filter(s => s.name == cTor.name).length > 0)
219
+ return;
220
+ let keysVisiteds = [];
188
221
  let empty = Reflect.construct(cTor, []);
189
- for (let c of Object.keys(empty)) {
190
- let obj = source[c];
191
- if (empty[c] != undefined && empty[c].constructor == Number) {
222
+ let metadataOfCtor = OwnMetaDataContainer_1.default.GetAllMetadataForCtor(cTor).filter(s => s.Member && typeof s.CTor.prototype[s.Member] != 'function');
223
+ for (let c of [...metadataOfCtor.map(s => s.Member), ...Object.keys(empty)]) {
224
+ if (keysVisiteds.includes(c))
225
+ continue;
226
+ let propertyOnJSON = options ? (_a = MetadataDecorators_1.default.GetJSONPropertyName(cTor, c)) !== null && _a !== void 0 ? _a : c : c;
227
+ let obj = source[propertyOnJSON];
228
+ let designType = Reflect.getMetadata("design:type", cTor, c.toString());
229
+ if (!designType)
230
+ designType = Reflect.getMetadata("design:type", cTor.prototype, c.toString());
231
+ if (!designType) {
232
+ const metaOfField = metadataOfCtor.filter(s => s.Member == c && s.Key == "design:type");
233
+ if (metaOfField.length > 0)
234
+ designType = metaOfField[0].Value;
235
+ }
236
+ let elementType;
237
+ if (!designType || designType == Array) {
238
+ let elType = MetadataDecorators_1.default.GetArrayElementType(cTor, c);
239
+ if (elType) {
240
+ designType = Array;
241
+ elementType = elType;
242
+ }
243
+ }
244
+ if (designType == Number) {
192
245
  let number = Number.parseFloat(obj === null || obj === void 0 ? void 0 : obj.toString());
193
246
  if (number != Number.NaN && obj != undefined) {
194
- source[c] = number;
247
+ source[propertyOnJSON] = number;
195
248
  }
196
249
  else {
197
250
  throw new InvalidEntityException_1.default(`Can not cast the property "${c}" in Number`);
198
251
  }
199
252
  }
200
- else if (obj != undefined && empty[c] != undefined && empty[c].constructor == String) {
201
- source[c] = obj == undefined ? "" : obj.toString();
253
+ else if (obj != undefined && designType == String) {
254
+ source[propertyOnJSON] = obj == undefined ? "" : obj.toString();
202
255
  }
203
- else if (empty[c] != undefined && empty[c].constructor == Date) {
256
+ else if (designType == Date && obj) {
204
257
  try {
205
258
  source[c] = new Date(obj);
206
259
  }
207
- catch (_a) {
260
+ catch (_b) {
208
261
  throw new InvalidEntityException_1.default(`Can not cast the property "${c}" in Date`);
209
262
  }
210
263
  }
211
- else if (empty[c] != undefined && empty[c].constructor == Boolean) {
264
+ else if (designType == Boolean) {
212
265
  try {
213
266
  if (obj == undefined) {
214
267
  throw new InvalidEntityException_1.default(`Can not cast the property "${c}" in Boolean`);
215
268
  }
216
269
  if (typeof obj != "boolean") {
217
270
  if (obj.toString().toLowerCase().trim() == "true")
218
- source[c] = true;
271
+ source[propertyOnJSON] = true;
219
272
  else if (obj.toString().toLowerCase().trim() == "false")
220
- source[c] = false;
273
+ source[propertyOnJSON] = false;
221
274
  else
222
275
  throw new InvalidEntityException_1.default(`Can not cast the property "${c}" in Boolean`);
223
276
  }
224
277
  else {
225
- source[c] = obj;
278
+ source[propertyOnJSON] = obj;
226
279
  }
227
280
  }
228
- catch (_b) { }
281
+ catch (_c) { }
229
282
  }
230
- else if (empty[c] != undefined) {
231
- this.ValidateType(source[c], empty[c].constructor);
283
+ else {
284
+ this.ValidateType(source[propertyOnJSON], designType);
232
285
  }
233
286
  }
234
287
  }
@@ -306,6 +359,21 @@ class Type {
306
359
  removeReferences(clone);
307
360
  return clone;
308
361
  }
362
+ static ChangeNameOfPropertyToJSONNames(obj) {
363
+ let cs = [];
364
+ if (!obj)
365
+ return obj;
366
+ for (let c in obj) {
367
+ let propertyOnJSON = MetadataDecorators_1.default.GetJSONPropertyName(obj.constructor, c);
368
+ if (propertyOnJSON) {
369
+ obj[propertyOnJSON] = obj[c];
370
+ cs.push(c);
371
+ }
372
+ }
373
+ for (let c of cs)
374
+ delete obj[c];
375
+ return obj;
376
+ }
309
377
  }
310
378
  exports.default = Type;
311
379
  //# sourceMappingURL=Type.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Type.js","sourceRoot":"","sources":["../../metadata/Type.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Type.js","sourceRoot":"","sources":["../../metadata/Type.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare function Validate(): (ctor: Function) => void;
2
+ export declare function ValidateObject<T extends Object>(obj: T): import("../decorators/validations/ValidationDecorators").IValidationResult[];
3
+ export declare function Required(message?: string): (target: Object, property: string) => void;
4
+ export declare function MaxLenght(max: number, message?: string): (target: Object, property: string) => void;
5
+ export declare function MinLenght(min: number, message?: string): (target: Object, property: string) => void;
6
+ export declare function Max(max: number, message?: string): (target: Object, property: string) => void;
7
+ export declare function Min(min: number, message?: string): (target: Object, property: string) => void;
8
+ export declare function Regex(regex: RegExp, message?: string): (target: Object, property: string) => void;
9
+ export declare function Rule<T extends Object, U extends keyof T>(action: (a: T[U]) => boolean, message?: string): (target: T, property: U) => void;
10
+ //# sourceMappingURL=Index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Index.d.ts","sourceRoot":"","sources":["../../validation/Index.ts"],"names":[],"mappings":"AAGA,wBAAgB,QAAQ,6BAGvB;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAG,CAAC,gFAGvD;AAED,wBAAgB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,8CAGxC;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAG,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,8CAGvD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAG,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,8CAGvD;AAED,wBAAgB,GAAG,CAAC,GAAG,EAAG,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,8CAGjD;AAED,wBAAgB,GAAG,CAAC,GAAG,EAAG,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,8CAGjD;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,8CAGpD;AAED,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAG,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,oCAGxG"}
@@ -0,0 +1,44 @@
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
+ exports.Validate = Validate;
7
+ exports.ValidateObject = ValidateObject;
8
+ exports.Required = Required;
9
+ exports.MaxLenght = MaxLenght;
10
+ exports.MinLenght = MinLenght;
11
+ exports.Max = Max;
12
+ exports.Min = Min;
13
+ exports.Regex = Regex;
14
+ exports.Rule = Rule;
15
+ const ControllerDecorators_1 = __importDefault(require("../decorators/controllers/ControllerDecorators"));
16
+ const ValidationDecorators_1 = __importDefault(require("../decorators/validations/ValidationDecorators"));
17
+ function Validate() {
18
+ return ControllerDecorators_1.default.Validate();
19
+ }
20
+ function ValidateObject(obj) {
21
+ return ValidationDecorators_1.default.Validate(obj);
22
+ }
23
+ function Required(message) {
24
+ return ValidationDecorators_1.default.Required(message);
25
+ }
26
+ function MaxLenght(max, message) {
27
+ return ValidationDecorators_1.default.MaxLenght(max, message);
28
+ }
29
+ function MinLenght(min, message) {
30
+ return ValidationDecorators_1.default.MinLenght(min, message);
31
+ }
32
+ function Max(max, message) {
33
+ return ValidationDecorators_1.default.MaxValue(max, message);
34
+ }
35
+ function Min(min, message) {
36
+ return ValidationDecorators_1.default.MinValue(min, message);
37
+ }
38
+ function Regex(regex, message) {
39
+ return ValidationDecorators_1.default.Regex(regex, message);
40
+ }
41
+ function Rule(action, message) {
42
+ return ValidationDecorators_1.default.Rule(action, message);
43
+ }
44
+ //# sourceMappingURL=Index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Index.js","sourceRoot":"","sources":["../../validation/Index.ts"],"names":[],"mappings":";;;;;AAGA,4BAGC;AAED,wCAGC;AAED,4BAGC;AAED,8BAGC;AAED,8BAGC;AAED,kBAGC;AAED,kBAGC;AAED,sBAGC;AAED,oBAGC;AA9CD,0GAAmF;AACnF,0GAAkF;AAElF,SAAgB,QAAQ;IAEpB,OAAO,8BAAqB,CAAC,QAAQ,EAAE,CAAC;AAC5C,CAAC;AAED,SAAgB,cAAc,CAAmB,GAAO;IAEpD,OAAO,8BAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC9C,CAAC;AAED,SAAgB,QAAQ,CAAC,OAAgB;IAErC,OAAO,8BAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAClD,CAAC;AAED,SAAgB,SAAS,CAAC,GAAY,EAAE,OAAgB;IAEpD,OAAO,8BAAoB,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACxD,CAAC;AAED,SAAgB,SAAS,CAAC,GAAY,EAAE,OAAgB;IAEpD,OAAO,8BAAoB,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACxD,CAAC;AAED,SAAgB,GAAG,CAAC,GAAY,EAAE,OAAgB;IAE9C,OAAO,8BAAoB,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,SAAgB,GAAG,CAAC,GAAY,EAAE,OAAgB;IAE9C,OAAO,8BAAoB,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,SAAgB,KAAK,CAAC,KAAa,EAAE,OAAgB;IAEjD,OAAO,8BAAoB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACtD,CAAC;AAED,SAAgB,IAAI,CAAsC,MAA6B,EAAE,OAAgB;IAErG,OAAO,8BAAoB,CAAC,IAAI,CAAO,MAAM,EAAE,OAAO,CAAC,CAAC;AAC5D,CAAC"}
package/package.json CHANGED
@@ -1,19 +1,64 @@
1
1
  {
2
2
  "name": "web_api_base",
3
- "version": "7.3.0",
3
+ "version": "8.0.0",
4
4
  "description": "web api base",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "files": [
8
- "/dist"
8
+ "/dist",
9
+ "README.md"
9
10
  ],
11
+ "readme": "README.md",
12
+ "exports": {
13
+ ".": {
14
+ "import": "./dist/index.js",
15
+ "require": "./dist/index.js",
16
+ "types": "./dist/index.d.ts"
17
+ },
18
+ "./documentation": {
19
+ "import": "./dist/documentation/Index.js",
20
+ "require": "./dist/documentation/Index.js",
21
+ "types": "./dist/documentation/Index.d.ts"
22
+ },
23
+ "./validation": {
24
+ "import": "./dist/validation/Index.js",
25
+ "require": "./dist/validation/Index.js",
26
+ "types": "./dist/validation/Index.d.ts"
27
+ },
28
+ "./dependencyInjection": {
29
+ "import": "./dist/dependencyInjection/Index.js",
30
+ "require": "./dist/dependencyInjection/Index.js",
31
+ "types": "./dist/dependencyInjection/Index.d.ts"
32
+ },
33
+ "./metadata": {
34
+ "import": "./dist/metadata/Index.js",
35
+ "require": "./dist/metadata/Index.js",
36
+ "types": "./dist/metadata/Index.d.ts"
37
+ }
38
+ },
39
+ "typesVersions": {
40
+ "*": {
41
+ "documentation": [
42
+ "./dist/documentation/Index.d.ts"
43
+ ],
44
+ "validation": [
45
+ "./dist/validation/Index.d.ts"
46
+ ],
47
+ "dependencyInjection": [
48
+ "./dist/dependencyInjection/Index.d.ts"
49
+ ],
50
+ "metadata": [
51
+ "./dist/metadata/Index.d.ts"
52
+ ]
53
+ }
54
+ },
10
55
  "bin": {
11
56
  "create-controller": "./dist/bin/CreateController.js",
12
57
  "create-application": "./dist/bin/CreateApplication.js"
13
58
  },
14
59
  "scripts": {
15
60
  "test": "jest",
16
- "debug": "node ./dist/Index.js",
61
+ "debug": "node ./dist/index.js --debug",
17
62
  "transpile": "tsc -p .",
18
63
  "tests": "npx jest"
19
64
  },
@@ -23,19 +68,19 @@
23
68
  "dependencies": {
24
69
  "cors": "^2.8.5",
25
70
  "express": "^4.18.2",
26
- "formidable": "^3.5.1"
71
+ "formidable": "^3.5.1",
72
+ "@types/express": "^4.17.15"
27
73
  },
28
74
  "peerDependencies": {
29
- "reflect-metadata": "^0.1.13"
75
+ "reflect-metadata": "^0.1.13 || ^0.2.0"
30
76
  },
31
77
  "devDependencies": {
32
- "@types/express": "^4.17.15",
33
78
  "@types/formidable": "^3.4.5",
34
79
  "@types/jest": "^29.5.13",
35
80
  "@types/node": "^18.11.17",
36
81
  "@types/reflect-metadata": "^0.1.0",
37
82
  "jest": "^29.7.0",
38
- "reflect-metadata": "^0.1.13",
83
+ "reflect-metadata": "^0.1.13 || ^0.2.0",
39
84
  "ts-jest": "^29.2.5",
40
85
  "typescript": "^5.7.2"
41
86
  }
package/readme.md CHANGED
@@ -10,12 +10,35 @@ web_api_base is a npm packaged that allows to create web-apis like MVC of .NET
10
10
  npm install web_api_base
11
11
  ```
12
12
 
13
- ### Enable decorators on tsconfig.json
13
+
14
+ ---
15
+ ## Configuration
16
+
17
+ #### Peer Dependencies
18
+
19
+ This framework relies on the `reflect-metadata` package to enable runtime type reflection used by decorators.
20
+
21
+ Make sure it is installed and imported **once** in your application entry point:
22
+
23
+ ```typescript
24
+ import 'reflect-metadata';
25
+ ```
26
+
27
+ #### Typescript
28
+
29
+ Decorators and metadata emission must be enabled in your `tsconfig.json`:
30
+
14
31
  ```json
15
- "experimentalDecorators": true,
16
- "emitDecoratorMetadata": true,
32
+ {
33
+ "experimentalDecorators": true,
34
+ "emitDecoratorMetadata": true
35
+ }
17
36
  ```
18
37
 
38
+ These options are required for entity mapping, dependency injection, and relationship metadata to work correctly.
39
+
40
+ ---
41
+
19
42
 
20
43
 
21
44
  # Usage
@@ -101,6 +124,7 @@ export default class SampleController extends ControllerBase {
101
124
  ### Index.ts
102
125
 
103
126
  ```typescript
127
+ import 'reflect-metadata';
104
128
  import App from './App';
105
129
 
106
130
  new App().StartAsync();
@@ -426,8 +450,34 @@ public async GetByIdAsync(@FromQuery()id : number) : Promise<OKResult<User>>
426
450
  return this.OK(await this._service.GetByIdAsync(id));
427
451
  }
428
452
  ```
429
- In the example above, the __model binding system__ will get the first query argument of request.
430
- We can also determine the name of parameter: __@FromQuery('id')__.
453
+
454
+
455
+
456
+ ### @FromPath()
457
+ Extract the method parameter from path params of request
458
+
459
+ ```typescript
460
+ @GET()
461
+ public async GetByIdAsync(@FromPath()id : number) : Promise<OKResult<User>>
462
+ {
463
+ return this.OK(await this._service.GetByIdAsync(id));
464
+ }
465
+ ```
466
+
467
+
468
+
469
+
470
+ ### @FromFiles()
471
+ Extract a method File(web_api_base) type parameter from multipart/form-data request
472
+
473
+
474
+ ```typescript
475
+ @POST()
476
+ public async InsertAsync(@FromFiles()file: File) : Promise<User>
477
+ {
478
+ return await this._service.MoveFiles(file, newPath);
479
+ }
480
+ ```
431
481
 
432
482
  ### @FromFiles()
433
483
  Extract a method File(web_api_base) type parameter from multipart/form-data request
@@ -441,6 +491,35 @@ Extract a method File(web_api_base) type parameter from multipart/form-data requ
441
491
  }
442
492
  ```
443
493
 
494
+ ### @JSONProperty('from_json')
495
+ Maps a JSON field name to a class property during model binding.
496
+
497
+ When a request payload is bound to a class instance, the value of the JSON field specified in the decorator is assigned to the decorated property.
498
+ When the controller returns the model as a response, the mapping is automatically reversed, converting the class property back to the original JSON field name.
499
+
500
+ #### Behavior:
501
+
502
+ Request → Model: from_json → JSONProperty
503
+
504
+ Response → JSON: JSONProperty→ from_json
505
+
506
+ This decorator is useful when your API needs to follow a different naming convention (e.g. snake_case) than your TypeScript models (e.g. camelCase).
507
+
508
+
509
+ ```typescript
510
+ export class SomeClass
511
+ {
512
+ ...
513
+
514
+ @JSONProperty('from_json')
515
+ public JSONProperty : string;
516
+
517
+ ...
518
+
519
+ }
520
+ ```
521
+
522
+
444
523
  ## Sample of a complete controller
445
524
 
446
525
  ```typescript
@@ -539,7 +618,7 @@ Determine the minumun number of characters of a string
539
618
  ### @Regex(exp : RegExp)
540
619
  Determine the pattern expression to validate the string property
541
620
 
542
- ### @Rule<T>(action : (arg : T) => boolean)
621
+ ### @Rule<T, U extends keyof T>(action : (arg : T[U]) => boolean)
543
622
  Determine the delegate used to validate the property
544
623
 
545
624
 
@@ -574,7 +653,7 @@ export default class ValidatedObject
574
653
  @MinLenght(10)
575
654
  public MinLenght : string;
576
655
 
577
- @Rule<string[]>(p => p.length > 5)
656
+ @Rule(p => p.length > 5)
578
657
  public Permissions : string[];
579
658
 
580
659
  constructor()