@openfin/node-adapter 41.100.72 → 41.100.78

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 -13
  2. package/package.json +2 -2
@@ -84,7 +84,7 @@ var __classPrivateFieldGet$h = (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$h(this, _EmitterBase_emitterAccessor, "f"));
167
- this.getOrCreateEmitter = () => this.wire.eventAggregator.getOrCreate(__classPrivateFieldGet$h(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$h(this, _EmitterBase_deregisterOnceListeners, "f").get(listener);
178
+ if (deregister) {
179
+ const emitter = this.wire.eventAggregator.getOrCreate(__classPrivateFieldGet$h(this, _EmitterBase_emitterAccessor, "f"));
180
+ emitter.removeListener(eventType, deregister);
181
+ }
182
+ };
183
+ this.getOrCreateEmitter = () => {
184
+ const emitter = this.wire.eventAggregator.getOrCreate(__classPrivateFieldGet$h(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$g(this, _EmitterBase_emitterAccessor, [topic, ...additionalAccessors], "f");
227
+ __classPrivateFieldSet$g(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$h(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$h(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$h(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;
@@ -3751,9 +3775,9 @@ function requireInstance () {
3751
3775
  * getBounds().then(bounds => console.log(bounds)).catch(err => console.log(err));
3752
3776
  * ```
3753
3777
  */
3754
- getBounds() {
3778
+ getBounds(options) {
3755
3779
  return this.wire
3756
- .sendAction('get-window-bounds', this.identity)
3780
+ .sendAction('get-window-bounds', { ...this.identity, options })
3757
3781
  .then(({ payload }) => payload.data);
3758
3782
  }
3759
3783
  /**
@@ -11703,7 +11727,7 @@ const layout_constants_1$1 = layout_constants;
11703
11727
  *
11704
11728
  * @remarks The built-in event emitter is not an OpenFin event emitter so it doesn't share propagation semantics.
11705
11729
  *
11706
- * #### {@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener addEventListener(type, listener [, options]);}
11730
+ * #### [addEventListener(type, listener [, options]);](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener)
11707
11731
  * Adds a listener to the end of the listeners array for the specified event.
11708
11732
  * @example
11709
11733
  * ```js
@@ -11720,7 +11744,7 @@ const layout_constants_1$1 = layout_constants;
11720
11744
  * });
11721
11745
  * ```
11722
11746
  *
11723
- * #### {@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener removeEventListener(type, listener [, options]);}
11747
+ * #### [removeEventListener(type, listener [, options]);](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener)
11724
11748
  * Adds a listener to the end of the listeners array for the specified event.
11725
11749
  * @example
11726
11750
  * ```js
@@ -12071,7 +12095,7 @@ class Layout extends base_1$8.Base {
12071
12095
  return layout_entities_1.LayoutNode.getEntity(stack, client);
12072
12096
  }
12073
12097
  /**
12074
- * Adds a view to the platform layout. Behaves like @link{Platform#createView} with the current layout as the target.
12098
+ * Adds a view to the platform layout. Behaves like {@link Platform#createView Platform.createView} with the current layout as the target.
12075
12099
  *
12076
12100
  * @param viewOptions - The options for creating the view.
12077
12101
  * @param options - Optional parameters for adding the view.
@@ -12092,7 +12116,7 @@ class Layout extends base_1$8.Base {
12092
12116
  }
12093
12117
  /**
12094
12118
  * Closes a view by its identity. Throws an error if the view does not belong to the current layout.
12095
- * Behaves like @link{Platform#closeView} but only closes the view if it belongs the current layout.
12119
+ * Behaves like {@link Platform#closeView Platform.closeView} but only closes the view if it belongs the current layout.
12096
12120
  *
12097
12121
  * @param viewIdentity - The identity of the view to close.
12098
12122
  * @returns A promise that resolves when the view is closed.
@@ -17721,7 +17745,7 @@ class NodeEnvironment extends BaseEnvironment_1 {
17721
17745
  };
17722
17746
  }
17723
17747
  getAdapterVersionSync() {
17724
- return "41.100.72";
17748
+ return "41.100.78";
17725
17749
  }
17726
17750
  observeBounds(element, onChange) {
17727
17751
  throw new Error('Method not implemented.');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openfin/node-adapter",
3
- "version": "41.100.72",
3
+ "version": "41.100.78",
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": "41.100.72",
27
+ "@openfin/core": "41.100.78",
28
28
  "lodash": "^4.17.21",
29
29
  "ws": "^7.3.0"
30
30
  }