web_api_base 2.5.4 → 2.6.1

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 (73) hide show
  1. package/dist/Application.js +1 -0
  2. package/dist/Application.js.map +1 -1
  3. package/dist/__tests__/classes/ControllerTest.d.ts +10 -0
  4. package/dist/__tests__/classes/{Controller.js → ControllerTest.js} +28 -19
  5. package/dist/__tests__/classes/ControllerTest.js.map +1 -0
  6. package/dist/__tests__/classes/SampleServiceTest.d.ts +9 -0
  7. package/dist/__tests__/classes/SampleServiceTest.js +19 -0
  8. package/dist/__tests__/classes/SampleServiceTest.js.map +1 -0
  9. package/dist/__tests__/{decorators → tests}/controllers/ControllerDecorators.spec.js +7 -6
  10. package/dist/__tests__/tests/controllers/ControllerDecorators.spec.js.map +1 -0
  11. package/dist/__tests__/tests/dependecyInjection/DependecyInjection.spec.js +45 -0
  12. package/dist/__tests__/tests/dependecyInjection/DependecyInjection.spec.js.map +1 -0
  13. package/dist/dependencyInjection/DependecyService.d.ts +9 -0
  14. package/dist/dependencyInjection/DependecyService.js +55 -2
  15. package/dist/dependencyInjection/DependecyService.js.map +1 -1
  16. package/dist/index.d.ts +2 -0
  17. package/dist/{Index.js → index.js} +10 -1
  18. package/dist/index.js.map +1 -0
  19. package/dist/jest.config.js +5 -1
  20. package/dist/jest.config.js.map +1 -1
  21. package/package.json +11 -12
  22. package/readme.md +87 -0
  23. package/dist/App.js +0 -32
  24. package/dist/App.js.map +0 -1
  25. package/dist/Configuration.js +0 -69
  26. package/dist/Configuration.js.map +0 -1
  27. package/dist/Index.js.map +0 -1
  28. package/dist/__tests__/classes/Controller.d.ts +0 -8
  29. package/dist/__tests__/classes/Controller.js.map +0 -1
  30. package/dist/__tests__/decorators/controllers/ControllerDecorators.spec.js.map +0 -1
  31. package/dist/bin/create-webapi-app.js +0 -52
  32. package/dist/bin/create-webapi-app.js.map +0 -1
  33. package/dist/bin/temp/Application.d.ts +0 -6
  34. package/dist/bin/temp/Application.js +0 -33
  35. package/dist/bin/temp/Application.js.map +0 -1
  36. package/dist/bin/temp/Index.d.ts +0 -1
  37. package/dist/bin/temp/Index.js +0 -8
  38. package/dist/bin/temp/Index.js.map +0 -1
  39. package/dist/bin/temp/controllers/StatusController.d.ts +0 -5
  40. package/dist/bin/temp/controllers/StatusController.js +0 -33
  41. package/dist/bin/temp/controllers/StatusController.js.map +0 -1
  42. package/dist/config.json +0 -1
  43. package/dist/controllers/FileController.js +0 -162
  44. package/dist/controllers/FileController.js.map +0 -1
  45. package/dist/controllers/StatusController.js +0 -44
  46. package/dist/controllers/StatusController.js.map +0 -1
  47. package/dist/decorators/dependencyInjection/DependecyInjectionDecorators.d.ts +0 -13
  48. package/dist/decorators/dependencyInjection/DependecyInjectionDecorators.js +0 -32
  49. package/dist/decorators/dependencyInjection/DependecyInjectionDecorators.js.map +0 -1
  50. package/dist/interfaces/entities/IDirectory.d.ts +0 -5
  51. package/dist/interfaces/entities/IDirectory.js +0 -3
  52. package/dist/interfaces/entities/IDirectory.js.map +0 -1
  53. package/dist/services/FileService.js +0 -45
  54. package/dist/services/FileService.js.map +0 -1
  55. package/dist/services/IFileService.js +0 -8
  56. package/dist/services/IFileService.js.map +0 -1
  57. package/dist/services/fileService/FileService.d.ts +0 -10
  58. package/dist/services/fileService/FileService.js +0 -96
  59. package/dist/services/fileService/FileService.js.map +0 -1
  60. package/dist/services/fileService/FileServiceBase.d.ts +0 -10
  61. package/dist/services/fileService/FileServiceBase.js +0 -7
  62. package/dist/services/fileService/FileServiceBase.js.map +0 -1
  63. package/dist/temp/Application.d.ts +0 -6
  64. package/dist/temp/Application.js +0 -33
  65. package/dist/temp/Application.js.map +0 -1
  66. package/dist/temp/Index.d.ts +0 -1
  67. package/dist/temp/Index.js +0 -8
  68. package/dist/temp/Index.js.map +0 -1
  69. package/dist/temp/controllers/StatusController.d.ts +0 -6
  70. package/dist/temp/controllers/StatusController.js +0 -34
  71. package/dist/temp/controllers/StatusController.js.map +0 -1
  72. /package/dist/__tests__/{decorators → tests}/controllers/ControllerDecorators.spec.d.ts +0 -0
  73. /package/dist/{bin/create-webapi-app.d.ts → __tests__/tests/dependecyInjection/DependecyInjection.spec.d.ts} +0 -0
@@ -114,6 +114,7 @@ class Application {
114
114
  let controller = DependecyService_1.default.ResolveCtor(empty.constructor);
115
115
  if (controller == undefined)
116
116
  controller = new ctor();
117
+ DependecyService_1.default.CheckForDependenciesAndResolve(controller);
117
118
  controller.Request = context.Request;
118
119
  controller.Response = context.Response;
119
120
  controller[method](...params);
@@ -1 +1 @@
1
- {"version":3,"file":"Application.js","sourceRoot":"","sources":["../Application.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Application.js","sourceRoot":"","sources":["../Application.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { SampleServiceAbstract } from "./SampleServiceTest";
2
+ import { ControllerBase } from '../../index';
3
+ export declare class ControllerTest extends ControllerBase {
4
+ SomeDepency: SampleServiceAbstract;
5
+ AnotherDepency: SampleServiceAbstract;
6
+ private _somePrivateDepency;
7
+ constructor(some: SampleServiceAbstract);
8
+ TestAction(name: string): void;
9
+ TestActionTwo(name: string, age: number): void;
10
+ }
@@ -9,17 +9,16 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
9
9
  var __metadata = (this && this.__metadata) || function (k, v) {
10
10
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
11
11
  };
12
- var __importDefault = (this && this.__importDefault) || function (mod) {
13
- return (mod && mod.__esModule) ? mod : { "default": mod };
14
- };
15
12
  Object.defineProperty(exports, "__esModule", { value: true });
16
13
  exports.ControllerTest = void 0;
17
- const ControllerBase_1 = require("../../controllers/base/ControllerBase");
18
- const ControllerDecorators_1 = __importDefault(require("../../decorators/controllers/ControllerDecorators"));
19
- const HttpVerbs_1 = require("../../enums/httpVerbs/HttpVerbs");
20
- let ControllerTest = class ControllerTest extends ControllerBase_1.ControllerBase {
21
- constructor() {
14
+ const SampleServiceTest_1 = require("./SampleServiceTest");
15
+ const index_1 = require("../../index");
16
+ let ControllerTest = class ControllerTest extends index_1.ControllerBase {
17
+ constructor(some) {
22
18
  super();
19
+ this.SomeDepency = some;
20
+ this.AnotherDepency = some;
21
+ this._somePrivateDepency = some;
23
22
  }
24
23
  TestAction(name) {
25
24
  console.log(name);
@@ -27,28 +26,38 @@ let ControllerTest = class ControllerTest extends ControllerBase_1.ControllerBas
27
26
  TestActionTwo(name, age) {
28
27
  console.log(name, age);
29
28
  }
30
- AppendSync(application) {
31
- }
32
29
  };
33
30
  __decorate([
34
- ControllerDecorators_1.default.Action("Test"),
35
- ControllerDecorators_1.default.Verb(HttpVerbs_1.HTTPVerbs.GET),
36
- ControllerDecorators_1.default.Argument('name'),
31
+ (0, index_1.Inject)(),
32
+ __metadata("design:type", SampleServiceTest_1.SampleServiceAbstract)
33
+ ], ControllerTest.prototype, "SomeDepency", void 0);
34
+ __decorate([
35
+ (0, index_1.InjectAbstract)(SampleServiceTest_1.SampleServiceAbstract),
36
+ __metadata("design:type", SampleServiceTest_1.SampleServiceAbstract)
37
+ ], ControllerTest.prototype, "AnotherDepency", void 0);
38
+ __decorate([
39
+ (0, index_1.Inject)(),
40
+ __metadata("design:type", SampleServiceTest_1.SampleServiceAbstract)
41
+ ], ControllerTest.prototype, "_somePrivateDepency", void 0);
42
+ __decorate([
43
+ (0, index_1.Action)("Test"),
44
+ (0, index_1.Verb)(index_1.HTTPVerbs.GET),
45
+ (0, index_1.Argument)('name'),
37
46
  __metadata("design:type", Function),
38
47
  __metadata("design:paramtypes", [String]),
39
48
  __metadata("design:returntype", void 0)
40
49
  ], ControllerTest.prototype, "TestAction", null);
41
50
  __decorate([
42
- ControllerDecorators_1.default.Action("Test"),
43
- ControllerDecorators_1.default.Verb(HttpVerbs_1.HTTPVerbs.GET),
44
- ControllerDecorators_1.default.Argument('name', 'age'),
51
+ (0, index_1.Action)("Test"),
52
+ (0, index_1.Verb)(index_1.HTTPVerbs.GET),
53
+ (0, index_1.Argument)('name', 'age'),
45
54
  __metadata("design:type", Function),
46
55
  __metadata("design:paramtypes", [String, Number]),
47
56
  __metadata("design:returntype", void 0)
48
57
  ], ControllerTest.prototype, "TestActionTwo", null);
49
58
  ControllerTest = __decorate([
50
- ControllerDecorators_1.default.Route("/test"),
51
- __metadata("design:paramtypes", [])
59
+ (0, index_1.Route)("/test"),
60
+ __metadata("design:paramtypes", [SampleServiceTest_1.SampleServiceAbstract])
52
61
  ], ControllerTest);
53
62
  exports.ControllerTest = ControllerTest;
54
- //# sourceMappingURL=Controller.js.map
63
+ //# sourceMappingURL=ControllerTest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ControllerTest.js","sourceRoot":"","sources":["../../../__tests__/classes/ControllerTest.ts"],"names":[],"mappings":";AAAA,0BAA0B;;;;;;;;;;;;AAE1B,2DAA4D;AAE5D,uCAA2H;AAG3H,IAAa,cAAc,GAA3B,MAAa,cAAe,SAAQ,sBAAc;IAY9C,YAAY,IAA4B;QAEpC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;IACpC,CAAC;IAKM,UAAU,CAAC,IAAa;QAE3B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAKM,aAAa,CAAC,IAAa,EAAE,GAAY;QAE5C,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC;CAEJ,CAAA;AAhCG;IADC,IAAA,cAAM,GAAE;8BACY,yCAAqB;mDAAC;AAG3C;IADC,IAAA,sBAAc,EAAC,yCAAqB,CAAC;8BACd,yCAAqB;sDAAC;AAG9C;IADC,IAAA,cAAM,GAAE;8BACqB,yCAAqB;2DAAC;AAapD;IAHC,IAAA,cAAM,EAAC,MAAM,CAAC;IACd,IAAA,YAAI,EAAC,iBAAS,CAAC,GAAG,CAAC;IACnB,IAAA,gBAAQ,EAAS,MAAM,CAAC;;;;gDAIxB;AAKD;IAHC,IAAA,cAAM,EAAC,MAAM,CAAC;IACd,IAAA,YAAI,EAAC,iBAAS,CAAC,GAAG,CAAC;IACnB,IAAA,gBAAQ,EAAiB,MAAM,EAAE,KAAK,CAAC;;;;mDAIvC;AAlCQ,cAAc;IAD1B,IAAA,aAAK,EAAC,OAAO,CAAC;qCAaQ,yCAAqB;GAZ/B,cAAc,CAoC1B;AApCY,wCAAc"}
@@ -0,0 +1,9 @@
1
+ export declare abstract class SampleServiceAbstract {
2
+ abstract DoSomething(): void;
3
+ }
4
+ export declare class SampleService extends SampleServiceAbstract {
5
+ DoSomething(): void;
6
+ }
7
+ export declare class AnotherService extends SampleServiceAbstract {
8
+ DoSomething(): void;
9
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AnotherService = exports.SampleService = exports.SampleServiceAbstract = void 0;
4
+ class SampleServiceAbstract {
5
+ }
6
+ exports.SampleServiceAbstract = SampleServiceAbstract;
7
+ class SampleService extends SampleServiceAbstract {
8
+ DoSomething() {
9
+ console.log("Doing in SampleServices");
10
+ }
11
+ }
12
+ exports.SampleService = SampleService;
13
+ class AnotherService extends SampleServiceAbstract {
14
+ DoSomething() {
15
+ console.log("Doing another job in AnotherService");
16
+ }
17
+ }
18
+ exports.AnotherService = AnotherService;
19
+ //# sourceMappingURL=SampleServiceTest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SampleServiceTest.js","sourceRoot":"","sources":["../../../__tests__/classes/SampleServiceTest.ts"],"names":[],"mappings":";;;AAAA,MAAsB,qBAAqB;CAG1C;AAHD,sDAGC;AAID,MAAa,aAAc,SAAQ,qBAAqB;IAE7C,WAAW;QACd,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAC3C,CAAC;CACJ;AALD,sCAKC;AAID,MAAa,cAAe,SAAQ,qBAAqB;IAE9C,WAAW;QACd,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACvD,CAAC;CACJ;AALD,wCAKC"}
@@ -3,36 +3,37 @@ 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
- const Controller_1 = require("../../classes/Controller");
6
+ const ControllerTest_1 = require("../../classes/ControllerTest");
7
7
  const ControllerDecorators_1 = __importDefault(require("../../../decorators/controllers/ControllerDecorators"));
8
8
  const HttpVerbs_1 = require("../../../enums/httpVerbs/HttpVerbs");
9
+ const SampleServiceTest_1 = require("../../classes/SampleServiceTest");
9
10
  describe('testing controllers decorators', () => {
10
11
  test("action name", () => {
11
- var controller = new Controller_1.ControllerTest();
12
+ var controller = new ControllerTest_1.ControllerTest(new SampleServiceTest_1.SampleService());
12
13
  let action = ControllerDecorators_1.default.GetAction(controller, "TestAction");
13
14
  expect(action).toBe("Test");
14
15
  }, 10 ^ 5);
15
16
  test("http verb", () => {
16
- var controller = new Controller_1.ControllerTest();
17
+ var controller = new ControllerTest_1.ControllerTest(new SampleServiceTest_1.SampleService());
17
18
  let verb = ControllerDecorators_1.default.GetVerb(controller, "TestAction");
18
19
  expect(verb).toBe(HttpVerbs_1.HTTPVerbs.GET);
19
20
  }, 10 ^ 5);
20
21
  test("action with one arg", () => {
21
- var controller = new Controller_1.ControllerTest();
22
+ var controller = new ControllerTest_1.ControllerTest(new SampleServiceTest_1.SampleService());
22
23
  var handler = ControllerDecorators_1.default.GetArgumentsHandler(controller, 'TestAction');
23
24
  var arr = handler === null || handler === void 0 ? void 0 : handler.CreateArgumentsList({ name: "adriano" });
24
25
  Reflect.apply(controller.TestAction, controller, arr !== null && arr !== void 0 ? arr : []);
25
26
  expect(arr).not.toBeNull();
26
27
  }, 10 ^ 5);
27
28
  test("action with two args", () => {
28
- var controller = new Controller_1.ControllerTest();
29
+ var controller = new ControllerTest_1.ControllerTest(new SampleServiceTest_1.SampleService());
29
30
  var handler = ControllerDecorators_1.default.GetArgumentsHandler(controller, 'TestActionTwo');
30
31
  var arr = handler === null || handler === void 0 ? void 0 : handler.CreateArgumentsList({ name: "adriano", age: 30 });
31
32
  Reflect.apply(controller.TestActionTwo, controller, arr !== null && arr !== void 0 ? arr : []);
32
33
  expect(arr).not.toBeNull();
33
34
  }, 10 ^ 5);
34
35
  test("controller route", () => {
35
- var controller = new Controller_1.ControllerTest();
36
+ var controller = new ControllerTest_1.ControllerTest(new SampleServiceTest_1.SampleService());
36
37
  var route = ControllerDecorators_1.default.GetRoute(controller);
37
38
  expect(route).toBe("/test");
38
39
  }, 10 ^ 5);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ControllerDecorators.spec.js","sourceRoot":"","sources":["../../../../__tests__/tests/controllers/ControllerDecorators.spec.ts"],"names":[],"mappings":";;;;;AAAA,iEAA8D;AAC9D,gHAAyF;AACzF,kEAA+D;AAC/D,uEAAgE;AAEhE,QAAQ,CAAC,gCAAgC,EAAE,GAAE,EAAE;IAG3C,IAAI,CAAC,aAAa,EAAE,GAAE,EAAE;QAEpB,IAAI,UAAU,GAAG,IAAI,+BAAc,CAAC,IAAI,iCAAa,EAAE,CAAC,CAAC;QACzD,IAAI,MAAM,GAAG,8BAAqB,CAAC,SAAS,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACvE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhC,CAAC,EAAC,EAAE,GAAC,CAAC,CAAC,CAAA;IAEP,IAAI,CAAC,WAAW,EAAE,GAAE,EAAE;QAElB,IAAI,UAAU,GAAG,IAAI,+BAAc,CAAC,IAAI,iCAAa,EAAE,CAAC,CAAC;QACzD,IAAI,IAAI,GAAG,8BAAqB,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACnE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,qBAAS,CAAC,GAAG,CAAC,CAAC;IAErC,CAAC,EAAC,EAAE,GAAC,CAAC,CAAC,CAAA;IAEP,IAAI,CAAC,qBAAqB,EAAE,GAAE,EAAE;QAE5B,IAAI,UAAU,GAAG,IAAI,+BAAc,CAAC,IAAI,iCAAa,EAAE,CAAC,CAAC;QAEzD,IAAI,OAAO,GAAG,8BAAqB,CAAC,mBAAmB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAElF,IAAI,GAAG,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,mBAAmB,CAAC,EAAC,IAAI,EAAG,SAAS,EAAC,CAAC,CAAC;QAE3D,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,EAAE,CAAC,CAAC;QAE5D,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IAG/B,CAAC,EAAC,EAAE,GAAC,CAAC,CAAC,CAAA;IAGP,IAAI,CAAC,sBAAsB,EAAE,GAAE,EAAE;QAE7B,IAAI,UAAU,GAAG,IAAI,+BAAc,CAAC,IAAI,iCAAa,EAAE,CAAC,CAAC;QAEzD,IAAI,OAAO,GAAG,8BAAqB,CAAC,mBAAmB,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAErF,IAAI,GAAG,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,mBAAmB,CAAC,EAAC,IAAI,EAAG,SAAS,EAAE,GAAG,EAAG,EAAE,EAAC,CAAC,CAAC;QAErE,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,EAAE,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,EAAE,CAAC,CAAC;QAE/D,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IAG/B,CAAC,EAAC,EAAE,GAAC,CAAC,CAAC,CAAA;IAGP,IAAI,CAAC,kBAAkB,EAAE,GAAE,EAAE;QAEzB,IAAI,UAAU,GAAG,IAAI,+BAAc,CAAC,IAAI,iCAAa,EAAE,CAAC,CAAC;QAEzD,IAAI,KAAK,GAAG,8BAAqB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAEvD,MAAM,CAAC,KAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAGjC,CAAC,EAAC,EAAE,GAAC,CAAC,CAAC,CAAA;AAEX,CAAC,CAAC,CAAA"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const ControllerTest_1 = require("../../classes/ControllerTest");
7
+ const SampleServiceTest_1 = require("../../classes/SampleServiceTest");
8
+ const DependecyService_1 = __importDefault(require("../../../dependencyInjection/DependecyService"));
9
+ describe("testing the dependecy injection service", () => {
10
+ DependecyService_1.default.RegisterFor(SampleServiceTest_1.SampleServiceAbstract, SampleServiceTest_1.SampleService);
11
+ test("testing the creation of a controller", () => {
12
+ let controller = DependecyService_1.default.Build(ControllerTest_1.ControllerTest);
13
+ expect(controller).not.toBeNull();
14
+ });
15
+ test("testing Inject decorator", () => {
16
+ let controller = DependecyService_1.default.Build(ControllerTest_1.ControllerTest);
17
+ expect(controller).not.toBeNull();
18
+ expect(controller.SomeDepency).not.toBeNull();
19
+ expect(controller.SomeDepency instanceof SampleServiceTest_1.SampleService).toBeTruthy();
20
+ });
21
+ test("testing InjectAbstract decorator", () => {
22
+ let controller = DependecyService_1.default.Build(ControllerTest_1.ControllerTest);
23
+ expect(controller).not.toBeNull();
24
+ expect(controller.AnotherDepency).not.toBeNull();
25
+ expect(controller.AnotherDepency instanceof SampleServiceTest_1.SampleService).toBeTruthy();
26
+ });
27
+ test("testing injection on a private property", () => {
28
+ let controller = DependecyService_1.default.Build(ControllerTest_1.ControllerTest);
29
+ let prop = Reflect.get(controller, "_somePrivateDepency");
30
+ expect(prop).not.toBeNull();
31
+ expect(prop instanceof SampleServiceTest_1.SampleService).toBeTruthy();
32
+ });
33
+ test("test change implementation of a abstract class on DI service", () => {
34
+ let controller1 = DependecyService_1.default.Build(ControllerTest_1.ControllerTest);
35
+ DependecyService_1.default.RegisterFor(SampleServiceTest_1.SampleServiceAbstract, SampleServiceTest_1.AnotherService);
36
+ let controller2 = DependecyService_1.default.Build(ControllerTest_1.ControllerTest);
37
+ expect(controller1).not.toBeNull();
38
+ expect(controller1.AnotherDepency).not.toBeNull();
39
+ expect(controller1.AnotherDepency instanceof SampleServiceTest_1.SampleService).toBeTruthy();
40
+ expect(controller2).not.toBeNull();
41
+ expect(controller2.AnotherDepency).not.toBeNull();
42
+ expect(controller2.AnotherDepency instanceof SampleServiceTest_1.AnotherService).toBeTruthy();
43
+ });
44
+ });
45
+ //# sourceMappingURL=DependecyInjection.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DependecyInjection.spec.js","sourceRoot":"","sources":["../../../../__tests__/tests/dependecyInjection/DependecyInjection.spec.ts"],"names":[],"mappings":";;;;;AAAA,iEAA8D;AAC9D,uEAAuG;AACvG,qGAA6E;AAK7E,QAAQ,CAAC,yCAAyC,EAAE,GAAE,EAAE;IAEpD,0BAAgB,CAAC,WAAW,CAAC,yCAAqB,EAAE,iCAAa,CAAC,CAAC;IAEnE,IAAI,CAAC,sCAAsC,EAAE,GAAE,EAAE;QAE7C,IAAI,UAAU,GAAG,0BAAgB,CAAC,KAAK,CAAC,+BAAc,CAA8B,CAAC;QAErF,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IAEtC,CAAC,CAAC,CAAC;IAGH,IAAI,CAAC,0BAA0B,EAAE,GAAE,EAAE;QAEjC,IAAI,UAAU,GAAG,0BAAgB,CAAC,KAAK,CAAC,+BAAc,CAA8B,CAAC;QAErF,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAElC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAE9C,MAAM,CAAC,UAAU,CAAC,WAAW,YAAY,iCAAa,CAAC,CAAC,UAAU,EAAE,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kCAAkC,EAAE,GAAE,EAAE;QAEzC,IAAI,UAAU,GAAG,0BAAgB,CAAC,KAAK,CAAC,+BAAc,CAA8B,CAAC;QAErF,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAElC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAEjD,MAAM,CAAC,UAAU,CAAC,cAAc,YAAY,iCAAa,CAAC,CAAC,UAAU,EAAE,CAAC;IAC5E,CAAC,CAAC,CAAC;IAGH,IAAI,CAAC,yCAAyC,EAAE,GAAE,EAAE;QAEhD,IAAI,UAAU,GAAG,0BAAgB,CAAC,KAAK,CAAC,+BAAc,CAA8B,CAAC;QAErF,IAAI,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;QAE1D,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAE5B,MAAM,CAAC,IAAI,YAAY,iCAAa,CAAC,CAAC,UAAU,EAAE,CAAC;IACvD,CAAC,CAAC,CAAC;IAGH,IAAI,CAAC,8DAA8D,EAAE,GAAE,EAAE;QAErE,IAAI,WAAW,GAAG,0BAAgB,CAAC,KAAK,CAAC,+BAAc,CAA8B,CAAC;QAEtF,0BAAgB,CAAC,WAAW,CAAC,yCAAqB,EAAE,kCAAc,CAAC,CAAC;QAEpE,IAAI,WAAW,GAAG,0BAAgB,CAAC,KAAK,CAAC,+BAAc,CAA8B,CAAC;QAEtF,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAEnC,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAElD,MAAM,CAAC,WAAW,CAAC,cAAc,YAAY,iCAAa,CAAC,CAAC,UAAU,EAAE,CAAC;QAEzE,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAEnC,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAElD,MAAM,CAAC,WAAW,CAAC,cAAc,YAAY,kCAAc,CAAC,CAAC,UAAU,EAAE,CAAC;IAE9E,CAAC,CAAC,CAAC;AAGP,CAAC,CAAC,CAAC"}
@@ -1,9 +1,18 @@
1
+ import 'reflect-metadata';
1
2
  export default class DependecyService {
2
3
  private static _services;
4
+ private static _injectableKey;
5
+ private static _injectableTypeKey;
3
6
  static RegisterFor(type: Function, ctor: {
4
7
  new (...args: any[]): any;
5
8
  }, builder?: () => any): void;
6
9
  static Register(type: Function, builder?: () => any): void;
7
10
  static Resolve<T>(type: Function, args?: any[]): T;
8
11
  static ResolveCtor(ctor: Function, args?: any[]): any;
12
+ static Injectable(): (target: Object, property: string | symbol) => void;
13
+ static IsInjectable(target: object, property: string): boolean;
14
+ static InjectOne(tp: Function): (target: Object, property: string | symbol) => void;
15
+ static GetDIType(target: object, property: string): any;
16
+ static CheckForDependenciesAndResolve(object: any): void;
17
+ static Build<T extends Function>(Ctor: T): T;
9
18
  }
@@ -1,13 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("reflect-metadata");
3
4
  class DependecyService {
4
5
  static RegisterFor(type, ctor, builder) {
5
6
  let defaultBuilder = () => Reflect.construct(ctor !== null && ctor !== void 0 ? ctor : type, []);
6
- this._services.push({ Type: type, Builder: builder !== null && builder !== void 0 ? builder : defaultBuilder });
7
+ let exist = this._services.find(s => s.Type == type);
8
+ if (exist === undefined)
9
+ this._services.push({ Type: type, Builder: builder !== null && builder !== void 0 ? builder : defaultBuilder });
10
+ else
11
+ exist.Builder = builder !== null && builder !== void 0 ? builder : defaultBuilder;
7
12
  }
8
13
  static Register(type, builder) {
9
14
  let defaultBuilder = () => Reflect.construct(type, []);
10
- this._services.push({ Type: type, Builder: builder !== null && builder !== void 0 ? builder : defaultBuilder });
15
+ let exist = this._services.find(s => s.Type == type);
16
+ if (exist === undefined)
17
+ this._services.push({ Type: type, Builder: builder !== null && builder !== void 0 ? builder : defaultBuilder });
18
+ else
19
+ exist.Builder = builder !== null && builder !== void 0 ? builder : defaultBuilder;
11
20
  }
12
21
  static Resolve(type, args) {
13
22
  var _a;
@@ -17,7 +26,51 @@ class DependecyService {
17
26
  var _a;
18
27
  return (_a = this._services.find(u => u.Type == ctor)) === null || _a === void 0 ? void 0 : _a.Builder(args);
19
28
  }
29
+ static Injectable() {
30
+ return function (target, property) {
31
+ Reflect.defineMetadata(DependecyService._injectableKey, true, target.constructor, property);
32
+ };
33
+ }
34
+ static IsInjectable(target, property) {
35
+ var _a;
36
+ let marked = (_a = Reflect.getMetadata(DependecyService._injectableKey, target, property)) !== null && _a !== void 0 ? _a : false;
37
+ let type = Reflect.getMetadata(DependecyService._injectableTypeKey, target, property) != undefined;
38
+ return marked || type;
39
+ }
40
+ static InjectOne(tp) {
41
+ return function (target, property) {
42
+ Reflect.defineMetadata(DependecyService._injectableTypeKey, tp, target.constructor, property);
43
+ };
44
+ }
45
+ static GetDIType(target, property) {
46
+ let type = Reflect.getMetadata(DependecyService._injectableTypeKey, target.constructor, property);
47
+ if (!type)
48
+ type = Reflect.getMetadata("design:type", target, property);
49
+ return type;
50
+ }
51
+ static CheckForDependenciesAndResolve(object) {
52
+ for (let k of Object.keys(object)) {
53
+ if (object[k] != 'function') {
54
+ if (DependecyService.IsInjectable(object.constructor, k)) {
55
+ let tp = DependecyService.GetDIType(object, k);
56
+ if (tp == undefined)
57
+ throw new Error(`Can not resolve the dependecy of ${object.constructor.name}.${k}`);
58
+ let instance = DependecyService.Resolve(tp);
59
+ if (instance == undefined)
60
+ throw new Error(`Can not resolve the dependecy of ${object.constructor.name}.${k}`);
61
+ object[k] = instance;
62
+ }
63
+ }
64
+ }
65
+ }
66
+ static Build(Ctor) {
67
+ let object = Reflect.construct(Ctor, []);
68
+ this.CheckForDependenciesAndResolve(object);
69
+ return object;
70
+ }
20
71
  }
21
72
  exports.default = DependecyService;
22
73
  DependecyService._services = [];
74
+ DependecyService._injectableKey = "di:injectable";
75
+ DependecyService._injectableTypeKey = "di:injectable-type";
23
76
  //# sourceMappingURL=DependecyService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DependecyService.js","sourceRoot":"","sources":["../../dependencyInjection/DependecyService.ts"],"names":[],"mappings":";;AAAA,MAAqB,gBAAgB;IAI1B,MAAM,CAAC,WAAW,CAAC,IAAe,EAAE,IAAsC,EAAE,OAAoB;QAEnG,IAAI,cAAc,GAAG,GAAG,EAAE,CAAE,OAAO,CAAC,SAAS,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,IAAI,EAAE,EAAE,CAAQ,CAAC;QAEvE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAG,IAAI,EAAE,OAAO,EAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,cAAc,EAAE,CAAC,CAAC;IAC9E,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,IAAe,EAAE,OAAoB;QAExD,IAAI,cAAc,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAEvD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAG,IAAI,EAAE,OAAO,EAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,cAAc,EAAE,CAAC,CAAC;IAC9E,CAAC;IAEM,MAAM,CAAC,OAAO,CAAI,IAAe,EAAE,IAAa;;QAEnD,OAAO,MAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,0CAAE,OAAO,CAAC,IAAI,CAAM,CAAC;IACxE,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,IAAe,EAAE,IAAa;;QAEpD,OAAO,MAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,0CAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC;;AA1BL,mCA4BC;AA1BkB,0BAAS,GAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"DependecyService.js","sourceRoot":"","sources":["../../dependencyInjection/DependecyService.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -15,6 +15,8 @@ export declare function Run(midleware: IMidleware): (target: Object, methodName:
15
15
  export declare function Action(actionName: String): (target: Object, methodName: string, propertyDescriptor: PropertyDescriptor) => void;
16
16
  export declare function Route(route: string): (target: Function) => void;
17
17
  export declare function Verb(verb: HTTPVerbs): (target: Object, methodName: string, propertyDescriptor: PropertyDescriptor) => void;
18
+ export declare function Inject(): (target: Object, property: string | symbol) => void;
19
+ export declare function InjectAbstract(object: Function): (target: Object, property: string | symbol) => void;
18
20
  export declare function Argument<T>(argName1: string): (target: Object, methodName: string, propertyDescriptor: PropertyDescriptor) => void;
19
21
  export declare function Argument<T, U>(argName1: string, argName2?: string): (target: Object, methodName: string, propertyDescriptor: PropertyDescriptor) => void;
20
22
  export declare function Argument<T, U, K>(argName1: string, argName2?: string, argName3?: string): (target: Object, methodName: string, propertyDescriptor: PropertyDescriptor) => void;
@@ -3,7 +3,7 @@ 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.Argument = exports.Verb = exports.Route = exports.Action = exports.Run = exports.Use = exports.DependecyService = exports.HTTPVerbs = exports.ControllerBase = exports.ControllersDecorators = exports.ApplicationConfiguration = exports.Application = void 0;
6
+ exports.Argument = exports.InjectAbstract = exports.Inject = exports.Verb = exports.Route = exports.Action = exports.Run = exports.Use = exports.DependecyService = exports.HTTPVerbs = exports.ControllerBase = exports.ControllersDecorators = exports.ApplicationConfiguration = exports.Application = void 0;
7
7
  var Application_1 = require("./Application");
8
8
  Object.defineProperty(exports, "Application", { enumerable: true, get: function () { return __importDefault(Application_1).default; } });
9
9
  var ApplicationConfiguration_1 = require("./ApplicationConfiguration");
@@ -17,6 +17,7 @@ Object.defineProperty(exports, "HTTPVerbs", { enumerable: true, get: function ()
17
17
  var DependecyService_1 = require("./dependencyInjection/DependecyService");
18
18
  Object.defineProperty(exports, "DependecyService", { enumerable: true, get: function () { return __importDefault(DependecyService_1).default; } });
19
19
  const ControllerDecorators_2 = __importDefault(require("./decorators/controllers/ControllerDecorators"));
20
+ const DependecyService_2 = __importDefault(require("./dependencyInjection/DependecyService"));
20
21
  function Use(midleware) {
21
22
  return ControllerDecorators_2.default.Use(midleware);
22
23
  }
@@ -42,6 +43,14 @@ function Verb(verb) {
42
43
  }
43
44
  exports.Verb = Verb;
44
45
  ;
46
+ function Inject() {
47
+ return DependecyService_2.default.Injectable();
48
+ }
49
+ exports.Inject = Inject;
50
+ function InjectAbstract(object) {
51
+ return DependecyService_2.default.InjectOne(object);
52
+ }
53
+ exports.InjectAbstract = InjectAbstract;
45
54
  function Argument(argName1, argName2, argName3, argName4, argName5) {
46
55
  return ControllerDecorators_2.default.Argument(argName1, argName2, argName3, argName4, argName5);
47
56
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;AAAA,6CAAsD;AAA7C,2HAAA,OAAO,OAAe;AAC/B,uEAAiF;AAAxE,qJAAA,OAAO,OAA4B;AAE5C,sFAAiG;AAAxF,8IAAA,OAAO,OAAyB;AACzC,oEAAmE;AAA1D,gHAAA,cAAc,OAAA;AAEvB,yDAAwD;AAA/C,sGAAA,SAAS,OAAA;AAElB,2EAAqF;AAA5E,qIAAA,OAAO,OAAoB;AAQpC,yGAAkF;AAClF,8FAAsE;AAItE,SAAgB,GAAG,CAAC,SAAsB;IAEtC,OAAO,8BAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAChD,CAAC;AAHD,kBAGC;AAAC,CAAC;AAEH,SAAgB,GAAG,CAAC,SAAsB;IAEtC,OAAO,8BAAqB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACnD,CAAC;AAHD,kBAGC;AAAC,CAAC;AAEH,SAAgB,MAAM,CAAC,UAAmB;IAEtC,OAAO,8BAAqB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACpD,CAAC;AAHD,wBAGC;AAAC,CAAC;AAEH,SAAgB,KAAK,CAAC,KAAc;IAEhC,OAAO,8BAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC9C,CAAC;AAHD,sBAGC;AAAC,CAAC;AAGH,SAAgB,IAAI,CAAC,IAAgB;IAGjC,OAAO,8BAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAJD,oBAIC;AAAC,CAAC;AAEH,SAAgB,MAAM;IAElB,OAAO,0BAAgB,CAAC,UAAU,EAAE,CAAC;AACzC,CAAC;AAHD,wBAGC;AAED,SAAgB,cAAc,CAAC,MAAiB;IAE5C,OAAO,0BAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC9C,CAAC;AAHD,wCAGC;AAQD,SAAgB,QAAQ,CAAiB,QAAiB,EAAE,QAAkB,EAAE,QAAkB,EAAE,QAAkB,EAAE,QAAkB;IAEtI,OAAO,8BAAqB,CAAC,QAAQ,CAAiB,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC5G,CAAC;AAHD,4BAGC"}
@@ -3,6 +3,10 @@
3
3
  module.exports = {
4
4
  preset: 'ts-jest',
5
5
  testEnvironment: 'node',
6
- modulePathIgnorePatterns: ['<rootDir>/__test__/classes/'],
6
+ collectCoverage: true,
7
+ testPathIgnorePatterns: [
8
+ "__tests__/classes",
9
+ "__test__/*/*.d.ts"
10
+ ]
7
11
  };
8
12
  //# sourceMappingURL=jest.config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"jest.config.js","sourceRoot":"","sources":["../jest.config.ts"],"names":[],"mappings":";AAAA,gEAAgE;AAChE,MAAM,CAAC,OAAO,GAAG;IACf,MAAM,EAAE,SAAS;IACjB,eAAe,EAAE,MAAM;IACvB,wBAAwB,EAAE,CAAC,6BAA6B,CAAC;CAC1D,CAAC"}
1
+ {"version":3,"file":"jest.config.js","sourceRoot":"","sources":["../jest.config.ts"],"names":[],"mappings":";AAAA,gEAAgE;AAChE,MAAM,CAAC,OAAO,GAAG;IACf,MAAM,EAAE,SAAS;IACjB,eAAe,EAAE,MAAM;IACvB,eAAe,EAAE,IAAI;IACrB,sBAAsB,EAAG;QACvB,mBAAmB;QACnB,mBAAmB;KACpB;CAEF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "web_api_base",
3
- "version": "2.5.4",
3
+ "version": "2.6.1",
4
4
  "description": "web api base",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -16,22 +16,21 @@
16
16
  "author": "adriano.marino1992@gmail.com",
17
17
  "repository": "https://github.com/adrianomarino1992/web_api_base.git",
18
18
  "license": "ISC",
19
- "dependencies": {
19
+ "dependencies": {
20
+ "cors": "^2.8.5",
21
+ "express": "^4.18.2",
22
+ "platform-folders": "^0.6.0",
23
+ "reflect-metadata": "^0.1.13"
24
+
25
+ },
26
+ "devDependencies": {
20
27
  "@types/express": "^4.17.15",
21
28
  "@types/jest": "^29.2.4",
22
29
  "@types/node": "^18.11.17",
23
30
  "@types/reflect-metadata": "^0.1.0",
24
- "cors": "^2.8.5",
25
- "express": "^4.18.2",
26
- "formidable": "^2.1.1",
27
31
  "jest": "^29.3.1",
28
- "platform-folders": "^0.6.0",
29
- "reflect-metadata": "^0.1.13",
30
32
  "ts-jest": "^29.0.3",
31
- "ts-node": "^10.9.1",
32
- "typescript": "^4.9.4"
33
- },
34
- "devDependencies": {
35
- "@types/formidable": "^2.0.5"
33
+ "ts-node": "^10.9.1"
34
+
36
35
  }
37
36
  }
package/readme.md CHANGED
@@ -68,7 +68,94 @@ import Application from './Application';
68
68
  new Application().StartAsync();
69
69
  ```
70
70
 
71
+ ## Dependecy injection service
72
+ Consider this abstraction of a service and some imnplementations
71
73
 
74
+ ### ./services/SampleService.ts
75
+
76
+ ```typescript
77
+ export abstract class SampleServiceAbstract
78
+ {
79
+ abstract DoSomething() : void;
80
+ }
81
+
82
+ export class SampleService extends SampleServiceAbstract
83
+ {
84
+ public DoSomething(): void {
85
+ console.log("Doing in SampleServices");
86
+ }
87
+ }
88
+
89
+ export class AnotherService extends SampleServiceAbstract
90
+ {
91
+ public DoSomething(): void {
92
+ console.log("Doing another job in AnotherService");
93
+ }
94
+ }
95
+ ```
96
+
97
+ We can use the DI service like this
98
+
99
+ ### ./controllers/SampleController.ts
100
+
101
+ ```typescript
102
+
103
+ import { ControllerBase, HTTPVerbs as verbs, Use, Verb, Route, Action } from "web_api_base";
104
+ import {SampleServiceAbstract } from '../services/SampleService.ts';
105
+
106
+ @Route("/sample")
107
+ export default class SampleController extends ControllerBase
108
+ {
109
+ @Inject() // say to DI that this property will be inject on the instance
110
+ public SomeDepency : SampleServiceAbstract;
111
+
112
+ constructor(someDependecy : SampleServiceAbstract)
113
+ {
114
+ super();
115
+ this.SomeDepency = someDependecy ;
116
+ }
117
+
118
+ @Verb(verbs.GET)
119
+ @Action("/hello")
120
+ public Hello() : void
121
+ {
122
+ this.OK({message: "Hello Word!"})
123
+ }
124
+
125
+ }
126
+ ```
127
+
128
+ And we can register our dependecies in Application ConfigureAsync method
129
+
130
+ ### App.ts
131
+
132
+ ```typescript
133
+
134
+ import { Application, IApplicationConfiguration, DependecyService, } from "web_api_base";
135
+
136
+ import { SampleService, SampleServiceAbstract } from './service/SampleService';
137
+
138
+
139
+ export default class App extends Application
140
+ {
141
+ constructor()
142
+ {
143
+ super();
144
+ }
145
+
146
+ public override async ConfigureAsync(appConfig: IApplicationConfiguration): Promise<void>
147
+ {
148
+ this.UseCors();
149
+
150
+ // everytime some class need a SampleServiceAbstract it will get a intance of SampleService
151
+ DependecyService.RegisterFor(SampleServiceAbstract, SampleService);
152
+
153
+ this.UseControllers();
154
+
155
+ }
156
+ }
157
+
158
+ ```
72
159
 
73
160
  ## Contributing
74
161
 
package/dist/App.js DELETED
@@ -1,32 +0,0 @@
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 Configuration_1 = __importDefault(require("./Configuration"));
16
- const express_1 = __importDefault(require("express"));
17
- class App {
18
- constructor() {
19
- this.Configuration = new Configuration_1.default();
20
- this.Express = (0, express_1.default)();
21
- }
22
- StartAsync() {
23
- return __awaiter(this, void 0, void 0, function* () {
24
- yield this.Configuration.StartAsync();
25
- this.Express.listen(this.Configuration.Port, this.Configuration.Host, () => {
26
- console.log(`App running on ${this.Configuration.Host}:${this.Configuration.Port}`);
27
- });
28
- });
29
- }
30
- }
31
- exports.default = App;
32
- //# sourceMappingURL=App.js.map
package/dist/App.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"App.js","sourceRoot":"","sources":["../App.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,oEAA2C;AAE3C,sDAAsC;AAGtC,MAAqB,GAAG;IAQpB;QAEI,IAAI,CAAC,aAAa,GAAG,IAAI,uBAAa,EAAE,CAAC;QAEzC,IAAI,CAAC,OAAO,GAAG,IAAA,iBAAe,GAAE,CAAC;IACrC,CAAC;IAEY,UAAU;;YAEnB,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;YAEtC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,GAAE,EAAE;gBAEtE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;YACxF,CAAC,CAAC,CAAA;QACN,CAAC;KAAA;CAEJ;AAzBD,sBAyBC"}