@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.
@@ -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":";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.16.0",
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/strongloop/loopback-next.git",
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.16.0",
39
- "debug": "^4.3.1",
40
- "tslib": "^2.2.0"
38
+ "@loopback/context": "^3.18.0",
39
+ "debug": "^4.3.2",
40
+ "tslib": "^2.3.1"
41
41
  },
42
42
  "devDependencies": {
43
- "@loopback/build": "^6.4.0",
44
- "@loopback/eslint-config": "^10.2.0",
45
- "@loopback/testlab": "^3.4.0",
46
- "@types/debug": "^4.1.5",
47
- "@types/node": "^10.17.59"
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": "2ca802912d8c7750d0256f3c3d493c4525415201"
49
+ "gitHead": "d9a29c85dbe38f12ba219d8c495cf6038bbc3590"
50
50
  }
@@ -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(extensionPointName?: string) {
74
- return inject('', {decorator: '@extensions'}, (ctx, injection, session) => {
75
- assertTargetType(injection, Function, 'Getter function');
76
- const bindingFilter = filterByExtensionPoint(
77
- injection,
78
- session,
79
- extensionPointName,
80
- );
81
- return createViewGetter(
82
- ctx,
83
- bindingFilter,
84
- injection.metadata.bindingComparator,
85
- session,
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(extensionPointName?: string) {
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(extensionPointName?: string) {
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(session);
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> = BindingKey.create<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> = BindingKey.create<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 = BindingKey.create<LifeCycleObserverRegistry>(
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 = BindingKey.create<LifeCycleObserverOptions>(
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
- string,
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()
@@ -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
- // Enumerate only public members to avoid the following compiler error:
67
- // Property '(name)' of exported class expression
68
- // may not be private or protected.ts(4094)
69
- [P in keyof T]: T[P];
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
+ }>;