@openfin/fdc3-api 45.100.114 → 45.100.115

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
  /**
@@ -6852,6 +6918,32 @@ declare type GetLogRequestType = {
6852
6918
  name: string;
6853
6919
  };
6854
6920
 
6921
+ /**
6922
+ * End of Interop Client Events
6923
+ */
6924
+ /**
6925
+ * Performance Entry Types
6926
+ */
6927
+ declare type GetPerformanceStatsOptions = {
6928
+ /**
6929
+ * Optional filter for custom performance marks and measures.
6930
+ * When omitted, all custom marks and measures are collected.
6931
+ * When specified, only entries whose names match one of the filters are collected.
6932
+ * Strings match by substring; RegExp matches by test.
6933
+ */
6934
+ include?: (string | RegExp)[];
6935
+ /**
6936
+ * Include `resource` timing entries from each View / Frame / Window.
6937
+ * Defaults to `true`. Pass `false` to omit them.
6938
+ */
6939
+ resources?: boolean;
6940
+ /**
6941
+ * Whether to include hereio internal runtime metrics.
6942
+ * Defaults to `false`. Pass `true` to include.
6943
+ */
6944
+ browser?: boolean;
6945
+ };
6946
+
6855
6947
  declare type GetterCall<T> = ApiCall<void, T>;
6856
6948
 
6857
6949
  /**
@@ -7545,17 +7637,19 @@ declare type InteropActionLoggingOption = {
7545
7637
  * "interopBrokerConfiguration": {
7546
7638
  * "contextGroups": [
7547
7639
  * {
7548
- * "id": "green",
7640
+ * "id": "fdc3.channel.4",
7549
7641
  * "displayMetadata": {
7550
- * "color": "#00CC88",
7551
- * "name": "green"
7642
+ * "color": "green",
7643
+ * "name": "Channel 4",
7644
+ * "glyph": "4"
7552
7645
  * }
7553
7646
  * },
7554
7647
  * {
7555
- * "id": "purple",
7648
+ * "id": "fdc3.channel.8",
7556
7649
  * "displayMetadata": {
7557
- * "color": "#8C61FF",
7558
- * "name": "purple"
7650
+ * "color": "purple",
7651
+ * "name": "Channel 8",
7652
+ * "glyph": "8"
7559
7653
  * }
7560
7654
  * },
7561
7655
  * ]
@@ -7692,7 +7786,7 @@ declare class InteropBroker extends Base {
7692
7786
  * @param joinContextGroupOptions - Id of the Context Group and identity of the entity to join to the group.
7693
7787
  * @param senderIdentity - Identity of the client sender.
7694
7788
  */
7695
- joinContextGroup({ contextGroupId, target }: {
7789
+ joinContextGroup({ contextGroupId: requestedContextGroupId, target }: {
7696
7790
  contextGroupId: string;
7697
7791
  target?: OpenFin.ClientIdentity | OpenFin.Identity;
7698
7792
  }, senderIdentity: OpenFin.ClientIdentity): Promise<void>;
@@ -7703,7 +7797,7 @@ declare class InteropBroker extends Base {
7703
7797
  * @param addClientToContextGroupOptions - Contains the contextGroupId
7704
7798
  * @param clientIdentity - Identity of the client sender.
7705
7799
  */
7706
- addClientToContextGroup({ contextGroupId }: {
7800
+ addClientToContextGroup({ contextGroupId: requestedContextGroupId }: {
7707
7801
  contextGroupId: string;
7708
7802
  }, clientIdentity: OpenFin.ClientIdentity): Promise<void>;
7709
7803
  /**
@@ -8116,6 +8210,8 @@ declare class InteropBroker extends Base {
8116
8210
  };
8117
8211
  private getClientState;
8118
8212
  private static toObject;
8213
+ private normalizeContextGroupStates;
8214
+ private normalizeContextGroupId;
8119
8215
  static checkContextIntegrity: (context: OpenFin.Context) => {
8120
8216
  isValid: true;
8121
8217
  } | {
@@ -8346,7 +8442,7 @@ declare class InteropClient extends Base {
8346
8442
  *
8347
8443
  * getLastFocusedView()
8348
8444
  * .then(lastFocusedViewIdentity => {
8349
- * joinViewToContextGroup('red', lastFocusedViewIdentity)
8445
+ * joinViewToContextGroup('fdc3.channel.1', lastFocusedViewIdentity)
8350
8446
  * })
8351
8447
  * ```
8352
8448
  */
@@ -8381,7 +8477,7 @@ declare class InteropClient extends Base {
8381
8477
  *
8382
8478
  * @example
8383
8479
  * ```js
8384
- * fin.me.interop.getAllClientsInContextGroup('red')
8480
+ * fin.me.interop.getAllClientsInContextGroup('fdc3.channel.1')
8385
8481
  * .then(clientsInContextGroup => {
8386
8482
  * console.log(clientsInContextGroup)
8387
8483
  * })
@@ -8396,7 +8492,7 @@ declare class InteropClient extends Base {
8396
8492
  *
8397
8493
  * @example
8398
8494
  * ```js
8399
- * fin.me.interop.getInfoForContextGroup('red')
8495
+ * fin.me.interop.getInfoForContextGroup('fdc3.channel.1')
8400
8496
  * .then(contextGroupInfo => {
8401
8497
  * console.log(contextGroupInfo.displayMetadata.name)
8402
8498
  * console.log(contextGroupInfo.displayMetadata.color)
@@ -8453,12 +8549,12 @@ declare class InteropClient extends Base {
8453
8549
  *
8454
8550
  * @example
8455
8551
  * ```js
8456
- * await fin.me.interop.joinContextGroup('yellow');
8552
+ * await fin.me.interop.joinContextGroup('fdc3.channel.3');
8457
8553
  * await fin.me.interop.setContext({ type: 'instrument', id: { ticker: 'FOO' }});
8458
8554
  * const currentContext = await fin.me.interop.getCurrentContext();
8459
8555
  *
8460
8556
  * // with a specific context
8461
- * await fin.me.interop.joinContextGroup('yellow');
8557
+ * await fin.me.interop.joinContextGroup('fdc3.channel.3');
8462
8558
  * await fin.me.interop.setContext({ type: 'country', id: { ISOALPHA3: 'US' }});
8463
8559
  * await fin.me.interop.setContext({ type: 'instrument', id: { ticker: 'FOO' }});
8464
8560
  * const currentContext = await fin.me.interop.getCurrentContext('country');
@@ -8625,7 +8721,7 @@ declare type InteropClientOnDisconnectionListener = (InteropBrokerDisconnectionE
8625
8721
  */
8626
8722
  declare type InteropConfig = {
8627
8723
  /**
8628
- * Context Group for the client. (green, yellow, red, etc.).
8724
+ * Context Group ID for the client (for example, `fdc3.channel.4`).
8629
8725
  */
8630
8726
  currentContextGroup?: string | null;
8631
8727
  /**
@@ -8674,7 +8770,7 @@ declare class InteropModule extends Base {
8674
8770
  * @example
8675
8771
  * ```js
8676
8772
  * const interopConfig = {
8677
- * currentContextGroup: 'green'
8773
+ * currentContextGroup: 'fdc3.channel.4'
8678
8774
  * }
8679
8775
  *
8680
8776
  * const interopBroker = await fin.Interop.init('openfin');
@@ -9896,8 +9992,26 @@ declare type LayoutOptions = {
9896
9992
  content?: LayoutContent;
9897
9993
  dimensions?: {
9898
9994
  borderWidth?: number;
9995
+ /**
9996
+ * Minimum height a layout item can be resized to, in pixels.
9997
+ * On web layouts this is mapped to Golden Layout 2 `defaultMinItemHeight`.
9998
+ */
9899
9999
  minItemHeight?: number;
10000
+ /**
10001
+ * Minimum width a layout item can be resized to, in pixels.
10002
+ * On web layouts this is mapped to Golden Layout 2 `defaultMinItemWidth`.
10003
+ */
9900
10004
  minItemWidth?: number;
10005
+ /**
10006
+ * Minimum height a layout item can be resized to (CSS size, e.g. `'500px'`).
10007
+ * Web layouts only. Takes precedence over {@link LayoutOptions.dimensions.minItemHeight} when both are set.
10008
+ */
10009
+ defaultMinItemHeight?: string;
10010
+ /**
10011
+ * Minimum width a layout item can be resized to (CSS size, e.g. `'500px'`).
10012
+ * Web layouts only. Takes precedence over {@link LayoutOptions.dimensions.minItemWidth} when both are set.
10013
+ */
10014
+ defaultMinItemWidth?: string;
9901
10015
  headerHeight?: number;
9902
10016
  };
9903
10017
  };
@@ -10564,6 +10678,24 @@ declare type MutableViewOptions = {
10564
10678
  * Used by Workspace to store custom data. Overwriting or modifying this field may impact the functionality of Workspace
10565
10679
  */
10566
10680
  _internalWorkspaceData: any;
10681
+ /**
10682
+ * @internal
10683
+ * Used by Workspace to store platform-specific options (including `viewTab`). Overwriting or modifying this field may impact the functionality of Workspace.
10684
+ * Persisted on create, {@link View.View#updateOptions updateOptions}, snapshot, and {@link View.View#getOptions getOptions} — the same way windows persist `workspacePlatform`.
10685
+ */
10686
+ workspacePlatform?: WorkspacePlatformOptions;
10687
+ /**
10688
+ * Per-view tab icon. Exception to `showFavicons` / `defaultFaviconUrl`.
10689
+ *
10690
+ * Distinct from Window `icon` (taskbar).
10691
+ *
10692
+ * - Omitted / `''` / `'unset'`: inherit — if `showFavicons`, page favicon then `defaultFaviconUrl`, else hide
10693
+ * - URL string: always show that URL, even when `showFavicons` is false. Load failure uses `defaultFaviconUrl`
10694
+ * - `'hide'`: always hide, even when `showFavicons` is true
10695
+ *
10696
+ * On `updateOptions`, omitted keys are a no-op; set `'unset'` to return to inherit.
10697
+ */
10698
+ icon?: ViewTabIcon;
10567
10699
  /**
10568
10700
  * {@inheritDoc ViewThrottling}
10569
10701
  *
@@ -11328,6 +11460,7 @@ declare namespace OpenFin {
11328
11460
  ViewInfo,
11329
11461
  WindowThrottling,
11330
11462
  ViewThrottling,
11463
+ ViewTabIcon,
11331
11464
  UpdatableViewOptions,
11332
11465
  ViewCreationOptions,
11333
11466
  MutableViewOptions,
@@ -11500,6 +11633,7 @@ declare namespace OpenFin {
11500
11633
  ScreenCaptureBehavior,
11501
11634
  DomainSettingsPreloadScripts,
11502
11635
  PerDomainSettings,
11636
+ UrlRestoreSettings,
11503
11637
  CopyPermissions,
11504
11638
  PastePermissions,
11505
11639
  ClipboardPermissions,
@@ -11567,6 +11701,7 @@ declare namespace OpenFin {
11567
11701
  LayoutManagerOverride,
11568
11702
  LayoutManager,
11569
11703
  HeaderControlsContext,
11704
+ CustomTabControlsContext,
11570
11705
  CreateLayoutOptions,
11571
11706
  MultiInstanceViewBehavior,
11572
11707
  LayoutAccessibilityOptions,
@@ -11640,6 +11775,12 @@ declare namespace OpenFin {
11640
11775
  InteropClientEvent,
11641
11776
  ClientChangedContextGroup,
11642
11777
  InteropClientEvents,
11778
+ GetPerformanceStatsOptions,
11779
+ SerializedPerformanceOptions,
11780
+ CorePerformanceEntry,
11781
+ WebContentPerformanceStats,
11782
+ WindowPerformanceStats,
11783
+ PerformanceStatsResult,
11643
11784
  ChromeBrowser,
11644
11785
  LanguageInfo,
11645
11786
  PageTranslateOptions,
@@ -11924,6 +12065,12 @@ declare type PerDomainSettings = {
11924
12065
  * See also {@link AppLogLevel} for more information.
11925
12066
  */
11926
12067
  appLogLevel?: AppLogLevel;
12068
+ /**
12069
+ * When the live URL matches this rule, remap inbound
12070
+ * {@link View.ViewModule.navigate View.navigate} / {@link Window.WindowModule.navigate Window.navigate}
12071
+ * to {@link UrlRestoreSettings.url}.
12072
+ */
12073
+ urlRestore?: UrlRestoreSettings;
11927
12074
  };
11928
12075
 
11929
12076
  /**
@@ -11934,6 +12081,15 @@ declare type PerformanceReportEvent = Performance & BaseEvent_5 & {
11934
12081
  type: 'performance-report';
11935
12082
  };
11936
12083
 
12084
+ declare type PerformanceStatsResult = {
12085
+ mainWindow: WindowPerformanceStats;
12086
+ childWindows: WindowPerformanceStats[];
12087
+ browser?: {
12088
+ timeOrigin: number;
12089
+ entries: CorePerformanceEntry[];
12090
+ };
12091
+ };
12092
+
11937
12093
  /**
11938
12094
  * @interface
11939
12095
  *
@@ -14143,6 +14299,11 @@ declare type ProtocolMap = ExternalAdapterOnlyCallsMap & AnalyticsProtocolMap &
14143
14299
  response: OpenFin.MenuResult;
14144
14300
  };
14145
14301
  'close-tray-icon-popup-menu': IdentityCall<{}, void>;
14302
+ 'get-application-performance-stats': ApplicationIdentityCall<OpenFin.SerializedPerformanceOptions, OpenFin.PerformanceStatsResult> & {
14303
+ secure: true;
14304
+ namespace: 'Application';
14305
+ apiPath: '.getPerformanceStats';
14306
+ };
14146
14307
  'create-application': ApiCall<OpenFin.ApplicationCreationOptions, void>;
14147
14308
  'run-applications': ApiCall<{
14148
14309
  applications: Array<OpenFin.ManifestInfo>;
@@ -15528,6 +15689,16 @@ declare type SentMessage<Value> = Promise<Value> & {
15528
15689
  messageId: ReturnType<Environment['getNextMessageId']>;
15529
15690
  };
15530
15691
 
15692
+ declare type SerializedFilter = string | {
15693
+ type: 'regex';
15694
+ expression: string;
15695
+ flags?: string;
15696
+ };
15697
+
15698
+ declare type SerializedPerformanceOptions = Omit<GetPerformanceStatsOptions, 'include'> & {
15699
+ include?: SerializedFilter[];
15700
+ };
15701
+
15531
15702
  declare type ServeAssetOptions = AppAssetServeRequest | PathServeRequest;
15532
15703
 
15533
15704
  declare type ServedAssetInfo = {
@@ -18541,6 +18712,16 @@ declare type UrlChangedEvent = BaseUrlEvent & ({
18541
18712
  httpStatusText: string;
18542
18713
  });
18543
18714
 
18715
+ /**
18716
+ * Domain-settings policy that replaces a matched live URL with a configured start URI.
18717
+ */
18718
+ declare type UrlRestoreSettings = {
18719
+ /**
18720
+ * Absolute replacement URL. Full URL replace, not prefix rewrite.
18721
+ */
18722
+ url: string;
18723
+ };
18724
+
18544
18725
  /**
18545
18726
  * @interface
18546
18727
  */
@@ -19491,10 +19672,10 @@ declare type ViewTabAccessibilityOptions = {
19491
19672
  * Uses roving tabindex pattern - only one element focusable at a time.
19492
19673
  * @default ['active-tab', 'add-tab-button']
19493
19674
  */
19494
- tabNavigation?: ViewTabElements[];
19675
+ tabNavigation?: Exclude<ViewTabElements, 'active-tab-custom-control' | 'inactive-tab-custom-control'>[];
19495
19676
  /**
19496
19677
  * 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']
19678
+ * @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
19679
  */
19499
19680
  arrowNavigation?: ViewTabElements[];
19500
19681
  /**
@@ -19526,7 +19707,14 @@ declare type ViewTabAccessibilityOptions = {
19526
19707
  /**
19527
19708
  * Elements that can be navigated in view tabs.
19528
19709
  */
19529
- declare type ViewTabElements = 'active-tab' | 'inactive-tab' | 'active-tab-close-button' | 'inactive-tab-close-button' | 'add-tab-button';
19710
+ 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';
19711
+
19712
+ /**
19713
+ * Per-view tab icon. A URL, or the reserved sentinels `'hide'` / `'unset'`.
19714
+ *
19715
+ * `'hide'` and `'unset'` are not URLs. `''` is also unset (inherit) and is the default.
19716
+ */
19717
+ declare type ViewTabIcon = string | 'hide' | 'unset';
19530
19718
 
19531
19719
  /**
19532
19720
  * View throttling state.
@@ -19580,6 +19768,22 @@ declare type VoidCall = ApiCall<void, void>;
19580
19768
 
19581
19769
  declare type WebContent = View_2 | _Window;
19582
19770
 
19771
+ declare type WebContentPerformanceStatBase = {
19772
+ name: string;
19773
+ entries: CorePerformanceEntry[];
19774
+ navigation: {
19775
+ historyLength: number;
19776
+ timeOrigin: number;
19777
+ };
19778
+ url: string;
19779
+ frames: WebContentPerformanceStats[];
19780
+ };
19781
+
19782
+ declare type WebContentPerformanceStats = WebContentPerformanceStatBase | {
19783
+ error: string;
19784
+ url: string;
19785
+ };
19786
+
19583
19787
  declare class WebContents<T extends BaseEvent> extends EmitterBase<T> {
19584
19788
  identity: OpenFin.Identity;
19585
19789
  entityType: 'window' | 'view';
@@ -22190,6 +22394,13 @@ declare type WindowOptionsChangedEvent = OpenFin.WindowEvents.WindowOptionsChang
22190
22394
  */
22191
22395
  declare type WindowOptionsChangedEvent_2 = OptionsChangedEvent;
22192
22396
 
22397
+ declare type WindowPerformanceStats = (WebContentPerformanceStatBase & {
22398
+ views: WebContentPerformanceStats[];
22399
+ }) | {
22400
+ error: string;
22401
+ url: string;
22402
+ };
22403
+
22193
22404
  declare type WindowPrintOptions = PrintOptions | ScreenshotPrintOptions | WindowViewsPrintOptions;
22194
22405
 
22195
22406
  /**
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.115",
4
4
  "description": "OpenFin fdc3 module utilities and types.",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "private": false,