@openfin/core 44.101.1 → 44.101.3

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/out/stub.d.ts CHANGED
@@ -45,6 +45,16 @@ declare type Accelerator = {
45
45
  zoom: boolean;
46
46
  };
47
47
 
48
+ /**
49
+ * @interface
50
+ * Shared context available to all aria label functions.
51
+ */
52
+ declare type AccessibilityContext = {
53
+ arrowNavigationEnabled: boolean;
54
+ deleteKeyCloseEnabled: boolean;
55
+ homeEndNavigationEnabled: boolean;
56
+ };
57
+
48
58
  /**
49
59
  * Generated when a View is added to a layout.
50
60
  * @interface
@@ -54,6 +64,14 @@ declare type AddedToLayoutEvent = BaseEvent_4 & {
54
64
  layoutIdentity: OpenFin_2.LayoutIdentity;
55
65
  };
56
66
 
67
+ /**
68
+ * @interface
69
+ * Context for add tab button aria-label functions.
70
+ */
71
+ declare type AddTabButtonAriaLabelContext = AccessibilityContext & {
72
+ tabCount: number;
73
+ };
74
+
57
75
  /**
58
76
  * Options to use when adding a view to a {@link TabStack}.
59
77
  *
@@ -1613,6 +1631,17 @@ declare type AppVersionTypeFromIdEvent<T extends IdEventType> = Extract<AppVersi
1613
1631
  type: WithoutId<T>;
1614
1632
  }>;
1615
1633
 
1634
+ /**
1635
+ * @interface
1636
+ * Custom aria-label providers for accessibility.
1637
+ */
1638
+ declare type AriaLabelOptions = {
1639
+ activeTab?: string | ((ctx: TabAriaLabelContext) => string);
1640
+ inactiveTab?: string | ((ctx: TabAriaLabelContext) => string);
1641
+ closeButton?: string | ((ctx: CloseButtonAriaLabelContext) => string);
1642
+ addTabButton?: string | ((ctx: AddTabButtonAriaLabelContext) => string);
1643
+ };
1644
+
1616
1645
  declare interface AuthorizationPayload {
1617
1646
  token: string;
1618
1647
  file: string;
@@ -3171,6 +3200,11 @@ declare type ClearCacheOption = {
3171
3200
  * browser data that can be used across sessions
3172
3201
  */
3173
3202
  localStorage?: boolean;
3203
+ /**
3204
+ * Clears saved window-state data written for windows that use `saveWindowState`.
3205
+ * After this data is cleared, previously persisted bounds and state (Maximized/Minimized) will not be restored until new state is written again.
3206
+ */
3207
+ windowState?: boolean;
3174
3208
  };
3175
3209
 
3176
3210
  /**
@@ -3213,6 +3247,11 @@ declare type ClearDataOptions = {
3213
3247
  * - `origin-in-all-contexts` - Storage is matched on origin only in all contexts.
3214
3248
  */
3215
3249
  originMatchingMode?: 'third-parties-included' | 'origin-in-all-contexts';
3250
+ /**
3251
+ * Clears saved window-state data written for windows that use `saveWindowState`.
3252
+ * After this data is cleared, previously persisted bounds and state (Maximized/Minimized) will not be restored until new state is written again.
3253
+ */
3254
+ windowState?: boolean;
3216
3255
  };
3217
3256
 
3218
3257
  /**
@@ -3500,6 +3539,15 @@ declare type ClipboardPermissions = {
3500
3539
  */
3501
3540
  declare type ClipboardSelectionType = 'clipboard' | 'selection';
3502
3541
 
3542
+ /**
3543
+ * @interface
3544
+ * Context for close button aria-label functions.
3545
+ */
3546
+ declare type CloseButtonAriaLabelContext = AccessibilityContext & {
3547
+ title: string;
3548
+ isActive: boolean;
3549
+ };
3550
+
3503
3551
  /**
3504
3552
  * Generated when an application is closed.
3505
3553
  * @interface
@@ -4515,6 +4563,10 @@ declare type CreateLayoutOptions = {
4515
4563
  * @experimental
4516
4564
  */
4517
4565
  renderCustomHeaderControls?: (controlsElement: HTMLElement, context: HeaderControlsContext) => (() => void) | void;
4566
+ /**
4567
+ * Accessibility options for the layout. Controls ARIA attributes and keyboard navigation.
4568
+ */
4569
+ accessibilityOptions?: LayoutAccessibilityOptions;
4518
4570
  };
4519
4571
 
4520
4572
  /**
@@ -5203,7 +5255,7 @@ declare interface Environment {
5203
5255
  layoutAllowedInContext(fin: OpenFin_2.Fin<OpenFin_2.EntityType>): boolean;
5204
5256
  initLayoutManager(fin: OpenFin_2.Fin<OpenFin_2.EntityType>, wire: Transport, options: OpenFin_2.InitLayoutOptions): Promise<OpenFin_2.LayoutManager<OpenFin_2.LayoutSnapshot>>;
5205
5257
  applyLayoutSnapshot(fin: OpenFin_2.Fin<OpenFin_2.EntityType>, layoutManager: OpenFin_2.LayoutManager<OpenFin_2.LayoutSnapshot>, options: OpenFin_2.InitLayoutOptions): Promise<void>;
5206
- createLayout(layoutManager: OpenFin_2.LayoutManager<OpenFin_2.LayoutSnapshot>, options: OpenFin_2.CreateLayoutOptions): Promise<void>;
5258
+ createLayout(layoutManager: OpenFin_2.LayoutManager<OpenFin_2.LayoutSnapshot>, options: OpenFin_2.CreateLayoutOptions): Promise<OpenFin_2.LayoutSyncApi>;
5207
5259
  destroyLayout(layoutManager: OpenFin_2.LayoutManager<OpenFin_2.LayoutSnapshot>, layoutIdentity: OpenFin_2.LayoutIdentity): Promise<void>;
5208
5260
  resolveLayout(layoutManager: OpenFin_2.LayoutManager<OpenFin_2.LayoutSnapshot>, layoutIdentity: OpenFin_2.LayoutIdentity): Promise<any>;
5209
5261
  initPlatform(fin: OpenFin_2.Fin<OpenFin_2.EntityType>, ...args: Parameters<OpenFin_2.Fin['Platform']['init']>): ReturnType<OpenFin_2.Fin['Platform']['init']>;
@@ -8518,6 +8570,27 @@ declare class Layout extends Base {
8518
8570
  closeView(viewIdentity: OpenFin_2.Identity): Promise<void>;
8519
8571
  }
8520
8572
 
8573
+ /**
8574
+ * @interface
8575
+ * Accessibility options for layout tab navigation and ARIA support.
8576
+ */
8577
+ declare type LayoutAccessibilityOptions = {
8578
+ viewTabOptions?: ViewTabAccessibilityOptions;
8579
+ /**
8580
+ * Keyboard shortcut used to move focus from a tab header element into the active tab's web content.
8581
+ *
8582
+ * - Accepts an accelerator-like string, e.g. `'Ctrl+Enter'`, `'Meta+Enter'`, `'Alt+Enter'`, `'Mod+Enter'`.
8583
+ * - `'Mod'`/`'CmdOrCtrl'`/`'CtrlOrMeta'` means Ctrl on Windows/Linux or Meta on macOS.
8584
+ * - Set to `false` to disable this shortcut.
8585
+ * - In core-web, reverse focus transfer (from iframe web content back to tab header) is not reliably supportable
8586
+ * due to browser iframe security and cross-origin focus restrictions. This hotkey is intentionally one-way:
8587
+ * tab header -> web content.
8588
+ *
8589
+ * @defaultValue 'Mod+Enter'
8590
+ */
8591
+ focusContentHotkey?: string | false;
8592
+ };
8593
+
8521
8594
  /**
8522
8595
  * @interface
8523
8596
  */
@@ -8901,7 +8974,7 @@ declare class LayoutModule extends Base {
8901
8974
  * @returns
8902
8975
  */
8903
8976
  getCurrentLayoutManagerSync: <UserSnapshotType extends OpenFin_2.LayoutSnapshot>() => OpenFin_2.LayoutManager<UserSnapshotType>;
8904
- create: (options: OpenFin_2.CreateLayoutOptions) => Promise<void>;
8977
+ create: (options: OpenFin_2.CreateLayoutOptions) => Promise<OpenFin_2.LayoutSyncApi>;
8905
8978
  destroy: (layoutIdentity: OpenFin_2.LayoutIdentity) => Promise<void>;
8906
8979
  }
8907
8980
 
@@ -9286,6 +9359,19 @@ declare type LayoutStateChangedEvent = LayoutDOMEvent & {
9286
9359
  type: 'layout-state-changed';
9287
9360
  };
9288
9361
 
9362
+ /**
9363
+ * @interface
9364
+ * Sync API returned from Layout.create() for operations that don't require IPC.
9365
+ * Only available in the window context that owns the layout.
9366
+ */
9367
+ declare type LayoutSyncApi = {
9368
+ /**
9369
+ * Updates accessibility options at runtime without recreating the layout.
9370
+ * @param options Partial accessibility options to merge with existing options
9371
+ */
9372
+ updateAccessibilityOptions(options: Partial<LayoutAccessibilityOptions>): void;
9373
+ };
9374
+
9289
9375
  /**
9290
9376
  * @interface
9291
9377
  */
@@ -10824,6 +10910,15 @@ declare namespace OpenFin_2 {
10824
10910
  HeaderControlsContext,
10825
10911
  CreateLayoutOptions,
10826
10912
  MultiInstanceViewBehavior,
10913
+ LayoutAccessibilityOptions,
10914
+ ViewTabElements,
10915
+ ViewTabAccessibilityOptions,
10916
+ AccessibilityContext,
10917
+ TabAriaLabelContext,
10918
+ CloseButtonAriaLabelContext,
10919
+ AddTabButtonAriaLabelContext,
10920
+ AriaLabelOptions,
10921
+ LayoutSyncApi,
10827
10922
  PresetLayoutOptions_2 as PresetLayoutOptions,
10828
10923
  ResultBehavior,
10829
10924
  PopupBaseBehavior,
@@ -12640,6 +12735,38 @@ declare interface PlatformProvider {
12640
12735
  * @returns A promise resolving to `true` if the window should prevent the app from quitting, otherwise `false`.
12641
12736
  */
12642
12737
  shouldWindowPreventQuit(windowIdentity: OpenFin_2.Identity): Promise<boolean>;
12738
+ /**
12739
+ * Returns the platform's keyboard commands. Default implementation returns the manifest's
12740
+ * `platform.commands`. Override to inject additional default commands.
12741
+ * Called once during Platform.init; the result is cached for the lifetime
12742
+ * of the platform.
12743
+ *
12744
+ * @remarks
12745
+ * The returned commands are merged with core's built-in default commands
12746
+ * (unless `disableDefaultCommands` is set).
12747
+ * Overriders receive the raw manifest commands from `super` and can prepend
12748
+ * their own defaults — returned commands override default commands by command name.
12749
+ *
12750
+ * @example
12751
+ * ```js
12752
+ * const overrideCallback = (PlatformProvider) => {
12753
+ * class Override extends PlatformProvider {
12754
+ * getKeyboardCommands() {
12755
+ * const manifestCommands = super.getKeyboardCommands();
12756
+ * const myCommands = [{ command: 'myApp.search', keys: 'Ctrl+K' }];
12757
+ * return [
12758
+ * ...myCommands,
12759
+ * ...manifestCommands
12760
+ * ];
12761
+ * }
12762
+ * }
12763
+ * return new Override();
12764
+ * }
12765
+ *
12766
+ * fin.Platform.init({ overrideCallback });
12767
+ * ```
12768
+ */
12769
+ getKeyboardCommands(): OpenFin_2.ShortcutOverride[];
12643
12770
  /**
12644
12771
  * Method that is called every time an error occurs when processing an action in the Platform Provider. It is meant to be overriden, as a means to debug Platform applications
12645
12772
  */
@@ -15253,13 +15380,15 @@ declare class System extends EmitterBase<OpenFin_2.SystemEvent> {
15253
15380
  * * cookies: browser [cookies](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies)
15254
15381
  * * localStorage: browser data that can be used across sessions ([local storage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage))
15255
15382
  * * appcache: html5 [application cache](https://developer.mozilla.org/en-US/docs/Web/HTML/Using_the_application_cache)
15383
+ * * windowState: clears data written for windows using `saveWindowState`; after clearing, previously saved bounds and state will not be restored until new state is written
15256
15384
  * @example
15257
15385
  * ```js
15258
15386
  * const clearCacheOptions = {
15259
15387
  * appcache: true,
15260
15388
  * cache: true,
15261
15389
  * cookies: true,
15262
- * localStorage: true
15390
+ * localStorage: true,
15391
+ * windowState: true
15263
15392
  * };
15264
15393
  * fin.System.clearCache(clearCacheOptions).then(() => console.log('Cache cleared')).catch(err => console.log(err));
15265
15394
  * ```
@@ -15284,12 +15413,16 @@ declare class System extends EmitterBase<OpenFin_2.SystemEvent> {
15284
15413
  *
15285
15414
  * @param options - Optional configuration for what data to clear
15286
15415
  *
15416
+ * @remarks Set `windowState: true` to also clear data written for windows using `saveWindowState`.
15417
+ * After this data is cleared, previously saved bounds and state will not be restored until new state is written again.
15418
+ *
15287
15419
  * @example
15288
15420
  * ```js
15289
15421
  * // Clear only cookies and localStorage for a specific origin
15290
15422
  * await fin.System.clearCacheData({
15291
15423
  * dataTypes: ['cookies', 'localStorage'],
15292
- * origins: ['http://localhost:8081']
15424
+ * origins: ['http://localhost:8081'],
15425
+ * windowState: true
15293
15426
  * });
15294
15427
  *
15295
15428
  * // Clear everything except for a specific origin
@@ -16869,6 +17002,13 @@ declare class System extends EmitterBase<OpenFin_2.SystemEvent> {
16869
17002
  declare class SystemContentTracing extends Base {
16870
17003
  /**
16871
17004
  * Gets the currently known tracing category groups.
17005
+ *
17006
+ * @example
17007
+ * ```ts
17008
+ * const categories = await fin.System.ContentTracing.getCategories();
17009
+ * const sorted = [...new Set(categories)].sort((a, b) => a.localeCompare(b));
17010
+ * console.log(`Loaded ${sorted.length} tracing categories`);
17011
+ * ```
16872
17012
  */
16873
17013
  getCategories(): Promise<string[]>;
16874
17014
  /**
@@ -16876,6 +17016,29 @@ declare class SystemContentTracing extends Base {
16876
17016
  *
16877
17017
  * Only one content tracing session may be active across the runtime at a time.
16878
17018
  * This method rejects if another identity already owns the active session.
17019
+ *
17020
+ * @example
17021
+ * ```ts
17022
+ * await fin.System.ContentTracing.startRecording({
17023
+ * recording_mode: 'record-as-much-as-possible',
17024
+ * included_categories: [
17025
+ * '*',
17026
+ * 'disabled-by-default-blink.invalidation',
17027
+ * 'disabled-by-default-cc.debug',
17028
+ * 'disabled-by-default-viz.surface_id_flow'
17029
+ * ]
17030
+ * });
17031
+ *
17032
+ * console.log('Content tracing started. Call stopRecording() when ready to collect the trace.');
17033
+ * ```
17034
+ *
17035
+ * @example
17036
+ * ```ts
17037
+ * await fin.System.ContentTracing.startRecording({
17038
+ * categoryFilter: 'electron,blink,cc',
17039
+ * traceOptions: 'record-until-full,enable-sampling'
17040
+ * });
17041
+ * ```
16879
17042
  */
16880
17043
  startRecording(options: OpenFin_2.TraceConfig | OpenFin_2.TraceCategoriesAndOptions): Promise<void>;
16881
17044
  /**
@@ -16883,12 +17046,29 @@ declare class SystemContentTracing extends Base {
16883
17046
  *
16884
17047
  * The calling identity must match the identity that started the active tracing session.
16885
17048
  * This method rejects if tracing is not active or is owned by another identity.
17049
+ *
17050
+ * @example
17051
+ * ```ts
17052
+ * const tracePath = await fin.System.ContentTracing.stopRecording();
17053
+ * console.log('Trace written to:', tracePath);
17054
+ * // Load the file in chrome://tracing or https://ui.perfetto.dev/
17055
+ * ```
16886
17056
  */
16887
17057
  stopRecording(): Promise<string>;
16888
17058
  /**
16889
17059
  * Returns the current maximum trace buffer usage across processes.
16890
17060
  *
16891
17061
  * This method is not supported on macOS and rejects on that platform.
17062
+ *
17063
+ * @example
17064
+ * ```ts
17065
+ * try {
17066
+ * const usage = await fin.System.ContentTracing.getTraceBufferUsage();
17067
+ * console.log(`Buffer usage: ${usage.percentage}% (${usage.value})`);
17068
+ * } catch (error) {
17069
+ * console.warn('Trace buffer usage is not available on this platform.', error);
17070
+ * }
17071
+ * ```
16892
17072
  */
16893
17073
  getTraceBufferUsage(): Promise<OpenFin_2.TraceBufferUsage>;
16894
17074
  }
@@ -17017,6 +17197,17 @@ declare type SystemShutdownHandler = (shutdownEvent: {
17017
17197
  proceed: () => void;
17018
17198
  }) => void;
17019
17199
 
17200
+ /**
17201
+ * @interface
17202
+ * Context for tab aria-label functions.
17203
+ */
17204
+ declare type TabAriaLabelContext = AccessibilityContext & {
17205
+ title: string;
17206
+ isActive: boolean;
17207
+ tabIndex: number;
17208
+ tabCount: number;
17209
+ };
17210
+
17020
17211
  /**
17021
17212
  * Generated when a Layout Tab Component was closed.
17022
17213
  * @interface
@@ -18423,6 +18614,53 @@ declare interface ViewStatuses {
18423
18614
  viewsNotPreventingUnload: Identity_4[];
18424
18615
  }
18425
18616
 
18617
+ /**
18618
+ * @interface
18619
+ * Accessibility options for view tab navigation.
18620
+ */
18621
+ declare type ViewTabAccessibilityOptions = {
18622
+ /**
18623
+ * Controls which elements are reachable via Tab key navigation.
18624
+ * Uses roving tabindex pattern - only one element focusable at a time.
18625
+ * @default ['active-tab', 'add-tab-button']
18626
+ */
18627
+ tabNavigation?: ViewTabElements[];
18628
+ /**
18629
+ * Controls which elements are navigable via Arrow keys.
18630
+ * @default ['inactive-tab', 'active-tab', 'active-tab-close-button', 'inactive-tab-close-button', 'add-tab-button']
18631
+ */
18632
+ arrowNavigation?: ViewTabElements[];
18633
+ /**
18634
+ * Whether Delete/Backspace keys close the focused tab.
18635
+ * @default false
18636
+ */
18637
+ enableDeleteKeyClose?: boolean;
18638
+ /**
18639
+ * Whether Home/End keys jump to first/last navigable element.
18640
+ * @default false
18641
+ */
18642
+ enableHomeEndNavigation?: boolean;
18643
+ /**
18644
+ * Custom aria-label providers. Can be a static string or a function receiving context.
18645
+ */
18646
+ ariaLabels?: AriaLabelOptions;
18647
+ /**
18648
+ * Whether to announce tab changes via aria-live.
18649
+ * @default true
18650
+ */
18651
+ announceTabChanges?: boolean;
18652
+ /**
18653
+ * Focus behavior when a tab is closed via keyboard.
18654
+ * @default 'next'
18655
+ */
18656
+ focusOnCloseStrategy?: 'next' | 'previous' | 'active';
18657
+ };
18658
+
18659
+ /**
18660
+ * Elements that can be navigated in view tabs.
18661
+ */
18662
+ declare type ViewTabElements = 'active-tab' | 'inactive-tab' | 'active-tab-close-button' | 'inactive-tab-close-button' | 'add-tab-button';
18663
+
18426
18664
  /**
18427
18665
  * View throttling state.
18428
18666
  *
package/out/stub.js CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var events = require('events');
6
- var isEqual = require('lodash/isEqual');
6
+ var esToolkit = require('es-toolkit');
7
7
 
8
8
  /**
9
9
  * Namespace for events that can be emitted by an {@link OpenFin.Application}. Includes events
@@ -4999,6 +4999,13 @@ class _WindowModule extends Base {
4999
4999
  class SystemContentTracing extends Base {
5000
5000
  /**
5001
5001
  * Gets the currently known tracing category groups.
5002
+ *
5003
+ * @example
5004
+ * ```ts
5005
+ * const categories = await fin.System.ContentTracing.getCategories();
5006
+ * const sorted = [...new Set(categories)].sort((a, b) => a.localeCompare(b));
5007
+ * console.log(`Loaded ${sorted.length} tracing categories`);
5008
+ * ```
5002
5009
  */
5003
5010
  async getCategories() {
5004
5011
  const { payload } = await this.wire.sendAction('content-tracing-get-categories');
@@ -5009,6 +5016,29 @@ class SystemContentTracing extends Base {
5009
5016
  *
5010
5017
  * Only one content tracing session may be active across the runtime at a time.
5011
5018
  * This method rejects if another identity already owns the active session.
5019
+ *
5020
+ * @example
5021
+ * ```ts
5022
+ * await fin.System.ContentTracing.startRecording({
5023
+ * recording_mode: 'record-as-much-as-possible',
5024
+ * included_categories: [
5025
+ * '*',
5026
+ * 'disabled-by-default-blink.invalidation',
5027
+ * 'disabled-by-default-cc.debug',
5028
+ * 'disabled-by-default-viz.surface_id_flow'
5029
+ * ]
5030
+ * });
5031
+ *
5032
+ * console.log('Content tracing started. Call stopRecording() when ready to collect the trace.');
5033
+ * ```
5034
+ *
5035
+ * @example
5036
+ * ```ts
5037
+ * await fin.System.ContentTracing.startRecording({
5038
+ * categoryFilter: 'electron,blink,cc',
5039
+ * traceOptions: 'record-until-full,enable-sampling'
5040
+ * });
5041
+ * ```
5012
5042
  */
5013
5043
  async startRecording(options) {
5014
5044
  await this.wire.sendAction('content-tracing-start-recording', { options });
@@ -5018,6 +5048,13 @@ class SystemContentTracing extends Base {
5018
5048
  *
5019
5049
  * The calling identity must match the identity that started the active tracing session.
5020
5050
  * This method rejects if tracing is not active or is owned by another identity.
5051
+ *
5052
+ * @example
5053
+ * ```ts
5054
+ * const tracePath = await fin.System.ContentTracing.stopRecording();
5055
+ * console.log('Trace written to:', tracePath);
5056
+ * // Load the file in chrome://tracing or https://ui.perfetto.dev/
5057
+ * ```
5021
5058
  */
5022
5059
  async stopRecording() {
5023
5060
  const { payload } = await this.wire.sendAction('content-tracing-stop-recording');
@@ -5027,6 +5064,16 @@ class SystemContentTracing extends Base {
5027
5064
  * Returns the current maximum trace buffer usage across processes.
5028
5065
  *
5029
5066
  * This method is not supported on macOS and rejects on that platform.
5067
+ *
5068
+ * @example
5069
+ * ```ts
5070
+ * try {
5071
+ * const usage = await fin.System.ContentTracing.getTraceBufferUsage();
5072
+ * console.log(`Buffer usage: ${usage.percentage}% (${usage.value})`);
5073
+ * } catch (error) {
5074
+ * console.warn('Trace buffer usage is not available on this platform.', error);
5075
+ * }
5076
+ * ```
5030
5077
  */
5031
5078
  async getTraceBufferUsage() {
5032
5079
  const { payload } = await this.wire.sendAction('content-tracing-get-trace-buffer-usage');
@@ -5123,13 +5170,15 @@ class System extends EmitterBase {
5123
5170
  * * cookies: browser [cookies](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies)
5124
5171
  * * localStorage: browser data that can be used across sessions ([local storage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage))
5125
5172
  * * appcache: html5 [application cache](https://developer.mozilla.org/en-US/docs/Web/HTML/Using_the_application_cache)
5173
+ * * windowState: clears data written for windows using `saveWindowState`; after clearing, previously saved bounds and state will not be restored until new state is written
5126
5174
  * @example
5127
5175
  * ```js
5128
5176
  * const clearCacheOptions = {
5129
5177
  * appcache: true,
5130
5178
  * cache: true,
5131
5179
  * cookies: true,
5132
- * localStorage: true
5180
+ * localStorage: true,
5181
+ * windowState: true
5133
5182
  * };
5134
5183
  * fin.System.clearCache(clearCacheOptions).then(() => console.log('Cache cleared')).catch(err => console.log(err));
5135
5184
  * ```
@@ -5158,12 +5207,16 @@ class System extends EmitterBase {
5158
5207
  *
5159
5208
  * @param options - Optional configuration for what data to clear
5160
5209
  *
5210
+ * @remarks Set `windowState: true` to also clear data written for windows using `saveWindowState`.
5211
+ * After this data is cleared, previously saved bounds and state will not be restored until new state is written again.
5212
+ *
5161
5213
  * @example
5162
5214
  * ```js
5163
5215
  * // Clear only cookies and localStorage for a specific origin
5164
5216
  * await fin.System.clearCacheData({
5165
5217
  * dataTypes: ['cookies', 'localStorage'],
5166
- * origins: ['http://localhost:8081']
5218
+ * origins: ['http://localhost:8081'],
5219
+ * windowState: true
5167
5220
  * });
5168
5221
  *
5169
5222
  * // Clear everything except for a specific origin
@@ -13052,7 +13105,7 @@ class InteropBroker extends Base {
13052
13105
  constructor(...unused) {
13053
13106
  if (unused.length) {
13054
13107
  const [_ignore1, ignore2, opts] = unused;
13055
- if (opts && typeof opts === 'object' && !isEqual(opts, args[2])) {
13108
+ if (opts && typeof opts === 'object' && !esToolkit.isEqual(opts, args[2])) {
13056
13109
  // eslint-disable-next-line no-console
13057
13110
  console.warn('You have modified the parameters of the InteropOverride constructor. This behavior is deprecated and will be removed in a future version. You can modify these options in your manifest. Please consult our Interop docs for guidance on migrating to the new override scheme.');
13058
13111
  super(args[0], args[1], opts);
@@ -15088,7 +15141,7 @@ const createV1Channel = (sessionContextGroup) => {
15088
15141
  const wrappedHandler = (context, contextMetadata) => {
15089
15142
  if (first) {
15090
15143
  first = false;
15091
- if (isEqual(currentContext, context)) {
15144
+ if (esToolkit.isEqual(currentContext, context)) {
15092
15145
  return;
15093
15146
  }
15094
15147
  }
@@ -15496,7 +15549,7 @@ class FDC3ModuleBase {
15496
15549
  const wrappedHandler = (context, contextMetadata) => {
15497
15550
  if (first) {
15498
15551
  first = false;
15499
- if (isEqual(currentContext, context)) {
15552
+ if (esToolkit.isEqual(currentContext, context)) {
15500
15553
  return;
15501
15554
  }
15502
15555
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openfin/core",
3
- "version": "44.101.1",
3
+ "version": "44.101.3",
4
4
  "description": "The core renderer entry point of OpenFin",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "main": "out/stub.js",
@@ -18,7 +18,7 @@
18
18
  "dependencies": {
19
19
  "@types/node": "^20.14.2",
20
20
  "events": "^3.0.0",
21
- "lodash": "^4.17.21",
21
+ "es-toolkit": "^1.39.3",
22
22
  "ws": "^7.5.10",
23
23
  "tslib": "2.8.1"
24
24
  },