@openfin/fdc3-api 45.100.114 → 45.100.116

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/fdc3-api.d.ts CHANGED
@@ -929,6 +929,21 @@ declare class Application extends EmitterBase<OpenFin.ApplicationEvent> {
929
929
  * ```
930
930
  */
931
931
  closeTrayIconPopupMenu(): Promise<void>;
932
+ /**
933
+ * @experimental
934
+ * Retrieves a performance snapshot for all Windows, Views and Frames in the Application.
935
+ *
936
+ * By default, all custom marks and measures are collected, along with navigation/paint entries
937
+ * and resource timing (`resources` defaults to `true`). Pass `include` to restrict custom
938
+ * marks/measures to matching names (string substring or RegExp). Pass `browser: true` to also
939
+ * include hereio internal runtime metrics.
940
+ *
941
+ * See also [MDN | Performance Mark API](https://developer.mozilla.org/en-US/docs/Web/API/Performance/mark)
942
+ *
943
+ * Note - only currently running WebContents will be captured, and performance entries can only be
944
+ * captured for the current navigation of each.
945
+ */
946
+ getPerformanceStats: (options?: OpenFin.GetPerformanceStatsOptions) => Promise<OpenFin.PerformanceStatsResult>;
932
947
  }
933
948
 
934
949
  /**
@@ -1380,6 +1395,7 @@ declare type ApplicationOptions = LegacyWinOptionsInAppOptions & {
1380
1395
  declare type ApplicationPermissions = {
1381
1396
  setFileDownloadLocation: boolean;
1382
1397
  getFileDownloadLocation: boolean;
1398
+ getPerformanceStats: boolean;
1383
1399
  };
1384
1400
 
1385
1401
  /**
@@ -3185,23 +3201,6 @@ declare type ChildWindowCreatedEvent = ContentCreationRulesEvent & {
3185
3201
  childOptions: OpenFin.WindowOptions;
3186
3202
  };
3187
3203
 
3188
- /**
3189
- * End of Interop Client Events
3190
- */
3191
- /**
3192
- * Client-side handle for the chrome-browser feature.
3193
- *
3194
- * For extension integration to be active on a window, that window must be
3195
- * created with `chromeBrowser: true` in its window options.
3196
- *
3197
- * @remarks
3198
- * This namespace is intended for internal experimentation only. Enabling the
3199
- * `chromeBrowser` window option changes how the runtime manages content and standard
3200
- * OpenFin content behavior is not guaranteed.
3201
- *
3202
- * @internal
3203
- * @experimental This API is under active development and may change or be removed without notice.
3204
- */
3205
3204
  declare interface ChromeBrowser {
3206
3205
  /**
3207
3206
  * Extension action surface — observe and invoke installed Chrome extension actions.
@@ -4209,6 +4208,32 @@ declare type ConstWindowOptions = {
4209
4208
  width: number;
4210
4209
  x: number;
4211
4210
  y: number;
4211
+ /**
4212
+ * Experimental window options. These options are not yet stable and may change without notice.
4213
+ *
4214
+ * Supported properties:
4215
+ *
4216
+ * - **`layoutEngine`** `'v1' | 'v2'` — Selects the layout engine used to render
4217
+ * layouts in this window. `'v1'` is the legacy engine, `'v2'` is the modernized engine.
4218
+ * Defaults to `'v1'`.
4219
+ *
4220
+ * - **`showFavicons`** `boolean` — When `true`, displays favicon icons on layout tabs.
4221
+ *
4222
+ * - **`defaultFaviconUrl`** `string` — URL of a fallback favicon to display when a view does not
4223
+ * provide its own.
4224
+ *
4225
+ * - **`windowLogLevel`** `string` — Sets the log level for layout-related window logging
4226
+ * (e.g. `'verbose'`, `'warn'`, `'error'`).
4227
+ *
4228
+ * - **`enableLayoutCollapsing`** `boolean` — When `true`, enables the Golden Layout restacking
4229
+ * feature by preserving minimum item dimensions.
4230
+ *
4231
+ * - **`showViewsOnResize`** `{ enabled: boolean; delayMs?: number }` — Controls whether views
4232
+ * are shown during window resize operations. Deprecated in favor of
4233
+ * `viewVisibility.showViewsOnWindowResize`.
4234
+ *
4235
+ * @internal
4236
+ */
4212
4237
  experimental?: any;
4213
4238
  fdc3InteropApi?: string;
4214
4239
  /**
@@ -4532,6 +4557,8 @@ declare type CopyPermissions = {
4532
4557
  };
4533
4558
  };
4534
4559
 
4560
+ declare type CorePerformanceEntry = Omit<PerformanceEntry, 'toJSON'>;
4561
+
4535
4562
  /**
4536
4563
  * Defines and applies rounded corners for a frameless window. **NOTE:** On macOS corner is not ellipse but circle rounded by the
4537
4564
  * average of _height_ and _width_.
@@ -4684,6 +4711,32 @@ declare type CreateLayoutOptions = {
4684
4711
  * @experimental
4685
4712
  */
4686
4713
  renderCustomHeaderControls?: (controlsElement: HTMLElement, context: HeaderControlsContext) => (() => void) | void;
4714
+ /**
4715
+ * Callback invoked once per tab after core has finished building the tab DOM.
4716
+ * Use this to inject custom controls (e.g. action icons) into view tab hats.
4717
+ *
4718
+ * Optionally return a cleanup function that will be called when the tab is destroyed.
4719
+ *
4720
+ * Custom controls are not serialized into snapshots since callbacks are not
4721
+ * serializable. The callback is re-invoked when tabs are recreated.
4722
+ *
4723
+ * **NOTE**: This feature is only supported with layout engine `'v2'` (GL2) and
4724
+ * `settings.tabOverflowBehavior: 'scroll'`.
4725
+ *
4726
+ * Optionally add the `lm_tab_custom_control` class to each injected control as a direct child of
4727
+ * `tabElement`. That opts the control into {@link LayoutAccessibilityOptions} keyboard
4728
+ * navigation (roving tabindex, arrow keys in DOM order, Enter/Space without switching tabs),
4729
+ * pointer isolation so clicks do not activate or close the tab (press-and-drag still
4730
+ * reorders/tears out tab, matching the close button), and default 20×20 flex sizing
4731
+ * (override using `--layout-tab-custom-control-size`).
4732
+ *
4733
+ * @param tabElement The `.lm_tab` DOM element for the view tab.
4734
+ * @param context Context object with DOM anchors for the tab.
4735
+ * @returns A callback to be called when the rendered elements need to be cleaned up.
4736
+ *
4737
+ * @experimental
4738
+ */
4739
+ renderCustomTabControls?: (tabElement: HTMLElement, context: CustomTabControlsContext) => (() => void) | void;
4687
4740
  /**
4688
4741
  * Accessibility options for the layout. Controls ARIA attributes and keyboard navigation.
4689
4742
  */
@@ -4773,6 +4826,19 @@ declare type CustomRequestHeaders = {
4773
4826
  headers: WebRequestHeader[];
4774
4827
  };
4775
4828
 
4829
+ /**
4830
+ * @interface @experimental
4831
+ */
4832
+ declare type CustomTabControlsContext = {
4833
+ viewIdentity: Identity_4;
4834
+ /** Anchor for inserting controls adjacent to the tab text. */
4835
+ titleElement: HTMLElement;
4836
+ /** Anchor for the trailing outer edge. Absent when the view is not closable. */
4837
+ closeElement?: HTMLElement;
4838
+ /** The favicon element. Hidden when favicons are disabled. */
4839
+ faviconElement?: HTMLElement;
4840
+ };
4841
+
4776
4842
  declare type DataChannelReadyState = RTCDataChannel['readyState'];
4777
4843
 
4778
4844
  /**
@@ -5436,7 +5502,7 @@ declare type Event_10 = ApplicationEvents.Event | ApiReadyEvent | SnapshotApplie
5436
5502
  * under the {@link OpenFin.SystemEvents} namespace (payloads inherited from propagated events are defined in the namespace
5437
5503
  * from which they propagate).
5438
5504
  */
5439
- declare type Event_11 = ExcludeRequested<WindowEvents.PropagatedEvent<'system'>> | ExcludeRequested<ViewEvents.PropagatedEvent<'system'>> | ExcludeRequested<ApplicationEvents.PropagatedEvent<'system'>> | ApplicationCreatedEvent | DesktopIconClickedEvent | IdleStateChangedEvent | MonitorInfoChangedEvent | SessionChangedEvent | AppVersionEventWithId | SystemShutdownEvent | ExtensionsEnabledEvent | ExtensionsDisabledEvent | ExtensionsExcludedEvent | ExtensionsInstalledEvent | ExtensionInstalledEvent | ExtensionsInstallFailedEvent | ExtensionInstallFailedEvent | ExtensionsInitializationFailedEvent | ThemePaletteChangedEvent | NativeThemeUpdatedEvent;
5505
+ declare type Event_11 = ExcludeRequested<WindowEvents.PropagatedEvent<'system'>> | ExcludeRequested<ViewEvents.PropagatedEvent<'system'>> | ExcludeRequested<ApplicationEvents.PropagatedEvent<'system'>> | ApplicationCreatedEvent | DesktopIconClickedEvent | IdleStateChangedEvent | MonitorInfoChangedEvent | SessionChangedEvent | AppVersionEventWithId | SystemShutdownEvent | ExtensionsEnabledEvent | ExtensionsDisabledEvent | ExtensionsExcludedEvent | ExtensionsInstalledEvent | ExtensionInstalledEvent | ExtensionsInstallFailedEvent | ExtensionInstallFailedEvent | ExtensionsInitializationFailedEvent | ExtensionLoadedEvent | ExtensionReadyEvent | ThemePaletteChangedEvent | NativeThemeUpdatedEvent;
5440
5506
 
5441
5507
  /**
5442
5508
  * [Union](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#union-types) containing every possible event that can be emitted by the HTMLElement Layout container.
@@ -5694,6 +5760,30 @@ declare type ExtensionInstallFailedEvent = ExtensionEvent & {
5694
5760
  type: 'extension-install-failed';
5695
5761
  };
5696
5762
 
5763
+ declare type ExtensionLifecycleEvent = BaseEvent_9 & {
5764
+ extensionId: string;
5765
+ name: string;
5766
+ version: string;
5767
+ };
5768
+
5769
+ /**
5770
+ * Fired when the Runtime finishes loading an extension's scripts into the renderer process.
5771
+ *
5772
+ * @interface
5773
+ */
5774
+ declare type ExtensionLoadedEvent = ExtensionLifecycleEvent & {
5775
+ type: 'extension-loaded';
5776
+ };
5777
+
5778
+ /**
5779
+ * Fired when an extension is fully functional (permissions granted, service worker running).
5780
+ *
5781
+ * @interface
5782
+ */
5783
+ declare type ExtensionReadyEvent = ExtensionLifecycleEvent & {
5784
+ type: 'extension-ready';
5785
+ };
5786
+
5697
5787
  /**
5698
5788
  * An event that fires when extensions are disabled in the security realm.
5699
5789
  *
@@ -6852,6 +6942,32 @@ declare type GetLogRequestType = {
6852
6942
  name: string;
6853
6943
  };
6854
6944
 
6945
+ /**
6946
+ * End of Interop Client Events
6947
+ */
6948
+ /**
6949
+ * Performance Entry Types
6950
+ */
6951
+ declare type GetPerformanceStatsOptions = {
6952
+ /**
6953
+ * Optional filter for custom performance marks and measures.
6954
+ * When omitted, all custom marks and measures are collected.
6955
+ * When specified, only entries whose names match one of the filters are collected.
6956
+ * Strings match by substring; RegExp matches by test.
6957
+ */
6958
+ include?: (string | RegExp)[];
6959
+ /**
6960
+ * Include `resource` timing entries from each View / Frame / Window.
6961
+ * Defaults to `true`. Pass `false` to omit them.
6962
+ */
6963
+ resources?: boolean;
6964
+ /**
6965
+ * Whether to include hereio internal runtime metrics.
6966
+ * Defaults to `false`. Pass `true` to include.
6967
+ */
6968
+ browser?: boolean;
6969
+ };
6970
+
6855
6971
  declare type GetterCall<T> = ApiCall<void, T>;
6856
6972
 
6857
6973
  /**
@@ -7545,17 +7661,19 @@ declare type InteropActionLoggingOption = {
7545
7661
  * "interopBrokerConfiguration": {
7546
7662
  * "contextGroups": [
7547
7663
  * {
7548
- * "id": "green",
7664
+ * "id": "fdc3.channel.4",
7549
7665
  * "displayMetadata": {
7550
- * "color": "#00CC88",
7551
- * "name": "green"
7666
+ * "color": "green",
7667
+ * "name": "Channel 4",
7668
+ * "glyph": "4"
7552
7669
  * }
7553
7670
  * },
7554
7671
  * {
7555
- * "id": "purple",
7672
+ * "id": "fdc3.channel.8",
7556
7673
  * "displayMetadata": {
7557
- * "color": "#8C61FF",
7558
- * "name": "purple"
7674
+ * "color": "purple",
7675
+ * "name": "Channel 8",
7676
+ * "glyph": "8"
7559
7677
  * }
7560
7678
  * },
7561
7679
  * ]
@@ -7692,7 +7810,7 @@ declare class InteropBroker extends Base {
7692
7810
  * @param joinContextGroupOptions - Id of the Context Group and identity of the entity to join to the group.
7693
7811
  * @param senderIdentity - Identity of the client sender.
7694
7812
  */
7695
- joinContextGroup({ contextGroupId, target }: {
7813
+ joinContextGroup({ contextGroupId: requestedContextGroupId, target }: {
7696
7814
  contextGroupId: string;
7697
7815
  target?: OpenFin.ClientIdentity | OpenFin.Identity;
7698
7816
  }, senderIdentity: OpenFin.ClientIdentity): Promise<void>;
@@ -7703,7 +7821,7 @@ declare class InteropBroker extends Base {
7703
7821
  * @param addClientToContextGroupOptions - Contains the contextGroupId
7704
7822
  * @param clientIdentity - Identity of the client sender.
7705
7823
  */
7706
- addClientToContextGroup({ contextGroupId }: {
7824
+ addClientToContextGroup({ contextGroupId: requestedContextGroupId }: {
7707
7825
  contextGroupId: string;
7708
7826
  }, clientIdentity: OpenFin.ClientIdentity): Promise<void>;
7709
7827
  /**
@@ -8116,6 +8234,8 @@ declare class InteropBroker extends Base {
8116
8234
  };
8117
8235
  private getClientState;
8118
8236
  private static toObject;
8237
+ private normalizeContextGroupStates;
8238
+ private normalizeContextGroupId;
8119
8239
  static checkContextIntegrity: (context: OpenFin.Context) => {
8120
8240
  isValid: true;
8121
8241
  } | {
@@ -8346,7 +8466,7 @@ declare class InteropClient extends Base {
8346
8466
  *
8347
8467
  * getLastFocusedView()
8348
8468
  * .then(lastFocusedViewIdentity => {
8349
- * joinViewToContextGroup('red', lastFocusedViewIdentity)
8469
+ * joinViewToContextGroup('fdc3.channel.1', lastFocusedViewIdentity)
8350
8470
  * })
8351
8471
  * ```
8352
8472
  */
@@ -8381,7 +8501,7 @@ declare class InteropClient extends Base {
8381
8501
  *
8382
8502
  * @example
8383
8503
  * ```js
8384
- * fin.me.interop.getAllClientsInContextGroup('red')
8504
+ * fin.me.interop.getAllClientsInContextGroup('fdc3.channel.1')
8385
8505
  * .then(clientsInContextGroup => {
8386
8506
  * console.log(clientsInContextGroup)
8387
8507
  * })
@@ -8396,7 +8516,7 @@ declare class InteropClient extends Base {
8396
8516
  *
8397
8517
  * @example
8398
8518
  * ```js
8399
- * fin.me.interop.getInfoForContextGroup('red')
8519
+ * fin.me.interop.getInfoForContextGroup('fdc3.channel.1')
8400
8520
  * .then(contextGroupInfo => {
8401
8521
  * console.log(contextGroupInfo.displayMetadata.name)
8402
8522
  * console.log(contextGroupInfo.displayMetadata.color)
@@ -8453,12 +8573,12 @@ declare class InteropClient extends Base {
8453
8573
  *
8454
8574
  * @example
8455
8575
  * ```js
8456
- * await fin.me.interop.joinContextGroup('yellow');
8576
+ * await fin.me.interop.joinContextGroup('fdc3.channel.3');
8457
8577
  * await fin.me.interop.setContext({ type: 'instrument', id: { ticker: 'FOO' }});
8458
8578
  * const currentContext = await fin.me.interop.getCurrentContext();
8459
8579
  *
8460
8580
  * // with a specific context
8461
- * await fin.me.interop.joinContextGroup('yellow');
8581
+ * await fin.me.interop.joinContextGroup('fdc3.channel.3');
8462
8582
  * await fin.me.interop.setContext({ type: 'country', id: { ISOALPHA3: 'US' }});
8463
8583
  * await fin.me.interop.setContext({ type: 'instrument', id: { ticker: 'FOO' }});
8464
8584
  * const currentContext = await fin.me.interop.getCurrentContext('country');
@@ -8625,7 +8745,7 @@ declare type InteropClientOnDisconnectionListener = (InteropBrokerDisconnectionE
8625
8745
  */
8626
8746
  declare type InteropConfig = {
8627
8747
  /**
8628
- * Context Group for the client. (green, yellow, red, etc.).
8748
+ * Context Group ID for the client (for example, `fdc3.channel.4`).
8629
8749
  */
8630
8750
  currentContextGroup?: string | null;
8631
8751
  /**
@@ -8674,7 +8794,7 @@ declare class InteropModule extends Base {
8674
8794
  * @example
8675
8795
  * ```js
8676
8796
  * const interopConfig = {
8677
- * currentContextGroup: 'green'
8797
+ * currentContextGroup: 'fdc3.channel.4'
8678
8798
  * }
8679
8799
  *
8680
8800
  * const interopBroker = await fin.Interop.init('openfin');
@@ -9896,8 +10016,26 @@ declare type LayoutOptions = {
9896
10016
  content?: LayoutContent;
9897
10017
  dimensions?: {
9898
10018
  borderWidth?: number;
10019
+ /**
10020
+ * Minimum height a layout item can be resized to, in pixels.
10021
+ * On web layouts this is mapped to Golden Layout 2 `defaultMinItemHeight`.
10022
+ */
9899
10023
  minItemHeight?: number;
10024
+ /**
10025
+ * Minimum width a layout item can be resized to, in pixels.
10026
+ * On web layouts this is mapped to Golden Layout 2 `defaultMinItemWidth`.
10027
+ */
9900
10028
  minItemWidth?: number;
10029
+ /**
10030
+ * Minimum height a layout item can be resized to (CSS size, e.g. `'500px'`).
10031
+ * Web layouts only. Takes precedence over {@link LayoutOptions.dimensions.minItemHeight} when both are set.
10032
+ */
10033
+ defaultMinItemHeight?: string;
10034
+ /**
10035
+ * Minimum width a layout item can be resized to (CSS size, e.g. `'500px'`).
10036
+ * Web layouts only. Takes precedence over {@link LayoutOptions.dimensions.minItemWidth} when both are set.
10037
+ */
10038
+ defaultMinItemWidth?: string;
9901
10039
  headerHeight?: number;
9902
10040
  };
9903
10041
  };
@@ -10564,6 +10702,24 @@ declare type MutableViewOptions = {
10564
10702
  * Used by Workspace to store custom data. Overwriting or modifying this field may impact the functionality of Workspace
10565
10703
  */
10566
10704
  _internalWorkspaceData: any;
10705
+ /**
10706
+ * @internal
10707
+ * Used by Workspace to store platform-specific options (including `viewTab`). Overwriting or modifying this field may impact the functionality of Workspace.
10708
+ * Persisted on create, {@link View.View#updateOptions updateOptions}, snapshot, and {@link View.View#getOptions getOptions} — the same way windows persist `workspacePlatform`.
10709
+ */
10710
+ workspacePlatform?: WorkspacePlatformOptions;
10711
+ /**
10712
+ * Per-view tab icon. Exception to `showFavicons` / `defaultFaviconUrl`.
10713
+ *
10714
+ * Distinct from Window `icon` (taskbar).
10715
+ *
10716
+ * - Omitted / `''` / `'unset'`: inherit — if `showFavicons`, page favicon then `defaultFaviconUrl`, else hide
10717
+ * - URL string: always show that URL, even when `showFavicons` is false. Load failure uses `defaultFaviconUrl`
10718
+ * - `'hide'`: always hide, even when `showFavicons` is true
10719
+ *
10720
+ * On `updateOptions`, omitted keys are a no-op; set `'unset'` to return to inherit.
10721
+ */
10722
+ icon?: ViewTabIcon;
10567
10723
  /**
10568
10724
  * {@inheritDoc ViewThrottling}
10569
10725
  *
@@ -11328,6 +11484,7 @@ declare namespace OpenFin {
11328
11484
  ViewInfo,
11329
11485
  WindowThrottling,
11330
11486
  ViewThrottling,
11487
+ ViewTabIcon,
11331
11488
  UpdatableViewOptions,
11332
11489
  ViewCreationOptions,
11333
11490
  MutableViewOptions,
@@ -11500,6 +11657,7 @@ declare namespace OpenFin {
11500
11657
  ScreenCaptureBehavior,
11501
11658
  DomainSettingsPreloadScripts,
11502
11659
  PerDomainSettings,
11660
+ UrlRestoreSettings,
11503
11661
  CopyPermissions,
11504
11662
  PastePermissions,
11505
11663
  ClipboardPermissions,
@@ -11567,6 +11725,7 @@ declare namespace OpenFin {
11567
11725
  LayoutManagerOverride,
11568
11726
  LayoutManager,
11569
11727
  HeaderControlsContext,
11728
+ CustomTabControlsContext,
11570
11729
  CreateLayoutOptions,
11571
11730
  MultiInstanceViewBehavior,
11572
11731
  LayoutAccessibilityOptions,
@@ -11640,6 +11799,12 @@ declare namespace OpenFin {
11640
11799
  InteropClientEvent,
11641
11800
  ClientChangedContextGroup,
11642
11801
  InteropClientEvents,
11802
+ GetPerformanceStatsOptions,
11803
+ SerializedPerformanceOptions,
11804
+ CorePerformanceEntry,
11805
+ WebContentPerformanceStats,
11806
+ WindowPerformanceStats,
11807
+ PerformanceStatsResult,
11643
11808
  ChromeBrowser,
11644
11809
  LanguageInfo,
11645
11810
  PageTranslateOptions,
@@ -11924,6 +12089,12 @@ declare type PerDomainSettings = {
11924
12089
  * See also {@link AppLogLevel} for more information.
11925
12090
  */
11926
12091
  appLogLevel?: AppLogLevel;
12092
+ /**
12093
+ * When the live URL matches this rule, remap inbound
12094
+ * {@link View.ViewModule.navigate View.navigate} / {@link Window.WindowModule.navigate Window.navigate}
12095
+ * to {@link UrlRestoreSettings.url}.
12096
+ */
12097
+ urlRestore?: UrlRestoreSettings;
11927
12098
  };
11928
12099
 
11929
12100
  /**
@@ -11934,6 +12105,15 @@ declare type PerformanceReportEvent = Performance & BaseEvent_5 & {
11934
12105
  type: 'performance-report';
11935
12106
  };
11936
12107
 
12108
+ declare type PerformanceStatsResult = {
12109
+ mainWindow: WindowPerformanceStats;
12110
+ childWindows: WindowPerformanceStats[];
12111
+ browser?: {
12112
+ timeOrigin: number;
12113
+ entries: CorePerformanceEntry[];
12114
+ };
12115
+ };
12116
+
11937
12117
  /**
11938
12118
  * @interface
11939
12119
  *
@@ -14143,6 +14323,11 @@ declare type ProtocolMap = ExternalAdapterOnlyCallsMap & AnalyticsProtocolMap &
14143
14323
  response: OpenFin.MenuResult;
14144
14324
  };
14145
14325
  'close-tray-icon-popup-menu': IdentityCall<{}, void>;
14326
+ 'get-application-performance-stats': ApplicationIdentityCall<OpenFin.SerializedPerformanceOptions, OpenFin.PerformanceStatsResult> & {
14327
+ secure: true;
14328
+ namespace: 'Application';
14329
+ apiPath: '.getPerformanceStats';
14330
+ };
14146
14331
  'create-application': ApiCall<OpenFin.ApplicationCreationOptions, void>;
14147
14332
  'run-applications': ApiCall<{
14148
14333
  applications: Array<OpenFin.ManifestInfo>;
@@ -15528,6 +15713,16 @@ declare type SentMessage<Value> = Promise<Value> & {
15528
15713
  messageId: ReturnType<Environment['getNextMessageId']>;
15529
15714
  };
15530
15715
 
15716
+ declare type SerializedFilter = string | {
15717
+ type: 'regex';
15718
+ expression: string;
15719
+ flags?: string;
15720
+ };
15721
+
15722
+ declare type SerializedPerformanceOptions = Omit<GetPerformanceStatsOptions, 'include'> & {
15723
+ include?: SerializedFilter[];
15724
+ };
15725
+
15531
15726
  declare type ServeAssetOptions = AppAssetServeRequest | PathServeRequest;
15532
15727
 
15533
15728
  declare type ServedAssetInfo = {
@@ -17823,6 +18018,8 @@ declare namespace SystemEvents {
17823
18018
  ExtensionsInstallFailedEvent,
17824
18019
  ExtensionInstallFailedEvent,
17825
18020
  ExtensionsInitializationFailedEvent,
18021
+ ExtensionLoadedEvent,
18022
+ ExtensionReadyEvent,
17826
18023
  ThemePaletteChangedEvent,
17827
18024
  NativeThemeUpdatedEvent,
17828
18025
  Event_11 as Event,
@@ -18541,6 +18738,16 @@ declare type UrlChangedEvent = BaseUrlEvent & ({
18541
18738
  httpStatusText: string;
18542
18739
  });
18543
18740
 
18741
+ /**
18742
+ * Domain-settings policy that replaces a matched live URL with a configured start URI.
18743
+ */
18744
+ declare type UrlRestoreSettings = {
18745
+ /**
18746
+ * Absolute replacement URL. Full URL replace, not prefix rewrite.
18747
+ */
18748
+ url: string;
18749
+ };
18750
+
18544
18751
  /**
18545
18752
  * @interface
18546
18753
  */
@@ -19491,10 +19698,10 @@ declare type ViewTabAccessibilityOptions = {
19491
19698
  * Uses roving tabindex pattern - only one element focusable at a time.
19492
19699
  * @default ['active-tab', 'add-tab-button']
19493
19700
  */
19494
- tabNavigation?: ViewTabElements[];
19701
+ tabNavigation?: Exclude<ViewTabElements, 'active-tab-custom-control' | 'inactive-tab-custom-control'>[];
19495
19702
  /**
19496
19703
  * Controls which elements are navigable via Arrow keys.
19497
- * @default ['inactive-tab', 'active-tab', 'active-tab-close-button', 'inactive-tab-close-button', 'add-tab-button']
19704
+ * @default ['inactive-tab', 'active-tab', 'active-tab-close-button', 'inactive-tab-close-button', 'add-tab-button', 'active-tab-custom-control', 'inactive-tab-custom-control']
19498
19705
  */
19499
19706
  arrowNavigation?: ViewTabElements[];
19500
19707
  /**
@@ -19526,7 +19733,14 @@ declare type ViewTabAccessibilityOptions = {
19526
19733
  /**
19527
19734
  * Elements that can be navigated in view tabs.
19528
19735
  */
19529
- declare type ViewTabElements = 'active-tab' | 'inactive-tab' | 'active-tab-close-button' | 'inactive-tab-close-button' | 'add-tab-button';
19736
+ declare type ViewTabElements = 'active-tab' | 'inactive-tab' | 'active-tab-close-button' | 'inactive-tab-close-button' | 'add-tab-button' | 'active-tab-custom-control' | 'inactive-tab-custom-control';
19737
+
19738
+ /**
19739
+ * Per-view tab icon. A URL, or the reserved sentinels `'hide'` / `'unset'`.
19740
+ *
19741
+ * `'hide'` and `'unset'` are not URLs. `''` is also unset (inherit) and is the default.
19742
+ */
19743
+ declare type ViewTabIcon = string | 'hide' | 'unset';
19530
19744
 
19531
19745
  /**
19532
19746
  * View throttling state.
@@ -19580,6 +19794,22 @@ declare type VoidCall = ApiCall<void, void>;
19580
19794
 
19581
19795
  declare type WebContent = View_2 | _Window;
19582
19796
 
19797
+ declare type WebContentPerformanceStatBase = {
19798
+ name: string;
19799
+ entries: CorePerformanceEntry[];
19800
+ navigation: {
19801
+ historyLength: number;
19802
+ timeOrigin: number;
19803
+ };
19804
+ url: string;
19805
+ frames: WebContentPerformanceStats[];
19806
+ };
19807
+
19808
+ declare type WebContentPerformanceStats = WebContentPerformanceStatBase | {
19809
+ error: string;
19810
+ url: string;
19811
+ };
19812
+
19583
19813
  declare class WebContents<T extends BaseEvent> extends EmitterBase<T> {
19584
19814
  identity: OpenFin.Identity;
19585
19815
  entityType: 'window' | 'view';
@@ -22190,6 +22420,13 @@ declare type WindowOptionsChangedEvent = OpenFin.WindowEvents.WindowOptionsChang
22190
22420
  */
22191
22421
  declare type WindowOptionsChangedEvent_2 = OptionsChangedEvent;
22192
22422
 
22423
+ declare type WindowPerformanceStats = (WebContentPerformanceStatBase & {
22424
+ views: WebContentPerformanceStats[];
22425
+ }) | {
22426
+ error: string;
22427
+ url: string;
22428
+ };
22429
+
22193
22430
  declare type WindowPrintOptions = PrintOptions | ScreenshotPrintOptions | WindowViewsPrintOptions;
22194
22431
 
22195
22432
  /**
package/out/fdc3-api.js CHANGED
@@ -900,7 +900,7 @@ class InteropClient extends Base {
900
900
  *
901
901
  * getLastFocusedView()
902
902
  * .then(lastFocusedViewIdentity => {
903
- * joinViewToContextGroup('red', lastFocusedViewIdentity)
903
+ * joinViewToContextGroup('fdc3.channel.1', lastFocusedViewIdentity)
904
904
  * })
905
905
  * ```
906
906
  */
@@ -950,7 +950,7 @@ class InteropClient extends Base {
950
950
  *
951
951
  * @example
952
952
  * ```js
953
- * fin.me.interop.getAllClientsInContextGroup('red')
953
+ * fin.me.interop.getAllClientsInContextGroup('fdc3.channel.1')
954
954
  * .then(clientsInContextGroup => {
955
955
  * console.log(clientsInContextGroup)
956
956
  * })
@@ -974,7 +974,7 @@ class InteropClient extends Base {
974
974
  *
975
975
  * @example
976
976
  * ```js
977
- * fin.me.interop.getInfoForContextGroup('red')
977
+ * fin.me.interop.getInfoForContextGroup('fdc3.channel.1')
978
978
  * .then(contextGroupInfo => {
979
979
  * console.log(contextGroupInfo.displayMetadata.name)
980
980
  * console.log(contextGroupInfo.displayMetadata.color)
@@ -1063,12 +1063,12 @@ class InteropClient extends Base {
1063
1063
  *
1064
1064
  * @example
1065
1065
  * ```js
1066
- * await fin.me.interop.joinContextGroup('yellow');
1066
+ * await fin.me.interop.joinContextGroup('fdc3.channel.3');
1067
1067
  * await fin.me.interop.setContext({ type: 'instrument', id: { ticker: 'FOO' }});
1068
1068
  * const currentContext = await fin.me.interop.getCurrentContext();
1069
1069
  *
1070
1070
  * // with a specific context
1071
- * await fin.me.interop.joinContextGroup('yellow');
1071
+ * await fin.me.interop.joinContextGroup('fdc3.channel.3');
1072
1072
  * await fin.me.interop.setContext({ type: 'country', id: { ISOALPHA3: 'US' }});
1073
1073
  * await fin.me.interop.setContext({ type: 'instrument', id: { ticker: 'FOO' }});
1074
1074
  * const currentContext = await fin.me.interop.getCurrentContext('country');
@@ -1374,15 +1374,18 @@ class FDC3ModuleBase {
1374
1374
  async joinChannel(channelId) {
1375
1375
  this.wire.recordAnalytic('fdc3-join-channel');
1376
1376
  try {
1377
+ const contextGroup = await this.client.getInfoForContextGroup(channelId);
1378
+ if (!contextGroup) {
1379
+ console.error(`No User Channel was found with the ID "${channelId}". If this is an App Channel, use getOrCreateChannel instead.`);
1380
+ throw new Error(ChannelError.NoChannelFound);
1381
+ }
1377
1382
  return await this.client.joinContextGroup(channelId);
1378
1383
  }
1379
1384
  catch (error) {
1380
- if (error.message === BROKER_ERRORS.joinSessionContextGroupWithJoinContextGroup) {
1381
- console.error('The Channel you have tried to join is an App Channel. Custom Channels can only be defined by the Interop Broker through code or manifest configuration. Please use getOrCreateChannel.');
1382
- }
1383
- else {
1384
- console.error(error.message);
1385
+ if (error.message === ChannelError.NoChannelFound) {
1386
+ throw new Error(ChannelError.NoChannelFound);
1385
1387
  }
1388
+ console.error(error.message);
1386
1389
  if (error.message.startsWith('Attempting to join a context group that does not exist')) {
1387
1390
  throw new Error(ChannelError.NoChannelFound);
1388
1391
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openfin/fdc3-api",
3
- "version": "45.100.114",
3
+ "version": "45.100.116",
4
4
  "description": "OpenFin fdc3 module utilities and types.",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "private": false,