1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const util_1 = require("./util");
|
4 | const dependencies = Symbol("dependencies");
|
5 | function defineAccessor(target, prop) {
|
6 | Object.defineProperty(target, prop, {
|
7 | configurable: false,
|
8 | enumerable: false,
|
9 | get() {
|
10 | let { module, route } = this[dependencies][prop];
|
11 | return module(route);
|
12 | }
|
13 | });
|
14 | }
|
15 | function addDependency(dependency) {
|
16 | return (target, prop) => {
|
17 | if (target[dependencies] === undefined) {
|
18 | target[dependencies] = util_1.dict();
|
19 | }
|
20 | target[dependencies][prop] = dependency;
|
21 | defineAccessor(target, prop);
|
22 | };
|
23 | }
|
24 | class Injectable {
|
25 | inject(route = void 0) {
|
26 | return addDependency({
|
27 | module: this,
|
28 | route
|
29 | });
|
30 | }
|
31 | }
|
32 | exports.Injectable = Injectable;
|
33 |
|
\ | No newline at end of file |