@loopback/context 4.0.0-alpha.8 → 4.1.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 (201) hide show
  1. package/LICENSE +25 -0
  2. package/README.md +116 -0
  3. package/dist/binding-config.d.ts +40 -0
  4. package/dist/binding-config.js +33 -0
  5. package/dist/binding-config.js.map +1 -0
  6. package/dist/binding-decorator.d.ts +45 -0
  7. package/dist/binding-decorator.js +118 -0
  8. package/dist/binding-decorator.js.map +1 -0
  9. package/dist/binding-filter.d.ts +108 -0
  10. package/dist/binding-filter.js +162 -0
  11. package/dist/binding-filter.js.map +1 -0
  12. package/dist/binding-inspector.d.ts +150 -0
  13. package/dist/binding-inspector.js +249 -0
  14. package/dist/binding-inspector.js.map +1 -0
  15. package/dist/binding-key.d.ts +66 -0
  16. package/dist/binding-key.js +121 -0
  17. package/dist/binding-key.js.map +1 -0
  18. package/dist/binding-sorter.d.ts +71 -0
  19. package/dist/binding-sorter.js +89 -0
  20. package/dist/binding-sorter.js.map +1 -0
  21. package/dist/binding.d.ts +577 -0
  22. package/dist/binding.js +788 -0
  23. package/dist/binding.js.map +1 -0
  24. package/dist/context-event.d.ts +23 -0
  25. package/dist/context-event.js +7 -0
  26. package/dist/context-event.js.map +1 -0
  27. package/dist/context-observer.d.ts +36 -0
  28. package/dist/context-observer.js +7 -0
  29. package/dist/context-observer.js.map +1 -0
  30. package/dist/context-subscription.d.ts +147 -0
  31. package/dist/context-subscription.js +317 -0
  32. package/dist/context-subscription.js.map +1 -0
  33. package/dist/context-tag-indexer.d.ts +42 -0
  34. package/dist/context-tag-indexer.js +135 -0
  35. package/dist/context-tag-indexer.js.map +1 -0
  36. package/dist/context-view.d.ts +209 -0
  37. package/dist/context-view.js +240 -0
  38. package/dist/context-view.js.map +1 -0
  39. package/dist/context.d.ts +513 -0
  40. package/dist/context.js +717 -0
  41. package/dist/context.js.map +1 -0
  42. package/dist/index.d.ts +52 -0
  43. package/dist/index.js +60 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/inject-config.d.ts +67 -0
  46. package/dist/inject-config.js +181 -0
  47. package/dist/inject-config.js.map +1 -0
  48. package/dist/inject.d.ts +250 -0
  49. package/dist/inject.js +535 -0
  50. package/dist/inject.js.map +1 -0
  51. package/dist/interception-proxy.d.ts +76 -0
  52. package/dist/interception-proxy.js +67 -0
  53. package/dist/interception-proxy.js.map +1 -0
  54. package/dist/interceptor-chain.d.ts +121 -0
  55. package/dist/interceptor-chain.js +148 -0
  56. package/dist/interceptor-chain.js.map +1 -0
  57. package/dist/interceptor.d.ts +138 -0
  58. package/dist/interceptor.js +299 -0
  59. package/dist/interceptor.js.map +1 -0
  60. package/dist/invocation.d.ts +101 -0
  61. package/dist/invocation.js +163 -0
  62. package/dist/invocation.js.map +1 -0
  63. package/dist/json-types.d.ts +28 -0
  64. package/{lib/src/provider.js → dist/json-types.js} +3 -3
  65. package/dist/json-types.js.map +1 -0
  66. package/dist/keys.d.ts +65 -0
  67. package/dist/keys.js +74 -0
  68. package/dist/keys.js.map +1 -0
  69. package/dist/provider.d.ts +31 -0
  70. package/{lib6/src → dist}/provider.js +2 -2
  71. package/dist/provider.js.map +1 -0
  72. package/dist/resolution-session.d.ts +180 -0
  73. package/dist/resolution-session.js +274 -0
  74. package/dist/resolution-session.js.map +1 -0
  75. package/dist/resolver.d.ts +46 -0
  76. package/dist/resolver.js +203 -0
  77. package/dist/resolver.js.map +1 -0
  78. package/dist/unique-id.d.ts +14 -0
  79. package/dist/unique-id.js +26 -0
  80. package/dist/unique-id.js.map +1 -0
  81. package/dist/value-promise.d.ts +134 -0
  82. package/dist/value-promise.js +277 -0
  83. package/dist/value-promise.js.map +1 -0
  84. package/package.json +49 -34
  85. package/src/binding-config.ts +73 -0
  86. package/src/binding-decorator.ts +136 -0
  87. package/src/binding-filter.ts +250 -0
  88. package/src/binding-inspector.ts +371 -0
  89. package/src/binding-key.ts +136 -0
  90. package/src/binding-sorter.ts +124 -0
  91. package/src/binding.ts +1107 -0
  92. package/src/context-event.ts +30 -0
  93. package/src/context-observer.ts +50 -0
  94. package/src/context-subscription.ts +402 -0
  95. package/src/context-tag-indexer.ts +147 -0
  96. package/src/context-view.ts +440 -0
  97. package/src/context.ts +1079 -0
  98. package/src/index.ts +58 -0
  99. package/src/inject-config.ts +239 -0
  100. package/src/inject.ts +796 -0
  101. package/src/interception-proxy.ts +127 -0
  102. package/src/interceptor-chain.ts +268 -0
  103. package/src/interceptor.ts +430 -0
  104. package/src/invocation.ts +269 -0
  105. package/src/json-types.ts +35 -0
  106. package/src/keys.ts +85 -0
  107. package/src/provider.ts +37 -0
  108. package/src/resolution-session.ts +414 -0
  109. package/src/resolver.ts +282 -0
  110. package/src/unique-id.ts +24 -0
  111. package/src/value-promise.ts +318 -0
  112. package/index.d.ts +0 -6
  113. package/index.js +0 -9
  114. package/lib/binding.d.ts +0 -75
  115. package/lib/binding.js +0 -103
  116. package/lib/binding.js.map +0 -1
  117. package/lib/context.d.ts +0 -14
  118. package/lib/context.js +0 -97
  119. package/lib/context.js.map +0 -1
  120. package/lib/index.d.ts +0 -1
  121. package/lib/index.js +0 -12
  122. package/lib/index.js.map +0 -1
  123. package/lib/inject.d.ts +0 -46
  124. package/lib/inject.js +0 -74
  125. package/lib/inject.js.map +0 -1
  126. package/lib/isPromise.d.ts +0 -1
  127. package/lib/isPromise.js +0 -15
  128. package/lib/isPromise.js.map +0 -1
  129. package/lib/reflect.d.ts +0 -39
  130. package/lib/reflect.js +0 -20
  131. package/lib/reflect.js.map +0 -1
  132. package/lib/resolver.d.ts +0 -30
  133. package/lib/resolver.js +0 -129
  134. package/lib/resolver.js.map +0 -1
  135. package/lib/src/binding.d.ts +0 -85
  136. package/lib/src/binding.js +0 -123
  137. package/lib/src/binding.js.map +0 -1
  138. package/lib/src/context.d.ts +0 -14
  139. package/lib/src/context.js +0 -97
  140. package/lib/src/context.js.map +0 -1
  141. package/lib/src/index.d.ts +0 -10
  142. package/lib/src/index.js +0 -27
  143. package/lib/src/index.js.map +0 -1
  144. package/lib/src/inject.d.ts +0 -46
  145. package/lib/src/inject.js +0 -74
  146. package/lib/src/inject.js.map +0 -1
  147. package/lib/src/isPromise.d.ts +0 -1
  148. package/lib/src/isPromise.js +0 -15
  149. package/lib/src/isPromise.js.map +0 -1
  150. package/lib/src/provider.d.ts +0 -29
  151. package/lib/src/provider.js.map +0 -1
  152. package/lib/src/reflect.d.ts +0 -38
  153. package/lib/src/reflect.js +0 -143
  154. package/lib/src/reflect.js.map +0 -1
  155. package/lib/src/resolver.d.ts +0 -34
  156. package/lib/src/resolver.js +0 -144
  157. package/lib/src/resolver.js.map +0 -1
  158. package/lib6/binding.d.ts +0 -75
  159. package/lib6/binding.js +0 -103
  160. package/lib6/binding.js.map +0 -1
  161. package/lib6/context.d.ts +0 -14
  162. package/lib6/context.js +0 -97
  163. package/lib6/context.js.map +0 -1
  164. package/lib6/index.d.ts +0 -1
  165. package/lib6/index.js +0 -12
  166. package/lib6/index.js.map +0 -1
  167. package/lib6/inject.d.ts +0 -46
  168. package/lib6/inject.js +0 -74
  169. package/lib6/inject.js.map +0 -1
  170. package/lib6/isPromise.d.ts +0 -1
  171. package/lib6/isPromise.js +0 -15
  172. package/lib6/isPromise.js.map +0 -1
  173. package/lib6/reflect.d.ts +0 -39
  174. package/lib6/reflect.js +0 -20
  175. package/lib6/reflect.js.map +0 -1
  176. package/lib6/resolver.d.ts +0 -30
  177. package/lib6/resolver.js +0 -129
  178. package/lib6/resolver.js.map +0 -1
  179. package/lib6/src/binding.d.ts +0 -85
  180. package/lib6/src/binding.js +0 -133
  181. package/lib6/src/binding.js.map +0 -1
  182. package/lib6/src/context.d.ts +0 -14
  183. package/lib6/src/context.js +0 -97
  184. package/lib6/src/context.js.map +0 -1
  185. package/lib6/src/index.d.ts +0 -10
  186. package/lib6/src/index.js +0 -27
  187. package/lib6/src/index.js.map +0 -1
  188. package/lib6/src/inject.d.ts +0 -46
  189. package/lib6/src/inject.js +0 -74
  190. package/lib6/src/inject.js.map +0 -1
  191. package/lib6/src/isPromise.d.ts +0 -1
  192. package/lib6/src/isPromise.js +0 -15
  193. package/lib6/src/isPromise.js.map +0 -1
  194. package/lib6/src/provider.d.ts +0 -29
  195. package/lib6/src/provider.js.map +0 -1
  196. package/lib6/src/reflect.d.ts +0 -38
  197. package/lib6/src/reflect.js +0 -143
  198. package/lib6/src/reflect.js.map +0 -1
  199. package/lib6/src/resolver.d.ts +0 -34
  200. package/lib6/src/resolver.js +0 -154
  201. package/lib6/src/resolver.js.map +0 -1
@@ -1,29 +0,0 @@
1
- import { ValueOrPromise } from './binding';
2
- /**
3
- * @exports Provider<T> : interface definition for a provider of a value of type T
4
- * @summary Providers allow binding of a value provider class instead of the value itself
5
- * @example:
6
- * ```ts
7
- * export class DateProvider implements Provider<Date> {
8
- * constructor(@inject('stringDate') private param: String){}
9
- * value(): Date {
10
- * return new Date(param);
11
- * }
12
- * }
13
- * ```
14
- * @example: Binding a context
15
- * ```ts
16
- * ctx.bind('provider_key').toProvider(MyProvider);
17
- * ```
18
- * @example: getting a value dynamically
19
- * ```ts
20
- * ctx.get('provider_key');
21
- * ctx.getBinding('provider_key').getValue();
22
- * ```
23
- */
24
- export interface Provider<T> {
25
- /**
26
- * @returns a value or a promise
27
- */
28
- value(): ValueOrPromise<T>;
29
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/provider.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,wBAAwB;AACxB,+CAA+C;AAC/C,gEAAgE"}
@@ -1,38 +0,0 @@
1
- import 'reflect-metadata';
2
- export declare class NamespacedReflect {
3
- private namespace;
4
- /**
5
- * @param namespace : namespace to bind this reflect context
6
- */
7
- constructor(namespace?: string);
8
- private getMetadataKey(metadataKey);
9
- /**
10
- * define metadata for a target class or it's property/method
11
- */
12
- defineMetadata(metadataKey: string, metadataValue: any, target: Object, propertyKey?: string | symbol): void;
13
- /**
14
- * lookup metadata from a target object and its prototype chain
15
- */
16
- getMetadata(metadataKey: string, target: Object, propertyKey?: string | symbol): any;
17
- /**
18
- * get own metadata for a target object or it's property/method
19
- */
20
- getOwnMetadata(metadataKey: string, target: Object, propertyKey?: string | symbol): any;
21
- /**
22
- * Check if the target has corresponding metadata
23
- * @param metadataKey Key
24
- * @param target Target
25
- * @param propertyKey Optional property key
26
- */
27
- hasMetadata(metadataKey: string, target: Object, propertyKey?: string | symbol): boolean;
28
- hasOwnMetadata(metadataKey: string, target: Object, propertyKey?: string | symbol): boolean;
29
- deleteMetadata(metadataKey: string, target: Object, propertyKey?: string | symbol): boolean;
30
- getMetadataKeys(target: Object, propertyKey?: string | symbol): string[];
31
- getOwnMetadataKeys(target: Object, propertyKey?: string | symbol): string[];
32
- decorate(decorators: (PropertyDecorator | MethodDecorator)[] | ClassDecorator[], target: Object, targetKey?: string | symbol, descriptor?: PropertyDescriptor): PropertyDescriptor;
33
- metadata(metadataKey: string, metadataValue: any): {
34
- (target: Function): void;
35
- (target: Object, targetKey: string | symbol): void;
36
- };
37
- }
38
- export declare const Reflector: NamespacedReflect;
@@ -1,143 +0,0 @@
1
- "use strict";
2
- // Copyright IBM Corp. 2017. All Rights Reserved.
3
- // Node module: @loopback/context
4
- // This file is licensed under the MIT License.
5
- // License text available at https://opensource.org/licenses/MIT
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- require("reflect-metadata");
8
- /* tslint:disable:no-any */
9
- /*
10
- * namespaced wrapper to handle reflect api
11
- */
12
- class NamespacedReflect {
13
- /**
14
- * @param namespace : namespace to bind this reflect context
15
- */
16
- constructor(namespace) {
17
- this.namespace = namespace;
18
- }
19
- getMetadataKey(metadataKey) {
20
- // prefix namespace, if provided, to the metadata key
21
- return this.namespace ? this.namespace + ':' + metadataKey : metadataKey;
22
- }
23
- /**
24
- * define metadata for a target class or it's property/method
25
- */
26
- defineMetadata(metadataKey, metadataValue, target, propertyKey) {
27
- metadataKey = this.getMetadataKey(metadataKey);
28
- if (propertyKey) {
29
- Reflect.defineMetadata(metadataKey, metadataValue, target, propertyKey);
30
- }
31
- else {
32
- Reflect.defineMetadata(metadataKey, metadataValue, target);
33
- }
34
- }
35
- /**
36
- * lookup metadata from a target object and its prototype chain
37
- */
38
- getMetadata(metadataKey, target, propertyKey) {
39
- metadataKey = this.getMetadataKey(metadataKey);
40
- if (propertyKey) {
41
- return Reflect.getMetadata(metadataKey, target, propertyKey);
42
- }
43
- return Reflect.getMetadata(metadataKey, target);
44
- }
45
- /**
46
- * get own metadata for a target object or it's property/method
47
- */
48
- getOwnMetadata(metadataKey, target, propertyKey) {
49
- metadataKey = this.getMetadataKey(metadataKey);
50
- if (propertyKey) {
51
- return Reflect.getOwnMetadata(metadataKey, target, propertyKey);
52
- }
53
- return Reflect.getOwnMetadata(metadataKey, target);
54
- }
55
- /**
56
- * Check if the target has corresponding metadata
57
- * @param metadataKey Key
58
- * @param target Target
59
- * @param propertyKey Optional property key
60
- */
61
- hasMetadata(metadataKey, target, propertyKey) {
62
- metadataKey = this.getMetadataKey(metadataKey);
63
- if (propertyKey) {
64
- return Reflect.hasMetadata(metadataKey, target, propertyKey);
65
- }
66
- return Reflect.hasMetadata(metadataKey, target);
67
- }
68
- hasOwnMetadata(metadataKey, target, propertyKey) {
69
- metadataKey = this.getMetadataKey(metadataKey);
70
- if (propertyKey) {
71
- return Reflect.hasOwnMetadata(metadataKey, target, propertyKey);
72
- }
73
- return Reflect.hasOwnMetadata(metadataKey, target);
74
- }
75
- deleteMetadata(metadataKey, target, propertyKey) {
76
- metadataKey = this.getMetadataKey(metadataKey);
77
- if (propertyKey) {
78
- return Reflect.deleteMetadata(metadataKey, target, propertyKey);
79
- }
80
- return Reflect.deleteMetadata(metadataKey, target);
81
- }
82
- getMetadataKeys(target, propertyKey) {
83
- let keys;
84
- if (propertyKey) {
85
- keys = Reflect.getMetadataKeys(target, propertyKey);
86
- }
87
- else {
88
- keys = Reflect.getMetadataKeys(target);
89
- }
90
- const metaKeys = [];
91
- if (keys) {
92
- if (!this.namespace)
93
- return keys; // No normalization is needed
94
- const prefix = this.namespace + ':';
95
- for (const key of keys) {
96
- if (key.indexOf(prefix) === 0) {
97
- // Only add keys with the namespace prefix
98
- metaKeys.push(key.substr(prefix.length));
99
- }
100
- }
101
- }
102
- return metaKeys;
103
- }
104
- getOwnMetadataKeys(target, propertyKey) {
105
- let keys;
106
- if (propertyKey) {
107
- keys = Reflect.getOwnMetadataKeys(target, propertyKey);
108
- }
109
- else {
110
- keys = Reflect.getOwnMetadataKeys(target);
111
- }
112
- const metaKeys = [];
113
- if (keys) {
114
- if (!this.namespace)
115
- return keys; // No normalization is needed
116
- const prefix = this.namespace + ':';
117
- for (const key of keys) {
118
- if (key.indexOf(prefix) === 0) {
119
- // Only add keys with the namespace prefix
120
- metaKeys.push(key.substr(prefix.length));
121
- }
122
- }
123
- }
124
- return metaKeys;
125
- }
126
- decorate(decorators, target, targetKey, descriptor) {
127
- if (targetKey) {
128
- return Reflect.decorate(decorators, target, targetKey, descriptor);
129
- }
130
- else {
131
- return Reflect.decorate(decorators, target);
132
- }
133
- }
134
- /* tslint:disable-next-line:no-any */
135
- metadata(metadataKey, metadataValue) {
136
- metadataKey = this.getMetadataKey(metadataKey);
137
- return Reflect.metadata(metadataKey, metadataValue);
138
- }
139
- }
140
- exports.NamespacedReflect = NamespacedReflect;
141
- /* tslint:disable-next-line:variable-name */
142
- exports.Reflector = new NamespacedReflect('loopback');
143
- //# sourceMappingURL=reflect.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reflect.js","sourceRoot":"","sources":["../../src/reflect.ts"],"names":[],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- import { Context } from './context';
2
- import { BoundValue, ValueOrPromise } from './binding';
3
- export declare type Constructor<T> = new (...args: any[]) => T;
4
- /**
5
- * Create an instance of a class which constructor has arguments
6
- * decorated with `@inject`.
7
- *
8
- * The function returns a class when all dependencies were
9
- * resolved synchronously, or a Promise otherwise.
10
- *
11
- * @param ctor The class constructor to call.
12
- * @param ctx The context containing values for `@inject` resolution
13
- */
14
- export declare function instantiateClass<T>(ctor: Constructor<T>, ctx: Context): T | Promise<T>;
15
- /**
16
- * Given a function with arguments decorated with `@inject`,
17
- * return the list of arguments resolved using the values
18
- * bound in `ctx`.
19
-
20
- * The function returns an argument array when all dependencies were
21
- * resolved synchronously, or a Promise otherwise.
22
- *
23
- * @param fn The function for which the arguments should be resolved.
24
- * @param ctx The context containing values for `@inject` resolution
25
- */
26
- export declare function resolveInjectedArguments(fn: Function, ctx: Context): BoundValue[] | Promise<BoundValue[]>;
27
- export declare type KV = {
28
- [p: string]: BoundValue;
29
- };
30
- export declare function resolveInjectedProperties(fn: Function, ctx: Context): KV | Promise<KV>;
31
- /**
32
- * resolve a ValueOrPromise<T> to T
33
- */
34
- export declare function resolveValueOrPromise<T>(instanceOrPromise: ValueOrPromise<T>): Promise<T>;
@@ -1,144 +0,0 @@
1
- "use strict";
2
- // Copyright IBM Corp. 2013,2017. All Rights Reserved.
3
- // Node module: loopback
4
- // This file is licensed under the MIT License.
5
- // License text available at https://opensource.org/licenses/MIT
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- const isPromise_1 = require("./isPromise");
8
- const inject_1 = require("./inject");
9
- /**
10
- * Create an instance of a class which constructor has arguments
11
- * decorated with `@inject`.
12
- *
13
- * The function returns a class when all dependencies were
14
- * resolved synchronously, or a Promise otherwise.
15
- *
16
- * @param ctor The class constructor to call.
17
- * @param ctx The context containing values for `@inject` resolution
18
- */
19
- function instantiateClass(ctor, ctx) {
20
- const argsOrPromise = resolveInjectedArguments(ctor, ctx);
21
- const propertiesOrPromise = resolveInjectedProperties(ctor, ctx);
22
- let inst;
23
- if (isPromise_1.isPromise(argsOrPromise)) {
24
- // Instantiate the class asynchronously
25
- inst = argsOrPromise.then(args => new ctor(...args));
26
- }
27
- else {
28
- // Instantiate the class synchronously
29
- inst = new ctor(...argsOrPromise);
30
- }
31
- if (isPromise_1.isPromise(propertiesOrPromise)) {
32
- return propertiesOrPromise.then((props) => {
33
- if (isPromise_1.isPromise(inst)) {
34
- // Inject the properties asynchrounously
35
- return inst.then(obj => Object.assign(obj, props));
36
- }
37
- else {
38
- // Inject the properties synchrounously
39
- return Object.assign(inst, props);
40
- }
41
- });
42
- }
43
- else {
44
- if (isPromise_1.isPromise(inst)) {
45
- // Inject the properties asynchrounously
46
- return inst.then(obj => Object.assign(obj, propertiesOrPromise));
47
- }
48
- else {
49
- // Inject the properties synchrounously
50
- return Object.assign(inst, propertiesOrPromise);
51
- }
52
- }
53
- }
54
- exports.instantiateClass = instantiateClass;
55
- /**
56
- * Given a function with arguments decorated with `@inject`,
57
- * return the list of arguments resolved using the values
58
- * bound in `ctx`.
59
-
60
- * The function returns an argument array when all dependencies were
61
- * resolved synchronously, or a Promise otherwise.
62
- *
63
- * @param fn The function for which the arguments should be resolved.
64
- * @param ctx The context containing values for `@inject` resolution
65
- */
66
- function resolveInjectedArguments(fn, ctx) {
67
- // NOTE: the array may be sparse, i.e.
68
- // Object.keys(injectedArgs).length !== injectedArgs.length
69
- // Example value:
70
- // [ , 'key1', , 'key2']
71
- const injectedArgs = inject_1.describeInjectedArguments(fn);
72
- const args = new Array(fn.length);
73
- let asyncResolvers = undefined;
74
- for (let ix = 0; ix < fn.length; ix++) {
75
- const bindingKey = injectedArgs[ix].bindingKey;
76
- if (!bindingKey) {
77
- throw new Error(`Cannot resolve injected arguments for function ${fn.name}: ` +
78
- `The argument ${ix + 1} was not decorated for dependency injection.`);
79
- }
80
- const binding = ctx.getBinding(bindingKey);
81
- const valueOrPromise = binding.getValue(ctx);
82
- if (isPromise_1.isPromise(valueOrPromise)) {
83
- if (!asyncResolvers)
84
- asyncResolvers = [];
85
- asyncResolvers.push(valueOrPromise.then((v) => args[ix] = v));
86
- }
87
- else {
88
- args[ix] = valueOrPromise;
89
- }
90
- }
91
- if (asyncResolvers) {
92
- return Promise.all(asyncResolvers).then(() => args);
93
- }
94
- else {
95
- return args;
96
- }
97
- }
98
- exports.resolveInjectedArguments = resolveInjectedArguments;
99
- function resolveInjectedProperties(fn, ctx) {
100
- const injectedProperties = inject_1.describeInjectedProperties(fn);
101
- const properties = {};
102
- let asyncResolvers = undefined;
103
- const propertyResolver = (p) => ((v) => properties[p] = v);
104
- for (const p in injectedProperties) {
105
- const bindingKey = injectedProperties[p].bindingKey;
106
- if (!bindingKey) {
107
- throw new Error(`Cannot resolve injected property for class ${fn.name}: ` +
108
- `The property ${p} was not decorated for dependency injection.`);
109
- }
110
- const binding = ctx.getBinding(bindingKey);
111
- const valueOrPromise = binding.getValue(ctx);
112
- if (isPromise_1.isPromise(valueOrPromise)) {
113
- if (!asyncResolvers)
114
- asyncResolvers = [];
115
- asyncResolvers.push(valueOrPromise.then(propertyResolver(p)));
116
- }
117
- else {
118
- properties[p] = valueOrPromise;
119
- }
120
- }
121
- if (asyncResolvers) {
122
- return Promise.all(asyncResolvers).then(() => properties);
123
- }
124
- else {
125
- return properties;
126
- }
127
- }
128
- exports.resolveInjectedProperties = resolveInjectedProperties;
129
- /**
130
- * resolve a ValueOrPromise<T> to T
131
- */
132
- async function resolveValueOrPromise(instanceOrPromise) {
133
- if (isPromise_1.isPromise(instanceOrPromise)) {
134
- const providerPromise = instanceOrPromise;
135
- const instance = await providerPromise;
136
- return instance;
137
- }
138
- else {
139
- const instance = instanceOrPromise;
140
- return instance;
141
- }
142
- }
143
- exports.resolveValueOrPromise = resolveValueOrPromise;
144
- //# sourceMappingURL=resolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/resolver.ts"],"names":[],"mappings":"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"}
package/lib6/binding.d.ts DELETED
@@ -1,75 +0,0 @@
1
- import { Context } from './context';
2
- import { Constructor } from './resolver';
3
- export declare type BoundValue = any;
4
- export declare class Binding {
5
- private readonly _key;
6
- isLocked: boolean;
7
- private _tagName;
8
- valueConstructor: Constructor<BoundValue>;
9
- constructor(_key: string, isLocked?: boolean);
10
- readonly key: string;
11
- readonly tagName: string;
12
- /**
13
- * This is an internal function optimized for performance.
14
- * Users should use `@inject(key)` or `ctx.get(key)` instead.
15
- *
16
- * Get the value bound to this key. Depending on `isSync`, this function returns either:
17
- * - the bound value
18
- * - a promise of the bound value
19
- *
20
- * Consumers wishing to consume sync values directly should use `isPromise`
21
- * to check the type of the returned value to decide how to handle it.
22
- *
23
- * ```
24
- * const result = binding.getValue(ctx);
25
- * if (isPromise(result)) {
26
- * result.then(doSomething)
27
- * } else {
28
- * doSomething(result);
29
- * }
30
- * ```
31
- */
32
- getValue(ctx: Context): BoundValue | Promise<BoundValue>;
33
- lock(): this;
34
- tag(tagName: string): this;
35
- /**
36
- * Bind the key to a constant value.
37
- *
38
- * @param value The bound value.
39
- *
40
- * @example
41
- *
42
- * ```ts
43
- * ctx.bind('appName').to('CodeHub');
44
- * ```
45
- */
46
- to(value: BoundValue): this;
47
- /**
48
- * Bind the key to a computed (dynamic) value.
49
- *
50
- * @param factoryFn The factory function creating the value.
51
- * Both sync and async functions are supported.
52
- *
53
- * @example
54
- *
55
- * ```ts
56
- * // synchronous
57
- * ctx.bind('now').toDynamicValue(() => Date.now());
58
- *
59
- * // asynchronous
60
- * ctx.bind('something').toDynamicValue(
61
- * async () => Promise.delay(10).then(doSomething)
62
- * );
63
- * ```
64
- */
65
- toDynamicValue(factoryFn: () => BoundValue | Promise<BoundValue>): this;
66
- /**
67
- * Bind the key to an instance of the given class.
68
- *
69
- * @param ctor The class constructor to call. Any constructor
70
- * arguments must be annotated with `@inject` so that
71
- * we can resolve them from the context.
72
- */
73
- toClass<T>(ctor: Constructor<T>): this;
74
- unlock(): this;
75
- }
package/lib6/binding.js DELETED
@@ -1,103 +0,0 @@
1
- "use strict";
2
- // Copyright IBM Corp. 2013,2017. All Rights Reserved.
3
- // Node module: loopback
4
- // This file is licensed under the MIT License.
5
- // License text available at https://opensource.org/licenses/MIT
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- const resolver_1 = require("./resolver");
8
- // FIXME(bajtos) The binding class should be parameterized by the value type stored
9
- class Binding {
10
- constructor(_key, isLocked = false) {
11
- this._key = _key;
12
- this.isLocked = isLocked;
13
- }
14
- get key() { return this._key; }
15
- get tagName() { return this._tagName; }
16
- /**
17
- * This is an internal function optimized for performance.
18
- * Users should use `@inject(key)` or `ctx.get(key)` instead.
19
- *
20
- * Get the value bound to this key. Depending on `isSync`, this function returns either:
21
- * - the bound value
22
- * - a promise of the bound value
23
- *
24
- * Consumers wishing to consume sync values directly should use `isPromise`
25
- * to check the type of the returned value to decide how to handle it.
26
- *
27
- * ```
28
- * const result = binding.getValue(ctx);
29
- * if (isPromise(result)) {
30
- * result.then(doSomething)
31
- * } else {
32
- * doSomething(result);
33
- * }
34
- * ```
35
- */
36
- getValue(ctx) {
37
- return Promise.reject(new Error(`No value was configured for binding ${this._key}.`));
38
- }
39
- lock() {
40
- this.isLocked = true;
41
- return this;
42
- }
43
- tag(tagName) {
44
- this._tagName = tagName;
45
- return this;
46
- }
47
- /**
48
- * Bind the key to a constant value.
49
- *
50
- * @param value The bound value.
51
- *
52
- * @example
53
- *
54
- * ```ts
55
- * ctx.bind('appName').to('CodeHub');
56
- * ```
57
- */
58
- to(value) {
59
- this.getValue = () => value;
60
- return this;
61
- }
62
- /**
63
- * Bind the key to a computed (dynamic) value.
64
- *
65
- * @param factoryFn The factory function creating the value.
66
- * Both sync and async functions are supported.
67
- *
68
- * @example
69
- *
70
- * ```ts
71
- * // synchronous
72
- * ctx.bind('now').toDynamicValue(() => Date.now());
73
- *
74
- * // asynchronous
75
- * ctx.bind('something').toDynamicValue(
76
- * async () => Promise.delay(10).then(doSomething)
77
- * );
78
- * ```
79
- */
80
- toDynamicValue(factoryFn) {
81
- // TODO(bajtos) allow factoryFn with @inject arguments
82
- this.getValue = (ctx) => factoryFn();
83
- return this;
84
- }
85
- /**
86
- * Bind the key to an instance of the given class.
87
- *
88
- * @param ctor The class constructor to call. Any constructor
89
- * arguments must be annotated with `@inject` so that
90
- * we can resolve them from the context.
91
- */
92
- toClass(ctor) {
93
- this.getValue = context => resolver_1.instantiateClass(ctor, context);
94
- this.valueConstructor = ctor;
95
- return this;
96
- }
97
- unlock() {
98
- this.isLocked = false;
99
- return this;
100
- }
101
- }
102
- exports.Binding = Binding;
103
- //# sourceMappingURL=binding.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"binding.js","sourceRoot":"","sources":["../src/binding.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,wBAAwB;AACxB,+CAA+C;AAC/C,gEAAgE;;AAGhE,yCAAyD;AAKzD,mFAAmF;AACnF;IAME,YAA6B,IAAY,EAAS,WAAoB,KAAK;QAA9C,SAAI,GAAJ,IAAI,CAAQ;QAAS,aAAQ,GAAR,QAAQ,CAAiB;IAAG,CAAC;IAC/E,IAAI,GAAG,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/B,IAAI,OAAO,KAAK,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEvC;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,GAAY;QACnB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,uCAAuC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,IAAI;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,OAAe;QACjB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;OAUG;IACH,EAAE,CAAC,KAAiB;QAClB,IAAI,CAAC,QAAQ,GAAG,MAAM,KAAK,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,cAAc,CAAC,SAAiD;QAC9D,sDAAsD;QACtD,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,OAAO,CAAI,IAAoB;QAC7B,IAAI,CAAC,QAAQ,GAAG,OAAO,IAAI,2BAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;CACF;AArGD,0BAqGC"}
package/lib6/context.d.ts DELETED
@@ -1,14 +0,0 @@
1
- import { Binding, BoundValue } from './binding';
2
- export declare class Context {
3
- private _parent;
4
- private registry;
5
- constructor(_parent?: Context);
6
- bind(key: string): Binding;
7
- contains(key: string): boolean;
8
- find(pattern?: string): Binding[];
9
- findByTag(pattern: string): Binding[];
10
- protected _mergeWithParent(childList: Binding[], parentList?: Binding[]): Binding[];
11
- get(key: string): Promise<BoundValue>;
12
- getSync(key: string): BoundValue;
13
- getBinding(key: string): Binding;
14
- }