@loopback/context 3.11.1 → 3.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/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [3.12.0](https://github.com/strongloop/loopback-next/compare/@loopback/context@3.11.1...@loopback/context@3.12.0) (2020-10-07)
7
+
8
+
9
+ ### Features
10
+
11
+ * **context:** introduce new binding scopes ([9916cfd](https://github.com/strongloop/loopback-next/commit/9916cfd4449a870f7a3378e2e674957aed7c1626))
12
+
13
+
14
+
15
+
16
+
6
17
  ## [3.11.1](https://github.com/strongloop/loopback-next/compare/@loopback/context@3.11.0...@loopback/context@3.11.1) (2020-09-17)
7
18
 
8
19
  **Note:** Version bump only for package @loopback/context
package/dist/binding.d.ts CHANGED
@@ -30,6 +30,10 @@ export declare enum BindingScope {
30
30
  */
31
31
  TRANSIENT = "Transient",
32
32
  /**
33
+ * @deprecated Finer-grained scopes such as `APPLICATION`, `SERVER`, or
34
+ * `REQUEST` should be used instead to ensure the scope of sharing of resolved
35
+ * binding values.
36
+ *
33
37
  * The binding provides a value as a singleton within each local context. The
34
38
  * value is calculated only once per context and cached for subsequential
35
39
  * uses. Child contexts have their own value and do not share with their
@@ -51,6 +55,7 @@ export declare enum BindingScope {
51
55
  * 3. `'b1'` is resolved in `app` but not in `req2`, a new value `2` is
52
56
  * calculated and used for `req2` afterward
53
57
  * - req2.get('b1') ==> 2 (always)
58
+ *
54
59
  */
55
60
  CONTEXT = "Context",
56
61
  /**
@@ -74,7 +79,53 @@ export declare enum BindingScope {
74
79
  * 3. `'b1'` is resolved in `app`, reuse it for `req2`
75
80
  * - req2.get('b1') ==> 0 (always)
76
81
  */
77
- SINGLETON = "Singleton"
82
+ SINGLETON = "Singleton",
83
+ /**
84
+ * Application scope
85
+ *
86
+ * @remarks
87
+ * The binding provides an application-scoped value within the context
88
+ * hierarchy. Resolved value for this binding will be cached and shared for
89
+ * the same application context (denoted by its scope property set to
90
+ * `BindingScope.APPLICATION`).
91
+ *
92
+ */
93
+ APPLICATION = "Application",
94
+ /**
95
+ * Server scope
96
+ *
97
+ * @remarks
98
+ * The binding provides an server-scoped value within the context hierarchy.
99
+ * Resolved value for this binding will be cached and shared for the same
100
+ * server context (denoted by its scope property set to
101
+ * `BindingScope.SERVER`).
102
+ *
103
+ * It's possible that an application has more than one servers configured,
104
+ * such as a `RestServer` and a `GrpcServer`. Both server contexts are created
105
+ * with `scope` set to `BindingScope.SERVER`. Depending on where a binding
106
+ * is resolved:
107
+ * - If the binding is resolved from the RestServer or below, it will be
108
+ * cached using the RestServer context as the key.
109
+ * - If the binding is resolved from the GrpcServer or below, it will be
110
+ * cached using the GrpcServer context as the key.
111
+ *
112
+ * The same binding can resolved/shared/cached for all servers, each of which
113
+ * has its own value for the binding.
114
+ */
115
+ SERVER = "Server",
116
+ /**
117
+ * Request scope
118
+ *
119
+ * @remarks
120
+ * The binding provides an request-scoped value within the context hierarchy.
121
+ * Resolved value for this binding will be cached and shared for the same
122
+ * request context (denoted by its scope property set to
123
+ * `BindingScope.REQUEST`).
124
+ *
125
+ * The `REQUEST` scope is very useful for controllers, services and artifacts
126
+ * that want to have a single instance/value for a given request.
127
+ */
128
+ REQUEST = "Request"
78
129
  }
79
130
  /**
80
131
  * Type of the binding source
@@ -245,7 +296,7 @@ export declare class Binding<T = BoundValue> extends EventEmitter {
245
296
  constructor(key: BindingAddress<T>, isLocked?: boolean);
246
297
  /**
247
298
  * Cache the resolved value by the binding scope
248
- * @param ctx - The current context
299
+ * @param resolutionCtx - The resolution context
249
300
  * @param result - The calculated value for the binding
250
301
  */
251
302
  private _cacheValue;
@@ -255,7 +306,7 @@ export declare class Binding<T = BoundValue> extends EventEmitter {
255
306
  private _clearCache;
256
307
  /**
257
308
  * Invalidate the binding cache so that its value will be reloaded next time.
258
- * This is useful to force reloading a singleton when its configuration or
309
+ * This is useful to force reloading a cached value when its configuration or
259
310
  * dependencies are changed.
260
311
  * **WARNING**: The state held in the cached value will be gone.
261
312
  *
@@ -296,6 +347,12 @@ export declare class Binding<T = BoundValue> extends EventEmitter {
296
347
  * @param options - Optional options for binding and dependency resolution
297
348
  */
298
349
  getValue(ctx: Context, options?: ResolutionOptions): ValueOrPromise<T | undefined>;
350
+ /**
351
+ * Locate and validate the resolution context
352
+ * @param ctx - Current context
353
+ * @param options - Resolution options
354
+ */
355
+ private getResolutionContext;
299
356
  /**
300
357
  * Lock the binding so that it cannot be rebound
301
358
  */
package/dist/binding.js CHANGED
@@ -42,6 +42,10 @@ var BindingScope;
42
42
  */
43
43
  BindingScope["TRANSIENT"] = "Transient";
44
44
  /**
45
+ * @deprecated Finer-grained scopes such as `APPLICATION`, `SERVER`, or
46
+ * `REQUEST` should be used instead to ensure the scope of sharing of resolved
47
+ * binding values.
48
+ *
45
49
  * The binding provides a value as a singleton within each local context. The
46
50
  * value is calculated only once per context and cached for subsequential
47
51
  * uses. Child contexts have their own value and do not share with their
@@ -63,6 +67,7 @@ var BindingScope;
63
67
  * 3. `'b1'` is resolved in `app` but not in `req2`, a new value `2` is
64
68
  * calculated and used for `req2` afterward
65
69
  * - req2.get('b1') ==> 2 (always)
70
+ *
66
71
  */
67
72
  BindingScope["CONTEXT"] = "Context";
68
73
  /**
@@ -87,6 +92,58 @@ var BindingScope;
87
92
  * - req2.get('b1') ==> 0 (always)
88
93
  */
89
94
  BindingScope["SINGLETON"] = "Singleton";
95
+ /*
96
+ * The following scopes are checked against the context hierarchy to find
97
+ * the first matching context for a given scope in the chain. Resolved binding
98
+ * values will be cached and shared on the scoped context. This ensures a
99
+ * binding to have the same value for the scoped context.
100
+ */
101
+ /**
102
+ * Application scope
103
+ *
104
+ * @remarks
105
+ * The binding provides an application-scoped value within the context
106
+ * hierarchy. Resolved value for this binding will be cached and shared for
107
+ * the same application context (denoted by its scope property set to
108
+ * `BindingScope.APPLICATION`).
109
+ *
110
+ */
111
+ BindingScope["APPLICATION"] = "Application";
112
+ /**
113
+ * Server scope
114
+ *
115
+ * @remarks
116
+ * The binding provides an server-scoped value within the context hierarchy.
117
+ * Resolved value for this binding will be cached and shared for the same
118
+ * server context (denoted by its scope property set to
119
+ * `BindingScope.SERVER`).
120
+ *
121
+ * It's possible that an application has more than one servers configured,
122
+ * such as a `RestServer` and a `GrpcServer`. Both server contexts are created
123
+ * with `scope` set to `BindingScope.SERVER`. Depending on where a binding
124
+ * is resolved:
125
+ * - If the binding is resolved from the RestServer or below, it will be
126
+ * cached using the RestServer context as the key.
127
+ * - If the binding is resolved from the GrpcServer or below, it will be
128
+ * cached using the GrpcServer context as the key.
129
+ *
130
+ * The same binding can resolved/shared/cached for all servers, each of which
131
+ * has its own value for the binding.
132
+ */
133
+ BindingScope["SERVER"] = "Server";
134
+ /**
135
+ * Request scope
136
+ *
137
+ * @remarks
138
+ * The binding provides an request-scoped value within the context hierarchy.
139
+ * Resolved value for this binding will be cached and shared for the same
140
+ * request context (denoted by its scope property set to
141
+ * `BindingScope.REQUEST`).
142
+ *
143
+ * The `REQUEST` scope is very useful for controllers, services and artifacts
144
+ * that want to have a single instance/value for a given request.
145
+ */
146
+ BindingScope["REQUEST"] = "Request";
90
147
  })(BindingScope = exports.BindingScope || (exports.BindingScope = {}));
91
148
  /**
92
149
  * Type of the binding source
@@ -190,22 +247,16 @@ class Binding extends events_1.EventEmitter {
190
247
  }
191
248
  /**
192
249
  * Cache the resolved value by the binding scope
193
- * @param ctx - The current context
250
+ * @param resolutionCtx - The resolution context
194
251
  * @param result - The calculated value for the binding
195
252
  */
196
- _cacheValue(ctx, result) {
253
+ _cacheValue(resolutionCtx, result) {
197
254
  // Initialize the cache as a weakmap keyed by context
198
255
  if (!this._cache)
199
256
  this._cache = new WeakMap();
200
- if (this.scope === BindingScope.SINGLETON) {
201
- // Cache the value
202
- this._cache.set(ctx.getOwnerContext(this.key), result);
203
- }
204
- else if (this.scope === BindingScope.CONTEXT) {
205
- // Cache the value at the current context
206
- this._cache.set(ctx, result);
257
+ if (this.scope !== BindingScope.TRANSIENT) {
258
+ this._cache.set(resolutionCtx, result);
207
259
  }
208
- // Do not cache for `TRANSIENT`
209
260
  return result;
210
261
  }
211
262
  /**
@@ -219,7 +270,7 @@ class Binding extends events_1.EventEmitter {
219
270
  }
220
271
  /**
221
272
  * Invalidate the binding cache so that its value will be reloaded next time.
222
- * This is useful to force reloading a singleton when its configuration or
273
+ * This is useful to force reloading a cached value when its configuration or
223
274
  * dependencies are changed.
224
275
  * **WARNING**: The state held in the cached value will be gone.
225
276
  *
@@ -228,17 +279,12 @@ class Binding extends events_1.EventEmitter {
228
279
  refresh(ctx) {
229
280
  if (!this._cache)
230
281
  return;
231
- if (this.scope === BindingScope.SINGLETON) {
232
- // Cache the value
233
- const ownerCtx = ctx.getOwnerContext(this.key);
234
- if (ownerCtx != null) {
235
- this._cache.delete(ownerCtx);
282
+ if (this.scope !== BindingScope.TRANSIENT) {
283
+ const resolutionCtx = ctx.getResolutionContext(this);
284
+ if (resolutionCtx != null) {
285
+ this._cache.delete(resolutionCtx);
236
286
  }
237
287
  }
238
- else if (this.scope === BindingScope.CONTEXT) {
239
- // Cache the value at the current context
240
- this._cache.delete(ctx);
241
- }
242
288
  }
243
289
  // Implementation
244
290
  getValue(ctx, optionsOrSession) {
@@ -246,23 +292,20 @@ class Binding extends events_1.EventEmitter {
246
292
  if (debug.enabled) {
247
293
  debug('Get value for binding %s', this.key);
248
294
  }
295
+ const options = resolution_session_1.asResolutionOptions(optionsOrSession);
296
+ const resolutionCtx = this.getResolutionContext(ctx, options);
297
+ if (resolutionCtx == null)
298
+ return undefined;
249
299
  // First check cached value for non-transient
250
300
  if (this._cache) {
251
- if (this.scope === BindingScope.SINGLETON) {
252
- const ownerCtx = ctx.getOwnerContext(this.key);
253
- if (ownerCtx && this._cache.has(ownerCtx)) {
254
- return this._cache.get(ownerCtx);
255
- }
256
- }
257
- else if (this.scope === BindingScope.CONTEXT) {
258
- if (this._cache.has(ctx)) {
259
- return this._cache.get(ctx);
301
+ if (this.scope !== BindingScope.TRANSIENT) {
302
+ if (resolutionCtx && this._cache.has(resolutionCtx)) {
303
+ return this._cache.get(resolutionCtx);
260
304
  }
261
305
  }
262
306
  }
263
- const options = resolution_session_1.asResolutionOptions(optionsOrSession);
264
- const resolutionCtx = {
265
- context: ctx,
307
+ const resolutionMetadata = {
308
+ context: resolutionCtx,
266
309
  binding: this,
267
310
  options,
268
311
  };
@@ -272,16 +315,49 @@ class Binding extends events_1.EventEmitter {
272
315
  // We already test `this._getValue` is a function. It's safe to assert
273
316
  // that `this._getValue` is not undefined.
274
317
  return this._getValue({
275
- ...resolutionCtx,
318
+ ...resolutionMetadata,
276
319
  options: optionsWithSession,
277
320
  });
278
321
  }, this, options.session);
279
- return this._cacheValue(ctx, result);
322
+ return this._cacheValue(resolutionCtx, result);
280
323
  }
281
324
  // `@inject.binding` adds a binding without _getValue
282
325
  if (options.optional)
283
326
  return undefined;
284
- return Promise.reject(new resolution_session_1.ResolutionError(`No value was configured for binding ${this.key}.`, resolutionCtx));
327
+ return Promise.reject(new resolution_session_1.ResolutionError(`No value was configured for binding ${this.key}.`, resolutionMetadata));
328
+ }
329
+ /**
330
+ * Locate and validate the resolution context
331
+ * @param ctx - Current context
332
+ * @param options - Resolution options
333
+ */
334
+ getResolutionContext(ctx, options) {
335
+ const resolutionCtx = ctx.getResolutionContext(this);
336
+ switch (this.scope) {
337
+ case BindingScope.APPLICATION:
338
+ case BindingScope.SERVER:
339
+ case BindingScope.REQUEST:
340
+ if (resolutionCtx == null) {
341
+ const msg = `Binding "${this.key}" in context "${ctx.name}" cannot` +
342
+ ` be resolved in scope "${this.scope}"`;
343
+ if (options.optional) {
344
+ debug(msg);
345
+ return undefined;
346
+ }
347
+ throw new Error(msg);
348
+ }
349
+ }
350
+ const ownerCtx = ctx.getOwnerContext(this.key);
351
+ if (ownerCtx != null && !ownerCtx.isVisibleTo(resolutionCtx)) {
352
+ const msg = `Resolution context "${resolutionCtx === null || resolutionCtx === void 0 ? void 0 : resolutionCtx.name}" does not have ` +
353
+ `visibility to binding "${this.key} (scope:${this.scope})" in context "${ownerCtx.name}"`;
354
+ if (options.optional) {
355
+ debug(msg);
356
+ return undefined;
357
+ }
358
+ throw new Error(msg);
359
+ }
360
+ return resolutionCtx;
285
361
  }
286
362
  /**
287
363
  * Lock the binding so that it cannot be rebound
@@ -1 +1 @@
1
- {"version":3,"file":"binding.js","sourceRoot":"","sources":["../src/binding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"binding.js","sourceRoot":"","sources":["../src/binding.ts"],"names":[],"mappings":"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"}
package/dist/context.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" />
2
2
  import { Debugger } from 'debug';
3
3
  import { EventEmitter } from 'events';
4
- import { Binding, BindingInspectOptions, BindingTag } from './binding';
4
+ import { Binding, BindingInspectOptions, BindingScope, BindingTag } from './binding';
5
5
  import { ConfigurationResolver } from './binding-config';
6
6
  import { BindingFilter } from './binding-filter';
7
7
  import { BindingAddress } from './binding-key';
@@ -56,6 +56,10 @@ export declare class Context extends EventEmitter {
56
56
  * ```
57
57
  */
58
58
  protected _debug: Debugger;
59
+ /**
60
+ * Scope for binding resolution
61
+ */
62
+ scope: BindingScope;
59
63
  /**
60
64
  * Create a new context.
61
65
  *
@@ -236,10 +240,27 @@ export declare class Context extends EventEmitter {
236
240
  */
237
241
  isBound(key: BindingAddress): boolean;
238
242
  /**
239
- * Get the owning context for a binding key
240
- * @param key - Binding key
243
+ * Get the owning context for a binding or its key
244
+ * @param keyOrBinding - Binding object or key
245
+ */
246
+ getOwnerContext(keyOrBinding: BindingAddress | Readonly<Binding<unknown>>): Context | undefined;
247
+ /**
248
+ * Get the context matching the scope
249
+ * @param scope - Binding scope
250
+ */
251
+ getScopedContext(scope: BindingScope.APPLICATION | BindingScope.SERVER | BindingScope.REQUEST): Context | undefined;
252
+ /**
253
+ * Locate the resolution context for the given binding. Only bindings in the
254
+ * resolution context and its ancestors are visible as dependencies to resolve
255
+ * the given binding
256
+ * @param binding - Binding object
257
+ */
258
+ getResolutionContext(binding: Readonly<Binding<unknown>>): Context | undefined;
259
+ /**
260
+ * Check if this context is visible (same or ancestor) to the given one
261
+ * @param ctx - Another context object
241
262
  */
242
- getOwnerContext(key: BindingAddress): Context | undefined;
263
+ isVisibleTo(ctx: Context): boolean;
243
264
  /**
244
265
  * Find bindings using a key pattern or filter function
245
266
  * @param pattern - A filter function, a regexp or a wildcard pattern with
package/dist/context.js CHANGED
@@ -51,6 +51,10 @@ class Context extends events_1.EventEmitter {
51
51
  * Key to binding map as the internal registry
52
52
  */
53
53
  this.registry = new Map();
54
+ /**
55
+ * Scope for binding resolution
56
+ */
57
+ this.scope = binding_1.BindingScope.CONTEXT;
54
58
  // The number of listeners can grow with the number of child contexts
55
59
  // For example, each request can add a listener to the RestServer and the
56
60
  // listener is removed when the request processing is finished.
@@ -349,17 +353,89 @@ class Context extends events_1.EventEmitter {
349
353
  return false;
350
354
  }
351
355
  /**
352
- * Get the owning context for a binding key
353
- * @param key - Binding key
356
+ * Get the owning context for a binding or its key
357
+ * @param keyOrBinding - Binding object or key
354
358
  */
355
- getOwnerContext(key) {
356
- if (this.contains(key))
359
+ getOwnerContext(keyOrBinding) {
360
+ let key;
361
+ if (keyOrBinding instanceof binding_1.Binding) {
362
+ key = keyOrBinding.key;
363
+ }
364
+ else {
365
+ key = keyOrBinding;
366
+ }
367
+ if (this.contains(key)) {
368
+ if (keyOrBinding instanceof binding_1.Binding) {
369
+ // Check if the contained binding is the same
370
+ if (this.registry.get(key.toString()) === keyOrBinding) {
371
+ return this;
372
+ }
373
+ return undefined;
374
+ }
357
375
  return this;
376
+ }
358
377
  if (this._parent) {
359
378
  return this._parent.getOwnerContext(key);
360
379
  }
361
380
  return undefined;
362
381
  }
382
+ /**
383
+ * Get the context matching the scope
384
+ * @param scope - Binding scope
385
+ */
386
+ getScopedContext(scope) {
387
+ if (this.scope === scope)
388
+ return this;
389
+ if (this._parent) {
390
+ return this._parent.getScopedContext(scope);
391
+ }
392
+ return undefined;
393
+ }
394
+ /**
395
+ * Locate the resolution context for the given binding. Only bindings in the
396
+ * resolution context and its ancestors are visible as dependencies to resolve
397
+ * the given binding
398
+ * @param binding - Binding object
399
+ */
400
+ getResolutionContext(binding) {
401
+ let resolutionCtx;
402
+ switch (binding.scope) {
403
+ case binding_1.BindingScope.SINGLETON:
404
+ // Use the owner context
405
+ return this.getOwnerContext(binding.key);
406
+ case binding_1.BindingScope.TRANSIENT:
407
+ case binding_1.BindingScope.CONTEXT:
408
+ // Use the current context
409
+ return this;
410
+ case binding_1.BindingScope.REQUEST:
411
+ resolutionCtx = this.getScopedContext(binding.scope);
412
+ if (resolutionCtx != null) {
413
+ return resolutionCtx;
414
+ }
415
+ else {
416
+ // If no `REQUEST` scope exists in the chain, fall back to the current
417
+ // context
418
+ this.debug('No context is found for binding "%s (scope=%s)". Fall back to the current context.', binding.key, binding.scope);
419
+ return this;
420
+ }
421
+ default:
422
+ // Use the scoped context
423
+ return this.getScopedContext(binding.scope);
424
+ }
425
+ }
426
+ /**
427
+ * Check if this context is visible (same or ancestor) to the given one
428
+ * @param ctx - Another context object
429
+ */
430
+ isVisibleTo(ctx) {
431
+ let current = ctx;
432
+ while (current != null) {
433
+ if (current === this)
434
+ return true;
435
+ current = current._parent;
436
+ }
437
+ return false;
438
+ }
363
439
  /**
364
440
  * Find bindings using a key pattern or filter function
365
441
  * @param pattern - A filter function, a regexp or a wildcard pattern with
@@ -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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"}
@@ -19,6 +19,7 @@ export declare type Next = () => ValueOrPromise<NonVoid>;
19
19
  * It serves as the base interface for various types of interceptors, such
20
20
  * as method invocation interceptor or request/response processing interceptor.
21
21
  *
22
+ * @remarks
22
23
  * We choose `NonVoid` as the return type to avoid possible bugs that an
23
24
  * interceptor forgets to return the value from `next()`. For example, the code
24
25
  * below will fail to compile.
@@ -1 +1 @@
1
- {"version":3,"file":"interceptor-chain.js","sourceRoot":"","sources":["../src/interceptor-chain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interceptor-chain.js","sourceRoot":"","sources":["../src/interceptor-chain.ts"],"names":[],"mappings":"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"}
package/dist/resolver.js CHANGED
@@ -9,7 +9,6 @@ const tslib_1 = require("tslib");
9
9
  const metadata_1 = require("@loopback/metadata");
10
10
  const assert_1 = tslib_1.__importDefault(require("assert"));
11
11
  const debug_1 = tslib_1.__importDefault(require("debug"));
12
- const binding_1 = require("./binding");
13
12
  const binding_filter_1 = require("./binding-filter");
14
13
  const inject_1 = require("./inject");
15
14
  const resolution_session_1 = require("./resolution-session");
@@ -64,9 +63,8 @@ exports.instantiateClass = instantiateClass;
64
63
  */
65
64
  function resolveContext(ctx, injection, session) {
66
65
  const currentBinding = session === null || session === void 0 ? void 0 : session.currentBinding;
67
- if (currentBinding == null ||
68
- currentBinding.scope !== binding_1.BindingScope.SINGLETON) {
69
- // No current binding or its scope is not `SINGLETON`
66
+ if (currentBinding == null) {
67
+ // No current binding
70
68
  return ctx;
71
69
  }
72
70
  const isConstructorOrPropertyInjection =
@@ -75,9 +73,9 @@ function resolveContext(ctx, injection, session) {
75
73
  // property injection
76
74
  typeof injection.methodDescriptorOrParameterIndex !== 'number';
77
75
  if (isConstructorOrPropertyInjection) {
78
- // Set context to the owner context of the current binding for constructor
79
- // or property injections against a singleton
80
- ctx = ctx.getOwnerContext(currentBinding.key);
76
+ // Set context to the resolution context of the current binding for
77
+ // constructor or property injections against a singleton
78
+ ctx = ctx.getResolutionContext(currentBinding);
81
79
  }
82
80
  return ctx;
83
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@loopback/context",
3
- "version": "3.11.1",
3
+ "version": "3.12.0",
4
4
  "description": "Facilities to manage artifacts and their dependencies in your Node.js applications. The module exposes TypeScript/JavaScript APIs and decorators to register artifacts, declare dependencies, and resolve artifacts by keys. It also serves as an IoC container to support dependency injection",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "engines": {
8
- "node": ">=10.16"
8
+ "node": "^10.16 || 12 || 14"
9
9
  },
10
10
  "scripts": {
11
11
  "acceptance": "lb-mocha \"dist/__tests__/acceptance/**/*.js\"",
@@ -23,18 +23,18 @@
23
23
  "access": "public"
24
24
  },
25
25
  "dependencies": {
26
- "@loopback/metadata": "^3.0.1",
26
+ "@loopback/metadata": "^3.0.2",
27
27
  "@types/debug": "^4.1.5",
28
- "debug": "^4.1.1",
28
+ "debug": "^4.2.0",
29
29
  "hyperid": "^2.0.5",
30
30
  "p-event": "^4.2.0",
31
- "tslib": "^2.0.1",
32
- "uuid": "^8.3.0"
31
+ "tslib": "^2.0.2",
32
+ "uuid": "^8.3.1"
33
33
  },
34
34
  "devDependencies": {
35
- "@loopback/build": "^6.2.4",
36
- "@loopback/eslint-config": "^10.0.0",
37
- "@loopback/testlab": "^3.2.6",
35
+ "@loopback/build": "^6.2.5",
36
+ "@loopback/eslint-config": "^10.0.1",
37
+ "@loopback/testlab": "^3.2.7",
38
38
  "@types/bluebird": "^3.5.32",
39
39
  "@types/node": "^10.17.35",
40
40
  "@types/uuid": "^8.3.0",
@@ -60,5 +60,5 @@
60
60
  "url": "https://github.com/strongloop/loopback-next.git",
61
61
  "directory": "packages/context"
62
62
  },
63
- "gitHead": "79327fd7e68ebb05be0aa689f4986b54e2a99a6b"
63
+ "gitHead": "390f2794d10eea3d969ae417963af815ce1bc417"
64
64
  }
package/src/binding.ts CHANGED
@@ -58,6 +58,10 @@ export enum BindingScope {
58
58
  TRANSIENT = 'Transient',
59
59
 
60
60
  /**
61
+ * @deprecated Finer-grained scopes such as `APPLICATION`, `SERVER`, or
62
+ * `REQUEST` should be used instead to ensure the scope of sharing of resolved
63
+ * binding values.
64
+ *
61
65
  * The binding provides a value as a singleton within each local context. The
62
66
  * value is calculated only once per context and cached for subsequential
63
67
  * uses. Child contexts have their own value and do not share with their
@@ -79,6 +83,7 @@ export enum BindingScope {
79
83
  * 3. `'b1'` is resolved in `app` but not in `req2`, a new value `2` is
80
84
  * calculated and used for `req2` afterward
81
85
  * - req2.get('b1') ==> 2 (always)
86
+ *
82
87
  */
83
88
  CONTEXT = 'Context',
84
89
 
@@ -104,6 +109,62 @@ export enum BindingScope {
104
109
  * - req2.get('b1') ==> 0 (always)
105
110
  */
106
111
  SINGLETON = 'Singleton',
112
+
113
+ /*
114
+ * The following scopes are checked against the context hierarchy to find
115
+ * the first matching context for a given scope in the chain. Resolved binding
116
+ * values will be cached and shared on the scoped context. This ensures a
117
+ * binding to have the same value for the scoped context.
118
+ */
119
+
120
+ /**
121
+ * Application scope
122
+ *
123
+ * @remarks
124
+ * The binding provides an application-scoped value within the context
125
+ * hierarchy. Resolved value for this binding will be cached and shared for
126
+ * the same application context (denoted by its scope property set to
127
+ * `BindingScope.APPLICATION`).
128
+ *
129
+ */
130
+ APPLICATION = 'Application',
131
+
132
+ /**
133
+ * Server scope
134
+ *
135
+ * @remarks
136
+ * The binding provides an server-scoped value within the context hierarchy.
137
+ * Resolved value for this binding will be cached and shared for the same
138
+ * server context (denoted by its scope property set to
139
+ * `BindingScope.SERVER`).
140
+ *
141
+ * It's possible that an application has more than one servers configured,
142
+ * such as a `RestServer` and a `GrpcServer`. Both server contexts are created
143
+ * with `scope` set to `BindingScope.SERVER`. Depending on where a binding
144
+ * is resolved:
145
+ * - If the binding is resolved from the RestServer or below, it will be
146
+ * cached using the RestServer context as the key.
147
+ * - If the binding is resolved from the GrpcServer or below, it will be
148
+ * cached using the GrpcServer context as the key.
149
+ *
150
+ * The same binding can resolved/shared/cached for all servers, each of which
151
+ * has its own value for the binding.
152
+ */
153
+ SERVER = 'Server',
154
+
155
+ /**
156
+ * Request scope
157
+ *
158
+ * @remarks
159
+ * The binding provides an request-scoped value within the context hierarchy.
160
+ * Resolved value for this binding will be cached and shared for the same
161
+ * request context (denoted by its scope property set to
162
+ * `BindingScope.REQUEST`).
163
+ *
164
+ * The `REQUEST` scope is very useful for controllers, services and artifacts
165
+ * that want to have a single instance/value for a given request.
166
+ */
167
+ REQUEST = 'Request',
107
168
  }
108
169
 
109
170
  /**
@@ -352,23 +413,18 @@ export class Binding<T = BoundValue> extends EventEmitter {
352
413
 
353
414
  /**
354
415
  * Cache the resolved value by the binding scope
355
- * @param ctx - The current context
416
+ * @param resolutionCtx - The resolution context
356
417
  * @param result - The calculated value for the binding
357
418
  */
358
419
  private _cacheValue(
359
- ctx: Context,
420
+ resolutionCtx: Context,
360
421
  result: ValueOrPromise<T>,
361
422
  ): ValueOrPromise<T> {
362
423
  // Initialize the cache as a weakmap keyed by context
363
424
  if (!this._cache) this._cache = new WeakMap<Context, ValueOrPromise<T>>();
364
- if (this.scope === BindingScope.SINGLETON) {
365
- // Cache the value
366
- this._cache.set(ctx.getOwnerContext(this.key)!, result);
367
- } else if (this.scope === BindingScope.CONTEXT) {
368
- // Cache the value at the current context
369
- this._cache.set(ctx, result);
425
+ if (this.scope !== BindingScope.TRANSIENT) {
426
+ this._cache.set(resolutionCtx!, result);
370
427
  }
371
- // Do not cache for `TRANSIENT`
372
428
  return result;
373
429
  }
374
430
 
@@ -383,7 +439,7 @@ export class Binding<T = BoundValue> extends EventEmitter {
383
439
 
384
440
  /**
385
441
  * Invalidate the binding cache so that its value will be reloaded next time.
386
- * This is useful to force reloading a singleton when its configuration or
442
+ * This is useful to force reloading a cached value when its configuration or
387
443
  * dependencies are changed.
388
444
  * **WARNING**: The state held in the cached value will be gone.
389
445
  *
@@ -391,15 +447,11 @@ export class Binding<T = BoundValue> extends EventEmitter {
391
447
  */
392
448
  refresh(ctx: Context) {
393
449
  if (!this._cache) return;
394
- if (this.scope === BindingScope.SINGLETON) {
395
- // Cache the value
396
- const ownerCtx = ctx.getOwnerContext(this.key);
397
- if (ownerCtx != null) {
398
- this._cache.delete(ownerCtx);
450
+ if (this.scope !== BindingScope.TRANSIENT) {
451
+ const resolutionCtx = ctx.getResolutionContext(this);
452
+ if (resolutionCtx != null) {
453
+ this._cache.delete(resolutionCtx);
399
454
  }
400
- } else if (this.scope === BindingScope.CONTEXT) {
401
- // Cache the value at the current context
402
- this._cache.delete(ctx);
403
455
  }
404
456
  }
405
457
 
@@ -451,22 +503,20 @@ export class Binding<T = BoundValue> extends EventEmitter {
451
503
  if (debug.enabled) {
452
504
  debug('Get value for binding %s', this.key);
453
505
  }
506
+
507
+ const options = asResolutionOptions(optionsOrSession);
508
+ const resolutionCtx = this.getResolutionContext(ctx, options);
509
+ if (resolutionCtx == null) return undefined;
454
510
  // First check cached value for non-transient
455
511
  if (this._cache) {
456
- if (this.scope === BindingScope.SINGLETON) {
457
- const ownerCtx = ctx.getOwnerContext(this.key);
458
- if (ownerCtx && this._cache.has(ownerCtx)) {
459
- return this._cache.get(ownerCtx)!;
460
- }
461
- } else if (this.scope === BindingScope.CONTEXT) {
462
- if (this._cache.has(ctx)) {
463
- return this._cache.get(ctx)!;
512
+ if (this.scope !== BindingScope.TRANSIENT) {
513
+ if (resolutionCtx && this._cache.has(resolutionCtx)) {
514
+ return this._cache.get(resolutionCtx)!;
464
515
  }
465
516
  }
466
517
  }
467
- const options = asResolutionOptions(optionsOrSession);
468
- const resolutionCtx = {
469
- context: ctx,
518
+ const resolutionMetadata = {
519
+ context: resolutionCtx!,
470
520
  binding: this,
471
521
  options,
472
522
  };
@@ -477,25 +527,62 @@ export class Binding<T = BoundValue> extends EventEmitter {
477
527
  // We already test `this._getValue` is a function. It's safe to assert
478
528
  // that `this._getValue` is not undefined.
479
529
  return this._getValue!({
480
- ...resolutionCtx,
530
+ ...resolutionMetadata,
481
531
  options: optionsWithSession,
482
532
  });
483
533
  },
484
534
  this,
485
535
  options.session,
486
536
  );
487
- return this._cacheValue(ctx, result);
537
+ return this._cacheValue(resolutionCtx!, result);
488
538
  }
489
539
  // `@inject.binding` adds a binding without _getValue
490
540
  if (options.optional) return undefined;
491
541
  return Promise.reject(
492
542
  new ResolutionError(
493
543
  `No value was configured for binding ${this.key}.`,
494
- resolutionCtx,
544
+ resolutionMetadata,
495
545
  ),
496
546
  );
497
547
  }
498
548
 
549
+ /**
550
+ * Locate and validate the resolution context
551
+ * @param ctx - Current context
552
+ * @param options - Resolution options
553
+ */
554
+ private getResolutionContext(ctx: Context, options: ResolutionOptions) {
555
+ const resolutionCtx = ctx.getResolutionContext(this);
556
+ switch (this.scope) {
557
+ case BindingScope.APPLICATION:
558
+ case BindingScope.SERVER:
559
+ case BindingScope.REQUEST:
560
+ if (resolutionCtx == null) {
561
+ const msg =
562
+ `Binding "${this.key}" in context "${ctx.name}" cannot` +
563
+ ` be resolved in scope "${this.scope}"`;
564
+ if (options.optional) {
565
+ debug(msg);
566
+ return undefined;
567
+ }
568
+ throw new Error(msg);
569
+ }
570
+ }
571
+
572
+ const ownerCtx = ctx.getOwnerContext(this.key);
573
+ if (ownerCtx != null && !ownerCtx.isVisibleTo(resolutionCtx!)) {
574
+ const msg =
575
+ `Resolution context "${resolutionCtx?.name}" does not have ` +
576
+ `visibility to binding "${this.key} (scope:${this.scope})" in context "${ownerCtx.name}"`;
577
+ if (options.optional) {
578
+ debug(msg);
579
+ return undefined;
580
+ }
581
+ throw new Error(msg);
582
+ }
583
+ return resolutionCtx;
584
+ }
585
+
499
586
  /**
500
587
  * Lock the binding so that it cannot be rebound
501
588
  */
package/src/context.ts CHANGED
@@ -5,7 +5,12 @@
5
5
 
6
6
  import debugFactory, {Debugger} from 'debug';
7
7
  import {EventEmitter} from 'events';
8
- import {Binding, BindingInspectOptions, BindingTag} from './binding';
8
+ import {
9
+ Binding,
10
+ BindingInspectOptions,
11
+ BindingScope,
12
+ BindingTag,
13
+ } from './binding';
9
14
  import {
10
15
  ConfigurationResolver,
11
16
  DefaultConfigurationResolver,
@@ -91,6 +96,11 @@ export class Context extends EventEmitter {
91
96
  */
92
97
  protected _debug: Debugger;
93
98
 
99
+ /**
100
+ * Scope for binding resolution
101
+ */
102
+ scope: BindingScope = BindingScope.CONTEXT;
103
+
94
104
  /**
95
105
  * Create a new context.
96
106
  *
@@ -467,17 +477,102 @@ export class Context extends EventEmitter {
467
477
  }
468
478
 
469
479
  /**
470
- * Get the owning context for a binding key
471
- * @param key - Binding key
480
+ * Get the owning context for a binding or its key
481
+ * @param keyOrBinding - Binding object or key
472
482
  */
473
- getOwnerContext(key: BindingAddress): Context | undefined {
474
- if (this.contains(key)) return this;
483
+ getOwnerContext(
484
+ keyOrBinding: BindingAddress | Readonly<Binding<unknown>>,
485
+ ): Context | undefined {
486
+ let key: BindingAddress;
487
+ if (keyOrBinding instanceof Binding) {
488
+ key = keyOrBinding.key;
489
+ } else {
490
+ key = keyOrBinding as BindingAddress;
491
+ }
492
+ if (this.contains(key)) {
493
+ if (keyOrBinding instanceof Binding) {
494
+ // Check if the contained binding is the same
495
+ if (this.registry.get(key.toString()) === keyOrBinding) {
496
+ return this;
497
+ }
498
+ return undefined;
499
+ }
500
+ return this;
501
+ }
475
502
  if (this._parent) {
476
503
  return this._parent.getOwnerContext(key);
477
504
  }
478
505
  return undefined;
479
506
  }
480
507
 
508
+ /**
509
+ * Get the context matching the scope
510
+ * @param scope - Binding scope
511
+ */
512
+ getScopedContext(
513
+ scope:
514
+ | BindingScope.APPLICATION
515
+ | BindingScope.SERVER
516
+ | BindingScope.REQUEST,
517
+ ): Context | undefined {
518
+ if (this.scope === scope) return this;
519
+ if (this._parent) {
520
+ return this._parent.getScopedContext(scope);
521
+ }
522
+ return undefined;
523
+ }
524
+
525
+ /**
526
+ * Locate the resolution context for the given binding. Only bindings in the
527
+ * resolution context and its ancestors are visible as dependencies to resolve
528
+ * the given binding
529
+ * @param binding - Binding object
530
+ */
531
+ getResolutionContext(
532
+ binding: Readonly<Binding<unknown>>,
533
+ ): Context | undefined {
534
+ let resolutionCtx: Context | undefined;
535
+ switch (binding.scope) {
536
+ case BindingScope.SINGLETON:
537
+ // Use the owner context
538
+ return this.getOwnerContext(binding.key);
539
+ case BindingScope.TRANSIENT:
540
+ case BindingScope.CONTEXT:
541
+ // Use the current context
542
+ return this;
543
+ case BindingScope.REQUEST:
544
+ resolutionCtx = this.getScopedContext(binding.scope);
545
+ if (resolutionCtx != null) {
546
+ return resolutionCtx;
547
+ } else {
548
+ // If no `REQUEST` scope exists in the chain, fall back to the current
549
+ // context
550
+ this.debug(
551
+ 'No context is found for binding "%s (scope=%s)". Fall back to the current context.',
552
+ binding.key,
553
+ binding.scope,
554
+ );
555
+ return this;
556
+ }
557
+ default:
558
+ // Use the scoped context
559
+ return this.getScopedContext(binding.scope);
560
+ }
561
+ }
562
+
563
+ /**
564
+ * Check if this context is visible (same or ancestor) to the given one
565
+ * @param ctx - Another context object
566
+ */
567
+ isVisibleTo(ctx: Context) {
568
+ let current: Context | undefined = ctx;
569
+ while (current != null) {
570
+ if (current === this) return true;
571
+ current = current._parent;
572
+ }
573
+ return false;
574
+ }
575
+
481
576
  /**
482
577
  * Find bindings using a key pattern or filter function
483
578
  * @param pattern - A filter function, a regexp or a wildcard pattern with
@@ -29,6 +29,7 @@ export type Next = () => ValueOrPromise<NonVoid>;
29
29
  * It serves as the base interface for various types of interceptors, such
30
30
  * as method invocation interceptor or request/response processing interceptor.
31
31
  *
32
+ * @remarks
32
33
  * We choose `NonVoid` as the return type to avoid possible bugs that an
33
34
  * interceptor forgets to return the value from `next()`. For example, the code
34
35
  * below will fail to compile.
package/src/resolver.ts CHANGED
@@ -6,7 +6,6 @@
6
6
  import {DecoratorFactory} from '@loopback/metadata';
7
7
  import assert from 'assert';
8
8
  import debugModule from 'debug';
9
- import {BindingScope} from './binding';
10
9
  import {isBindingAddress} from './binding-filter';
11
10
  import {BindingAddress} from './binding-key';
12
11
  import {Context} from './context';
@@ -98,11 +97,8 @@ function resolveContext(
98
97
  session?: ResolutionSession,
99
98
  ) {
100
99
  const currentBinding = session?.currentBinding;
101
- if (
102
- currentBinding == null ||
103
- currentBinding.scope !== BindingScope.SINGLETON
104
- ) {
105
- // No current binding or its scope is not `SINGLETON`
100
+ if (currentBinding == null) {
101
+ // No current binding
106
102
  return ctx;
107
103
  }
108
104
 
@@ -113,9 +109,9 @@ function resolveContext(
113
109
  typeof injection.methodDescriptorOrParameterIndex !== 'number';
114
110
 
115
111
  if (isConstructorOrPropertyInjection) {
116
- // Set context to the owner context of the current binding for constructor
117
- // or property injections against a singleton
118
- ctx = ctx.getOwnerContext(currentBinding.key)!;
112
+ // Set context to the resolution context of the current binding for
113
+ // constructor or property injections against a singleton
114
+ ctx = ctx.getResolutionContext(currentBinding)!;
119
115
  }
120
116
  return ctx;
121
117
  }