@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/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,87 @@
|
|
|
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.0.0](https://github.com/strongloop/loopback-next/compare/@loopback/context@1.25.1...@loopback/context@2.0.0) (2020-01-27)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **context:** add ContextEventListener and tidy up parent event handling ([beb41a7](https://github.com/strongloop/loopback-next/commit/beb41a7b105cf1aea64982e3f43f4d5a8128581f))
|
|
12
|
+
* **context:** index bindings by tag to speed up matching by tag ([566b9d9](https://github.com/strongloop/loopback-next/commit/566b9d9a35ce52d9aeefe17e36f91c9714616b21))
|
|
13
|
+
* **context:** keep binding tag pattern for BindingTagFilter ([856b62d](https://github.com/strongloop/loopback-next/commit/856b62d7053c22ebe0f6acf6a1904e524175429c))
|
|
14
|
+
* **context:** make bindings as event emitters to report changes ([dddddb9](https://github.com/strongloop/loopback-next/commit/dddddb96fd6908a8d4caad8868e43d3d0bb742f6))
|
|
15
|
+
* **context:** refactor context observer subscription into a new class ([31ad9a5](https://github.com/strongloop/loopback-next/commit/31ad9a55bbd068cd8e41347fca5caaf0ae5eb6e7))
|
|
16
|
+
* **context:** set max listeners to Infinity by default ([0741e3b](https://github.com/strongloop/loopback-next/commit/0741e3b1293065a04f1ecd9dbda09df074a5dd34))
|
|
17
|
+
* **context:** use BindingEvent for binding event listeners ([ae5febc](https://github.com/strongloop/loopback-next/commit/ae5febc35679f4d77b9970ecc26a71938a1c972e))
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### BREAKING CHANGES
|
|
21
|
+
|
|
22
|
+
* **context:** Context events are now emitted as `ContextEvent` objects
|
|
23
|
+
instead of positional arguments. Context listener functions must switch from
|
|
24
|
+
the old style to new style as follows:
|
|
25
|
+
|
|
26
|
+
1. Old style
|
|
27
|
+
|
|
28
|
+
```ts
|
|
29
|
+
ctx.on('bind', (binding, context) => {
|
|
30
|
+
// ...
|
|
31
|
+
});
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
2. New style
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
ctx.on('bind', (event: ContextEvent) => {
|
|
38
|
+
// ...
|
|
39
|
+
});
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Or:
|
|
43
|
+
|
|
44
|
+
```ts
|
|
45
|
+
ctx.on('bind', ({binding, context, type}) => {
|
|
46
|
+
// ...
|
|
47
|
+
});
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
## [1.25.1](https://github.com/strongloop/loopback-next/compare/@loopback/context@1.25.0...@loopback/context@1.25.1) (2020-01-07)
|
|
55
|
+
|
|
56
|
+
**Note:** Version bump only for package @loopback/context
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
# [1.25.0](https://github.com/strongloop/loopback-next/compare/@loopback/context@1.24.0...@loopback/context@1.25.0) (2019-12-09)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
### Features
|
|
66
|
+
|
|
67
|
+
* **context:** allow global interceptors to be applied based on source types ([77cbd01](https://github.com/strongloop/loopback-next/commit/77cbd019027e1441339735326bcfb86a23df8b66))
|
|
68
|
+
* **context:** make it possible to set source information for interceptions ([2a1ccb4](https://github.com/strongloop/loopback-next/commit/2a1ccb409a889d8b30b03ddf3284c9e9d5554e27))
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
# [1.24.0](https://github.com/strongloop/loopback-next/compare/@loopback/context@1.23.5...@loopback/context@1.24.0) (2019-11-25)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
### Features
|
|
78
|
+
|
|
79
|
+
* **context:** allow current binding to be injected with `[@inject](https://github.com/inject).binding` ([c01b4c6](https://github.com/strongloop/loopback-next/commit/c01b4c6b4dcc5c7ac79832bda144b1ec0da191b1))
|
|
80
|
+
* **context:** improve context/binding with inspect/toJSON for metadata dumping ([ac399f7](https://github.com/strongloop/loopback-next/commit/ac399f7f105eea402ef1932bd96093baad0a009f))
|
|
81
|
+
* **core:** add [@service](https://github.com/service) decorator to inject a service by class/interface ([1d80904](https://github.com/strongloop/loopback-next/commit/1d80904b670724b00cb6a2965b8472f44d23eed0))
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
6
87
|
## [1.23.5](https://github.com/strongloop/loopback-next/compare/@loopback/context@1.23.4...@loopback/context@1.23.5) (2019-11-12)
|
|
7
88
|
|
|
8
89
|
**Note:** Version bump only for package @loopback/context
|
package/dist/binding-config.js
CHANGED
|
@@ -13,7 +13,7 @@ class DefaultConfigurationResolver {
|
|
|
13
13
|
this.context = context;
|
|
14
14
|
}
|
|
15
15
|
getConfigAsValueOrPromise(key, propertyPath, resolutionOptions) {
|
|
16
|
-
propertyPath = propertyPath
|
|
16
|
+
propertyPath = (propertyPath !== null && propertyPath !== void 0 ? propertyPath : '');
|
|
17
17
|
const configKey = configBindingKeyFor(key, propertyPath);
|
|
18
18
|
const options = Object.assign({ optional: true }, resolutionOptions);
|
|
19
19
|
return this.context.getValueOrPromise(configKey, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding-config.js","sourceRoot":"","sources":["../src/binding-config.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,iCAAiC;AACjC,+CAA+C;AAC/C,gEAAgE;;AAEhE,+CAAyD;AAgCzD;;GAEG;AACH,MAAa,4BAA4B;IACvC,YAA4B,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;IAAG,CAAC;IAEhD,yBAAyB,CACvB,GAA4B,EAC5B,YAAqB,EACrB,iBAAqC;QAErC,YAAY,
|
|
1
|
+
{"version":3,"file":"binding-config.js","sourceRoot":"","sources":["../src/binding-config.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,iCAAiC;AACjC,+CAA+C;AAC/C,gEAAgE;;AAEhE,+CAAyD;AAgCzD;;GAEG;AACH,MAAa,4BAA4B;IACvC,YAA4B,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;IAAG,CAAC;IAEhD,yBAAyB,CACvB,GAA4B,EAC5B,YAAqB,EACrB,iBAAqC;QAErC,YAAY,IAAG,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,EAAE,CAAA,CAAC;QAClC,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAEzD,MAAM,OAAO,GAAsB,MAAM,CAAC,MAAM,CAC9C,EAAC,QAAQ,EAAE,IAAI,EAAC,EAChB,iBAAiB,CAClB,CAAC;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAkB,SAAS,EAAE,OAAO,CAAC,CAAC;IAC7E,CAAC;CACF;AAjBD,oEAiBC;AAED;;;;GAIG;AACH,SAAgB,mBAAmB,CACjC,GAAmB,EACnB,YAAqB;IAErB,OAAO,wBAAU,CAAC,MAAM,CACtB,wBAAU,CAAC,iBAAiB,CAAkB,GAAG,CAAC,CAAC,QAAQ,EAAE,EAC7D,YAAY,CACb,CAAC;AACJ,CAAC;AARD,kDAQC"}
|
package/dist/binding-filter.d.ts
CHANGED
|
@@ -42,11 +42,29 @@ export declare type BindingSelector<ValueType = unknown> = BindingAddress<ValueT
|
|
|
42
42
|
* @param bindingSelector
|
|
43
43
|
*/
|
|
44
44
|
export declare function isBindingAddress(bindingSelector: BindingSelector): bindingSelector is BindingAddress;
|
|
45
|
+
/**
|
|
46
|
+
* Binding filter function that holds a binding tag pattern. `Context.find()`
|
|
47
|
+
* uses the `bindingTagPattern` to optimize the matching of bindings by tag to
|
|
48
|
+
* avoid expensive check for all bindings.
|
|
49
|
+
*/
|
|
50
|
+
export interface BindingTagFilter extends BindingFilter<unknown> {
|
|
51
|
+
/**
|
|
52
|
+
* A special property on the filter function to provide access to the binding
|
|
53
|
+
* tag pattern which can be utilized to optimize the matching of bindings by
|
|
54
|
+
* tag in a context.
|
|
55
|
+
*/
|
|
56
|
+
bindingTagPattern: BindingTag | RegExp;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Type guard for BindingTagFilter
|
|
60
|
+
* @param filter - A BindingFilter function
|
|
61
|
+
*/
|
|
62
|
+
export declare function isBindingTagFilter(filter?: BindingFilter): filter is BindingTagFilter;
|
|
45
63
|
/**
|
|
46
64
|
* Create a binding filter for the tag pattern
|
|
47
65
|
* @param tagPattern - Binding tag name, regexp, or object
|
|
48
66
|
*/
|
|
49
|
-
export declare function filterByTag(tagPattern: BindingTag | RegExp):
|
|
67
|
+
export declare function filterByTag(tagPattern: BindingTag | RegExp): BindingTagFilter;
|
|
50
68
|
/**
|
|
51
69
|
* Create a binding filter from key pattern
|
|
52
70
|
* @param keyPattern - Binding key/wildcard, regexp, or a filter function
|
package/dist/binding-filter.js
CHANGED
|
@@ -12,28 +12,61 @@ function isBindingAddress(bindingSelector) {
|
|
|
12
12
|
return typeof bindingSelector !== 'function';
|
|
13
13
|
}
|
|
14
14
|
exports.isBindingAddress = isBindingAddress;
|
|
15
|
+
/**
|
|
16
|
+
* Type guard for BindingTagFilter
|
|
17
|
+
* @param filter - A BindingFilter function
|
|
18
|
+
*/
|
|
19
|
+
function isBindingTagFilter(filter) {
|
|
20
|
+
if (filter == null || !('bindingTagPattern' in filter))
|
|
21
|
+
return false;
|
|
22
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
23
|
+
const tagPattern = filter.bindingTagPattern;
|
|
24
|
+
return (tagPattern instanceof RegExp ||
|
|
25
|
+
typeof tagPattern === 'string' ||
|
|
26
|
+
typeof tagPattern === 'object');
|
|
27
|
+
}
|
|
28
|
+
exports.isBindingTagFilter = isBindingTagFilter;
|
|
15
29
|
/**
|
|
16
30
|
* Create a binding filter for the tag pattern
|
|
17
31
|
* @param tagPattern - Binding tag name, regexp, or object
|
|
18
32
|
*/
|
|
19
33
|
function filterByTag(tagPattern) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
34
|
+
let filter;
|
|
35
|
+
let regex = undefined;
|
|
36
|
+
if (tagPattern instanceof RegExp) {
|
|
37
|
+
// RegExp for tag names
|
|
38
|
+
regex = tagPattern;
|
|
39
|
+
}
|
|
40
|
+
if (typeof tagPattern === 'string' &&
|
|
41
|
+
(tagPattern.includes('*') || tagPattern.includes('?'))) {
|
|
42
|
+
// Wildcard tag name
|
|
43
|
+
regex = wildcardToRegExp(tagPattern);
|
|
44
|
+
}
|
|
45
|
+
if (regex != null) {
|
|
46
|
+
// RegExp or wildcard match
|
|
47
|
+
filter = b => b.tagNames.some(t => regex.test(t));
|
|
48
|
+
}
|
|
49
|
+
else if (typeof tagPattern === 'string') {
|
|
50
|
+
// Plain tag string match
|
|
51
|
+
filter = b => b.tagNames.includes(tagPattern);
|
|
25
52
|
}
|
|
26
53
|
else {
|
|
27
|
-
|
|
54
|
+
// Match tag name/value pairs
|
|
55
|
+
const tagMap = tagPattern;
|
|
56
|
+
filter = b => {
|
|
28
57
|
for (const t in tagPattern) {
|
|
29
58
|
// One tag name/value does not match
|
|
30
|
-
if (b.tagMap[t] !==
|
|
59
|
+
if (b.tagMap[t] !== tagMap[t])
|
|
31
60
|
return false;
|
|
32
61
|
}
|
|
33
62
|
// All tag name/value pairs match
|
|
34
63
|
return true;
|
|
35
64
|
};
|
|
36
65
|
}
|
|
66
|
+
// Set up binding tag for the filter
|
|
67
|
+
const tagFilter = filter;
|
|
68
|
+
tagFilter.bindingTagPattern = (regex !== null && regex !== void 0 ? regex : tagPattern);
|
|
69
|
+
return tagFilter;
|
|
37
70
|
}
|
|
38
71
|
exports.filterByTag = filterByTag;
|
|
39
72
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding-filter.js","sourceRoot":"","sources":["../src/binding-filter.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,iCAAiC;AACjC,+CAA+C;AAC/C,gEAAgE;;
|
|
1
|
+
{"version":3,"file":"binding-filter.js","sourceRoot":"","sources":["../src/binding-filter.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,iCAAiC;AACjC,+CAA+C;AAC/C,gEAAgE;;AAiDhE;;;GAGG;AACH,SAAgB,gBAAgB,CAC9B,eAAgC;IAEhC,OAAO,OAAO,eAAe,KAAK,UAAU,CAAC;AAC/C,CAAC;AAJD,4CAIC;AAgBD;;;GAGG;AACH,SAAgB,kBAAkB,CAChC,MAAsB;IAEtB,IAAI,MAAM,IAAI,IAAI,IAAI,CAAC,CAAC,mBAAmB,IAAI,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACrE,8DAA8D;IAC9D,MAAM,UAAU,GAAI,MAAc,CAAC,iBAAiB,CAAC;IACrD,OAAO,CACL,UAAU,YAAY,MAAM;QAC5B,OAAO,UAAU,KAAK,QAAQ;QAC9B,OAAO,UAAU,KAAK,QAAQ,CAC/B,CAAC;AACJ,CAAC;AAXD,gDAWC;AAED;;;GAGG;AACH,SAAgB,WAAW,CAAC,UAA+B;IACzD,IAAI,MAAqB,CAAC;IAC1B,IAAI,KAAK,GAAuB,SAAS,CAAC;IAC1C,IAAI,UAAU,YAAY,MAAM,EAAE;QAChC,uBAAuB;QACvB,KAAK,GAAG,UAAU,CAAC;KACpB;IACD,IACE,OAAO,UAAU,KAAK,QAAQ;QAC9B,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EACtD;QACA,oBAAoB;QACpB,KAAK,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;KACtC;IAED,IAAI,KAAK,IAAI,IAAI,EAAE;QACjB,2BAA2B;QAC3B,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KACpD;SAAM,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;QACzC,yBAAyB;QACzB,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;KAC/C;SAAM;QACL,6BAA6B;QAC7B,MAAM,MAAM,GAAG,UAAgC,CAAC;QAChD,MAAM,GAAG,CAAC,CAAC,EAAE;YACX,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;gBAC1B,oCAAoC;gBACpC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;aAC7C;YACD,iCAAiC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;KACH;IACD,oCAAoC;IACpC,MAAM,SAAS,GAAG,MAA0B,CAAC;IAC7C,SAAS,CAAC,iBAAiB,IAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,UAAU,CAAA,CAAC;IAClD,OAAO,SAAS,CAAC;AACnB,CAAC;AArCD,kCAqCC;AAED;;;GAGG;AACH,SAAgB,WAAW,CACzB,UAA4C;IAE5C,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;QAClC,MAAM,KAAK,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC3C,OAAO,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;KAC3C;SAAM,IAAI,UAAU,YAAY,MAAM,EAAE;QACvC,OAAO,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;KAChD;SAAM,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE;QAC3C,OAAO,UAAU,CAAC;KACnB;IACD,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC;AACpB,CAAC;AAZD,kCAYC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,OAAe;IACvC,oCAAoC;IACpC,gCAAgC;IAChC,IAAI,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,mCAAmC,EAAE,MAAM,CAAC,CAAC;IAC1E,qCAAqC;IACrC,yDAAyD;IACzD,+CAA+C;IAC/C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACjE,OAAO,IAAI,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -3,12 +3,15 @@
|
|
|
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
|
|
11
|
+
const debug_1 = __importDefault(require("debug"));
|
|
9
12
|
const binding_1 = require("./binding");
|
|
10
13
|
const keys_1 = require("./keys");
|
|
11
|
-
const debug =
|
|
14
|
+
const debug = debug_1.default('loopback:context:binding-inspector');
|
|
12
15
|
/**
|
|
13
16
|
* Metadata key for binding metadata
|
|
14
17
|
*/
|
|
@@ -95,11 +98,10 @@ exports.removeNameAndKeyTags = removeNameAndKeyTags;
|
|
|
95
98
|
* @param cls - A class with optional `@bind`
|
|
96
99
|
*/
|
|
97
100
|
function bindingTemplateFor(cls) {
|
|
101
|
+
var _a, _b;
|
|
98
102
|
const spec = getBindingMetadata(cls);
|
|
99
103
|
debug('class %s has binding metadata', cls.name, spec);
|
|
100
|
-
const templateFunctions = (
|
|
101
|
-
asClassOrProvider(cls),
|
|
102
|
-
];
|
|
104
|
+
const templateFunctions = (_b = (_a = spec) === null || _a === void 0 ? void 0 : _a.templates, (_b !== null && _b !== void 0 ? _b : [asClassOrProvider(cls)]));
|
|
103
105
|
return function applyBindingTemplatesFromMetadata(binding) {
|
|
104
106
|
for (const t of templateFunctions) {
|
|
105
107
|
binding.apply(t);
|
|
@@ -187,6 +189,7 @@ function getNamespace(type, typeNamespaces = exports.DEFAULT_TYPE_NAMESPACES) {
|
|
|
187
189
|
* @param options - Options to customize how to build the key
|
|
188
190
|
*/
|
|
189
191
|
function buildBindingKey(cls, options = {}) {
|
|
192
|
+
var _a, _b, _c, _d;
|
|
190
193
|
if (options.key)
|
|
191
194
|
return options.key;
|
|
192
195
|
const templateFn = bindingTemplateFor(cls);
|
|
@@ -196,19 +199,17 @@ function buildBindingKey(cls, options = {}) {
|
|
|
196
199
|
let key = bindingTemplate.tagMap[keys_1.ContextTags.KEY];
|
|
197
200
|
if (key)
|
|
198
201
|
return key;
|
|
199
|
-
let namespace = options.namespace
|
|
202
|
+
let namespace = (_a = options.namespace, (_a !== null && _a !== void 0 ? _a : bindingTemplate.tagMap[keys_1.ContextTags.NAMESPACE]));
|
|
200
203
|
if (!namespace) {
|
|
201
204
|
const namespaces = Object.assign({}, exports.DEFAULT_TYPE_NAMESPACES, options.typeNamespaceMapping);
|
|
202
205
|
// Derive the key from type + name
|
|
203
|
-
let type = options.type
|
|
206
|
+
let type = (_b = options.type, (_b !== null && _b !== void 0 ? _b : bindingTemplate.tagMap[keys_1.ContextTags.TYPE]));
|
|
204
207
|
if (!type) {
|
|
205
|
-
type =
|
|
206
|
-
bindingTemplate.tagNames.find(t => namespaces[t] != null) ||
|
|
207
|
-
keys_1.ContextTags.CLASS;
|
|
208
|
+
type = (_c = bindingTemplate.tagNames.find(t => namespaces[t] != null), (_c !== null && _c !== void 0 ? _c : keys_1.ContextTags.CLASS));
|
|
208
209
|
}
|
|
209
210
|
namespace = getNamespace(type, namespaces);
|
|
210
211
|
}
|
|
211
|
-
const name = options.name
|
|
212
|
+
const name = (_d = options.name, (_d !== null && _d !== void 0 ? _d : (bindingTemplate.tagMap[keys_1.ContextTags.NAME] || cls.name)));
|
|
212
213
|
key = `${namespace}.${name}`;
|
|
213
214
|
return key;
|
|
214
215
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding-inspector.js","sourceRoot":"","sources":["../src/binding-inspector.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,iCAAiC;AACjC,+CAA+C;AAC/C,gEAAgE
|
|
1
|
+
{"version":3,"file":"binding-inspector.js","sourceRoot":"","sources":["../src/binding-inspector.ts"],"names":[],"mappings":"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"}
|
package/dist/binding-sorter.js
CHANGED
|
@@ -48,8 +48,8 @@ exports.compareBindingsByTag = compareBindingsByTag;
|
|
|
48
48
|
* @param order - An array of values as the predefined order
|
|
49
49
|
*/
|
|
50
50
|
function compareByOrder(a, b, order = []) {
|
|
51
|
-
a = a
|
|
52
|
-
b = b
|
|
51
|
+
a = (a !== null && a !== void 0 ? a : '');
|
|
52
|
+
b = (b !== null && b !== void 0 ? b : '');
|
|
53
53
|
const i1 = order.indexOf(a);
|
|
54
54
|
const i2 = order.indexOf(b);
|
|
55
55
|
if (i1 !== -1 || i2 !== -1) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding-sorter.js","sourceRoot":"","sources":["../src/binding-sorter.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,iCAAiC;AACjC,+CAA+C;AAC/C,gEAAgE;;AA6BhE;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,oBAAoB,CAClC,YAAY,GAAG,OAAO,EACtB,gBAAqC,EAAE;IAEvC,OAAO,CAAC,CAA6B,EAAE,CAA6B,EAAE,EAAE;QACtE,OAAO,cAAc,CACnB,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,EACtB,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,EACtB,aAAa,CACd,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAXD,oDAWC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,cAAc,CAC5B,CAAqC,EACrC,CAAqC,EACrC,QAA6B,EAAE;IAE/B,CAAC,
|
|
1
|
+
{"version":3,"file":"binding-sorter.js","sourceRoot":"","sources":["../src/binding-sorter.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,iCAAiC;AACjC,+CAA+C;AAC/C,gEAAgE;;AA6BhE;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,oBAAoB,CAClC,YAAY,GAAG,OAAO,EACtB,gBAAqC,EAAE;IAEvC,OAAO,CAAC,CAA6B,EAAE,CAA6B,EAAE,EAAE;QACtE,OAAO,cAAc,CACnB,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,EACtB,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,EACtB,aAAa,CACd,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAXD,oDAWC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,cAAc,CAC5B,CAAqC,EACrC,CAAqC,EACrC,QAA6B,EAAE;IAE/B,CAAC,IAAG,CAAC,aAAD,CAAC,cAAD,CAAC,GAAI,EAAE,CAAA,CAAC;IACZ,CAAC,IAAG,CAAC,aAAD,CAAC,cAAD,CAAC,GAAI,EAAE,CAAA,CAAC;IACZ,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE;QAC1B,kBAAkB;QAClB,OAAO,EAAE,GAAG,EAAE,CAAC;KAChB;SAAM;QACL,4CAA4C;QAE5C,6BAA6B;QAC7B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC,CAAC;QAC9D,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC;QAE7D,uDAAuD;QACvD,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5C,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACnC;AACH,CAAC;AAxBD,wCAwBC;AAED;;;;;;;;GAQG;AACH,SAAgB,mBAAmB,CACjC,QAAgC,EAChC,YAAqB,EACrB,aAAmC;IAEnC,OAAO,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC;AAC1E,CAAC;AAND,kDAMC"}
|
package/dist/binding.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { EventEmitter } from 'events';
|
|
1
3
|
import { BindingAddress } from './binding-key';
|
|
2
4
|
import { Context } from './context';
|
|
3
5
|
import { Provider } from './provider';
|
|
@@ -107,11 +109,36 @@ export declare type BindingTag = TagMap | string;
|
|
|
107
109
|
* A function as the template to configure bindings
|
|
108
110
|
*/
|
|
109
111
|
export declare type BindingTemplate<T = unknown> = (binding: Binding<T>) => void;
|
|
112
|
+
/**
|
|
113
|
+
* Information for a binding event
|
|
114
|
+
*/
|
|
115
|
+
export declare type BindingEvent = {
|
|
116
|
+
/**
|
|
117
|
+
* Event type
|
|
118
|
+
*/
|
|
119
|
+
type: string;
|
|
120
|
+
/**
|
|
121
|
+
* Source binding that emits the event
|
|
122
|
+
*/
|
|
123
|
+
binding: Readonly<Binding<unknown>>;
|
|
124
|
+
/**
|
|
125
|
+
* Operation that triggers the event
|
|
126
|
+
*/
|
|
127
|
+
operation: string;
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Event listeners for binding events
|
|
131
|
+
*/
|
|
132
|
+
export declare type BindingEventListener = (
|
|
133
|
+
/**
|
|
134
|
+
* Binding event
|
|
135
|
+
*/
|
|
136
|
+
event: BindingEvent) => void;
|
|
110
137
|
/**
|
|
111
138
|
* Binding represents an entry in the `Context`. Each binding has a key and a
|
|
112
139
|
* corresponding value getter.
|
|
113
140
|
*/
|
|
114
|
-
export declare class Binding<T = BoundValue> {
|
|
141
|
+
export declare class Binding<T = BoundValue> extends EventEmitter {
|
|
115
142
|
isLocked: boolean;
|
|
116
143
|
/**
|
|
117
144
|
* Key of the binding
|
|
@@ -134,11 +161,17 @@ export declare class Binding<T = BoundValue> {
|
|
|
134
161
|
private _cache;
|
|
135
162
|
private _getValue;
|
|
136
163
|
private _valueConstructor?;
|
|
164
|
+
private _providerConstructor?;
|
|
137
165
|
/**
|
|
138
|
-
* For bindings bound via toClass
|
|
139
|
-
* function
|
|
166
|
+
* For bindings bound via `toClass()`, this property contains the constructor
|
|
167
|
+
* function of the class
|
|
140
168
|
*/
|
|
141
169
|
get valueConstructor(): Constructor<T> | undefined;
|
|
170
|
+
/**
|
|
171
|
+
* For bindings bound via `toProvider()`, this property contains the
|
|
172
|
+
* constructor function of the provider class
|
|
173
|
+
*/
|
|
174
|
+
get providerConstructor(): Constructor<Provider<T>> | undefined;
|
|
142
175
|
constructor(key: BindingAddress<T>, isLocked?: boolean);
|
|
143
176
|
/**
|
|
144
177
|
* Cache the resolved value by the binding scope
|
|
@@ -188,6 +221,11 @@ export declare class Binding<T = BoundValue> {
|
|
|
188
221
|
* Lock the binding so that it cannot be rebound
|
|
189
222
|
*/
|
|
190
223
|
lock(): this;
|
|
224
|
+
/**
|
|
225
|
+
* Emit a `changed` event
|
|
226
|
+
* @param operation - Operation that makes changes
|
|
227
|
+
*/
|
|
228
|
+
private emitChangedEvent;
|
|
191
229
|
/**
|
|
192
230
|
* Tag the binding with names or name/value objects. A tag has a name and
|
|
193
231
|
* an optional value. If not supplied, the tag name is used as the value.
|
|
@@ -319,7 +357,7 @@ export declare class Binding<T = BoundValue> {
|
|
|
319
357
|
/**
|
|
320
358
|
* Convert to a plain JSON object
|
|
321
359
|
*/
|
|
322
|
-
toJSON():
|
|
360
|
+
toJSON(): object;
|
|
323
361
|
/**
|
|
324
362
|
* A static method to create a binding so that we can do
|
|
325
363
|
* `Binding.bind('foo').to('bar');` as `new Binding('foo').to('bar')` is not
|
package/dist/binding.js
CHANGED
|
@@ -3,15 +3,19 @@
|
|
|
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"));
|
|
11
|
+
const events_1 = require("events");
|
|
8
12
|
const binding_key_1 = require("./binding-key");
|
|
9
13
|
const interception_proxy_1 = require("./interception-proxy");
|
|
10
14
|
const keys_1 = require("./keys");
|
|
11
15
|
const resolution_session_1 = require("./resolution-session");
|
|
12
16
|
const resolver_1 = require("./resolver");
|
|
13
17
|
const value_promise_1 = require("./value-promise");
|
|
14
|
-
const debug =
|
|
18
|
+
const debug = debug_1.default('loopback:context:binding');
|
|
15
19
|
/**
|
|
16
20
|
* Scope for binding values
|
|
17
21
|
*/
|
|
@@ -113,8 +117,9 @@ var BindingType;
|
|
|
113
117
|
* Binding represents an entry in the `Context`. Each binding has a key and a
|
|
114
118
|
* corresponding value getter.
|
|
115
119
|
*/
|
|
116
|
-
class Binding {
|
|
120
|
+
class Binding extends events_1.EventEmitter {
|
|
117
121
|
constructor(key, isLocked = false) {
|
|
122
|
+
super();
|
|
118
123
|
this.isLocked = isLocked;
|
|
119
124
|
/**
|
|
120
125
|
* Map for tag name/value pairs
|
|
@@ -127,8 +132,9 @@ class Binding {
|
|
|
127
132
|
* Scope of the binding to control how the value is cached/shared
|
|
128
133
|
*/
|
|
129
134
|
get scope() {
|
|
135
|
+
var _a;
|
|
130
136
|
// Default to TRANSIENT if not set
|
|
131
|
-
return this._scope
|
|
137
|
+
return _a = this._scope, (_a !== null && _a !== void 0 ? _a : BindingScope.TRANSIENT);
|
|
132
138
|
}
|
|
133
139
|
/**
|
|
134
140
|
* Type of the binding value getter
|
|
@@ -137,12 +143,19 @@ class Binding {
|
|
|
137
143
|
return this._type;
|
|
138
144
|
}
|
|
139
145
|
/**
|
|
140
|
-
* For bindings bound via toClass
|
|
141
|
-
* function
|
|
146
|
+
* For bindings bound via `toClass()`, this property contains the constructor
|
|
147
|
+
* function of the class
|
|
142
148
|
*/
|
|
143
149
|
get valueConstructor() {
|
|
144
150
|
return this._valueConstructor;
|
|
145
151
|
}
|
|
152
|
+
/**
|
|
153
|
+
* For bindings bound via `toProvider()`, this property contains the
|
|
154
|
+
* constructor function of the provider class
|
|
155
|
+
*/
|
|
156
|
+
get providerConstructor() {
|
|
157
|
+
return this._providerConstructor;
|
|
158
|
+
}
|
|
146
159
|
/**
|
|
147
160
|
* Cache the resolved value by the binding scope
|
|
148
161
|
* @param ctx - The current context
|
|
@@ -214,6 +227,14 @@ class Binding {
|
|
|
214
227
|
this.isLocked = true;
|
|
215
228
|
return this;
|
|
216
229
|
}
|
|
230
|
+
/**
|
|
231
|
+
* Emit a `changed` event
|
|
232
|
+
* @param operation - Operation that makes changes
|
|
233
|
+
*/
|
|
234
|
+
emitChangedEvent(operation) {
|
|
235
|
+
const event = { binding: this, operation, type: 'changed' };
|
|
236
|
+
this.emit('changed', event);
|
|
237
|
+
}
|
|
217
238
|
/**
|
|
218
239
|
* Tag the binding with names or name/value objects. A tag has a name and
|
|
219
240
|
* an optional value. If not supplied, the tag name is used as the value.
|
|
@@ -252,6 +273,7 @@ class Binding {
|
|
|
252
273
|
Object.assign(this.tagMap, t);
|
|
253
274
|
}
|
|
254
275
|
}
|
|
276
|
+
this.emitChangedEvent('tag');
|
|
255
277
|
return this;
|
|
256
278
|
}
|
|
257
279
|
/**
|
|
@@ -268,6 +290,7 @@ class Binding {
|
|
|
268
290
|
if (this._scope !== scope)
|
|
269
291
|
this._clearCache();
|
|
270
292
|
this._scope = scope;
|
|
293
|
+
this.emitChangedEvent('scope');
|
|
271
294
|
return this;
|
|
272
295
|
}
|
|
273
296
|
/**
|
|
@@ -294,6 +317,7 @@ class Binding {
|
|
|
294
317
|
}
|
|
295
318
|
return getValue(ctx, options);
|
|
296
319
|
};
|
|
320
|
+
this.emitChangedEvent('value');
|
|
297
321
|
}
|
|
298
322
|
/**
|
|
299
323
|
* Bind the key to a constant value. The value must be already available
|
|
@@ -384,6 +408,7 @@ class Binding {
|
|
|
384
408
|
debug('Bind %s to provider %s', this.key, providerClass.name);
|
|
385
409
|
}
|
|
386
410
|
this._type = BindingType.PROVIDER;
|
|
411
|
+
this._providerConstructor = providerClass;
|
|
387
412
|
this._setValueGetter((ctx, options) => {
|
|
388
413
|
const providerOrPromise = resolver_1.instantiateClass(providerClass, ctx, options.session);
|
|
389
414
|
return value_promise_1.transformValueOrPromise(providerOrPromise, p => p.value());
|
|
@@ -407,7 +432,7 @@ class Binding {
|
|
|
407
432
|
const instOrPromise = resolver_1.instantiateClass(ctor, ctx, options.session);
|
|
408
433
|
if (!options.asProxyWithInterceptors)
|
|
409
434
|
return instOrPromise;
|
|
410
|
-
return createInterceptionProxyFromInstance(instOrPromise, ctx);
|
|
435
|
+
return createInterceptionProxyFromInstance(instOrPromise, ctx, options.session);
|
|
411
436
|
});
|
|
412
437
|
this._valueConstructor = ctor;
|
|
413
438
|
return this;
|
|
@@ -459,7 +484,6 @@ class Binding {
|
|
|
459
484
|
* Convert to a plain JSON object
|
|
460
485
|
*/
|
|
461
486
|
toJSON() {
|
|
462
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
463
487
|
const json = {
|
|
464
488
|
key: this.key,
|
|
465
489
|
scope: this.scope,
|
|
@@ -469,6 +493,12 @@ class Binding {
|
|
|
469
493
|
if (this.type != null) {
|
|
470
494
|
json.type = this.type;
|
|
471
495
|
}
|
|
496
|
+
if (this._valueConstructor != null) {
|
|
497
|
+
json.valueConstructor = this._valueConstructor.name;
|
|
498
|
+
}
|
|
499
|
+
if (this._providerConstructor != null) {
|
|
500
|
+
json.providerConstructor = this._providerConstructor.name;
|
|
501
|
+
}
|
|
472
502
|
return json;
|
|
473
503
|
}
|
|
474
504
|
/**
|
|
@@ -501,13 +531,13 @@ class Binding {
|
|
|
501
531
|
}
|
|
502
532
|
}
|
|
503
533
|
exports.Binding = Binding;
|
|
504
|
-
function createInterceptionProxyFromInstance(instOrPromise, context) {
|
|
534
|
+
function createInterceptionProxyFromInstance(instOrPromise, context, session) {
|
|
505
535
|
return value_promise_1.transformValueOrPromise(instOrPromise, inst => {
|
|
506
536
|
if (typeof inst !== 'object')
|
|
507
537
|
return inst;
|
|
508
538
|
return interception_proxy_1.createProxyWithInterceptors(
|
|
509
539
|
// Cast inst from `T` to `object`
|
|
510
|
-
inst, context);
|
|
540
|
+
inst, context, session);
|
|
511
541
|
});
|
|
512
542
|
}
|
|
513
543
|
//# sourceMappingURL=binding.js.map
|
package/dist/binding.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding.js","sourceRoot":"","sources":["../src/binding.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,iCAAiC;AACjC,+CAA+C;AAC/C,gEAAgE
|
|
1
|
+
{"version":3,"file":"binding.js","sourceRoot":"","sources":["../src/binding.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Binding } from './binding';
|
|
2
|
+
import { Context } from './context';
|
|
3
|
+
/**
|
|
4
|
+
* Events emitted by a context
|
|
5
|
+
*/
|
|
6
|
+
export declare type ContextEvent = {
|
|
7
|
+
/**
|
|
8
|
+
* Source context that emits the event
|
|
9
|
+
*/
|
|
10
|
+
context: Context;
|
|
11
|
+
/**
|
|
12
|
+
* Binding that is being added/removed/updated
|
|
13
|
+
*/
|
|
14
|
+
binding: Readonly<Binding<unknown>>;
|
|
15
|
+
/**
|
|
16
|
+
* Event type
|
|
17
|
+
*/
|
|
18
|
+
type: string;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Synchronous listener for context events
|
|
22
|
+
*/
|
|
23
|
+
export declare type ContextEventListener = (event: ContextEvent) => void;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright IBM Corp. 2020. All Rights Reserved.
|
|
3
|
+
// Node module: @loopback/context
|
|
4
|
+
// This file is licensed under the MIT License.
|
|
5
|
+
// License text available at https://opensource.org/licenses/MIT
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
//# sourceMappingURL=context-event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-event.js","sourceRoot":"","sources":["../src/context-event.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,iCAAiC;AACjC,+CAA+C;AAC/C,gEAAgE"}
|