@loopback/core 2.9.4 → 2.11.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,50 @@
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
+ # [2.11.0](https://github.com/strongloop/loopback-next/compare/@loopback/core@2.10.1...@loopback/core@2.11.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
+
17
+ ## [2.10.1](https://github.com/strongloop/loopback-next/compare/@loopback/core@2.10.0...@loopback/core@2.10.1) (2020-09-17)
18
+
19
+ **Note:** Version bump only for package @loopback/core
20
+
21
+
22
+
23
+
24
+
25
+ # [2.10.0](https://github.com/strongloop/loopback-next/compare/@loopback/core@2.9.5...@loopback/core@2.10.0) (2020-09-15)
26
+
27
+
28
+ ### Bug Fixes
29
+
30
+ * improve handling of missing design-time type metadata ([95b6a2b](https://github.com/strongloop/loopback-next/commit/95b6a2b7ce64e614720df43b905f77a53a54e438))
31
+
32
+
33
+ ### Features
34
+
35
+ * add `app.onStart()` and `app.onStop()` helpers ([92daddd](https://github.com/strongloop/loopback-next/commit/92daddd8dfaf24c16e03ed3af66d491a8fd9503e))
36
+ * allow dynamic value provider classes and classes with [@inject](https://github.com/inject) to be booted ([7b85cdf](https://github.com/strongloop/loopback-next/commit/7b85cdf63730ef659a4ee799f05f02eea8a1e3e8))
37
+
38
+
39
+
40
+
41
+
42
+ ## [2.9.5](https://github.com/strongloop/loopback-next/compare/@loopback/core@2.9.4...@loopback/core@2.9.5) (2020-08-27)
43
+
44
+ **Note:** Version bump only for package @loopback/core
45
+
46
+
47
+
48
+
49
+
6
50
  ## [2.9.4](https://github.com/strongloop/loopback-next/compare/@loopback/core@2.9.3...@loopback/core@2.9.4) (2020-08-19)
7
51
 
8
52
  **Note:** Version bump only for package @loopback/core
@@ -1,5 +1,5 @@
1
1
  /// <reference types="node" />
2
- import { Binding, BindingFromClassOptions, Constructor, Context, Interceptor, InterceptorBindingOptions, JSONObject, Provider } from '@loopback/context';
2
+ import { Binding, BindingFromClassOptions, Constructor, Context, DynamicValueProviderClass, Interceptor, InterceptorBindingOptions, JSONObject, Provider, ValueOrPromise } from '@loopback/context';
3
3
  import { Component } from './component';
4
4
  import { LifeCycleObserver } from './lifecycle';
5
5
  import { Server } from './server';
@@ -148,6 +148,17 @@ export declare class Application extends Context implements LifeCycleObserver {
148
148
  * If the application is already started, no operation is performed.
149
149
  */
150
150
  start(): Promise<void>;
151
+ /**
152
+ * Register a function to be called when the application starts.
153
+ *
154
+ * This is a shortcut for adding a binding for a LifeCycleObserver
155
+ * implementing a `start()` method.
156
+ *
157
+ * @param fn The function to invoke, it can be synchronous (returning `void`)
158
+ * or asynchronous (returning `Promise<void>`).
159
+ * @returns The LifeCycleObserver binding created.
160
+ */
161
+ onStart(fn: () => ValueOrPromise<void>): Binding<LifeCycleObserver>;
151
162
  /**
152
163
  * Stop the application instance and all of its registered observers. The
153
164
  * application state is checked to ensure the integrity of `stop`.
@@ -156,6 +167,17 @@ export declare class Application extends Context implements LifeCycleObserver {
156
167
  * performed.
157
168
  */
158
169
  stop(): Promise<void>;
170
+ /**
171
+ * Register a function to be called when the application starts.
172
+ *
173
+ * This is a shortcut for adding a binding for a LifeCycleObserver
174
+ * implementing a `start()` method.
175
+ *
176
+ * @param fn The function to invoke, it can be synchronous (returning `void`)
177
+ * or asynchronous (returning `Promise<void>`).
178
+ * @returns The LifeCycleObserver binding created.
179
+ */
180
+ onStop(fn: () => ValueOrPromise<void>): Binding<LifeCycleObserver>;
159
181
  private getLifeCycleObserverRegistry;
160
182
  /**
161
183
  * Add a component to this application and register extensions such as
@@ -203,7 +225,7 @@ export declare class Application extends Context implements LifeCycleObserver {
203
225
  *
204
226
  * ```ts
205
227
  * // Define a class to be bound via ctx.toClass()
206
- * @bind({scope: BindingScope.SINGLETON})
228
+ * @injectable({scope: BindingScope.SINGLETON})
207
229
  * export class LogService {
208
230
  * log(msg: string) {
209
231
  * console.log(msg);
@@ -282,7 +304,7 @@ export interface ApplicationConfig {
282
304
  [prop: string]: any;
283
305
  }
284
306
  export declare type ControllerClass<T = any> = Constructor<T>;
285
- export declare type ServiceOrProviderClass<T = any> = Constructor<T | Provider<T>>;
307
+ export declare type ServiceOrProviderClass<T = any> = Constructor<T | Provider<T>> | DynamicValueProviderClass<T>;
286
308
  /**
287
309
  * Type description for `package.json`
288
310
  */
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.Application = void 0;
8
8
  const tslib_1 = require("tslib");
9
9
  const context_1 = require("@loopback/context");
10
+ const unique_id_1 = require("@loopback/context/dist/unique-id");
10
11
  const assert_1 = tslib_1.__importDefault(require("assert"));
11
12
  const debug_1 = tslib_1.__importDefault(require("debug"));
12
13
  const events_1 = require("events");
@@ -53,6 +54,7 @@ class Application extends context_1.Context {
53
54
  * State of the application
54
55
  */
55
56
  this._state = 'created';
57
+ this.scope = context_1.BindingScope.APPLICATION;
56
58
  this.options =
57
59
  configOrParent instanceof context_1.Context ? {} : configOrParent !== null && configOrParent !== void 0 ? configOrParent : {};
58
60
  // Configure debug
@@ -245,6 +247,26 @@ class Application extends context_1.Context {
245
247
  await registry.start();
246
248
  this.setState('started');
247
249
  }
250
+ /**
251
+ * Register a function to be called when the application starts.
252
+ *
253
+ * This is a shortcut for adding a binding for a LifeCycleObserver
254
+ * implementing a `start()` method.
255
+ *
256
+ * @param fn The function to invoke, it can be synchronous (returning `void`)
257
+ * or asynchronous (returning `Promise<void>`).
258
+ * @returns The LifeCycleObserver binding created.
259
+ */
260
+ onStart(fn) {
261
+ const key = [
262
+ keys_1.CoreBindings.LIFE_CYCLE_OBSERVERS,
263
+ fn.name || '<onStart>',
264
+ unique_id_1.generateUniqueId(),
265
+ ].join('.');
266
+ return this.bind(key)
267
+ .to({ start: fn })
268
+ .apply(lifecycle_1.asLifeCycleObserver);
269
+ }
248
270
  /**
249
271
  * Stop the application instance and all of its registered observers. The
250
272
  * application state is checked to ensure the integrity of `stop`.
@@ -269,6 +291,26 @@ class Application extends context_1.Context {
269
291
  await registry.stop();
270
292
  this.setState('stopped');
271
293
  }
294
+ /**
295
+ * Register a function to be called when the application starts.
296
+ *
297
+ * This is a shortcut for adding a binding for a LifeCycleObserver
298
+ * implementing a `start()` method.
299
+ *
300
+ * @param fn The function to invoke, it can be synchronous (returning `void`)
301
+ * or asynchronous (returning `Promise<void>`).
302
+ * @returns The LifeCycleObserver binding created.
303
+ */
304
+ onStop(fn) {
305
+ const key = [
306
+ keys_1.CoreBindings.LIFE_CYCLE_OBSERVERS,
307
+ fn.name || '<onStop>',
308
+ unique_id_1.generateUniqueId(),
309
+ ].join('.');
310
+ return this.bind(key)
311
+ .to({ stop: fn })
312
+ .apply(lifecycle_1.asLifeCycleObserver);
313
+ }
272
314
  async getLifeCycleObserverRegistry() {
273
315
  return this.get(keys_1.CoreBindings.LIFE_CYCLE_OBSERVER_REGISTRY);
274
316
  }
@@ -346,7 +388,7 @@ class Application extends context_1.Context {
346
388
  *
347
389
  * ```ts
348
390
  * // Define a class to be bound via ctx.toClass()
349
- * @bind({scope: BindingScope.SINGLETON})
391
+ * @injectable({scope: BindingScope.SINGLETON})
350
392
  * export class LogService {
351
393
  * log(msg: string) {
352
394
  * console.log(msg);
@@ -1 +1 @@
1
- {"version":3,"file":"application.js","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"application.js","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ export interface ClassMap {
15
15
  [key: string]: Constructor<BoundValue>;
16
16
  }
17
17
  /**
18
- * A component declares a set of artifacts so that they cane be contributed to
18
+ * A component declares a set of artifacts so that they can be contributed to
19
19
  * an application as a group
20
20
  */
21
21
  export interface Component {
@@ -24,7 +24,7 @@ const keys_1 = require("./keys");
24
24
  * @param name - Name of the extension point
25
25
  */
26
26
  function extensionPoint(name, ...specs) {
27
- return context_1.bind({ tags: { [keys_1.CoreTags.EXTENSION_POINT]: name } }, ...specs);
27
+ return context_1.injectable({ tags: { [keys_1.CoreTags.EXTENSION_POINT]: name } }, ...specs);
28
28
  }
29
29
  exports.extensionPoint = extensionPoint;
30
30
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"extension-point.js","sourceRoot":"","sources":["../src/extension-point.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extension-point.js","sourceRoot":"","sources":["../src/extension-point.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;AAEhE,+CAmB2B;AAC3B,iCAAgC;AAEhC;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,cAAc,CAAC,IAAY,EAAE,GAAG,KAAoB;IAClE,OAAO,oBAAU,CAAC,EAAC,IAAI,EAAE,EAAC,CAAC,eAAQ,CAAC,eAAe,CAAC,EAAE,IAAI,EAAC,EAAC,EAAE,GAAG,KAAK,CAAC,CAAC;AAC1E,CAAC;AAFD,wCAEC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAgB,UAAU,CAAC,kBAA2B;IACpD,OAAO,gBAAM,CAAC,EAAE,EAAE,EAAC,SAAS,EAAE,aAAa,EAAC,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;QACxE,0BAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QACzD,MAAM,aAAa,GAAG,sBAAsB,CAC1C,SAAS,EACT,OAAO,EACP,kBAAkB,CACnB,CAAC;QACF,OAAO,0BAAgB,CACrB,GAAG,EACH,aAAa,EACb,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EACpC,OAAO,CACR,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAfD,gCAeC;AAED,WAAiB,UAAU;IACzB;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,SAAgB,IAAI,CAAC,kBAA2B;QAC9C,OAAO,gBAAM,CACX,EAAE,EACF,EAAC,SAAS,EAAE,kBAAkB,EAAC,EAC/B,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;YAC1B,0BAAgB,CAAC,SAAS,EAAE,qBAAW,CAAC,CAAC;YACzC,MAAM,aAAa,GAAG,sBAAsB,CAC1C,SAAS,EACT,OAAO,EACP,kBAAkB,CACnB,CAAC;YACF,OAAO,GAAG,CAAC,UAAU,CACnB,aAAa,EACb,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CACrC,CAAC;QACJ,CAAC,CACF,CAAC;IACJ,CAAC;IAjBe,eAAI,OAiBnB,CAAA;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,SAAgB,IAAI,CAAC,kBAA2B;QAC9C,OAAO,gBAAM,CACX,EAAE,EACF,EAAC,SAAS,EAAE,uBAAuB,EAAC,EACpC,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;YAC1B,0BAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACnC,MAAM,aAAa,GAAG,sBAAsB,CAC1C,SAAS,EACT,OAAO,EACP,kBAAkB,CACnB,CAAC;YACF,MAAM,iBAAiB,GAAG,IAAI,qBAAW,CACvC,GAAG,EACH,aAAa,EACb,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CACrC,CAAC;YACF,OAAO,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC,CACF,CAAC;IACJ,CAAC;IAnBe,eAAI,OAmBnB,CAAA;AACH,CAAC,EA1FgB,UAAU,GAAV,kBAAU,KAAV,kBAAU,QA0F1B;AAED;;;;;GAKG;AACH,SAAS,sBAAsB,CAC7B,SAAuC,EACvC,OAA0B,EAC1B,kBAA2B;IAE3B,kBAAkB,GAChB,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAClB,uBAAuB,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACpE,OAAO,eAAe,CAAC,kBAAkB,CAAC,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,SAAS,uBAAuB,CAC9B,eAAuB,EACvB,cAA2C;IAE3C,IAAI,cAAc,EAAE;QAClB,MAAM,IAAI,GACR,cAAc,CAAC,MAAM,CAAC,eAAQ,CAAC,eAAe,CAAC;YAC/C,cAAc,CAAC,MAAM,CAAC,qBAAW,CAAC,IAAI,CAAC,CAAC;QAE1C,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;KACvB;IAED,IAAI,MAAgB,CAAC;IACrB,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE;QACzC,wBAAwB;QACxB,MAAM,GAAG,eAAe,CAAC;KAC1B;SAAM;QACL,6BAA6B;QAC7B,MAAM,GAAG,eAAe,CAAC,WAAW,CAAC;KACtC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAC7B,GAAG,mBAA6B;IAEhC,OAAO,qBAAW,CAAC;QACjB,CAAC,eAAQ,CAAC,aAAa,CAAC,EAAE,0BAAgB,CAAC,GAAG,mBAAmB,CAAC;KACnE,CAAC,CAAC;AACL,CAAC;AAND,0CAMC;AAED;;;;GAIG;AACH,SAAgB,YAAY,CAC1B,GAAG,mBAA6B;IAEhC,OAAO,OAAO,CAAC,EAAE;QACf,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC7C,IAAI,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,eAAQ,CAAC,aAAa,CAAC,CAAC;QAC7D,wCAAwC;QACxC,IAAI,eAAe,IAAI,IAAI,EAAE;YAC3B,eAAe,GAAG,EAAE,CAAC;SACtB;aAAM,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE;YAC9C,eAAe,GAAG,CAAC,eAAe,CAAC,CAAC;SACrC;QAED,uBAAuB;QACvB,KAAK,MAAM,kBAAkB,IAAI,mBAAmB,EAAE;YACpD,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;gBACjD,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;aAC1C;SACF;QACD,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;YAChC,sDAAsD;YACtD,eAAe,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;SACtC;QACD,OAAO,CAAC,GAAG,CAAC,EAAC,CAAC,eAAQ,CAAC,aAAa,CAAC,EAAE,eAAe,EAAC,CAAC,CAAC;IAC3D,CAAC,CAAC;AACJ,CAAC;AAzBD,oCAyBC;AAED;;;;;;GAMG;AACH,SAAgB,YAAY,CAC1B,OAAgB,EAChB,kBAA0B,EAC1B,cAAoC,EACpC,OAAiC;IAEjC,MAAM,OAAO,GAAG,gCAAsB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,KAAK,CACnE,YAAY,CAAC,kBAAkB,CAAC,CACjC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrB,OAAO,OAAO,CAAC;AACjB,CAAC;AAXD,oCAWC"}
package/dist/lifecycle.js CHANGED
@@ -46,7 +46,7 @@ exports.lifeCycleObserverFilter = context_1.filterByTag(keys_1.CoreTags.LIFE_CYC
46
46
  * @param specs - Optional bindings specs
47
47
  */
48
48
  function lifeCycleObserver(group = '', ...specs) {
49
- return context_1.bind(asLifeCycleObserver, {
49
+ return context_1.injectable(asLifeCycleObserver, {
50
50
  tags: {
51
51
  [keys_1.CoreTags.LIFE_CYCLE_OBSERVER_GROUP]: group,
52
52
  },
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;AAEhE,+CAQ2B;AAC3B,iCAAgC;AAgBhC,MAAM,gBAAgB,GAAgC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAExE;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,GAAW;IAC7C,MAAM,SAAS,GAAG,GAAiC,CAAC;IACpD,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC;AACxE,CAAC;AAHD,kDAGC;AAED;;;GAGG;AACH,SAAgB,wBAAwB,CACtC,IAA0B;IAE1B,OAAO,IAAI,CAAC,SAAS,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/D,CAAC;AAJD,4DAIC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAc,OAAmB;IAClE,OAAO,OAAO,CAAC,GAAG,CAAC,eAAQ,CAAC,mBAAmB,CAAC,CAAC;AACnD,CAAC;AAFD,kDAEC;AAED;;;GAGG;AACU,QAAA,uBAAuB,GAAqB,qBAAW,CAClE,eAAQ,CAAC,mBAAmB,CAC7B,CAAC;AAEF;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,KAAK,GAAG,EAAE,EAAE,GAAG,KAAoB;IACnE,OAAO,cAAI,CACT,mBAAmB,EACnB;QACE,IAAI,EAAE;YACJ,CAAC,eAAQ,CAAC,yBAAyB,CAAC,EAAE,KAAK;SAC5C;KACF,EACD,GAAG,KAAK,CACT,CAAC;AACJ,CAAC;AAVD,8CAUC"}
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;AAEhE,+CAQ2B;AAC3B,iCAAgC;AAgBhC,MAAM,gBAAgB,GAAgC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAExE;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,GAAW;IAC7C,MAAM,SAAS,GAAG,GAAiC,CAAC;IACpD,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC;AACxE,CAAC;AAHD,kDAGC;AAED;;;GAGG;AACH,SAAgB,wBAAwB,CACtC,IAA0B;IAE1B,OAAO,IAAI,CAAC,SAAS,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/D,CAAC;AAJD,4DAIC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAc,OAAmB;IAClE,OAAO,OAAO,CAAC,GAAG,CAAC,eAAQ,CAAC,mBAAmB,CAAC,CAAC;AACnD,CAAC;AAFD,kDAEC;AAED;;;GAGG;AACU,QAAA,uBAAuB,GAAqB,qBAAW,CAClE,eAAQ,CAAC,mBAAmB,CAC7B,CAAC;AAEF;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,KAAK,GAAG,EAAE,EAAE,GAAG,KAAoB;IACnE,OAAO,oBAAU,CACf,mBAAmB,EACnB;QACE,IAAI,EAAE;YACJ,CAAC,eAAQ,CAAC,yBAAyB,CAAC,EAAE,KAAK;SAC5C;KACF,EACD,GAAG,KAAK,CACT,CAAC;AACJ,CAAC;AAVD,8CAUC"}
package/dist/service.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { Binding, BindingFilter, BindingFromClassOptions, BindingTemplate, Constructor, InjectionMetadata, Provider } from '@loopback/context';
1
+ import { Binding, BindingFilter, BindingFromClassOptions, BindingTemplate, InjectionMetadata } from '@loopback/context';
2
+ import { ServiceOrProviderClass } from './application';
2
3
  /**
3
4
  * Representing an interface for services. In TypeScript, the `interface` does
4
5
  * not have reflections at runtime. We use a string, a symbol or a Function as
@@ -54,7 +55,7 @@ export declare function filterByServiceInterface(serviceInterface: ServiceInterf
54
55
  * @param cls - Service class or provider
55
56
  * @param options - Service options
56
57
  */
57
- export declare function createServiceBinding<S>(cls: Constructor<S | Provider<S>>, options?: ServiceOptions): Binding<S>;
58
+ export declare function createServiceBinding<S>(cls: ServiceOrProviderClass<S>, options?: ServiceOptions): Binding<S>;
58
59
  /**
59
60
  * Create a binding template for a service interface
60
61
  * @param serviceInterface - Service interface
package/dist/service.js CHANGED
@@ -40,15 +40,23 @@ const keys_1 = require("./keys");
40
40
  */
41
41
  function service(serviceInterface, metadata) {
42
42
  return context_1.inject('', { decorator: '@service', ...metadata }, (ctx, injection, session) => {
43
+ var _a;
43
44
  let serviceType = serviceInterface;
44
45
  if (!serviceType) {
45
46
  if (typeof injection.methodDescriptorOrParameterIndex === 'number') {
46
- serviceType = context_1.MetadataInspector.getDesignTypeForMethod(injection.target, injection.member).parameterTypes[injection.methodDescriptorOrParameterIndex];
47
+ serviceType = (_a = context_1.MetadataInspector.getDesignTypeForMethod(injection.target, injection.member)) === null || _a === void 0 ? void 0 : _a.parameterTypes[injection.methodDescriptorOrParameterIndex];
47
48
  }
48
49
  else {
49
50
  serviceType = context_1.MetadataInspector.getDesignTypeForProperty(injection.target, injection.member);
50
51
  }
51
52
  }
53
+ if (serviceType === undefined) {
54
+ const targetName = context_1.DecoratorFactory.getTargetName(injection.target, injection.member, injection.methodDescriptorOrParameterIndex);
55
+ const msg = `No design-time type metadata found while inspecting ${targetName}. ` +
56
+ 'You can either use `@service(ServiceClass)` or ensure `emitDecoratorMetadata` is enabled in your TypeScript configuration. ' +
57
+ 'Run `tsc --showConfig` to print the final TypeScript configuration of your project.';
58
+ throw new Error(msg);
59
+ }
52
60
  if (serviceType === Object || serviceType === Array) {
53
61
  throw new Error('Service class cannot be inferred from design type. Use @service(ServiceClass).');
54
62
  }
@@ -105,6 +113,16 @@ function createServiceBinding(cls, options = {}) {
105
113
  name = cls.name.replace(/Provider$/, '');
106
114
  }
107
115
  }
116
+ if (!name && context_1.isDynamicValueProviderClass(cls)) {
117
+ // Trim `Provider` from the default service name
118
+ const templateFn = context_1.bindingTemplateFor(cls);
119
+ const template = context_1.Binding.bind('template').apply(templateFn);
120
+ if (template.tagMap[context_1.ContextTags.DYNAMIC_VALUE_PROVIDER] &&
121
+ !template.tagMap[context_1.ContextTags.NAME]) {
122
+ // The class is a provider and no `name` tag is found
123
+ name = cls.name.replace(/Provider$/, '');
124
+ }
125
+ }
108
126
  const binding = context_1.createBindingFromClass(cls, {
109
127
  name,
110
128
  type: keys_1.CoreTags.SERVICE,
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@loopback/core",
3
- "version": "2.9.4",
3
+ "version": "2.11.0",
4
4
  "description": "Define and implement core constructs such as Application and Component",
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\"",
@@ -24,16 +24,16 @@
24
24
  "access": "public"
25
25
  },
26
26
  "dependencies": {
27
- "@loopback/context": "^3.10.0",
28
- "debug": "^4.1.1",
29
- "tslib": "^2.0.1"
27
+ "@loopback/context": "^3.12.0",
28
+ "debug": "^4.2.0",
29
+ "tslib": "^2.0.2"
30
30
  },
31
31
  "devDependencies": {
32
- "@loopback/build": "^6.2.1",
33
- "@loopback/eslint-config": "^9.0.1",
34
- "@loopback/testlab": "^3.2.3",
32
+ "@loopback/build": "^6.2.5",
33
+ "@loopback/eslint-config": "^10.0.1",
34
+ "@loopback/testlab": "^3.2.7",
35
35
  "@types/debug": "^4.1.5",
36
- "@types/node": "^10.17.28"
36
+ "@types/node": "^10.17.35"
37
37
  },
38
38
  "files": [
39
39
  "README.md",
@@ -46,5 +46,5 @@
46
46
  "url": "https://github.com/strongloop/loopback-next.git",
47
47
  "directory": "packages/core"
48
48
  },
49
- "gitHead": "a056555744367da9caccb6be64095e27d2fe2e28"
49
+ "gitHead": "390f2794d10eea3d969ae417963af815ce1bc417"
50
50
  }
@@ -10,12 +10,15 @@ import {
10
10
  Constructor,
11
11
  Context,
12
12
  createBindingFromClass,
13
+ DynamicValueProviderClass,
13
14
  Interceptor,
14
15
  InterceptorBindingOptions,
15
16
  JSONObject,
16
17
  Provider,
17
18
  registerInterceptor,
19
+ ValueOrPromise,
18
20
  } from '@loopback/context';
21
+ import {generateUniqueId} from '@loopback/context/dist/unique-id';
19
22
  import assert from 'assert';
20
23
  import debugFactory from 'debug';
21
24
  import {once} from 'events';
@@ -113,6 +116,7 @@ export class Application extends Context implements LifeCycleObserver {
113
116
  constructor(configOrParent?: ApplicationConfig | Context, parent?: Context) {
114
117
  // super() has to be first statement for a constructor
115
118
  super(...buildConstructorArgs(configOrParent, parent));
119
+ this.scope = BindingScope.APPLICATION;
116
120
 
117
121
  this.options =
118
122
  configOrParent instanceof Context ? {} : configOrParent ?? {};
@@ -312,6 +316,28 @@ export class Application extends Context implements LifeCycleObserver {
312
316
  this.setState('started');
313
317
  }
314
318
 
319
+ /**
320
+ * Register a function to be called when the application starts.
321
+ *
322
+ * This is a shortcut for adding a binding for a LifeCycleObserver
323
+ * implementing a `start()` method.
324
+ *
325
+ * @param fn The function to invoke, it can be synchronous (returning `void`)
326
+ * or asynchronous (returning `Promise<void>`).
327
+ * @returns The LifeCycleObserver binding created.
328
+ */
329
+ public onStart(fn: () => ValueOrPromise<void>): Binding<LifeCycleObserver> {
330
+ const key = [
331
+ CoreBindings.LIFE_CYCLE_OBSERVERS,
332
+ fn.name || '<onStart>',
333
+ generateUniqueId(),
334
+ ].join('.');
335
+
336
+ return this.bind<LifeCycleObserver>(key)
337
+ .to({start: fn})
338
+ .apply(asLifeCycleObserver);
339
+ }
340
+
315
341
  /**
316
342
  * Stop the application instance and all of its registered observers. The
317
343
  * application state is checked to ensure the integrity of `stop`.
@@ -335,6 +361,27 @@ export class Application extends Context implements LifeCycleObserver {
335
361
  this.setState('stopped');
336
362
  }
337
363
 
364
+ /**
365
+ * Register a function to be called when the application starts.
366
+ *
367
+ * This is a shortcut for adding a binding for a LifeCycleObserver
368
+ * implementing a `start()` method.
369
+ *
370
+ * @param fn The function to invoke, it can be synchronous (returning `void`)
371
+ * or asynchronous (returning `Promise<void>`).
372
+ * @returns The LifeCycleObserver binding created.
373
+ */
374
+ public onStop(fn: () => ValueOrPromise<void>): Binding<LifeCycleObserver> {
375
+ const key = [
376
+ CoreBindings.LIFE_CYCLE_OBSERVERS,
377
+ fn.name || '<onStop>',
378
+ generateUniqueId(),
379
+ ].join('.');
380
+ return this.bind<LifeCycleObserver>(key)
381
+ .to({stop: fn})
382
+ .apply(asLifeCycleObserver);
383
+ }
384
+
338
385
  private async getLifeCycleObserverRegistry() {
339
386
  return this.get(CoreBindings.LIFE_CYCLE_OBSERVER_REGISTRY);
340
387
  }
@@ -422,7 +469,7 @@ export class Application extends Context implements LifeCycleObserver {
422
469
  *
423
470
  * ```ts
424
471
  * // Define a class to be bound via ctx.toClass()
425
- * @bind({scope: BindingScope.SINGLETON})
472
+ * @injectable({scope: BindingScope.SINGLETON})
426
473
  * export class LogService {
427
474
  * log(msg: string) {
428
475
  * console.log(msg);
@@ -608,7 +655,9 @@ export interface ApplicationConfig {
608
655
  export type ControllerClass<T = any> = Constructor<T>;
609
656
 
610
657
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
611
- export type ServiceOrProviderClass<T = any> = Constructor<T | Provider<T>>;
658
+ export type ServiceOrProviderClass<T = any> =
659
+ | Constructor<T | Provider<T>>
660
+ | DynamicValueProviderClass<T>;
612
661
 
613
662
  /**
614
663
  * Type description for `package.json`
package/src/component.ts CHANGED
@@ -33,7 +33,7 @@ export interface ClassMap {
33
33
  }
34
34
 
35
35
  /**
36
- * A component declares a set of artifacts so that they cane be contributed to
36
+ * A component declares a set of artifacts so that they can be contributed to
37
37
  * an application as a group
38
38
  */
39
39
  export interface Component {
@@ -5,7 +5,6 @@
5
5
 
6
6
  import {
7
7
  assertTargetType,
8
- bind,
9
8
  Binding,
10
9
  BindingFilter,
11
10
  BindingFromClassOptions,
@@ -20,6 +19,7 @@ import {
20
19
  filterByTag,
21
20
  includesTagValue,
22
21
  inject,
22
+ injectable,
23
23
  Injection,
24
24
  ResolutionSession,
25
25
  } from '@loopback/context';
@@ -42,7 +42,7 @@ import {CoreTags} from './keys';
42
42
  * @param name - Name of the extension point
43
43
  */
44
44
  export function extensionPoint(name: string, ...specs: BindingSpec[]) {
45
- return bind({tags: {[CoreTags.EXTENSION_POINT]: name}}, ...specs);
45
+ return injectable({tags: {[CoreTags.EXTENSION_POINT]: name}}, ...specs);
46
46
  }
47
47
 
48
48
  /**
package/src/lifecycle.ts CHANGED
@@ -4,12 +4,12 @@
4
4
  // License text available at https://opensource.org/licenses/MIT
5
5
 
6
6
  import {
7
- bind,
8
7
  Binding,
9
8
  BindingSpec,
10
9
  BindingTagFilter,
11
10
  Constructor,
12
11
  filterByTag,
12
+ injectable,
13
13
  ValueOrPromise,
14
14
  } from '@loopback/context';
15
15
  import {CoreTags} from './keys';
@@ -73,7 +73,7 @@ export const lifeCycleObserverFilter: BindingTagFilter = filterByTag(
73
73
  * @param specs - Optional bindings specs
74
74
  */
75
75
  export function lifeCycleObserver(group = '', ...specs: BindingSpec[]) {
76
- return bind(
76
+ return injectable(
77
77
  asLifeCycleObserver,
78
78
  {
79
79
  tags: {
package/src/service.ts CHANGED
@@ -9,17 +9,18 @@ import {
9
9
  BindingFromClassOptions,
10
10
  BindingTemplate,
11
11
  bindingTemplateFor,
12
- Constructor,
13
12
  ContextTags,
14
13
  ContextView,
15
14
  createBindingFromClass,
15
+ DecoratorFactory,
16
16
  inject,
17
17
  InjectionMetadata,
18
+ isDynamicValueProviderClass,
18
19
  isProviderClass,
19
20
  MetadataInspector,
20
- Provider,
21
21
  transformValueOrPromise,
22
22
  } from '@loopback/context';
23
+ import {ServiceOrProviderClass} from './application';
23
24
  import {CoreTags} from './keys';
24
25
 
25
26
  /**
@@ -81,7 +82,7 @@ export function service(
81
82
  serviceType = MetadataInspector.getDesignTypeForMethod(
82
83
  injection.target,
83
84
  injection.member!,
84
- ).parameterTypes[injection.methodDescriptorOrParameterIndex];
85
+ )?.parameterTypes[injection.methodDescriptorOrParameterIndex];
85
86
  } else {
86
87
  serviceType = MetadataInspector.getDesignTypeForProperty(
87
88
  injection.target,
@@ -89,6 +90,19 @@ export function service(
89
90
  );
90
91
  }
91
92
  }
93
+ if (serviceType === undefined) {
94
+ const targetName = DecoratorFactory.getTargetName(
95
+ injection.target,
96
+ injection.member,
97
+ injection.methodDescriptorOrParameterIndex,
98
+ );
99
+ const msg =
100
+ `No design-time type metadata found while inspecting ${targetName}. ` +
101
+ 'You can either use `@service(ServiceClass)` or ensure `emitDecoratorMetadata` is enabled in your TypeScript configuration. ' +
102
+ 'Run `tsc --showConfig` to print the final TypeScript configuration of your project.';
103
+ throw new Error(msg);
104
+ }
105
+
92
106
  if (serviceType === Object || serviceType === Array) {
93
107
  throw new Error(
94
108
  'Service class cannot be inferred from design type. Use @service(ServiceClass).',
@@ -142,7 +156,7 @@ export function filterByServiceInterface(
142
156
  * @param options - Service options
143
157
  */
144
158
  export function createServiceBinding<S>(
145
- cls: Constructor<S | Provider<S>>,
159
+ cls: ServiceOrProviderClass<S>,
146
160
  options: ServiceOptions = {},
147
161
  ): Binding<S> {
148
162
  let name = options.name;
@@ -159,6 +173,18 @@ export function createServiceBinding<S>(
159
173
  name = cls.name.replace(/Provider$/, '');
160
174
  }
161
175
  }
176
+ if (!name && isDynamicValueProviderClass(cls)) {
177
+ // Trim `Provider` from the default service name
178
+ const templateFn = bindingTemplateFor(cls);
179
+ const template = Binding.bind<S>('template').apply(templateFn);
180
+ if (
181
+ template.tagMap[ContextTags.DYNAMIC_VALUE_PROVIDER] &&
182
+ !template.tagMap[ContextTags.NAME]
183
+ ) {
184
+ // The class is a provider and no `name` tag is found
185
+ name = cls.name.replace(/Provider$/, '');
186
+ }
187
+ }
162
188
  const binding = createBindingFromClass(cls, {
163
189
  name,
164
190
  type: CoreTags.SERVICE,