@openfin/cloud-api 10.0.0-beta.6 → 10.0.0-beta.8
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/dist/index.d.cts +37 -37
- package/dist/index.d.ts +37 -37
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.d.cts
CHANGED
|
@@ -298,16 +298,16 @@ declare function launchSupertab(id: string): Promise<void>;
|
|
|
298
298
|
declare function launchWorkspace(id: string): Promise<void>;
|
|
299
299
|
|
|
300
300
|
/**
|
|
301
|
-
* Function that is called when the Search Agent receives an action from
|
|
301
|
+
* Function that is called when the Search Agent receives an action from HERE's search UI that has been triggered by the user on one of the Agent's search results.
|
|
302
302
|
*
|
|
303
303
|
* @param action The action that was triggered.
|
|
304
304
|
* @param result The search result that the action was triggered on.
|
|
305
305
|
*
|
|
306
|
-
* @returns Result that includes the URL that
|
|
306
|
+
* @returns Result that includes the URL that HERE should navigate to, or `undefined` if no navigation is required.
|
|
307
307
|
*/
|
|
308
308
|
type OnActionListener = (action: SearchAction$1, result: SearchResult$1) => SearchResultActionResponse$1 | Promise<SearchResultActionResponse$1>;
|
|
309
309
|
/**
|
|
310
|
-
* Function that is called when the Search Agent receives a query from
|
|
310
|
+
* Function that is called when the Search Agent receives a query from HERE's search UI
|
|
311
311
|
*
|
|
312
312
|
* @param request Search request data that includes the query.
|
|
313
313
|
*
|
|
@@ -317,19 +317,19 @@ type OnSearchListener = (request: SearchListenerRequest$1) => SearchResponse$1 |
|
|
|
317
317
|
/**
|
|
318
318
|
* An action that can be triggered by a user on a search result returned by a Search Agent.
|
|
319
319
|
*
|
|
320
|
-
* Actions are displayed as buttons alongside search results in
|
|
320
|
+
* Actions are displayed as buttons alongside search results in HERE's search UI. That is, except for the first action, which is hidden as it is triggered automatically when the user selects the search result.
|
|
321
321
|
*/
|
|
322
322
|
type SearchAction$1 = {
|
|
323
323
|
/**
|
|
324
|
-
* URL or data URI of an icon that will be displayed within the action button when
|
|
324
|
+
* URL or data URI of an icon that will be displayed within the action button when HERE is in Light mode.
|
|
325
325
|
*/
|
|
326
326
|
darkIcon?: string;
|
|
327
327
|
/**
|
|
328
|
-
* A fuller description of the action that will be displayed in
|
|
328
|
+
* A fuller description of the action that will be displayed in HERE's search UI when the user hovers over the action button.
|
|
329
329
|
*/
|
|
330
330
|
description?: string;
|
|
331
331
|
/**
|
|
332
|
-
* URL or data URI of an icon that will be displayed within the action button when
|
|
332
|
+
* URL or data URI of an icon that will be displayed within the action button when HERE is in Dark mode.
|
|
333
333
|
*/
|
|
334
334
|
lightIcon?: string;
|
|
335
335
|
/**
|
|
@@ -342,7 +342,7 @@ type SearchAction$1 = {
|
|
|
342
342
|
title?: string;
|
|
343
343
|
};
|
|
344
344
|
/**
|
|
345
|
-
* A Search Agent returns search results to
|
|
345
|
+
* A Search Agent returns search results to HERE's search UI in response to user input, and acts on the user's actions regarding those results.
|
|
346
346
|
*
|
|
347
347
|
* @deprecated Use {@link Agent} instead.
|
|
348
348
|
*/
|
|
@@ -359,7 +359,7 @@ type SearchAgent = {
|
|
|
359
359
|
isReady: (ready?: boolean) => Promise<void>;
|
|
360
360
|
};
|
|
361
361
|
/**
|
|
362
|
-
* The Search Agent
|
|
362
|
+
* The Search Agent's configuration data as configured in the HERE Admin Console.
|
|
363
363
|
*
|
|
364
364
|
* @typeParam T Type definition for the `customData` property, containing any custom configuration data specific to the Search Agent.
|
|
365
365
|
*/
|
|
@@ -390,13 +390,13 @@ type SearchAgentConfigurationData<T> = {
|
|
|
390
390
|
*/
|
|
391
391
|
type SearchAgentRegistrationConfig = {
|
|
392
392
|
/**
|
|
393
|
-
* This listener is called when the Search Agent receives an action from
|
|
393
|
+
* This listener is called when the Search Agent receives an action from HERE's search UI that has been triggered by the user on one of the Agent's search results.
|
|
394
394
|
*
|
|
395
|
-
* The listener returns a response back to
|
|
395
|
+
* The listener returns a response back to HERE that includes a URL to navigate to.
|
|
396
396
|
*/
|
|
397
397
|
onAction: OnActionListener;
|
|
398
398
|
/**
|
|
399
|
-
* This listener is called when the Search Agent receives a query from
|
|
399
|
+
* This listener is called when the Search Agent receives a query from HERE's search UI and returns relevant search results.
|
|
400
400
|
*
|
|
401
401
|
* Note: When the Search Agent is not ready this listener will not be called.
|
|
402
402
|
*/
|
|
@@ -411,7 +411,7 @@ type SearchListenerRequest$1 = {
|
|
|
411
411
|
*/
|
|
412
412
|
context: SearchRequestContext$1;
|
|
413
413
|
/**
|
|
414
|
-
* The query entered by the user in
|
|
414
|
+
* The query entered by the user in HERE's search UI.
|
|
415
415
|
*/
|
|
416
416
|
query: string;
|
|
417
417
|
/**
|
|
@@ -441,7 +441,7 @@ type SearchRequestContext$1 = {
|
|
|
441
441
|
*/
|
|
442
442
|
type SearchResponse$1 = {
|
|
443
443
|
/**
|
|
444
|
-
* The search results to display in
|
|
444
|
+
* The search results to display in HERE's search UI.
|
|
445
445
|
*/
|
|
446
446
|
results: SearchResult$1[];
|
|
447
447
|
};
|
|
@@ -458,7 +458,7 @@ type SearchResult$1 = {
|
|
|
458
458
|
*/
|
|
459
459
|
data?: Record<string, unknown>;
|
|
460
460
|
/**
|
|
461
|
-
* URL or data URI of an icon that will be displayed with the search result in
|
|
461
|
+
* URL or data URI of an icon that will be displayed with the search result in HERE's search UI.
|
|
462
462
|
*/
|
|
463
463
|
icon?: string;
|
|
464
464
|
/**
|
|
@@ -466,11 +466,11 @@ type SearchResult$1 = {
|
|
|
466
466
|
*/
|
|
467
467
|
key: string;
|
|
468
468
|
/**
|
|
469
|
-
* Secondary text that will be displayed with the search result in
|
|
469
|
+
* Secondary text that will be displayed with the search result in HERE's search UI.
|
|
470
470
|
*/
|
|
471
471
|
label?: string;
|
|
472
472
|
/**
|
|
473
|
-
* Primary text that will be displayed with the search result in
|
|
473
|
+
* Primary text that will be displayed with the search result in HERE's search UI.
|
|
474
474
|
*/
|
|
475
475
|
title: string;
|
|
476
476
|
};
|
|
@@ -479,13 +479,13 @@ type SearchResult$1 = {
|
|
|
479
479
|
*/
|
|
480
480
|
type SearchResultActionResponse$1 = {
|
|
481
481
|
/**
|
|
482
|
-
* URL that
|
|
482
|
+
* URL that HERE should navigate to.
|
|
483
483
|
*/
|
|
484
484
|
url: string;
|
|
485
485
|
} | undefined;
|
|
486
486
|
|
|
487
487
|
/**
|
|
488
|
-
* Retrieves the Search Agent
|
|
488
|
+
* Retrieves the Search Agent's configuration data, as has been configured in the HERE Admin Console.
|
|
489
489
|
*
|
|
490
490
|
* @returns A promise that resolves with an object containing properties that match the Search Agent’s configuration.
|
|
491
491
|
*
|
|
@@ -507,7 +507,7 @@ type SearchResultActionResponse$1 = {
|
|
|
507
507
|
*/
|
|
508
508
|
declare function getAgentConfiguration<T extends object>(): Promise<SearchAgentConfigurationData<T>>;
|
|
509
509
|
/**
|
|
510
|
-
* Registers a Search Agent that will provide search results to
|
|
510
|
+
* Registers a Search Agent that will provide search results to HERE's search UI in response to user input and act on the user's actions regarding those results.
|
|
511
511
|
*
|
|
512
512
|
* @param config The configuration for the Search Agent.
|
|
513
513
|
*
|
|
@@ -603,16 +603,16 @@ declare namespace index$1 {
|
|
|
603
603
|
}
|
|
604
604
|
|
|
605
605
|
/**
|
|
606
|
-
* Function that is called when the Agent receives an action from
|
|
606
|
+
* Function that is called when the Agent receives an action from HERE's search UI that has been triggered by the user on one of the Agent's search results.
|
|
607
607
|
*
|
|
608
608
|
* @param action The action that was triggered.
|
|
609
609
|
* @param result The search result that the action was triggered on.
|
|
610
610
|
*
|
|
611
|
-
* @returns Result that includes the URL that
|
|
611
|
+
* @returns Result that includes the URL that HERE should navigate to, or `undefined` if no navigation is required.
|
|
612
612
|
*/
|
|
613
613
|
type OnSearchActionListener = (action: SearchAction, result: SearchResult) => SearchResultActionResponse | Promise<SearchResultActionResponse>;
|
|
614
614
|
/**
|
|
615
|
-
* Function that is called when the Agent receives a query from
|
|
615
|
+
* Function that is called when the Agent receives a query from HERE's search UI
|
|
616
616
|
*
|
|
617
617
|
* @param request Search request data that includes the query.
|
|
618
618
|
*
|
|
@@ -622,19 +622,19 @@ type OnSearchRequestListener = (request: SearchListenerRequest) => SearchRespons
|
|
|
622
622
|
/**
|
|
623
623
|
* An action that can be triggered by a user on a search result returned by a Agent.
|
|
624
624
|
*
|
|
625
|
-
* Actions are displayed as buttons alongside search results in
|
|
625
|
+
* Actions are displayed as buttons alongside search results in HERE's search UI. That is, except for the first action, which is hidden as it is triggered automatically when the user selects the search result.
|
|
626
626
|
*/
|
|
627
627
|
type SearchAction = {
|
|
628
628
|
/**
|
|
629
|
-
* URL or data URI of an icon that will be displayed within the action button when
|
|
629
|
+
* URL or data URI of an icon that will be displayed within the action button when HERE is in Light mode.
|
|
630
630
|
*/
|
|
631
631
|
darkIcon?: string;
|
|
632
632
|
/**
|
|
633
|
-
* A fuller description of the action that will be displayed in
|
|
633
|
+
* A fuller description of the action that will be displayed in HERE's search UI when the user hovers over the action button.
|
|
634
634
|
*/
|
|
635
635
|
description?: string;
|
|
636
636
|
/**
|
|
637
|
-
* URL or data URI of an icon that will be displayed within the action button when
|
|
637
|
+
* URL or data URI of an icon that will be displayed within the action button when HERE is in Dark mode.
|
|
638
638
|
*/
|
|
639
639
|
lightIcon?: string;
|
|
640
640
|
/**
|
|
@@ -655,7 +655,7 @@ type SearchListenerRequest = {
|
|
|
655
655
|
*/
|
|
656
656
|
context: SearchRequestContext;
|
|
657
657
|
/**
|
|
658
|
-
* The query entered by the user in
|
|
658
|
+
* The query entered by the user in HERE's search UI.
|
|
659
659
|
*/
|
|
660
660
|
query: string;
|
|
661
661
|
/**
|
|
@@ -697,7 +697,7 @@ type SearchRequestContext = {
|
|
|
697
697
|
*/
|
|
698
698
|
type SearchResponse = {
|
|
699
699
|
/**
|
|
700
|
-
* The search results to display in
|
|
700
|
+
* The search results to display in HERE's search UI.
|
|
701
701
|
*/
|
|
702
702
|
results: SearchResult[];
|
|
703
703
|
};
|
|
@@ -714,7 +714,7 @@ type SearchResult = {
|
|
|
714
714
|
*/
|
|
715
715
|
data?: Record<string, unknown>;
|
|
716
716
|
/**
|
|
717
|
-
* URL or data URI of an icon that will be displayed with the search result in
|
|
717
|
+
* URL or data URI of an icon that will be displayed with the search result in HERE's search UI.
|
|
718
718
|
*/
|
|
719
719
|
icon?: string;
|
|
720
720
|
/**
|
|
@@ -722,11 +722,11 @@ type SearchResult = {
|
|
|
722
722
|
*/
|
|
723
723
|
key: string;
|
|
724
724
|
/**
|
|
725
|
-
* Secondary text that will be displayed with the search result in
|
|
725
|
+
* Secondary text that will be displayed with the search result in HERE's search UI.
|
|
726
726
|
*/
|
|
727
727
|
label?: string;
|
|
728
728
|
/**
|
|
729
|
-
* Primary text that will be displayed with the search result in
|
|
729
|
+
* Primary text that will be displayed with the search result in HERE's search UI.
|
|
730
730
|
*/
|
|
731
731
|
title: string;
|
|
732
732
|
};
|
|
@@ -735,7 +735,7 @@ type SearchResult = {
|
|
|
735
735
|
*/
|
|
736
736
|
type SearchResultActionResponse = {
|
|
737
737
|
/**
|
|
738
|
-
* URL that
|
|
738
|
+
* URL that HERE should navigate to.
|
|
739
739
|
*/
|
|
740
740
|
url: string;
|
|
741
741
|
} | undefined;
|
|
@@ -780,13 +780,13 @@ type AgentRegistrationConfig = {
|
|
|
780
780
|
*/
|
|
781
781
|
search?: {
|
|
782
782
|
/**
|
|
783
|
-
* This listener is called when the Agent receives an action from
|
|
783
|
+
* This listener is called when the Agent receives an action from HERE's search UI that has been triggered by the user on one of the Agent's search results.
|
|
784
784
|
*
|
|
785
|
-
* The listener returns a response back to
|
|
785
|
+
* The listener returns a response back to HERE that includes a URL to navigate to.
|
|
786
786
|
*/
|
|
787
787
|
onAction: OnSearchActionListener;
|
|
788
788
|
/**
|
|
789
|
-
* This listener is called when the Agent receives a query from
|
|
789
|
+
* This listener is called when the Agent receives a query from HERE's search UI and returns relevant search results.
|
|
790
790
|
*
|
|
791
791
|
* Note: When the Agent is not ready this listener will not be called.
|
|
792
792
|
*/
|
|
@@ -807,7 +807,7 @@ type AgentSearchFilter = {
|
|
|
807
807
|
type InteropColorChannel = 'blue' | 'indigo' | 'pink' | 'teal' | 'green' | 'orange' | 'red' | 'yellow' | 'gray' | 'none';
|
|
808
808
|
|
|
809
809
|
/**
|
|
810
|
-
* Retrieves the Agent
|
|
810
|
+
* Retrieves the Agent's configuration data, as has been configured in the HERE Admin Console.
|
|
811
811
|
*
|
|
812
812
|
* @returns A promise that resolves with an object containing properties that match the Agent’s configuration.
|
|
813
813
|
*
|
package/dist/index.d.ts
CHANGED
|
@@ -298,16 +298,16 @@ declare function launchSupertab(id: string): Promise<void>;
|
|
|
298
298
|
declare function launchWorkspace(id: string): Promise<void>;
|
|
299
299
|
|
|
300
300
|
/**
|
|
301
|
-
* Function that is called when the Search Agent receives an action from
|
|
301
|
+
* Function that is called when the Search Agent receives an action from HERE's search UI that has been triggered by the user on one of the Agent's search results.
|
|
302
302
|
*
|
|
303
303
|
* @param action The action that was triggered.
|
|
304
304
|
* @param result The search result that the action was triggered on.
|
|
305
305
|
*
|
|
306
|
-
* @returns Result that includes the URL that
|
|
306
|
+
* @returns Result that includes the URL that HERE should navigate to, or `undefined` if no navigation is required.
|
|
307
307
|
*/
|
|
308
308
|
type OnActionListener = (action: SearchAction$1, result: SearchResult$1) => SearchResultActionResponse$1 | Promise<SearchResultActionResponse$1>;
|
|
309
309
|
/**
|
|
310
|
-
* Function that is called when the Search Agent receives a query from
|
|
310
|
+
* Function that is called when the Search Agent receives a query from HERE's search UI
|
|
311
311
|
*
|
|
312
312
|
* @param request Search request data that includes the query.
|
|
313
313
|
*
|
|
@@ -317,19 +317,19 @@ type OnSearchListener = (request: SearchListenerRequest$1) => SearchResponse$1 |
|
|
|
317
317
|
/**
|
|
318
318
|
* An action that can be triggered by a user on a search result returned by a Search Agent.
|
|
319
319
|
*
|
|
320
|
-
* Actions are displayed as buttons alongside search results in
|
|
320
|
+
* Actions are displayed as buttons alongside search results in HERE's search UI. That is, except for the first action, which is hidden as it is triggered automatically when the user selects the search result.
|
|
321
321
|
*/
|
|
322
322
|
type SearchAction$1 = {
|
|
323
323
|
/**
|
|
324
|
-
* URL or data URI of an icon that will be displayed within the action button when
|
|
324
|
+
* URL or data URI of an icon that will be displayed within the action button when HERE is in Light mode.
|
|
325
325
|
*/
|
|
326
326
|
darkIcon?: string;
|
|
327
327
|
/**
|
|
328
|
-
* A fuller description of the action that will be displayed in
|
|
328
|
+
* A fuller description of the action that will be displayed in HERE's search UI when the user hovers over the action button.
|
|
329
329
|
*/
|
|
330
330
|
description?: string;
|
|
331
331
|
/**
|
|
332
|
-
* URL or data URI of an icon that will be displayed within the action button when
|
|
332
|
+
* URL or data URI of an icon that will be displayed within the action button when HERE is in Dark mode.
|
|
333
333
|
*/
|
|
334
334
|
lightIcon?: string;
|
|
335
335
|
/**
|
|
@@ -342,7 +342,7 @@ type SearchAction$1 = {
|
|
|
342
342
|
title?: string;
|
|
343
343
|
};
|
|
344
344
|
/**
|
|
345
|
-
* A Search Agent returns search results to
|
|
345
|
+
* A Search Agent returns search results to HERE's search UI in response to user input, and acts on the user's actions regarding those results.
|
|
346
346
|
*
|
|
347
347
|
* @deprecated Use {@link Agent} instead.
|
|
348
348
|
*/
|
|
@@ -359,7 +359,7 @@ type SearchAgent = {
|
|
|
359
359
|
isReady: (ready?: boolean) => Promise<void>;
|
|
360
360
|
};
|
|
361
361
|
/**
|
|
362
|
-
* The Search Agent
|
|
362
|
+
* The Search Agent's configuration data as configured in the HERE Admin Console.
|
|
363
363
|
*
|
|
364
364
|
* @typeParam T Type definition for the `customData` property, containing any custom configuration data specific to the Search Agent.
|
|
365
365
|
*/
|
|
@@ -390,13 +390,13 @@ type SearchAgentConfigurationData<T> = {
|
|
|
390
390
|
*/
|
|
391
391
|
type SearchAgentRegistrationConfig = {
|
|
392
392
|
/**
|
|
393
|
-
* This listener is called when the Search Agent receives an action from
|
|
393
|
+
* This listener is called when the Search Agent receives an action from HERE's search UI that has been triggered by the user on one of the Agent's search results.
|
|
394
394
|
*
|
|
395
|
-
* The listener returns a response back to
|
|
395
|
+
* The listener returns a response back to HERE that includes a URL to navigate to.
|
|
396
396
|
*/
|
|
397
397
|
onAction: OnActionListener;
|
|
398
398
|
/**
|
|
399
|
-
* This listener is called when the Search Agent receives a query from
|
|
399
|
+
* This listener is called when the Search Agent receives a query from HERE's search UI and returns relevant search results.
|
|
400
400
|
*
|
|
401
401
|
* Note: When the Search Agent is not ready this listener will not be called.
|
|
402
402
|
*/
|
|
@@ -411,7 +411,7 @@ type SearchListenerRequest$1 = {
|
|
|
411
411
|
*/
|
|
412
412
|
context: SearchRequestContext$1;
|
|
413
413
|
/**
|
|
414
|
-
* The query entered by the user in
|
|
414
|
+
* The query entered by the user in HERE's search UI.
|
|
415
415
|
*/
|
|
416
416
|
query: string;
|
|
417
417
|
/**
|
|
@@ -441,7 +441,7 @@ type SearchRequestContext$1 = {
|
|
|
441
441
|
*/
|
|
442
442
|
type SearchResponse$1 = {
|
|
443
443
|
/**
|
|
444
|
-
* The search results to display in
|
|
444
|
+
* The search results to display in HERE's search UI.
|
|
445
445
|
*/
|
|
446
446
|
results: SearchResult$1[];
|
|
447
447
|
};
|
|
@@ -458,7 +458,7 @@ type SearchResult$1 = {
|
|
|
458
458
|
*/
|
|
459
459
|
data?: Record<string, unknown>;
|
|
460
460
|
/**
|
|
461
|
-
* URL or data URI of an icon that will be displayed with the search result in
|
|
461
|
+
* URL or data URI of an icon that will be displayed with the search result in HERE's search UI.
|
|
462
462
|
*/
|
|
463
463
|
icon?: string;
|
|
464
464
|
/**
|
|
@@ -466,11 +466,11 @@ type SearchResult$1 = {
|
|
|
466
466
|
*/
|
|
467
467
|
key: string;
|
|
468
468
|
/**
|
|
469
|
-
* Secondary text that will be displayed with the search result in
|
|
469
|
+
* Secondary text that will be displayed with the search result in HERE's search UI.
|
|
470
470
|
*/
|
|
471
471
|
label?: string;
|
|
472
472
|
/**
|
|
473
|
-
* Primary text that will be displayed with the search result in
|
|
473
|
+
* Primary text that will be displayed with the search result in HERE's search UI.
|
|
474
474
|
*/
|
|
475
475
|
title: string;
|
|
476
476
|
};
|
|
@@ -479,13 +479,13 @@ type SearchResult$1 = {
|
|
|
479
479
|
*/
|
|
480
480
|
type SearchResultActionResponse$1 = {
|
|
481
481
|
/**
|
|
482
|
-
* URL that
|
|
482
|
+
* URL that HERE should navigate to.
|
|
483
483
|
*/
|
|
484
484
|
url: string;
|
|
485
485
|
} | undefined;
|
|
486
486
|
|
|
487
487
|
/**
|
|
488
|
-
* Retrieves the Search Agent
|
|
488
|
+
* Retrieves the Search Agent's configuration data, as has been configured in the HERE Admin Console.
|
|
489
489
|
*
|
|
490
490
|
* @returns A promise that resolves with an object containing properties that match the Search Agent’s configuration.
|
|
491
491
|
*
|
|
@@ -507,7 +507,7 @@ type SearchResultActionResponse$1 = {
|
|
|
507
507
|
*/
|
|
508
508
|
declare function getAgentConfiguration<T extends object>(): Promise<SearchAgentConfigurationData<T>>;
|
|
509
509
|
/**
|
|
510
|
-
* Registers a Search Agent that will provide search results to
|
|
510
|
+
* Registers a Search Agent that will provide search results to HERE's search UI in response to user input and act on the user's actions regarding those results.
|
|
511
511
|
*
|
|
512
512
|
* @param config The configuration for the Search Agent.
|
|
513
513
|
*
|
|
@@ -603,16 +603,16 @@ declare namespace index$1 {
|
|
|
603
603
|
}
|
|
604
604
|
|
|
605
605
|
/**
|
|
606
|
-
* Function that is called when the Agent receives an action from
|
|
606
|
+
* Function that is called when the Agent receives an action from HERE's search UI that has been triggered by the user on one of the Agent's search results.
|
|
607
607
|
*
|
|
608
608
|
* @param action The action that was triggered.
|
|
609
609
|
* @param result The search result that the action was triggered on.
|
|
610
610
|
*
|
|
611
|
-
* @returns Result that includes the URL that
|
|
611
|
+
* @returns Result that includes the URL that HERE should navigate to, or `undefined` if no navigation is required.
|
|
612
612
|
*/
|
|
613
613
|
type OnSearchActionListener = (action: SearchAction, result: SearchResult) => SearchResultActionResponse | Promise<SearchResultActionResponse>;
|
|
614
614
|
/**
|
|
615
|
-
* Function that is called when the Agent receives a query from
|
|
615
|
+
* Function that is called when the Agent receives a query from HERE's search UI
|
|
616
616
|
*
|
|
617
617
|
* @param request Search request data that includes the query.
|
|
618
618
|
*
|
|
@@ -622,19 +622,19 @@ type OnSearchRequestListener = (request: SearchListenerRequest) => SearchRespons
|
|
|
622
622
|
/**
|
|
623
623
|
* An action that can be triggered by a user on a search result returned by a Agent.
|
|
624
624
|
*
|
|
625
|
-
* Actions are displayed as buttons alongside search results in
|
|
625
|
+
* Actions are displayed as buttons alongside search results in HERE's search UI. That is, except for the first action, which is hidden as it is triggered automatically when the user selects the search result.
|
|
626
626
|
*/
|
|
627
627
|
type SearchAction = {
|
|
628
628
|
/**
|
|
629
|
-
* URL or data URI of an icon that will be displayed within the action button when
|
|
629
|
+
* URL or data URI of an icon that will be displayed within the action button when HERE is in Light mode.
|
|
630
630
|
*/
|
|
631
631
|
darkIcon?: string;
|
|
632
632
|
/**
|
|
633
|
-
* A fuller description of the action that will be displayed in
|
|
633
|
+
* A fuller description of the action that will be displayed in HERE's search UI when the user hovers over the action button.
|
|
634
634
|
*/
|
|
635
635
|
description?: string;
|
|
636
636
|
/**
|
|
637
|
-
* URL or data URI of an icon that will be displayed within the action button when
|
|
637
|
+
* URL or data URI of an icon that will be displayed within the action button when HERE is in Dark mode.
|
|
638
638
|
*/
|
|
639
639
|
lightIcon?: string;
|
|
640
640
|
/**
|
|
@@ -655,7 +655,7 @@ type SearchListenerRequest = {
|
|
|
655
655
|
*/
|
|
656
656
|
context: SearchRequestContext;
|
|
657
657
|
/**
|
|
658
|
-
* The query entered by the user in
|
|
658
|
+
* The query entered by the user in HERE's search UI.
|
|
659
659
|
*/
|
|
660
660
|
query: string;
|
|
661
661
|
/**
|
|
@@ -697,7 +697,7 @@ type SearchRequestContext = {
|
|
|
697
697
|
*/
|
|
698
698
|
type SearchResponse = {
|
|
699
699
|
/**
|
|
700
|
-
* The search results to display in
|
|
700
|
+
* The search results to display in HERE's search UI.
|
|
701
701
|
*/
|
|
702
702
|
results: SearchResult[];
|
|
703
703
|
};
|
|
@@ -714,7 +714,7 @@ type SearchResult = {
|
|
|
714
714
|
*/
|
|
715
715
|
data?: Record<string, unknown>;
|
|
716
716
|
/**
|
|
717
|
-
* URL or data URI of an icon that will be displayed with the search result in
|
|
717
|
+
* URL or data URI of an icon that will be displayed with the search result in HERE's search UI.
|
|
718
718
|
*/
|
|
719
719
|
icon?: string;
|
|
720
720
|
/**
|
|
@@ -722,11 +722,11 @@ type SearchResult = {
|
|
|
722
722
|
*/
|
|
723
723
|
key: string;
|
|
724
724
|
/**
|
|
725
|
-
* Secondary text that will be displayed with the search result in
|
|
725
|
+
* Secondary text that will be displayed with the search result in HERE's search UI.
|
|
726
726
|
*/
|
|
727
727
|
label?: string;
|
|
728
728
|
/**
|
|
729
|
-
* Primary text that will be displayed with the search result in
|
|
729
|
+
* Primary text that will be displayed with the search result in HERE's search UI.
|
|
730
730
|
*/
|
|
731
731
|
title: string;
|
|
732
732
|
};
|
|
@@ -735,7 +735,7 @@ type SearchResult = {
|
|
|
735
735
|
*/
|
|
736
736
|
type SearchResultActionResponse = {
|
|
737
737
|
/**
|
|
738
|
-
* URL that
|
|
738
|
+
* URL that HERE should navigate to.
|
|
739
739
|
*/
|
|
740
740
|
url: string;
|
|
741
741
|
} | undefined;
|
|
@@ -780,13 +780,13 @@ type AgentRegistrationConfig = {
|
|
|
780
780
|
*/
|
|
781
781
|
search?: {
|
|
782
782
|
/**
|
|
783
|
-
* This listener is called when the Agent receives an action from
|
|
783
|
+
* This listener is called when the Agent receives an action from HERE's search UI that has been triggered by the user on one of the Agent's search results.
|
|
784
784
|
*
|
|
785
|
-
* The listener returns a response back to
|
|
785
|
+
* The listener returns a response back to HERE that includes a URL to navigate to.
|
|
786
786
|
*/
|
|
787
787
|
onAction: OnSearchActionListener;
|
|
788
788
|
/**
|
|
789
|
-
* This listener is called when the Agent receives a query from
|
|
789
|
+
* This listener is called when the Agent receives a query from HERE's search UI and returns relevant search results.
|
|
790
790
|
*
|
|
791
791
|
* Note: When the Agent is not ready this listener will not be called.
|
|
792
792
|
*/
|
|
@@ -807,7 +807,7 @@ type AgentSearchFilter = {
|
|
|
807
807
|
type InteropColorChannel = 'blue' | 'indigo' | 'pink' | 'teal' | 'green' | 'orange' | 'red' | 'yellow' | 'gray' | 'none';
|
|
808
808
|
|
|
809
809
|
/**
|
|
810
|
-
* Retrieves the Agent
|
|
810
|
+
* Retrieves the Agent's configuration data, as has been configured in the HERE Admin Console.
|
|
811
811
|
*
|
|
812
812
|
* @returns A promise that resolves with an object containing properties that match the Agent’s configuration.
|
|
813
813
|
*
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../node_modules/@openfin/search-api/index.js","../src/utils.ts","../src/notifications.ts","../src/client-api.ts","../src/search/index.ts","../src/search/search.ts","../src/agent/index.ts","../src/agent/agent.ts","../src/errors.ts","../src/agent/interop/interop.ts","../src/agent/search/search.ts"],"sourcesContent":["(()=>{\"use strict\";var e={d:(t,n)=>{for(var o in n)e.o(n,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:n[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})}},t={};e.r(t),e.d(t,{SearchTagBackground:()=>y,create:()=>Je,defaultTopic:()=>Qe,subscribe:()=>Ge});var n={};e.r(n),e.d(n,{B:()=>oe});var o={};e.r(o),e.d(o,{v:()=>ze});const r=\"deregistered or does not exist\",i=new Error(`provider ${r}`),s=new Error(\"provider with name already exists\"),c=new Error(\"bad payload\"),a=new Error(\"subscription rejected\"),u=new Error(`channel ${r}`);let d;function l(){if(d)return d;throw u}function f(){return d}function p(e){d=e}var h,g,w,y;!function(e){e[e.Initial=0]=\"Initial\",e[e.Open=1]=\"Open\",e[e.Close=2]=\"Close\"}(h||(h={})),function(e){e.Fetching=\"fetching\",e.Fetched=\"fetched\",e.Complete=\"complete\"}(g||(g={})),function(e){e.UserAction=\"user-action\",e.FocusChange=\"focus-change\",e.Reload=\"reload\"}(w||(w={})),function(e){e.Active=\"active\",e.Default=\"default\"}(y||(y={}));const v=\"0\",m=\"1\",R=\"2\",C=\"3\",b=\"4\",S=\"5\",I=\"6\",x=()=>{},O=new Set;function P(e){O.add(e)}function B(e){O.delete(e)}const E=new Set;function k(e){E.add(e)}function A(e){E.delete(e)}const D=new Map;async function L(e){D.set(e.id,e);const t=[...O].map((e=>e()));await Promise.all(t)}async function U(e){D.delete(e);const t=[...E].map((e=>e()));await Promise.all(t)}function _(){return[...D.values()]}function T(){D.clear()}function F(e){return D.get(e)}function M(e,t,n){return{...e,action:n||{...e.actions[0],trigger:w.UserAction},dispatcherIdentity:t}}function $(e,t,n=\"ascending\"){const o=e||[];if(!t?.length)return o;const r=[],i=new Map;t.forEach((e=>{if(e.key)return i.set(e.key,e);r.push(e)}));let s=o.map((e=>{const{key:t}=e;if(t&&i.has(t)){const e=i.get(t);return i.delete(t),e}return e}));return s.push(...i.values(),...r),s=\"ascending\"===n?s.sort(((e,t)=>(e?.score??1/0)-(t?.score??1/0))):s.sort(((e,t)=>(t?.score??1/0)-(e?.score??1/0))),s}function W(e){const t={};let n=[];let o=[];let r=null;let i=h.Initial;t.getStatus=()=>i,t.getResultBuffer=()=>n,t.setResultBuffer=e=>{n=e,n?.length&&t.onChange()},t.getRevokedBuffer=()=>o,t.setRevokedBuffer=e=>{o=e,o?.length&&t.onChange()},t.setUpdatedContext=e=>{r=e,t.onChange()},t.getUpdatedContext=()=>r,t.onChange=x;const s={};return t.res=s,s.close=()=>{i!==h.Close&&(i=h.Close,t.onChange())},s.open=()=>{i!==h.Open&&(i=h.Open,t.onChange())},s.respond=n=>{const o=$(t.getResultBuffer(),n,e);t.setResultBuffer(o)},s.revoke=(...e)=>{const n=new Set(e),o=t.getResultBuffer().filter((({key:e})=>{const t=n.has(e);return t&&n.delete(e),!t}));t.setResultBuffer(o),n.size&&(t.getRevokedBuffer().forEach((e=>n.add(e))),t.setRevokedBuffer([...n]))},s.updateContext=e=>{t.setUpdatedContext(e)},t}function q(e,t){const n=new Set;let o=!1;return{close:()=>{o=!0;for(const e of n)e()},req:{id:e,...t,context:t?.context||{},onClose:e=>{n.add(e),o&&e()},removeListener:e=>{n.delete(e)}}}}function K(){return{name:fin.me.name,uuid:fin.me.uuid}}const V=50,j=1e3;const H=new Map;function N(){return H}const z=100;function J(){return async e=>{if(!e||!e.id||!e.providerId){const e=c;return console.error(e),{error:e.message}}const{id:t,providerId:n}=e,o=F(n);if(!o){const e=i;return console.error(e),{error:e.message}}const r=N();let s=r.get(e.id);s||(s=q(t,e),r.set(e.id,s));const a=W(),u=()=>{const e=a.getResultBuffer();a.setResultBuffer([]);const o=a.getRevokedBuffer();a.setRevokedBuffer([]);const r=a.getUpdatedContext();a.setUpdatedContext(null);const i=a.getStatus();!async function(e){(await l()).dispatch(v,e)}({id:t,providerId:n,results:e,revoked:o,status:i,context:r})};let d=!0,f=!1;a.onChange=()=>{if(d)return d=!1,void u();f||(f=!0,setTimeout((()=>{f=!1,u()}),z))};try{const{results:e,context:r}=await o.onUserInput(s.req,a.res),i=a.getStatus();return{id:t,providerId:n,status:i,results:e,context:r}}catch(e){return console.error(`OpenFin/Workspace/Home. Uncaught exception in search provider ${n} for search ${t}`,\"This is likely a bug in the implementation of the search provider.\",e),{id:t,providerId:n,error:e?.message}}}}async function G(e,t){const n=t||await l(),o=K(),r={...e,identity:o,onResultDispatch:void 0},i=await n.dispatch(R,r);return await L({identity:o,...e}),i}async function Q(e){const t=await l();return await t.dispatch(C,e),U(e)}async function X(e,t,n,o){const r=M(t,o??K(),n),i=F(e);if(i){const{onResultDispatch:e}=i;if(!e)return;return e(r)}const s={providerId:e,result:r};return(await l()).dispatch(S,s)}async function Y(e){const t={...e,context:e?.context||{}},n={},o=async function*(e,{setState:t}){const n=await l();for(;;){const o=await n.dispatch(m,e),r=o.error;if(r)throw new Error(r);const i=o;if(e.id=i.id,t(i.state),i.done)return i.value;yield i.value}}(t,{setState:e=>{n.state=e}});let r=await o.next();return n.id=t.id||\"\",n.close=()=>{!async function(e){(await l()).dispatch(I,{id:e})}(n.id)},n.next=()=>{if(r){const e=r;return r=void 0,e}return o.next()},n}async function Z(){return(await l()).dispatch(b,null)}async function ee(){const e=await l();d=void 0,T(),await e.disconnect()}const te=async e=>{const t=await ne(e);for(const e of _())await G(e,t);return t};async function ne(e){const t=await async function(e){for(let t=0;t<V;t++)try{return await fin.InterApplicationBus.Channel.connect(e,{wait:!1})}catch(e){if(t===V-1)throw e;await new Promise((e=>setTimeout(e,j)))}}(e);return t.register(v,J()),t.register(I,(e=>{const t=N(),n=t.get(e.id);n&&(n.close(),t.delete(e.id))})),t.register(S,(async(e,t)=>{if(!e||!e.providerId||!e.result)return void console.error(c);const n=F(e.providerId);if(!n)return void console.error(i);const{onResultDispatch:o}=n;return o?(e.result.dispatcherIdentity=e.result.dispatcherIdentity??t,o(e.result)):void 0})),t.onDisconnection(function(e){return async()=>{if(!f())return;const t=N();for(const{req:e,close:n}of t.values())n(),t.delete(e.id);p(te(e))}}(e)),t}async function oe(e){let t=f();t||(t=ne(e),p(t));const n=await t;return{getAllProviders:Z.bind(null),register:G.bind(null),search:Y.bind(null),deregister:Q.bind(null),dispatch:X.bind(null),disconnect:ee.bind(null),channel:n}}let re;function ie(){if(re)return re;throw u}function se(){return re}function ce(e){re=e}function ae(){re=void 0}const ue=new Set;function de(e){ue.add(e)}function le(e){ue.delete(e)}var fe;!function(e){e.Local=\"local\",e.Dev=\"dev\",e.Staging=\"staging\",e.Prod=\"prod\"}(fe||(fe={}));const pe=\"undefined\"!=typeof window&&\"undefined\"!=typeof fin,he=(\"undefined\"==typeof process||process.env,\"undefined\"!=typeof window),ge=he?window.origin:fe.Local,we=(pe&&fin.me.uuid,pe&&fin.me.name,pe&&fin.me.entityType,fe.Local,fe.Dev,fe.Staging,fe.Prod,e=>e.startsWith(\"http://\")||e.startsWith(\"https://\")?e:ge+e),ye=(we(\"http://localhost:4002\"),we(\"http://localhost:4002\"),\"undefined\"!=typeof WORKSPACE_DOCS_PLATFORM_URL&&we(WORKSPACE_DOCS_PLATFORM_URL),\"undefined\"!=typeof WORKSPACE_DOCS_CLIENT_URL&&we(WORKSPACE_DOCS_CLIENT_URL),\"20.3.6\");\"undefined\"!=typeof WORKSPACE_BUILD_SHA&&WORKSPACE_BUILD_SHA;async function ve(){return[..._()].map((e=>({...e,onUserInput:void 0,onResultDispatch:void 0})))}async function me(e){if(F(e.id))throw new Error(\"provider with name already exists\");const t=K();return await L({identity:t,...e}),{workspaceVersion:ye||\"\",clientAPIVersion:e.clientAPIVersion||\"\"}}async function Re(e){await U(e)}async function Ce(e,t,n,o){const r=F(e);if(!r)throw i;const{onResultDispatch:s}=r;if(!s)return;return s(M(t,o??K(),n))}async function*be(e,t){const n=function(e,t){const n=[],o=[],r=[],i=[];for(const s of e){const e=W(s.scoreOrder),c={results:[],provider:{id:s.id,identity:s.identity,title:s.title,scoreOrder:s.scoreOrder,icon:s.icon,dispatchFocusEvents:s.dispatchFocusEvents}};n.push(c),o.push(e);const a=(async()=>{try{const{results:n,context:o}=await s.onUserInput(t,e.res);c.results=$(c.results||[],n,s.scoreOrder),c.context={...c.context,...o}}catch(e){c.error=e}})();a.finally((()=>{a.done=!0})),i.push(a),r.push(r.length)}return{providerResponses:n,listenerResponses:o,openListenerResponses:r,initialResponsePromises:i}}(e.targets?e.targets.map((e=>F(e))).filter((e=>!!e)):[..._().filter((e=>!e.hidden))],e),{providerResponses:o,listenerResponses:r}=n;let{openListenerResponses:i,initialResponsePromises:s}=n,c=g.Fetching;const a=e=>{c=e,t.setState(c)};let u,d=!1;e.onClose((()=>{d=!0,u&&u()}));do{let e=!1;if(s.length){const t=[];for(const n of s)n.done?e=!0:t.push(n);s=t,s.length||(a(g.Fetched),e=!0)}let t,n=!1;const l=()=>{n=!0,t&&t()},f=[];for(const t of i){const n=r[t],i=o[t],s=n.getStatus();(s===h.Open||c===g.Fetching&&s===h.Initial)&&(f.push(t),n.onChange=l);const a=n.getResultBuffer();a.length&&(n.setResultBuffer([]),i.results=$(i.results||[],a),e=!0);const u=n.getRevokedBuffer();if(u.length){n.setRevokedBuffer([]);const t=new Set(u);i.results=(i.results||[]).filter((({key:e})=>!t.has(e))),e=!0}const d=n.getUpdatedContext();d&&(n.setUpdatedContext(null),i.context={...i.context,...d},e=!0)}if(i=f,e&&(yield o),d)break;n||(i.length||s.length)&&await Promise.race([...s,new Promise((e=>{t=e})),new Promise((e=>{u=e}))])}while(i.length||s.length);return a(g.Complete),o}let Se=0;async function Ie(e){Se+=1;const t=q(Se.toString(),e),n=be(t.req,{setState:e=>{n.state=e}});return n.id=Se.toString(),n.close=t.close,n.state=g.Fetching,n}const xe=new Map,Oe=1e4;function Pe(){return async e=>{if(!e)return console.error(c),{error:c.message};let t;if(e.id)t=e.id;else{const n=await Ie(e);t=n.id,e.id=n.id,xe.set(t,{generator:n})}const n=xe.get(t);clearTimeout(n.timeout);const o=await n.generator.next();return n.timeout=function(e){return window.setTimeout((()=>{xe.delete(e)}),Oe)}(t),{...o,id:e.id,state:n.generator.state}}}function Be(e,t){return ie().dispatch(e,I,{id:t})}function Ee(){return e=>function(e){const t=xe.get(e);t&&t.generator.close()}(e.id)}async function ke(e,{id:t,query:n,context:o,targets:r=[]}){const i=ie(),s={id:t,query:n,context:o,targets:r,providerId:e.id},c=await i.dispatch(e.identity,v,s),a=c.error;if(a)throw new Error(a);return c}const Ae=new Map;function De(e,t){return`${e.name}:${e.uuid}:${t}`}const Le=new Map;function Ue(e,t){return`${e}:${t}`}function _e(e){const t=De.bind(null,e.identity),n=Be.bind(null,e.identity),o=ke.bind(null,e);return async(r,i)=>{const s=t(r.id);if(!Ae.has(s)){const e=()=>{n(r.id),Ae.delete(s)};Ae.set(s,e),r.onClose(e)}const c=Ue(e.id,r.id),a=()=>{Le.delete(c),i.close()};r.onClose(a),Le.set(c,(e=>{e.results?.length&&i.respond(e.results),e.revoked?.length&&i.revoke(...e.revoked),e.context&&i.updateContext(e.context),e.status===h.Open&&i.open(),e.status===h.Close&&a()}));const u=await o(r);return u.status===h.Open&&i.open(),u.status!==h.Close&&u.status!==h.Initial||a(),u}}function Te(e){return async t=>{const n=ie(),o={providerId:e.id,result:t};return n.dispatch(e.identity,S,o)}}const Fe=new Map;function Me(e){return`${e.name}-${e.uuid}`}function $e(){return async(e,t)=>{if(!e||!e.id)return console.error(new Error(JSON.stringify(e))),void console.error(c);if(F(e.id))throw s;return e.identity=t,await async function(e){const t=Me(e.identity);Fe.has(t)||Fe.set(t,[]),Fe.get(t).push(e.id),await L({...e,onUserInput:_e(e),onResultDispatch:Te(e)})}(e),{workspaceVersion:ye||\"\",clientAPIVersion:e.clientAPIVersion||\"\"}}}function We(){return(e,t)=>{e?function(e,t){const n=F(e);if(!n)return;if(n.identity.uuid!==t.uuid||n.identity.name!==t.name)throw i;const o=Me(n.identity),r=Fe.get(o);if(r){const t=r.findIndex((t=>t===e));-1!==t&&(r.splice(t,1),U(e))}}(e,t):console.error(c)}}const qe=new Set;function Ke(e){qe.add(e)}function Ve(e){qe.delete(e)}function je(){return async e=>{!function(e){const t=Me(e),n=Fe.get(t);if(n){for(const e of n)U(e);Fe.delete(t)}}(e),qe.forEach((t=>t(e)))}}async function He(e){const t=await(n=e,fin.InterApplicationBus.Channel.create(n));var n;return t.onConnection((async e=>{for(const t of ue)if(!await t(e))throw a})),t.onDisconnection(je()),t.register(I,Ee()),t.register(v,(e=>{const t=Ue(e.providerId,e.id),n=Le.get(t);n&&n(e)})),t.register(R,$e()),t.register(C,We()),t.register(b,(async()=>ve())),t.register(m,Pe()),t.register(S,(async(e,t)=>{if(!e||!e.providerId||!e.result)return void console.error(c);const n=F(e.providerId);if(!n)throw i;const{onResultDispatch:o}=n;return o?(e.result.dispatcherIdentity=e.result.dispatcherIdentity??t,o(e.result)):void 0})),t}async function Ne(){const e=ie();ae(),await e.destroy(),T()}async function ze(e){let t=se();t||(t=await He(e),ce(t));const n=le.bind(null),o=Ve.bind(null),r=B.bind(null),i=A.bind(null);return{getAllProviders:ve.bind(null),search:Ie.bind(null),register:me.bind(null),deregister:Re.bind(null),onSubscription:de.bind(null),onDisconnect:Ke.bind(null),onRegister:P.bind(null),onDeregister:k.bind(null),dispatch:Ce.bind(null),disconnect:Ne.bind(null),removeListener:e=>{n(e),o(e),r(e),i(e)},channel:t}}const{v:Je}=o,{B:Ge}=n,Qe=\"all\",Xe={create:Je,subscribe:Ge,defaultTopic:Qe},Ye=()=>{window.search=Xe},Ze=e=>{const t=()=>{Ye(),window.removeEventListener(e,t)};return t};if(\"undefined\"!=typeof window){Ye();const e=\"load\",t=Ze(e);window.addEventListener(e,t);const n=\"DOMContentLoaded\",o=Ze(n);window.addEventListener(n,o)}module.exports=t})();\n//# sourceMappingURL=index.js.map","import type OpenFin from '@openfin/core';\n\nexport const PACKAGE_NAME = '@openfin/cloud-api';\n\nexport async function isInViewContext(): Promise<boolean> {\n try {\n await window.fin.View.getCurrentSync().getInfo();\n return true;\n } catch {\n return false;\n }\n}\n\nexport function extractAppUuidFromIdentity(identity: OpenFin.Identity): string {\n if (identity.name.startsWith('internal-generated')) {\n throw new Error('Cannot extract app UUID from identity');\n }\n // <uuid>/<name>\n if (/\\/[\\d,a-z-]{36}$/.test(identity.name)) {\n return identity.name.split('/')[0] || '';\n }\n\n return identity.name;\n}\n","// eslint-disable-next-line check-file/no-index\nimport type * as NotificationsTypes from '@openfin/workspace/notifications';\n\nimport type { FlannelChannelClient, NotificationEventsMap, NotificationsClient } from './types';\nimport { extractAppUuidFromIdentity, isInViewContext } from './utils';\n\nconst PACKAGE_NAME = '@openfin/cloud-api';\n\nexport type {\n FlannelChannelProvider as __INTERNAL_FlannelChannelProvider,\n FlannelCreateNotificationRequest as __INTERNAL_FlannelCreateNotificationRequest,\n FlannelCreateNotificationResponse as __INTERNAL_FlannelCreateNotificationResponse,\n FlannelUpdateNotificationRequest as __INTERNAL_FlannelUpdateNotificationRequest,\n FlannelUpdateNotificationResponse as __INTERNAL_FlannelUpdateNotificationResponse,\n FlannelClearNotificationRequest as __INTERNAL_FlannelClearNotificationRequest,\n FlannelClearNotificationResponse as __INTERNAL_FlannelClearNotificationResponse,\n} from './types';\n\nfunction getChannelName() {\n return `${window.fin.me.uuid}-cloud-api-notifications`;\n}\n\nlet notificationsClientPromise: Promise<NotificationsClient> | null = null;\n\n/**\n * @returns A client for interacting with the OpenFin Notifications service\n *\n * @throws {Error} If the function is called outside of an OpenFin environment\n * @throws {Error} If the function is called outside of an OpenFin View context\n * @throws {Error} If the app UUID cannot be extracted from the current context\n *\n * @example **Basic Usage** Creating a notification, updating it and then clearing it\n * ```ts\n * const notificationsClient = await getNotificationsClient();\n *\n * const notification = await notificationsClient.createNotification({\n * title: 'Hello, World!',\n * body: 'This is a notification from the OpenFin Cloud API',\n * });\n *\n * // Use the `id` from the returned notification to interact with it\n * console.log(notification.id);\n *\n * // Update the notification\n * await notificationsClient.update({\n * id: notification.id,\n * body: 'This is a notification from the OpenFin Cloud API, that has been updated!',\n * })\n *\n * // Clear the notification\n * await notificationsClient.clear(notification.id);\n * ```\n *\n * @example **Advanced Usage** Listening for events\n * ```ts\n * const notificationsClient = await getNotificationsClient();\n *\n * // create the notification\n * const notification = await notificationsClient.createNotification({\n * title: `${window.fin.me.identity.name} Hello, World!`,\n * body: `This is a notification from the cloud API example created at ${new Date().toLocaleTimeString()}`,\n * buttons: [\n * {\n * title: 'Acknowledge',\n * },\n * ],\n * });\n *\n * notificationsClient.addEventListener('notification-action', (event) => {\n * console.log('Notification action:', event);\n * });\n * ```\n */\nasync function getNotificationsClient(): Promise<NotificationsClient> {\n if (!notificationsClientPromise) {\n notificationsClientPromise = getNotificationsClientInternal();\n }\n\n return notificationsClientPromise;\n}\n\nasync function getNotificationsClientInternal(): Promise<NotificationsClient> {\n if (!window.fin) {\n throw new Error(`\\`${PACKAGE_NAME}\\`: \\`getNotificationsClient\\` cannot be used in a non-OpenFin environment`);\n }\n\n if ((await isInViewContext()) === false) {\n throw new Error(`${PACKAGE_NAME}: \\`getNotificationsClient\\` cannot be used in a non-OpenFin environment`);\n }\n\n extractAppUuidFromIdentity(window.fin.me);\n\n const channelPromise = await getChannelClient();\n console.log(channelPromise);\n\n channelPromise.register('openfin-cloud-event', (message) => {\n for (const listener of eventListeners.get(message.type) ?? []) {\n // `Date` is serialized as a string, so we need to convert it back\n if (typeof message.payload.timestamp === 'string') {\n message.payload.timestamp = new Date(message.payload.timestamp);\n }\n\n listener(message.payload as never);\n }\n });\n\n const eventListeners = new Map<keyof NotificationEventsMap, Set<NotificationEventsMap[keyof NotificationEventsMap]>>();\n\n return {\n addEventListener: <T extends keyof NotificationEventsMap>(eventName: T, listener: NotificationEventsMap[T]) => {\n const listeners = eventListeners.get(eventName) || new Set();\n listeners.add(listener);\n eventListeners.set(eventName, listeners);\n },\n removeEventListener: <T extends keyof NotificationEventsMap>(eventName: T, listener: NotificationEventsMap[T]) => {\n const listeners = eventListeners.get(eventName);\n if (!listeners) {\n console.warn(\n `\\`${PACKAGE_NAME}\\`: Listener was not found for event. Did you pass a function directly instead of a reference or forget to add the listener?`,\n eventName,\n );\n return;\n }\n\n if (listeners.delete(listener as (args: unknown) => void) === false) {\n console.warn(`\\`${PACKAGE_NAME}\\`: Listener was not found for event. Did you pass a function directly instead of a reference?`, eventName);\n }\n },\n update: async (options: Parameters<typeof NotificationsTypes.update>[0]): ReturnType<typeof NotificationsTypes.update> => {\n const response = await channelPromise.dispatch('openfin-cloud-update-notification', {\n version: 1,\n payload: {\n notification: options,\n },\n });\n return response.payload.response;\n },\n clear: async (notificationId: Parameters<typeof NotificationsTypes.clear>[0]): ReturnType<typeof NotificationsTypes.clear> => {\n const response = await channelPromise.dispatch('openfin-cloud-clear-notification', {\n version: 1,\n payload: {\n notificationId,\n },\n });\n return response.payload.response;\n },\n createNotification: async (\n options: NotificationsTypes.NotificationOptions,\n ): Promise<NotificationsTypes.Notification<NotificationsTypes.NotificationOptions>> => {\n if (options.id) {\n console.warn(\n `\\`${PACKAGE_NAME}\\`: The \\`id\\` property is not supported and will be ignored. If you need to use the \\`id\\` property, you should use the \\`id\\` property of the returned notification object.`,\n );\n }\n const response = await channelPromise.dispatch('openfin-cloud-create-notification', {\n version: 1,\n payload: {\n notification: { ...options, id: undefined },\n },\n });\n return response.payload.response;\n },\n };\n}\n\nlet channelClientPromise: Promise<FlannelChannelClient> | null = null;\n\nasync function getChannelClient(): Promise<FlannelChannelClient> {\n if (!channelClientPromise) {\n channelClientPromise = getChannelClientInternal();\n }\n\n return channelClientPromise;\n}\n\nasync function getChannelClientInternal(): Promise<FlannelChannelClient> {\n const channel = (await window.fin.InterApplicationBus.Channel.connect(getChannelName())) as FlannelChannelClient;\n\n channel.onDisconnection((identity) => {\n console.warn(`\\`${PACKAGE_NAME}\\`: Channel Disconnected from`, identity, 'Reconnecting...');\n channelClientPromise = null;\n });\n\n return channel;\n}\n\nexport { getNotificationsClient };\n","import type OpenFin from '@openfin/core';\n\nimport { isInViewContext, PACKAGE_NAME } from './utils';\n\nlet apiChannelClientPromise: Promise<OpenFin.ChannelClient>;\n\n/**\n * Represents a collection of returned app permissions\n */\nexport type AppPermissions = {\n permissions: {\n /**\n * The name of the permission\n */\n name: string;\n /**\n * The ID of the permission\n */\n id: string;\n }[];\n};\n\nfunction getApiChannelName() {\n return `${window.fin.me.uuid}-client-api`;\n}\n\nasync function getApiChannelClient(): Promise<OpenFin.ChannelClient> {\n if (!apiChannelClientPromise) {\n apiChannelClientPromise = window.fin.InterApplicationBus.Channel.connect(getApiChannelName());\n }\n\n return apiChannelClientPromise;\n}\n\n/**\n * @returns The app settings that have been set against the current app\n *\n * @throws {Error} If the function is called outside of an OpenFin environment\n * @throws {Error} If the function is called outside of an OpenFin View context\n */\nasync function getAppSettings(): Promise<unknown> {\n if (!window.fin) {\n throw new Error(`\\`${PACKAGE_NAME}\\`: \\`getAppSettings\\` cannot be used in a non-OpenFin environment`);\n }\n\n if ((await isInViewContext()) === false) {\n throw new Error(`${PACKAGE_NAME}: \\`getAppSettings\\` cannot be used in a non-OpenFin environment`);\n }\n\n const channel = await getApiChannelClient();\n\n return channel.dispatch('get-settings');\n}\n\n/**\n * @returns The app settings that have been set against the current app for the current user\n *\n * @throws {Error} If the function is called outside of an OpenFin environment\n * @throws {Error} If the function is called outside of an OpenFin View context\n */\nasync function getAppUserSettings(): Promise<unknown> {\n if (!window.fin) {\n throw new Error(`\\`${PACKAGE_NAME}\\`: \\`getAppUserSettings\\` cannot be used in a non-OpenFin environment`);\n }\n\n if ((await isInViewContext()) === false) {\n throw new Error(`${PACKAGE_NAME}: \\`getAppUserSettings\\` cannot be used in a non-OpenFin environment`);\n }\n\n const channel = await getApiChannelClient();\n\n return channel.dispatch('get-user-settings');\n}\n\n/**\n * Assigns a set of user specific settings to the current app\n *\n * @returns The app settings that have been set against the current app for the current user\n *\n * @throws {Error} If the function is called outside of an OpenFin environment\n * @throws {Error} If the function is called outside of an OpenFin View context\n */\nasync function setAppUserSettings(settings: unknown): Promise<unknown> {\n if (!window.fin) {\n throw new Error(`\\`${PACKAGE_NAME}\\`: \\`setAppUserSettings\\` cannot be used in a non-OpenFin environment`);\n }\n\n if ((await isInViewContext()) === false) {\n throw new Error(`${PACKAGE_NAME}: \\`setAppUserSettings\\` cannot be used in a non-OpenFin environment`);\n }\n\n const channel = await getApiChannelClient();\n\n return channel.dispatch('set-user-settings', settings);\n}\n\n/**\n * @returns The permissions that have been set against the current app for the current user\n *\n * @throws {Error} If the function is called outside of an OpenFin environment\n * @throws {Error} If the function is called outside of an OpenFin View context\n */\nasync function getAppUserPermissions(): Promise<AppPermissions> {\n if (!window.fin) {\n throw new Error(`\\`${PACKAGE_NAME}\\`: \\`getAppUserPermissions\\` cannot be used in a non-OpenFin environment`);\n }\n\n if ((await isInViewContext()) === false) {\n throw new Error(`${PACKAGE_NAME}: \\`getAppUserPermissions\\` cannot be used in a non-OpenFin environment`);\n }\n\n const channel = await getApiChannelClient();\n\n return channel.dispatch('get-user-permissions');\n}\n\nexport type LaunchContentOptions = {\n /** Object containing query param values to be appended to content's URL */\n queryParams?: Record<string, string>;\n /** Defines behavior when instance of content is already running.\n * If 'multi', copy of the content will be created.\n * If 'single', the existing instance of content will be focused. */\n instanceMode?: 'single' | 'multi';\n} & (\n | {\n targetType?: 'new-window';\n /** Defines the bounds of the window in which content will open */\n bounds?: Partial<OpenFin.Bounds>;\n }\n | {\n targetType: 'window' | 'view';\n targetIdentity: OpenFin.Identity;\n }\n);\n/**\n * A function allowing the easy launching of content\n * @param id The id of the content to launch\n * @returns nothing\n *\n * @throws {Error} If the function is called outside of an OpenFin environment\n * @throws {Error} If the function is called outside of an OpenFin View context\n * @throws {Error} If the function has been unable to look up or launch the content\n * @throws {Error} If the function is unable to find content with the provided id.\n */\nasync function launchContent(id: string, options: LaunchContentOptions): Promise<void> {\n if (!window.fin) {\n throw new Error(`\\`${PACKAGE_NAME}\\`: \\`launchContent\\` cannot be used in a non-OpenFin environment`);\n }\n\n if ((await isInViewContext()) === false) {\n throw new Error(`${PACKAGE_NAME}: \\`launchContent\\` cannot be used in a outside of an OpenFin View context`);\n }\n\n const channel = await getApiChannelClient();\n\n try {\n await channel.dispatch('launch-content', { id, options });\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n switch (errorMessage) {\n case 'UnableToLookup': {\n throw new Error(`${PACKAGE_NAME}: \\`launchContent\\` was unable to lookup content with id: ${id}`);\n }\n case 'UnableToLaunch': {\n throw new Error(`${PACKAGE_NAME}: \\`launchContent\\` was unable to launch content with id: ${id}`);\n }\n case 'NoContentFound': {\n throw new Error(`${PACKAGE_NAME}: \\`launchContent\\` did not find content with id: ${id}`);\n }\n default: {\n throw new Error(`${PACKAGE_NAME}: \\`launchContent\\` was unable to look up or launch content with id: ${id} or the content did not exist.`);\n }\n }\n }\n}\n\n/**\n * A function allowing the easy launching of Supertabs\n * @param id The id of supertab\n * @returns nothing\n *\n * @throws {Error} If the function is called outside of an OpenFin environment\n * @throws {Error} If the function is called outside of an OpenFin View context\n * @throws {Error} If the function has been unable to look up or launch the supertab\n * @throws {Error} If the function is unable to find supertab with the provided id.\n */\nasync function launchSupertab(id: string): Promise<void> {\n if (!window.fin) {\n throw new Error(`\\`${PACKAGE_NAME}\\`: \\`launchSupertab\\` cannot be used in a non-OpenFin environment`);\n }\n\n if ((await isInViewContext()) === false) {\n throw new Error(`${PACKAGE_NAME}: \\`launchSupertab\\` cannot be used in a outside of an OpenFin View context`);\n }\n\n const channel = await getApiChannelClient();\n\n try {\n await channel.dispatch('launch-supertab', { id });\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n switch (errorMessage) {\n case 'UnableToLookup': {\n throw new Error(`${PACKAGE_NAME}: \\`launchSupertab\\` was unable to lookup content with id: ${id}`);\n }\n case 'UnableToLaunch': {\n throw new Error(`${PACKAGE_NAME}: \\`launchSupertab\\` was unable to launch content with id: ${id}`);\n }\n case 'NoContentFound': {\n throw new Error(`${PACKAGE_NAME}: \\`launchSupertab\\` did not find content with id: ${id}`);\n }\n default: {\n throw new Error(`${PACKAGE_NAME}: \\`launchSupertab\\` was unable to look up or launch content with id: ${id} or the content did not exist.`);\n }\n }\n }\n}\n\n/**\n * A function allowing the easy launching of Workspaces\n * @param id The id of workspace\n * @returns nothing\n *\n * @throws {Error} If the function is called outside of an OpenFin environment\n * @throws {Error} If the function is called outside of an OpenFin View context\n * @throws {Error} If the function has been unable to look up or launch the workspace\n * @throws {Error} If the function is unable to find workspace with the provided id.\n */\nasync function launchWorkspace(id: string): Promise<void> {\n if (!window.fin) {\n throw new Error(`\\`${PACKAGE_NAME}\\`: \\`launchWorkspace\\` cannot be used in a non-OpenFin environment`);\n }\n\n if ((await isInViewContext()) === false) {\n throw new Error(`${PACKAGE_NAME}: \\`launchWorkspace\\` cannot be used in a outside of an OpenFin View context`);\n }\n\n const channel = await getApiChannelClient();\n\n try {\n await channel.dispatch('launch-workspace', { id });\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n switch (errorMessage) {\n case 'UnableToLookup': {\n throw new Error(`${PACKAGE_NAME}: \\`launchWorkspace\\` was unable to lookup content with id: ${id}`);\n }\n case 'UnableToLaunch': {\n throw new Error(`${PACKAGE_NAME}: \\`launchWorkspace\\` was unable to launch content with id: ${id}`);\n }\n case 'NoContentFound': {\n throw new Error(`${PACKAGE_NAME}: \\`launchWorkspace\\` did not find content with id: ${id}`);\n }\n default: {\n throw new Error(`${PACKAGE_NAME}: \\`launchWorkspace\\` was unable to look up or launch content with id: ${id} or the content did not exist.`);\n }\n }\n }\n}\n\nexport { getAppSettings, getAppUserSettings, setAppUserSettings, getAppUserPermissions, launchContent, launchSupertab, launchWorkspace };\n","/* eslint-disable check-file/no-index */\nexport { getAgentConfiguration, register } from './search';\nexport type {\n OnActionListener,\n OnSearchListener,\n SearchAction,\n SearchAgent,\n SearchAgentConfigurationData,\n SearchAgentRegistrationConfig,\n SearchListenerRequest,\n SearchRequestContext,\n SearchResponse,\n SearchResult,\n SearchResultActionResponse,\n} from './search.types';\n","import type { OpenFin } from '@openfin/core';\nimport * as WorkspaceSearch from '@openfin/search-api';\n\nimport type {\n LogMessageChannelTopicPayload,\n OnActionListener,\n OnSearchListener,\n OpenUrlChannelTopicPayload,\n ProviderStatusChannelTopicPayload,\n SearchAgent,\n SearchAgentConfigurationData,\n SearchAgentLogLevel,\n SearchAgentRegistrationConfig,\n SearchAgentWindowCustomData,\n SearchResult,\n} from './search.types';\n\nconst CONSOLE_LOG_PREFIX = '[here-agent]';\nconst CHANNEL_TOPIC_LOG_MESSAGE_PREFIX = 'log-message-';\nconst CHANNEL_TOPIC_OPEN_URL = 'open-url';\nconst CHANNEL_TOPIC_PROVIDER_STATUS_PREFIX = 'provider-status-';\nconst CHANNEL_TOPIC_REGISTERED_PREFIX = 'registered-';\nconst SEARCH_PROVIDER_CLIENT_API_VERSION = '1.0';\n\nfunction convertFromSearchResult(result: SearchResult, providerId: string): WorkspaceSearch.SearchResult {\n const { data, iconSize, rightSideIcon, ...otherProps } = result as SearchResult & {\n iconSize?: 'standard' | 'large';\n rightSideIcon?: string;\n };\n return {\n ...otherProps,\n data: {\n customData: data,\n iconSize,\n providerId,\n resultType: 'app',\n rightSideIcon,\n },\n };\n}\n\nfunction convertToSearchResult(result: WorkspaceSearch.SearchResult): SearchResult {\n return {\n ...result,\n data: result.data.customData,\n };\n}\n\n/**\n * Retrieves the Search Agent’s configuration data, as has been configured in the Here™ Admin Console.\n *\n * @returns A promise that resolves with an object containing properties that match the Search Agent’s configuration.\n *\n * @example Retrieving the Search Agent’s configuration data:\n * ```ts\n * import { Search } from \"@openfin/cloud-api\";\n *\n * // Get the configuration data\n * const configData = await Search.getAgentConfiguration<{ customField1: string, customField2: string }>();\n *\n * // Pick out the standard configuration properties\n * const { customData, description, id, title, url } = configData;\n *\n * // Pick out the custom configuration properties\n * if (customData) {\n * const { customField1, customField2 } = customData;\n * }\n * ```\n */\nexport async function getAgentConfiguration<T extends object>(): Promise<SearchAgentConfigurationData<T>> {\n const { customData } = await window.fin.me.getOptions();\n return customData;\n}\n\nfunction getSearchApiChannelName(): string {\n return `${window.fin.me.identity.uuid}-cloud-api-search`;\n}\n\nasync function setIsReady(\n channel: OpenFin.ChannelClient,\n logMessage: (level: SearchAgentLogLevel, ...args: unknown[]) => Promise<void>,\n providerId: string,\n ready: boolean = true,\n): Promise<void> {\n await logMessage('info', `Setting status as ${ready ? 'ready' : 'not ready'}`);\n try {\n await channel.dispatch(`${CHANNEL_TOPIC_PROVIDER_STATUS_PREFIX}${providerId}`, { isReady: ready } satisfies ProviderStatusChannelTopicPayload);\n } catch (error) {\n const args = ['Error setting provider status', error];\n console.error(...args);\n logMessage('error', ...args);\n }\n}\n\nasync function logMessage(channel: OpenFin.ChannelClient, providerId: string, level: SearchAgentLogLevel, ...args: unknown[]) {\n try {\n console.log(CONSOLE_LOG_PREFIX, ...args);\n await channel.dispatch(`${CHANNEL_TOPIC_LOG_MESSAGE_PREFIX}${providerId}`, { level, message: args } satisfies LogMessageChannelTopicPayload);\n } catch (error) {\n console.error('Error logging message', error);\n }\n}\n\nasync function onResultDispatch(\n channel: OpenFin.ChannelClient,\n agentId: string,\n logMessage: (level: SearchAgentLogLevel, ...args: unknown[]) => Promise<void>,\n onAction: OnActionListener,\n searchResult: WorkspaceSearch.DispatchedSearchResult,\n): Promise<void> {\n const { action, dispatcherIdentity, ...otherProps } = searchResult;\n await logMessage('info', 'Handling action', { action, dispatcherIdentity, result: otherProps });\n let url: string | undefined;\n try {\n const originalResult = convertToSearchResult(searchResult);\n const originalAction = originalResult.actions?.find(({ name: id }) => id === action.name);\n if (!originalAction) {\n throw new Error('Original action not found in search result');\n }\n const actionResult = await onAction(originalAction, convertToSearchResult(searchResult));\n url = actionResult?.url;\n } catch (error) {\n await logMessage('error', 'Error handling dispatch', error);\n throw error;\n }\n if (!url) {\n await logMessage('warn', 'OnActionListener did not return a URL');\n return;\n }\n await openUrl(channel, logMessage, agentId, url, dispatcherIdentity);\n}\n\nasync function onUserInput(\n agentId: string,\n logMessage: (level: SearchAgentLogLevel, ...args: unknown[]) => Promise<void>,\n onSearch: OnSearchListener,\n request: WorkspaceSearch.SearchListenerRequest,\n): Promise<WorkspaceSearch.SearchResponse> {\n await logMessage('info', 'Getting search results', { request });\n try {\n const abortController = new AbortController();\n request.onClose(() => abortController.abort());\n const { context, query } = request;\n const { results } = await onSearch({ context, query, signal: abortController.signal });\n const convertedResults = results.map((result) => convertFromSearchResult(result, agentId));\n await logMessage('info', 'Returning results', convertedResults);\n return { results: convertedResults };\n } catch (error) {\n const args = ['Error handling search', error];\n console.error(...args);\n logMessage('error', ...args);\n throw error;\n }\n}\n\nasync function openUrl(\n channel: OpenFin.ChannelClient,\n logMessage: (level: SearchAgentLogLevel, ...args: unknown[]) => Promise<void>,\n providerId: string,\n url: string,\n targetIdentity: OpenFin.Identity,\n): Promise<void> {\n await logMessage('info', 'Opening URL', { url, targetIdentity });\n try {\n await channel.dispatch(CHANNEL_TOPIC_OPEN_URL, { url, targetIdentity, providerId } satisfies OpenUrlChannelTopicPayload);\n } catch (error) {\n const args = ['Error opening URL', error];\n console.error(...args);\n logMessage('error', ...args);\n }\n}\n\n/**\n * Registers a Search Agent that will provide search results to Here™’s search UI in response to user input and act on the user’s actions regarding those results.\n *\n * @param config The configuration for the Search Agent.\n *\n * @returns A promise that resolves with the Search Agent.\n *\n * @example Registering a basic Search Agent:\n * ```ts\n * import { Search } from \"@openfin/cloud-api\";\n *\n * // Handle incoming action and return a response that includes the URL to navigate to\n * const onAction: Search.OnActionListener = (action, result) => {\n * const { name } = action;\n * const { data, key } = result;\n * const { owner, searchResultHostUrl } = data as { owner: { id: string, name: string }, searchResultHostUrl: string };\n * const { id: ownerId } = owner;\n * console.log(`Action \"${name}\" triggered on search result with key \"${key}\"`);\n * switch (name) {\n * case \"view-owner\":\n * return { url: `${searchResultHostUrl}/people/${ownerId}` };\n * case \"view-result\":\n * return { url: `${searchResultHostUrl}/record/${key}` };\n * default:\n * console.warn(`Unknown action: ${name}`);\n * }\n * };\n *\n * // Handle incoming search request and return relevant search results\n * const onSearch: Search.OnSearchListener = ({ context, query, signal }) => {\n * const { pageNumber, pageSize } = context;\n * try {\n * let results: Search.SearchResult[] = [];\n * const url = `https://my-web-app.com/search?q=${query}&page=${pageNumber}&limit=${pageSize}`;\n * const response = await fetch(url, { signal });\n * if (!response.ok) {\n * throw new Error(`Request failed: ${response.status}`);\n * }\n * const { searchResults } = await response.json();\n * results = searchResults.map((result) => {\n * const { iconUrl, id: key, owner, subTitle, title } = result;\n * const { name: ownerName } = owner as { id: string, name: string };\n * return {\n * actions: [\n * {\n * name: \"view-result\",\n * description: `Go to ${title} in My Web App`,\n * },\n * {\n * name: \"view-owner\",\n * description: `Go to ${ownerName} in My Web App`,\n * title: \"View Owner\",\n * },\n * ],\n * data: {\n * owner,\n * searchResultHostUrl: `https://my-web-app.com`,\n * },\n * icon: iconUrl,\n * key,\n * label: subTitle,\n * title,\n * };\n * });\n * console.log(\"Returning results\", results);\n * return { results };\n * } catch (err) {\n * if ((err as Error).name === \"AbortError\") {\n * // Ignore errors for cancelled requests\n * return { results: [] };\n * }\n * throw err;\n * }\n * };\n *\n * // Register the search agent\n * const searchAgent = await Search.register({ onAction, onSearch });\n *\n * // Set the Search Agent as ready to receive search requests\n * await searchAgent.isReady();\n * ```\n *\n * @deprecated Use `Agent.register` instead.\n */\nexport async function register(config: SearchAgentRegistrationConfig): Promise<SearchAgent> {\n // Get provider configuration from window options custom data\n const windowOptions = await window.fin.me.getOptions();\n const customData = windowOptions.customData as SearchAgentWindowCustomData;\n const { id, title } = customData;\n\n // Subscribe to the search topic and register the search provider\n const { onAction, onSearch } = config;\n const topic = await WorkspaceSearch.subscribe(getSearchApiChannelName());\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment, @typescript-eslint/prefer-ts-expect-error\n // @ts-ignore - The following line will error if the @openfin/core version used is different to the one used in @openfin/search-api\n const channel = topic.channel as OpenFin.ChannelClient;\n const logMessageBound = logMessage.bind(null, channel, id);\n await topic.register({\n icon: '',\n id,\n onResultDispatch: onResultDispatch.bind(null, channel, id, logMessageBound, onAction),\n onUserInput: onUserInput.bind(null, id, logMessageBound, onSearch),\n title,\n });\n await topic.channel.dispatch(`${CHANNEL_TOPIC_REGISTERED_PREFIX}${id}`, { version: SEARCH_PROVIDER_CLIENT_API_VERSION });\n logMessageBound('info', 'Registered search topic', { id, title });\n\n return {\n isReady: setIsReady.bind(null, channel, logMessageBound, id),\n };\n}\n","/* eslint-disable check-file/no-index */\nexport { getConfiguration, register } from './agent';\nexport type { Agent, AgentFeatures, AgentRegistrationConfig, AgentSearchFilter, InteropColorChannel } from './agent.types';\nexport type { OnSearchActionListener, OnSearchRequestListener, SearchListenerRequest } from './search/search.types';\n","import type { OpenFin } from '@openfin/core';\nimport * as WorkspaceSearch from '@openfin/search-api';\n\nimport { InteropFeatureNotSupportedError } from '../errors';\n\nimport * as interop from './interop/interop';\nimport * as search from './search/search';\nimport type {\n Agent,\n AgentFeatures,\n AgentInstance,\n AgentRegistrationConfig,\n DesktopAppSignal,\n InteropColorChannel,\n SetAgentRegisteredPayload,\n SetAgentStatusPayload as SetAgentStatusPayload,\n} from './agent.types';\n\nconst CONSOLE_LOG_PREFIX = '[here-agent]';\nconst CLIENT_API_VERSION = '1.0';\n\nconst ENTERPRISE_COMPONENT_BRIDGE_CHANNEL_NAME_SUFFIX = '-enterprise-component-bridge';\nexport const ENTERPRISE_COMPONENT_BRIDGE_CHANNEL_OPEN_URL_TOPIC = 'open-url';\nconst ENTERPRISE_COMPONENT_BRIDGE_CHANNEL_REGISTERED_TOPIC = 'set-agent-registered';\nconst ENTERPRISE_COMPONENT_BRIDGE_CHANNEL_STATUS_TOPIC = 'set-agent-status';\n\n/**\n * Retrieves the Agent’s configuration data, as has been configured in the Here™ Admin Console.\n *\n * @returns A promise that resolves with an object containing properties that match the Agent’s configuration.\n *\n * @example Retrieving the Agent’s configuration data:\n * ```ts\n * import { Agent } from \"@openfin/cloud-api\";\n *\n * // Get the configuration data\n * const configData = await Agent.getConfiguration<{ customField1: string, customField2: string }>();\n *\n * // Pick out the standard configuration properties\n * const { customData, description, id, title, url } = configData;\n *\n * // Pick out the custom configuration properties\n * if (customData) {\n * const { customField1, customField2 } = customData;\n * }\n * ```\n */\nexport const getConfiguration = async <T extends Record<string, unknown>>(): Promise<T> => {\n const { customData } = await window.fin.me.getOptions();\n const agentInstance = customData as AgentInstance;\n const { configurationFields } = agentInstance;\n return Object.fromEntries(configurationFields?.map((field: { name: string; value: string }) => [field.name, field.value]) ?? []) as T;\n};\n\nasync function joinInteropChannel(features: AgentFeatures, channelName: InteropColorChannel): Promise<void> {\n if (!features.interop) {\n throw new InteropFeatureNotSupportedError();\n }\n const { fdc3Version } = features.interop;\n await interop.joinInteropChannel(fdc3Version, channelName);\n}\n\nexport function logMessage(...args: unknown[]): void {\n console.log(CONSOLE_LOG_PREFIX, ...args);\n}\n\nconst setIsReady = async (channel: OpenFin.ChannelClient, id: string, ready: boolean = true): Promise<void> => {\n logMessage(`Setting status to ${ready ? 'ready' : 'not ready'}`);\n try {\n await channel.dispatch(ENTERPRISE_COMPONENT_BRIDGE_CHANNEL_STATUS_TOPIC, { id, isReady: ready } satisfies SetAgentStatusPayload);\n } catch (error) {\n throw new Error('Failed to set agent status', { cause: error });\n }\n};\n\n/**\n * Registers an Agent.\n *\n * @param config The configuration for the Agent.\n *\n * @returns A promise that resolves with the Agent.\n *\n * @example Registering an Agent that will provide search results:\n * ```ts\n * import { Agent } from \"@openfin/cloud-api\";\n *\n * // Handle incoming action and return a response that includes the URL to navigate to\n * const onAction: Agent.OnSearchActionListener = (action, result) => {\n * const { name } = action;\n * const { data, key } = result;\n * const { owner, searchResultHostUrl } = data as { owner: { id: string, name: string }, searchResultHostUrl: string };\n * const { id: ownerId } = owner;\n *\n * console.log(`Action \"${name}\" triggered on search result with key \"${key}\"`);\n *\n * switch (name) {\n * case \"view-owner\":\n * return { url: `${searchResultHostUrl}/people/${ownerId}` };\n * case \"view-result\":\n * return { url: `${searchResultHostUrl}/record/${key}` };\n * default:\n * console.warn(`Unknown action: ${name}`);\n * }\n * };\n *\n * // Handle incoming search request and return relevant search results\n * const onSearch: Agent.OnSearchRequestListener = ({ context, query, signal }) => {\n * const { pageNumber, pageSize } = context;\n * try {\n * let results: Agent.SearchResult[] = [];\n * const url = `https://my-web-app.com/search?q=${query}&page=${pageNumber}&limit=${pageSize}`;\n * const response = await fetch(url, { signal });\n * if (!response.ok) {\n * throw new Error(`Request failed: ${response.status}`);\n * }\n * const { searchResults } = await response.json();\n * results = searchResults.map((result) => {\n * const { iconUrl, id: key, owner, subTitle, title } = result;\n * const { name: ownerName } = owner as { id: string, name: string };\n * return {\n * actions: [\n * {\n * name: \"view-result\",\n * description: `Go to ${title} in My Web App`,\n * },\n * {\n * name: \"view-owner\",\n * description: `Go to ${ownerName} in My Web App`,\n * title: \"View Owner\",\n * },\n * ],\n * data: {\n * owner,\n * searchResultHostUrl: `https://my-web-app.com`,\n * },\n * icon: iconUrl,\n * key,\n * label: subTitle,\n * title,\n * };\n * });\n * console.log(\"Returning results\", results);\n * return { results };\n * } catch (err) {\n * if ((err as Error).name === \"AbortError\") {\n * // Ignore errors for cancelled requests\n * return { results: [] };\n * }\n * throw err;\n * }\n * };\n *\n * // Register the agent\n * const agent = await Agent.register({ search: { onAction, onSearch } });\n *\n * // Set the Agent as ready to receive requests\n * await agent.isReady();\n * ```\n */\nexport async function register(config: AgentRegistrationConfig): Promise<Agent> {\n const { customData } = await window.fin.me.getOptions();\n const agentInstance = customData as AgentInstance;\n logMessage('Registering agent...', agentInstance);\n\n try {\n // Connect to EB component bridge channel\n const channelName = `${window.fin.me.identity.uuid}${ENTERPRISE_COMPONENT_BRIDGE_CHANNEL_NAME_SUFFIX}`;\n let channel: OpenFin.ChannelClient;\n try {\n channel = await window.fin.InterApplicationBus.Channel.connect(channelName, { wait: false });\n } catch (error) {\n throw new Error('Failed to connect to enterprise component bridge channel', { cause: error });\n }\n\n const { id, features, title } = agentInstance;\n const agent: Agent = {\n features,\n joinInteropChannel: joinInteropChannel.bind(null, features),\n setIsReady: setIsReady.bind(null, channel, id),\n };\n\n // Enable interop features\n if (features.interop) {\n logMessage('Enabling interop features');\n const { defaultChannel, fdc3Version } = features.interop;\n\n // Join default channel\n if (defaultChannel && defaultChannel !== 'none') {\n await interop.joinInteropChannel(fdc3Version, defaultChannel);\n }\n\n // Handle desktop app signals changed\n channel.register('on-desktop-app-signals-changed', handleDesktopAppSignalsChanged.bind(null, agentInstance));\n }\n\n // Enable search features\n if (features.search && config.search) {\n logMessage('Enabling search features');\n const topic = await WorkspaceSearch.subscribe(search.getSearchApiChannelName());\n await topic.register({\n icon: '',\n id,\n onResultDispatch: search.onResultDispatch.bind(null, channel, id, config.search.onAction),\n onUserInput: search.onUserInput.bind(null, id, config.search.onSearch),\n title,\n });\n }\n\n await channel.dispatch(ENTERPRISE_COMPONENT_BRIDGE_CHANNEL_REGISTERED_TOPIC, {\n id,\n apiVersion: CLIENT_API_VERSION,\n } satisfies SetAgentRegisteredPayload);\n logMessage('Registered successfully');\n return agent;\n } catch (error) {\n throw new Error('Failed to register agent', { cause: error });\n }\n}\n\nfunction handleDesktopAppSignalsChanged(agentInstance: AgentInstance, unknownPayload: unknown): void {\n logMessage('Desktop app signals changed', unknownPayload);\n const payload = unknownPayload as DesktopAppSignal[];\n const { type, id, features } = agentInstance;\n const { fdc3Version } = features.interop;\n const agentSignal = payload.find((signal) => {\n if (type === 'agent') {\n return signal.appKey === agentInstance.name;\n } else if (type === 'custom') {\n return signal.appKey === id;\n }\n return false;\n });\n if (agentSignal) {\n interop.joinInteropChannel(fdc3Version, agentSignal.selectedColorChannel);\n }\n}\n","export class InteropFeatureNotSupportedError extends Error {\n constructor() {\n super(`Interop feature is not supported by the agent`);\n }\n}\n","/* eslint-disable unicorn/no-await-expression-member */\n\nimport type { OpenFin } from '@openfin/core';\n\nimport * as agent from '../agent';\nimport type { InteropColorChannel } from '../agent.types';\n\nexport async function joinInteropChannel(fdc3Version: OpenFin.FDC3.Version, channelName: InteropColorChannel): Promise<void> {\n try {\n // Connect to the FDC3 desktop agent\n const desktopAgent = await window.fin.me.interop.getFDC3(fdc3Version);\n\n // Join or leave the interop channel\n if (channelName === 'none') {\n agent.logMessage('Leaving current channel');\n await desktopAgent.leaveCurrentChannel();\n } else {\n agent.logMessage(`Joining interop channel: ${channelName}`);\n await ('joinUserChannel' in desktopAgent ? desktopAgent.joinUserChannel(channelName) : desktopAgent.joinChannel(channelName));\n }\n } catch (error) {\n agent.logMessage(`Failed to join interop channel: ${channelName}`, error);\n }\n}\n","import type { OpenFin } from '@openfin/core';\nimport * as WorkspaceSearch from '@openfin/search-api';\n\nimport { ENTERPRISE_COMPONENT_BRIDGE_CHANNEL_OPEN_URL_TOPIC, logMessage } from '../agent';\n\nimport type { OnSearchActionListener, OnSearchRequestListener, OpenUrlPayload, SearchResult } from './search.types';\n\nconst convertFromSearchResult = (result: SearchResult, providerId: string): WorkspaceSearch.SearchResult => {\n const { data, iconSize, rightSideIcon, ...otherProps } = result as SearchResult & {\n iconSize?: 'standard' | 'large';\n rightSideIcon?: string;\n };\n\n return {\n ...otherProps,\n data: {\n customData: data,\n iconSize,\n providerId,\n resultType: 'app',\n rightSideIcon,\n },\n };\n};\n\nconst convertToSearchResult = (result: WorkspaceSearch.SearchResult): SearchResult => ({\n ...result,\n data: result.data.customData,\n});\n\nexport const getSearchApiChannelName = (): string => `${window.fin.me.identity.uuid}-cloud-api-search`;\n\nconst openUrl = async ({ channel, url, targetIdentity }: { channel: OpenFin.ChannelClient; url: string; targetIdentity: OpenFin.Identity }): Promise<void> => {\n logMessage('Opening URL', { url, targetIdentity });\n\n try {\n await channel.dispatch(ENTERPRISE_COMPONENT_BRIDGE_CHANNEL_OPEN_URL_TOPIC, { url, targetIdentity } satisfies OpenUrlPayload);\n } catch (error) {\n console.error('Failed opening URL', error);\n }\n};\n\nexport const onResultDispatch = async (\n channel: OpenFin.ChannelClient,\n agentId: string,\n onAction: OnSearchActionListener,\n searchResult: WorkspaceSearch.DispatchedSearchResult,\n): Promise<void> => {\n const { action, dispatcherIdentity, ...otherProps } = searchResult;\n\n logMessage('Handling action...', { action, dispatcherIdentity, result: otherProps });\n\n let url: string | undefined;\n try {\n const originalResult = convertToSearchResult(searchResult);\n const originalAction = originalResult.actions?.find(({ name: id }) => id === action.name);\n\n if (!originalAction) {\n throw new Error('Original action not found in search result');\n }\n\n const actionResult = await onAction(originalAction, convertToSearchResult(searchResult));\n url = actionResult?.url;\n } catch (error) {\n logMessage('Error handling dispatch', error);\n throw error;\n }\n\n if (!url) {\n logMessage('OnActionListener did not return a URL');\n return;\n }\n\n await openUrl({ channel, url, targetIdentity: dispatcherIdentity });\n};\n\nexport const onUserInput = async (\n agentId: string,\n onSearch: OnSearchRequestListener,\n request: WorkspaceSearch.SearchListenerRequest,\n): Promise<WorkspaceSearch.SearchResponse> => {\n logMessage('Getting search results...', { request });\n\n try {\n const abortController = new AbortController();\n request.onClose(() => abortController.abort());\n\n const { context, query } = request;\n const { results } = await onSearch({ context, query, signal: abortController.signal });\n\n const convertedResults = results.map((result) => convertFromSearchResult(result, agentId));\n\n logMessage('Returning results', convertedResults);\n\n return { results: convertedResults };\n } catch (error) {\n throw new Error('Error handling search request', { cause: error });\n }\n};\n"],"mappings":"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","names":["require_search_api","__commonJSMin","exports","module","e","t","n","y","Je","Qe","Ge","oe","o","ze","r","i","s","c","a","u","d","l","f","p","h","g","w","v","m","R","C","b","S","I","x","O","P","B","E","k","A","D","L","U","_","T","F","M","$","W","q","K","V","j","H","N","z","J","G","Q","X","Y","Z","ee","te","ne","re","ie","se","ce","ae","ue","de","le","fe","pe","he","ge","we","ye","ve","me","Re","Ce","be","Se","Ie","xe","Oe","Pe","Be","Ee","ke","Ae","De","Le","Ue","_e","Te","Fe","Me","$e","We","qe","Ve","je","He","Ne","Xe","Ye","Ze","PACKAGE_NAME","isInViewContext","extractAppUuidFromIdentity","identity","PACKAGE_NAME","getChannelName","notificationsClientPromise","getNotificationsClient","getNotificationsClientInternal","isInViewContext","extractAppUuidFromIdentity","channelPromise","getChannelClient","message","listener","eventListeners","eventName","listeners","options","notificationId","channelClientPromise","getChannelClientInternal","channel","identity","apiChannelClientPromise","getApiChannelName","getApiChannelClient","getAppSettings","PACKAGE_NAME","isInViewContext","getAppUserSettings","setAppUserSettings","settings","getAppUserPermissions","launchContent","id","options","channel","error","launchSupertab","launchWorkspace","search_exports","__export","getAgentConfiguration","register","WorkspaceSearch","CONSOLE_LOG_PREFIX","CHANNEL_TOPIC_LOG_MESSAGE_PREFIX","CHANNEL_TOPIC_OPEN_URL","CHANNEL_TOPIC_PROVIDER_STATUS_PREFIX","CHANNEL_TOPIC_REGISTERED_PREFIX","SEARCH_PROVIDER_CLIENT_API_VERSION","convertFromSearchResult","result","providerId","data","iconSize","rightSideIcon","otherProps","convertToSearchResult","getAgentConfiguration","customData","getSearchApiChannelName","setIsReady","channel","logMessage","ready","error","args","level","onResultDispatch","agentId","onAction","searchResult","action","dispatcherIdentity","url","originalAction","id","openUrl","onUserInput","onSearch","request","abortController","context","query","results","convertedResults","targetIdentity","register","config","title","topic","logMessageBound","agent_exports","__export","getConfiguration","register","WorkspaceSearch","InteropFeatureNotSupportedError","joinInteropChannel","fdc3Version","channelName","desktopAgent","logMessage","error","WorkspaceSearch","convertFromSearchResult","result","providerId","data","iconSize","rightSideIcon","otherProps","convertToSearchResult","getSearchApiChannelName","openUrl","channel","url","targetIdentity","logMessage","ENTERPRISE_COMPONENT_BRIDGE_CHANNEL_OPEN_URL_TOPIC","error","onResultDispatch","agentId","onAction","searchResult","action","dispatcherIdentity","originalAction","id","onUserInput","onSearch","request","abortController","context","query","results","convertedResults","CONSOLE_LOG_PREFIX","CLIENT_API_VERSION","ENTERPRISE_COMPONENT_BRIDGE_CHANNEL_NAME_SUFFIX","ENTERPRISE_COMPONENT_BRIDGE_CHANNEL_OPEN_URL_TOPIC","ENTERPRISE_COMPONENT_BRIDGE_CHANNEL_REGISTERED_TOPIC","ENTERPRISE_COMPONENT_BRIDGE_CHANNEL_STATUS_TOPIC","getConfiguration","customData","agentInstance","configurationFields","field","joinInteropChannel","features","channelName","InteropFeatureNotSupportedError","fdc3Version","logMessage","args","setIsReady","channel","id","ready","error","register","config","title","agent","defaultChannel","handleDesktopAppSignalsChanged","getSearchApiChannelName","onResultDispatch","onUserInput","unknownPayload","payload","type","agentSignal","signal"]}
|
|
1
|
+
{"version":3,"sources":["../node_modules/@openfin/search-api/index.js","../src/utils.ts","../src/notifications.ts","../src/client-api.ts","../src/search/index.ts","../src/search/search.ts","../src/agent/index.ts","../src/agent/agent.ts","../src/errors.ts","../src/agent/interop/interop.ts","../src/agent/search/search.ts"],"sourcesContent":["(()=>{\"use strict\";var e={d:(t,n)=>{for(var o in n)e.o(n,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:n[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})}},t={};e.r(t),e.d(t,{SearchTagBackground:()=>y,create:()=>Je,defaultTopic:()=>Qe,subscribe:()=>Ge});var n={};e.r(n),e.d(n,{B:()=>oe});var o={};e.r(o),e.d(o,{v:()=>ze});const r=\"deregistered or does not exist\",i=new Error(`provider ${r}`),s=new Error(\"provider with name already exists\"),c=new Error(\"bad payload\"),a=new Error(\"subscription rejected\"),u=new Error(`channel ${r}`);let d;function l(){if(d)return d;throw u}function f(){return d}function p(e){d=e}var h,g,w,y;!function(e){e[e.Initial=0]=\"Initial\",e[e.Open=1]=\"Open\",e[e.Close=2]=\"Close\"}(h||(h={})),function(e){e.Fetching=\"fetching\",e.Fetched=\"fetched\",e.Complete=\"complete\"}(g||(g={})),function(e){e.UserAction=\"user-action\",e.FocusChange=\"focus-change\",e.Reload=\"reload\"}(w||(w={})),function(e){e.Active=\"active\",e.Default=\"default\"}(y||(y={}));const v=\"0\",m=\"1\",R=\"2\",C=\"3\",b=\"4\",S=\"5\",I=\"6\",x=()=>{},O=new Set;function P(e){O.add(e)}function B(e){O.delete(e)}const E=new Set;function k(e){E.add(e)}function A(e){E.delete(e)}const D=new Map;async function L(e){D.set(e.id,e);const t=[...O].map((e=>e()));await Promise.all(t)}async function U(e){D.delete(e);const t=[...E].map((e=>e()));await Promise.all(t)}function _(){return[...D.values()]}function T(){D.clear()}function F(e){return D.get(e)}function M(e,t,n){return{...e,action:n||{...e.actions[0],trigger:w.UserAction},dispatcherIdentity:t}}function $(e,t,n=\"ascending\"){const o=e||[];if(!t?.length)return o;const r=[],i=new Map;t.forEach((e=>{if(e.key)return i.set(e.key,e);r.push(e)}));let s=o.map((e=>{const{key:t}=e;if(t&&i.has(t)){const e=i.get(t);return i.delete(t),e}return e}));return s.push(...i.values(),...r),s=\"ascending\"===n?s.sort(((e,t)=>(e?.score??1/0)-(t?.score??1/0))):s.sort(((e,t)=>(t?.score??1/0)-(e?.score??1/0))),s}function W(e){const t={};let n=[];let o=[];let r=null;let i=h.Initial;t.getStatus=()=>i,t.getResultBuffer=()=>n,t.setResultBuffer=e=>{n=e,n?.length&&t.onChange()},t.getRevokedBuffer=()=>o,t.setRevokedBuffer=e=>{o=e,o?.length&&t.onChange()},t.setUpdatedContext=e=>{r=e,t.onChange()},t.getUpdatedContext=()=>r,t.onChange=x;const s={};return t.res=s,s.close=()=>{i!==h.Close&&(i=h.Close,t.onChange())},s.open=()=>{i!==h.Open&&(i=h.Open,t.onChange())},s.respond=n=>{const o=$(t.getResultBuffer(),n,e);t.setResultBuffer(o)},s.revoke=(...e)=>{const n=new Set(e),o=t.getResultBuffer().filter((({key:e})=>{const t=n.has(e);return t&&n.delete(e),!t}));t.setResultBuffer(o),n.size&&(t.getRevokedBuffer().forEach((e=>n.add(e))),t.setRevokedBuffer([...n]))},s.updateContext=e=>{t.setUpdatedContext(e)},t}function q(e,t){const n=new Set;let o=!1;return{close:()=>{o=!0;for(const e of n)e()},req:{id:e,...t,context:t?.context||{},onClose:e=>{n.add(e),o&&e()},removeListener:e=>{n.delete(e)}}}}function K(){return{name:fin.me.name,uuid:fin.me.uuid}}const V=50,j=1e3;const H=new Map;function N(){return H}const z=100;function J(){return async e=>{if(!e||!e.id||!e.providerId){const e=c;return console.error(e),{error:e.message}}const{id:t,providerId:n}=e,o=F(n);if(!o){const e=i;return console.error(e),{error:e.message}}const r=N();let s=r.get(e.id);s||(s=q(t,e),r.set(e.id,s));const a=W(),u=()=>{const e=a.getResultBuffer();a.setResultBuffer([]);const o=a.getRevokedBuffer();a.setRevokedBuffer([]);const r=a.getUpdatedContext();a.setUpdatedContext(null);const i=a.getStatus();!async function(e){(await l()).dispatch(v,e)}({id:t,providerId:n,results:e,revoked:o,status:i,context:r})};let d=!0,f=!1;a.onChange=()=>{if(d)return d=!1,void u();f||(f=!0,setTimeout((()=>{f=!1,u()}),z))};try{const{results:e,context:r}=await o.onUserInput(s.req,a.res),i=a.getStatus();return{id:t,providerId:n,status:i,results:e,context:r}}catch(e){return console.error(`OpenFin/Workspace/Home. Uncaught exception in search provider ${n} for search ${t}`,\"This is likely a bug in the implementation of the search provider.\",e),{id:t,providerId:n,error:e?.message}}}}async function G(e,t){const n=t||await l(),o=K(),r={...e,identity:o,onResultDispatch:void 0},i=await n.dispatch(R,r);return await L({identity:o,...e}),i}async function Q(e){const t=await l();return await t.dispatch(C,e),U(e)}async function X(e,t,n,o){const r=M(t,o??K(),n),i=F(e);if(i){const{onResultDispatch:e}=i;if(!e)return;return e(r)}const s={providerId:e,result:r};return(await l()).dispatch(S,s)}async function Y(e){const t={...e,context:e?.context||{}},n={},o=async function*(e,{setState:t}){const n=await l();for(;;){const o=await n.dispatch(m,e),r=o.error;if(r)throw new Error(r);const i=o;if(e.id=i.id,t(i.state),i.done)return i.value;yield i.value}}(t,{setState:e=>{n.state=e}});let r=await o.next();return n.id=t.id||\"\",n.close=()=>{!async function(e){(await l()).dispatch(I,{id:e})}(n.id)},n.next=()=>{if(r){const e=r;return r=void 0,e}return o.next()},n}async function Z(){return(await l()).dispatch(b,null)}async function ee(){const e=await l();d=void 0,T(),await e.disconnect()}const te=async e=>{const t=await ne(e);for(const e of _())await G(e,t);return t};async function ne(e){const t=await async function(e){for(let t=0;t<V;t++)try{return await fin.InterApplicationBus.Channel.connect(e,{wait:!1})}catch(e){if(t===V-1)throw e;await new Promise((e=>setTimeout(e,j)))}}(e);return t.register(v,J()),t.register(I,(e=>{const t=N(),n=t.get(e.id);n&&(n.close(),t.delete(e.id))})),t.register(S,(async(e,t)=>{if(!e||!e.providerId||!e.result)return void console.error(c);const n=F(e.providerId);if(!n)return void console.error(i);const{onResultDispatch:o}=n;return o?(e.result.dispatcherIdentity=e.result.dispatcherIdentity??t,o(e.result)):void 0})),t.onDisconnection(function(e){return async()=>{if(!f())return;const t=N();for(const{req:e,close:n}of t.values())n(),t.delete(e.id);p(te(e))}}(e)),t}async function oe(e){let t=f();t||(t=ne(e),p(t));const n=await t;return{getAllProviders:Z.bind(null),register:G.bind(null),search:Y.bind(null),deregister:Q.bind(null),dispatch:X.bind(null),disconnect:ee.bind(null),channel:n}}let re;function ie(){if(re)return re;throw u}function se(){return re}function ce(e){re=e}function ae(){re=void 0}const ue=new Set;function de(e){ue.add(e)}function le(e){ue.delete(e)}var fe;!function(e){e.Local=\"local\",e.Dev=\"dev\",e.Staging=\"staging\",e.Prod=\"prod\"}(fe||(fe={}));const pe=\"undefined\"!=typeof window&&\"undefined\"!=typeof fin,he=(\"undefined\"==typeof process||process.env,\"undefined\"!=typeof window),ge=he?window.origin:fe.Local,we=(pe&&fin.me.uuid,pe&&fin.me.name,pe&&fin.me.entityType,fe.Local,fe.Dev,fe.Staging,fe.Prod,e=>e.startsWith(\"http://\")||e.startsWith(\"https://\")?e:ge+e),ye=(we(\"http://localhost:4002\"),we(\"http://localhost:4002\"),\"undefined\"!=typeof WORKSPACE_DOCS_PLATFORM_URL&&we(WORKSPACE_DOCS_PLATFORM_URL),\"undefined\"!=typeof WORKSPACE_DOCS_CLIENT_URL&&we(WORKSPACE_DOCS_CLIENT_URL),\"20.3.6\");\"undefined\"!=typeof WORKSPACE_BUILD_SHA&&WORKSPACE_BUILD_SHA;async function ve(){return[..._()].map((e=>({...e,onUserInput:void 0,onResultDispatch:void 0})))}async function me(e){if(F(e.id))throw new Error(\"provider with name already exists\");const t=K();return await L({identity:t,...e}),{workspaceVersion:ye||\"\",clientAPIVersion:e.clientAPIVersion||\"\"}}async function Re(e){await U(e)}async function Ce(e,t,n,o){const r=F(e);if(!r)throw i;const{onResultDispatch:s}=r;if(!s)return;return s(M(t,o??K(),n))}async function*be(e,t){const n=function(e,t){const n=[],o=[],r=[],i=[];for(const s of e){const e=W(s.scoreOrder),c={results:[],provider:{id:s.id,identity:s.identity,title:s.title,scoreOrder:s.scoreOrder,icon:s.icon,dispatchFocusEvents:s.dispatchFocusEvents}};n.push(c),o.push(e);const a=(async()=>{try{const{results:n,context:o}=await s.onUserInput(t,e.res);c.results=$(c.results||[],n,s.scoreOrder),c.context={...c.context,...o}}catch(e){c.error=e}})();a.finally((()=>{a.done=!0})),i.push(a),r.push(r.length)}return{providerResponses:n,listenerResponses:o,openListenerResponses:r,initialResponsePromises:i}}(e.targets?e.targets.map((e=>F(e))).filter((e=>!!e)):[..._().filter((e=>!e.hidden))],e),{providerResponses:o,listenerResponses:r}=n;let{openListenerResponses:i,initialResponsePromises:s}=n,c=g.Fetching;const a=e=>{c=e,t.setState(c)};let u,d=!1;e.onClose((()=>{d=!0,u&&u()}));do{let e=!1;if(s.length){const t=[];for(const n of s)n.done?e=!0:t.push(n);s=t,s.length||(a(g.Fetched),e=!0)}let t,n=!1;const l=()=>{n=!0,t&&t()},f=[];for(const t of i){const n=r[t],i=o[t],s=n.getStatus();(s===h.Open||c===g.Fetching&&s===h.Initial)&&(f.push(t),n.onChange=l);const a=n.getResultBuffer();a.length&&(n.setResultBuffer([]),i.results=$(i.results||[],a),e=!0);const u=n.getRevokedBuffer();if(u.length){n.setRevokedBuffer([]);const t=new Set(u);i.results=(i.results||[]).filter((({key:e})=>!t.has(e))),e=!0}const d=n.getUpdatedContext();d&&(n.setUpdatedContext(null),i.context={...i.context,...d},e=!0)}if(i=f,e&&(yield o),d)break;n||(i.length||s.length)&&await Promise.race([...s,new Promise((e=>{t=e})),new Promise((e=>{u=e}))])}while(i.length||s.length);return a(g.Complete),o}let Se=0;async function Ie(e){Se+=1;const t=q(Se.toString(),e),n=be(t.req,{setState:e=>{n.state=e}});return n.id=Se.toString(),n.close=t.close,n.state=g.Fetching,n}const xe=new Map,Oe=1e4;function Pe(){return async e=>{if(!e)return console.error(c),{error:c.message};let t;if(e.id)t=e.id;else{const n=await Ie(e);t=n.id,e.id=n.id,xe.set(t,{generator:n})}const n=xe.get(t);clearTimeout(n.timeout);const o=await n.generator.next();return n.timeout=function(e){return window.setTimeout((()=>{xe.delete(e)}),Oe)}(t),{...o,id:e.id,state:n.generator.state}}}function Be(e,t){return ie().dispatch(e,I,{id:t})}function Ee(){return e=>function(e){const t=xe.get(e);t&&t.generator.close()}(e.id)}async function ke(e,{id:t,query:n,context:o,targets:r=[]}){const i=ie(),s={id:t,query:n,context:o,targets:r,providerId:e.id},c=await i.dispatch(e.identity,v,s),a=c.error;if(a)throw new Error(a);return c}const Ae=new Map;function De(e,t){return`${e.name}:${e.uuid}:${t}`}const Le=new Map;function Ue(e,t){return`${e}:${t}`}function _e(e){const t=De.bind(null,e.identity),n=Be.bind(null,e.identity),o=ke.bind(null,e);return async(r,i)=>{const s=t(r.id);if(!Ae.has(s)){const e=()=>{n(r.id),Ae.delete(s)};Ae.set(s,e),r.onClose(e)}const c=Ue(e.id,r.id),a=()=>{Le.delete(c),i.close()};r.onClose(a),Le.set(c,(e=>{e.results?.length&&i.respond(e.results),e.revoked?.length&&i.revoke(...e.revoked),e.context&&i.updateContext(e.context),e.status===h.Open&&i.open(),e.status===h.Close&&a()}));const u=await o(r);return u.status===h.Open&&i.open(),u.status!==h.Close&&u.status!==h.Initial||a(),u}}function Te(e){return async t=>{const n=ie(),o={providerId:e.id,result:t};return n.dispatch(e.identity,S,o)}}const Fe=new Map;function Me(e){return`${e.name}-${e.uuid}`}function $e(){return async(e,t)=>{if(!e||!e.id)return console.error(new Error(JSON.stringify(e))),void console.error(c);if(F(e.id))throw s;return e.identity=t,await async function(e){const t=Me(e.identity);Fe.has(t)||Fe.set(t,[]),Fe.get(t).push(e.id),await L({...e,onUserInput:_e(e),onResultDispatch:Te(e)})}(e),{workspaceVersion:ye||\"\",clientAPIVersion:e.clientAPIVersion||\"\"}}}function We(){return(e,t)=>{e?function(e,t){const n=F(e);if(!n)return;if(n.identity.uuid!==t.uuid||n.identity.name!==t.name)throw i;const o=Me(n.identity),r=Fe.get(o);if(r){const t=r.findIndex((t=>t===e));-1!==t&&(r.splice(t,1),U(e))}}(e,t):console.error(c)}}const qe=new Set;function Ke(e){qe.add(e)}function Ve(e){qe.delete(e)}function je(){return async e=>{!function(e){const t=Me(e),n=Fe.get(t);if(n){for(const e of n)U(e);Fe.delete(t)}}(e),qe.forEach((t=>t(e)))}}async function He(e){const t=await(n=e,fin.InterApplicationBus.Channel.create(n));var n;return t.onConnection((async e=>{for(const t of ue)if(!await t(e))throw a})),t.onDisconnection(je()),t.register(I,Ee()),t.register(v,(e=>{const t=Ue(e.providerId,e.id),n=Le.get(t);n&&n(e)})),t.register(R,$e()),t.register(C,We()),t.register(b,(async()=>ve())),t.register(m,Pe()),t.register(S,(async(e,t)=>{if(!e||!e.providerId||!e.result)return void console.error(c);const n=F(e.providerId);if(!n)throw i;const{onResultDispatch:o}=n;return o?(e.result.dispatcherIdentity=e.result.dispatcherIdentity??t,o(e.result)):void 0})),t}async function Ne(){const e=ie();ae(),await e.destroy(),T()}async function ze(e){let t=se();t||(t=await He(e),ce(t));const n=le.bind(null),o=Ve.bind(null),r=B.bind(null),i=A.bind(null);return{getAllProviders:ve.bind(null),search:Ie.bind(null),register:me.bind(null),deregister:Re.bind(null),onSubscription:de.bind(null),onDisconnect:Ke.bind(null),onRegister:P.bind(null),onDeregister:k.bind(null),dispatch:Ce.bind(null),disconnect:Ne.bind(null),removeListener:e=>{n(e),o(e),r(e),i(e)},channel:t}}const{v:Je}=o,{B:Ge}=n,Qe=\"all\",Xe={create:Je,subscribe:Ge,defaultTopic:Qe},Ye=()=>{window.search=Xe},Ze=e=>{const t=()=>{Ye(),window.removeEventListener(e,t)};return t};if(\"undefined\"!=typeof window){Ye();const e=\"load\",t=Ze(e);window.addEventListener(e,t);const n=\"DOMContentLoaded\",o=Ze(n);window.addEventListener(n,o)}module.exports=t})();\n//# sourceMappingURL=index.js.map","import type OpenFin from '@openfin/core';\n\nexport const PACKAGE_NAME = '@openfin/cloud-api';\n\nexport async function isInViewContext(): Promise<boolean> {\n try {\n await window.fin.View.getCurrentSync().getInfo();\n return true;\n } catch {\n return false;\n }\n}\n\nexport function extractAppUuidFromIdentity(identity: OpenFin.Identity): string {\n if (identity.name.startsWith('internal-generated')) {\n throw new Error('Cannot extract app UUID from identity');\n }\n // <uuid>/<name>\n if (/\\/[\\d,a-z-]{36}$/.test(identity.name)) {\n return identity.name.split('/')[0] || '';\n }\n\n return identity.name;\n}\n","// eslint-disable-next-line check-file/no-index\nimport type * as NotificationsTypes from '@openfin/workspace/notifications';\n\nimport type { FlannelChannelClient, NotificationEventsMap, NotificationsClient } from './types';\nimport { extractAppUuidFromIdentity, isInViewContext } from './utils';\n\nconst PACKAGE_NAME = '@openfin/cloud-api';\n\nexport type {\n FlannelChannelProvider as __INTERNAL_FlannelChannelProvider,\n FlannelCreateNotificationRequest as __INTERNAL_FlannelCreateNotificationRequest,\n FlannelCreateNotificationResponse as __INTERNAL_FlannelCreateNotificationResponse,\n FlannelUpdateNotificationRequest as __INTERNAL_FlannelUpdateNotificationRequest,\n FlannelUpdateNotificationResponse as __INTERNAL_FlannelUpdateNotificationResponse,\n FlannelClearNotificationRequest as __INTERNAL_FlannelClearNotificationRequest,\n FlannelClearNotificationResponse as __INTERNAL_FlannelClearNotificationResponse,\n} from './types';\n\nfunction getChannelName() {\n return `${window.fin.me.uuid}-cloud-api-notifications`;\n}\n\nlet notificationsClientPromise: Promise<NotificationsClient> | null = null;\n\n/**\n * @returns A client for interacting with the OpenFin Notifications service\n *\n * @throws {Error} If the function is called outside of an OpenFin environment\n * @throws {Error} If the function is called outside of an OpenFin View context\n * @throws {Error} If the app UUID cannot be extracted from the current context\n *\n * @example **Basic Usage** Creating a notification, updating it and then clearing it\n * ```ts\n * const notificationsClient = await getNotificationsClient();\n *\n * const notification = await notificationsClient.createNotification({\n * title: 'Hello, World!',\n * body: 'This is a notification from the OpenFin Cloud API',\n * });\n *\n * // Use the `id` from the returned notification to interact with it\n * console.log(notification.id);\n *\n * // Update the notification\n * await notificationsClient.update({\n * id: notification.id,\n * body: 'This is a notification from the OpenFin Cloud API, that has been updated!',\n * })\n *\n * // Clear the notification\n * await notificationsClient.clear(notification.id);\n * ```\n *\n * @example **Advanced Usage** Listening for events\n * ```ts\n * const notificationsClient = await getNotificationsClient();\n *\n * // create the notification\n * const notification = await notificationsClient.createNotification({\n * title: `${window.fin.me.identity.name} Hello, World!`,\n * body: `This is a notification from the cloud API example created at ${new Date().toLocaleTimeString()}`,\n * buttons: [\n * {\n * title: 'Acknowledge',\n * },\n * ],\n * });\n *\n * notificationsClient.addEventListener('notification-action', (event) => {\n * console.log('Notification action:', event);\n * });\n * ```\n */\nasync function getNotificationsClient(): Promise<NotificationsClient> {\n if (!notificationsClientPromise) {\n notificationsClientPromise = getNotificationsClientInternal();\n }\n\n return notificationsClientPromise;\n}\n\nasync function getNotificationsClientInternal(): Promise<NotificationsClient> {\n if (!window.fin) {\n throw new Error(`\\`${PACKAGE_NAME}\\`: \\`getNotificationsClient\\` cannot be used in a non-OpenFin environment`);\n }\n\n if ((await isInViewContext()) === false) {\n throw new Error(`${PACKAGE_NAME}: \\`getNotificationsClient\\` cannot be used in a non-OpenFin environment`);\n }\n\n extractAppUuidFromIdentity(window.fin.me);\n\n const channelPromise = await getChannelClient();\n console.log(channelPromise);\n\n channelPromise.register('openfin-cloud-event', (message) => {\n for (const listener of eventListeners.get(message.type) ?? []) {\n // `Date` is serialized as a string, so we need to convert it back\n if (typeof message.payload.timestamp === 'string') {\n message.payload.timestamp = new Date(message.payload.timestamp);\n }\n\n listener(message.payload as never);\n }\n });\n\n const eventListeners = new Map<keyof NotificationEventsMap, Set<NotificationEventsMap[keyof NotificationEventsMap]>>();\n\n return {\n addEventListener: <T extends keyof NotificationEventsMap>(eventName: T, listener: NotificationEventsMap[T]) => {\n const listeners = eventListeners.get(eventName) || new Set();\n listeners.add(listener);\n eventListeners.set(eventName, listeners);\n },\n removeEventListener: <T extends keyof NotificationEventsMap>(eventName: T, listener: NotificationEventsMap[T]) => {\n const listeners = eventListeners.get(eventName);\n if (!listeners) {\n console.warn(\n `\\`${PACKAGE_NAME}\\`: Listener was not found for event. Did you pass a function directly instead of a reference or forget to add the listener?`,\n eventName,\n );\n return;\n }\n\n if (listeners.delete(listener as (args: unknown) => void) === false) {\n console.warn(`\\`${PACKAGE_NAME}\\`: Listener was not found for event. Did you pass a function directly instead of a reference?`, eventName);\n }\n },\n update: async (options: Parameters<typeof NotificationsTypes.update>[0]): ReturnType<typeof NotificationsTypes.update> => {\n const response = await channelPromise.dispatch('openfin-cloud-update-notification', {\n version: 1,\n payload: {\n notification: options,\n },\n });\n return response.payload.response;\n },\n clear: async (notificationId: Parameters<typeof NotificationsTypes.clear>[0]): ReturnType<typeof NotificationsTypes.clear> => {\n const response = await channelPromise.dispatch('openfin-cloud-clear-notification', {\n version: 1,\n payload: {\n notificationId,\n },\n });\n return response.payload.response;\n },\n createNotification: async (\n options: NotificationsTypes.NotificationOptions,\n ): Promise<NotificationsTypes.Notification<NotificationsTypes.NotificationOptions>> => {\n if (options.id) {\n console.warn(\n `\\`${PACKAGE_NAME}\\`: The \\`id\\` property is not supported and will be ignored. If you need to use the \\`id\\` property, you should use the \\`id\\` property of the returned notification object.`,\n );\n }\n const response = await channelPromise.dispatch('openfin-cloud-create-notification', {\n version: 1,\n payload: {\n notification: { ...options, id: undefined },\n },\n });\n return response.payload.response;\n },\n };\n}\n\nlet channelClientPromise: Promise<FlannelChannelClient> | null = null;\n\nasync function getChannelClient(): Promise<FlannelChannelClient> {\n if (!channelClientPromise) {\n channelClientPromise = getChannelClientInternal();\n }\n\n return channelClientPromise;\n}\n\nasync function getChannelClientInternal(): Promise<FlannelChannelClient> {\n const channel = (await window.fin.InterApplicationBus.Channel.connect(getChannelName())) as FlannelChannelClient;\n\n channel.onDisconnection((identity) => {\n console.warn(`\\`${PACKAGE_NAME}\\`: Channel Disconnected from`, identity, 'Reconnecting...');\n channelClientPromise = null;\n });\n\n return channel;\n}\n\nexport { getNotificationsClient };\n","import type OpenFin from '@openfin/core';\n\nimport { isInViewContext, PACKAGE_NAME } from './utils';\n\nlet apiChannelClientPromise: Promise<OpenFin.ChannelClient>;\n\n/**\n * Represents a collection of returned app permissions\n */\nexport type AppPermissions = {\n permissions: {\n /**\n * The name of the permission\n */\n name: string;\n /**\n * The ID of the permission\n */\n id: string;\n }[];\n};\n\nfunction getApiChannelName() {\n return `${window.fin.me.uuid}-client-api`;\n}\n\nasync function getApiChannelClient(): Promise<OpenFin.ChannelClient> {\n if (!apiChannelClientPromise) {\n apiChannelClientPromise = window.fin.InterApplicationBus.Channel.connect(getApiChannelName());\n }\n\n return apiChannelClientPromise;\n}\n\n/**\n * @returns The app settings that have been set against the current app\n *\n * @throws {Error} If the function is called outside of an OpenFin environment\n * @throws {Error} If the function is called outside of an OpenFin View context\n */\nasync function getAppSettings(): Promise<unknown> {\n if (!window.fin) {\n throw new Error(`\\`${PACKAGE_NAME}\\`: \\`getAppSettings\\` cannot be used in a non-OpenFin environment`);\n }\n\n if ((await isInViewContext()) === false) {\n throw new Error(`${PACKAGE_NAME}: \\`getAppSettings\\` cannot be used in a non-OpenFin environment`);\n }\n\n const channel = await getApiChannelClient();\n\n return channel.dispatch('get-settings');\n}\n\n/**\n * @returns The app settings that have been set against the current app for the current user\n *\n * @throws {Error} If the function is called outside of an OpenFin environment\n * @throws {Error} If the function is called outside of an OpenFin View context\n */\nasync function getAppUserSettings(): Promise<unknown> {\n if (!window.fin) {\n throw new Error(`\\`${PACKAGE_NAME}\\`: \\`getAppUserSettings\\` cannot be used in a non-OpenFin environment`);\n }\n\n if ((await isInViewContext()) === false) {\n throw new Error(`${PACKAGE_NAME}: \\`getAppUserSettings\\` cannot be used in a non-OpenFin environment`);\n }\n\n const channel = await getApiChannelClient();\n\n return channel.dispatch('get-user-settings');\n}\n\n/**\n * Assigns a set of user specific settings to the current app\n *\n * @returns The app settings that have been set against the current app for the current user\n *\n * @throws {Error} If the function is called outside of an OpenFin environment\n * @throws {Error} If the function is called outside of an OpenFin View context\n */\nasync function setAppUserSettings(settings: unknown): Promise<unknown> {\n if (!window.fin) {\n throw new Error(`\\`${PACKAGE_NAME}\\`: \\`setAppUserSettings\\` cannot be used in a non-OpenFin environment`);\n }\n\n if ((await isInViewContext()) === false) {\n throw new Error(`${PACKAGE_NAME}: \\`setAppUserSettings\\` cannot be used in a non-OpenFin environment`);\n }\n\n const channel = await getApiChannelClient();\n\n return channel.dispatch('set-user-settings', settings);\n}\n\n/**\n * @returns The permissions that have been set against the current app for the current user\n *\n * @throws {Error} If the function is called outside of an OpenFin environment\n * @throws {Error} If the function is called outside of an OpenFin View context\n */\nasync function getAppUserPermissions(): Promise<AppPermissions> {\n if (!window.fin) {\n throw new Error(`\\`${PACKAGE_NAME}\\`: \\`getAppUserPermissions\\` cannot be used in a non-OpenFin environment`);\n }\n\n if ((await isInViewContext()) === false) {\n throw new Error(`${PACKAGE_NAME}: \\`getAppUserPermissions\\` cannot be used in a non-OpenFin environment`);\n }\n\n const channel = await getApiChannelClient();\n\n return channel.dispatch('get-user-permissions');\n}\n\nexport type LaunchContentOptions = {\n /** Object containing query param values to be appended to content's URL */\n queryParams?: Record<string, string>;\n /** Defines behavior when instance of content is already running.\n * If 'multi', copy of the content will be created.\n * If 'single', the existing instance of content will be focused. */\n instanceMode?: 'single' | 'multi';\n} & (\n | {\n targetType?: 'new-window';\n /** Defines the bounds of the window in which content will open */\n bounds?: Partial<OpenFin.Bounds>;\n }\n | {\n targetType: 'window' | 'view';\n targetIdentity: OpenFin.Identity;\n }\n);\n/**\n * A function allowing the easy launching of content\n * @param id The id of the content to launch\n * @returns nothing\n *\n * @throws {Error} If the function is called outside of an OpenFin environment\n * @throws {Error} If the function is called outside of an OpenFin View context\n * @throws {Error} If the function has been unable to look up or launch the content\n * @throws {Error} If the function is unable to find content with the provided id.\n */\nasync function launchContent(id: string, options: LaunchContentOptions): Promise<void> {\n if (!window.fin) {\n throw new Error(`\\`${PACKAGE_NAME}\\`: \\`launchContent\\` cannot be used in a non-OpenFin environment`);\n }\n\n if ((await isInViewContext()) === false) {\n throw new Error(`${PACKAGE_NAME}: \\`launchContent\\` cannot be used in a outside of an OpenFin View context`);\n }\n\n const channel = await getApiChannelClient();\n\n try {\n await channel.dispatch('launch-content', { id, options });\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n switch (errorMessage) {\n case 'UnableToLookup': {\n throw new Error(`${PACKAGE_NAME}: \\`launchContent\\` was unable to lookup content with id: ${id}`);\n }\n case 'UnableToLaunch': {\n throw new Error(`${PACKAGE_NAME}: \\`launchContent\\` was unable to launch content with id: ${id}`);\n }\n case 'NoContentFound': {\n throw new Error(`${PACKAGE_NAME}: \\`launchContent\\` did not find content with id: ${id}`);\n }\n default: {\n throw new Error(`${PACKAGE_NAME}: \\`launchContent\\` was unable to look up or launch content with id: ${id} or the content did not exist.`);\n }\n }\n }\n}\n\n/**\n * A function allowing the easy launching of Supertabs\n * @param id The id of supertab\n * @returns nothing\n *\n * @throws {Error} If the function is called outside of an OpenFin environment\n * @throws {Error} If the function is called outside of an OpenFin View context\n * @throws {Error} If the function has been unable to look up or launch the supertab\n * @throws {Error} If the function is unable to find supertab with the provided id.\n */\nasync function launchSupertab(id: string): Promise<void> {\n if (!window.fin) {\n throw new Error(`\\`${PACKAGE_NAME}\\`: \\`launchSupertab\\` cannot be used in a non-OpenFin environment`);\n }\n\n if ((await isInViewContext()) === false) {\n throw new Error(`${PACKAGE_NAME}: \\`launchSupertab\\` cannot be used in a outside of an OpenFin View context`);\n }\n\n const channel = await getApiChannelClient();\n\n try {\n await channel.dispatch('launch-supertab', { id });\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n switch (errorMessage) {\n case 'UnableToLookup': {\n throw new Error(`${PACKAGE_NAME}: \\`launchSupertab\\` was unable to lookup content with id: ${id}`);\n }\n case 'UnableToLaunch': {\n throw new Error(`${PACKAGE_NAME}: \\`launchSupertab\\` was unable to launch content with id: ${id}`);\n }\n case 'NoContentFound': {\n throw new Error(`${PACKAGE_NAME}: \\`launchSupertab\\` did not find content with id: ${id}`);\n }\n default: {\n throw new Error(`${PACKAGE_NAME}: \\`launchSupertab\\` was unable to look up or launch content with id: ${id} or the content did not exist.`);\n }\n }\n }\n}\n\n/**\n * A function allowing the easy launching of Workspaces\n * @param id The id of workspace\n * @returns nothing\n *\n * @throws {Error} If the function is called outside of an OpenFin environment\n * @throws {Error} If the function is called outside of an OpenFin View context\n * @throws {Error} If the function has been unable to look up or launch the workspace\n * @throws {Error} If the function is unable to find workspace with the provided id.\n */\nasync function launchWorkspace(id: string): Promise<void> {\n if (!window.fin) {\n throw new Error(`\\`${PACKAGE_NAME}\\`: \\`launchWorkspace\\` cannot be used in a non-OpenFin environment`);\n }\n\n if ((await isInViewContext()) === false) {\n throw new Error(`${PACKAGE_NAME}: \\`launchWorkspace\\` cannot be used in a outside of an OpenFin View context`);\n }\n\n const channel = await getApiChannelClient();\n\n try {\n await channel.dispatch('launch-workspace', { id });\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n switch (errorMessage) {\n case 'UnableToLookup': {\n throw new Error(`${PACKAGE_NAME}: \\`launchWorkspace\\` was unable to lookup content with id: ${id}`);\n }\n case 'UnableToLaunch': {\n throw new Error(`${PACKAGE_NAME}: \\`launchWorkspace\\` was unable to launch content with id: ${id}`);\n }\n case 'NoContentFound': {\n throw new Error(`${PACKAGE_NAME}: \\`launchWorkspace\\` did not find content with id: ${id}`);\n }\n default: {\n throw new Error(`${PACKAGE_NAME}: \\`launchWorkspace\\` was unable to look up or launch content with id: ${id} or the content did not exist.`);\n }\n }\n }\n}\n\nexport { getAppSettings, getAppUserSettings, setAppUserSettings, getAppUserPermissions, launchContent, launchSupertab, launchWorkspace };\n","/* eslint-disable check-file/no-index */\nexport { getAgentConfiguration, register } from './search';\nexport type {\n OnActionListener,\n OnSearchListener,\n SearchAction,\n SearchAgent,\n SearchAgentConfigurationData,\n SearchAgentRegistrationConfig,\n SearchListenerRequest,\n SearchRequestContext,\n SearchResponse,\n SearchResult,\n SearchResultActionResponse,\n} from './search.types';\n","import type { OpenFin } from '@openfin/core';\nimport * as WorkspaceSearch from '@openfin/search-api';\n\nimport type {\n LogMessageChannelTopicPayload,\n OnActionListener,\n OnSearchListener,\n OpenUrlChannelTopicPayload,\n ProviderStatusChannelTopicPayload,\n SearchAgent,\n SearchAgentConfigurationData,\n SearchAgentLogLevel,\n SearchAgentRegistrationConfig,\n SearchAgentWindowCustomData,\n SearchResult,\n} from './search.types';\n\nconst CONSOLE_LOG_PREFIX = '[here-agent]';\nconst CHANNEL_TOPIC_LOG_MESSAGE_PREFIX = 'log-message-';\nconst CHANNEL_TOPIC_OPEN_URL = 'open-url';\nconst CHANNEL_TOPIC_PROVIDER_STATUS_PREFIX = 'provider-status-';\nconst CHANNEL_TOPIC_REGISTERED_PREFIX = 'registered-';\nconst SEARCH_PROVIDER_CLIENT_API_VERSION = '1.0';\n\nfunction convertFromSearchResult(result: SearchResult, providerId: string): WorkspaceSearch.SearchResult {\n const { data, iconSize, rightSideIcon, ...otherProps } = result as SearchResult & {\n iconSize?: 'standard' | 'large';\n rightSideIcon?: string;\n };\n return {\n ...otherProps,\n data: {\n customData: data,\n iconSize,\n providerId,\n resultType: 'app',\n rightSideIcon,\n },\n };\n}\n\nfunction convertToSearchResult(result: WorkspaceSearch.SearchResult): SearchResult {\n return {\n ...result,\n data: result.data.customData,\n };\n}\n\n/**\n * Retrieves the Search Agent's configuration data, as has been configured in the HERE Admin Console.\n *\n * @returns A promise that resolves with an object containing properties that match the Search Agent’s configuration.\n *\n * @example Retrieving the Search Agent’s configuration data:\n * ```ts\n * import { Search } from \"@openfin/cloud-api\";\n *\n * // Get the configuration data\n * const configData = await Search.getAgentConfiguration<{ customField1: string, customField2: string }>();\n *\n * // Pick out the standard configuration properties\n * const { customData, description, id, title, url } = configData;\n *\n * // Pick out the custom configuration properties\n * if (customData) {\n * const { customField1, customField2 } = customData;\n * }\n * ```\n */\nexport async function getAgentConfiguration<T extends object>(): Promise<SearchAgentConfigurationData<T>> {\n const { customData } = await window.fin.me.getOptions();\n return customData;\n}\n\nfunction getSearchApiChannelName(): string {\n return `${window.fin.me.identity.uuid}-cloud-api-search`;\n}\n\nasync function setIsReady(\n channel: OpenFin.ChannelClient,\n logMessage: (level: SearchAgentLogLevel, ...args: unknown[]) => Promise<void>,\n providerId: string,\n ready: boolean = true,\n): Promise<void> {\n await logMessage('info', `Setting status as ${ready ? 'ready' : 'not ready'}`);\n try {\n await channel.dispatch(`${CHANNEL_TOPIC_PROVIDER_STATUS_PREFIX}${providerId}`, { isReady: ready } satisfies ProviderStatusChannelTopicPayload);\n } catch (error) {\n const args = ['Error setting provider status', error];\n console.error(...args);\n logMessage('error', ...args);\n }\n}\n\nasync function logMessage(channel: OpenFin.ChannelClient, providerId: string, level: SearchAgentLogLevel, ...args: unknown[]) {\n try {\n console.log(CONSOLE_LOG_PREFIX, ...args);\n await channel.dispatch(`${CHANNEL_TOPIC_LOG_MESSAGE_PREFIX}${providerId}`, { level, message: args } satisfies LogMessageChannelTopicPayload);\n } catch (error) {\n console.error('Error logging message', error);\n }\n}\n\nasync function onResultDispatch(\n channel: OpenFin.ChannelClient,\n agentId: string,\n logMessage: (level: SearchAgentLogLevel, ...args: unknown[]) => Promise<void>,\n onAction: OnActionListener,\n searchResult: WorkspaceSearch.DispatchedSearchResult,\n): Promise<void> {\n const { action, dispatcherIdentity, ...otherProps } = searchResult;\n await logMessage('info', 'Handling action', { action, dispatcherIdentity, result: otherProps });\n let url: string | undefined;\n try {\n const originalResult = convertToSearchResult(searchResult);\n const originalAction = originalResult.actions?.find(({ name: id }) => id === action.name);\n if (!originalAction) {\n throw new Error('Original action not found in search result');\n }\n const actionResult = await onAction(originalAction, convertToSearchResult(searchResult));\n url = actionResult?.url;\n } catch (error) {\n await logMessage('error', 'Error handling dispatch', error);\n throw error;\n }\n if (!url) {\n await logMessage('warn', 'OnActionListener did not return a URL');\n return;\n }\n await openUrl(channel, logMessage, agentId, url, dispatcherIdentity);\n}\n\nasync function onUserInput(\n agentId: string,\n logMessage: (level: SearchAgentLogLevel, ...args: unknown[]) => Promise<void>,\n onSearch: OnSearchListener,\n request: WorkspaceSearch.SearchListenerRequest,\n): Promise<WorkspaceSearch.SearchResponse> {\n await logMessage('info', 'Getting search results', { request });\n try {\n const abortController = new AbortController();\n request.onClose(() => abortController.abort());\n const { context, query } = request;\n const { results } = await onSearch({ context, query, signal: abortController.signal });\n const convertedResults = results.map((result) => convertFromSearchResult(result, agentId));\n await logMessage('info', 'Returning results', convertedResults);\n return { results: convertedResults };\n } catch (error) {\n const args = ['Error handling search', error];\n console.error(...args);\n logMessage('error', ...args);\n throw error;\n }\n}\n\nasync function openUrl(\n channel: OpenFin.ChannelClient,\n logMessage: (level: SearchAgentLogLevel, ...args: unknown[]) => Promise<void>,\n providerId: string,\n url: string,\n targetIdentity: OpenFin.Identity,\n): Promise<void> {\n await logMessage('info', 'Opening URL', { url, targetIdentity });\n try {\n await channel.dispatch(CHANNEL_TOPIC_OPEN_URL, { url, targetIdentity, providerId } satisfies OpenUrlChannelTopicPayload);\n } catch (error) {\n const args = ['Error opening URL', error];\n console.error(...args);\n logMessage('error', ...args);\n }\n}\n\n/**\n * Registers a Search Agent that will provide search results to HERE's search UI in response to user input and act on the user's actions regarding those results.\n *\n * @param config The configuration for the Search Agent.\n *\n * @returns A promise that resolves with the Search Agent.\n *\n * @example Registering a basic Search Agent:\n * ```ts\n * import { Search } from \"@openfin/cloud-api\";\n *\n * // Handle incoming action and return a response that includes the URL to navigate to\n * const onAction: Search.OnActionListener = (action, result) => {\n * const { name } = action;\n * const { data, key } = result;\n * const { owner, searchResultHostUrl } = data as { owner: { id: string, name: string }, searchResultHostUrl: string };\n * const { id: ownerId } = owner;\n * console.log(`Action \"${name}\" triggered on search result with key \"${key}\"`);\n * switch (name) {\n * case \"view-owner\":\n * return { url: `${searchResultHostUrl}/people/${ownerId}` };\n * case \"view-result\":\n * return { url: `${searchResultHostUrl}/record/${key}` };\n * default:\n * console.warn(`Unknown action: ${name}`);\n * }\n * };\n *\n * // Handle incoming search request and return relevant search results\n * const onSearch: Search.OnSearchListener = ({ context, query, signal }) => {\n * const { pageNumber, pageSize } = context;\n * try {\n * let results: Search.SearchResult[] = [];\n * const url = `https://my-web-app.com/search?q=${query}&page=${pageNumber}&limit=${pageSize}`;\n * const response = await fetch(url, { signal });\n * if (!response.ok) {\n * throw new Error(`Request failed: ${response.status}`);\n * }\n * const { searchResults } = await response.json();\n * results = searchResults.map((result) => {\n * const { iconUrl, id: key, owner, subTitle, title } = result;\n * const { name: ownerName } = owner as { id: string, name: string };\n * return {\n * actions: [\n * {\n * name: \"view-result\",\n * description: `Go to ${title} in My Web App`,\n * },\n * {\n * name: \"view-owner\",\n * description: `Go to ${ownerName} in My Web App`,\n * title: \"View Owner\",\n * },\n * ],\n * data: {\n * owner,\n * searchResultHostUrl: `https://my-web-app.com`,\n * },\n * icon: iconUrl,\n * key,\n * label: subTitle,\n * title,\n * };\n * });\n * console.log(\"Returning results\", results);\n * return { results };\n * } catch (err) {\n * if ((err as Error).name === \"AbortError\") {\n * // Ignore errors for cancelled requests\n * return { results: [] };\n * }\n * throw err;\n * }\n * };\n *\n * // Register the search agent\n * const searchAgent = await Search.register({ onAction, onSearch });\n *\n * // Set the Search Agent as ready to receive search requests\n * await searchAgent.isReady();\n * ```\n *\n * @deprecated Use `Agent.register` instead.\n */\nexport async function register(config: SearchAgentRegistrationConfig): Promise<SearchAgent> {\n // Get provider configuration from window options custom data\n const windowOptions = await window.fin.me.getOptions();\n const customData = windowOptions.customData as SearchAgentWindowCustomData;\n const { id, title } = customData;\n\n // Subscribe to the search topic and register the search provider\n const { onAction, onSearch } = config;\n const topic = await WorkspaceSearch.subscribe(getSearchApiChannelName());\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment, @typescript-eslint/prefer-ts-expect-error\n // @ts-ignore - The following line will error if the @openfin/core version used is different to the one used in @openfin/search-api\n const channel = topic.channel as OpenFin.ChannelClient;\n const logMessageBound = logMessage.bind(null, channel, id);\n await topic.register({\n icon: '',\n id,\n onResultDispatch: onResultDispatch.bind(null, channel, id, logMessageBound, onAction),\n onUserInput: onUserInput.bind(null, id, logMessageBound, onSearch),\n title,\n });\n await topic.channel.dispatch(`${CHANNEL_TOPIC_REGISTERED_PREFIX}${id}`, { version: SEARCH_PROVIDER_CLIENT_API_VERSION });\n logMessageBound('info', 'Registered search topic', { id, title });\n\n return {\n isReady: setIsReady.bind(null, channel, logMessageBound, id),\n };\n}\n","/* eslint-disable check-file/no-index */\nexport { getConfiguration, register } from './agent';\nexport type { Agent, AgentFeatures, AgentRegistrationConfig, AgentSearchFilter, InteropColorChannel } from './agent.types';\nexport type { OnSearchActionListener, OnSearchRequestListener, SearchListenerRequest } from './search/search.types';\n","import type { OpenFin } from '@openfin/core';\nimport * as WorkspaceSearch from '@openfin/search-api';\n\nimport { InteropFeatureNotSupportedError } from '../errors';\n\nimport * as interop from './interop/interop';\nimport * as search from './search/search';\nimport type {\n Agent,\n AgentFeatures,\n AgentInstance,\n AgentRegistrationConfig,\n DesktopAppSignal,\n InteropColorChannel,\n SetAgentRegisteredPayload,\n SetAgentStatusPayload as SetAgentStatusPayload,\n} from './agent.types';\n\nconst CONSOLE_LOG_PREFIX = '[here-agent]';\nconst CLIENT_API_VERSION = '1.0';\n\nconst ENTERPRISE_COMPONENT_BRIDGE_CHANNEL_NAME_SUFFIX = '-enterprise-component-bridge';\nexport const ENTERPRISE_COMPONENT_BRIDGE_CHANNEL_OPEN_URL_TOPIC = 'open-url';\nconst ENTERPRISE_COMPONENT_BRIDGE_CHANNEL_REGISTERED_TOPIC = 'set-agent-registered';\nconst ENTERPRISE_COMPONENT_BRIDGE_CHANNEL_STATUS_TOPIC = 'set-agent-status';\n\n/**\n * Retrieves the Agent's configuration data, as has been configured in the HERE Admin Console.\n *\n * @returns A promise that resolves with an object containing properties that match the Agent’s configuration.\n *\n * @example Retrieving the Agent’s configuration data:\n * ```ts\n * import { Agent } from \"@openfin/cloud-api\";\n *\n * // Get the configuration data\n * const configData = await Agent.getConfiguration<{ customField1: string, customField2: string }>();\n *\n * // Pick out the standard configuration properties\n * const { customData, description, id, title, url } = configData;\n *\n * // Pick out the custom configuration properties\n * if (customData) {\n * const { customField1, customField2 } = customData;\n * }\n * ```\n */\nexport const getConfiguration = async <T extends Record<string, unknown>>(): Promise<T> => {\n const { customData } = await window.fin.me.getOptions();\n const agentInstance = customData as AgentInstance;\n const { configurationFields } = agentInstance;\n return Object.fromEntries(configurationFields?.map((field: { name: string; value: string }) => [field.name, field.value]) ?? []) as T;\n};\n\nasync function joinInteropChannel(features: AgentFeatures, channelName: InteropColorChannel): Promise<void> {\n if (!features.interop) {\n throw new InteropFeatureNotSupportedError();\n }\n const { fdc3Version } = features.interop;\n await interop.joinInteropChannel(fdc3Version, channelName);\n}\n\nexport function logMessage(...args: unknown[]): void {\n console.log(CONSOLE_LOG_PREFIX, ...args);\n}\n\nconst setIsReady = async (channel: OpenFin.ChannelClient, id: string, ready: boolean = true): Promise<void> => {\n logMessage(`Setting status to ${ready ? 'ready' : 'not ready'}`);\n try {\n await channel.dispatch(ENTERPRISE_COMPONENT_BRIDGE_CHANNEL_STATUS_TOPIC, { id, isReady: ready } satisfies SetAgentStatusPayload);\n } catch (error) {\n throw new Error('Failed to set agent status', { cause: error });\n }\n};\n\n/**\n * Registers an Agent.\n *\n * @param config The configuration for the Agent.\n *\n * @returns A promise that resolves with the Agent.\n *\n * @example Registering an Agent that will provide search results:\n * ```ts\n * import { Agent } from \"@openfin/cloud-api\";\n *\n * // Handle incoming action and return a response that includes the URL to navigate to\n * const onAction: Agent.OnSearchActionListener = (action, result) => {\n * const { name } = action;\n * const { data, key } = result;\n * const { owner, searchResultHostUrl } = data as { owner: { id: string, name: string }, searchResultHostUrl: string };\n * const { id: ownerId } = owner;\n *\n * console.log(`Action \"${name}\" triggered on search result with key \"${key}\"`);\n *\n * switch (name) {\n * case \"view-owner\":\n * return { url: `${searchResultHostUrl}/people/${ownerId}` };\n * case \"view-result\":\n * return { url: `${searchResultHostUrl}/record/${key}` };\n * default:\n * console.warn(`Unknown action: ${name}`);\n * }\n * };\n *\n * // Handle incoming search request and return relevant search results\n * const onSearch: Agent.OnSearchRequestListener = ({ context, query, signal }) => {\n * const { pageNumber, pageSize } = context;\n * try {\n * let results: Agent.SearchResult[] = [];\n * const url = `https://my-web-app.com/search?q=${query}&page=${pageNumber}&limit=${pageSize}`;\n * const response = await fetch(url, { signal });\n * if (!response.ok) {\n * throw new Error(`Request failed: ${response.status}`);\n * }\n * const { searchResults } = await response.json();\n * results = searchResults.map((result) => {\n * const { iconUrl, id: key, owner, subTitle, title } = result;\n * const { name: ownerName } = owner as { id: string, name: string };\n * return {\n * actions: [\n * {\n * name: \"view-result\",\n * description: `Go to ${title} in My Web App`,\n * },\n * {\n * name: \"view-owner\",\n * description: `Go to ${ownerName} in My Web App`,\n * title: \"View Owner\",\n * },\n * ],\n * data: {\n * owner,\n * searchResultHostUrl: `https://my-web-app.com`,\n * },\n * icon: iconUrl,\n * key,\n * label: subTitle,\n * title,\n * };\n * });\n * console.log(\"Returning results\", results);\n * return { results };\n * } catch (err) {\n * if ((err as Error).name === \"AbortError\") {\n * // Ignore errors for cancelled requests\n * return { results: [] };\n * }\n * throw err;\n * }\n * };\n *\n * // Register the agent\n * const agent = await Agent.register({ search: { onAction, onSearch } });\n *\n * // Set the Agent as ready to receive requests\n * await agent.isReady();\n * ```\n */\nexport async function register(config: AgentRegistrationConfig): Promise<Agent> {\n const { customData } = await window.fin.me.getOptions();\n const agentInstance = customData as AgentInstance;\n logMessage('Registering agent...', agentInstance);\n\n try {\n // Connect to EB component bridge channel\n const channelName = `${window.fin.me.identity.uuid}${ENTERPRISE_COMPONENT_BRIDGE_CHANNEL_NAME_SUFFIX}`;\n let channel: OpenFin.ChannelClient;\n try {\n channel = await window.fin.InterApplicationBus.Channel.connect(channelName, { wait: false });\n } catch (error) {\n throw new Error('Failed to connect to enterprise component bridge channel', { cause: error });\n }\n\n const { id, features, title } = agentInstance;\n const agent: Agent = {\n features,\n joinInteropChannel: joinInteropChannel.bind(null, features),\n setIsReady: setIsReady.bind(null, channel, id),\n };\n\n // Enable interop features\n if (features.interop) {\n logMessage('Enabling interop features');\n const { defaultChannel, fdc3Version } = features.interop;\n\n // Join default channel\n if (defaultChannel && defaultChannel !== 'none') {\n await interop.joinInteropChannel(fdc3Version, defaultChannel);\n }\n\n // Handle desktop app signals changed\n channel.register('on-desktop-app-signals-changed', handleDesktopAppSignalsChanged.bind(null, agentInstance));\n }\n\n // Enable search features\n if (features.search && config.search) {\n logMessage('Enabling search features');\n const topic = await WorkspaceSearch.subscribe(search.getSearchApiChannelName());\n await topic.register({\n icon: '',\n id,\n onResultDispatch: search.onResultDispatch.bind(null, channel, id, config.search.onAction),\n onUserInput: search.onUserInput.bind(null, id, config.search.onSearch),\n title,\n });\n }\n\n await channel.dispatch(ENTERPRISE_COMPONENT_BRIDGE_CHANNEL_REGISTERED_TOPIC, {\n id,\n apiVersion: CLIENT_API_VERSION,\n } satisfies SetAgentRegisteredPayload);\n logMessage('Registered successfully');\n return agent;\n } catch (error) {\n throw new Error('Failed to register agent', { cause: error });\n }\n}\n\nfunction handleDesktopAppSignalsChanged(agentInstance: AgentInstance, unknownPayload: unknown): void {\n logMessage('Desktop app signals changed', unknownPayload);\n const payload = unknownPayload as DesktopAppSignal[];\n const { type, id, features } = agentInstance;\n const { fdc3Version } = features.interop;\n const agentSignal = payload.find((signal) => {\n if (type === 'agent') {\n return signal.appKey === agentInstance.name;\n } else if (type === 'custom') {\n return signal.appKey === id;\n }\n return false;\n });\n if (agentSignal) {\n interop.joinInteropChannel(fdc3Version, agentSignal.selectedColorChannel);\n }\n}\n","export class InteropFeatureNotSupportedError extends Error {\n constructor() {\n super(`Interop feature is not supported by the agent`);\n }\n}\n","/* eslint-disable unicorn/no-await-expression-member */\n\nimport type { OpenFin } from '@openfin/core';\n\nimport * as agent from '../agent';\nimport type { InteropColorChannel } from '../agent.types';\n\nexport async function joinInteropChannel(fdc3Version: OpenFin.FDC3.Version, channelName: InteropColorChannel): Promise<void> {\n try {\n // Connect to the FDC3 desktop agent\n const desktopAgent = await window.fin.me.interop.getFDC3(fdc3Version);\n\n // Join or leave the interop channel\n if (channelName === 'none') {\n agent.logMessage('Leaving current channel');\n await desktopAgent.leaveCurrentChannel();\n } else {\n agent.logMessage(`Joining interop channel: ${channelName}`);\n await ('joinUserChannel' in desktopAgent ? desktopAgent.joinUserChannel(channelName) : desktopAgent.joinChannel(channelName));\n }\n } catch (error) {\n agent.logMessage(`Failed to join interop channel: ${channelName}`, error);\n }\n}\n","import type { OpenFin } from '@openfin/core';\nimport * as WorkspaceSearch from '@openfin/search-api';\n\nimport { ENTERPRISE_COMPONENT_BRIDGE_CHANNEL_OPEN_URL_TOPIC, logMessage } from '../agent';\n\nimport type { OnSearchActionListener, OnSearchRequestListener, OpenUrlPayload, SearchResult } from './search.types';\n\nconst convertFromSearchResult = (result: SearchResult, providerId: string): WorkspaceSearch.SearchResult => {\n const { data, iconSize, rightSideIcon, ...otherProps } = result as SearchResult & {\n iconSize?: 'standard' | 'large';\n rightSideIcon?: string;\n };\n\n return {\n ...otherProps,\n data: {\n customData: data,\n iconSize,\n providerId,\n resultType: 'app',\n rightSideIcon,\n },\n };\n};\n\nconst convertToSearchResult = (result: WorkspaceSearch.SearchResult): SearchResult => ({\n ...result,\n data: result.data.customData,\n});\n\nexport const getSearchApiChannelName = (): string => `${window.fin.me.identity.uuid}-cloud-api-search`;\n\nconst openUrl = async ({ channel, url, targetIdentity }: { channel: OpenFin.ChannelClient; url: string; targetIdentity: OpenFin.Identity }): Promise<void> => {\n logMessage('Opening URL', { url, targetIdentity });\n\n try {\n await channel.dispatch(ENTERPRISE_COMPONENT_BRIDGE_CHANNEL_OPEN_URL_TOPIC, { url, targetIdentity } satisfies OpenUrlPayload);\n } catch (error) {\n console.error('Failed opening URL', error);\n }\n};\n\nexport const onResultDispatch = async (\n channel: OpenFin.ChannelClient,\n agentId: string,\n onAction: OnSearchActionListener,\n searchResult: WorkspaceSearch.DispatchedSearchResult,\n): Promise<void> => {\n const { action, dispatcherIdentity, ...otherProps } = searchResult;\n\n logMessage('Handling action...', { action, dispatcherIdentity, result: otherProps });\n\n let url: string | undefined;\n try {\n const originalResult = convertToSearchResult(searchResult);\n const originalAction = originalResult.actions?.find(({ name: id }) => id === action.name);\n\n if (!originalAction) {\n throw new Error('Original action not found in search result');\n }\n\n const actionResult = await onAction(originalAction, convertToSearchResult(searchResult));\n url = actionResult?.url;\n } catch (error) {\n logMessage('Error handling dispatch', error);\n throw error;\n }\n\n if (!url) {\n logMessage('OnActionListener did not return a URL');\n return;\n }\n\n await openUrl({ channel, url, targetIdentity: dispatcherIdentity });\n};\n\nexport const onUserInput = async (\n agentId: string,\n onSearch: OnSearchRequestListener,\n request: WorkspaceSearch.SearchListenerRequest,\n): Promise<WorkspaceSearch.SearchResponse> => {\n logMessage('Getting search results...', { request });\n\n try {\n const abortController = new AbortController();\n request.onClose(() => abortController.abort());\n\n const { context, query } = request;\n const { results } = await onSearch({ context, query, signal: abortController.signal });\n\n const convertedResults = results.map((result) => convertFromSearchResult(result, agentId));\n\n logMessage('Returning results', convertedResults);\n\n return { results: convertedResults };\n } catch (error) {\n throw new Error('Error handling search request', { cause: error });\n }\n};\n"],"mappings":"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","names":["require_search_api","__commonJSMin","exports","module","e","t","n","y","Je","Qe","Ge","oe","o","ze","r","i","s","c","a","u","d","l","f","p","h","g","w","v","m","R","C","b","S","I","x","O","P","B","E","k","A","D","L","U","_","T","F","M","$","W","q","K","V","j","H","N","z","J","G","Q","X","Y","Z","ee","te","ne","re","ie","se","ce","ae","ue","de","le","fe","pe","he","ge","we","ye","ve","me","Re","Ce","be","Se","Ie","xe","Oe","Pe","Be","Ee","ke","Ae","De","Le","Ue","_e","Te","Fe","Me","$e","We","qe","Ve","je","He","Ne","Xe","Ye","Ze","PACKAGE_NAME","isInViewContext","extractAppUuidFromIdentity","identity","PACKAGE_NAME","getChannelName","notificationsClientPromise","getNotificationsClient","getNotificationsClientInternal","isInViewContext","extractAppUuidFromIdentity","channelPromise","getChannelClient","message","listener","eventListeners","eventName","listeners","options","notificationId","channelClientPromise","getChannelClientInternal","channel","identity","apiChannelClientPromise","getApiChannelName","getApiChannelClient","getAppSettings","PACKAGE_NAME","isInViewContext","getAppUserSettings","setAppUserSettings","settings","getAppUserPermissions","launchContent","id","options","channel","error","launchSupertab","launchWorkspace","search_exports","__export","getAgentConfiguration","register","WorkspaceSearch","CONSOLE_LOG_PREFIX","CHANNEL_TOPIC_LOG_MESSAGE_PREFIX","CHANNEL_TOPIC_OPEN_URL","CHANNEL_TOPIC_PROVIDER_STATUS_PREFIX","CHANNEL_TOPIC_REGISTERED_PREFIX","SEARCH_PROVIDER_CLIENT_API_VERSION","convertFromSearchResult","result","providerId","data","iconSize","rightSideIcon","otherProps","convertToSearchResult","getAgentConfiguration","customData","getSearchApiChannelName","setIsReady","channel","logMessage","ready","error","args","level","onResultDispatch","agentId","onAction","searchResult","action","dispatcherIdentity","url","originalAction","id","openUrl","onUserInput","onSearch","request","abortController","context","query","results","convertedResults","targetIdentity","register","config","title","topic","logMessageBound","agent_exports","__export","getConfiguration","register","WorkspaceSearch","InteropFeatureNotSupportedError","joinInteropChannel","fdc3Version","channelName","desktopAgent","logMessage","error","WorkspaceSearch","convertFromSearchResult","result","providerId","data","iconSize","rightSideIcon","otherProps","convertToSearchResult","getSearchApiChannelName","openUrl","channel","url","targetIdentity","logMessage","ENTERPRISE_COMPONENT_BRIDGE_CHANNEL_OPEN_URL_TOPIC","error","onResultDispatch","agentId","onAction","searchResult","action","dispatcherIdentity","originalAction","id","onUserInput","onSearch","request","abortController","context","query","results","convertedResults","CONSOLE_LOG_PREFIX","CLIENT_API_VERSION","ENTERPRISE_COMPONENT_BRIDGE_CHANNEL_NAME_SUFFIX","ENTERPRISE_COMPONENT_BRIDGE_CHANNEL_OPEN_URL_TOPIC","ENTERPRISE_COMPONENT_BRIDGE_CHANNEL_REGISTERED_TOPIC","ENTERPRISE_COMPONENT_BRIDGE_CHANNEL_STATUS_TOPIC","getConfiguration","customData","agentInstance","configurationFields","field","joinInteropChannel","features","channelName","InteropFeatureNotSupportedError","fdc3Version","logMessage","args","setIsReady","channel","id","ready","error","register","config","title","agent","defaultChannel","handleDesktopAppSignalsChanged","getSearchApiChannelName","onResultDispatch","onUserInput","unknownPayload","payload","type","agentSignal","signal"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openfin/cloud-api",
|
|
3
|
-
"version": "10.0.0-beta.
|
|
3
|
+
"version": "10.0.0-beta.8",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"description": "",
|
|
6
6
|
"exports": {
|
|
@@ -25,10 +25,10 @@
|
|
|
25
25
|
"dist"
|
|
26
26
|
],
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@openfin/core": "43.100.
|
|
28
|
+
"@openfin/core": "43.100.110",
|
|
29
29
|
"@openfin/search-api": "^2.0.1",
|
|
30
30
|
"@openfin/typedoc-theme": "^2.0.2",
|
|
31
|
-
"@openfin/workspace": "23.0.
|
|
31
|
+
"@openfin/workspace": "23.0.9",
|
|
32
32
|
"@typescript-eslint/eslint-plugin": "^8.32.0",
|
|
33
33
|
"@typescript-eslint/parser": "^8.32.0",
|
|
34
34
|
"eslint": "^8.57.1",
|