@alterior/runtime 3.5.6 → 3.6.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.
@@ -1,4 +1,5 @@
1
1
  import { Annotation, AnnotationDecorator } from '@alterior/annotations';
2
+ import { Provider } from '@alterior/di';
2
3
  export interface ApplicationOptions {
3
4
  /**
4
5
  * Specify a human readable name for your application.
@@ -40,6 +41,10 @@ export interface ApplicationOptions {
40
41
  * Turn off all console output
41
42
  */
42
43
  silent?: boolean;
44
+ /**
45
+ * Additional dependency injection providers to include in the application's injector.
46
+ */
47
+ providers?: Provider[];
43
48
  }
44
49
  /**
45
50
  * Used to attach an ApplicationOptions object onto a class definition.
@@ -1 +1 @@
1
- {"version":3,"file":"app-options.d.ts","sourceRoot":"","sources":["../src/app-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAgB,MAAM,uBAAuB,CAAC;AAEtF,MAAM,WAAW,kBAAkB;IAElC;;OAEG;IACH,IAAI,CAAC,EAAG,MAAM,CAAC;IAEf;;OAEG;IACH,OAAO,CAAC,EAAG,MAAM,CAAC;IAElB;;OAEG;IACH,WAAW,CAAC,EAAG,MAAM,CAAC;IAEtB;;;OAGG;IACH,WAAW,CAAC,EAAG,MAAM,CAAC;IAEtB;;;OAGG;IACH,OAAO,CAAC,EAAG,MAAM,CAAC;IAElB;;OAEG;IACH,IAAI,CAAC,EAAG,MAAM,EAAE,CAAC;IAEjB,KAAK,CAAC,EAAG,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAG,OAAO,CAAC;IAEnB;;;OAGG;IACH,SAAS,CAAC,EAAG,OAAO,CAAC;IAErB;;OAEG;IACH,MAAM,CAAC,EAAG,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,qBACa,oBAAqB,SAAQ,UAAU;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAG,kBAAkB;gBAA7B,OAAO,CAAC,EAAG,kBAAkB;CAGlD;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,qDAErB,CAAC"}
1
+ {"version":3,"file":"app-options.d.ts","sourceRoot":"","sources":["../src/app-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAgB,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,MAAM,WAAW,kBAAkB;IAElC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,qBACa,oBAAqB,SAAQ,UAAU;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB;gBAA5B,OAAO,CAAC,EAAE,kBAAkB;CAGjD;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,qDAErB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"app-options.js","sourceRoot":"","sources":["../src/app-options.ts"],"names":[],"mappings":";;;;AAAA,uDAAsF;AAuDtF;;GAEG;AAEI,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,wBAAU;IACnD,YAAqB,OAA6B;QACjD,KAAK,EAAE,CAAC;QADY,YAAO,GAAP,OAAO,CAAsB;IAElD,CAAC;CACD,CAAA;AAJY,oBAAoB;IADhC,IAAA,0BAAY,EAAC,0BAA0B,CAAC;;GAC5B,oBAAoB,CAIhC;AAJY,oDAAoB;AAMjC;;;GAGG;AACU,QAAA,UAAU,GAAG,oBAAoB,CAAC,SAAS,CAAC;IACxD,YAAY,EAAE,CAAC,OAAO,CAAC;CACvB,CAAC,CAAC"}
1
+ {"version":3,"file":"app-options.js","sourceRoot":"","sources":["../src/app-options.ts"],"names":[],"mappings":";;;;AAAA,uDAAsF;AA6DtF;;GAEG;AAEI,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,wBAAU;IACnD,YAAqB,OAA4B;QAChD,KAAK,EAAE,CAAC;QADY,YAAO,GAAP,OAAO,CAAqB;IAEjD,CAAC;CACD,CAAA;AAJY,oBAAoB;IADhC,IAAA,0BAAY,EAAC,0BAA0B,CAAC;;GAC5B,oBAAoB,CAIhC;AAJY,oDAAoB;AAMjC;;;GAGG;AACU,QAAA,UAAU,GAAG,oBAAoB,CAAC,SAAS,CAAC;IACxD,YAAY,EAAE,CAAC,OAAO,CAAC;CACvB,CAAC,CAAC"}
@@ -1,8 +1,6 @@
1
1
  import 'reflect-metadata';
2
2
  import { ApplicationOptions } from './app-options';
3
- import { Injector } from '@alterior/di';
4
3
  import { Runtime } from './modules';
5
- import { ApplicationArgs } from './args';
6
4
  export declare class ApplicationOptionsRef {
7
5
  constructor(options: ApplicationOptions);
8
6
  readonly options: ApplicationOptions;
@@ -34,13 +32,12 @@ export declare class ExecutionContext {
34
32
  * Handles bootstrapping the application.
35
33
  */
36
34
  export declare class Application {
37
- readonly runtime?: Runtime;
38
- private _optionsRef?;
39
- private _args?;
40
- constructor(runtime?: Runtime, _optionsRef?: ApplicationOptionsRef, _args?: ApplicationArgs);
35
+ readonly runtime: Runtime;
36
+ private _optionsRef;
37
+ private _args;
41
38
  start(): void;
42
39
  stop(): void;
43
- get injector(): Injector;
40
+ get injector(): import("@alterior/di").Injector;
44
41
  inject<T>(ctor: {
45
42
  new (...args: any[]): T;
46
43
  }, notFoundValue?: T): T;
@@ -48,7 +45,6 @@ export declare class Application {
48
45
  get options(): ApplicationOptions;
49
46
  private static loadOptions;
50
47
  private static validateEntryModule;
51
- private _bootstrapped;
52
48
  /**
53
49
  * Bootstrap an Alterior application.
54
50
  */
@@ -1 +1 @@
1
- {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAwB,MAAM,eAAe,CAAC;AACzE,OAAO,EACc,QAAQ,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAMzC,qBAAa,qBAAqB;gBAEhC,OAAO,EAAG,kBAAkB;IAK7B,QAAQ,CAAC,OAAO,EAAG,kBAAkB,CAAC;CACtC;AAED;;;;GAIG;AACH,qBAAa,gBAAgB;IAC5B;;;OAGG;IACI,WAAW,EAAG,WAAW,CAAQ;IAExC,MAAM,CAAC,QAAQ,CAAC,eAAe,wCAAyC;IAExE;;OAEG;IACH,WAAkB,OAAO,IAAI,gBAAgB,CAE5C;IAED;;;OAGG;IACU,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAG,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAWrD,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAG,MAAM,CAAC,GAAG,CAAC;CAUxC;AAED;;GAEG;AACH,qBACa,WAAW;IAEtB,QAAQ,CAAC,OAAO,CAAC,EAAG,OAAO;IAC3B,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,KAAK,CAAC;gBAFL,OAAO,CAAC,EAAG,OAAO,EACnB,WAAW,CAAC,EAAG,qBAAqB,EACpC,KAAK,CAAC,EAAG,eAAe;IAK1B,KAAK;IAIL,IAAI;IAIX,IAAI,QAAQ,aAEX;IAED,MAAM,CAAC,CAAC,EAAE,IAAI,EAAG;QAAE,KAAI,GAAG,IAAI,OAAA,GAAI,CAAC,CAAA;KAAE,EAAE,aAAa,CAAC,EAAG,CAAC,GAAG,CAAC;IAI7D,IAAI,IAAI,IAAK,MAAM,EAAE,CAEpB;IAED,IAAI,OAAO,IAAK,kBAAkB,CAEjC;IAED,OAAO,CAAC,MAAM,CAAC,WAAW;IAoB1B,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAclC,OAAO,CAAC,aAAa,CAAmB;IAExC;;OAEG;WACW,SAAS,CAAC,WAAW,EAAG,QAAQ,EAAE,OAAO,CAAC,EAAG,kBAAkB,GAAG,WAAW;CA4D3F"}
1
+ {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAU1B,OAAO,EAAE,kBAAkB,EAAwB,MAAM,eAAe,CAAC;AAEzE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,qBAAa,qBAAqB;gBAEhC,OAAO,EAAE,kBAAkB;IAK5B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;CACrC;AAED;;;;GAIG;AACH,qBAAa,gBAAgB;IAC5B;;;OAGG;IACI,WAAW,EAAE,WAAW,CAAQ;IAEvC,MAAM,CAAC,QAAQ,CAAC,eAAe,wCAAyC;IAExE;;OAEG;IACH,WAAkB,OAAO,IAAI,gBAAgB,CAE5C;IAED;;;OAGG;IACU,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAWpD,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC;CAUvC;AAED;;GAEG;AACH,qBACa,WAAW;IACvB,QAAQ,CAAC,OAAO,UAAmB;IACnC,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,KAAK,CAA2B;IAEjC,KAAK;IAIL,IAAI;IAIX,IAAI,QAAQ,oCAEX;IAED,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE;QAAE,KAAI,GAAG,IAAI,OAAA,GAAG,CAAC,CAAA;KAAE,EAAE,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC;IAI1D,IAAI,IAAI,IAAI,MAAM,EAAE,CAEnB;IAED,IAAI,OAAO,IAAI,kBAAkB,CAEhC;IAED,OAAO,CAAC,MAAM,CAAC,WAAW;IAoB1B,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAclC;;OAEG;WACW,SAAS,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,WAAW;CA6DzF"}
@@ -4,12 +4,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.Application = exports.ExecutionContext = exports.ApplicationOptionsRef = void 0;
5
5
  const tslib_1 = require("tslib");
6
6
  require("reflect-metadata");
7
- const app_options_1 = require("./app-options");
7
+ const common_1 = require("@alterior/common");
8
8
  const di_1 = require("@alterior/di");
9
- const modules_1 = require("./modules");
9
+ const app_options_1 = require("./app-options");
10
10
  const args_1 = require("./args");
11
+ const modules_1 = require("./modules");
11
12
  const roles_service_1 = require("./roles.service");
12
- const common_1 = require("@alterior/common");
13
13
  class ApplicationOptionsRef {
14
14
  constructor(options) {
15
15
  this.options = Object.assign({}, options);
@@ -66,11 +66,10 @@ ExecutionContext.ZONE_LOCAL_NAME = '@alterior/runtime:ExecutionContext';
66
66
  * Handles bootstrapping the application.
67
67
  */
68
68
  let Application = Application_1 = class Application {
69
- constructor(runtime, _optionsRef, _args) {
70
- this.runtime = runtime;
71
- this._optionsRef = _optionsRef;
72
- this._args = _args;
73
- this._bootstrapped = false;
69
+ constructor() {
70
+ this.runtime = (0, di_1.inject)(modules_1.Runtime);
71
+ this._optionsRef = (0, di_1.inject)(ApplicationOptionsRef);
72
+ this._args = (0, di_1.inject)(args_1.ApplicationArgs);
74
73
  }
75
74
  start() {
76
75
  this.runtime.start();
@@ -119,6 +118,7 @@ let Application = Application_1 = class Application {
119
118
  static bootstrap(entryModule, options) {
120
119
  let executionContext = new ExecutionContext();
121
120
  return executionContext.runSync(() => {
121
+ var _a;
122
122
  this.validateEntryModule(entryModule);
123
123
  options = this.loadOptions(entryModule, options);
124
124
  let runtime = new modules_1.Runtime(entryModule);
@@ -134,6 +134,7 @@ let Application = Application_1 = class Application {
134
134
  useValue: new ApplicationOptionsRef(options)
135
135
  });
136
136
  providers.push(Application_1);
137
+ providers.push((_a = options.providers) !== null && _a !== void 0 ? _a : []);
137
138
  runtime.providers = providers;
138
139
  let injector;
139
140
  try {
@@ -164,10 +165,7 @@ let Application = Application_1 = class Application {
164
165
  }
165
166
  };
166
167
  Application = Application_1 = tslib_1.__decorate([
167
- (0, di_1.Injectable)(),
168
- tslib_1.__metadata("design:paramtypes", [modules_1.Runtime,
169
- ApplicationOptionsRef,
170
- args_1.ApplicationArgs])
168
+ (0, di_1.Injectable)()
171
169
  ], Application);
172
170
  exports.Application = Application;
173
171
  //# sourceMappingURL=application.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"application.js","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":";;;;;AAAA,4BAA0B;AAE1B,+CAAyE;AACzE,qCACoD;AACpD,uCAAoC;AACpC,iCAAyC;AACzC,mDAA+C;AAC/C,6CAAqD;AAIrD,MAAa,qBAAqB;IACjC,YACC,OAA4B;QAE5B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;CAGD;AARD,sDAQC;AAED;;;;GAIG;AACH,MAAa,gBAAgB;IAA7B;QACC;;;WAGG;QACI,gBAAW,GAAiB,IAAI,CAAC;IAoCzC,CAAC;IAhCA;;OAEG;IACI,MAAM,KAAK,OAAO;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAC3D,CAAC;IAED;;;OAGG;IACU,GAAG,CAAI,QAA2B;;YAC9C,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC5B,IAAI,EAAE,0BAA0B;gBAChC,UAAU,EAAE;oBACX,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAAE,IAAI;iBACxC;aACD,CAAC,CAAC;YAEH,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzC,CAAC;KAAA;IAEM,OAAO,CAAI,QAAkB;QACnC,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAC5B,IAAI,EAAE,0BAA0B;YAChC,UAAU,EAAE;gBACX,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAAE,IAAI;aACxC;SACD,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnC,CAAC;;AAxCF,4CAyCC;AAlCgB,gCAAe,GAAI,oCAAoC,CAAC;AAoCzE;;GAEG;AAEI,IAAM,WAAW,mBAAjB,MAAM,WAAW;IACvB,YACU,OAAkB,EACnB,WAAoC,EACpC,KAAwB;QAFvB,YAAO,GAAP,OAAO,CAAW;QACnB,gBAAW,GAAX,WAAW,CAAyB;QACpC,UAAK,GAAL,KAAK,CAAmB;QA+DzB,kBAAa,GAAa,KAAK,CAAC;IA5DxC,CAAC;IAEM,KAAK;QACX,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAEM,IAAI;QACV,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAED,MAAM,CAAI,IAA2B,EAAE,aAAkB;QACxD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;IACjC,CAAC;IAEO,MAAM,CAAC,WAAW,CAAC,WAAsB,EAAE,gBAAqC;QACvF,uEAAuE;QACvE,kCAAkC;QAElC,IAAI,oBAAoB,GAAG,kCAAoB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACzE,IAAI,kBAAkB,GAAwB,oBAAoB,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QAE7G,OAAO,MAAM,CAAC,MAAM,CACC;YACnB,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,KAAK;YACb,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,EAAE;SACb,EACD,kBAAkB,EAClB,gBAAgB,CAChB,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,mBAAmB,CAAC,MAAiB;QACnD,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;YACjC,MAAM,IAAI,KAAK,CACd,sDAAsD;kBACpD,gCAAgC;kBAChC,GAAG,OAAO,MAAM,gBAAgB,MAAM,GAAG,CAC3C,CAAC;SACF;QAED,IAAI,cAAc,GAAG,qBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,cAAc;YAClB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IAID;;OAEG;IACI,MAAM,CAAC,SAAS,CAAC,WAAsB,EAAE,OAA6B;QAC5E,IAAI,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAC9C,OAAO,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE;YACpC,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;YAEtC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAEjD,IAAI,OAAO,GAAG,IAAI,iBAAO,CAAC,WAAW,CAAC,CAAC;YAEvC,IAAI,SAAS,GAAgB;gBAC5B,sBAAe;gBACf,4BAAY;gBACZ,oBAAW;gBACX,aAAI;aACJ,CAAC;YAEF,OAAO,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;YACvC,SAAS,CAAC,IAAI,CACb;gBACC,OAAO,EAAE,qBAAqB;gBAC9B,QAAQ,EAAE,IAAI,qBAAqB,CAAC,OAAO,CAAC;aAC5C,CACD,CAAC;YACF,SAAS,CAAC,IAAI,CAAC,aAAW,CAAC,CAAC;YAE5B,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;YAE9B,IAAI,QAA6B,CAAC;YAClC,IAAI;gBACH,QAAQ,GAAG,uBAAkB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;aAC1D;YAAC,OAAO,CAAC,EAAE;gBACX,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBAC7C,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACvB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBACjC,MAAM,CAAC,CAAC;aACR;YAEc,QAAQ,CAAC,GAAG,CAAC,4BAAY,CAAE,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAEnE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,gBAAgB,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,aAAW,CAAC,CAAC;YAE/D,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC5B,OAAO,CAAC,SAAS,EAAE,CAAC;YAEpB,IAAI,OAAO,CAAC,QAAQ,EAAE;gBACrB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;gBACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAChB;YAED,IAAI,OAAO,CAAC,SAAS;gBACpB,OAAO,CAAC,KAAK,EAAE,CAAC;YAEjB,OAAO,gBAAgB,CAAC,WAAW,CAAC;QACrC,CAAC,CAAC,CAAC;IACJ,CAAC;CAED,CAAA;AApIY,WAAW;IADvB,IAAA,eAAU,GAAE;6CAGS,iBAAO;QACJ,qBAAqB;QAC3B,sBAAe;GAJrB,WAAW,CAoIvB;AApIY,kCAAW"}
1
+ {"version":3,"file":"application.js","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { Annotation, AnnotationDecorator } from '@alterior/annotations';
2
+ import { Provider } from '@alterior/di';
2
3
  export interface ApplicationOptions {
3
4
  /**
4
5
  * Specify a human readable name for your application.
@@ -40,6 +41,10 @@ export interface ApplicationOptions {
40
41
  * Turn off all console output
41
42
  */
42
43
  silent?: boolean;
44
+ /**
45
+ * Additional dependency injection providers to include in the application's injector.
46
+ */
47
+ providers?: Provider[];
43
48
  }
44
49
  /**
45
50
  * Used to attach an ApplicationOptions object onto a class definition.
@@ -1 +1 @@
1
- {"version":3,"file":"app-options.d.ts","sourceRoot":"","sources":["../src/app-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAgB,MAAM,uBAAuB,CAAC;AAEtF,MAAM,WAAW,kBAAkB;IAElC;;OAEG;IACH,IAAI,CAAC,EAAG,MAAM,CAAC;IAEf;;OAEG;IACH,OAAO,CAAC,EAAG,MAAM,CAAC;IAElB;;OAEG;IACH,WAAW,CAAC,EAAG,MAAM,CAAC;IAEtB;;;OAGG;IACH,WAAW,CAAC,EAAG,MAAM,CAAC;IAEtB;;;OAGG;IACH,OAAO,CAAC,EAAG,MAAM,CAAC;IAElB;;OAEG;IACH,IAAI,CAAC,EAAG,MAAM,EAAE,CAAC;IAEjB,KAAK,CAAC,EAAG,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAG,OAAO,CAAC;IAEnB;;;OAGG;IACH,SAAS,CAAC,EAAG,OAAO,CAAC;IAErB;;OAEG;IACH,MAAM,CAAC,EAAG,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,qBACa,oBAAqB,SAAQ,UAAU;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAG,kBAAkB;gBAA7B,OAAO,CAAC,EAAG,kBAAkB;CAGlD;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,qDAErB,CAAC"}
1
+ {"version":3,"file":"app-options.d.ts","sourceRoot":"","sources":["../src/app-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAgB,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,MAAM,WAAW,kBAAkB;IAElC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,qBACa,oBAAqB,SAAQ,UAAU;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB;gBAA5B,OAAO,CAAC,EAAE,kBAAkB;CAGjD;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,qDAErB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"app-options.js","sourceRoot":"","sources":["../src/app-options.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAuB,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAuDtF;;GAEG;AAEI,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,UAAU;IACnD,YAAqB,OAA6B;QACjD,KAAK,EAAE,CAAC;QADY,YAAO,GAAP,OAAO,CAAsB;IAElD,CAAC;CACD,CAAA;AAJY,oBAAoB;IADhC,YAAY,CAAC,0BAA0B,CAAC;;GAC5B,oBAAoB,CAIhC;SAJY,oBAAoB;AAMjC;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,oBAAoB,CAAC,SAAS,CAAC;IACxD,YAAY,EAAE,CAAC,OAAO,CAAC;CACvB,CAAC,CAAC"}
1
+ {"version":3,"file":"app-options.js","sourceRoot":"","sources":["../src/app-options.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAuB,YAAY,EAAE,MAAM,uBAAuB,CAAC;AA6DtF;;GAEG;AAEI,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,UAAU;IACnD,YAAqB,OAA4B;QAChD,KAAK,EAAE,CAAC;QADY,YAAO,GAAP,OAAO,CAAqB;IAEjD,CAAC;CACD,CAAA;AAJY,oBAAoB;IADhC,YAAY,CAAC,0BAA0B,CAAC;;GAC5B,oBAAoB,CAIhC;SAJY,oBAAoB;AAMjC;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,oBAAoB,CAAC,SAAS,CAAC;IACxD,YAAY,EAAE,CAAC,OAAO,CAAC;CACvB,CAAC,CAAC"}
@@ -1,8 +1,6 @@
1
1
  import 'reflect-metadata';
2
2
  import { ApplicationOptions } from './app-options';
3
- import { Injector } from '@alterior/di';
4
3
  import { Runtime } from './modules';
5
- import { ApplicationArgs } from './args';
6
4
  export declare class ApplicationOptionsRef {
7
5
  constructor(options: ApplicationOptions);
8
6
  readonly options: ApplicationOptions;
@@ -34,13 +32,12 @@ export declare class ExecutionContext {
34
32
  * Handles bootstrapping the application.
35
33
  */
36
34
  export declare class Application {
37
- readonly runtime?: Runtime;
38
- private _optionsRef?;
39
- private _args?;
40
- constructor(runtime?: Runtime, _optionsRef?: ApplicationOptionsRef, _args?: ApplicationArgs);
35
+ readonly runtime: Runtime;
36
+ private _optionsRef;
37
+ private _args;
41
38
  start(): void;
42
39
  stop(): void;
43
- get injector(): Injector;
40
+ get injector(): import("@alterior/di").Injector;
44
41
  inject<T>(ctor: {
45
42
  new (...args: any[]): T;
46
43
  }, notFoundValue?: T): T;
@@ -48,7 +45,6 @@ export declare class Application {
48
45
  get options(): ApplicationOptions;
49
46
  private static loadOptions;
50
47
  private static validateEntryModule;
51
- private _bootstrapped;
52
48
  /**
53
49
  * Bootstrap an Alterior application.
54
50
  */
@@ -1 +1 @@
1
- {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAwB,MAAM,eAAe,CAAC;AACzE,OAAO,EACc,QAAQ,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAMzC,qBAAa,qBAAqB;gBAEhC,OAAO,EAAG,kBAAkB;IAK7B,QAAQ,CAAC,OAAO,EAAG,kBAAkB,CAAC;CACtC;AAED;;;;GAIG;AACH,qBAAa,gBAAgB;IAC5B;;;OAGG;IACI,WAAW,EAAG,WAAW,CAAQ;IAExC,MAAM,CAAC,QAAQ,CAAC,eAAe,wCAAyC;IAExE;;OAEG;IACH,WAAkB,OAAO,IAAI,gBAAgB,CAE5C;IAED;;;OAGG;IACU,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAG,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAWrD,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAG,MAAM,CAAC,GAAG,CAAC;CAUxC;AAED;;GAEG;AACH,qBACa,WAAW;IAEtB,QAAQ,CAAC,OAAO,CAAC,EAAG,OAAO;IAC3B,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,KAAK,CAAC;gBAFL,OAAO,CAAC,EAAG,OAAO,EACnB,WAAW,CAAC,EAAG,qBAAqB,EACpC,KAAK,CAAC,EAAG,eAAe;IAK1B,KAAK;IAIL,IAAI;IAIX,IAAI,QAAQ,aAEX;IAED,MAAM,CAAC,CAAC,EAAE,IAAI,EAAG;QAAE,KAAI,GAAG,IAAI,OAAA,GAAI,CAAC,CAAA;KAAE,EAAE,aAAa,CAAC,EAAG,CAAC,GAAG,CAAC;IAI7D,IAAI,IAAI,IAAK,MAAM,EAAE,CAEpB;IAED,IAAI,OAAO,IAAK,kBAAkB,CAEjC;IAED,OAAO,CAAC,MAAM,CAAC,WAAW;IAoB1B,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAclC,OAAO,CAAC,aAAa,CAAmB;IAExC;;OAEG;WACW,SAAS,CAAC,WAAW,EAAG,QAAQ,EAAE,OAAO,CAAC,EAAG,kBAAkB,GAAG,WAAW;CA4D3F"}
1
+ {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAU1B,OAAO,EAAE,kBAAkB,EAAwB,MAAM,eAAe,CAAC;AAEzE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,qBAAa,qBAAqB;gBAEhC,OAAO,EAAE,kBAAkB;IAK5B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;CACrC;AAED;;;;GAIG;AACH,qBAAa,gBAAgB;IAC5B;;;OAGG;IACI,WAAW,EAAE,WAAW,CAAQ;IAEvC,MAAM,CAAC,QAAQ,CAAC,eAAe,wCAAyC;IAExE;;OAEG;IACH,WAAkB,OAAO,IAAI,gBAAgB,CAE5C;IAED;;;OAGG;IACU,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAWpD,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC;CAUvC;AAED;;GAEG;AACH,qBACa,WAAW;IACvB,QAAQ,CAAC,OAAO,UAAmB;IACnC,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,KAAK,CAA2B;IAEjC,KAAK;IAIL,IAAI;IAIX,IAAI,QAAQ,oCAEX;IAED,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE;QAAE,KAAI,GAAG,IAAI,OAAA,GAAG,CAAC,CAAA;KAAE,EAAE,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC;IAI1D,IAAI,IAAI,IAAI,MAAM,EAAE,CAEnB;IAED,IAAI,OAAO,IAAI,kBAAkB,CAEhC;IAED,OAAO,CAAC,MAAM,CAAC,WAAW;IAoB1B,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAclC;;OAEG;WACW,SAAS,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,WAAW;CA6DzF"}
@@ -1,12 +1,12 @@
1
1
  var Application_1;
2
- import { __awaiter, __decorate, __metadata } from "tslib";
2
+ import { __awaiter, __decorate } from "tslib";
3
3
  import 'reflect-metadata';
4
+ import { Environment, Time } from '@alterior/common';
5
+ import { inject, Injectable, ModuleAnnotation, ReflectiveInjector } from '@alterior/di';
4
6
  import { AppOptionsAnnotation } from './app-options';
5
- import { ReflectiveInjector, Injectable, ModuleAnnotation } from '@alterior/di';
6
- import { Runtime } from './modules';
7
7
  import { ApplicationArgs } from './args';
8
+ import { Runtime } from './modules';
8
9
  import { RolesService } from './roles.service';
9
- import { Environment, Time } from '@alterior/common';
10
10
  export class ApplicationOptionsRef {
11
11
  constructor(options) {
12
12
  this.options = Object.assign({}, options);
@@ -61,11 +61,10 @@ ExecutionContext.ZONE_LOCAL_NAME = '@alterior/runtime:ExecutionContext';
61
61
  * Handles bootstrapping the application.
62
62
  */
63
63
  let Application = Application_1 = class Application {
64
- constructor(runtime, _optionsRef, _args) {
65
- this.runtime = runtime;
66
- this._optionsRef = _optionsRef;
67
- this._args = _args;
68
- this._bootstrapped = false;
64
+ constructor() {
65
+ this.runtime = inject(Runtime);
66
+ this._optionsRef = inject(ApplicationOptionsRef);
67
+ this._args = inject(ApplicationArgs);
69
68
  }
70
69
  start() {
71
70
  this.runtime.start();
@@ -114,6 +113,7 @@ let Application = Application_1 = class Application {
114
113
  static bootstrap(entryModule, options) {
115
114
  let executionContext = new ExecutionContext();
116
115
  return executionContext.runSync(() => {
116
+ var _a;
117
117
  this.validateEntryModule(entryModule);
118
118
  options = this.loadOptions(entryModule, options);
119
119
  let runtime = new Runtime(entryModule);
@@ -129,6 +129,7 @@ let Application = Application_1 = class Application {
129
129
  useValue: new ApplicationOptionsRef(options)
130
130
  });
131
131
  providers.push(Application_1);
132
+ providers.push((_a = options.providers) !== null && _a !== void 0 ? _a : []);
132
133
  runtime.providers = providers;
133
134
  let injector;
134
135
  try {
@@ -159,10 +160,7 @@ let Application = Application_1 = class Application {
159
160
  }
160
161
  };
161
162
  Application = Application_1 = __decorate([
162
- Injectable(),
163
- __metadata("design:paramtypes", [Runtime,
164
- ApplicationOptionsRef,
165
- ApplicationArgs])
163
+ Injectable()
166
164
  ], Application);
167
165
  export { Application };
168
166
  //# sourceMappingURL=application.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"application.js","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"application.js","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alterior/runtime",
3
- "version": "3.5.6",
3
+ "version": "3.6.0",
4
4
  "description": "Core runtime for Alterior apps",
5
5
  "author": "The Alterior Project (https://github.com/alterior-mvc)",
6
6
  "license": "MIT",
@@ -47,5 +47,5 @@
47
47
  "zone.js": "^0.11.4"
48
48
  },
49
49
  "lernaKick": 1,
50
- "gitHead": "220e169fc8c855dc0935620bdb5efb1e9a2b86a7"
50
+ "gitHead": "c83b259643c92246ac54eaadc88f5794ae7dae57"
51
51
  }
@@ -1,56 +1,62 @@
1
1
  import { Annotation, AnnotationDecorator, MetadataName } from '@alterior/annotations';
2
+ import { Provider } from '@alterior/di';
2
3
 
3
4
  export interface ApplicationOptions {
4
5
 
5
6
  /**
6
7
  * Specify a human readable name for your application.
7
8
  */
8
- name? : string;
9
+ name?: string;
9
10
 
10
11
  /**
11
12
  * Version of the service
12
13
  */
13
- version? : string;
14
+ version?: string;
14
15
 
15
16
  /**
16
17
  * The computer-readable name for your application. Should match your NPM package name.
17
18
  */
18
- packageName? : string;
19
+ packageName?: string;
19
20
 
20
21
  /**
21
22
  * A long-form description for your application, when necessary. If you implement only one,
22
23
  * implement summary instead.
23
24
  */
24
- description? : string;
25
+ description?: string;
25
26
 
26
27
  /**
27
28
  * A shorter-form description for your application, when necessary. If you implement only one,
28
29
  * implement this instead of description.
29
30
  */
30
- summary? : string;
31
+ summary?: string;
31
32
 
32
33
  /**
33
34
  * A set of string tags related to your application.
34
35
  */
35
- tags? : string[];
36
+ tags?: string[];
36
37
 
37
- group? : string;
38
+ group?: string;
38
39
 
39
40
  /**
40
41
  * Enable verbose console logging for Alterior
41
42
  */
42
- verbose? : boolean;
43
+ verbose?: boolean;
43
44
 
44
45
  /**
45
46
  * Whether to start the service immediately on startup.
46
47
  * Defaults to true.
47
48
  */
48
- autostart? : boolean;
49
+ autostart?: boolean;
49
50
 
50
51
  /**
51
52
  * Turn off all console output
52
53
  */
53
- silent? : boolean;
54
+ silent?: boolean;
55
+
56
+ /**
57
+ * Additional dependency injection providers to include in the application's injector.
58
+ */
59
+ providers?: Provider[];
54
60
  }
55
61
 
56
62
  /**
@@ -58,7 +64,7 @@ export interface ApplicationOptions {
58
64
  */
59
65
  @MetadataName('@alterior/di:Application')
60
66
  export class AppOptionsAnnotation extends Annotation {
61
- constructor(readonly options? : ApplicationOptions) {
67
+ constructor(readonly options?: ApplicationOptions) {
62
68
  super();
63
69
  }
64
70
  }
@@ -1,23 +1,26 @@
1
1
  import 'reflect-metadata';
2
2
 
3
+ import { Environment, Time } from '@alterior/common';
4
+ import {
5
+ inject,
6
+ Injectable,
7
+ ModuleAnnotation,
8
+ Provider,
9
+ ReflectiveInjector
10
+ } from '@alterior/di';
3
11
  import { ApplicationOptions, AppOptionsAnnotation } from './app-options';
4
- import { ReflectiveInjector, Provider, Injectable,
5
- ModuleAnnotation, Injector } from '@alterior/di';
6
- import { Runtime } from './modules';
7
12
  import { ApplicationArgs } from './args';
13
+ import { Runtime } from './modules';
8
14
  import { RolesService } from './roles.service';
9
- import { Environment, Time } from '@alterior/common';
10
-
11
- declare let module : never;
12
15
 
13
16
  export class ApplicationOptionsRef {
14
17
  constructor(
15
- options : ApplicationOptions
18
+ options: ApplicationOptions
16
19
  ) {
17
20
  this.options = Object.assign({}, options);
18
21
  }
19
22
 
20
- readonly options : ApplicationOptions;
23
+ readonly options: ApplicationOptions;
21
24
  }
22
25
 
23
26
  /**
@@ -30,7 +33,7 @@ export class ExecutionContext {
30
33
  * Retrieve the Alterior application which is currently being executed.
31
34
  * If an application has not been bootstrapped yet, the value is null.
32
35
  */
33
- public application : Application = null;
36
+ public application: Application = null;
34
37
 
35
38
  static readonly ZONE_LOCAL_NAME = '@alterior/runtime:ExecutionContext';
36
39
 
@@ -45,7 +48,7 @@ export class ExecutionContext {
45
48
  * Execute the given function in a new zone which has
46
49
  * this ExecutionContext instance as the current execution context.
47
50
  */
48
- public async run<T>(callback : () => Promise<T>): Promise<T> {
51
+ public async run<T>(callback: () => Promise<T>): Promise<T> {
49
52
  let zone = Zone.current.fork({
50
53
  name: `AlteriorExecutionContext`,
51
54
  properties: {
@@ -56,7 +59,7 @@ export class ExecutionContext {
56
59
  return await zone.run(() => callback());
57
60
  }
58
61
 
59
- public runSync<T>(callback : () => T): T {
62
+ public runSync<T>(callback: () => T): T {
60
63
  let zone = Zone.current.fork({
61
64
  name: `AlteriorExecutionContext`,
62
65
  properties: {
@@ -73,14 +76,10 @@ export class ExecutionContext {
73
76
  */
74
77
  @Injectable()
75
78
  export class Application {
76
- constructor(
77
- readonly runtime? : Runtime,
78
- private _optionsRef? : ApplicationOptionsRef,
79
- private _args? : ApplicationArgs
80
- ) {
81
-
82
- }
83
-
79
+ readonly runtime = inject(Runtime);
80
+ private _optionsRef = inject(ApplicationOptionsRef);
81
+ private _args = inject(ApplicationArgs);
82
+
84
83
  public start() {
85
84
  this.runtime.start();
86
85
  }
@@ -93,24 +92,24 @@ export class Application {
93
92
  return this.runtime.injector;
94
93
  }
95
94
 
96
- inject<T>(ctor : { new(...args) : T }, notFoundValue? : T): T {
95
+ inject<T>(ctor: { new(...args): T }, notFoundValue?: T): T {
97
96
  return this.injector.get(ctor, notFoundValue);
98
97
  }
99
98
 
100
- get args() : string[] {
99
+ get args(): string[] {
101
100
  return this._args.get();
102
101
  }
103
102
 
104
- get options() : ApplicationOptions {
103
+ get options(): ApplicationOptions {
105
104
  return this._optionsRef.options;
106
105
  }
107
106
 
108
- private static loadOptions(entryModule : Function, bootstrapOptions : ApplicationOptions): ApplicationOptions {
107
+ private static loadOptions(entryModule: Function, bootstrapOptions: ApplicationOptions): ApplicationOptions {
109
108
  // Read an @AppOptions() decorator if any, and merge providers from it
110
109
  // into the bootstrapped providers
111
110
 
112
111
  let appOptionsAnnotation = AppOptionsAnnotation.getForClass(entryModule);
113
- let appProvidedOptions : ApplicationOptions = appOptionsAnnotation ? appOptionsAnnotation.options : {} || {};
112
+ let appProvidedOptions: ApplicationOptions = appOptionsAnnotation ? appOptionsAnnotation.options: {} || {};
114
113
 
115
114
  return Object.assign(
116
115
  <ApplicationOptions>{
@@ -125,7 +124,7 @@ export class Application {
125
124
  );
126
125
  }
127
126
 
128
- private static validateEntryModule(module : Function) {
127
+ private static validateEntryModule(module: Function) {
129
128
  if (typeof module !== 'function') {
130
129
  throw new Error(
131
130
  `You must pass a Module class as the first parameter `
@@ -138,13 +137,11 @@ export class Application {
138
137
  if (!moduleMetadata)
139
138
  throw new Error(`You must pass a module class decorated by @Module()`);
140
139
  }
141
-
142
- private _bootstrapped : boolean = false;
143
-
140
+
144
141
  /**
145
142
  * Bootstrap an Alterior application.
146
143
  */
147
- public static bootstrap(entryModule : Function, options? : ApplicationOptions): Application {
144
+ public static bootstrap(entryModule: Function, options?: ApplicationOptions): Application {
148
145
  let executionContext = new ExecutionContext();
149
146
  return executionContext.runSync(() => {
150
147
  this.validateEntryModule(entryModule);
@@ -153,7 +150,7 @@ export class Application {
153
150
 
154
151
  let runtime = new Runtime(entryModule);
155
152
 
156
- let providers : Provider[] = [
153
+ let providers: Provider[] = [
157
154
  ApplicationArgs,
158
155
  RolesService,
159
156
  Environment,
@@ -168,10 +165,11 @@ export class Application {
168
165
  }
169
166
  );
170
167
  providers.push(Application);
168
+ providers.push(options.providers ?? []);
171
169
 
172
170
  runtime.providers = providers;
173
171
 
174
- let injector : ReflectiveInjector;
172
+ let injector: ReflectiveInjector;
175
173
  try {
176
174
  injector = ReflectiveInjector.resolveAndCreate(providers);
177
175
  } catch (e) {