@loopback/context 1.25.1 → 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 +48 -0
- 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.d.ts +33 -1
- package/dist/binding.js +14 -1
- 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.map +1 -1
- package/dist/context.d.ts +29 -65
- package/dist/context.js +50 -245
- package/dist/context.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/inject.d.ts +1 -1
- package/dist/interceptor.js +4 -4
- package/dist/interceptor.js.map +1 -1
- package/dist/invocation.d.ts +0 -1
- package/dist/invocation.js +1 -5
- package/dist/invocation.js.map +1 -1
- package/dist/value-promise.d.ts +1 -3
- package/package.json +7 -7
- package/src/binding-filter.ts +61 -9
- package/src/binding.ts +43 -1
- 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 +2 -5
- package/src/context.ts +71 -286
- package/src/index.ts +2 -0
- package/src/interceptor.ts +7 -6
- package/src/invocation.ts +1 -3
- package/src/value-promise.ts +1 -1
package/dist/context.d.ts
CHANGED
|
@@ -5,7 +5,10 @@ import { ConfigurationResolver } from './binding-config';
|
|
|
5
5
|
import { BindingFilter } from './binding-filter';
|
|
6
6
|
import { BindingAddress } from './binding-key';
|
|
7
7
|
import { BindingComparator } from './binding-sorter';
|
|
8
|
-
import {
|
|
8
|
+
import { ContextEvent } from './context-event';
|
|
9
|
+
import { ContextEventObserver, ContextObserver } from './context-observer';
|
|
10
|
+
import { ContextSubscriptionManager, Subscription } from './context-subscription';
|
|
11
|
+
import { ContextTagIndexer } from './context-tag-indexer';
|
|
9
12
|
import { ContextView } from './context-view';
|
|
10
13
|
import { ResolutionOptions, ResolutionOptionsOrSession, ResolutionSession } from './resolution-session';
|
|
11
14
|
import { BoundValue, ValueOrPromise } from './value-promise';
|
|
@@ -22,30 +25,21 @@ export declare class Context extends EventEmitter {
|
|
|
22
25
|
*/
|
|
23
26
|
protected readonly registry: Map<string, Binding>;
|
|
24
27
|
/**
|
|
25
|
-
*
|
|
28
|
+
* Indexer for bindings by tag
|
|
26
29
|
*/
|
|
27
|
-
protected
|
|
28
|
-
protected configResolver: ConfigurationResolver;
|
|
30
|
+
protected readonly tagIndexer: ContextTagIndexer;
|
|
29
31
|
/**
|
|
30
|
-
*
|
|
31
|
-
* of listeners from this context against its parent so that we can remove
|
|
32
|
-
* these listeners when this context is closed.
|
|
32
|
+
* Manager for observer subscriptions
|
|
33
33
|
*/
|
|
34
|
-
|
|
34
|
+
readonly subscriptionManager: ContextSubscriptionManager;
|
|
35
35
|
/**
|
|
36
|
-
*
|
|
37
|
-
* first observer is added.
|
|
38
|
-
*/
|
|
39
|
-
protected observers: Set<ContextEventObserver> | undefined;
|
|
40
|
-
/**
|
|
41
|
-
* Internal counter for pending notification events which are yet to be
|
|
42
|
-
* processed by observers.
|
|
36
|
+
* Parent context
|
|
43
37
|
*/
|
|
44
|
-
|
|
38
|
+
protected _parent?: Context;
|
|
45
39
|
/**
|
|
46
|
-
*
|
|
40
|
+
* Configuration resolver
|
|
47
41
|
*/
|
|
48
|
-
|
|
42
|
+
protected configResolver: ConfigurationResolver;
|
|
49
43
|
/**
|
|
50
44
|
* Create a new context.
|
|
51
45
|
*
|
|
@@ -69,6 +63,11 @@ export declare class Context extends EventEmitter {
|
|
|
69
63
|
* generated as the name
|
|
70
64
|
*/
|
|
71
65
|
constructor(_parent?: Context | string, name?: string);
|
|
66
|
+
/**
|
|
67
|
+
* @internal
|
|
68
|
+
* Getter for ContextSubscriptionManager
|
|
69
|
+
*/
|
|
70
|
+
get parent(): Context | undefined;
|
|
72
71
|
/**
|
|
73
72
|
* Wrap the debug statement so that it always print out the context name
|
|
74
73
|
* as the prefix
|
|
@@ -76,44 +75,16 @@ export declare class Context extends EventEmitter {
|
|
|
76
75
|
*/
|
|
77
76
|
private _debug;
|
|
78
77
|
/**
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
78
|
+
* A strongly-typed method to emit context events
|
|
79
|
+
* @param type Event type
|
|
80
|
+
* @param event Context event
|
|
82
81
|
*/
|
|
83
|
-
|
|
82
|
+
emitEvent<T extends ContextEvent>(type: string, event: T): void;
|
|
84
83
|
/**
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
* @param event - Event name
|
|
84
|
+
* Emit an `error` event
|
|
85
|
+
* @param err Error
|
|
88
86
|
*/
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Handle errors caught during the notification of observers
|
|
92
|
-
* @param err - Error
|
|
93
|
-
*/
|
|
94
|
-
private handleNotificationError;
|
|
95
|
-
/**
|
|
96
|
-
* Start a background task to listen on context events and notify observers
|
|
97
|
-
*/
|
|
98
|
-
private startNotificationTask;
|
|
99
|
-
/**
|
|
100
|
-
* Process notification events as they arrive on the queue
|
|
101
|
-
*/
|
|
102
|
-
private processNotifications;
|
|
103
|
-
/**
|
|
104
|
-
* Listen on given event types and emit `notification` event. This method
|
|
105
|
-
* merge multiple event types into one for notification.
|
|
106
|
-
* @param eventTypes - Context event types
|
|
107
|
-
*/
|
|
108
|
-
private setupNotification;
|
|
109
|
-
/**
|
|
110
|
-
* Wait until observers are notified for all of currently pending notification
|
|
111
|
-
* events.
|
|
112
|
-
*
|
|
113
|
-
* This method is for test only to perform assertions after observers are
|
|
114
|
-
* notified for relevant events.
|
|
115
|
-
*/
|
|
116
|
-
protected waitUntilPendingNotificationsDone(timeout?: number): Promise<void>;
|
|
87
|
+
emitError(err: unknown): void;
|
|
117
88
|
/**
|
|
118
89
|
* Create a binding with the given key in the context. If a locked binding
|
|
119
90
|
* already exists with the same key, an error will be thrown.
|
|
@@ -220,18 +191,6 @@ export declare class Context extends EventEmitter {
|
|
|
220
191
|
* @param comparator - A function to sort matched bindings
|
|
221
192
|
*/
|
|
222
193
|
createView<T = unknown>(filter: BindingFilter, comparator?: BindingComparator): ContextView<T>;
|
|
223
|
-
/**
|
|
224
|
-
* Publish an event to the registered observers. Please note the
|
|
225
|
-
* notification is queued and performed asynchronously so that we allow fluent
|
|
226
|
-
* APIs such as `ctx.bind('key').to(...).tag(...);` and give observers the
|
|
227
|
-
* fully populated binding.
|
|
228
|
-
*
|
|
229
|
-
* @param eventType - Event names: `bind` or `unbind`
|
|
230
|
-
* @param binding - Binding bound or unbound
|
|
231
|
-
* @param context - Owner context
|
|
232
|
-
* @param observers - Current set of context observers
|
|
233
|
-
*/
|
|
234
|
-
protected notifyObservers(eventType: ContextEventType, binding: Readonly<Binding<unknown>>, context: Context, observers?: Set<ContextEventObserver> | undefined): Promise<void>;
|
|
235
194
|
/**
|
|
236
195
|
* Check if a binding exists with the given key in the local context without
|
|
237
196
|
* delegating to the parent context
|
|
@@ -278,6 +237,11 @@ export declare class Context extends EventEmitter {
|
|
|
278
237
|
* `{name: 'my-controller'}`
|
|
279
238
|
*/
|
|
280
239
|
findByTag<ValueType = BoundValue>(tagFilter: BindingTag | RegExp): Readonly<Binding<ValueType>>[];
|
|
240
|
+
/**
|
|
241
|
+
* Find bindings by tag leveraging indexes
|
|
242
|
+
* @param tag - Tag name pattern or name/value pairs
|
|
243
|
+
*/
|
|
244
|
+
protected _findByTagIndex<ValueType = BoundValue>(tag: BindingTag | RegExp): Readonly<Binding<ValueType>>[];
|
|
281
245
|
protected _mergeWithParent<ValueType>(childList: Readonly<Binding<ValueType>>[], parentList?: Readonly<Binding<ValueType>>[]): Readonly<Binding<ValueType>>[];
|
|
282
246
|
/**
|
|
283
247
|
* Get the value bound to the given key, throw an error when no value is
|
package/dist/context.js
CHANGED
|
@@ -3,13 +3,6 @@
|
|
|
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 __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
7
|
-
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
8
|
-
var m = o[Symbol.asyncIterator], i;
|
|
9
|
-
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
10
|
-
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
11
|
-
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
12
|
-
};
|
|
13
6
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
7
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
8
|
};
|
|
@@ -21,24 +14,12 @@ const binding_1 = require("./binding");
|
|
|
21
14
|
const binding_config_1 = require("./binding-config");
|
|
22
15
|
const binding_filter_1 = require("./binding-filter");
|
|
23
16
|
const binding_key_1 = require("./binding-key");
|
|
17
|
+
const context_subscription_1 = require("./context-subscription");
|
|
18
|
+
const context_tag_indexer_1 = require("./context-tag-indexer");
|
|
24
19
|
const context_view_1 = require("./context-view");
|
|
25
20
|
const keys_1 = require("./keys");
|
|
26
21
|
const resolution_session_1 = require("./resolution-session");
|
|
27
22
|
const value_promise_1 = require("./value-promise");
|
|
28
|
-
/**
|
|
29
|
-
* Polyfill Symbol.asyncIterator as required by TypeScript for Node 8.x.
|
|
30
|
-
* See https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-3.html
|
|
31
|
-
*/
|
|
32
|
-
if (!Symbol.asyncIterator) {
|
|
33
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
34
|
-
Symbol.asyncIterator = Symbol.for('Symbol.asyncIterator');
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* WARNING: This following import must happen after the polyfill. The
|
|
38
|
-
* `auto-import` by an IDE such as VSCode may move the import before the
|
|
39
|
-
* polyfill. It must be then fixed manually.
|
|
40
|
-
*/
|
|
41
|
-
const p_event_1 = require("p-event");
|
|
42
23
|
const debug = debug_1.default('loopback:context');
|
|
43
24
|
/**
|
|
44
25
|
* Context provides an implementation of Inversion of Control (IoC) container
|
|
@@ -72,24 +53,32 @@ class Context extends events_1.EventEmitter {
|
|
|
72
53
|
* Key to binding map as the internal registry
|
|
73
54
|
*/
|
|
74
55
|
this.registry = new Map();
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
this.
|
|
56
|
+
// The number of listeners can grow with the number of child contexts
|
|
57
|
+
// For example, each request can add a listener to the RestServer and the
|
|
58
|
+
// listener is removed when the request processing is finished.
|
|
59
|
+
// See https://github.com/strongloop/loopback-next/issues/4363
|
|
60
|
+
this.setMaxListeners(Infinity);
|
|
80
61
|
if (typeof _parent === 'string') {
|
|
81
62
|
name = _parent;
|
|
82
63
|
_parent = undefined;
|
|
83
64
|
}
|
|
84
65
|
this._parent = _parent;
|
|
85
66
|
this.name = (name !== null && name !== void 0 ? name : uuid_1.v1());
|
|
67
|
+
this.tagIndexer = new context_tag_indexer_1.ContextTagIndexer(this);
|
|
68
|
+
this.subscriptionManager = new context_subscription_1.ContextSubscriptionManager(this);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* @internal
|
|
72
|
+
* Getter for ContextSubscriptionManager
|
|
73
|
+
*/
|
|
74
|
+
get parent() {
|
|
75
|
+
return this._parent;
|
|
86
76
|
}
|
|
87
77
|
/**
|
|
88
78
|
* Wrap the debug statement so that it always print out the context name
|
|
89
79
|
* as the prefix
|
|
90
80
|
* @param args - Arguments for the debug
|
|
91
81
|
*/
|
|
92
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
93
82
|
_debug(...args) {
|
|
94
83
|
/* istanbul ignore if */
|
|
95
84
|
if (!debug.enabled)
|
|
@@ -103,162 +92,20 @@ class Context extends events_1.EventEmitter {
|
|
|
103
92
|
}
|
|
104
93
|
}
|
|
105
94
|
/**
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
*
|
|
95
|
+
* A strongly-typed method to emit context events
|
|
96
|
+
* @param type Event type
|
|
97
|
+
* @param event Context event
|
|
109
98
|
*/
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
return;
|
|
113
|
-
this.addParentEventListener('bind');
|
|
114
|
-
this.addParentEventListener('unbind');
|
|
115
|
-
// The following are two async functions. Returned promises are ignored as
|
|
116
|
-
// they are long-running background tasks.
|
|
117
|
-
this.startNotificationTask().catch(err => {
|
|
118
|
-
this.handleNotificationError(err);
|
|
119
|
-
});
|
|
120
|
-
let ctx = this._parent;
|
|
121
|
-
while (ctx) {
|
|
122
|
-
ctx.setupEventHandlersIfNeeded();
|
|
123
|
-
ctx = ctx._parent;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Add an event listener to its parent context so that this context will
|
|
128
|
-
* be notified of parent events, such as `bind` or `unbind`.
|
|
129
|
-
* @param event - Event name
|
|
130
|
-
*/
|
|
131
|
-
addParentEventListener(event) {
|
|
132
|
-
var _a;
|
|
133
|
-
if (this._parent == null)
|
|
134
|
-
return;
|
|
135
|
-
// Keep track of parent event listeners so that we can remove them
|
|
136
|
-
this._parentEventListeners = (_a = this._parentEventListeners, (_a !== null && _a !== void 0 ? _a : new Map()));
|
|
137
|
-
if (this._parentEventListeners.has(event))
|
|
138
|
-
return;
|
|
139
|
-
const parentEventListener = (binding, context) => {
|
|
140
|
-
// Propagate the event to this context only if the binding key does not
|
|
141
|
-
// exist in this context. The parent binding is shadowed if there is a
|
|
142
|
-
// binding with the same key in this one.
|
|
143
|
-
if (this.contains(binding.key)) {
|
|
144
|
-
this._debug('Event %s %s is not re-emitted from %s to %s', event, binding.key, context.name, this.name);
|
|
145
|
-
return;
|
|
146
|
-
}
|
|
147
|
-
this._debug('Re-emitting %s %s from %s to %s', event, binding.key, context.name, this.name);
|
|
148
|
-
this.emit(event, binding, context);
|
|
149
|
-
};
|
|
150
|
-
this._parentEventListeners.set(event, parentEventListener);
|
|
151
|
-
// Listen on the parent context events
|
|
152
|
-
this._parent.on(event, parentEventListener);
|
|
99
|
+
emitEvent(type, event) {
|
|
100
|
+
this.emit(type, event);
|
|
153
101
|
}
|
|
154
102
|
/**
|
|
155
|
-
*
|
|
156
|
-
* @param err
|
|
103
|
+
* Emit an `error` event
|
|
104
|
+
* @param err Error
|
|
157
105
|
*/
|
|
158
|
-
|
|
159
|
-
// Bubbling up the error event over the context chain
|
|
160
|
-
// until we find an error listener
|
|
161
|
-
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
162
|
-
let ctx = this;
|
|
163
|
-
while (ctx) {
|
|
164
|
-
if (ctx.listenerCount('error') === 0) {
|
|
165
|
-
// No error listener found, try its parent
|
|
166
|
-
ctx = ctx._parent;
|
|
167
|
-
continue;
|
|
168
|
-
}
|
|
169
|
-
this._debug('Emitting error to context %s', ctx.name, err);
|
|
170
|
-
ctx.emit('error', err);
|
|
171
|
-
return;
|
|
172
|
-
}
|
|
173
|
-
// No context with error listeners found
|
|
174
|
-
this._debug('No error handler is configured for the context chain', err);
|
|
175
|
-
// Let it crash now by emitting an error event
|
|
106
|
+
emitError(err) {
|
|
176
107
|
this.emit('error', err);
|
|
177
108
|
}
|
|
178
|
-
/**
|
|
179
|
-
* Start a background task to listen on context events and notify observers
|
|
180
|
-
*/
|
|
181
|
-
startNotificationTask() {
|
|
182
|
-
// Set up listeners on `bind` and `unbind` for notifications
|
|
183
|
-
this.setupNotification('bind', 'unbind');
|
|
184
|
-
// Create an async iterator for the `notification` event as a queue
|
|
185
|
-
this.notificationQueue = p_event_1.iterator(this, 'notification');
|
|
186
|
-
return this.processNotifications();
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Process notification events as they arrive on the queue
|
|
190
|
-
*/
|
|
191
|
-
async processNotifications() {
|
|
192
|
-
var e_1, _a;
|
|
193
|
-
const events = this.notificationQueue;
|
|
194
|
-
if (events == null)
|
|
195
|
-
return;
|
|
196
|
-
try {
|
|
197
|
-
for (var events_2 = __asyncValues(events), events_2_1; events_2_1 = await events_2.next(), !events_2_1.done;) {
|
|
198
|
-
const { eventType, binding, context, observers } = events_2_1.value;
|
|
199
|
-
// The loop will happen asynchronously upon events
|
|
200
|
-
try {
|
|
201
|
-
// The execution of observers happen in the Promise micro-task queue
|
|
202
|
-
await this.notifyObservers(eventType, binding, context, observers);
|
|
203
|
-
this.pendingNotifications--;
|
|
204
|
-
this._debug('Observers notified for %s of binding %s', eventType, binding.key);
|
|
205
|
-
this.emit('observersNotified', { eventType, binding });
|
|
206
|
-
}
|
|
207
|
-
catch (err) {
|
|
208
|
-
this.pendingNotifications--;
|
|
209
|
-
this._debug('Error caught from observers', err);
|
|
210
|
-
// Errors caught from observers. Emit it to the current context.
|
|
211
|
-
// If no error listeners are registered, crash the process.
|
|
212
|
-
this.emit('error', err);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
217
|
-
finally {
|
|
218
|
-
try {
|
|
219
|
-
if (events_2_1 && !events_2_1.done && (_a = events_2.return)) await _a.call(events_2);
|
|
220
|
-
}
|
|
221
|
-
finally { if (e_1) throw e_1.error; }
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* Listen on given event types and emit `notification` event. This method
|
|
226
|
-
* merge multiple event types into one for notification.
|
|
227
|
-
* @param eventTypes - Context event types
|
|
228
|
-
*/
|
|
229
|
-
setupNotification(...eventTypes) {
|
|
230
|
-
for (const eventType of eventTypes) {
|
|
231
|
-
this.on(eventType, (binding, context) => {
|
|
232
|
-
// No need to schedule notifications if no observers are present
|
|
233
|
-
if (!this.observers || this.observers.size === 0)
|
|
234
|
-
return;
|
|
235
|
-
// Track pending events
|
|
236
|
-
this.pendingNotifications++;
|
|
237
|
-
// Take a snapshot of current observers to ensure notifications of this
|
|
238
|
-
// event will only be sent to current ones. Emit a new event to notify
|
|
239
|
-
// current context observers.
|
|
240
|
-
this.emit('notification', {
|
|
241
|
-
eventType,
|
|
242
|
-
binding,
|
|
243
|
-
context,
|
|
244
|
-
observers: new Set(this.observers),
|
|
245
|
-
});
|
|
246
|
-
});
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
/**
|
|
250
|
-
* Wait until observers are notified for all of currently pending notification
|
|
251
|
-
* events.
|
|
252
|
-
*
|
|
253
|
-
* This method is for test only to perform assertions after observers are
|
|
254
|
-
* notified for relevant events.
|
|
255
|
-
*/
|
|
256
|
-
async waitUntilPendingNotificationsDone(timeout) {
|
|
257
|
-
const count = this.pendingNotifications;
|
|
258
|
-
if (count === 0)
|
|
259
|
-
return;
|
|
260
|
-
await p_event_1.multiple(this, 'observersNotified', { count, timeout });
|
|
261
|
-
}
|
|
262
109
|
/**
|
|
263
110
|
* Create a binding with the given key in the context. If a locked binding
|
|
264
111
|
* already exists with the same key, an error will be thrown.
|
|
@@ -290,9 +137,13 @@ class Context extends events_1.EventEmitter {
|
|
|
290
137
|
this.registry.set(key, binding);
|
|
291
138
|
if (existingBinding !== binding) {
|
|
292
139
|
if (existingBinding != null) {
|
|
293
|
-
this.
|
|
140
|
+
this.emitEvent('unbind', {
|
|
141
|
+
binding: existingBinding,
|
|
142
|
+
context: this,
|
|
143
|
+
type: 'unbind',
|
|
144
|
+
});
|
|
294
145
|
}
|
|
295
|
-
this.
|
|
146
|
+
this.emitEvent('bind', { binding, context: this, type: 'bind' });
|
|
296
147
|
}
|
|
297
148
|
return this;
|
|
298
149
|
}
|
|
@@ -401,7 +252,7 @@ class Context extends events_1.EventEmitter {
|
|
|
401
252
|
if ((_a = binding) === null || _a === void 0 ? void 0 : _a.isLocked)
|
|
402
253
|
throw new Error(`Cannot unbind key "${key}" of a locked binding`);
|
|
403
254
|
this.registry.delete(key);
|
|
404
|
-
this.
|
|
255
|
+
this.emitEvent('unbind', { binding, context: this, type: 'unbind' });
|
|
405
256
|
return true;
|
|
406
257
|
}
|
|
407
258
|
/**
|
|
@@ -409,20 +260,14 @@ class Context extends events_1.EventEmitter {
|
|
|
409
260
|
* @param observer - Context observer instance or function
|
|
410
261
|
*/
|
|
411
262
|
subscribe(observer) {
|
|
412
|
-
|
|
413
|
-
this.observers = (_a = this.observers, (_a !== null && _a !== void 0 ? _a : new Set()));
|
|
414
|
-
this.setupEventHandlersIfNeeded();
|
|
415
|
-
this.observers.add(observer);
|
|
416
|
-
return new ContextSubscription(this, observer);
|
|
263
|
+
return this.subscriptionManager.subscribe(observer);
|
|
417
264
|
}
|
|
418
265
|
/**
|
|
419
266
|
* Remove the context event observer from the context
|
|
420
267
|
* @param observer - Context event observer
|
|
421
268
|
*/
|
|
422
269
|
unsubscribe(observer) {
|
|
423
|
-
|
|
424
|
-
return false;
|
|
425
|
-
return this.observers.delete(observer);
|
|
270
|
+
return this.subscriptionManager.unsubscribe(observer);
|
|
426
271
|
}
|
|
427
272
|
/**
|
|
428
273
|
* Close the context: clear observers, stop notifications, and remove event
|
|
@@ -435,29 +280,15 @@ class Context extends events_1.EventEmitter {
|
|
|
435
280
|
*/
|
|
436
281
|
close() {
|
|
437
282
|
this._debug('Closing context...');
|
|
438
|
-
this.
|
|
439
|
-
|
|
440
|
-
// Cancel the notification iterator
|
|
441
|
-
this.notificationQueue.return(undefined).catch(err => {
|
|
442
|
-
this.handleNotificationError(err);
|
|
443
|
-
});
|
|
444
|
-
this.notificationQueue = undefined;
|
|
445
|
-
}
|
|
446
|
-
if (this._parent && this._parentEventListeners) {
|
|
447
|
-
for (const [event, listener] of this._parentEventListeners) {
|
|
448
|
-
this._parent.removeListener(event, listener);
|
|
449
|
-
}
|
|
450
|
-
this._parentEventListeners = undefined;
|
|
451
|
-
}
|
|
283
|
+
this.subscriptionManager.close();
|
|
284
|
+
this.tagIndexer.close();
|
|
452
285
|
}
|
|
453
286
|
/**
|
|
454
287
|
* Check if an observer is subscribed to this context
|
|
455
288
|
* @param observer - Context observer
|
|
456
289
|
*/
|
|
457
290
|
isSubscribed(observer) {
|
|
458
|
-
|
|
459
|
-
return false;
|
|
460
|
-
return this.observers.has(observer);
|
|
291
|
+
return this.subscriptionManager.isSubscribed(observer);
|
|
461
292
|
}
|
|
462
293
|
/**
|
|
463
294
|
* Create a view of the context chain with the given binding filter
|
|
@@ -469,29 +300,6 @@ class Context extends events_1.EventEmitter {
|
|
|
469
300
|
view.open();
|
|
470
301
|
return view;
|
|
471
302
|
}
|
|
472
|
-
/**
|
|
473
|
-
* Publish an event to the registered observers. Please note the
|
|
474
|
-
* notification is queued and performed asynchronously so that we allow fluent
|
|
475
|
-
* APIs such as `ctx.bind('key').to(...).tag(...);` and give observers the
|
|
476
|
-
* fully populated binding.
|
|
477
|
-
*
|
|
478
|
-
* @param eventType - Event names: `bind` or `unbind`
|
|
479
|
-
* @param binding - Binding bound or unbound
|
|
480
|
-
* @param context - Owner context
|
|
481
|
-
* @param observers - Current set of context observers
|
|
482
|
-
*/
|
|
483
|
-
async notifyObservers(eventType, binding, context, observers = this.observers) {
|
|
484
|
-
if (!observers || observers.size === 0)
|
|
485
|
-
return;
|
|
486
|
-
for (const observer of observers) {
|
|
487
|
-
if (typeof observer === 'function') {
|
|
488
|
-
await observer(eventType, binding, context);
|
|
489
|
-
}
|
|
490
|
-
else if (!observer.filter || observer.filter(binding)) {
|
|
491
|
-
await observer.observe(eventType, binding, context);
|
|
492
|
-
}
|
|
493
|
-
}
|
|
494
|
-
}
|
|
495
303
|
/**
|
|
496
304
|
* Check if a binding exists with the given key in the local context without
|
|
497
305
|
* delegating to the parent context
|
|
@@ -540,6 +348,10 @@ class Context extends events_1.EventEmitter {
|
|
|
540
348
|
* - return `false` to exclude it.
|
|
541
349
|
*/
|
|
542
350
|
find(pattern) {
|
|
351
|
+
// Optimize if the binding filter is for tags
|
|
352
|
+
if (typeof pattern === 'function' && binding_filter_1.isBindingTagFilter(pattern)) {
|
|
353
|
+
return this._findByTagIndex(pattern.bindingTagPattern);
|
|
354
|
+
}
|
|
543
355
|
const bindings = [];
|
|
544
356
|
const filter = binding_filter_1.filterByKey(pattern);
|
|
545
357
|
for (const b of this.registry.values()) {
|
|
@@ -566,6 +378,16 @@ class Context extends events_1.EventEmitter {
|
|
|
566
378
|
findByTag(tagFilter) {
|
|
567
379
|
return this.find(binding_filter_1.filterByTag(tagFilter));
|
|
568
380
|
}
|
|
381
|
+
/**
|
|
382
|
+
* Find bindings by tag leveraging indexes
|
|
383
|
+
* @param tag - Tag name pattern or name/value pairs
|
|
384
|
+
*/
|
|
385
|
+
_findByTagIndex(tag) {
|
|
386
|
+
var _a;
|
|
387
|
+
const currentBindings = this.tagIndexer.findByTagIndex(tag);
|
|
388
|
+
const parentBindings = this._parent && ((_a = this._parent) === null || _a === void 0 ? void 0 : _a._findByTagIndex(tag));
|
|
389
|
+
return this._mergeWithParent(currentBindings, parentBindings);
|
|
390
|
+
}
|
|
569
391
|
_mergeWithParent(childList, parentList) {
|
|
570
392
|
if (!parentList)
|
|
571
393
|
return childList;
|
|
@@ -695,23 +517,6 @@ class Context extends events_1.EventEmitter {
|
|
|
695
517
|
}
|
|
696
518
|
}
|
|
697
519
|
exports.Context = Context;
|
|
698
|
-
/**
|
|
699
|
-
* An implementation of `Subscription` interface for context events
|
|
700
|
-
*/
|
|
701
|
-
class ContextSubscription {
|
|
702
|
-
constructor(context, observer) {
|
|
703
|
-
this.context = context;
|
|
704
|
-
this.observer = observer;
|
|
705
|
-
this._closed = false;
|
|
706
|
-
}
|
|
707
|
-
unsubscribe() {
|
|
708
|
-
this.context.unsubscribe(this.observer);
|
|
709
|
-
this._closed = true;
|
|
710
|
-
}
|
|
711
|
-
get closed() {
|
|
712
|
-
return this._closed;
|
|
713
|
-
}
|
|
714
|
-
}
|
|
715
520
|
/**
|
|
716
521
|
* Policy to control if a binding should be created for the context
|
|
717
522
|
*/
|
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,7 +7,9 @@ export * from './binding-inspector';
|
|
|
7
7
|
export * from './binding-key';
|
|
8
8
|
export * from './binding-sorter';
|
|
9
9
|
export * from './context';
|
|
10
|
+
export * from './context-event';
|
|
10
11
|
export * from './context-observer';
|
|
12
|
+
export * from './context-subscription';
|
|
11
13
|
export * from './context-view';
|
|
12
14
|
export * from './inject';
|
|
13
15
|
export * from './inject-config';
|
package/dist/index.js
CHANGED
|
@@ -16,6 +16,7 @@ __export(require("./binding-inspector"));
|
|
|
16
16
|
__export(require("./binding-key"));
|
|
17
17
|
__export(require("./binding-sorter"));
|
|
18
18
|
__export(require("./context"));
|
|
19
|
+
__export(require("./context-subscription"));
|
|
19
20
|
__export(require("./context-view"));
|
|
20
21
|
__export(require("./inject"));
|
|
21
22
|
__export(require("./inject-config"));
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,iCAAiC;AACjC,+CAA+C;AAC/C,gEAAgE;;;;;AAEhE,wCAAmC;AACnC,+BAA0B;AAC1B,sCAAiC;AACjC,yCAAoC;AACpC,sCAAiC;AACjC,yCAAoC;AACpC,mCAA8B;AAC9B,sCAAiC;AACjC,+BAA0B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,iCAAiC;AACjC,+CAA+C;AAC/C,gEAAgE;;;;;AAEhE,wCAAmC;AACnC,+BAA0B;AAC1B,sCAAiC;AACjC,yCAAoC;AACpC,sCAAiC;AACjC,yCAAoC;AACpC,mCAA8B;AAC9B,sCAAiC;AACjC,+BAA0B;AAG1B,4CAAuC;AACvC,oCAA+B;AAC/B,8BAAyB;AACzB,qCAAgC;AAChC,0CAAqC;AACrC,mCAA8B;AAC9B,yCAAoC;AACpC,kCAA6B;AAC7B,4BAAuB;AAEvB,0CAAqC;AACrC,gCAA2B;AAC3B,qCAAgC"}
|
package/dist/inject.d.ts
CHANGED
|
@@ -172,7 +172,7 @@ export declare namespace inject {
|
|
|
172
172
|
* @param bindingTag - Tag name, regex or object
|
|
173
173
|
* @param metadata - Optional metadata to help the injection
|
|
174
174
|
*/
|
|
175
|
-
const tag: (bindingTag: string | RegExp |
|
|
175
|
+
const tag: (bindingTag: string | RegExp | Record<string, any>, metadata?: InjectionMetadata | undefined) => (target: Object, member: string | undefined, methodDescriptorOrParameterIndex?: number | TypedPropertyDescriptor<any> | undefined) => void;
|
|
176
176
|
/**
|
|
177
177
|
* Inject matching bound values by the filter function
|
|
178
178
|
*
|