@openfin/fdc3-api 45.100.113 → 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
  /**
@@ -2195,6 +2211,15 @@ declare type ByType_8<Type extends EventType_8> = Payload_10<Type>;
2195
2211
  */
2196
2212
  declare type ByType_9<Type extends EventType_9> = Payload_11<Type>;
2197
2213
 
2214
+ /** Minimal V8 CallSite shape — js-adapter does not include @types/node. */
2215
+ declare interface CallSite {
2216
+ getFileName(): string | null;
2217
+ toString(): string;
2218
+ }
2219
+
2220
+ /** V8 CallSite objects, or native stack-frame strings from browsers that ignore Error.prepareStackTrace. */
2221
+ declare type CapturedStack = CallSite[] | string[];
2222
+
2198
2223
  /**
2199
2224
  * Configuration for page capture.
2200
2225
  *
@@ -3176,23 +3201,6 @@ declare type ChildWindowCreatedEvent = ContentCreationRulesEvent & {
3176
3201
  childOptions: OpenFin.WindowOptions;
3177
3202
  };
3178
3203
 
3179
- /**
3180
- * End of Interop Client Events
3181
- */
3182
- /**
3183
- * Client-side handle for the chrome-browser feature.
3184
- *
3185
- * For extension integration to be active on a window, that window must be
3186
- * created with `chromeBrowser: true` in its window options.
3187
- *
3188
- * @remarks
3189
- * This namespace is intended for internal experimentation only. Enabling the
3190
- * `chromeBrowser` window option changes how the runtime manages content and standard
3191
- * OpenFin content behavior is not guaranteed.
3192
- *
3193
- * @internal
3194
- * @experimental This API is under active development and may change or be removed without notice.
3195
- */
3196
3204
  declare interface ChromeBrowser {
3197
3205
  /**
3198
3206
  * Extension action surface — observe and invoke installed Chrome extension actions.
@@ -4200,6 +4208,32 @@ declare type ConstWindowOptions = {
4200
4208
  width: number;
4201
4209
  x: number;
4202
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
+ */
4203
4237
  experimental?: any;
4204
4238
  fdc3InteropApi?: string;
4205
4239
  /**
@@ -4523,6 +4557,8 @@ declare type CopyPermissions = {
4523
4557
  };
4524
4558
  };
4525
4559
 
4560
+ declare type CorePerformanceEntry = Omit<PerformanceEntry, 'toJSON'>;
4561
+
4526
4562
  /**
4527
4563
  * Defines and applies rounded corners for a frameless window. **NOTE:** On macOS corner is not ellipse but circle rounded by the
4528
4564
  * average of _height_ and _width_.
@@ -4675,6 +4711,32 @@ declare type CreateLayoutOptions = {
4675
4711
  * @experimental
4676
4712
  */
4677
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;
4678
4740
  /**
4679
4741
  * Accessibility options for the layout. Controls ARIA attributes and keyboard navigation.
4680
4742
  */
@@ -4764,6 +4826,19 @@ declare type CustomRequestHeaders = {
4764
4826
  headers: WebRequestHeader[];
4765
4827
  };
4766
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
+
4767
4842
  declare type DataChannelReadyState = RTCDataChannel['readyState'];
4768
4843
 
4769
4844
  /**
@@ -6843,6 +6918,32 @@ declare type GetLogRequestType = {
6843
6918
  name: string;
6844
6919
  };
6845
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
+
6846
6947
  declare type GetterCall<T> = ApiCall<void, T>;
6847
6948
 
6848
6949
  /**
@@ -7536,17 +7637,19 @@ declare type InteropActionLoggingOption = {
7536
7637
  * "interopBrokerConfiguration": {
7537
7638
  * "contextGroups": [
7538
7639
  * {
7539
- * "id": "green",
7640
+ * "id": "fdc3.channel.4",
7540
7641
  * "displayMetadata": {
7541
- * "color": "#00CC88",
7542
- * "name": "green"
7642
+ * "color": "green",
7643
+ * "name": "Channel 4",
7644
+ * "glyph": "4"
7543
7645
  * }
7544
7646
  * },
7545
7647
  * {
7546
- * "id": "purple",
7648
+ * "id": "fdc3.channel.8",
7547
7649
  * "displayMetadata": {
7548
- * "color": "#8C61FF",
7549
- * "name": "purple"
7650
+ * "color": "purple",
7651
+ * "name": "Channel 8",
7652
+ * "glyph": "8"
7550
7653
  * }
7551
7654
  * },
7552
7655
  * ]
@@ -7683,7 +7786,7 @@ declare class InteropBroker extends Base {
7683
7786
  * @param joinContextGroupOptions - Id of the Context Group and identity of the entity to join to the group.
7684
7787
  * @param senderIdentity - Identity of the client sender.
7685
7788
  */
7686
- joinContextGroup({ contextGroupId, target }: {
7789
+ joinContextGroup({ contextGroupId: requestedContextGroupId, target }: {
7687
7790
  contextGroupId: string;
7688
7791
  target?: OpenFin.ClientIdentity | OpenFin.Identity;
7689
7792
  }, senderIdentity: OpenFin.ClientIdentity): Promise<void>;
@@ -7694,7 +7797,7 @@ declare class InteropBroker extends Base {
7694
7797
  * @param addClientToContextGroupOptions - Contains the contextGroupId
7695
7798
  * @param clientIdentity - Identity of the client sender.
7696
7799
  */
7697
- addClientToContextGroup({ contextGroupId }: {
7800
+ addClientToContextGroup({ contextGroupId: requestedContextGroupId }: {
7698
7801
  contextGroupId: string;
7699
7802
  }, clientIdentity: OpenFin.ClientIdentity): Promise<void>;
7700
7803
  /**
@@ -8107,6 +8210,8 @@ declare class InteropBroker extends Base {
8107
8210
  };
8108
8211
  private getClientState;
8109
8212
  private static toObject;
8213
+ private normalizeContextGroupStates;
8214
+ private normalizeContextGroupId;
8110
8215
  static checkContextIntegrity: (context: OpenFin.Context) => {
8111
8216
  isValid: true;
8112
8217
  } | {
@@ -8337,7 +8442,7 @@ declare class InteropClient extends Base {
8337
8442
  *
8338
8443
  * getLastFocusedView()
8339
8444
  * .then(lastFocusedViewIdentity => {
8340
- * joinViewToContextGroup('red', lastFocusedViewIdentity)
8445
+ * joinViewToContextGroup('fdc3.channel.1', lastFocusedViewIdentity)
8341
8446
  * })
8342
8447
  * ```
8343
8448
  */
@@ -8372,7 +8477,7 @@ declare class InteropClient extends Base {
8372
8477
  *
8373
8478
  * @example
8374
8479
  * ```js
8375
- * fin.me.interop.getAllClientsInContextGroup('red')
8480
+ * fin.me.interop.getAllClientsInContextGroup('fdc3.channel.1')
8376
8481
  * .then(clientsInContextGroup => {
8377
8482
  * console.log(clientsInContextGroup)
8378
8483
  * })
@@ -8387,7 +8492,7 @@ declare class InteropClient extends Base {
8387
8492
  *
8388
8493
  * @example
8389
8494
  * ```js
8390
- * fin.me.interop.getInfoForContextGroup('red')
8495
+ * fin.me.interop.getInfoForContextGroup('fdc3.channel.1')
8391
8496
  * .then(contextGroupInfo => {
8392
8497
  * console.log(contextGroupInfo.displayMetadata.name)
8393
8498
  * console.log(contextGroupInfo.displayMetadata.color)
@@ -8444,12 +8549,12 @@ declare class InteropClient extends Base {
8444
8549
  *
8445
8550
  * @example
8446
8551
  * ```js
8447
- * await fin.me.interop.joinContextGroup('yellow');
8552
+ * await fin.me.interop.joinContextGroup('fdc3.channel.3');
8448
8553
  * await fin.me.interop.setContext({ type: 'instrument', id: { ticker: 'FOO' }});
8449
8554
  * const currentContext = await fin.me.interop.getCurrentContext();
8450
8555
  *
8451
8556
  * // with a specific context
8452
- * await fin.me.interop.joinContextGroup('yellow');
8557
+ * await fin.me.interop.joinContextGroup('fdc3.channel.3');
8453
8558
  * await fin.me.interop.setContext({ type: 'country', id: { ISOALPHA3: 'US' }});
8454
8559
  * await fin.me.interop.setContext({ type: 'instrument', id: { ticker: 'FOO' }});
8455
8560
  * const currentContext = await fin.me.interop.getCurrentContext('country');
@@ -8616,7 +8721,7 @@ declare type InteropClientOnDisconnectionListener = (InteropBrokerDisconnectionE
8616
8721
  */
8617
8722
  declare type InteropConfig = {
8618
8723
  /**
8619
- * Context Group for the client. (green, yellow, red, etc.).
8724
+ * Context Group ID for the client (for example, `fdc3.channel.4`).
8620
8725
  */
8621
8726
  currentContextGroup?: string | null;
8622
8727
  /**
@@ -8665,7 +8770,7 @@ declare class InteropModule extends Base {
8665
8770
  * @example
8666
8771
  * ```js
8667
8772
  * const interopConfig = {
8668
- * currentContextGroup: 'green'
8773
+ * currentContextGroup: 'fdc3.channel.4'
8669
8774
  * }
8670
8775
  *
8671
8776
  * const interopBroker = await fin.Interop.init('openfin');
@@ -9887,8 +9992,26 @@ declare type LayoutOptions = {
9887
9992
  content?: LayoutContent;
9888
9993
  dimensions?: {
9889
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
+ */
9890
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
+ */
9891
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;
9892
10015
  headerHeight?: number;
9893
10016
  };
9894
10017
  };
@@ -10145,6 +10268,10 @@ declare type Manifest = {
10145
10268
  experimentalExtensionPolicyBlockedHosts?: {
10146
10269
  hosts: string[];
10147
10270
  };
10271
+ /**
10272
+ * Chromium extensions to install and enable for this application.
10273
+ */
10274
+ extensions?: ManifestExtension[];
10148
10275
  licenseKey: string;
10149
10276
  offlineAccess?: boolean;
10150
10277
  platform?: PlatformOptions;
@@ -10198,6 +10325,27 @@ declare type ManifestChangedEvent = BaseEvents.IdentityEvent & {
10198
10325
  type: 'manifest-changed';
10199
10326
  };
10200
10327
 
10328
+ /**
10329
+ * Chromium extension entry in an application configuration.
10330
+ *
10331
+ * @interface
10332
+ */
10333
+ declare type ManifestExtension = {
10334
+ /** Chromium extension ID. */
10335
+ id: string;
10336
+ /** Extension server URL used to install the extension. */
10337
+ serverURL: string;
10338
+ /**
10339
+ * Rules declaring where this extension may inject content scripts into
10340
+ * non-tab surfaces (for example the AI Center). Omit or leave empty to keep
10341
+ * the extension restricted to browser tabs — identical to historic
10342
+ * behavior. A wildcard pattern in `match` grants blanket coverage.
10343
+ * `matchOptions` behaves as it does for domain settings. Intended for
10344
+ * security extensions rather than extensions that add visible UI.
10345
+ */
10346
+ nonTabInjections?: NonTabInjectionRule[];
10347
+ };
10348
+
10201
10349
  /**
10202
10350
  * @interface
10203
10351
  */
@@ -10530,6 +10678,24 @@ declare type MutableViewOptions = {
10530
10678
  * Used by Workspace to store custom data. Overwriting or modifying this field may impact the functionality of Workspace
10531
10679
  */
10532
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;
10533
10699
  /**
10534
10700
  * {@inheritDoc ViewThrottling}
10535
10701
  *
@@ -11000,6 +11166,32 @@ declare type NonPropagatedWebContentsEvent = never;
11000
11166
  */
11001
11167
  declare type NonPropagatedWindowEvent = never;
11002
11168
 
11169
+ /**
11170
+ * Rule permitting a Chromium extension to inject content scripts into non-tab
11171
+ * web content whose URL matches the given patterns.
11172
+ *
11173
+ * Match patterns use the same Chromium
11174
+ * [match pattern](https://developer.chrome.com/docs/extensions/develop/concepts/match-patterns)
11175
+ * syntax as {@link DomainSettingsRule}. Omitting `matchOptions` uses the same
11176
+ * default scheme-matching behavior as domain settings.
11177
+ *
11178
+ * @interface
11179
+ */
11180
+ declare type NonTabInjectionRule = {
11181
+ /**
11182
+ * Array of [match patterns](https://developer.chrome.com/docs/extensions/develop/concepts/match-patterns)
11183
+ * specifying the content locations where the extension may inject outside
11184
+ * browser tabs. An empty array grants no permission. A wildcard grants
11185
+ * blanket coverage of all content locations.
11186
+ */
11187
+ match: string[];
11188
+ /**
11189
+ * Options to use when comparing URIs to the `match` patterns. Behaves as
11190
+ * {@link DomainSettingsRule.matchOptions} / {@link RuleMatchOptions}.
11191
+ */
11192
+ matchOptions?: RuleMatchOptions;
11193
+ };
11194
+
11003
11195
  /**
11004
11196
  * @internal
11005
11197
  *
@@ -11268,6 +11460,7 @@ declare namespace OpenFin {
11268
11460
  ViewInfo,
11269
11461
  WindowThrottling,
11270
11462
  ViewThrottling,
11463
+ ViewTabIcon,
11271
11464
  UpdatableViewOptions,
11272
11465
  ViewCreationOptions,
11273
11466
  MutableViewOptions,
@@ -11321,6 +11514,8 @@ declare namespace OpenFin {
11321
11514
  ThemeColorsMap,
11322
11515
  ThemeColorId,
11323
11516
  ThemePalette,
11517
+ NonTabInjectionRule,
11518
+ ManifestExtension,
11324
11519
  Manifest,
11325
11520
  LayoutContent,
11326
11521
  LayoutItemConfig,
@@ -11438,6 +11633,7 @@ declare namespace OpenFin {
11438
11633
  ScreenCaptureBehavior,
11439
11634
  DomainSettingsPreloadScripts,
11440
11635
  PerDomainSettings,
11636
+ UrlRestoreSettings,
11441
11637
  CopyPermissions,
11442
11638
  PastePermissions,
11443
11639
  ClipboardPermissions,
@@ -11505,6 +11701,7 @@ declare namespace OpenFin {
11505
11701
  LayoutManagerOverride,
11506
11702
  LayoutManager,
11507
11703
  HeaderControlsContext,
11704
+ CustomTabControlsContext,
11508
11705
  CreateLayoutOptions,
11509
11706
  MultiInstanceViewBehavior,
11510
11707
  LayoutAccessibilityOptions,
@@ -11578,6 +11775,12 @@ declare namespace OpenFin {
11578
11775
  InteropClientEvent,
11579
11776
  ClientChangedContextGroup,
11580
11777
  InteropClientEvents,
11778
+ GetPerformanceStatsOptions,
11779
+ SerializedPerformanceOptions,
11780
+ CorePerformanceEntry,
11781
+ WebContentPerformanceStats,
11782
+ WindowPerformanceStats,
11783
+ PerformanceStatsResult,
11581
11784
  ChromeBrowser,
11582
11785
  LanguageInfo,
11583
11786
  PageTranslateOptions,
@@ -11862,6 +12065,12 @@ declare type PerDomainSettings = {
11862
12065
  * See also {@link AppLogLevel} for more information.
11863
12066
  */
11864
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;
11865
12074
  };
11866
12075
 
11867
12076
  /**
@@ -11872,6 +12081,15 @@ declare type PerformanceReportEvent = Performance & BaseEvent_5 & {
11872
12081
  type: 'performance-report';
11873
12082
  };
11874
12083
 
12084
+ declare type PerformanceStatsResult = {
12085
+ mainWindow: WindowPerformanceStats;
12086
+ childWindows: WindowPerformanceStats[];
12087
+ browser?: {
12088
+ timeOrigin: number;
12089
+ entries: CorePerformanceEntry[];
12090
+ };
12091
+ };
12092
+
11875
12093
  /**
11876
12094
  * @interface
11877
12095
  *
@@ -14081,6 +14299,11 @@ declare type ProtocolMap = ExternalAdapterOnlyCallsMap & AnalyticsProtocolMap &
14081
14299
  response: OpenFin.MenuResult;
14082
14300
  };
14083
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
+ };
14084
14307
  'create-application': ApiCall<OpenFin.ApplicationCreationOptions, void>;
14085
14308
  'run-applications': ApiCall<{
14086
14309
  applications: Array<OpenFin.ManifestInfo>;
@@ -15466,6 +15689,16 @@ declare type SentMessage<Value> = Promise<Value> & {
15466
15689
  messageId: ReturnType<Environment['getNextMessageId']>;
15467
15690
  };
15468
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
+
15469
15702
  declare type ServeAssetOptions = AppAssetServeRequest | PathServeRequest;
15470
15703
 
15471
15704
  declare type ServedAssetInfo = {
@@ -18373,7 +18606,7 @@ declare class Transport<MeType extends EntityType = EntityType> extends EventEmi
18373
18606
  connectByPort(config: ExistingConnectConfig): Promise<void>;
18374
18607
  private authorize;
18375
18608
  sendAction<T extends keyof ProtocolMap>(action: T, payload?: ProtocolMap[T]['request'], uncorrelated?: boolean): SentMessage<SendActionResponse<T>>;
18376
- protected nackHandler(payloadOrMessage: RuntimeErrorPayload | string, reject: Function, callSites?: NodeJS.CallSite[]): void;
18609
+ protected nackHandler(payloadOrMessage: RuntimeErrorPayload | string, reject: Function, callSites?: CapturedStack): void;
18377
18610
  ferryAction(origData: any): Promise<Message<any>>;
18378
18611
  registerMessageHandler(handler: MessageHandler): void;
18379
18612
  protected addWireListener(id: number, resolve: Function, handleNack: NackHandler, uncorrelated: boolean): void;
@@ -18479,6 +18712,16 @@ declare type UrlChangedEvent = BaseUrlEvent & ({
18479
18712
  httpStatusText: string;
18480
18713
  });
18481
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
+
18482
18725
  /**
18483
18726
  * @interface
18484
18727
  */
@@ -19429,10 +19672,10 @@ declare type ViewTabAccessibilityOptions = {
19429
19672
  * Uses roving tabindex pattern - only one element focusable at a time.
19430
19673
  * @default ['active-tab', 'add-tab-button']
19431
19674
  */
19432
- tabNavigation?: ViewTabElements[];
19675
+ tabNavigation?: Exclude<ViewTabElements, 'active-tab-custom-control' | 'inactive-tab-custom-control'>[];
19433
19676
  /**
19434
19677
  * Controls which elements are navigable via Arrow keys.
19435
- * @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']
19436
19679
  */
19437
19680
  arrowNavigation?: ViewTabElements[];
19438
19681
  /**
@@ -19464,7 +19707,14 @@ declare type ViewTabAccessibilityOptions = {
19464
19707
  /**
19465
19708
  * Elements that can be navigated in view tabs.
19466
19709
  */
19467
- 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';
19468
19718
 
19469
19719
  /**
19470
19720
  * View throttling state.
@@ -19518,6 +19768,22 @@ declare type VoidCall = ApiCall<void, void>;
19518
19768
 
19519
19769
  declare type WebContent = View_2 | _Window;
19520
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
+
19521
19787
  declare class WebContents<T extends BaseEvent> extends EmitterBase<T> {
19522
19788
  identity: OpenFin.Identity;
19523
19789
  entityType: 'window' | 'view';
@@ -22128,6 +22394,13 @@ declare type WindowOptionsChangedEvent = OpenFin.WindowEvents.WindowOptionsChang
22128
22394
  */
22129
22395
  declare type WindowOptionsChangedEvent_2 = OptionsChangedEvent;
22130
22396
 
22397
+ declare type WindowPerformanceStats = (WebContentPerformanceStatBase & {
22398
+ views: WebContentPerformanceStats[];
22399
+ }) | {
22400
+ error: string;
22401
+ url: string;
22402
+ };
22403
+
22131
22404
  declare type WindowPrintOptions = PrintOptions | ScreenshotPrintOptions | WindowViewsPrintOptions;
22132
22405
 
22133
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.113",
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,