@openfin/fdc3-api 46.100.65 → 46.100.67

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.
@@ -7390,17 +7390,19 @@ declare type InteropActionLoggingOption = {
7390
7390
  * "interopBrokerConfiguration": {
7391
7391
  * "contextGroups": [
7392
7392
  * {
7393
- * "id": "green",
7393
+ * "id": "fdc3.channel.4",
7394
7394
  * "displayMetadata": {
7395
- * "color": "#00CC88",
7396
- * "name": "green"
7395
+ * "color": "green",
7396
+ * "name": "Channel 4",
7397
+ * "glyph": "4"
7397
7398
  * }
7398
7399
  * },
7399
7400
  * {
7400
- * "id": "purple",
7401
+ * "id": "fdc3.channel.8",
7401
7402
  * "displayMetadata": {
7402
- * "color": "#8C61FF",
7403
- * "name": "purple"
7403
+ * "color": "purple",
7404
+ * "name": "Channel 8",
7405
+ * "glyph": "8"
7404
7406
  * }
7405
7407
  * },
7406
7408
  * ]
@@ -7534,7 +7536,7 @@ declare class InteropBroker extends Base {
7534
7536
  * @param joinContextGroupOptions - Id of the Context Group and identity of the entity to join to the group.
7535
7537
  * @param senderIdentity - Identity of the client sender.
7536
7538
  */
7537
- joinContextGroup({ contextGroupId, target }: {
7539
+ joinContextGroup({ contextGroupId: requestedContextGroupId, target }: {
7538
7540
  contextGroupId: string;
7539
7541
  target?: OpenFin.ClientIdentity | OpenFin.Identity;
7540
7542
  }, senderIdentity: OpenFin.ClientIdentity): Promise<void>;
@@ -7545,7 +7547,7 @@ declare class InteropBroker extends Base {
7545
7547
  * @param addClientToContextGroupOptions - Contains the contextGroupId
7546
7548
  * @param clientIdentity - Identity of the client sender.
7547
7549
  */
7548
- addClientToContextGroup({ contextGroupId }: {
7550
+ addClientToContextGroup({ contextGroupId: requestedContextGroupId }: {
7549
7551
  contextGroupId: string;
7550
7552
  }, clientIdentity: OpenFin.ClientIdentity): Promise<void>;
7551
7553
  /**
@@ -7958,6 +7960,8 @@ declare class InteropBroker extends Base {
7958
7960
  };
7959
7961
  private getClientState;
7960
7962
  private static toObject;
7963
+ private normalizeContextGroupStates;
7964
+ private normalizeContextGroupId;
7961
7965
  static checkContextIntegrity: (context: OpenFin.Context) => {
7962
7966
  isValid: true;
7963
7967
  } | {
@@ -8185,7 +8189,7 @@ declare class InteropClient extends Base {
8185
8189
  *
8186
8190
  * getLastFocusedView()
8187
8191
  * .then(lastFocusedViewIdentity => {
8188
- * joinViewToContextGroup('red', lastFocusedViewIdentity)
8192
+ * joinViewToContextGroup('fdc3.channel.1', lastFocusedViewIdentity)
8189
8193
  * })
8190
8194
  * ```
8191
8195
  */
@@ -8220,7 +8224,7 @@ declare class InteropClient extends Base {
8220
8224
  *
8221
8225
  * @example
8222
8226
  * ```js
8223
- * fin.me.interop.getAllClientsInContextGroup('red')
8227
+ * fin.me.interop.getAllClientsInContextGroup('fdc3.channel.1')
8224
8228
  * .then(clientsInContextGroup => {
8225
8229
  * console.log(clientsInContextGroup)
8226
8230
  * })
@@ -8235,7 +8239,7 @@ declare class InteropClient extends Base {
8235
8239
  *
8236
8240
  * @example
8237
8241
  * ```js
8238
- * fin.me.interop.getInfoForContextGroup('red')
8242
+ * fin.me.interop.getInfoForContextGroup('fdc3.channel.1')
8239
8243
  * .then(contextGroupInfo => {
8240
8244
  * console.log(contextGroupInfo.displayMetadata.name)
8241
8245
  * console.log(contextGroupInfo.displayMetadata.color)
@@ -8292,12 +8296,12 @@ declare class InteropClient extends Base {
8292
8296
  *
8293
8297
  * @example
8294
8298
  * ```js
8295
- * await fin.me.interop.joinContextGroup('yellow');
8299
+ * await fin.me.interop.joinContextGroup('fdc3.channel.3');
8296
8300
  * await fin.me.interop.setContext({ type: 'instrument', id: { ticker: 'FOO' }});
8297
8301
  * const currentContext = await fin.me.interop.getCurrentContext();
8298
8302
  *
8299
8303
  * // with a specific context
8300
- * await fin.me.interop.joinContextGroup('yellow');
8304
+ * await fin.me.interop.joinContextGroup('fdc3.channel.3');
8301
8305
  * await fin.me.interop.setContext({ type: 'country', id: { ISOALPHA3: 'US' }});
8302
8306
  * await fin.me.interop.setContext({ type: 'instrument', id: { ticker: 'FOO' }});
8303
8307
  * const currentContext = await fin.me.interop.getCurrentContext('country');
@@ -8459,7 +8463,7 @@ declare type InteropClientOnDisconnectionListener = (InteropBrokerDisconnectionE
8459
8463
  */
8460
8464
  declare type InteropConfig = {
8461
8465
  /**
8462
- * Context Group for the client. (green, yellow, red, etc.).
8466
+ * Context Group ID for the client (for example, `fdc3.channel.4`).
8463
8467
  */
8464
8468
  currentContextGroup?: string | null;
8465
8469
  /**
@@ -8508,7 +8512,7 @@ declare class InteropModule extends Base {
8508
8512
  * @example
8509
8513
  * ```js
8510
8514
  * const interopConfig = {
8511
- * currentContextGroup: 'green'
8515
+ * currentContextGroup: 'fdc3.channel.4'
8512
8516
  * }
8513
8517
  *
8514
8518
  * const interopBroker = await fin.Interop.init('openfin');
@@ -9796,6 +9800,10 @@ declare type Manifest = {
9796
9800
  experimentalExtensionPolicyBlockedHosts?: {
9797
9801
  hosts: string[];
9798
9802
  };
9803
+ /**
9804
+ * Chromium extensions to install and enable for this application.
9805
+ */
9806
+ extensions?: ManifestExtension[];
9799
9807
  licenseKey: string;
9800
9808
  offlineAccess?: boolean;
9801
9809
  platform?: PlatformOptions;
@@ -9849,6 +9857,27 @@ declare type ManifestChangedEvent = BaseEvents.IdentityEvent & {
9849
9857
  type: 'manifest-changed';
9850
9858
  };
9851
9859
 
9860
+ /**
9861
+ * Chromium extension entry in an application configuration.
9862
+ *
9863
+ * @interface
9864
+ */
9865
+ declare type ManifestExtension = {
9866
+ /** Chromium extension ID. */
9867
+ id: string;
9868
+ /** Extension server URL used to install the extension. */
9869
+ serverURL: string;
9870
+ /**
9871
+ * Rules declaring where this extension may inject content scripts into
9872
+ * non-tab surfaces (for example the AI Center). Omit or leave empty to keep
9873
+ * the extension restricted to browser tabs — identical to historic
9874
+ * behavior. A wildcard pattern in `match` grants blanket coverage.
9875
+ * `matchOptions` behaves as it does for domain settings. Intended for
9876
+ * security extensions rather than extensions that add visible UI.
9877
+ */
9878
+ nonTabInjections?: NonTabInjectionRule[];
9879
+ };
9880
+
9852
9881
  /**
9853
9882
  * @interface
9854
9883
  */
@@ -10639,6 +10668,32 @@ declare type NonPropagatedWebContentsEvent = never;
10639
10668
  */
10640
10669
  declare type NonPropagatedWindowEvent = never;
10641
10670
 
10671
+ /**
10672
+ * Rule permitting a Chromium extension to inject content scripts into non-tab
10673
+ * web content whose URL matches the given patterns.
10674
+ *
10675
+ * Match patterns use the same Chromium
10676
+ * [match pattern](https://developer.chrome.com/docs/extensions/develop/concepts/match-patterns)
10677
+ * syntax as {@link DomainSettingsRule}. Omitting `matchOptions` uses the same
10678
+ * default scheme-matching behavior as domain settings.
10679
+ *
10680
+ * @interface
10681
+ */
10682
+ declare type NonTabInjectionRule = {
10683
+ /**
10684
+ * Array of [match patterns](https://developer.chrome.com/docs/extensions/develop/concepts/match-patterns)
10685
+ * specifying the content locations where the extension may inject outside
10686
+ * browser tabs. An empty array grants no permission. A wildcard grants
10687
+ * blanket coverage of all content locations.
10688
+ */
10689
+ match: string[];
10690
+ /**
10691
+ * Options to use when comparing URIs to the `match` patterns. Behaves as
10692
+ * {@link DomainSettingsRule.matchOptions} / {@link RuleMatchOptions}.
10693
+ */
10694
+ matchOptions?: RuleMatchOptions;
10695
+ };
10696
+
10642
10697
  /* Excluded from this release type: NotCloseRequested */
10643
10698
 
10644
10699
  declare type NotificationEvent = {
@@ -10947,6 +11002,8 @@ declare namespace OpenFin {
10947
11002
  ThemeColorsMap,
10948
11003
  ThemeColorId,
10949
11004
  ThemePalette,
11005
+ NonTabInjectionRule,
11006
+ ManifestExtension,
10950
11007
  Manifest,
10951
11008
  LayoutContent,
10952
11009
  LayoutItemConfig,
@@ -12352,20 +12409,6 @@ declare type PlatformOptions = ApplicationCreationOptions & {
12352
12409
  * @default true
12353
12410
  */
12354
12411
  allowLaunchIntoPlatform?: boolean;
12355
- /**
12356
- * @experimental
12357
- *
12358
- * Creates window chrome before views. `createWindow` resolves when the window exists
12359
- * (`window-created`) instead of waiting for layout creation to finish (`layout-ready`).
12360
- *
12361
- * Views start after the window exists. During `applySnapshot`, every window shell is
12362
- * created first; view creation starts after `platform-snapshot-applied`.
12363
- *
12364
- * Tradeoff: windows appear sooner, but view content and `layout-ready` are delayed.
12365
- *
12366
- * @default false
12367
- */
12368
- deferViewCreation?: boolean;
12369
12412
  };
12370
12413
 
12371
12414
  /**
@@ -7390,17 +7390,19 @@ declare type InteropActionLoggingOption = {
7390
7390
  * "interopBrokerConfiguration": {
7391
7391
  * "contextGroups": [
7392
7392
  * {
7393
- * "id": "green",
7393
+ * "id": "fdc3.channel.4",
7394
7394
  * "displayMetadata": {
7395
- * "color": "#00CC88",
7396
- * "name": "green"
7395
+ * "color": "green",
7396
+ * "name": "Channel 4",
7397
+ * "glyph": "4"
7397
7398
  * }
7398
7399
  * },
7399
7400
  * {
7400
- * "id": "purple",
7401
+ * "id": "fdc3.channel.8",
7401
7402
  * "displayMetadata": {
7402
- * "color": "#8C61FF",
7403
- * "name": "purple"
7403
+ * "color": "purple",
7404
+ * "name": "Channel 8",
7405
+ * "glyph": "8"
7404
7406
  * }
7405
7407
  * },
7406
7408
  * ]
@@ -7534,7 +7536,7 @@ declare class InteropBroker extends Base {
7534
7536
  * @param joinContextGroupOptions - Id of the Context Group and identity of the entity to join to the group.
7535
7537
  * @param senderIdentity - Identity of the client sender.
7536
7538
  */
7537
- joinContextGroup({ contextGroupId, target }: {
7539
+ joinContextGroup({ contextGroupId: requestedContextGroupId, target }: {
7538
7540
  contextGroupId: string;
7539
7541
  target?: OpenFin.ClientIdentity | OpenFin.Identity;
7540
7542
  }, senderIdentity: OpenFin.ClientIdentity): Promise<void>;
@@ -7545,7 +7547,7 @@ declare class InteropBroker extends Base {
7545
7547
  * @param addClientToContextGroupOptions - Contains the contextGroupId
7546
7548
  * @param clientIdentity - Identity of the client sender.
7547
7549
  */
7548
- addClientToContextGroup({ contextGroupId }: {
7550
+ addClientToContextGroup({ contextGroupId: requestedContextGroupId }: {
7549
7551
  contextGroupId: string;
7550
7552
  }, clientIdentity: OpenFin.ClientIdentity): Promise<void>;
7551
7553
  /**
@@ -7958,6 +7960,8 @@ declare class InteropBroker extends Base {
7958
7960
  };
7959
7961
  private getClientState;
7960
7962
  private static toObject;
7963
+ private normalizeContextGroupStates;
7964
+ private normalizeContextGroupId;
7961
7965
  static checkContextIntegrity: (context: OpenFin.Context) => {
7962
7966
  isValid: true;
7963
7967
  } | {
@@ -8185,7 +8189,7 @@ declare class InteropClient extends Base {
8185
8189
  *
8186
8190
  * getLastFocusedView()
8187
8191
  * .then(lastFocusedViewIdentity => {
8188
- * joinViewToContextGroup('red', lastFocusedViewIdentity)
8192
+ * joinViewToContextGroup('fdc3.channel.1', lastFocusedViewIdentity)
8189
8193
  * })
8190
8194
  * ```
8191
8195
  */
@@ -8220,7 +8224,7 @@ declare class InteropClient extends Base {
8220
8224
  *
8221
8225
  * @example
8222
8226
  * ```js
8223
- * fin.me.interop.getAllClientsInContextGroup('red')
8227
+ * fin.me.interop.getAllClientsInContextGroup('fdc3.channel.1')
8224
8228
  * .then(clientsInContextGroup => {
8225
8229
  * console.log(clientsInContextGroup)
8226
8230
  * })
@@ -8235,7 +8239,7 @@ declare class InteropClient extends Base {
8235
8239
  *
8236
8240
  * @example
8237
8241
  * ```js
8238
- * fin.me.interop.getInfoForContextGroup('red')
8242
+ * fin.me.interop.getInfoForContextGroup('fdc3.channel.1')
8239
8243
  * .then(contextGroupInfo => {
8240
8244
  * console.log(contextGroupInfo.displayMetadata.name)
8241
8245
  * console.log(contextGroupInfo.displayMetadata.color)
@@ -8292,12 +8296,12 @@ declare class InteropClient extends Base {
8292
8296
  *
8293
8297
  * @example
8294
8298
  * ```js
8295
- * await fin.me.interop.joinContextGroup('yellow');
8299
+ * await fin.me.interop.joinContextGroup('fdc3.channel.3');
8296
8300
  * await fin.me.interop.setContext({ type: 'instrument', id: { ticker: 'FOO' }});
8297
8301
  * const currentContext = await fin.me.interop.getCurrentContext();
8298
8302
  *
8299
8303
  * // with a specific context
8300
- * await fin.me.interop.joinContextGroup('yellow');
8304
+ * await fin.me.interop.joinContextGroup('fdc3.channel.3');
8301
8305
  * await fin.me.interop.setContext({ type: 'country', id: { ISOALPHA3: 'US' }});
8302
8306
  * await fin.me.interop.setContext({ type: 'instrument', id: { ticker: 'FOO' }});
8303
8307
  * const currentContext = await fin.me.interop.getCurrentContext('country');
@@ -8459,7 +8463,7 @@ declare type InteropClientOnDisconnectionListener = (InteropBrokerDisconnectionE
8459
8463
  */
8460
8464
  declare type InteropConfig = {
8461
8465
  /**
8462
- * Context Group for the client. (green, yellow, red, etc.).
8466
+ * Context Group ID for the client (for example, `fdc3.channel.4`).
8463
8467
  */
8464
8468
  currentContextGroup?: string | null;
8465
8469
  /**
@@ -8508,7 +8512,7 @@ declare class InteropModule extends Base {
8508
8512
  * @example
8509
8513
  * ```js
8510
8514
  * const interopConfig = {
8511
- * currentContextGroup: 'green'
8515
+ * currentContextGroup: 'fdc3.channel.4'
8512
8516
  * }
8513
8517
  *
8514
8518
  * const interopBroker = await fin.Interop.init('openfin');
@@ -9796,6 +9800,10 @@ declare type Manifest = {
9796
9800
  experimentalExtensionPolicyBlockedHosts?: {
9797
9801
  hosts: string[];
9798
9802
  };
9803
+ /**
9804
+ * Chromium extensions to install and enable for this application.
9805
+ */
9806
+ extensions?: ManifestExtension[];
9799
9807
  licenseKey: string;
9800
9808
  offlineAccess?: boolean;
9801
9809
  platform?: PlatformOptions;
@@ -9849,6 +9857,27 @@ declare type ManifestChangedEvent = BaseEvents.IdentityEvent & {
9849
9857
  type: 'manifest-changed';
9850
9858
  };
9851
9859
 
9860
+ /**
9861
+ * Chromium extension entry in an application configuration.
9862
+ *
9863
+ * @interface
9864
+ */
9865
+ declare type ManifestExtension = {
9866
+ /** Chromium extension ID. */
9867
+ id: string;
9868
+ /** Extension server URL used to install the extension. */
9869
+ serverURL: string;
9870
+ /**
9871
+ * Rules declaring where this extension may inject content scripts into
9872
+ * non-tab surfaces (for example the AI Center). Omit or leave empty to keep
9873
+ * the extension restricted to browser tabs — identical to historic
9874
+ * behavior. A wildcard pattern in `match` grants blanket coverage.
9875
+ * `matchOptions` behaves as it does for domain settings. Intended for
9876
+ * security extensions rather than extensions that add visible UI.
9877
+ */
9878
+ nonTabInjections?: NonTabInjectionRule[];
9879
+ };
9880
+
9852
9881
  /**
9853
9882
  * @interface
9854
9883
  */
@@ -10639,6 +10668,32 @@ declare type NonPropagatedWebContentsEvent = never;
10639
10668
  */
10640
10669
  declare type NonPropagatedWindowEvent = never;
10641
10670
 
10671
+ /**
10672
+ * Rule permitting a Chromium extension to inject content scripts into non-tab
10673
+ * web content whose URL matches the given patterns.
10674
+ *
10675
+ * Match patterns use the same Chromium
10676
+ * [match pattern](https://developer.chrome.com/docs/extensions/develop/concepts/match-patterns)
10677
+ * syntax as {@link DomainSettingsRule}. Omitting `matchOptions` uses the same
10678
+ * default scheme-matching behavior as domain settings.
10679
+ *
10680
+ * @interface
10681
+ */
10682
+ declare type NonTabInjectionRule = {
10683
+ /**
10684
+ * Array of [match patterns](https://developer.chrome.com/docs/extensions/develop/concepts/match-patterns)
10685
+ * specifying the content locations where the extension may inject outside
10686
+ * browser tabs. An empty array grants no permission. A wildcard grants
10687
+ * blanket coverage of all content locations.
10688
+ */
10689
+ match: string[];
10690
+ /**
10691
+ * Options to use when comparing URIs to the `match` patterns. Behaves as
10692
+ * {@link DomainSettingsRule.matchOptions} / {@link RuleMatchOptions}.
10693
+ */
10694
+ matchOptions?: RuleMatchOptions;
10695
+ };
10696
+
10642
10697
  /* Excluded from this release type: NotCloseRequested */
10643
10698
 
10644
10699
  declare type NotificationEvent = {
@@ -10947,6 +11002,8 @@ declare namespace OpenFin {
10947
11002
  ThemeColorsMap,
10948
11003
  ThemeColorId,
10949
11004
  ThemePalette,
11005
+ NonTabInjectionRule,
11006
+ ManifestExtension,
10950
11007
  Manifest,
10951
11008
  LayoutContent,
10952
11009
  LayoutItemConfig,
@@ -12352,20 +12409,6 @@ declare type PlatformOptions = ApplicationCreationOptions & {
12352
12409
  * @default true
12353
12410
  */
12354
12411
  allowLaunchIntoPlatform?: boolean;
12355
- /**
12356
- * @experimental
12357
- *
12358
- * Creates window chrome before views. `createWindow` resolves when the window exists
12359
- * (`window-created`) instead of waiting for layout creation to finish (`layout-ready`).
12360
- *
12361
- * Views start after the window exists. During `applySnapshot`, every window shell is
12362
- * created first; view creation starts after `platform-snapshot-applied`.
12363
- *
12364
- * Tradeoff: windows appear sooner, but view content and `layout-ready` are delayed.
12365
- *
12366
- * @default false
12367
- */
12368
- deferViewCreation?: boolean;
12369
12412
  };
12370
12413
 
12371
12414
  /**
@@ -7390,17 +7390,19 @@ declare type InteropActionLoggingOption = {
7390
7390
  * "interopBrokerConfiguration": {
7391
7391
  * "contextGroups": [
7392
7392
  * {
7393
- * "id": "green",
7393
+ * "id": "fdc3.channel.4",
7394
7394
  * "displayMetadata": {
7395
- * "color": "#00CC88",
7396
- * "name": "green"
7395
+ * "color": "green",
7396
+ * "name": "Channel 4",
7397
+ * "glyph": "4"
7397
7398
  * }
7398
7399
  * },
7399
7400
  * {
7400
- * "id": "purple",
7401
+ * "id": "fdc3.channel.8",
7401
7402
  * "displayMetadata": {
7402
- * "color": "#8C61FF",
7403
- * "name": "purple"
7403
+ * "color": "purple",
7404
+ * "name": "Channel 8",
7405
+ * "glyph": "8"
7404
7406
  * }
7405
7407
  * },
7406
7408
  * ]
@@ -7534,7 +7536,7 @@ declare class InteropBroker extends Base {
7534
7536
  * @param joinContextGroupOptions - Id of the Context Group and identity of the entity to join to the group.
7535
7537
  * @param senderIdentity - Identity of the client sender.
7536
7538
  */
7537
- joinContextGroup({ contextGroupId, target }: {
7539
+ joinContextGroup({ contextGroupId: requestedContextGroupId, target }: {
7538
7540
  contextGroupId: string;
7539
7541
  target?: OpenFin.ClientIdentity | OpenFin.Identity;
7540
7542
  }, senderIdentity: OpenFin.ClientIdentity): Promise<void>;
@@ -7545,7 +7547,7 @@ declare class InteropBroker extends Base {
7545
7547
  * @param addClientToContextGroupOptions - Contains the contextGroupId
7546
7548
  * @param clientIdentity - Identity of the client sender.
7547
7549
  */
7548
- addClientToContextGroup({ contextGroupId }: {
7550
+ addClientToContextGroup({ contextGroupId: requestedContextGroupId }: {
7549
7551
  contextGroupId: string;
7550
7552
  }, clientIdentity: OpenFin.ClientIdentity): Promise<void>;
7551
7553
  /**
@@ -7958,6 +7960,8 @@ declare class InteropBroker extends Base {
7958
7960
  };
7959
7961
  private getClientState;
7960
7962
  private static toObject;
7963
+ private normalizeContextGroupStates;
7964
+ private normalizeContextGroupId;
7961
7965
  static checkContextIntegrity: (context: OpenFin.Context) => {
7962
7966
  isValid: true;
7963
7967
  } | {
@@ -8185,7 +8189,7 @@ declare class InteropClient extends Base {
8185
8189
  *
8186
8190
  * getLastFocusedView()
8187
8191
  * .then(lastFocusedViewIdentity => {
8188
- * joinViewToContextGroup('red', lastFocusedViewIdentity)
8192
+ * joinViewToContextGroup('fdc3.channel.1', lastFocusedViewIdentity)
8189
8193
  * })
8190
8194
  * ```
8191
8195
  */
@@ -8220,7 +8224,7 @@ declare class InteropClient extends Base {
8220
8224
  *
8221
8225
  * @example
8222
8226
  * ```js
8223
- * fin.me.interop.getAllClientsInContextGroup('red')
8227
+ * fin.me.interop.getAllClientsInContextGroup('fdc3.channel.1')
8224
8228
  * .then(clientsInContextGroup => {
8225
8229
  * console.log(clientsInContextGroup)
8226
8230
  * })
@@ -8235,7 +8239,7 @@ declare class InteropClient extends Base {
8235
8239
  *
8236
8240
  * @example
8237
8241
  * ```js
8238
- * fin.me.interop.getInfoForContextGroup('red')
8242
+ * fin.me.interop.getInfoForContextGroup('fdc3.channel.1')
8239
8243
  * .then(contextGroupInfo => {
8240
8244
  * console.log(contextGroupInfo.displayMetadata.name)
8241
8245
  * console.log(contextGroupInfo.displayMetadata.color)
@@ -8292,12 +8296,12 @@ declare class InteropClient extends Base {
8292
8296
  *
8293
8297
  * @example
8294
8298
  * ```js
8295
- * await fin.me.interop.joinContextGroup('yellow');
8299
+ * await fin.me.interop.joinContextGroup('fdc3.channel.3');
8296
8300
  * await fin.me.interop.setContext({ type: 'instrument', id: { ticker: 'FOO' }});
8297
8301
  * const currentContext = await fin.me.interop.getCurrentContext();
8298
8302
  *
8299
8303
  * // with a specific context
8300
- * await fin.me.interop.joinContextGroup('yellow');
8304
+ * await fin.me.interop.joinContextGroup('fdc3.channel.3');
8301
8305
  * await fin.me.interop.setContext({ type: 'country', id: { ISOALPHA3: 'US' }});
8302
8306
  * await fin.me.interop.setContext({ type: 'instrument', id: { ticker: 'FOO' }});
8303
8307
  * const currentContext = await fin.me.interop.getCurrentContext('country');
@@ -8459,7 +8463,7 @@ declare type InteropClientOnDisconnectionListener = (InteropBrokerDisconnectionE
8459
8463
  */
8460
8464
  declare type InteropConfig = {
8461
8465
  /**
8462
- * Context Group for the client. (green, yellow, red, etc.).
8466
+ * Context Group ID for the client (for example, `fdc3.channel.4`).
8463
8467
  */
8464
8468
  currentContextGroup?: string | null;
8465
8469
  /**
@@ -8508,7 +8512,7 @@ declare class InteropModule extends Base {
8508
8512
  * @example
8509
8513
  * ```js
8510
8514
  * const interopConfig = {
8511
- * currentContextGroup: 'green'
8515
+ * currentContextGroup: 'fdc3.channel.4'
8512
8516
  * }
8513
8517
  *
8514
8518
  * const interopBroker = await fin.Interop.init('openfin');
@@ -9796,6 +9800,10 @@ declare type Manifest = {
9796
9800
  experimentalExtensionPolicyBlockedHosts?: {
9797
9801
  hosts: string[];
9798
9802
  };
9803
+ /**
9804
+ * Chromium extensions to install and enable for this application.
9805
+ */
9806
+ extensions?: ManifestExtension[];
9799
9807
  licenseKey: string;
9800
9808
  offlineAccess?: boolean;
9801
9809
  platform?: PlatformOptions;
@@ -9849,6 +9857,27 @@ declare type ManifestChangedEvent = BaseEvents.IdentityEvent & {
9849
9857
  type: 'manifest-changed';
9850
9858
  };
9851
9859
 
9860
+ /**
9861
+ * Chromium extension entry in an application configuration.
9862
+ *
9863
+ * @interface
9864
+ */
9865
+ declare type ManifestExtension = {
9866
+ /** Chromium extension ID. */
9867
+ id: string;
9868
+ /** Extension server URL used to install the extension. */
9869
+ serverURL: string;
9870
+ /**
9871
+ * Rules declaring where this extension may inject content scripts into
9872
+ * non-tab surfaces (for example the AI Center). Omit or leave empty to keep
9873
+ * the extension restricted to browser tabs — identical to historic
9874
+ * behavior. A wildcard pattern in `match` grants blanket coverage.
9875
+ * `matchOptions` behaves as it does for domain settings. Intended for
9876
+ * security extensions rather than extensions that add visible UI.
9877
+ */
9878
+ nonTabInjections?: NonTabInjectionRule[];
9879
+ };
9880
+
9852
9881
  /**
9853
9882
  * @interface
9854
9883
  */
@@ -10639,6 +10668,32 @@ declare type NonPropagatedWebContentsEvent = never;
10639
10668
  */
10640
10669
  declare type NonPropagatedWindowEvent = never;
10641
10670
 
10671
+ /**
10672
+ * Rule permitting a Chromium extension to inject content scripts into non-tab
10673
+ * web content whose URL matches the given patterns.
10674
+ *
10675
+ * Match patterns use the same Chromium
10676
+ * [match pattern](https://developer.chrome.com/docs/extensions/develop/concepts/match-patterns)
10677
+ * syntax as {@link DomainSettingsRule}. Omitting `matchOptions` uses the same
10678
+ * default scheme-matching behavior as domain settings.
10679
+ *
10680
+ * @interface
10681
+ */
10682
+ declare type NonTabInjectionRule = {
10683
+ /**
10684
+ * Array of [match patterns](https://developer.chrome.com/docs/extensions/develop/concepts/match-patterns)
10685
+ * specifying the content locations where the extension may inject outside
10686
+ * browser tabs. An empty array grants no permission. A wildcard grants
10687
+ * blanket coverage of all content locations.
10688
+ */
10689
+ match: string[];
10690
+ /**
10691
+ * Options to use when comparing URIs to the `match` patterns. Behaves as
10692
+ * {@link DomainSettingsRule.matchOptions} / {@link RuleMatchOptions}.
10693
+ */
10694
+ matchOptions?: RuleMatchOptions;
10695
+ };
10696
+
10642
10697
  /* Excluded from this release type: NotCloseRequested */
10643
10698
 
10644
10699
  declare type NotificationEvent = {
@@ -10947,6 +11002,8 @@ declare namespace OpenFin {
10947
11002
  ThemeColorsMap,
10948
11003
  ThemeColorId,
10949
11004
  ThemePalette,
11005
+ NonTabInjectionRule,
11006
+ ManifestExtension,
10950
11007
  Manifest,
10951
11008
  LayoutContent,
10952
11009
  LayoutItemConfig,
@@ -12352,20 +12409,6 @@ declare type PlatformOptions = ApplicationCreationOptions & {
12352
12409
  * @default true
12353
12410
  */
12354
12411
  allowLaunchIntoPlatform?: boolean;
12355
- /**
12356
- * @experimental
12357
- *
12358
- * Creates window chrome before views. `createWindow` resolves when the window exists
12359
- * (`window-created`) instead of waiting for layout creation to finish (`layout-ready`).
12360
- *
12361
- * Views start after the window exists. During `applySnapshot`, every window shell is
12362
- * created first; view creation starts after `platform-snapshot-applied`.
12363
- *
12364
- * Tradeoff: windows appear sooner, but view content and `layout-ready` are delayed.
12365
- *
12366
- * @default false
12367
- */
12368
- deferViewCreation?: boolean;
12369
12412
  };
12370
12413
 
12371
12414
  /**
package/out/fdc3-api.d.ts CHANGED
@@ -7571,17 +7571,19 @@ declare type InteropActionLoggingOption = {
7571
7571
  * "interopBrokerConfiguration": {
7572
7572
  * "contextGroups": [
7573
7573
  * {
7574
- * "id": "green",
7574
+ * "id": "fdc3.channel.4",
7575
7575
  * "displayMetadata": {
7576
- * "color": "#00CC88",
7577
- * "name": "green"
7576
+ * "color": "green",
7577
+ * "name": "Channel 4",
7578
+ * "glyph": "4"
7578
7579
  * }
7579
7580
  * },
7580
7581
  * {
7581
- * "id": "purple",
7582
+ * "id": "fdc3.channel.8",
7582
7583
  * "displayMetadata": {
7583
- * "color": "#8C61FF",
7584
- * "name": "purple"
7584
+ * "color": "purple",
7585
+ * "name": "Channel 8",
7586
+ * "glyph": "8"
7585
7587
  * }
7586
7588
  * },
7587
7589
  * ]
@@ -7718,7 +7720,7 @@ declare class InteropBroker extends Base {
7718
7720
  * @param joinContextGroupOptions - Id of the Context Group and identity of the entity to join to the group.
7719
7721
  * @param senderIdentity - Identity of the client sender.
7720
7722
  */
7721
- joinContextGroup({ contextGroupId, target }: {
7723
+ joinContextGroup({ contextGroupId: requestedContextGroupId, target }: {
7722
7724
  contextGroupId: string;
7723
7725
  target?: OpenFin.ClientIdentity | OpenFin.Identity;
7724
7726
  }, senderIdentity: OpenFin.ClientIdentity): Promise<void>;
@@ -7729,7 +7731,7 @@ declare class InteropBroker extends Base {
7729
7731
  * @param addClientToContextGroupOptions - Contains the contextGroupId
7730
7732
  * @param clientIdentity - Identity of the client sender.
7731
7733
  */
7732
- addClientToContextGroup({ contextGroupId }: {
7734
+ addClientToContextGroup({ contextGroupId: requestedContextGroupId }: {
7733
7735
  contextGroupId: string;
7734
7736
  }, clientIdentity: OpenFin.ClientIdentity): Promise<void>;
7735
7737
  /**
@@ -8142,6 +8144,8 @@ declare class InteropBroker extends Base {
8142
8144
  };
8143
8145
  private getClientState;
8144
8146
  private static toObject;
8147
+ private normalizeContextGroupStates;
8148
+ private normalizeContextGroupId;
8145
8149
  static checkContextIntegrity: (context: OpenFin.Context) => {
8146
8150
  isValid: true;
8147
8151
  } | {
@@ -8372,7 +8376,7 @@ declare class InteropClient extends Base {
8372
8376
  *
8373
8377
  * getLastFocusedView()
8374
8378
  * .then(lastFocusedViewIdentity => {
8375
- * joinViewToContextGroup('red', lastFocusedViewIdentity)
8379
+ * joinViewToContextGroup('fdc3.channel.1', lastFocusedViewIdentity)
8376
8380
  * })
8377
8381
  * ```
8378
8382
  */
@@ -8407,7 +8411,7 @@ declare class InteropClient extends Base {
8407
8411
  *
8408
8412
  * @example
8409
8413
  * ```js
8410
- * fin.me.interop.getAllClientsInContextGroup('red')
8414
+ * fin.me.interop.getAllClientsInContextGroup('fdc3.channel.1')
8411
8415
  * .then(clientsInContextGroup => {
8412
8416
  * console.log(clientsInContextGroup)
8413
8417
  * })
@@ -8422,7 +8426,7 @@ declare class InteropClient extends Base {
8422
8426
  *
8423
8427
  * @example
8424
8428
  * ```js
8425
- * fin.me.interop.getInfoForContextGroup('red')
8429
+ * fin.me.interop.getInfoForContextGroup('fdc3.channel.1')
8426
8430
  * .then(contextGroupInfo => {
8427
8431
  * console.log(contextGroupInfo.displayMetadata.name)
8428
8432
  * console.log(contextGroupInfo.displayMetadata.color)
@@ -8479,12 +8483,12 @@ declare class InteropClient extends Base {
8479
8483
  *
8480
8484
  * @example
8481
8485
  * ```js
8482
- * await fin.me.interop.joinContextGroup('yellow');
8486
+ * await fin.me.interop.joinContextGroup('fdc3.channel.3');
8483
8487
  * await fin.me.interop.setContext({ type: 'instrument', id: { ticker: 'FOO' }});
8484
8488
  * const currentContext = await fin.me.interop.getCurrentContext();
8485
8489
  *
8486
8490
  * // with a specific context
8487
- * await fin.me.interop.joinContextGroup('yellow');
8491
+ * await fin.me.interop.joinContextGroup('fdc3.channel.3');
8488
8492
  * await fin.me.interop.setContext({ type: 'country', id: { ISOALPHA3: 'US' }});
8489
8493
  * await fin.me.interop.setContext({ type: 'instrument', id: { ticker: 'FOO' }});
8490
8494
  * const currentContext = await fin.me.interop.getCurrentContext('country');
@@ -8651,7 +8655,7 @@ declare type InteropClientOnDisconnectionListener = (InteropBrokerDisconnectionE
8651
8655
  */
8652
8656
  declare type InteropConfig = {
8653
8657
  /**
8654
- * Context Group for the client. (green, yellow, red, etc.).
8658
+ * Context Group ID for the client (for example, `fdc3.channel.4`).
8655
8659
  */
8656
8660
  currentContextGroup?: string | null;
8657
8661
  /**
@@ -8700,7 +8704,7 @@ declare class InteropModule extends Base {
8700
8704
  * @example
8701
8705
  * ```js
8702
8706
  * const interopConfig = {
8703
- * currentContextGroup: 'green'
8707
+ * currentContextGroup: 'fdc3.channel.4'
8704
8708
  * }
8705
8709
  *
8706
8710
  * const interopBroker = await fin.Interop.init('openfin');
@@ -10180,6 +10184,10 @@ declare type Manifest = {
10180
10184
  experimentalExtensionPolicyBlockedHosts?: {
10181
10185
  hosts: string[];
10182
10186
  };
10187
+ /**
10188
+ * Chromium extensions to install and enable for this application.
10189
+ */
10190
+ extensions?: ManifestExtension[];
10183
10191
  licenseKey: string;
10184
10192
  offlineAccess?: boolean;
10185
10193
  platform?: PlatformOptions;
@@ -10233,6 +10241,27 @@ declare type ManifestChangedEvent = BaseEvents.IdentityEvent & {
10233
10241
  type: 'manifest-changed';
10234
10242
  };
10235
10243
 
10244
+ /**
10245
+ * Chromium extension entry in an application configuration.
10246
+ *
10247
+ * @interface
10248
+ */
10249
+ declare type ManifestExtension = {
10250
+ /** Chromium extension ID. */
10251
+ id: string;
10252
+ /** Extension server URL used to install the extension. */
10253
+ serverURL: string;
10254
+ /**
10255
+ * Rules declaring where this extension may inject content scripts into
10256
+ * non-tab surfaces (for example the AI Center). Omit or leave empty to keep
10257
+ * the extension restricted to browser tabs — identical to historic
10258
+ * behavior. A wildcard pattern in `match` grants blanket coverage.
10259
+ * `matchOptions` behaves as it does for domain settings. Intended for
10260
+ * security extensions rather than extensions that add visible UI.
10261
+ */
10262
+ nonTabInjections?: NonTabInjectionRule[];
10263
+ };
10264
+
10236
10265
  /**
10237
10266
  * @interface
10238
10267
  */
@@ -11035,6 +11064,32 @@ declare type NonPropagatedWebContentsEvent = never;
11035
11064
  */
11036
11065
  declare type NonPropagatedWindowEvent = never;
11037
11066
 
11067
+ /**
11068
+ * Rule permitting a Chromium extension to inject content scripts into non-tab
11069
+ * web content whose URL matches the given patterns.
11070
+ *
11071
+ * Match patterns use the same Chromium
11072
+ * [match pattern](https://developer.chrome.com/docs/extensions/develop/concepts/match-patterns)
11073
+ * syntax as {@link DomainSettingsRule}. Omitting `matchOptions` uses the same
11074
+ * default scheme-matching behavior as domain settings.
11075
+ *
11076
+ * @interface
11077
+ */
11078
+ declare type NonTabInjectionRule = {
11079
+ /**
11080
+ * Array of [match patterns](https://developer.chrome.com/docs/extensions/develop/concepts/match-patterns)
11081
+ * specifying the content locations where the extension may inject outside
11082
+ * browser tabs. An empty array grants no permission. A wildcard grants
11083
+ * blanket coverage of all content locations.
11084
+ */
11085
+ match: string[];
11086
+ /**
11087
+ * Options to use when comparing URIs to the `match` patterns. Behaves as
11088
+ * {@link DomainSettingsRule.matchOptions} / {@link RuleMatchOptions}.
11089
+ */
11090
+ matchOptions?: RuleMatchOptions;
11091
+ };
11092
+
11038
11093
  /**
11039
11094
  * @internal
11040
11095
  *
@@ -11356,6 +11411,8 @@ declare namespace OpenFin {
11356
11411
  ThemeColorsMap,
11357
11412
  ThemeColorId,
11358
11413
  ThemePalette,
11414
+ NonTabInjectionRule,
11415
+ ManifestExtension,
11359
11416
  Manifest,
11360
11417
  LayoutContent,
11361
11418
  LayoutItemConfig,
@@ -12799,20 +12856,6 @@ declare type PlatformOptions = ApplicationCreationOptions & {
12799
12856
  * @default true
12800
12857
  */
12801
12858
  allowLaunchIntoPlatform?: boolean;
12802
- /**
12803
- * @experimental
12804
- *
12805
- * Creates window chrome before views. `createWindow` resolves when the window exists
12806
- * (`window-created`) instead of waiting for layout creation to finish (`layout-ready`).
12807
- *
12808
- * Views start after the window exists. During `applySnapshot`, every window shell is
12809
- * created first; view creation starts after `platform-snapshot-applied`.
12810
- *
12811
- * Tradeoff: windows appear sooner, but view content and `layout-ready` are delayed.
12812
- *
12813
- * @default false
12814
- */
12815
- deferViewCreation?: boolean;
12816
12859
  };
12817
12860
 
12818
12861
  /**
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": "46.100.65",
3
+ "version": "46.100.67",
4
4
  "description": "OpenFin fdc3 module utilities and types.",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "private": false,