@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 +44 -0
- package/dist/application.d.ts +25 -3
- package/dist/application.js +43 -1
- package/dist/application.js.map +1 -1
- package/dist/component.d.ts +1 -1
- package/dist/extension-point.js +1 -1
- package/dist/extension-point.js.map +1 -1
- package/dist/lifecycle.js +1 -1
- package/dist/lifecycle.js.map +1 -1
- package/dist/service.d.ts +3 -2
- package/dist/service.js +19 -1
- package/dist/service.js.map +1 -1
- package/package.json +10 -10
- package/src/application.ts +51 -2
- package/src/component.ts +1 -1
- package/src/extension-point.ts +2 -2
- package/src/lifecycle.ts +2 -2
- package/src/service.ts +30 -4
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
|
package/dist/application.d.ts
CHANGED
|
@@ -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
|
-
* @
|
|
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
|
*/
|
package/dist/application.js
CHANGED
|
@@ -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
|
-
* @
|
|
391
|
+
* @injectable({scope: BindingScope.SINGLETON})
|
|
350
392
|
* export class LogService {
|
|
351
393
|
* log(msg: string) {
|
|
352
394
|
* console.log(msg);
|
package/dist/application.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.js","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;;AAEhE,+
|
|
1
|
+
{"version":3,"file":"application.js","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"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"}
|
package/dist/component.d.ts
CHANGED
|
@@ -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
|
|
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 {
|
package/dist/extension-point.js
CHANGED
|
@@ -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.
|
|
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":";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,
|
|
1
|
+
{"version":3,"file":"extension-point.js","sourceRoot":"","sources":["../src/extension-point.ts"],"names":[],"mappings":"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"}
|
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.
|
|
49
|
+
return context_1.injectable(asLifeCycleObserver, {
|
|
50
50
|
tags: {
|
|
51
51
|
[keys_1.CoreTags.LIFE_CYCLE_OBSERVER_GROUP]: group,
|
|
52
52
|
},
|
package/dist/lifecycle.js.map
CHANGED
|
@@ -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,
|
|
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,
|
|
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:
|
|
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,
|
package/dist/service.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;AAEhE,+CAgB2B;
|
|
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.
|
|
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": "
|
|
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.
|
|
28
|
-
"debug": "^4.
|
|
29
|
-
"tslib": "^2.0.
|
|
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.
|
|
33
|
-
"@loopback/eslint-config": "^
|
|
34
|
-
"@loopback/testlab": "^3.2.
|
|
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.
|
|
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": "
|
|
49
|
+
"gitHead": "390f2794d10eea3d969ae417963af815ce1bc417"
|
|
50
50
|
}
|
package/src/application.ts
CHANGED
|
@@ -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
|
-
* @
|
|
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> =
|
|
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
|
|
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 {
|
package/src/extension-point.ts
CHANGED
|
@@ -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
|
|
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
|
|
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
|
-
)
|
|
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:
|
|
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,
|