@loopback/context 3.5.1 → 3.8.1
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 +60 -0
- package/dist/binding-config.js +1 -0
- package/dist/binding-config.js.map +1 -1
- package/dist/binding-decorator.d.ts +1 -2
- package/dist/binding-decorator.js +1 -0
- package/dist/binding-decorator.js.map +1 -1
- package/dist/binding-filter.d.ts +2 -2
- package/dist/binding-filter.js +4 -3
- package/dist/binding-filter.js.map +1 -1
- package/dist/binding-inspector.d.ts +14 -7
- package/dist/binding-inspector.js +14 -6
- package/dist/binding-inspector.js.map +1 -1
- package/dist/binding-key.d.ts +5 -0
- package/dist/binding-key.js +104 -90
- package/dist/binding-key.js.map +1 -1
- package/dist/binding-sorter.js +1 -0
- package/dist/binding-sorter.js.map +1 -1
- package/dist/binding.d.ts +84 -7
- package/dist/binding.js +120 -35
- package/dist/binding.js.map +1 -1
- package/dist/context-subscription.js +1 -0
- package/dist/context-subscription.js.map +1 -1
- package/dist/context-tag-indexer.js +1 -0
- package/dist/context-tag-indexer.js.map +1 -1
- package/dist/context-view.js +1 -0
- package/dist/context-view.js.map +1 -1
- package/dist/context.js +2 -2
- package/dist/context.js.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/inject-config.js +1 -0
- package/dist/inject-config.js.map +1 -1
- package/dist/inject.d.ts +13 -6
- package/dist/inject.js +6 -8
- package/dist/inject.js.map +1 -1
- package/dist/interception-proxy.js +1 -0
- package/dist/interception-proxy.js.map +1 -1
- package/dist/interceptor-chain.d.ts +39 -4
- package/dist/interceptor-chain.js +26 -4
- package/dist/interceptor-chain.js.map +1 -1
- package/dist/interceptor.d.ts +28 -3
- package/dist/interceptor.js +54 -0
- package/dist/interceptor.js.map +1 -1
- package/dist/invocation.js +1 -0
- package/dist/invocation.js.map +1 -1
- package/dist/keys.d.ts +5 -0
- package/dist/keys.js +6 -0
- package/dist/keys.js.map +1 -1
- package/dist/resolution-session.d.ts +26 -6
- package/dist/resolution-session.js +1 -0
- package/dist/resolution-session.js.map +1 -1
- package/dist/resolver.js +1 -0
- package/dist/resolver.js.map +1 -1
- package/dist/value-promise.d.ts +8 -4
- package/dist/value-promise.js +17 -0
- package/dist/value-promise.js.map +1 -1
- package/package.json +13 -13
- package/src/binding-decorator.ts +2 -3
- package/src/binding-filter.ts +8 -7
- package/src/binding-inspector.ts +32 -9
- package/src/binding-key.ts +12 -0
- package/src/binding.ts +210 -44
- package/src/context.ts +2 -2
- package/src/inject.ts +22 -16
- package/src/interceptor-chain.ts +66 -7
- package/src/interceptor.ts +85 -2
- package/src/keys.ts +6 -0
- package/src/resolution-session.ts +30 -2
- package/src/value-promise.ts +13 -0
- package/index.d.ts +0 -6
- package/index.js +0 -6
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { Binding } from './binding';
|
|
2
|
-
import {
|
|
2
|
+
import { BindingSelector } from './binding-filter';
|
|
3
|
+
import { Context } from './context';
|
|
4
|
+
import { Injection, InjectionMetadata } from './inject';
|
|
3
5
|
import { BoundValue, ValueOrPromise } from './value-promise';
|
|
4
6
|
/**
|
|
5
7
|
* A function to be executed with the resolution session
|
|
@@ -19,6 +21,11 @@ export interface InjectionElement {
|
|
|
19
21
|
type: 'injection';
|
|
20
22
|
value: Readonly<Injection>;
|
|
21
23
|
}
|
|
24
|
+
export interface InjectionDescriptor {
|
|
25
|
+
targetName: string;
|
|
26
|
+
bindingSelector: BindingSelector;
|
|
27
|
+
metadata: InjectionMetadata;
|
|
28
|
+
}
|
|
22
29
|
/**
|
|
23
30
|
* Binding or injection elements tracked by resolution sessions
|
|
24
31
|
*/
|
|
@@ -70,11 +77,7 @@ export declare class ResolutionSession {
|
|
|
70
77
|
* Describe the injection for debugging purpose
|
|
71
78
|
* @param injection - Injection object
|
|
72
79
|
*/
|
|
73
|
-
static describeInjection(injection: Readonly<Injection>):
|
|
74
|
-
targetName: string;
|
|
75
|
-
bindingSelector: import("./binding-filter").BindingSelector<any>;
|
|
76
|
-
metadata: import("./inject").InjectionMetadata;
|
|
77
|
-
};
|
|
80
|
+
static describeInjection(injection: Readonly<Injection>): InjectionDescriptor;
|
|
78
81
|
/**
|
|
79
82
|
* Push the injection onto the session
|
|
80
83
|
* @param injection - Injection The current injection
|
|
@@ -156,3 +159,20 @@ export declare type ResolutionOptionsOrSession = ResolutionOptions | ResolutionS
|
|
|
156
159
|
* @param optionsOrSession - resolution options or session
|
|
157
160
|
*/
|
|
158
161
|
export declare function asResolutionOptions(optionsOrSession?: ResolutionOptionsOrSession): ResolutionOptions;
|
|
162
|
+
/**
|
|
163
|
+
* Contextual metadata for resolution
|
|
164
|
+
*/
|
|
165
|
+
export interface ResolutionContext<T = unknown> {
|
|
166
|
+
/**
|
|
167
|
+
* The context for resolution
|
|
168
|
+
*/
|
|
169
|
+
readonly context: Context;
|
|
170
|
+
/**
|
|
171
|
+
* The binding to be resolved
|
|
172
|
+
*/
|
|
173
|
+
readonly binding: Readonly<Binding<T>>;
|
|
174
|
+
/**
|
|
175
|
+
* The options used for resolution
|
|
176
|
+
*/
|
|
177
|
+
readonly options: ResolutionOptions;
|
|
178
|
+
}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// This file is licensed under the MIT License.
|
|
5
5
|
// License text available at https://opensource.org/licenses/MIT
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.asResolutionOptions = exports.ResolutionSession = void 0;
|
|
7
8
|
const tslib_1 = require("tslib");
|
|
8
9
|
const metadata_1 = require("@loopback/metadata");
|
|
9
10
|
const debug_1 = tslib_1.__importDefault(require("debug"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolution-session.js","sourceRoot":"","sources":["../src/resolution-session.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,iCAAiC;AACjC,+CAA+C;AAC/C,gEAAgE
|
|
1
|
+
{"version":3,"file":"resolution-session.js","sourceRoot":"","sources":["../src/resolution-session.ts"],"names":[],"mappings":"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"}
|
package/dist/resolver.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// This file is licensed under the MIT License.
|
|
5
5
|
// License text available at https://opensource.org/licenses/MIT
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.resolveInjectedProperties = exports.resolveInjectedArguments = exports.instantiateClass = void 0;
|
|
7
8
|
const tslib_1 = require("tslib");
|
|
8
9
|
const metadata_1 = require("@loopback/metadata");
|
|
9
10
|
const assert_1 = tslib_1.__importDefault(require("assert"));
|
package/dist/resolver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,iCAAiC;AACjC,+CAA+C;AAC/C,gEAAgE
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"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"}
|
package/dist/value-promise.d.ts
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This module contains types for values and/or promises as well as a set of
|
|
3
|
-
* utility methods to handle values and/or promises.
|
|
4
|
-
*/
|
|
5
1
|
/**
|
|
6
2
|
* A class constructor accepting arbitrary arguments.
|
|
7
3
|
*/
|
|
@@ -107,3 +103,11 @@ export declare function resolveUntil<T, V>(source: Iterator<T>, resolver: (sourc
|
|
|
107
103
|
* @param transformer - A function that maps the source value to a value or promise
|
|
108
104
|
*/
|
|
109
105
|
export declare function transformValueOrPromise<T, V>(valueOrPromise: ValueOrPromise<T>, transformer: (val: T) => ValueOrPromise<V>): ValueOrPromise<V>;
|
|
106
|
+
/**
|
|
107
|
+
* A utility to generate uuid v4
|
|
108
|
+
*/
|
|
109
|
+
export declare function uuid(): string;
|
|
110
|
+
/**
|
|
111
|
+
* A regular expression for testing uuid v4 PATTERN
|
|
112
|
+
*/
|
|
113
|
+
export declare const UUID_PATTERN: RegExp;
|
package/dist/value-promise.js
CHANGED
|
@@ -4,6 +4,12 @@
|
|
|
4
4
|
// This file is licensed under the MIT License.
|
|
5
5
|
// License text available at https://opensource.org/licenses/MIT
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.UUID_PATTERN = exports.uuid = exports.transformValueOrPromise = exports.resolveUntil = exports.tryWithFinally = exports.resolveList = exports.resolveMap = exports.getDeepProperty = exports.isPromiseLike = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* This module contains types for values and/or promises as well as a set of
|
|
10
|
+
* utility methods to handle values and/or promises.
|
|
11
|
+
*/
|
|
12
|
+
const uuid_1 = require("uuid");
|
|
7
13
|
/**
|
|
8
14
|
* Check whether a value is a Promise-like instance.
|
|
9
15
|
* Recognizes both native promises and third-party promise libraries.
|
|
@@ -228,4 +234,15 @@ function transformValueOrPromise(valueOrPromise, transformer) {
|
|
|
228
234
|
}
|
|
229
235
|
}
|
|
230
236
|
exports.transformValueOrPromise = transformValueOrPromise;
|
|
237
|
+
/**
|
|
238
|
+
* A utility to generate uuid v4
|
|
239
|
+
*/
|
|
240
|
+
function uuid() {
|
|
241
|
+
return uuid_1.v4();
|
|
242
|
+
}
|
|
243
|
+
exports.uuid = uuid;
|
|
244
|
+
/**
|
|
245
|
+
* A regular expression for testing uuid v4 PATTERN
|
|
246
|
+
*/
|
|
247
|
+
exports.UUID_PATTERN = /[0-9A-F]{8}-[0-9A-F]{4}-[4][0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}/i;
|
|
231
248
|
//# sourceMappingURL=value-promise.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"value-promise.js","sourceRoot":"","sources":["../src/value-promise.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,iCAAiC;AACjC,+CAA+C;AAC/C,gEAAgE
|
|
1
|
+
{"version":3,"file":"value-promise.js","sourceRoot":"","sources":["../src/value-promise.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,iCAAiC;AACjC,+CAA+C;AAC/C,gEAAgE;;;AAEhE;;;GAGG;AAEH,+BAAkC;AAwBlC;;;;;GAKG;AACH,SAAgB,aAAa,CAC3B,KAAqC;IAErC,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IAC3E,OAAO,OAAQ,KAAwB,CAAC,IAAI,KAAK,UAAU,CAAC;AAC9D,CAAC;AAND,sCAMC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAC7B,KAAS,EACT,IAAY;IAEZ,IAAI,MAAM,GAAe,KAAK,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;QACrB,IAAI,MAAM,IAAI,IAAI,EAAE;YAClB,OAAO,SAAS,CAAC;SAClB;QACD,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;KACpB;IACD,OAAY,MAAM,CAAC;AACrB,CAAC;AAbD,0CAaC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,SAAgB,UAAU,CACxB,GAAiB,EACjB,QAAuE;IAEvE,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,IAAI,cAAc,GAAoC,SAAS,CAAC;IAEhE,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,GAAM,EAAE,EAAE;QACzC,IAAI,GAAG,KAAK,SAAS,EAAE;YACrB,qEAAqE;YACrE,4BAA4B;YAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;SACnB;IACH,CAAC,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;QACrB,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACpD,IAAI,aAAa,CAAC,cAAc,CAAC,EAAE;YACjC,IAAI,CAAC,cAAc;gBAAE,cAAc,GAAG,EAAE,CAAC;YACzC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACvD;aAAM;YACL,IAAI,cAAc,KAAK,SAAS,EAAE;gBAChC,qEAAqE;gBACrE,4BAA4B;gBAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC;aAC9B;SACF;KACF;IAED,IAAI,cAAc,EAAE;QAClB,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;KACvD;SAAM;QACL,OAAO,MAAM,CAAC;KACf;AACH,CAAC;AAlCD,gCAkCC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,SAAgB,WAAW,CACzB,IAAS,EACT,QAAiE;IAEjE,MAAM,MAAM,GAAQ,IAAI,KAAK,CAAI,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,cAAc,GAAoC,SAAS,CAAC;IAEhE,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,GAAM,EAAE,EAAE;QAC3C,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;IACtB,CAAC,CAAC;IAEF,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;QACvC,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACpD,IAAI,aAAa,CAAC,cAAc,CAAC,EAAE;YACjC,IAAI,CAAC,cAAc;gBAAE,cAAc,GAAG,EAAE,CAAC;YACzC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SACtD;aAAM;YACL,MAAM,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC;SAC7B;KACF;IAED,IAAI,cAAc,EAAE;QAClB,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;KACvD;SAAM;QACL,OAAO,MAAM,CAAC;KACf;AACH,CAAC;AA1BD,kCA0BC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAC5B,MAA+B,EAC/B,WAAuB;IAEvB,IAAI,MAAyB,CAAC;IAC9B,IAAI;QACF,MAAM,GAAG,MAAM,EAAE,CAAC;KACnB;IAAC,OAAO,GAAG,EAAE;QACZ,WAAW,EAAE,CAAC;QACd,MAAM,GAAG,CAAC;KACX;IACD,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;QACzB,0EAA0E;QAC1E,kDAAkD;QAClD,0CAA0C;QAC1C,MAAM,GAAG,MAAM,CAAC,IAAI,CAClB,GAAG,CAAC,EAAE;YACJ,WAAW,EAAE,CAAC;YACd,OAAO,GAAG,CAAC;QACb,CAAC,EACD,GAAG,CAAC,EAAE;YACJ,WAAW,EAAE,CAAC;YACd,MAAM,GAAG,CAAC;QACZ,CAAC,CACF,CAAC;KACH;SAAM;QACL,WAAW,EAAE,CAAC;KACf;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AA7BD,wCA6BC;AAED;;;;;;GAMG;AACH,SAAgB,YAAY,CAC1B,MAAmB,EACnB,QAAyD,EACzD,SAA8D;IAE9D,sEAAsE;IACtE,iDAAiD;IACjD,OAAO,IAAI,EAAE;QACX,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC,CAAC,sBAAsB;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;QAC7B,MAAM,cAAc,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,aAAa,CAAC,cAAc,CAAC,EAAE;YACjC,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;gBAC7B,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE;oBAC3B,OAAO,CAAC,CAAC;iBACV;qBAAM;oBACL,OAAO,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;iBAClD;YACH,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,IAAI,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE;gBACxC,OAAO,cAAc,CAAC;aACvB;YACD,+BAA+B;SAChC;KACF;AACH,CAAC;AA3BD,oCA2BC;AAED;;;;;GAKG;AACH,SAAgB,uBAAuB,CACrC,cAAiC,EACjC,WAA0C;IAE1C,IAAI,aAAa,CAAC,cAAc,CAAC,EAAE;QACjC,OAAO,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACzC;SAAM;QACL,OAAO,WAAW,CAAC,cAAc,CAAC,CAAC;KACpC;AACH,CAAC;AATD,0DASC;AAED;;GAEG;AACH,SAAgB,IAAI;IAClB,OAAO,SAAM,EAAE,CAAC;AAClB,CAAC;AAFD,oBAEC;AAED;;GAEG;AACU,QAAA,YAAY,GAAG,wEAAwE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loopback/context",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.8.1",
|
|
4
4
|
"description": "LoopBack's container for Inversion of Control",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
5
7
|
"engines": {
|
|
6
8
|
"node": ">=10"
|
|
7
9
|
},
|
|
@@ -18,20 +20,20 @@
|
|
|
18
20
|
"copyright.owner": "IBM Corp.",
|
|
19
21
|
"license": "MIT",
|
|
20
22
|
"dependencies": {
|
|
21
|
-
"@loopback/metadata": "^2.1.
|
|
23
|
+
"@loopback/metadata": "^2.1.5",
|
|
22
24
|
"@types/debug": "^4.1.5",
|
|
23
25
|
"debug": "^4.1.1",
|
|
24
26
|
"p-event": "^4.1.0",
|
|
25
|
-
"tslib": "^
|
|
26
|
-
"uuid": "^
|
|
27
|
+
"tslib": "^2.0.0",
|
|
28
|
+
"uuid": "^8.0.0"
|
|
27
29
|
},
|
|
28
30
|
"devDependencies": {
|
|
29
|
-
"@loopback/build": "^5.
|
|
30
|
-
"@loopback/eslint-config": "^
|
|
31
|
-
"@loopback/testlab": "^3.1.
|
|
32
|
-
"@types/bluebird": "^3.5.
|
|
33
|
-
"@types/node": "^10.17.
|
|
34
|
-
"@types/uuid": "^
|
|
31
|
+
"@loopback/build": "^5.4.1",
|
|
32
|
+
"@loopback/eslint-config": "^7.0.1",
|
|
33
|
+
"@loopback/testlab": "^3.1.5",
|
|
34
|
+
"@types/bluebird": "^3.5.31",
|
|
35
|
+
"@types/node": "^10.17.24",
|
|
36
|
+
"@types/uuid": "^8.0.0",
|
|
35
37
|
"bluebird": "^3.7.2"
|
|
36
38
|
},
|
|
37
39
|
"keywords": [
|
|
@@ -45,8 +47,6 @@
|
|
|
45
47
|
],
|
|
46
48
|
"files": [
|
|
47
49
|
"README.md",
|
|
48
|
-
"index.js",
|
|
49
|
-
"index.d.ts",
|
|
50
50
|
"dist",
|
|
51
51
|
"src",
|
|
52
52
|
"!*/__tests__"
|
|
@@ -56,5 +56,5 @@
|
|
|
56
56
|
"url": "https://github.com/strongloop/loopback-next.git",
|
|
57
57
|
"directory": "packages/context"
|
|
58
58
|
},
|
|
59
|
-
"gitHead": "
|
|
59
|
+
"gitHead": "62aea854bf85c5a5995b59e6908fe5409f7eea96"
|
|
60
60
|
}
|
package/src/binding-decorator.ts
CHANGED
|
@@ -14,7 +14,6 @@ import {
|
|
|
14
14
|
isProviderClass,
|
|
15
15
|
removeNameAndKeyTags,
|
|
16
16
|
} from './binding-inspector';
|
|
17
|
-
import {Provider} from './provider';
|
|
18
17
|
import {Constructor} from './value-promise';
|
|
19
18
|
|
|
20
19
|
/**
|
|
@@ -97,8 +96,8 @@ export namespace bind {
|
|
|
97
96
|
*/
|
|
98
97
|
export function provider(
|
|
99
98
|
...specs: BindingSpec[]
|
|
100
|
-
): (target: Constructor<
|
|
101
|
-
return (target: Constructor<
|
|
99
|
+
): (target: Constructor<unknown>) => void {
|
|
100
|
+
return (target: Constructor<unknown>) => {
|
|
102
101
|
if (!isProviderClass(target)) {
|
|
103
102
|
throw new Error(`Target ${target} is not a Provider`);
|
|
104
103
|
}
|
package/src/binding-filter.ts
CHANGED
|
@@ -144,15 +144,16 @@ export const ANY_TAG_VALUE: TagValueMatcher = (tagValue, tagName, tagMap) =>
|
|
|
144
144
|
/**
|
|
145
145
|
* Create a tag value matcher function that returns `true` if the target tag
|
|
146
146
|
* value equals to the item value or is an array that includes the item value.
|
|
147
|
-
* @param
|
|
147
|
+
* @param itemValues - A list of tag item value
|
|
148
148
|
*/
|
|
149
|
-
export function includesTagValue(
|
|
149
|
+
export function includesTagValue(...itemValues: unknown[]): TagValueMatcher {
|
|
150
150
|
return tagValue => {
|
|
151
|
-
return (
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
151
|
+
return itemValues.some(
|
|
152
|
+
itemValue =>
|
|
153
|
+
// The tag value equals the item value
|
|
154
|
+
tagValue === itemValue ||
|
|
155
|
+
// The tag value contains the item value
|
|
156
|
+
(Array.isArray(tagValue) && tagValue.includes(itemValue)),
|
|
156
157
|
);
|
|
157
158
|
};
|
|
158
159
|
}
|
package/src/binding-inspector.ts
CHANGED
|
@@ -5,7 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
import {MetadataAccessor, MetadataInspector} from '@loopback/metadata';
|
|
7
7
|
import debugFactory from 'debug';
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
Binding,
|
|
10
|
+
BindingScope,
|
|
11
|
+
BindingTag,
|
|
12
|
+
BindingTemplate,
|
|
13
|
+
DynamicValueProviderClass,
|
|
14
|
+
isDynamicValueProviderClass,
|
|
15
|
+
} from './binding';
|
|
9
16
|
import {BindingAddress} from './binding-key';
|
|
10
17
|
import {ContextTags} from './keys';
|
|
11
18
|
import {Provider} from './provider';
|
|
@@ -57,9 +64,11 @@ export type BindingSpec<T = unknown> = BindingTemplate<T> | BindingScopeAndTags;
|
|
|
57
64
|
* @typeParam T - Value type
|
|
58
65
|
*/
|
|
59
66
|
export function isProviderClass<T>(
|
|
60
|
-
cls:
|
|
67
|
+
cls: unknown,
|
|
61
68
|
): cls is Constructor<Provider<T>> {
|
|
62
|
-
return
|
|
69
|
+
return (
|
|
70
|
+
typeof cls === 'function' && typeof cls.prototype?.value === 'function'
|
|
71
|
+
);
|
|
63
72
|
}
|
|
64
73
|
|
|
65
74
|
/**
|
|
@@ -83,16 +92,21 @@ export function asProvider<T>(
|
|
|
83
92
|
* A factory function to create a template function to bind the target class
|
|
84
93
|
* as a class or `Provider`.
|
|
85
94
|
* @param target - Target class, which can be an implementation of `Provider`
|
|
95
|
+
* or `DynamicValueProviderClass`
|
|
86
96
|
*
|
|
87
97
|
* @typeParam T - Value type
|
|
88
98
|
*/
|
|
89
99
|
export function asClassOrProvider<T>(
|
|
90
|
-
target: Constructor<T | Provider<T
|
|
100
|
+
target: Constructor<T | Provider<T>> | DynamicValueProviderClass<T>,
|
|
91
101
|
): BindingTemplate<T> {
|
|
92
102
|
// Add a template to bind to a class or provider
|
|
93
103
|
return function bindAsClassOrProvider(binding) {
|
|
94
104
|
if (isProviderClass(target)) {
|
|
95
105
|
asProvider(target)(binding);
|
|
106
|
+
} else if (isDynamicValueProviderClass<T>(target)) {
|
|
107
|
+
binding.toDynamicValue(target).tag(ContextTags.DYNAMIC_VALUE_PROVIDER, {
|
|
108
|
+
[ContextTags.TYPE]: ContextTags.DYNAMIC_VALUE_PROVIDER,
|
|
109
|
+
});
|
|
96
110
|
} else {
|
|
97
111
|
binding.toClass(target as Constructor<T>);
|
|
98
112
|
}
|
|
@@ -155,7 +169,7 @@ export function removeNameAndKeyTags(binding: Binding<unknown>) {
|
|
|
155
169
|
* @typeParam T - Value type
|
|
156
170
|
*/
|
|
157
171
|
export function bindingTemplateFor<T>(
|
|
158
|
-
cls: Constructor<T | Provider<T
|
|
172
|
+
cls: Constructor<T | Provider<T>> | DynamicValueProviderClass<T>,
|
|
159
173
|
): BindingTemplate<T> {
|
|
160
174
|
const spec = getBindingMetadata(cls);
|
|
161
175
|
debug('class %s has binding metadata', cls.name, spec);
|
|
@@ -186,6 +200,7 @@ export type TypeNamespaceMapping = {[name: string]: string};
|
|
|
186
200
|
export const DEFAULT_TYPE_NAMESPACES: TypeNamespaceMapping = {
|
|
187
201
|
class: 'classes',
|
|
188
202
|
provider: 'providers',
|
|
203
|
+
dynamicValueProvider: 'dynamicValueProviders',
|
|
189
204
|
};
|
|
190
205
|
|
|
191
206
|
/**
|
|
@@ -201,17 +216,23 @@ export type BindingFromClassOptions = {
|
|
|
201
216
|
*/
|
|
202
217
|
type?: string;
|
|
203
218
|
/**
|
|
204
|
-
* Artifact name, such as `my-rest-server` and `my-controller
|
|
219
|
+
* Artifact name, such as `my-rest-server` and `my-controller`. It
|
|
220
|
+
* overrides the name tag
|
|
205
221
|
*/
|
|
206
222
|
name?: string;
|
|
207
223
|
/**
|
|
208
|
-
* Namespace for the binding key, such as `servers` and `controllers
|
|
224
|
+
* Namespace for the binding key, such as `servers` and `controllers`. It
|
|
225
|
+
* overrides the default namespace or namespace tag
|
|
209
226
|
*/
|
|
210
227
|
namespace?: string;
|
|
211
228
|
/**
|
|
212
229
|
* Mapping artifact type to binding key namespaces
|
|
213
230
|
*/
|
|
214
231
|
typeNamespaceMapping?: TypeNamespaceMapping;
|
|
232
|
+
/**
|
|
233
|
+
* Default namespace if the binding does not have an explicit namespace
|
|
234
|
+
*/
|
|
235
|
+
defaultNamespace?: string;
|
|
215
236
|
/**
|
|
216
237
|
* Default scope if the binding does not have an explicit scope
|
|
217
238
|
*/
|
|
@@ -231,7 +252,7 @@ export type BindingFromClassOptions = {
|
|
|
231
252
|
* @typeParam T - Value type
|
|
232
253
|
*/
|
|
233
254
|
export function createBindingFromClass<T>(
|
|
234
|
-
cls: Constructor<T | Provider<T
|
|
255
|
+
cls: Constructor<T | Provider<T>> | DynamicValueProviderClass<T>,
|
|
235
256
|
options: BindingFromClassOptions = {},
|
|
236
257
|
): Binding<T> {
|
|
237
258
|
debug('create binding from class %s with options', cls.name, options);
|
|
@@ -313,7 +334,9 @@ function buildBindingKey<T>(
|
|
|
313
334
|
if (key) return key;
|
|
314
335
|
|
|
315
336
|
let namespace =
|
|
316
|
-
options.namespace ??
|
|
337
|
+
options.namespace ??
|
|
338
|
+
bindingTemplate.tagMap[ContextTags.NAMESPACE] ??
|
|
339
|
+
options.defaultNamespace;
|
|
317
340
|
if (!namespace) {
|
|
318
341
|
const namespaces = Object.assign(
|
|
319
342
|
{},
|
package/src/binding-key.ts
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
// This file is licensed under the MIT License.
|
|
4
4
|
// License text available at https://opensource.org/licenses/MIT
|
|
5
5
|
|
|
6
|
+
import {uuid} from './value-promise';
|
|
7
|
+
|
|
6
8
|
export type BindingAddress<T = unknown> = string | BindingKey<T>;
|
|
7
9
|
|
|
8
10
|
export class BindingKey<ValueType> {
|
|
@@ -119,4 +121,14 @@ export class BindingKey<ValueType> {
|
|
|
119
121
|
const bindingKey = key ? `${key}:${suffix}` : suffix;
|
|
120
122
|
return bindingKey;
|
|
121
123
|
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Generate a unique binding key with `uuid`
|
|
127
|
+
* @param namespace - Namespace for the binding
|
|
128
|
+
*/
|
|
129
|
+
static generate<T>(namespace = ''): BindingKey<T> {
|
|
130
|
+
const prefix = namespace ? `${namespace}.` : '';
|
|
131
|
+
const name = uuid();
|
|
132
|
+
return BindingKey.create(`${prefix}${name}`);
|
|
133
|
+
}
|
|
122
134
|
}
|