@loopback/context 1.8.1 → 1.12.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.
package/dist/context.js CHANGED
@@ -11,7 +11,7 @@ var __asyncValues = (this && this.__asyncValues) || function (o) {
11
11
  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
12
12
  };
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
- const debugModule = require("debug");
14
+ const debugFactory = require("debug");
15
15
  const events_1 = require("events");
16
16
  const uuid_1 = require("uuid");
17
17
  const binding_1 = require("./binding");
@@ -28,9 +28,13 @@ if (!Symbol.asyncIterator) {
28
28
  // tslint:disable-next-line:no-any
29
29
  Symbol.asyncIterator = Symbol.for('Symbol.asyncIterator');
30
30
  }
31
- // This import must happen after the polyfill
31
+ /**
32
+ * WARNING: This following import must happen after the polyfill. The
33
+ * `auto-import` by an IDE such as VSCode may move the import before the
34
+ * polyfill. It must be then fixed manually.
35
+ */
32
36
  const p_event_1 = require("p-event");
33
- const debug = debugModule('loopback:context');
37
+ const debug = debugFactory('loopback:context');
34
38
  /**
35
39
  * Context provides an implementation of Inversion of Control (IoC) container
36
40
  */
@@ -502,6 +506,29 @@ class Context extends events_1.EventEmitter {
502
506
  return undefined;
503
507
  throw new Error(`The key '${key}' is not bound to any value in context ${this.name}`);
504
508
  }
509
+ /**
510
+ * Find or create a binding for the given key
511
+ * @param key Binding address
512
+ * @param policy Binding creation policy
513
+ */
514
+ findOrCreateBinding(key, policy) {
515
+ let binding;
516
+ if (policy === BindingCreationPolicy.ALWAYS_CREATE) {
517
+ binding = this.bind(key);
518
+ }
519
+ else if (policy === BindingCreationPolicy.NEVER_CREATE) {
520
+ binding = this.getBinding(key);
521
+ }
522
+ else if (this.isBound(key)) {
523
+ // CREATE_IF_NOT_BOUND - the key is bound
524
+ binding = this.getBinding(key);
525
+ }
526
+ else {
527
+ // CREATE_IF_NOT_BOUND - the key is not bound
528
+ binding = this.bind(key);
529
+ }
530
+ return binding;
531
+ }
505
532
  /**
506
533
  * Get the value bound to the given key.
507
534
  *
@@ -531,14 +558,11 @@ class Context extends events_1.EventEmitter {
531
558
  */
532
559
  getValueOrPromise(keyWithPath, optionsOrSession) {
533
560
  const { key, propertyPath } = binding_key_1.BindingKey.parseKeyWithPath(keyWithPath);
534
- // backwards compatibility
535
- if (optionsOrSession instanceof resolution_session_1.ResolutionSession) {
536
- optionsOrSession = { session: optionsOrSession };
537
- }
561
+ optionsOrSession = resolution_session_1.asResolutionOptions(optionsOrSession);
538
562
  const binding = this.getBinding(key, optionsOrSession);
539
563
  if (binding == null)
540
564
  return undefined;
541
- const boundValue = binding.getValue(this, optionsOrSession && optionsOrSession.session);
565
+ const boundValue = binding.getValue(this, optionsOrSession);
542
566
  if (propertyPath === undefined || propertyPath === '') {
543
567
  return boundValue;
544
568
  }
@@ -576,4 +600,24 @@ class ContextSubscription {
576
600
  return this._closed;
577
601
  }
578
602
  }
603
+ /**
604
+ * Policy to control if a binding should be created for the context
605
+ */
606
+ var BindingCreationPolicy;
607
+ (function (BindingCreationPolicy) {
608
+ /**
609
+ * Always create a binding with the key for the context
610
+ */
611
+ BindingCreationPolicy["ALWAYS_CREATE"] = "Always";
612
+ /**
613
+ * Never create a binding for the context. If the key is not bound in the
614
+ * context, throw an error.
615
+ */
616
+ BindingCreationPolicy["NEVER_CREATE"] = "Never";
617
+ /**
618
+ * Create a binding if the key is not bound in the context. Otherwise, return
619
+ * the existing binding.
620
+ */
621
+ BindingCreationPolicy["CREATE_IF_NOT_BOUND"] = "IfNotBound";
622
+ })(BindingCreationPolicy = exports.BindingCreationPolicy || (exports.BindingCreationPolicy = {}));
579
623
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
package/dist/inject.d.ts CHANGED
@@ -1,14 +1,14 @@
1
1
  import { MetadataMap } from '@loopback/metadata';
2
2
  import { BindingFilter, BindingSelector } from './binding-filter';
3
3
  import { BindingAddress } from './binding-key';
4
- import { Context } from './context';
4
+ import { BindingCreationPolicy, Context } from './context';
5
5
  import { ResolutionSession } from './resolution-session';
6
6
  import { BoundValue, ValueOrPromise } from './value-promise';
7
7
  /**
8
8
  * A function to provide resolution of injected values
9
9
  */
10
10
  export interface ResolverFunction {
11
- (ctx: Context, injection: Readonly<Injection>, session?: ResolutionSession): ValueOrPromise<BoundValue>;
11
+ (ctx: Context, injection: Readonly<Injection>, session: ResolutionSession): ValueOrPromise<BoundValue>;
12
12
  }
13
13
  /**
14
14
  * An object to provide metadata for `@inject`
@@ -36,7 +36,7 @@ export interface Injection<ValueType = BoundValue> {
36
36
  member?: string;
37
37
  methodDescriptorOrParameterIndex?: TypedPropertyDescriptor<ValueType> | number;
38
38
  bindingSelector: BindingSelector<ValueType>;
39
- metadata?: InjectionMetadata;
39
+ metadata: InjectionMetadata;
40
40
  resolve?: ResolverFunction;
41
41
  }
42
42
  /**
@@ -67,7 +67,9 @@ export interface Injection<ValueType = BoundValue> {
67
67
  */
68
68
  export declare function inject(bindingSelector: BindingSelector, metadata?: InjectionMetadata, resolve?: ResolverFunction): (target: Object, member: string, methodDescriptorOrParameterIndex?: number | TypedPropertyDescriptor<any> | undefined) => void;
69
69
  /**
70
- * The function injected by `@inject.getter(bindingSelector)`.
70
+ * The function injected by `@inject.getter(bindingSelector)`. It can be used
71
+ * to fetch bound value(s) from the underlying binding(s). The return value will
72
+ * be an array if the `bindingSelector` is a `BindingFilter` function.
71
73
  */
72
74
  export declare type Getter<T> = () => Promise<T>;
73
75
  export declare namespace Getter {
@@ -78,9 +80,26 @@ export declare namespace Getter {
78
80
  function fromValue<T>(value: T): Getter<T>;
79
81
  }
80
82
  /**
81
- * The function injected by `@inject.setter(key)`.
83
+ * The function injected by `@inject.setter(bindingKey)`. It sets the underlying
84
+ * binding to a constant value using `binding.to(value)`.
85
+ *
86
+ * For example:
87
+ *
88
+ * ```ts
89
+ * setterFn('my-value');
90
+ * ```
91
+ * @param value The value for the underlying binding
82
92
  */
83
93
  export declare type Setter<T> = (value: T) => void;
94
+ /**
95
+ * Metadata for `@inject.binding`
96
+ */
97
+ export interface InjectBindingMetadata extends InjectionMetadata {
98
+ /**
99
+ * Controls how the underlying binding is resolved/created
100
+ */
101
+ bindingCreation?: BindingCreationPolicy;
102
+ }
84
103
  export declare namespace inject {
85
104
  /**
86
105
  * Inject a function for getting the actual bound value.
@@ -110,11 +129,37 @@ export declare namespace inject {
110
129
  * @param bindingKey The key of the value we want to set.
111
130
  * @param metadata Optional metadata to help the injection
112
131
  */
113
- const setter: (bindingKey: BindingAddress<unknown>, metadata?: InjectionMetadata | undefined) => (target: Object, member: string, methodDescriptorOrParameterIndex?: number | TypedPropertyDescriptor<any> | undefined) => void;
132
+ const setter: (bindingKey: BindingAddress<unknown>, metadata?: InjectBindingMetadata | undefined) => (target: Object, member: string, methodDescriptorOrParameterIndex?: number | TypedPropertyDescriptor<any> | undefined) => void;
133
+ /**
134
+ * Inject the binding object for the given key. This is useful if a binding
135
+ * needs to be set up beyond just a constant value allowed by
136
+ * `@inject.setter`. The injected binding is found or created based on the
137
+ * `metadata.bindingCreation` option. See `BindingCreationPolicy` for more
138
+ * details.
139
+ *
140
+ * For example:
141
+ *
142
+ * ```ts
143
+ * class MyAuthAction {
144
+ * @inject.binding('current-user', {
145
+ * bindingCreation: BindingCreationPolicy.ALWAYS_CREATE,
146
+ * })
147
+ * private userBinding: Binding<UserProfile>;
148
+ *
149
+ * async authenticate() {
150
+ * this.userBinding.toDynamicValue(() => {...});
151
+ * }
152
+ * }
153
+ * ```
154
+ *
155
+ * @param bindingKey Binding key
156
+ * @param metadata Metadata for the injection
157
+ */
158
+ const binding: (bindingKey: BindingAddress<unknown>, metadata?: InjectBindingMetadata | undefined) => (target: Object, member: string, methodDescriptorOrParameterIndex?: number | TypedPropertyDescriptor<any> | undefined) => void;
114
159
  /**
115
160
  * Inject an array of values by a tag pattern string or regexp
116
161
  *
117
- * @example
162
+ * For example,
118
163
  * ```ts
119
164
  * class AuthenticationManager {
120
165
  * constructor(
@@ -151,6 +196,15 @@ export declare namespace inject {
151
196
  */
152
197
  const context: () => (target: Object, member: string, methodDescriptorOrParameterIndex?: number | TypedPropertyDescriptor<any> | undefined) => void;
153
198
  }
199
+ /**
200
+ * Assert the target type inspected from TypeScript for injection to be the
201
+ * expected type. If the types don't match, an error is thrown.
202
+ * @param injection Injection information
203
+ * @param expectedType Expected type
204
+ * @param expectedTypeName Name of the expected type to be used in the error
205
+ * @returns The name of the target
206
+ */
207
+ export declare function assertTargetType(injection: Readonly<Injection>, expectedType: Function, expectedTypeName?: string): string | undefined;
154
208
  /**
155
209
  * Return an array of injection objects for parameters
156
210
  * @param target The target class for constructor or static methods,
package/dist/inject.js CHANGED
@@ -5,6 +5,7 @@
5
5
  // License text available at https://opensource.org/licenses/MIT
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  const metadata_1 = require("@loopback/metadata");
8
+ const binding_1 = require("./binding");
8
9
  const binding_filter_1 = require("./binding-filter");
9
10
  const context_view_1 = require("./context-view");
10
11
  const resolution_session_1 = require("./resolution-session");
@@ -40,7 +41,7 @@ function inject(bindingSelector, metadata, resolve) {
40
41
  if (typeof bindingSelector === 'function' && !resolve) {
41
42
  resolve = resolveValuesByFilter;
42
43
  }
43
- metadata = Object.assign({ decorator: '@inject' }, metadata);
44
+ const injectionMetadata = Object.assign({ decorator: '@inject' }, metadata);
44
45
  return function markParameterOrPropertyAsInjected(target, member, methodDescriptorOrParameterIndex) {
45
46
  if (typeof methodDescriptorOrParameterIndex === 'number') {
46
47
  // The decorator is applied to a method parameter
@@ -50,7 +51,7 @@ function inject(bindingSelector, metadata, resolve) {
50
51
  member,
51
52
  methodDescriptorOrParameterIndex,
52
53
  bindingSelector,
53
- metadata,
54
+ metadata: injectionMetadata,
54
55
  resolve,
55
56
  },
56
57
  // Do not deep clone the spec as only metadata is mutable and it's
@@ -74,7 +75,7 @@ function inject(bindingSelector, metadata, resolve) {
74
75
  member,
75
76
  methodDescriptorOrParameterIndex,
76
77
  bindingSelector,
77
- metadata,
78
+ metadata: injectionMetadata,
78
79
  resolve,
79
80
  },
80
81
  // Do not deep clone the spec as only metadata is mutable and it's
@@ -139,10 +140,39 @@ var Getter;
139
140
  metadata = Object.assign({ decorator: '@inject.setter' }, metadata);
140
141
  return inject(bindingKey, metadata, resolveAsSetter);
141
142
  };
143
+ /**
144
+ * Inject the binding object for the given key. This is useful if a binding
145
+ * needs to be set up beyond just a constant value allowed by
146
+ * `@inject.setter`. The injected binding is found or created based on the
147
+ * `metadata.bindingCreation` option. See `BindingCreationPolicy` for more
148
+ * details.
149
+ *
150
+ * For example:
151
+ *
152
+ * ```ts
153
+ * class MyAuthAction {
154
+ * @inject.binding('current-user', {
155
+ * bindingCreation: BindingCreationPolicy.ALWAYS_CREATE,
156
+ * })
157
+ * private userBinding: Binding<UserProfile>;
158
+ *
159
+ * async authenticate() {
160
+ * this.userBinding.toDynamicValue(() => {...});
161
+ * }
162
+ * }
163
+ * ```
164
+ *
165
+ * @param bindingKey Binding key
166
+ * @param metadata Metadata for the injection
167
+ */
168
+ inject.binding = function injectBinding(bindingKey, metadata) {
169
+ metadata = Object.assign({ decorator: '@inject.binding' }, metadata);
170
+ return inject(bindingKey, metadata, resolveAsBinding);
171
+ };
142
172
  /**
143
173
  * Inject an array of values by a tag pattern string or regexp
144
174
  *
145
- * @example
175
+ * For example,
146
176
  * ```ts
147
177
  * class AuthenticationManager {
148
178
  * constructor(
@@ -187,41 +217,73 @@ var Getter;
187
217
  return inject('', { decorator: '@inject.context' }, ctx => ctx);
188
218
  };
189
219
  })(inject = exports.inject || (exports.inject = {}));
220
+ /**
221
+ * Assert the target type inspected from TypeScript for injection to be the
222
+ * expected type. If the types don't match, an error is thrown.
223
+ * @param injection Injection information
224
+ * @param expectedType Expected type
225
+ * @param expectedTypeName Name of the expected type to be used in the error
226
+ * @returns The name of the target
227
+ */
228
+ function assertTargetType(injection, expectedType, expectedTypeName) {
229
+ const targetName = resolution_session_1.ResolutionSession.describeInjection(injection).targetName;
230
+ const targetType = inspectTargetType(injection);
231
+ if (targetType && targetType !== expectedType) {
232
+ expectedTypeName = expectedTypeName || expectedType.name;
233
+ throw new Error(`The type of ${targetName} (${targetType.name}) is not ${expectedTypeName}`);
234
+ }
235
+ return targetName;
236
+ }
237
+ exports.assertTargetType = assertTargetType;
238
+ /**
239
+ * Resolver for `@inject.getter`
240
+ * @param ctx
241
+ * @param injection
242
+ * @param session
243
+ */
190
244
  function resolveAsGetter(ctx, injection, session) {
191
- assertTargetIsGetter(injection);
245
+ assertTargetType(injection, Function, 'Getter function');
192
246
  const bindingSelector = injection.bindingSelector;
193
247
  // We need to clone the session for the getter as it will be resolved later
194
- session = resolution_session_1.ResolutionSession.fork(session);
248
+ const forkedSession = resolution_session_1.ResolutionSession.fork(session);
195
249
  return function getter() {
196
250
  return ctx.get(bindingSelector, {
197
- session,
198
- optional: injection.metadata && injection.metadata.optional,
251
+ session: forkedSession,
252
+ optional: injection.metadata.optional,
199
253
  });
200
254
  };
201
255
  }
202
- function assertTargetIsGetter(injection) {
203
- const targetType = inspectTargetType(injection);
204
- if (targetType && targetType !== Function) {
205
- const targetName = resolution_session_1.ResolutionSession.describeInjection(injection)
206
- .targetName;
207
- throw new Error(`The type of ${targetName} (${targetType.name}) is not a Getter function`);
208
- }
209
- }
256
+ /**
257
+ * Resolver for `@inject.setter`
258
+ * @param ctx
259
+ * @param injection
260
+ */
210
261
  function resolveAsSetter(ctx, injection) {
211
- const targetType = inspectTargetType(injection);
212
- const targetName = resolution_session_1.ResolutionSession.describeInjection(injection).targetName;
213
- if (targetType && targetType !== Function) {
214
- throw new Error(`The type of ${targetName} (${targetType.name}) is not a Setter function`);
215
- }
262
+ const targetName = assertTargetType(injection, Function, 'Setter function');
216
263
  const bindingSelector = injection.bindingSelector;
217
264
  if (!binding_filter_1.isBindingAddress(bindingSelector)) {
218
- throw new Error(`@inject.setter for (${targetType.name}) does not allow BindingFilter`);
265
+ throw new Error(`@inject.setter (${targetName}) does not allow BindingFilter.`);
219
266
  }
220
267
  // No resolution session should be propagated into the setter
221
268
  return function setter(value) {
222
- ctx.bind(bindingSelector).to(value);
269
+ const binding = findOrCreateBindingForInjection(ctx, injection);
270
+ binding.to(value);
223
271
  };
224
272
  }
273
+ function resolveAsBinding(ctx, injection) {
274
+ const targetName = assertTargetType(injection, binding_1.Binding);
275
+ const bindingSelector = injection.bindingSelector;
276
+ if (!binding_filter_1.isBindingAddress(bindingSelector)) {
277
+ throw new Error(`@inject.binding (${targetName}) does not allow BindingFilter.`);
278
+ }
279
+ return findOrCreateBindingForInjection(ctx, injection);
280
+ }
281
+ function findOrCreateBindingForInjection(ctx, injection) {
282
+ const bindingCreation = injection.metadata &&
283
+ injection.metadata.bindingCreation;
284
+ const binding = ctx.findOrCreateBinding(injection.bindingSelector, bindingCreation);
285
+ return binding;
286
+ }
225
287
  /**
226
288
  * Return an array of injection objects for parameters
227
289
  * @param target The target class for constructor or static methods,
@@ -248,8 +310,9 @@ function describeInjectedArguments(target, method) {
248
310
  }
249
311
  exports.describeInjectedArguments = describeInjectedArguments;
250
312
  /**
251
- * Inspect the target type
252
- * @param injection
313
+ * Inspect the target type for the injection to find out the corresponding
314
+ * JavaScript type
315
+ * @param injection Injection information
253
316
  */
254
317
  function inspectTargetType(injection) {
255
318
  let type = metadata_1.MetadataInspector.getDesignTypeForProperty(injection.target, injection.member);
@@ -268,19 +331,11 @@ function inspectTargetType(injection) {
268
331
  * @param session Resolution session
269
332
  */
270
333
  function resolveValuesByFilter(ctx, injection, session) {
271
- assertTargetIsArray(injection);
334
+ assertTargetType(injection, Array);
272
335
  const bindingFilter = injection.bindingSelector;
273
336
  const view = new context_view_1.ContextView(ctx, bindingFilter);
274
337
  return view.resolve(session);
275
338
  }
276
- function assertTargetIsArray(injection) {
277
- const targetType = inspectTargetType(injection);
278
- if (targetType !== Array) {
279
- const targetName = resolution_session_1.ResolutionSession.describeInjection(injection)
280
- .targetName;
281
- throw new Error(`The type of ${targetName} (${targetType.name}) is not Array`);
282
- }
283
- }
284
339
  /**
285
340
  * Resolve to a getter function that returns an array of bound values matching
286
341
  * the filter function for `@inject.getter`.
@@ -290,26 +345,18 @@ function assertTargetIsArray(injection) {
290
345
  * @param session Resolution session
291
346
  */
292
347
  function resolveAsGetterByFilter(ctx, injection, session) {
293
- assertTargetIsGetter(injection);
348
+ assertTargetType(injection, Function, 'Getter function');
294
349
  const bindingFilter = injection.bindingSelector;
295
- const view = new context_view_1.ContextView(ctx, bindingFilter);
296
- view.open();
297
- return view.asGetter(session);
350
+ return context_view_1.createViewGetter(ctx, bindingFilter, session);
298
351
  }
299
352
  /**
300
353
  * Resolve to an instance of `ContextView` by the binding filter function
301
354
  * for `@inject.view`
302
355
  * @param ctx Context object
303
356
  * @param injection Injection information
304
- * @param session Resolution session
305
357
  */
306
- function resolveAsContextView(ctx, injection, session) {
307
- const targetType = inspectTargetType(injection);
308
- if (targetType && targetType !== context_view_1.ContextView) {
309
- const targetName = resolution_session_1.ResolutionSession.describeInjection(injection)
310
- .targetName;
311
- throw new Error(`The type of ${targetName} (${targetType.name}) is not ContextView`);
312
- }
358
+ function resolveAsContextView(ctx, injection) {
359
+ assertTargetType(injection, context_view_1.ContextView);
313
360
  const bindingFilter = injection.bindingSelector;
314
361
  const view = new context_view_1.ContextView(ctx, bindingFilter);
315
362
  view.open();
@@ -1 +1 @@
1
- {"version":3,"file":"inject.js","sourceRoot":"","sources":["../src/inject.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inject.js","sourceRoot":"","sources":["../src/inject.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { Binding } from './binding';
2
2
  import { Injection } from './inject';
3
- import { ValueOrPromise, BoundValue } from './value-promise';
3
+ import { BoundValue, ValueOrPromise } from './value-promise';
4
4
  /**
5
5
  * A function to be executed with the resolution session
6
6
  */
7
- export declare type ResolutionAction = (session?: ResolutionSession) => ValueOrPromise<BoundValue>;
7
+ export declare type ResolutionAction = (session: ResolutionSession) => ValueOrPromise<BoundValue>;
8
8
  /**
9
9
  * Wrapper for bindings tracked by resolution sessions
10
10
  */
@@ -71,10 +71,14 @@ export declare class ResolutionSession {
71
71
  * @param injection Injection object
72
72
  */
73
73
  static describeInjection(injection?: Readonly<Injection>): {
74
+ targetName?: undefined;
75
+ bindingSelector?: undefined;
76
+ metadata?: undefined;
77
+ } | {
74
78
  targetName: string;
75
- bindingKey: import("./binding-filter").BindingSelector<any>;
79
+ bindingSelector: import("./binding-filter").BindingSelector<any>;
76
80
  metadata: Object;
77
- } | undefined;
81
+ };
78
82
  /**
79
83
  * Push the injection onto the session
80
84
  * @param injection Injection The current injection
@@ -140,3 +144,12 @@ export interface ResolutionOptions {
140
144
  */
141
145
  optional?: boolean;
142
146
  }
147
+ /**
148
+ * Resolution options or session
149
+ */
150
+ export declare type ResolutionOptionsOrSession = ResolutionOptions | ResolutionSession;
151
+ /**
152
+ * Normalize ResolutionOptionsOrSession to ResolutionOptions
153
+ * @param optionsOrSession resolution options or session
154
+ */
155
+ export declare function asResolutionOptions(optionsOrSession?: ResolutionOptionsOrSession): ResolutionOptions;
@@ -4,9 +4,9 @@
4
4
  // This file is licensed under the MIT License.
5
5
  // License text available at https://opensource.org/licenses/MIT
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- const value_promise_1 = require("./value-promise");
8
- const debugModule = require("debug");
9
7
  const metadata_1 = require("@loopback/metadata");
8
+ const debugModule = require("debug");
9
+ const value_promise_1 = require("./value-promise");
10
10
  const debugSession = debugModule('loopback:context:resolver:session');
11
11
  const getTargetName = metadata_1.DecoratorFactory.getTargetName;
12
12
  /**
@@ -95,11 +95,11 @@ class ResolutionSession {
95
95
  static describeInjection(injection) {
96
96
  /* istanbul ignore if */
97
97
  if (injection == null)
98
- return undefined;
98
+ return {};
99
99
  const name = getTargetName(injection.target, injection.member, injection.methodDescriptorOrParameterIndex);
100
100
  return {
101
101
  targetName: name,
102
- bindingKey: injection.bindingSelector,
102
+ bindingSelector: injection.bindingSelector,
103
103
  // Cast to Object so that we don't have to expose InjectionMetadata
104
104
  metadata: injection.metadata,
105
105
  };
@@ -238,4 +238,16 @@ class ResolutionSession {
238
238
  }
239
239
  }
240
240
  exports.ResolutionSession = ResolutionSession;
241
+ /**
242
+ * Normalize ResolutionOptionsOrSession to ResolutionOptions
243
+ * @param optionsOrSession resolution options or session
244
+ */
245
+ function asResolutionOptions(optionsOrSession) {
246
+ // backwards compatibility
247
+ if (optionsOrSession instanceof ResolutionSession) {
248
+ return { session: optionsOrSession };
249
+ }
250
+ return optionsOrSession || {};
251
+ }
252
+ exports.asResolutionOptions = asResolutionOptions;
241
253
  //# sourceMappingURL=resolution-session.js.map