@loopback/context 1.23.5 → 2.0.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 +81 -0
- package/dist/binding-config.js +1 -1
- package/dist/binding-config.js.map +1 -1
- package/dist/binding-filter.d.ts +19 -1
- package/dist/binding-filter.js +40 -7
- package/dist/binding-filter.js.map +1 -1
- package/dist/binding-inspector.js +12 -11
- package/dist/binding-inspector.js.map +1 -1
- package/dist/binding-sorter.js +2 -2
- package/dist/binding-sorter.js.map +1 -1
- package/dist/binding.d.ts +42 -4
- package/dist/binding.js +40 -10
- package/dist/binding.js.map +1 -1
- package/dist/context-event.d.ts +23 -0
- package/dist/context-event.js +7 -0
- package/dist/context-event.js.map +1 -0
- package/dist/context-observer.d.ts +1 -36
- package/dist/context-subscription.d.ts +147 -0
- package/dist/context-subscription.js +336 -0
- package/dist/context-subscription.js.map +1 -0
- package/dist/context-tag-indexer.d.ts +42 -0
- package/dist/context-tag-indexer.js +134 -0
- package/dist/context-tag-indexer.js.map +1 -0
- package/dist/context-view.d.ts +2 -1
- package/dist/context-view.js +5 -2
- package/dist/context-view.js.map +1 -1
- package/dist/context.d.ts +35 -66
- package/dist/context.js +78 -250
- package/dist/context.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/inject-config.js +3 -3
- package/dist/inject-config.js.map +1 -1
- package/dist/inject.d.ts +2 -2
- package/dist/inject.js +18 -11
- package/dist/inject.js.map +1 -1
- package/dist/interception-proxy.d.ts +15 -3
- package/dist/interception-proxy.js +20 -4
- package/dist/interception-proxy.js.map +1 -1
- package/dist/interceptor-chain.js +5 -2
- package/dist/interceptor-chain.js.map +1 -1
- package/dist/interceptor.d.ts +6 -0
- package/dist/interceptor.js +38 -12
- package/dist/interceptor.js.map +1 -1
- package/dist/invocation.d.ts +20 -2
- package/dist/invocation.js +14 -12
- package/dist/invocation.js.map +1 -1
- package/dist/keys.d.ts +6 -0
- package/dist/keys.js +6 -0
- package/dist/keys.js.map +1 -1
- package/dist/resolution-session.d.ts +1 -0
- package/dist/resolution-session.js +13 -6
- package/dist/resolution-session.js.map +1 -1
- package/dist/resolver.js +13 -8
- package/dist/resolver.js.map +1 -1
- package/dist/value-promise.d.ts +1 -3
- package/package.json +9 -9
- package/src/binding-config.ts +1 -1
- package/src/binding-filter.ts +61 -9
- package/src/binding-inspector.ts +6 -8
- package/src/binding-sorter.ts +2 -2
- package/src/binding.ts +73 -9
- package/src/context-event.ts +30 -0
- package/src/context-observer.ts +1 -38
- package/src/context-subscription.ts +403 -0
- package/src/context-tag-indexer.ts +149 -0
- package/src/context-view.ts +3 -6
- package/src/context.ts +94 -293
- package/src/index.ts +5 -3
- package/src/inject-config.ts +3 -3
- package/src/inject.ts +19 -10
- package/src/interception-proxy.ts +25 -3
- package/src/interceptor-chain.ts +1 -1
- package/src/interceptor.ts +34 -8
- package/src/invocation.ts +26 -7
- package/src/keys.ts +7 -0
- package/src/resolution-session.ts +9 -5
- package/src/resolver.ts +5 -5
- package/src/value-promise.ts +1 -1
package/dist/inject.js
CHANGED
|
@@ -173,7 +173,7 @@ var Getter;
|
|
|
173
173
|
*/
|
|
174
174
|
inject.binding = function injectBinding(bindingKey, metadata) {
|
|
175
175
|
metadata = Object.assign({ decorator: '@inject.binding' }, metadata);
|
|
176
|
-
return inject(bindingKey, metadata, resolveAsBinding);
|
|
176
|
+
return inject((bindingKey !== null && bindingKey !== void 0 ? bindingKey : ''), metadata, resolveAsBinding);
|
|
177
177
|
};
|
|
178
178
|
/**
|
|
179
179
|
* Inject an array of values by a tag pattern string or regexp
|
|
@@ -236,7 +236,7 @@ function assertTargetType(injection, expectedType, expectedTypeName) {
|
|
|
236
236
|
const targetName = resolution_session_1.ResolutionSession.describeInjection(injection).targetName;
|
|
237
237
|
const targetType = inspectTargetType(injection);
|
|
238
238
|
if (targetType && targetType !== expectedType) {
|
|
239
|
-
expectedTypeName = expectedTypeName
|
|
239
|
+
expectedTypeName = (expectedTypeName !== null && expectedTypeName !== void 0 ? expectedTypeName : expectedType.name);
|
|
240
240
|
throw new Error(`The type of ${targetName} (${targetType.name}) is not ${expectedTypeName}`);
|
|
241
241
|
}
|
|
242
242
|
return targetName;
|
|
@@ -269,21 +269,27 @@ function resolveAsSetter(ctx, injection) {
|
|
|
269
269
|
if (!binding_filter_1.isBindingAddress(bindingSelector)) {
|
|
270
270
|
throw new Error(`@inject.setter (${targetName}) does not allow BindingFilter.`);
|
|
271
271
|
}
|
|
272
|
+
if (bindingSelector === '') {
|
|
273
|
+
throw new Error('Binding key is not set for @inject.setter');
|
|
274
|
+
}
|
|
272
275
|
// No resolution session should be propagated into the setter
|
|
273
276
|
return function setter(value) {
|
|
274
277
|
const binding = findOrCreateBindingForInjection(ctx, injection);
|
|
275
278
|
binding.to(value);
|
|
276
279
|
};
|
|
277
280
|
}
|
|
278
|
-
function resolveAsBinding(ctx, injection) {
|
|
281
|
+
function resolveAsBinding(ctx, injection, session) {
|
|
279
282
|
const targetName = assertTargetType(injection, binding_1.Binding);
|
|
280
283
|
const bindingSelector = injection.bindingSelector;
|
|
281
284
|
if (!binding_filter_1.isBindingAddress(bindingSelector)) {
|
|
282
285
|
throw new Error(`@inject.binding (${targetName}) does not allow BindingFilter.`);
|
|
283
286
|
}
|
|
284
|
-
return findOrCreateBindingForInjection(ctx, injection);
|
|
287
|
+
return findOrCreateBindingForInjection(ctx, injection, session);
|
|
285
288
|
}
|
|
286
|
-
function findOrCreateBindingForInjection(ctx, injection) {
|
|
289
|
+
function findOrCreateBindingForInjection(ctx, injection, session) {
|
|
290
|
+
var _a;
|
|
291
|
+
if (injection.bindingSelector === '')
|
|
292
|
+
return (_a = session) === null || _a === void 0 ? void 0 : _a.currentBinding;
|
|
287
293
|
const bindingCreation = injection.metadata &&
|
|
288
294
|
injection.metadata.bindingCreation;
|
|
289
295
|
const binding = ctx.findOrCreateBinding(injection.bindingSelector, bindingCreation);
|
|
@@ -354,11 +360,12 @@ function shouldSkipBaseConstructorInjection(targetClass) {
|
|
|
354
360
|
* @param method - Method name, undefined for constructor
|
|
355
361
|
*/
|
|
356
362
|
function describeInjectedArguments(target, method) {
|
|
357
|
-
|
|
363
|
+
var _a, _b;
|
|
364
|
+
method = (method !== null && method !== void 0 ? method : '');
|
|
358
365
|
// Try to read from cache
|
|
359
|
-
const cache = metadata_1.MetadataInspector.getAllMethodMetadata(METHODS_KEY, target, {
|
|
366
|
+
const cache = (_a = metadata_1.MetadataInspector.getAllMethodMetadata(METHODS_KEY, target, {
|
|
360
367
|
ownMetadataOnly: true,
|
|
361
|
-
})
|
|
368
|
+
}), (_a !== null && _a !== void 0 ? _a : {}));
|
|
362
369
|
let meta = cache[method];
|
|
363
370
|
if (meta)
|
|
364
371
|
return meta;
|
|
@@ -374,8 +381,7 @@ function describeInjectedArguments(target, method) {
|
|
|
374
381
|
// should be honored
|
|
375
382
|
options.ownMetadataOnly = true;
|
|
376
383
|
}
|
|
377
|
-
meta =
|
|
378
|
-
metadata_1.MetadataInspector.getAllParameterMetadata(PARAMETERS_KEY, target, method, options) || [];
|
|
384
|
+
meta = (_b = metadata_1.MetadataInspector.getAllParameterMetadata(PARAMETERS_KEY, target, method, options), (_b !== null && _b !== void 0 ? _b : []));
|
|
379
385
|
// Cache the result
|
|
380
386
|
cache[method] = meta;
|
|
381
387
|
metadata_1.MetadataInspector.defineMetadata(METHODS_KEY, cache, target);
|
|
@@ -442,7 +448,8 @@ function resolveAsContextView(ctx, injection) {
|
|
|
442
448
|
* prototype for instance properties.
|
|
443
449
|
*/
|
|
444
450
|
function describeInjectedProperties(target) {
|
|
445
|
-
|
|
451
|
+
var _a;
|
|
452
|
+
const metadata = (_a = metadata_1.MetadataInspector.getAllPropertyMetadata(PROPERTIES_KEY, target), (_a !== null && _a !== void 0 ? _a : {}));
|
|
446
453
|
return metadata;
|
|
447
454
|
}
|
|
448
455
|
exports.describeInjectedProperties = describeInjectedProperties;
|
package/dist/inject.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inject.js","sourceRoot":"","sources":["../src/inject.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"inject.js","sourceRoot":"","sources":["../src/inject.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Context } from './context';
|
|
2
|
-
import { InvocationArgs } from './invocation';
|
|
2
|
+
import { InvocationArgs, InvocationSource } from './invocation';
|
|
3
|
+
import { ResolutionSession } from './resolution-session';
|
|
3
4
|
import { ValueOrPromise } from './value-promise';
|
|
4
5
|
/**
|
|
5
6
|
* Create the Promise type for `T`. If `T` extends `Promise`, the type is `T`,
|
|
@@ -43,6 +44,16 @@ export declare type AsInterceptedFunction<T> = T extends (...args: InvocationArg
|
|
|
43
44
|
export declare type AsyncProxy<T> = {
|
|
44
45
|
[P in keyof T]: AsInterceptedFunction<T[P]>;
|
|
45
46
|
};
|
|
47
|
+
/**
|
|
48
|
+
* Invocation source for injected proxies. It wraps a snapshot of the
|
|
49
|
+
* `ResolutionSession` that tracks the binding/injection stack.
|
|
50
|
+
*/
|
|
51
|
+
export declare class ProxySource implements InvocationSource<ResolutionSession> {
|
|
52
|
+
readonly value: ResolutionSession;
|
|
53
|
+
type: string;
|
|
54
|
+
constructor(value: ResolutionSession);
|
|
55
|
+
toString(): string;
|
|
56
|
+
}
|
|
46
57
|
/**
|
|
47
58
|
* A proxy handler that applies interceptors
|
|
48
59
|
*
|
|
@@ -50,7 +61,8 @@ export declare type AsyncProxy<T> = {
|
|
|
50
61
|
*/
|
|
51
62
|
export declare class InterceptionHandler<T extends object> implements ProxyHandler<T> {
|
|
52
63
|
private context;
|
|
53
|
-
|
|
64
|
+
private session?;
|
|
65
|
+
constructor(context?: Context, session?: ResolutionSession | undefined);
|
|
54
66
|
get(target: T, propertyName: PropertyKey, receiver: unknown): any;
|
|
55
67
|
}
|
|
56
68
|
/**
|
|
@@ -58,4 +70,4 @@ export declare class InterceptionHandler<T extends object> implements ProxyHandl
|
|
|
58
70
|
* @param target - Target class or object
|
|
59
71
|
* @param context - Context object
|
|
60
72
|
*/
|
|
61
|
-
export declare function createProxyWithInterceptors<T extends object>(target: T, context?: Context): AsyncProxy<T>;
|
|
73
|
+
export declare function createProxyWithInterceptors<T extends object>(target: T, context?: Context, session?: ResolutionSession): AsyncProxy<T>;
|
|
@@ -6,14 +6,30 @@
|
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
const context_1 = require("./context");
|
|
8
8
|
const interceptor_1 = require("./interceptor");
|
|
9
|
+
const resolution_session_1 = require("./resolution-session");
|
|
10
|
+
/**
|
|
11
|
+
* Invocation source for injected proxies. It wraps a snapshot of the
|
|
12
|
+
* `ResolutionSession` that tracks the binding/injection stack.
|
|
13
|
+
*/
|
|
14
|
+
class ProxySource {
|
|
15
|
+
constructor(value) {
|
|
16
|
+
this.value = value;
|
|
17
|
+
this.type = 'proxy';
|
|
18
|
+
}
|
|
19
|
+
toString() {
|
|
20
|
+
return this.value.getBindingPath();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.ProxySource = ProxySource;
|
|
9
24
|
/**
|
|
10
25
|
* A proxy handler that applies interceptors
|
|
11
26
|
*
|
|
12
27
|
* See https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Proxy
|
|
13
28
|
*/
|
|
14
29
|
class InterceptionHandler {
|
|
15
|
-
constructor(context = new context_1.Context()) {
|
|
30
|
+
constructor(context = new context_1.Context(), session) {
|
|
16
31
|
this.context = context;
|
|
32
|
+
this.session = session;
|
|
17
33
|
}
|
|
18
34
|
get(target, propertyName, receiver) {
|
|
19
35
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -23,7 +39,7 @@ class InterceptionHandler {
|
|
|
23
39
|
const propertyOrMethod = targetObj[propertyName];
|
|
24
40
|
if (typeof propertyOrMethod === 'function') {
|
|
25
41
|
return (...args) => {
|
|
26
|
-
return interceptor_1.invokeMethodWithInterceptors(this.context, target, propertyName, args);
|
|
42
|
+
return interceptor_1.invokeMethodWithInterceptors(this.context, target, propertyName, args, { source: this.session && new ProxySource(this.session) });
|
|
27
43
|
};
|
|
28
44
|
}
|
|
29
45
|
else {
|
|
@@ -37,8 +53,8 @@ exports.InterceptionHandler = InterceptionHandler;
|
|
|
37
53
|
* @param target - Target class or object
|
|
38
54
|
* @param context - Context object
|
|
39
55
|
*/
|
|
40
|
-
function createProxyWithInterceptors(target, context) {
|
|
41
|
-
return new Proxy(target, new InterceptionHandler(context));
|
|
56
|
+
function createProxyWithInterceptors(target, context, session) {
|
|
57
|
+
return new Proxy(target, new InterceptionHandler(context, resolution_session_1.ResolutionSession.fork(session)));
|
|
42
58
|
}
|
|
43
59
|
exports.createProxyWithInterceptors = createProxyWithInterceptors;
|
|
44
60
|
//# sourceMappingURL=interception-proxy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interception-proxy.js","sourceRoot":"","sources":["../src/interception-proxy.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,iCAAiC;AACjC,+CAA+C;AAC/C,gEAAgE;;AAEhE,uCAAkC;AAClC,+CAA2D;
|
|
1
|
+
{"version":3,"file":"interception-proxy.js","sourceRoot":"","sources":["../src/interception-proxy.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,iCAAiC;AACjC,+CAA+C;AAC/C,gEAAgE;;AAEhE,uCAAkC;AAClC,+CAA2D;AAE3D,6DAAuD;AAoDvD;;;GAGG;AACH,MAAa,WAAW;IAEtB,YAAqB,KAAwB;QAAxB,UAAK,GAAL,KAAK,CAAmB;QAD7C,SAAI,GAAG,OAAO,CAAC;IACiC,CAAC;IAEjD,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;IACrC,CAAC;CACF;AAPD,kCAOC;AAED;;;;GAIG;AACH,MAAa,mBAAmB;IAC9B,YACU,UAAU,IAAI,iBAAO,EAAE,EACvB,OAA2B;QAD3B,YAAO,GAAP,OAAO,CAAgB;QACvB,YAAO,GAAP,OAAO,CAAoB;IAClC,CAAC;IAEJ,GAAG,CAAC,MAAS,EAAE,YAAyB,EAAE,QAAiB;QACzD,8DAA8D;QAC9D,MAAM,SAAS,GAAG,MAAa,CAAC;QAChC,IAAI,OAAO,YAAY,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC,YAAY,CAAC,CAAC;QACrE,MAAM,gBAAgB,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;QACjD,IAAI,OAAO,gBAAgB,KAAK,UAAU,EAAE;YAC1C,OAAO,CAAC,GAAG,IAAoB,EAAE,EAAE;gBACjC,OAAO,0CAA4B,CACjC,IAAI,CAAC,OAAO,EACZ,MAAM,EACN,YAAY,EACZ,IAAI,EACJ,EAAC,MAAM,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAC,CACxD,CAAC;YACJ,CAAC,CAAC;SACH;aAAM;YACL,OAAO,gBAAgB,CAAC;SACzB;IACH,CAAC;CACF;AAzBD,kDAyBC;AAED;;;;GAIG;AACH,SAAgB,2BAA2B,CACzC,MAAS,EACT,OAAiB,EACjB,OAA2B;IAE3B,OAAO,IAAI,KAAK,CACd,MAAM,EACN,IAAI,mBAAmB,CAAC,OAAO,EAAE,sCAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CACjD,CAAC;AACrB,CAAC;AATD,kEASC"}
|
|
@@ -3,10 +3,13 @@
|
|
|
3
3
|
// Node module: @loopback/context
|
|
4
4
|
// This file is licensed under the MIT License.
|
|
5
5
|
// License text available at https://opensource.org/licenses/MIT
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
6
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
const
|
|
10
|
+
const debug_1 = __importDefault(require("debug"));
|
|
8
11
|
const value_promise_1 = require("./value-promise");
|
|
9
|
-
const debug =
|
|
12
|
+
const debug = debug_1.default('loopback:context:interceptor-chain');
|
|
10
13
|
/**
|
|
11
14
|
* Invocation state of an interceptor chain
|
|
12
15
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interceptor-chain.js","sourceRoot":"","sources":["../src/interceptor-chain.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,iCAAiC;AACjC,+CAA+C;AAC/C,gEAAgE
|
|
1
|
+
{"version":3,"file":"interceptor-chain.js","sourceRoot":"","sources":["../src/interceptor-chain.ts"],"names":[],"mappings":"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"}
|
package/dist/interceptor.d.ts
CHANGED
|
@@ -14,6 +14,12 @@ export declare class InterceptedInvocationContext extends InvocationContext {
|
|
|
14
14
|
* ContextTags.GLOBAL_INTERCEPTOR)
|
|
15
15
|
*/
|
|
16
16
|
getGlobalInterceptorBindingKeys(): string[];
|
|
17
|
+
/**
|
|
18
|
+
* Check if the binding for a global interceptor matches the source type
|
|
19
|
+
* of the invocation
|
|
20
|
+
* @param binding - Binding
|
|
21
|
+
*/
|
|
22
|
+
private applicableTo;
|
|
17
23
|
/**
|
|
18
24
|
* Sort global interceptor bindings by `globalInterceptorGroup` tags
|
|
19
25
|
* @param bindings - An array of global interceptor bindings
|
package/dist/interceptor.js
CHANGED
|
@@ -3,18 +3,20 @@
|
|
|
3
3
|
// Node module: @loopback/context
|
|
4
4
|
// This file is licensed under the MIT License.
|
|
5
5
|
// License text available at https://opensource.org/licenses/MIT
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
6
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
10
|
const metadata_1 = require("@loopback/metadata");
|
|
8
|
-
const
|
|
9
|
-
const
|
|
11
|
+
const assert_1 = __importDefault(require("assert"));
|
|
12
|
+
const debug_1 = __importDefault(require("debug"));
|
|
10
13
|
const binding_decorator_1 = require("./binding-decorator");
|
|
11
|
-
const binding_filter_1 = require("./binding-filter");
|
|
12
14
|
const binding_sorter_1 = require("./binding-sorter");
|
|
13
15
|
const interceptor_chain_1 = require("./interceptor-chain");
|
|
14
16
|
const invocation_1 = require("./invocation");
|
|
15
17
|
const keys_1 = require("./keys");
|
|
16
18
|
const value_promise_1 = require("./value-promise");
|
|
17
|
-
const debug =
|
|
19
|
+
const debug = debug_1.default('loopback:context:interceptor');
|
|
18
20
|
/**
|
|
19
21
|
* A specialized InvocationContext for interceptors
|
|
20
22
|
*/
|
|
@@ -24,21 +26,45 @@ class InterceptedInvocationContext extends invocation_1.InvocationContext {
|
|
|
24
26
|
* ContextTags.GLOBAL_INTERCEPTOR)
|
|
25
27
|
*/
|
|
26
28
|
getGlobalInterceptorBindingKeys() {
|
|
27
|
-
|
|
29
|
+
let bindings = this.findByTag(keys_1.ContextTags.GLOBAL_INTERCEPTOR);
|
|
30
|
+
bindings = bindings.filter(binding =>
|
|
31
|
+
// Only include interceptors that match the source type of the invocation
|
|
32
|
+
this.applicableTo(binding));
|
|
28
33
|
this.sortGlobalInterceptorBindings(bindings);
|
|
29
34
|
const keys = bindings.map(b => b.key);
|
|
30
35
|
debug('Global interceptor binding keys:', keys);
|
|
31
36
|
return keys;
|
|
32
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Check if the binding for a global interceptor matches the source type
|
|
40
|
+
* of the invocation
|
|
41
|
+
* @param binding - Binding
|
|
42
|
+
*/
|
|
43
|
+
applicableTo(binding) {
|
|
44
|
+
var _a;
|
|
45
|
+
const sourceType = (_a = this.source) === null || _a === void 0 ? void 0 : _a.type;
|
|
46
|
+
// Unknown source type, always apply
|
|
47
|
+
if (sourceType == null)
|
|
48
|
+
return true;
|
|
49
|
+
const allowedSource = binding.tagMap[keys_1.ContextTags.GLOBAL_INTERCEPTOR_SOURCE];
|
|
50
|
+
return (
|
|
51
|
+
// No tag, always apply
|
|
52
|
+
allowedSource == null ||
|
|
53
|
+
// source matched
|
|
54
|
+
allowedSource === sourceType ||
|
|
55
|
+
// source included in the string[]
|
|
56
|
+
(Array.isArray(allowedSource) && allowedSource.includes(sourceType)));
|
|
57
|
+
}
|
|
33
58
|
/**
|
|
34
59
|
* Sort global interceptor bindings by `globalInterceptorGroup` tags
|
|
35
60
|
* @param bindings - An array of global interceptor bindings
|
|
36
61
|
*/
|
|
37
62
|
sortGlobalInterceptorBindings(bindings) {
|
|
63
|
+
var _a;
|
|
38
64
|
// Get predefined ordered groups for global interceptors
|
|
39
|
-
const orderedGroups = this.getSync(keys_1.ContextBindings.GLOBAL_INTERCEPTOR_ORDERED_GROUPS, {
|
|
65
|
+
const orderedGroups = (_a = this.getSync(keys_1.ContextBindings.GLOBAL_INTERCEPTOR_ORDERED_GROUPS, {
|
|
40
66
|
optional: true,
|
|
41
|
-
})
|
|
67
|
+
}), (_a !== null && _a !== void 0 ? _a : []));
|
|
42
68
|
return binding_sorter_1.sortBindingsByPhase(bindings, keys_1.ContextTags.GLOBAL_INTERCEPTOR_GROUP, orderedGroups);
|
|
43
69
|
}
|
|
44
70
|
/**
|
|
@@ -49,10 +75,10 @@ class InterceptedInvocationContext extends invocation_1.InvocationContext {
|
|
|
49
75
|
* 3. global interceptors discovered in the context
|
|
50
76
|
*/
|
|
51
77
|
loadInterceptors() {
|
|
52
|
-
|
|
78
|
+
var _a, _b;
|
|
79
|
+
let interceptors = (_a = metadata_1.MetadataInspector.getMethodMetadata(exports.INTERCEPT_METHOD_KEY, this.target, this.methodName), (_a !== null && _a !== void 0 ? _a : []));
|
|
53
80
|
const targetClass = typeof this.target === 'function' ? this.target : this.target.constructor;
|
|
54
|
-
const classInterceptors = metadata_1.MetadataInspector.getClassMetadata(exports.INTERCEPT_CLASS_KEY, targetClass)
|
|
55
|
-
[];
|
|
81
|
+
const classInterceptors = (_b = metadata_1.MetadataInspector.getClassMetadata(exports.INTERCEPT_CLASS_KEY, targetClass), (_b !== null && _b !== void 0 ? _b : []));
|
|
56
82
|
// Inserting class level interceptors before method level ones
|
|
57
83
|
interceptors = mergeInterceptors(classInterceptors, interceptors);
|
|
58
84
|
const globalInterceptors = this.getGlobalInterceptorBindingKeys();
|
|
@@ -206,8 +232,8 @@ exports.intercept = intercept;
|
|
|
206
232
|
function invokeMethodWithInterceptors(context, target, methodName, args, options = {}) {
|
|
207
233
|
// Do not allow `skipInterceptors` as it's against the function name
|
|
208
234
|
// `invokeMethodWithInterceptors`
|
|
209
|
-
|
|
210
|
-
const invocationCtx = new InterceptedInvocationContext(context, target, methodName, args);
|
|
235
|
+
assert_1.default(!options.skipInterceptors, 'skipInterceptors is not allowed');
|
|
236
|
+
const invocationCtx = new InterceptedInvocationContext(context, target, methodName, args, options.source);
|
|
211
237
|
invocationCtx.assertMethodExists();
|
|
212
238
|
return value_promise_1.tryWithFinally(() => {
|
|
213
239
|
const interceptors = invocationCtx.loadInterceptors();
|
package/dist/interceptor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interceptor.js","sourceRoot":"","sources":["../src/interceptor.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,iCAAiC;AACjC,+CAA+C;AAC/C,gEAAgE
|
|
1
|
+
{"version":3,"file":"interceptor.js","sourceRoot":"","sources":["../src/interceptor.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,iCAAiC;AACjC,+CAA+C;AAC/C,gEAAgE;;;;;AAEhE,iDAO4B;AAC5B,oDAA4B;AAC5B,kDAAiC;AAEjC,2DAAyC;AAEzC,qDAAqD;AAErD,2DAI6B;AAC7B,6CAKsB;AACtB,iCAIgB;AAChB,mDAA+D;AAC/D,MAAM,KAAK,GAAG,eAAY,CAAC,8BAA8B,CAAC,CAAC;AAE3D;;GAEG;AACH,MAAa,4BAA6B,SAAQ,8BAAiB;IACjE;;;OAGG;IACH,+BAA+B;QAC7B,IAAI,QAAQ,GAAqC,IAAI,CAAC,SAAS,CAC7D,kBAAW,CAAC,kBAAkB,CAC/B,CAAC;QACF,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;QACnC,yEAAyE;QACzE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAC3B,CAAC;QAEF,IAAI,CAAC,6BAA6B,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACtC,KAAK,CAAC,kCAAkC,EAAE,IAAI,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACK,YAAY,CAAC,OAAmC;;QACtD,MAAM,UAAU,SAAG,IAAI,CAAC,MAAM,0CAAE,IAAI,CAAC;QACrC,oCAAoC;QACpC,IAAI,UAAU,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QACpC,MAAM,aAAa,GACjB,OAAO,CAAC,MAAM,CAAC,kBAAW,CAAC,yBAAyB,CAAC,CAAC;QACxD,OAAO;QACL,uBAAuB;QACvB,aAAa,IAAI,IAAI;YACrB,iBAAiB;YACjB,aAAa,KAAK,UAAU;YAC5B,kCAAkC;YAClC,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CACrE,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,6BAA6B,CACnC,QAA0C;;QAE1C,wDAAwD;QACxD,MAAM,aAAa,SACjB,IAAI,CAAC,OAAO,CAAC,sBAAe,CAAC,iCAAiC,EAAE;YAC9D,QAAQ,EAAE,IAAI;SACf,CAAC,uCAAI,EAAE,EAAA,CAAC;QACX,OAAO,oCAAmB,CACxB,QAAQ,EACR,kBAAW,CAAC,wBAAwB,EACpC,aAAa,CACd,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,gBAAgB;;QACd,IAAI,YAAY,SACd,4BAAiB,CAAC,iBAAiB,CACjC,4BAAoB,EACpB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,UAAU,CAChB,uCAAI,EAAE,EAAA,CAAC;QACV,MAAM,WAAW,GACf,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QAC5E,MAAM,iBAAiB,SACrB,4BAAiB,CAAC,gBAAgB,CAAC,2BAAmB,EAAE,WAAW,CAAC,uCACpE,EAAE,EAAA,CAAC;QACL,8DAA8D;QAC9D,YAAY,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;QAClE,MAAM,kBAAkB,GAAG,IAAI,CAAC,+BAA+B,EAAE,CAAC;QAClE,gCAAgC;QAChC,YAAY,GAAG,iBAAiB,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;QACnE,KAAK,CAAC,qBAAqB,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAC5D,OAAO,YAAY,CAAC;IACtB,CAAC;CACF;AAvFD,oEAuFC;AAED;;;;GAIG;AACH,SAAgB,mBAAmB,CAAC,KAAc;IAChD,OAAO,OAAO,CAAC,EAAE;QACf,OAAO;YACL,iDAAiD;aAChD,GAAG,CAAC,kBAAW,CAAC,kBAAkB,CAAC;YACpC,2EAA2E;aAC1E,GAAG,CAAC,EAAC,CAAC,kBAAW,CAAC,SAAS,CAAC,EAAE,mCAA4B,EAAC,CAAC,CAAC;QAChE,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,EAAC,CAAC,kBAAW,CAAC,wBAAwB,CAAC,EAAE,KAAK,EAAC,CAAC,CAAC;IAC1E,CAAC,CAAC;AACJ,CAAC;AATD,kDASC;AAED;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,KAAc,EAAE,GAAG,KAAoB;IACvE,OAAO,wBAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;AACpD,CAAC;AAFD,8CAEC;AAaD;;GAEG;AACU,QAAA,oBAAoB,GAAG,2BAAgB,CAAC,MAAM,CAGzD,kBAAkB,CAAC,CAAC;AAEtB;;;;;;;;;;;;;;GAcG;AACH,SAAgB,iBAAiB,CAC/B,oBAAwC,EACxC,oBAAwC;IAExC,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC1D,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC1D,yCAAyC;IACzC,KAAK,MAAM,CAAC,IAAI,mBAAmB,EAAE;QACnC,IAAI,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC9B,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SAC/B;KACF;IACD,qDAAqD;IACrD,KAAK,MAAM,CAAC,IAAI,mBAAmB,EAAE;QACnC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KAC5B;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACzC,CAAC;AAjBD,8CAiBC;AAED;;GAEG;AACU,QAAA,mBAAmB,GAAG,2BAAgB,CAAC,MAAM,CAGxD,iBAAiB,CAAC,CAAC;AAErB;;;GAGG;AACH,MAAM,8BAA+B,SAAQ,gCAE5C;IACW,YAAY,CAAC,WAA+B,EAAE,MAAc;QACpE,WAAW,GAAG,WAAW,IAAI,EAAE,CAAC;QAChC,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACnD,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,+BAAgC,SAAQ,iCAE7C;IACW,YAAY,CACpB,WAA4C,EAC5C,MAAc,EACd,UAAkB,EAClB,gBAAkD;QAElD,WAAW,GAAG,WAAW,IAAI,EAAE,CAAC;QAChC,MAAM,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAEnD,kCAAkC;QAClC,WAAW,CAAC,UAAU,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAErE,OAAO,WAAW,CAAC;IACrB,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAgB,SAAS,CAAC,GAAG,iBAAqC;IAChE,OAAO,SAAS,kCAAkC;IAChD,uBAAuB;IACvB,8DAA8D;IAC9D,MAAW,EACX,MAAe;IACf,6CAA6C;IAC7C,4DAA4D;IAC5D,8DAA8D;IAC9D,gBAA+C;QAE/C,IAAI,MAAM,IAAI,gBAAgB,EAAE;YAC9B,SAAS;YACT,OAAO,+BAA+B,CAAC,eAAe,CACpD,4BAAoB,EACpB,iBAAiB,EACjB,EAAC,aAAa,EAAE,YAAY,EAAC,CAC9B,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAiB,CAAC,CAAC;SACtC;QACD,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE;YAChE,QAAQ;YACR,OAAO,8BAA8B,CAAC,eAAe,CACnD,2BAAmB,EACnB,iBAAiB,EACjB,EAAC,aAAa,EAAE,YAAY,EAAC,CAC9B,CAAC,MAAM,CAAC,CAAC;SACX;QACD,2BAA2B;QAC3B,MAAM,IAAI,KAAK,CACb,2CAA2C;YACzC,2BAAgB,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,CACnE,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAjCD,8BAiCC;AAED;;;;;;;GAOG;AACH,SAAgB,4BAA4B,CAC1C,OAAgB,EAChB,MAAc,EACd,UAAkB,EAClB,IAAoB,EACpB,UAA6B,EAAE;IAE/B,oEAAoE;IACpE,iCAAiC;IACjC,gBAAM,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,iCAAiC,CAAC,CAAC;IACrE,MAAM,aAAa,GAAG,IAAI,4BAA4B,CACpD,OAAO,EACP,MAAM,EACN,UAAU,EACV,IAAI,EACJ,OAAO,CAAC,MAAM,CACf,CAAC;IAEF,aAAa,CAAC,kBAAkB,EAAE,CAAC;IACnC,OAAO,8BAAc,CACnB,GAAG,EAAE;QACH,MAAM,YAAY,GAAG,aAAa,CAAC,gBAAgB,EAAE,CAAC;QACtD,MAAM,mBAAmB,GAAG,GAAG,EAAE,CAC/B,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC5C,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACvC,OAAO,sCAAkB,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IACzD,CAAC,EACD,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,CAC5B,CAAC;AACJ,CAAC;AA7BD,oEA6BC"}
|
package/dist/invocation.d.ts
CHANGED
|
@@ -8,16 +8,29 @@ export declare type InvocationResult = any;
|
|
|
8
8
|
* Array of arguments for a method invocation
|
|
9
9
|
*/
|
|
10
10
|
export declare type InvocationArgs = any[];
|
|
11
|
+
/**
|
|
12
|
+
* An interface to represent the caller of the invocation
|
|
13
|
+
*/
|
|
14
|
+
export interface InvocationSource<T = unknown> {
|
|
15
|
+
/**
|
|
16
|
+
* Type of the invoker, such as `proxy` and `route`
|
|
17
|
+
*/
|
|
18
|
+
readonly type: string;
|
|
19
|
+
/**
|
|
20
|
+
* Metadata for the source, such as `ResolutionSession`
|
|
21
|
+
*/
|
|
22
|
+
readonly value: T;
|
|
23
|
+
}
|
|
11
24
|
/**
|
|
12
25
|
* InvocationContext represents the context to invoke interceptors for a method.
|
|
13
26
|
* The context can be used to access metadata about the invocation as well as
|
|
14
27
|
* other dependencies.
|
|
15
28
|
*/
|
|
16
29
|
export declare class InvocationContext extends Context {
|
|
17
|
-
readonly parent: Context;
|
|
18
30
|
readonly target: object;
|
|
19
31
|
readonly methodName: string;
|
|
20
32
|
readonly args: InvocationArgs;
|
|
33
|
+
readonly source?: InvocationSource<unknown> | undefined;
|
|
21
34
|
/**
|
|
22
35
|
* Construct a new instance of `InvocationContext`
|
|
23
36
|
* @param parent - Parent context, such as the RequestContext
|
|
@@ -26,7 +39,7 @@ export declare class InvocationContext extends Context {
|
|
|
26
39
|
* @param methodName - Method name
|
|
27
40
|
* @param args - An array of arguments
|
|
28
41
|
*/
|
|
29
|
-
constructor(parent: Context, target: object, methodName: string, args: InvocationArgs);
|
|
42
|
+
constructor(parent: Context, target: object, methodName: string, args: InvocationArgs, source?: InvocationSource<unknown> | undefined);
|
|
30
43
|
/**
|
|
31
44
|
* The target class, such as `OrderController`
|
|
32
45
|
*/
|
|
@@ -64,6 +77,11 @@ export declare type InvocationOptions = {
|
|
|
64
77
|
* Skip invocation of interceptors
|
|
65
78
|
*/
|
|
66
79
|
skipInterceptors?: boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Information about the source object that makes the invocation. For REST,
|
|
82
|
+
* it's a `Route`. For injected proxies, it's a `Binding`.
|
|
83
|
+
*/
|
|
84
|
+
source?: InvocationSource;
|
|
67
85
|
};
|
|
68
86
|
/**
|
|
69
87
|
* Invoke a method using dependency injection. Interceptors are invoked as part
|
package/dist/invocation.js
CHANGED
|
@@ -3,15 +3,18 @@
|
|
|
3
3
|
// Node module: @loopback/context
|
|
4
4
|
// This file is licensed under the MIT License.
|
|
5
5
|
// License text available at https://opensource.org/licenses/MIT
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
6
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
10
|
const metadata_1 = require("@loopback/metadata");
|
|
8
|
-
const
|
|
9
|
-
const
|
|
11
|
+
const assert_1 = __importDefault(require("assert"));
|
|
12
|
+
const debug_1 = __importDefault(require("debug"));
|
|
10
13
|
const context_1 = require("./context");
|
|
11
14
|
const interceptor_1 = require("./interceptor");
|
|
12
15
|
const resolver_1 = require("./resolver");
|
|
13
16
|
const value_promise_1 = require("./value-promise");
|
|
14
|
-
const debug =
|
|
17
|
+
const debug = debug_1.default('loopback:context:invocation');
|
|
15
18
|
const getTargetName = metadata_1.DecoratorFactory.getTargetName;
|
|
16
19
|
/**
|
|
17
20
|
* InvocationContext represents the context to invoke interceptors for a method.
|
|
@@ -27,15 +30,12 @@ class InvocationContext extends context_1.Context {
|
|
|
27
30
|
* @param methodName - Method name
|
|
28
31
|
* @param args - An array of arguments
|
|
29
32
|
*/
|
|
30
|
-
constructor(
|
|
31
|
-
// Make `parent` public so that the interceptor can add bindings to
|
|
32
|
-
// the request context, for example, tracing id
|
|
33
|
-
parent, target, methodName, args) {
|
|
33
|
+
constructor(parent, target, methodName, args, source) {
|
|
34
34
|
super(parent);
|
|
35
|
-
this.parent = parent;
|
|
36
35
|
this.target = target;
|
|
37
36
|
this.methodName = methodName;
|
|
38
37
|
this.args = args;
|
|
38
|
+
this.source = source;
|
|
39
39
|
}
|
|
40
40
|
/**
|
|
41
41
|
* The target class, such as `OrderController`
|
|
@@ -55,7 +55,8 @@ class InvocationContext extends context_1.Context {
|
|
|
55
55
|
* Description of the invocation
|
|
56
56
|
*/
|
|
57
57
|
get description() {
|
|
58
|
-
|
|
58
|
+
const source = this.source == null ? '' : `${this.source} => `;
|
|
59
|
+
return `InvocationContext(${this.name}): ${source}${this.targetName}`;
|
|
59
60
|
}
|
|
60
61
|
toString() {
|
|
61
62
|
return this.description;
|
|
@@ -68,7 +69,7 @@ class InvocationContext extends context_1.Context {
|
|
|
68
69
|
const targetWithMethods = this.target;
|
|
69
70
|
if (typeof targetWithMethods[this.methodName] !== 'function') {
|
|
70
71
|
const targetName = getTargetName(this.target, this.methodName);
|
|
71
|
-
|
|
72
|
+
assert_1.default(false, `Method ${targetName} not found`);
|
|
72
73
|
}
|
|
73
74
|
return targetWithMethods;
|
|
74
75
|
}
|
|
@@ -119,17 +120,18 @@ exports.invokeMethod = invokeMethod;
|
|
|
119
120
|
* @param nonInjectedArgs - Optional array of args for non-injected parameters
|
|
120
121
|
*/
|
|
121
122
|
function invokeTargetMethodWithInjection(ctx, target, method, nonInjectedArgs) {
|
|
123
|
+
var _a;
|
|
122
124
|
const methodName = getTargetName(target, method);
|
|
123
125
|
/* istanbul ignore if */
|
|
124
126
|
if (debug.enabled) {
|
|
125
127
|
debug('Invoking method %s', methodName);
|
|
126
|
-
if (nonInjectedArgs
|
|
128
|
+
if ((_a = nonInjectedArgs) === null || _a === void 0 ? void 0 : _a.length) {
|
|
127
129
|
debug('Non-injected arguments:', nonInjectedArgs);
|
|
128
130
|
}
|
|
129
131
|
}
|
|
130
132
|
const argsOrPromise = resolver_1.resolveInjectedArguments(target, method, ctx, undefined, nonInjectedArgs);
|
|
131
133
|
const targetWithMethods = target;
|
|
132
|
-
|
|
134
|
+
assert_1.default(typeof targetWithMethods[method] === 'function', `Method ${method} not found`);
|
|
133
135
|
return value_promise_1.transformValueOrPromise(argsOrPromise, args => {
|
|
134
136
|
/* istanbul ignore if */
|
|
135
137
|
if (debug.enabled) {
|
package/dist/invocation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invocation.js","sourceRoot":"","sources":["../src/invocation.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,iCAAiC;AACjC,+CAA+C;AAC/C,gEAAgE
|
|
1
|
+
{"version":3,"file":"invocation.js","sourceRoot":"","sources":["../src/invocation.ts"],"names":[],"mappings":"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"}
|
package/dist/keys.d.ts
CHANGED
|
@@ -30,6 +30,12 @@ export declare namespace ContextTags {
|
|
|
30
30
|
* Binding tag for global interceptors
|
|
31
31
|
*/
|
|
32
32
|
const GLOBAL_INTERCEPTOR = "globalInterceptor";
|
|
33
|
+
/**
|
|
34
|
+
* Binding tag for global interceptors to specify sources of invocations that
|
|
35
|
+
* the interceptor should apply. The tag value can be a string or string[], such
|
|
36
|
+
* as `'route'` or `['route', 'proxy']`.
|
|
37
|
+
*/
|
|
38
|
+
const GLOBAL_INTERCEPTOR_SOURCE = "globalInterceptorSource";
|
|
33
39
|
/**
|
|
34
40
|
* Binding tag for group name of global interceptors
|
|
35
41
|
*/
|
package/dist/keys.js
CHANGED
|
@@ -36,6 +36,12 @@ var ContextTags;
|
|
|
36
36
|
* Binding tag for global interceptors
|
|
37
37
|
*/
|
|
38
38
|
ContextTags.GLOBAL_INTERCEPTOR = 'globalInterceptor';
|
|
39
|
+
/**
|
|
40
|
+
* Binding tag for global interceptors to specify sources of invocations that
|
|
41
|
+
* the interceptor should apply. The tag value can be a string or string[], such
|
|
42
|
+
* as `'route'` or `['route', 'proxy']`.
|
|
43
|
+
*/
|
|
44
|
+
ContextTags.GLOBAL_INTERCEPTOR_SOURCE = 'globalInterceptorSource';
|
|
39
45
|
/**
|
|
40
46
|
* Binding tag for group name of global interceptors
|
|
41
47
|
*/
|
package/dist/keys.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,iCAAiC;AACjC,+CAA+C;AAC/C,gEAAgE;;AAGhE,+CAAyC;AAEzC;;GAEG;AACH,IAAiB,WAAW,
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,iCAAiC;AACjC,+CAA+C;AAC/C,gEAAgE;;AAGhE,+CAAyC;AAEzC;;GAEG;AACH,IAAiB,WAAW,CA0C3B;AA1CD,WAAiB,WAAW;IACb,iBAAK,GAAG,OAAO,CAAC;IAChB,oBAAQ,GAAG,UAAU,CAAC;IAEnC;;OAEG;IACU,gBAAI,GAAG,MAAM,CAAC;IAC3B;;OAEG;IACU,qBAAS,GAAG,WAAW,CAAC;IACrC;;OAEG;IACU,gBAAI,GAAG,MAAM,CAAC;IAC3B;;OAEG;IACU,eAAG,GAAG,KAAK,CAAC;IAEzB;;OAEG;IACU,6BAAiB,GAAG,kBAAkB,CAAC;IAEpD;;OAEG;IACU,8BAAkB,GAAG,mBAAmB,CAAC;IAEtD;;;;OAIG;IACU,qCAAyB,GAAG,yBAAyB,CAAC;IAEnE;;OAEG;IACU,oCAAwB,GAAG,wBAAwB,CAAC;AACnE,CAAC,EA1CgB,WAAW,GAAX,mBAAW,KAAX,mBAAW,QA0C3B;AAED;;GAEG;AACU,QAAA,4BAA4B,GAAG,oBAAoB,CAAC;AAEjE;;GAEG;AACH,IAAiB,eAAe,CAc/B;AAdD,WAAiB,eAAe;IAC9B;;OAEG;IACU,sCAAsB,GAAG,wBAAU,CAAC,MAAM,CAErD,GAAG,wBAAU,CAAC,gBAAgB,WAAW,CAAC,CAAC;IAE7C;;OAEG;IACU,iDAAiC,GAAG,wBAAU,CAAC,MAAM,CAChE,iCAAiC,CAClC,CAAC;AACJ,CAAC,EAdgB,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAc/B"}
|