@loopback/core 2.16.0 → 2.18.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/README.md +4 -4
- package/dist/application.js +19 -19
- package/dist/application.js.map +1 -1
- package/dist/component.js +2 -2
- package/dist/component.js.map +1 -1
- package/dist/extension-point.d.ts +7 -4
- package/dist/extension-point.js +22 -16
- package/dist/extension-point.js.map +1 -1
- package/dist/index.js +10 -10
- package/dist/index.js.map +1 -1
- package/dist/keys.js.map +1 -1
- package/dist/lifecycle-registry.d.ts +6 -0
- package/dist/lifecycle-registry.js +12 -7
- package/dist/lifecycle-registry.js.map +1 -1
- package/dist/lifecycle.js +2 -2
- package/dist/lifecycle.js.map +1 -1
- package/dist/service.js +7 -7
- package/dist/service.js.map +1 -1
- package/package.json +11 -11
- package/src/extension-point.ts +42 -20
- package/src/keys.ts +8 -12
- package/src/lifecycle-registry.ts +12 -4
- package/src/mixin-target.ts +6 -8
- package/CHANGELOG.md +0 -1420
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;AAE3B,iCAAgC;AAgBhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,SAAgB,OAAO,CACrB,gBAAmC,EACnC,QAA4B;IAE5B,OAAO,gBAAM,
|
|
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;AAE3B,iCAAgC;AAgBhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,SAAgB,OAAO,CACrB,gBAAmC,EACnC,QAA4B;IAE5B,OAAO,IAAA,gBAAM,EACX,EAAE,EACF,EAAC,SAAS,EAAE,UAAU,EAAE,GAAG,QAAQ,EAAC,EACpC,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;;QAC1B,IAAI,WAAW,GAAG,gBAAgB,CAAC;QACnC,IAAI,CAAC,WAAW,EAAE;YAChB,IAAI,OAAO,SAAS,CAAC,gCAAgC,KAAK,QAAQ,EAAE;gBAClE,WAAW,GAAG,MAAA,2BAAiB,CAAC,sBAAsB,CACpD,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,MAAO,CAClB,0CAAE,cAAc,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;aAC/D;iBAAM;gBACL,WAAW,GAAG,2BAAiB,CAAC,wBAAwB,CACtD,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,MAAO,CAClB,CAAC;aACH;SACF;QACD,IAAI,WAAW,KAAK,SAAS,EAAE;YAC7B,MAAM,UAAU,GAAG,0BAAgB,CAAC,aAAa,CAC/C,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,gCAAgC,CAC3C,CAAC;YACF,MAAM,GAAG,GACP,uDAAuD,UAAU,IAAI;gBACrE,6HAA6H;gBAC7H,qFAAqF,CAAC;YACxF,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;SACtB;QAED,IAAI,WAAW,KAAK,MAAM,IAAI,WAAW,KAAK,KAAK,EAAE;YACnD,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAC;SACH;QACD,MAAM,IAAI,GAAG,IAAI,qBAAW,CAAC,GAAG,EAAE,wBAAwB,CAAC,WAAW,CAAC,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAErC,MAAM,eAAe,GACnB,OAAO,WAAW,KAAK,QAAQ;YAC7B,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,OAAO,WAAW,KAAK,QAAQ;gBACjC,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE;gBACxB,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;QACvB,OAAO,IAAA,iCAAuB,EAAC,MAAM,EAAE,MAAM,CAAC,EAAE;YAC9C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1C,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;gBACtB,MAAM,IAAI,KAAK,CACb,oCAAoC,eAAe,EAAE,CACtD,CAAC;aACH;iBAAM;gBACL,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,EAAE;oBACtB,OAAO,SAAS,CAAC;iBAClB;gBACD,MAAM,IAAI,KAAK,CACb,wBAAwB,eAAe,wBAAwB;oBAC7D,iCAAiC,GAAG,CAAC,IAAI,2BAA2B,eAAe,IAAI,CAC1F,CAAC;aACH;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CACF,CAAC;AACJ,CAAC;AAnED,0BAmEC;AAED;;;;GAIG;AACH,SAAgB,wBAAwB,CACtC,gBAAkC;IAElC,OAAO,OAAO,CAAC,EAAE,CACf,OAAO,CAAC,gBAAgB,KAAK,gBAAgB;QAC7C,OAAO,CAAC,MAAM,CAAC,eAAQ,CAAC,iBAAiB,CAAC,KAAK,gBAAgB,CAAC;AACpE,CAAC;AAND,4DAMC;AAED;;;;GAIG;AACH,SAAgB,oBAAoB,CAClC,GAA8B,EAC9B,UAA0B,EAAE;;IAE5B,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IACxB,IAAI,CAAC,IAAI,IAAI,IAAA,yBAAe,EAAC,GAAG,CAAC,EAAE;QACjC,gDAAgD;QAChD,gDAAgD;QAChD,MAAM,UAAU,GAAG,IAAA,4BAAkB,EAAC,GAAG,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,iBAAO,CAAC,IAAI,CAAI,UAAU,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC/D,IACE,QAAQ,CAAC,MAAM,CAAC,qBAAW,CAAC,QAAQ,CAAC;YACrC,CAAC,QAAQ,CAAC,MAAM,CAAC,qBAAW,CAAC,IAAI,CAAC,EAClC;YACA,qDAAqD;YACrD,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;SAC1C;KACF;IACD,IAAI,CAAC,IAAI,IAAI,IAAA,qCAA2B,EAAC,GAAG,CAAC,EAAE;QAC7C,gDAAgD;QAChD,MAAM,UAAU,GAAG,IAAA,4BAAkB,EAAC,GAAG,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,iBAAO,CAAC,IAAI,CAAI,UAAU,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC/D,IACE,QAAQ,CAAC,MAAM,CAAC,qBAAW,CAAC,sBAAsB,CAAC;YACnD,CAAC,QAAQ,CAAC,MAAM,CAAC,qBAAW,CAAC,IAAI,CAAC,EAClC;YACA,qDAAqD;YACrD,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;SAC1C;KACF;IACD,MAAM,OAAO,GAAG,IAAA,gCAAsB,EAAC,GAAG,EAAE;QAC1C,IAAI;QACJ,IAAI,EAAE,eAAQ,CAAC,OAAO;QACtB,GAAG,OAAO;KACX,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAA,OAAO,CAAC,SAAS,mCAAI,GAAG,CAAC,CAAC,CAAC;IAC9C,OAAO,OAAO,CAAC;AACjB,CAAC;AApCD,oDAoCC;AAED;;;GAGG;AACH,SAAgB,SAAS,CAAC,gBAAkC;IAC1D,OAAO,SAAS,eAAe,CAAC,OAAgB;QAC9C,OAAO,CAAC,GAAG,CAAC;YACV,CAAC,qBAAW,CAAC,IAAI,CAAC,EAAE,eAAQ,CAAC,OAAO;YACpC,CAAC,eAAQ,CAAC,iBAAiB,CAAC,EAAE,gBAAgB;SAC/C,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAPD,8BAOC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loopback/core",
|
|
3
3
|
"description": "Define and implement core constructs such as Application and Component",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.18.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"copyright.owner": "IBM Corp.",
|
|
10
10
|
"repository": {
|
|
11
11
|
"type": "git",
|
|
12
|
-
"url": "https://github.com/
|
|
12
|
+
"url": "https://github.com/loopbackio/loopback-next.git",
|
|
13
13
|
"directory": "packages/core"
|
|
14
14
|
},
|
|
15
15
|
"engines": {
|
|
@@ -35,16 +35,16 @@
|
|
|
35
35
|
"!*/__tests__"
|
|
36
36
|
],
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@loopback/context": "^3.
|
|
39
|
-
"debug": "^4.3.
|
|
40
|
-
"tslib": "^2.
|
|
38
|
+
"@loopback/context": "^3.18.0",
|
|
39
|
+
"debug": "^4.3.2",
|
|
40
|
+
"tslib": "^2.3.1"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
|
-
"@loopback/build": "^
|
|
44
|
-
"@loopback/eslint-config": "^
|
|
45
|
-
"@loopback/testlab": "^3.4.
|
|
46
|
-
"@types/debug": "^4.1.
|
|
47
|
-
"@types/node": "^10.17.
|
|
43
|
+
"@loopback/build": "^7.0.2",
|
|
44
|
+
"@loopback/eslint-config": "^11.0.2",
|
|
45
|
+
"@loopback/testlab": "^3.4.4",
|
|
46
|
+
"@types/debug": "^4.1.7",
|
|
47
|
+
"@types/node": "^10.17.60"
|
|
48
48
|
},
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "d9a29c85dbe38f12ba219d8c495cf6038bbc3590"
|
|
50
50
|
}
|
package/src/extension-point.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// License text available at https://opensource.org/licenses/MIT
|
|
5
5
|
|
|
6
6
|
import {
|
|
7
|
+
asResolutionOptions,
|
|
7
8
|
assertTargetType,
|
|
8
9
|
Binding,
|
|
9
10
|
BindingFilter,
|
|
@@ -21,6 +22,7 @@ import {
|
|
|
21
22
|
inject,
|
|
22
23
|
injectable,
|
|
23
24
|
Injection,
|
|
25
|
+
InjectionMetadata,
|
|
24
26
|
ResolutionSession,
|
|
25
27
|
} from '@loopback/context';
|
|
26
28
|
import {CoreTags} from './keys';
|
|
@@ -69,22 +71,30 @@ export function extensionPoint(name: string, ...specs: BindingSpec[]) {
|
|
|
69
71
|
* extension point class. If a class needs to inject extensions from multiple
|
|
70
72
|
* extension points, use different `extensionPointName` for different types of
|
|
71
73
|
* extensions.
|
|
74
|
+
* @param metadata - Optional injection metadata
|
|
72
75
|
*/
|
|
73
|
-
export function extensions(
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
)
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
76
|
+
export function extensions(
|
|
77
|
+
extensionPointName?: string,
|
|
78
|
+
metadata?: InjectionMetadata,
|
|
79
|
+
) {
|
|
80
|
+
return inject(
|
|
81
|
+
'',
|
|
82
|
+
{...metadata, decorator: '@extensions'},
|
|
83
|
+
(ctx, injection, session) => {
|
|
84
|
+
assertTargetType(injection, Function, 'Getter function');
|
|
85
|
+
const bindingFilter = filterByExtensionPoint(
|
|
86
|
+
injection,
|
|
87
|
+
session,
|
|
88
|
+
extensionPointName,
|
|
89
|
+
);
|
|
90
|
+
return createViewGetter(
|
|
91
|
+
ctx,
|
|
92
|
+
bindingFilter,
|
|
93
|
+
injection.metadata.bindingComparator,
|
|
94
|
+
{...metadata, ...asResolutionOptions(session)},
|
|
95
|
+
);
|
|
96
|
+
},
|
|
97
|
+
);
|
|
88
98
|
}
|
|
89
99
|
|
|
90
100
|
export namespace extensions {
|
|
@@ -112,11 +122,15 @@ export namespace extensions {
|
|
|
112
122
|
* extension point class. If a class needs to inject extensions from multiple
|
|
113
123
|
* extension points, use different `extensionPointName` for different types of
|
|
114
124
|
* extensions.
|
|
125
|
+
* @param metadata - Optional injection metadata
|
|
115
126
|
*/
|
|
116
|
-
export function view(
|
|
127
|
+
export function view(
|
|
128
|
+
extensionPointName?: string,
|
|
129
|
+
metadata?: InjectionMetadata,
|
|
130
|
+
) {
|
|
117
131
|
return inject(
|
|
118
132
|
'',
|
|
119
|
-
{decorator: '@extensions.view'},
|
|
133
|
+
{...metadata, decorator: '@extensions.view'},
|
|
120
134
|
(ctx, injection, session) => {
|
|
121
135
|
assertTargetType(injection, ContextView);
|
|
122
136
|
const bindingFilter = filterByExtensionPoint(
|
|
@@ -127,6 +141,7 @@ export namespace extensions {
|
|
|
127
141
|
return ctx.createView(
|
|
128
142
|
bindingFilter,
|
|
129
143
|
injection.metadata.bindingComparator,
|
|
144
|
+
metadata,
|
|
130
145
|
);
|
|
131
146
|
},
|
|
132
147
|
);
|
|
@@ -156,11 +171,15 @@ export namespace extensions {
|
|
|
156
171
|
* extension point class. If a class needs to inject extensions from multiple
|
|
157
172
|
* extension points, use different `extensionPointName` for different types of
|
|
158
173
|
* extensions.
|
|
174
|
+
* @param metadata - Optional injection metadata
|
|
159
175
|
*/
|
|
160
|
-
export function list(
|
|
176
|
+
export function list(
|
|
177
|
+
extensionPointName?: string,
|
|
178
|
+
metadata?: InjectionMetadata,
|
|
179
|
+
) {
|
|
161
180
|
return inject(
|
|
162
181
|
'',
|
|
163
|
-
{decorator: '@extensions.instances'},
|
|
182
|
+
{...metadata, decorator: '@extensions.instances'},
|
|
164
183
|
(ctx, injection, session) => {
|
|
165
184
|
assertTargetType(injection, Array);
|
|
166
185
|
const bindingFilter = filterByExtensionPoint(
|
|
@@ -173,7 +192,10 @@ export namespace extensions {
|
|
|
173
192
|
bindingFilter,
|
|
174
193
|
injection.metadata.bindingComparator,
|
|
175
194
|
);
|
|
176
|
-
return viewForExtensions.resolve(
|
|
195
|
+
return viewForExtensions.resolve({
|
|
196
|
+
...metadata,
|
|
197
|
+
...asResolutionOptions(session),
|
|
198
|
+
});
|
|
177
199
|
},
|
|
178
200
|
);
|
|
179
201
|
}
|
package/src/keys.ts
CHANGED
|
@@ -30,9 +30,8 @@ export namespace CoreBindings {
|
|
|
30
30
|
/**
|
|
31
31
|
* Binding key for application configuration
|
|
32
32
|
*/
|
|
33
|
-
export const APPLICATION_CONFIG: BindingKey<ApplicationConfig> =
|
|
34
|
-
'application.config'
|
|
35
|
-
);
|
|
33
|
+
export const APPLICATION_CONFIG: BindingKey<ApplicationConfig> =
|
|
34
|
+
BindingKey.create<ApplicationConfig>('application.config');
|
|
36
35
|
|
|
37
36
|
/**
|
|
38
37
|
* Binding key for the content of `package.json`
|
|
@@ -60,9 +59,8 @@ export namespace CoreBindings {
|
|
|
60
59
|
* Binding key for the controller class resolved in the current request
|
|
61
60
|
* context
|
|
62
61
|
*/
|
|
63
|
-
export const CONTROLLER_CLASS: BindingKey<ControllerClass> =
|
|
64
|
-
'controller.current.ctor'
|
|
65
|
-
);
|
|
62
|
+
export const CONTROLLER_CLASS: BindingKey<ControllerClass> =
|
|
63
|
+
BindingKey.create<ControllerClass>('controller.current.ctor');
|
|
66
64
|
|
|
67
65
|
/**
|
|
68
66
|
* Binding key for the controller method resolved in the current request
|
|
@@ -88,16 +86,14 @@ export namespace CoreBindings {
|
|
|
88
86
|
/**
|
|
89
87
|
* Binding key for life cycle observer options
|
|
90
88
|
*/
|
|
91
|
-
export const LIFE_CYCLE_OBSERVER_REGISTRY =
|
|
92
|
-
'lifeCycleObserver.registry'
|
|
93
|
-
);
|
|
89
|
+
export const LIFE_CYCLE_OBSERVER_REGISTRY =
|
|
90
|
+
BindingKey.create<LifeCycleObserverRegistry>('lifeCycleObserver.registry');
|
|
94
91
|
|
|
95
92
|
/**
|
|
96
93
|
* Binding key for life cycle observer options
|
|
97
94
|
*/
|
|
98
|
-
export const LIFE_CYCLE_OBSERVER_OPTIONS =
|
|
99
|
-
'lifeCycleObserver.options'
|
|
100
|
-
);
|
|
95
|
+
export const LIFE_CYCLE_OBSERVER_OPTIONS =
|
|
96
|
+
BindingKey.create<LifeCycleObserverOptions>('lifeCycleObserver.options');
|
|
101
97
|
}
|
|
102
98
|
|
|
103
99
|
export namespace CoreTags {
|
|
@@ -38,6 +38,12 @@ export type LifeCycleObserverOptions = {
|
|
|
38
38
|
* observers are notified in the reverse order during `stop`.
|
|
39
39
|
*/
|
|
40
40
|
orderedGroups: string[];
|
|
41
|
+
/**
|
|
42
|
+
* Override and disable lifecycle observer groups. This setting applies to
|
|
43
|
+
* both ordered groups (i.e. those defined in `orderedGroups`) and unordered
|
|
44
|
+
* groups.
|
|
45
|
+
*/
|
|
46
|
+
disabledGroups?: string[];
|
|
41
47
|
/**
|
|
42
48
|
* Notify observers of the same group in parallel, default to `true`
|
|
43
49
|
*/
|
|
@@ -116,10 +122,8 @@ export class LifeCycleObserverRegistry implements LifeCycleObserver {
|
|
|
116
122
|
bindings: Readonly<Binding<LifeCycleObserver>>[],
|
|
117
123
|
) {
|
|
118
124
|
// Group bindings in a map
|
|
119
|
-
const groupMap: Map<
|
|
120
|
-
|
|
121
|
-
Readonly<Binding<LifeCycleObserver>>[]
|
|
122
|
-
> = new Map();
|
|
125
|
+
const groupMap: Map<string, Readonly<Binding<LifeCycleObserver>>[]> =
|
|
126
|
+
new Map();
|
|
123
127
|
sortBindingsByPhase(
|
|
124
128
|
bindings,
|
|
125
129
|
CoreTags.LIFE_CYCLE_OBSERVER_GROUP,
|
|
@@ -213,6 +217,10 @@ export class LifeCycleObserverRegistry implements LifeCycleObserver {
|
|
|
213
217
|
groups = [...groups].reverse();
|
|
214
218
|
}
|
|
215
219
|
for (const group of groups) {
|
|
220
|
+
if (this.options.disabledGroups?.includes(group.group)) {
|
|
221
|
+
debug('Notification skipped (Group is disabled): %s', group.group);
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
216
224
|
const observersForGroup: LifeCycleObserver[] = [];
|
|
217
225
|
const bindingsInGroup = reverse
|
|
218
226
|
? group.bindings.reverse()
|
package/src/mixin-target.ts
CHANGED
|
@@ -61,11 +61,9 @@ import {Constructor} from '@loopback/context';
|
|
|
61
61
|
* }
|
|
62
62
|
* ```
|
|
63
63
|
*/
|
|
64
|
-
export type MixinTarget<T extends object> = Constructor<
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
>;
|
|
64
|
+
export type MixinTarget<T extends object> = Constructor<{
|
|
65
|
+
// Enumerate only public members to avoid the following compiler error:
|
|
66
|
+
// Property '(name)' of exported class expression
|
|
67
|
+
// may not be private or protected.ts(4094)
|
|
68
|
+
[P in keyof T]: T[P];
|
|
69
|
+
}>;
|