@openfin/node-adapter 40.101.1 → 40.102.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. package/out/node-adapter.js +37 -38
  2. package/package.json +2 -2
@@ -84,7 +84,7 @@ var __classPrivateFieldGet$e = (commonjsGlobal && commonjsGlobal.__classPrivateF
84
84
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
85
85
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
86
86
  };
87
- var _EmitterBase_emitterAccessor;
87
+ var _EmitterBase_emitterAccessor, _EmitterBase_deregisterOnceListeners;
88
88
  Object.defineProperty(base, "__esModule", { value: true });
89
89
  base.Reply = base.EmitterBase = base.Base = void 0;
90
90
  const promises_1 = promises;
@@ -156,6 +156,7 @@ class EmitterBase extends Base {
156
156
  super(wire);
157
157
  this.topic = topic;
158
158
  _EmitterBase_emitterAccessor.set(this, void 0);
159
+ _EmitterBase_deregisterOnceListeners.set(this, void 0);
159
160
  this.eventNames = () => (this.hasEmitter() ? this.getOrCreateEmitter().eventNames() : []);
160
161
  /**
161
162
  * @internal
@@ -164,7 +165,28 @@ class EmitterBase extends Base {
164
165
  return this.hasEmitter() ? this.getOrCreateEmitter().emit(eventType, payload, ...args) : false;
165
166
  };
166
167
  this.hasEmitter = () => this.wire.eventAggregator.has(__classPrivateFieldGet$e(this, _EmitterBase_emitterAccessor, "f"));
167
- this.getOrCreateEmitter = () => this.wire.eventAggregator.getOrCreate(__classPrivateFieldGet$e(this, _EmitterBase_emitterAccessor, "f"));
168
+ /**
169
+ * Cleans up after removal of a listener, e.g. deleting any lingering deregistration handlers for a
170
+ * `once` subscription.
171
+ *
172
+ * @remarks Implementing this as a `removeListener` handler ensures that direct removal of a listener
173
+ * on the base emitter will not leak additional core handlers. We could do this in the forwarding method,
174
+ * which would involve less "magic," but would be more-vulnerable to accidental re-introduction of a leak.
175
+ */
176
+ this.cleanUpRemovedListener = (eventType, listener) => {
177
+ const deregister = __classPrivateFieldGet$e(this, _EmitterBase_deregisterOnceListeners, "f").get(listener);
178
+ if (deregister) {
179
+ const emitter = this.wire.eventAggregator.getOrCreate(__classPrivateFieldGet$e(this, _EmitterBase_emitterAccessor, "f"));
180
+ emitter.removeListener(eventType, deregister);
181
+ }
182
+ };
183
+ this.getOrCreateEmitter = () => {
184
+ const emitter = this.wire.eventAggregator.getOrCreate(__classPrivateFieldGet$e(this, _EmitterBase_emitterAccessor, "f"));
185
+ if (!emitter.listeners('removeListener').includes(this.cleanUpRemovedListener)) {
186
+ emitter.on('removeListener', this.cleanUpRemovedListener);
187
+ }
188
+ return emitter;
189
+ };
168
190
  this.listeners = (type) => this.hasEmitter() ? this.getOrCreateEmitter().listeners(type) : [];
169
191
  this.listenerCount = (type) => this.hasEmitter() ? this.getOrCreateEmitter().listenerCount(type) : 0;
170
192
  this.registerEventListener = async (eventType, options = {}, applySubscription, undoSubscription) => {
@@ -196,13 +218,13 @@ class EmitterBase extends Base {
196
218
  type: eventType
197
219
  };
198
220
  await this.wire.sendAction('unsubscribe-to-desktop-event', runtimeEvent).catch(() => null);
199
- const emitter = this.getOrCreateEmitter();
200
- return emitter;
221
+ return this.getOrCreateEmitter();
201
222
  }
202
223
  // This will only be reached if unsubscribe from event that does not exist but do not want to error here
203
224
  return Promise.resolve();
204
225
  };
205
226
  __classPrivateFieldSet$d(this, _EmitterBase_emitterAccessor, [topic, ...additionalAccessors], "f");
227
+ __classPrivateFieldSet$d(this, _EmitterBase_deregisterOnceListeners, new WeakMap(), "f");
206
228
  this.listeners = (event) => this.hasEmitter() ? this.getOrCreateEmitter().listeners(event) : [];
207
229
  }
208
230
  /**
@@ -231,6 +253,7 @@ class EmitterBase extends Base {
231
253
  */
232
254
  async once(eventType, listener, options) {
233
255
  const deregister = () => this.deregisterEventListener(eventType);
256
+ __classPrivateFieldGet$e(this, _EmitterBase_deregisterOnceListeners, "f").set(listener, deregister);
234
257
  await this.registerEventListener(eventType, options, (emitter) => {
235
258
  emitter.once(eventType, deregister);
236
259
  emitter.once(eventType, listener);
@@ -261,6 +284,7 @@ class EmitterBase extends Base {
261
284
  */
262
285
  async prependOnceListener(eventType, listener, options) {
263
286
  const deregister = () => this.deregisterEventListener(eventType);
287
+ __classPrivateFieldGet$e(this, _EmitterBase_deregisterOnceListeners, "f").set(listener, deregister);
264
288
  await this.registerEventListener(eventType, options, (emitter) => {
265
289
  emitter.prependOnceListener(eventType, listener);
266
290
  emitter.once(eventType, deregister);
@@ -319,13 +343,13 @@ class EmitterBase extends Base {
319
343
  return this;
320
344
  }
321
345
  deleteEmitterIfNothingRegistered(emitter) {
322
- if (emitter.eventNames().length === 0) {
346
+ if (emitter.eventNames().every((type) => type === 'removeListener')) {
323
347
  this.wire.eventAggregator.delete(__classPrivateFieldGet$e(this, _EmitterBase_emitterAccessor, "f"));
324
348
  }
325
349
  }
326
350
  }
327
351
  base.EmitterBase = EmitterBase;
328
- _EmitterBase_emitterAccessor = new WeakMap();
352
+ _EmitterBase_emitterAccessor = new WeakMap(), _EmitterBase_deregisterOnceListeners = new WeakMap();
329
353
  class Reply {
330
354
  }
331
355
  base.Reply = Reply;
@@ -3736,9 +3760,9 @@ function requireInstance () {
3736
3760
  * getBounds().then(bounds => console.log(bounds)).catch(err => console.log(err));
3737
3761
  * ```
3738
3762
  */
3739
- getBounds() {
3763
+ getBounds(options) {
3740
3764
  return this.wire
3741
- .sendAction('get-window-bounds', this.identity)
3765
+ .sendAction('get-window-bounds', { ...this.identity, options })
3742
3766
  .then(({ payload }) => payload.data);
3743
3767
  }
3744
3768
  /**
@@ -11688,7 +11712,7 @@ const layout_constants_1$1 = layout_constants;
11688
11712
  *
11689
11713
  * @remarks The built-in event emitter is not an OpenFin event emitter so it doesn't share propagation semantics.
11690
11714
  *
11691
- * #### {@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener addEventListener(type, listener [, options]);}
11715
+ * #### [addEventListener(type, listener [, options]);](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener)
11692
11716
  * Adds a listener to the end of the listeners array for the specified event.
11693
11717
  * @example
11694
11718
  * ```js
@@ -11705,7 +11729,7 @@ const layout_constants_1$1 = layout_constants;
11705
11729
  * });
11706
11730
  * ```
11707
11731
  *
11708
- * #### {@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener removeEventListener(type, listener [, options]);}
11732
+ * #### [removeEventListener(type, listener [, options]);](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener)
11709
11733
  * Adds a listener to the end of the listeners array for the specified event.
11710
11734
  * @example
11711
11735
  * ```js
@@ -12056,7 +12080,7 @@ class Layout extends base_1$5.Base {
12056
12080
  return layout_entities_1.LayoutNode.getEntity(stack, client);
12057
12081
  }
12058
12082
  /**
12059
- * Adds a view to the platform layout. Behaves like @link{Platform#createView} with the current layout as the target.
12083
+ * Adds a view to the platform layout. Behaves like {@link Platform#createView Platform.createView} with the current layout as the target.
12060
12084
  *
12061
12085
  * @param viewOptions - The options for creating the view.
12062
12086
  * @param options - Optional parameters for adding the view.
@@ -12077,7 +12101,7 @@ class Layout extends base_1$5.Base {
12077
12101
  }
12078
12102
  /**
12079
12103
  * Closes a view by its identity. Throws an error if the view does not belong to the current layout.
12080
- * Behaves like @link{Platform#closeView} but only closes the view if it belongs the current layout.
12104
+ * Behaves like {@link Platform#closeView Platform.closeView} but only closes the view if it belongs the current layout.
12081
12105
  *
12082
12106
  * @param viewIdentity - The identity of the view to close.
12083
12107
  * @returns A promise that resolves when the view is closed.
@@ -14449,31 +14473,6 @@ function requireInteropBroker () {
14449
14473
  if (!context.type) {
14450
14474
  return { isValid: false, reason: 'Context must have a type property' };
14451
14475
  }
14452
- if (context.id && typeof context.id !== 'object') {
14453
- return {
14454
- isValid: false,
14455
- reason: 'Context id must be an Object populated with key-value identifiers (if set)'
14456
- };
14457
- }
14458
- if (context.id) {
14459
- const { id } = context;
14460
- const keys = Object.keys(id);
14461
- let foundBadIdentifier = false;
14462
- if (!keys.length) {
14463
- return { isValid: false, reason: 'Context id must have at least one key-value identifier' };
14464
- }
14465
- keys.forEach((key) => {
14466
- if (typeof key !== 'string' || typeof id[key] !== 'string') {
14467
- foundBadIdentifier = true;
14468
- }
14469
- });
14470
- if (foundBadIdentifier) {
14471
- return { isValid: false, reason: 'Context id key-value identifiers must be of type string' };
14472
- }
14473
- }
14474
- if (context.name && typeof context.name !== 'string') {
14475
- return { isValid: false, reason: 'Context name must be of string type (if set)' };
14476
- }
14477
14476
  return { isValid: true };
14478
14477
  }
14479
14478
  // Util to check a client identity.
@@ -17787,7 +17786,7 @@ class NodeEnvironment extends BaseEnvironment_1 {
17787
17786
  };
17788
17787
  }
17789
17788
  getAdapterVersionSync() {
17790
- return "40.101.1";
17789
+ return "40.102.2";
17791
17790
  }
17792
17791
  observeBounds(element, onChange) {
17793
17792
  throw new Error('Method not implemented.');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openfin/node-adapter",
3
- "version": "40.101.1",
3
+ "version": "40.102.2",
4
4
  "description": "See README.md",
5
5
  "main": "out/node-adapter.js",
6
6
  "types": "out/node-adapter.d.ts",
@@ -24,7 +24,7 @@
24
24
  "author": "OpenFin",
25
25
  "dependencies": {
26
26
  "@types/node": "^20.14.2",
27
- "@openfin/core": "40.101.1",
27
+ "@openfin/core": "40.102.2",
28
28
  "lodash": "^4.17.21",
29
29
  "ws": "^7.3.0"
30
30
  }