@openfin/remote-adapter 42.100.106 → 42.101.1

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.
Files changed (2) hide show
  1. package/out/remote-adapter.js +1264 -1226
  2. package/package.json +2 -2
@@ -523,7 +523,7 @@ Object.defineProperty(PrivateChannelProvider$1, "__esModule", { value: true });
523
523
  PrivateChannelProvider$1.PrivateChannelProvider = void 0;
524
524
  const utils_1$8 = utils$3;
525
525
  class PrivateChannelProvider {
526
- constructor(provider, id) {
526
+ constructor(provider, id, removePrivateChannelProvider) {
527
527
  this.provider = provider;
528
528
  this.id = id;
529
529
  this.clients = new Map();
@@ -531,6 +531,7 @@ class PrivateChannelProvider {
531
531
  this.contextByContextType = new Map();
532
532
  this.lastContext = undefined;
533
533
  this.provider.onConnection((clientIdentity) => this.registerNewClient(clientIdentity));
534
+ this.removePrivateChannelProvider = removePrivateChannelProvider;
534
535
  this.provider.onDisconnection(async (clientIdentity) => {
535
536
  const { endpointId } = clientIdentity;
536
537
  if (this.clients.has(endpointId)) {
@@ -538,6 +539,7 @@ class PrivateChannelProvider {
538
539
  }
539
540
  if ((await this.provider.getAllClientInfo()).length === 0) {
540
541
  this.provider.destroy();
542
+ this.removePrivateChannelProvider(this.id);
541
543
  }
542
544
  });
543
545
  }
@@ -789,8 +791,8 @@ class PrivateChannelProvider {
789
791
  });
790
792
  });
791
793
  }
792
- static init(channelProvider, id) {
793
- return new PrivateChannelProvider(channelProvider, id);
794
+ static init(channelProvider, id, removePrivateChannelProvider) {
795
+ return new PrivateChannelProvider(channelProvider, id, removePrivateChannelProvider);
794
796
  }
795
797
  }
796
798
  PrivateChannelProvider$1.PrivateChannelProvider = PrivateChannelProvider;
@@ -862,16 +864,16 @@ var __classPrivateFieldGet$h = (commonjsGlobal && commonjsGlobal.__classPrivateF
862
864
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
863
865
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
864
866
  };
865
- var __importDefault$6 = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
867
+ var __importDefault$7 = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
866
868
  return (mod && mod.__esModule) ? mod : { "default": mod };
867
869
  };
868
870
  var _InteropBroker_fdc3Info, _InteropBroker_contextGroups, _InteropBroker_providerPromise;
869
871
  Object.defineProperty(InteropBroker$1, "__esModule", { value: true });
870
872
  InteropBroker$1.InteropBroker = void 0;
871
- const base_1$n = base;
872
- const SessionContextGroupBroker_1 = __importDefault$6(SessionContextGroupBroker$1);
873
+ const base_1$p = base;
874
+ const SessionContextGroupBroker_1 = __importDefault$7(SessionContextGroupBroker$1);
873
875
  const utils_1$7 = utils$3;
874
- const isEqual_1$1 = __importDefault$6(require$$3);
876
+ const isEqual_1$2 = __importDefault$7(require$$3);
875
877
  const PrivateChannelProvider_1 = PrivateChannelProvider$1;
876
878
  const lazy_1$3 = lazy;
877
879
  const defaultContextGroups = [
@@ -1037,7 +1039,7 @@ const defaultContextGroups = [
1037
1039
  * ---
1038
1040
  *
1039
1041
  */
1040
- class InteropBroker extends base_1$n.Base {
1042
+ class InteropBroker extends base_1$p.Base {
1041
1043
  /**
1042
1044
  * @internal
1043
1045
  */
@@ -1060,6 +1062,7 @@ class InteropBroker extends base_1$n.Base {
1060
1062
  this.intentClientMap = new Map();
1061
1063
  this.lastContextMap = new Map();
1062
1064
  this.sessionContextGroupMap = new Map();
1065
+ this.privateChannelProviderMap = new Map();
1063
1066
  __classPrivateFieldSet$g(this, _InteropBroker_providerPromise, new lazy_1$3.Lazy(createProvider), "f");
1064
1067
  this.setContextGroupMap();
1065
1068
  this.setupChannelProvider();
@@ -1069,7 +1072,7 @@ class InteropBroker extends base_1$n.Base {
1069
1072
  constructor(...unused) {
1070
1073
  if (unused.length) {
1071
1074
  const [_ignore1, ignore2, opts] = unused;
1072
- if (opts && typeof opts === 'object' && !(0, isEqual_1$1.default)(opts, args[2])) {
1075
+ if (opts && typeof opts === 'object' && !(0, isEqual_1$2.default)(opts, args[2])) {
1073
1076
  // eslint-disable-next-line no-console
1074
1077
  console.warn('You have modified the parameters of the InteropOverride constructor. This behavior is deprecated and will be removed in a future version. You can modify these options in your manifest. Please consult our Interop docs for guidance on migrating to the new override scheme.');
1075
1078
  super(args[0], args[1], opts);
@@ -2080,7 +2083,15 @@ class InteropBroker extends base_1$n.Base {
2080
2083
  channel.register('createPrivateChannelProvider', async (payload) => {
2081
2084
  const { channelId } = payload;
2082
2085
  const channelProvider = await this.fin.InterApplicationBus.Channel.create(channelId);
2083
- PrivateChannelProvider_1.PrivateChannelProvider.init(channelProvider, channelId);
2086
+ const removePrivateChannelProvider = (channelId) => {
2087
+ this.privateChannelProviderMap.delete(channelId);
2088
+ };
2089
+ const privateChannelProvider = PrivateChannelProvider_1.PrivateChannelProvider.init(channelProvider, channelId, removePrivateChannelProvider);
2090
+ this.privateChannelProviderMap.set(channelId, privateChannelProvider);
2091
+ });
2092
+ channel.register('isIdUsedByPrivateChannel', async (payload) => {
2093
+ const { channelId } = payload;
2094
+ return this.privateChannelProviderMap.has(channelId);
2084
2095
  });
2085
2096
  }
2086
2097
  /**
@@ -2585,11 +2596,11 @@ const handleDeprecatedWarnings = (options) => {
2585
2596
  };
2586
2597
  warnings.handleDeprecatedWarnings = handleDeprecatedWarnings;
2587
2598
 
2588
- var hasRequiredFactory$2;
2599
+ var hasRequiredFactory$1;
2589
2600
 
2590
- function requireFactory$2 () {
2591
- if (hasRequiredFactory$2) return Factory$8;
2592
- hasRequiredFactory$2 = 1;
2601
+ function requireFactory$1 () {
2602
+ if (hasRequiredFactory$1) return Factory$8;
2603
+ hasRequiredFactory$1 = 1;
2593
2604
  Object.defineProperty(Factory$8, "__esModule", { value: true });
2594
2605
  Factory$8.ViewModule = void 0;
2595
2606
  const base_1 = base;
@@ -2748,8 +2759,8 @@ var main = {};
2748
2759
 
2749
2760
  Object.defineProperty(main, "__esModule", { value: true });
2750
2761
  main.WebContents = void 0;
2751
- const base_1$m = base;
2752
- class WebContents extends base_1$m.EmitterBase {
2762
+ const base_1$o = base;
2763
+ class WebContents extends base_1$o.EmitterBase {
2753
2764
  /**
2754
2765
  * @param identity The identity of the {@link OpenFin.WebContentsEvents WebContents}.
2755
2766
  * @param entityType The type of the {@link OpenFin.WebContentsEvents WebContents}.
@@ -3842,1154 +3853,1133 @@ var Factory$6 = {};
3842
3853
 
3843
3854
  var Instance$5 = {};
3844
3855
 
3845
- var hasRequiredInstance$2;
3846
-
3847
- function requireInstance$2 () {
3848
- if (hasRequiredInstance$2) return Instance$5;
3849
- hasRequiredInstance$2 = 1;
3850
- Object.defineProperty(Instance$5, "__esModule", { value: true });
3851
- Instance$5.Application = void 0;
3852
- /* eslint-disable import/prefer-default-export */
3853
- const base_1 = base;
3854
- const window_1 = requireWindow();
3855
- const view_1 = requireView();
3856
- /**
3857
- * An object representing an application. Allows the developer to create,
3858
- * execute, show/close an application as well as listen to {@link OpenFin.ApplicationEvents application events}.
3859
- */
3860
- class Application extends base_1.EmitterBase {
3861
- /**
3862
- * @internal
3863
- */
3864
- constructor(wire, identity) {
3865
- super(wire, 'application', identity.uuid);
3866
- this.identity = identity;
3867
- this.window = new window_1._Window(this.wire, {
3868
- uuid: this.identity.uuid,
3869
- name: this.identity.uuid
3870
- });
3871
- }
3872
- windowListFromIdentityList(identityList) {
3873
- const windowList = [];
3874
- identityList.forEach((identity) => {
3875
- windowList.push(new window_1._Window(this.wire, {
3876
- uuid: identity.uuid,
3877
- name: identity.name
3878
- }));
3879
- });
3880
- return windowList;
3881
- }
3882
- /**
3883
- * Determines if the application is currently running.
3884
- *
3885
- * @example
3886
- *
3887
- * ```js
3888
- * async function isAppRunning() {
3889
- * const app = await fin.Application.getCurrent();
3890
- * return await app.isRunning();
3891
- * }
3892
- * isAppRunning().then(running => console.log(`Current app is running: ${running}`)).catch(err => console.log(err));
3893
- * ```
3894
- */
3895
- isRunning() {
3896
- return this.wire.sendAction('is-application-running', this.identity).then(({ payload }) => payload.data);
3897
- }
3898
- /**
3899
- * Closes the application and any child windows created by the application.
3900
- * Cleans the application from state so it is no longer found in getAllApplications.
3901
- * @param force Close will be prevented from closing when force is false and
3902
- * ‘close-requested’ has been subscribed to for application’s main window.
3903
- *
3904
- * @example
3905
- *
3906
- * ```js
3907
- * async function closeApp() {
3908
- * const allApps1 = await fin.System.getAllApplications(); //[{uuid: 'app1', isRunning: true}, {uuid: 'app2', isRunning: true}]
3909
- * const app = await fin.Application.wrap({uuid: 'app2'});
3910
- * await app.quit();
3911
- * const allApps2 = await fin.System.getAllApplications(); //[{uuid: 'app1', isRunning: true}]
3912
- *
3913
- * }
3914
- * closeApp().then(() => console.log('Application quit')).catch(err => console.log(err));
3915
- * ```
3916
- */
3917
- async quit(force = false) {
3918
- try {
3919
- await this._close(force);
3920
- await this.wire.sendAction('destroy-application', { force, ...this.identity });
3921
- }
3922
- catch (error) {
3923
- const acceptableErrors = ['Remote connection has closed', 'Could not locate the requested application'];
3924
- if (!acceptableErrors.some((msg) => error.message.includes(msg))) {
3925
- throw error;
3926
- }
3927
- }
3928
- }
3929
- async _close(force = false) {
3930
- try {
3931
- await this.wire.sendAction('close-application', { force, ...this.identity });
3932
- }
3933
- catch (error) {
3934
- if (!error.message.includes('Remote connection has closed')) {
3935
- throw error;
3936
- }
3937
- }
3938
- }
3939
- /**
3940
- * @deprecated use Application.quit instead
3941
- * Closes the application and any child windows created by the application.
3942
- * @param force - Close will be prevented from closing when force is false and ‘close-requested’ has been subscribed to for application’s main window.
3943
- * @param callback - called if the method succeeds.
3944
- * @param errorCallback - called if the method fails. The reason for failure is passed as an argument.
3945
- *
3946
- * @example
3947
- *
3948
- * ```js
3949
- * async function closeApp() {
3950
- * const app = await fin.Application.getCurrent();
3951
- * return await app.close();
3952
- * }
3953
- * closeApp().then(() => console.log('Application closed')).catch(err => console.log(err));
3954
- * ```
3955
- */
3956
- close(force = false) {
3957
- console.warn('Deprecation Warning: Application.close is deprecated Please use Application.quit');
3958
- this.wire.sendAction('application-close', this.identity).catch((e) => {
3959
- // we do not want to expose this error, just continue if this analytics-only call fails
3960
- });
3961
- return this._close(force);
3962
- }
3963
- /**
3964
- * Retrieves an array of wrapped fin.Windows for each of the application’s child windows.
3965
- *
3966
- * @example
3967
- *
3968
- * ```js
3969
- * async function getChildWindows() {
3970
- * const app = await fin.Application.getCurrent();
3971
- * return await app.getChildWindows();
3972
- * }
3973
- *
3974
- * getChildWindows().then(children => console.log(children)).catch(err => console.log(err));
3975
- * ```
3976
- */
3977
- getChildWindows() {
3978
- return this.wire.sendAction('get-child-windows', this.identity).then(({ payload }) => {
3979
- const identityList = [];
3980
- payload.data.forEach((winName) => {
3981
- identityList.push({ uuid: this.identity.uuid, name: winName });
3982
- });
3983
- return this.windowListFromIdentityList(identityList);
3984
- });
3985
- }
3986
- /**
3987
- * Retrieves the JSON manifest that was used to create the application. Invokes the error callback
3988
- * if the application was not created from a manifest.
3989
- *
3990
- * @example
3991
- *
3992
- * ```js
3993
- * async function getManifest() {
3994
- * const app = await fin.Application.getCurrent();
3995
- * return await app.getManifest();
3996
- * }
3997
- *
3998
- * getManifest().then(manifest => console.log(manifest)).catch(err => console.log(err));
3999
- * ```
4000
- */
4001
- getManifest() {
4002
- return this.wire.sendAction('get-application-manifest', this.identity).then(({ payload }) => payload.data);
4003
- }
4004
- /**
4005
- * Retrieves UUID of the application that launches this application. Invokes the error callback
4006
- * if the application was created from a manifest.
4007
- *
4008
- * @example
4009
- *
4010
- * ```js
4011
- * async function getParentUuid() {
4012
- * const app = await fin.Application.start({
4013
- * uuid: 'app-1',
4014
- * name: 'myApp',
4015
- * url: 'https://cdn.openfin.co/docs/javascript/stable/tutorial-Application.getParentUuid.html',
4016
- * autoShow: true
4017
- * });
4018
- * return await app.getParentUuid();
4019
- * }
4020
- *
4021
- * getParentUuid().then(parentUuid => console.log(parentUuid)).catch(err => console.log(err));
4022
- * ```
4023
- */
4024
- getParentUuid() {
4025
- return this.wire.sendAction('get-parent-application', this.identity).then(({ payload }) => payload.data);
4026
- }
4027
- /**
4028
- * Retrieves current application's shortcut configuration.
4029
- *
4030
- * @example
4031
- *
4032
- * ```js
4033
- * async function getShortcuts() {
4034
- * const app = await fin.Application.wrap({ uuid: 'testapp' });
4035
- * return await app.getShortcuts();
4036
- * }
4037
- * getShortcuts().then(config => console.log(config)).catch(err => console.log(err));
4038
- * ```
4039
- */
4040
- getShortcuts() {
4041
- return this.wire.sendAction('get-shortcuts', this.identity).then(({ payload }) => payload.data);
4042
- }
4043
- /**
4044
- * Retrieves current application's views.
4045
- * @experimental
4046
- *
4047
- * @example
4048
- *
4049
- * ```js
4050
- * async function getViews() {
4051
- * const app = await fin.Application.getCurrent();
4052
- * return await app.getViews();
4053
- * }
4054
- * getViews().then(views => console.log(views)).catch(err => console.log(err));
4055
- * ```
4056
- */
4057
- async getViews() {
4058
- const { payload } = await this.wire.sendAction('application-get-views', this.identity);
4059
- return payload.data.map((id) => new view_1.View(this.wire, id));
4060
- }
4061
- /**
4062
- * Returns the current zoom level of the application.
4063
- *
4064
- * @example
4065
- *
4066
- * ```js
4067
- * async function getZoomLevel() {
4068
- * const app = await fin.Application.getCurrent();
4069
- * return await app.getZoomLevel();
4070
- * }
4071
- *
4072
- * getZoomLevel().then(zoomLevel => console.log(zoomLevel)).catch(err => console.log(err));
4073
- * ```
4074
- */
4075
- getZoomLevel() {
4076
- return this.wire.sendAction('get-application-zoom-level', this.identity).then(({ payload }) => payload.data);
4077
- }
4078
- /**
4079
- * Returns an instance of the main Window of the application
4080
- *
4081
- * @example
4082
- *
4083
- * ```js
4084
- * async function getWindow() {
4085
- * const app = await fin.Application.start({
4086
- * uuid: 'app-1',
4087
- * name: 'myApp',
4088
- * url: 'https://cdn.openfin.co/docs/javascript/stable/tutorial-Application.getWindow.html',
4089
- * autoShow: true
4090
- * });
4091
- * return await app.getWindow();
4092
- * }
4093
- *
4094
- * getWindow().then(win => {
4095
- * win.showAt(0, 400);
4096
- * win.flash();
4097
- * }).catch(err => console.log(err));
4098
- * ```
4099
- */
4100
- getWindow() {
4101
- this.wire.sendAction('application-get-window', this.identity).catch((e) => {
4102
- // we do not want to expose this error, just continue if this analytics-only call fails
4103
- });
4104
- return Promise.resolve(this.window);
4105
- }
4106
- /**
4107
- * Manually registers a user with the licensing service. The only data sent by this call is userName and appName.
4108
- * @param userName - username to be passed to the RVM.
4109
- * @param appName - app name to be passed to the RVM.
4110
- *
4111
- * @example
4112
- *
4113
- * ```js
4114
- * async function registerUser() {
4115
- * const app = await fin.Application.getCurrent();
4116
- * return await app.registerUser('user', 'myApp');
4117
- * }
4118
- *
4119
- * registerUser().then(() => console.log('Successfully registered the user')).catch(err => console.log(err));
4120
- * ```
4121
- */
4122
- registerUser(userName, appName) {
4123
- return this.wire.sendAction('register-user', { userName, appName, ...this.identity }).then(() => undefined);
4124
- }
4125
- /**
4126
- * Removes the application’s icon from the tray.
4127
- *
4128
- * @example
4129
- *
4130
- * ```js
4131
- * async function removeTrayIcon() {
4132
- * const app = await fin.Application.getCurrent();
4133
- * return await app.removeTrayIcon();
4134
- * }
4135
- *
4136
- * removeTrayIcon().then(() => console.log('Removed the tray icon.')).catch(err => console.log(err));
4137
- * ```
4138
- */
4139
- removeTrayIcon() {
4140
- return this.wire.sendAction('remove-tray-icon', this.identity).then(() => undefined);
4141
- }
4142
- /**
4143
- * Restarts the application.
4144
- *
4145
- * @example
4146
- *
4147
- * ```js
4148
- * async function restartApp() {
4149
- * const app = await fin.Application.getCurrent();
4150
- * return await app.restart();
4151
- * }
4152
- * restartApp().then(() => console.log('Application restarted')).catch(err => console.log(err));
4153
- * ```
4154
- */
4155
- restart() {
4156
- return this.wire.sendAction('restart-application', this.identity).then(() => undefined);
4157
- }
4158
- /**
4159
- * DEPRECATED method to run the application.
4160
- * Needed when starting application via {@link Application.create}, but NOT needed when starting via {@link Application.start}.
4161
- *
4162
- * @example
4163
- *
4164
- * ```js
4165
- * async function run() {
4166
- * const app = await fin.Application.create({
4167
- * name: 'myApp',
4168
- * uuid: 'app-1',
4169
- * url: 'https://cdn.openfin.co/docs/javascript/stable/tutorial-Application.run.html',
4170
- * autoShow: true
4171
- * });
4172
- * await app.run();
4173
- * }
4174
- * run().then(() => console.log('Application is running')).catch(err => console.log(err));
4175
- * ```
4176
- *
4177
- * @ignore
4178
- */
4179
- run() {
4180
- console.warn('Deprecation Warning: Application.run is deprecated Please use fin.Application.start');
4181
- this.wire.sendAction('application-run', this.identity).catch((e) => {
4182
- // we do not want to expose this error, just continue if this analytics-only call fails
4183
- });
4184
- return this._run();
4185
- }
4186
- _run(opts = {}) {
4187
- return this.wire
4188
- .sendAction('run-application', {
4189
- manifestUrl: this._manifestUrl,
4190
- opts,
4191
- ...this.identity
4192
- })
4193
- .then(() => undefined);
4194
- }
4195
- /**
4196
- * Instructs the RVM to schedule one restart of the application.
4197
- *
4198
- * @example
4199
- *
4200
- * ```js
4201
- * async function scheduleRestart() {
4202
- * const app = await fin.Application.getCurrent();
4203
- * return await app.scheduleRestart();
4204
- * }
4205
- *
4206
- * scheduleRestart().then(() => console.log('Application is scheduled to restart')).catch(err => console.log(err));
4207
- * ```
4208
- */
4209
- scheduleRestart() {
4210
- return this.wire.sendAction('relaunch-on-close', this.identity).then(() => undefined);
4211
- }
4212
- /**
4213
- * Sends a message to the RVM to upload the application's logs. On success,
4214
- * an object containing logId is returned.
4215
- *
4216
- * @example
4217
- *
4218
- * ```js
4219
- * async function sendLog() {
4220
- * const app = await fin.Application.getCurrent();
4221
- * return await app.sendApplicationLog();
4222
- * }
4223
- *
4224
- * sendLog().then(info => console.log(info.logId)).catch(err => console.log(err));
4225
- * ```
4226
- */
4227
- async sendApplicationLog() {
4228
- const { payload } = await this.wire.sendAction('send-application-log', this.identity);
4229
- return payload.data;
4230
- }
4231
- /**
4232
- * Sets or removes a custom JumpList for the application. Only applicable in Windows OS.
4233
- * If categories is null the previously set custom JumpList (if any) will be replaced by the standard JumpList for the app (managed by Windows).
4234
- *
4235
- * Note: If the "name" property is omitted it defaults to "tasks".
4236
- * @param jumpListCategories An array of JumpList Categories to populate. If null, remove any existing JumpList configuration and set to Windows default.
4237
- *
4238
- *
4239
- * @remarks If categories is null the previously set custom JumpList (if any) will be replaced by the standard JumpList for the app (managed by Windows).
4240
- *
4241
- * The bottommost item in the jumplist will always be an item pointing to the current app. Its name is taken from the manifest's
4242
- * **` shortcut.name `** and uses **` shortcut.company `** as a fallback. Clicking that item will launch the app from its current manifest.
4243
- *
4244
- * Note: If the "name" property is omitted it defaults to "tasks".
4245
- *
4246
- * Note: Window OS caches jumplists icons, therefore an icon change might only be visible after the cache is removed or the
4247
- * uuid or shortcut.name is changed.
4248
- *
4249
- * @example
4250
- *
4251
- * ```js
4252
- * const app = fin.Application.getCurrentSync();
4253
- * const appName = 'My App';
4254
- * const jumpListConfig = [ // array of JumpList categories
4255
- * {
4256
- * // has no name and no type so `type` is assumed to be "tasks"
4257
- * items: [ // array of JumpList items
4258
- * {
4259
- * type: 'task',
4260
- * title: `Launch ${appName}`,
4261
- * description: `Runs ${appName} with the default configuration`,
4262
- * deepLink: 'fins://path.to/app/manifest.json',
4263
- * iconPath: 'https://path.to/app/icon.ico',
4264
- * iconIndex: 0
4265
- * },
4266
- * { type: 'separator' },
4267
- * {
4268
- * type: 'task',
4269
- * title: `Restore ${appName}`,
4270
- * description: 'Restore to last configuration',
4271
- * deepLink: 'fins://path.to/app/manifest.json?$$use-last-configuration=true',
4272
- * iconPath: 'https://path.to/app/icon.ico',
4273
- * iconIndex: 0
4274
- * },
4275
- * ]
4276
- * },
4277
- * {
4278
- * name: 'Tools',
4279
- * items: [ // array of JumpList items
4280
- * {
4281
- * type: 'task',
4282
- * title: 'Tool A',
4283
- * description: 'Runs Tool A',
4284
- * deepLink: 'fins://path.to/tool-a/manifest.json',
4285
- * iconPath: 'https://path.to/tool-a/icon.ico',
4286
- * iconIndex: 0
4287
- * },
4288
- * {
4289
- * type: 'task',
4290
- * title: 'Tool B',
4291
- * description: 'Runs Tool B',
4292
- * deepLink: 'fins://path.to/tool-b/manifest.json',
4293
- * iconPath: 'https://path.to/tool-b/icon.ico',
4294
- * iconIndex: 0
4295
- * }]
4296
- * }
4297
- * ];
4298
- *
4299
- * app.setJumpList(jumpListConfig).then(() => console.log('JumpList applied')).catch(e => console.log(`JumpList failed to apply: ${e.toString()}`));
4300
- * ```
4301
- *
4302
- * To handle deeplink args:
4303
- * ```js
4304
- * function handleUseLastConfiguration() {
4305
- * // this handler is called when the app is being launched
4306
- * app.on('run-requested', event => {
4307
- * if(event.userAppConfigArgs['use-last-configuration']) {
4308
- * // your logic here
4309
- * }
4310
- * });
4311
- * // this handler is called when the app was already running when the launch was requested
4312
- * fin.desktop.main(function(args) {
4313
- * if(args && args['use-last-configuration']) {
4314
- * // your logic here
4315
- * }
4316
- * });
4317
- * }
4318
- * ```
4319
- */
4320
- async setJumpList(jumpListCategories) {
4321
- await this.wire.sendAction('set-jump-list', { config: jumpListCategories, ...this.identity });
4322
- }
4323
- /**
4324
- * Adds a customizable icon in the system tray. To listen for a click on the icon use the `tray-icon-clicked` event.
4325
- * @param icon Image URL or base64 encoded string to be used as the icon
4326
- *
4327
- * @example
4328
- *
4329
- * ```js
4330
- * const imageUrl = "http://cdn.openfin.co/assets/testing/icons/circled-digit-one.png";
4331
- * const base64EncodedImage = "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX\
4332
- * ///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII";
4333
- * const dataURL = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DH\
4334
- * xgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==";
4335
- *
4336
- * async function setTrayIcon(icon) {
4337
- * const app = await fin.Application.getCurrent();
4338
- * return await app.setTrayIcon(icon);
4339
- * }
4340
- *
4341
- * // use image url to set tray icon
4342
- * setTrayIcon(imageUrl).then(() => console.log('Setting tray icon')).catch(err => console.log(err));
4343
- *
4344
- * // use base64 encoded string to set tray icon
4345
- * setTrayIcon(base64EncodedImage).then(() => console.log('Setting tray icon')).catch(err => console.log(err));
4346
- *
4347
- * // use a dataURL to set tray icon
4348
- * setTrayIcon(dataURL).then(() => console.log('Setting tray icon')).catch(err => console.log(err));
4349
- * ```
4350
- */
4351
- setTrayIcon(icon) {
4352
- return this.wire
4353
- .sendAction('set-tray-icon', {
4354
- enabledIcon: icon,
4355
- ...this.identity
4356
- })
4357
- .then(() => undefined);
4358
- }
4359
- /**
4360
- * Set hover text for this application's system tray icon.
4361
- * Note: Application must first set a tray icon with {@link Application.setTrayIcon}.
4362
- * @param toolTip
4363
- *
4364
- * @example
4365
- *
4366
- * ```js
4367
- * const app = fin.Application.getCurrentSync();
4368
- * const iconUrl = "http://cdn.openfin.co/assets/testing/icons/circled-digit-one.png";
4369
- *
4370
- * await app.setTrayIcon(iconUrl);
4371
- *
4372
- * await app.setTrayIconToolTip('My Application');
4373
- * ```
4374
- */
4375
- async setTrayIconToolTip(toolTip) {
4376
- await this.wire.sendAction('set-tray-icon-tooltip', { ...this.identity, toolTip });
4377
- }
4378
- /**
4379
- * Sets new application's shortcut configuration. Windows only.
4380
- * @param config New application's shortcut configuration.
4381
- *
4382
- * @remarks Application has to be launched with a manifest and has to have shortcut configuration (icon url, name, etc.) in its manifest
4383
- * to be able to change shortcut states.
4384
- *
4385
- * @example
4386
- *
4387
- * ```js
4388
- * async function setShortcuts(config) {
4389
- * const app = await fin.Application.getCurrent();
4390
- * return app.setShortcuts(config);
4391
- * }
4392
- *
4393
- * setShortcuts({
4394
- * desktop: true,
4395
- * startMenu: false,
4396
- * systemStartup: true
4397
- * }).then(() => console.log('Shortcuts are set.')).catch(err => console.log(err));
4398
- * ```
4399
- */
4400
- setShortcuts(config) {
4401
- return this.wire.sendAction('set-shortcuts', { data: config, ...this.identity }).then(() => undefined);
4402
- }
4403
- /**
4404
- * Sets the query string in all shortcuts for this app. Requires RVM 5.5+.
4405
- * @param queryString The new query string for this app's shortcuts.
4406
- *
4407
- * @example
4408
- *
4409
- * ```js
4410
- * const newQueryArgs = 'arg=true&arg2=false';
4411
- * const app = await fin.Application.getCurrent();
4412
- * try {
4413
- * await app.setShortcutQueryParams(newQueryArgs);
4414
- * } catch(err) {
4415
- * console.error(err)
4416
- * }
4417
- * ```
4418
- */
4419
- async setShortcutQueryParams(queryString) {
4420
- await this.wire.sendAction('set-shortcut-query-args', { data: queryString, ...this.identity });
4421
- }
4422
- /**
4423
- * Sets the zoom level of the application. The original size is 0 and each increment above or below represents zooming 20%
4424
- * larger or smaller to default limits of 300% and 50% of original size, respectively.
4425
- * @param level The zoom level
4426
- *
4427
- * @example
4428
- *
4429
- * ```js
4430
- * async function setZoomLevel(number) {
4431
- * const app = await fin.Application.getCurrent();
4432
- * return await app.setZoomLevel(number);
4433
- * }
4434
- *
4435
- * setZoomLevel(5).then(() => console.log('Setting a zoom level')).catch(err => console.log(err));
4436
- * ```
4437
- */
4438
- setZoomLevel(level) {
4439
- return this.wire.sendAction('set-application-zoom-level', { level, ...this.identity }).then(() => undefined);
4440
- }
4441
- /**
4442
- * Sets a username to correlate with App Log Management.
4443
- * @param username Username to correlate with App's Log.
4444
- *
4445
- * @example
4446
- *
4447
- * ```js
4448
- * async function setAppLogUser() {
4449
- * const app = await fin.Application.getCurrent();
4450
- * return await app.setAppLogUsername('username');
4451
- * }
4452
- *
4453
- * setAppLogUser().then(() => console.log('Success')).catch(err => console.log(err));
4454
- *
4455
- * ```
4456
- */
4457
- async setAppLogUsername(username) {
4458
- await this.wire.sendAction('set-app-log-username', { data: username, ...this.identity });
4459
- }
4460
- /**
4461
- * Retrieves information about the system tray. If the system tray is not set, it will throw an error message.
4462
- * @remarks The only information currently returned is the position and dimensions.
4463
- *
4464
- * @example
4465
- *
4466
- * ```js
4467
- * async function getTrayIconInfo() {
4468
- * const app = await fin.Application.wrap({ uuid: 'testapp' });
4469
- * return await app.getTrayIconInfo();
4470
- * }
4471
- * getTrayIconInfo().then(info => console.log(info)).catch(err => console.log(err));
4472
- * ```
4473
- */
4474
- getTrayIconInfo() {
4475
- return this.wire.sendAction('get-tray-icon-info', this.identity).then(({ payload }) => payload.data);
4476
- }
4477
- /**
4478
- * Checks if the application has an associated tray icon.
4479
- *
4480
- * @example
4481
- *
4482
- * ```js
4483
- * const app = await fin.Application.wrap({ uuid: 'testapp' });
4484
- * const hasTrayIcon = await app.hasTrayIcon();
4485
- * console.log(hasTrayIcon);
4486
- * ```
4487
- */
4488
- hasTrayIcon() {
4489
- return this.wire.sendAction('has-tray-icon', this.identity).then(({ payload }) => payload.data);
4490
- }
4491
- /**
4492
- * Closes the application by terminating its process.
4493
- *
4494
- * @example
4495
- *
4496
- * ```js
4497
- * async function terminateApp() {
4498
- * const app = await fin.Application.getCurrent();
4499
- * return await app.terminate();
4500
- * }
4501
- * terminateApp().then(() => console.log('Application terminated')).catch(err => console.log(err));
4502
- * ```
4503
- */
4504
- terminate() {
4505
- return this.wire.sendAction('terminate-application', this.identity).then(() => undefined);
4506
- }
4507
- /**
4508
- * Waits for a hanging application. This method can be called in response to an application
4509
- * "not-responding" to allow the application to continue and to generate another "not-responding"
4510
- * message after a certain period of time.
4511
- *
4512
- * @ignore
4513
- */
4514
- wait() {
4515
- return this.wire.sendAction('wait-for-hung-application', this.identity).then(() => undefined);
4516
- }
4517
- /**
4518
- * Retrieves information about the application.
4519
- *
4520
- * @remarks If the application was not launched from a manifest, the call will return the closest parent application `manifest`
4521
- * and `manifestUrl`. `initialOptions` shows the parameters used when launched programmatically, or the `startup_app` options
4522
- * if launched from manifest. The `parentUuid` will be the uuid of the immediate parent (if applicable).
4523
- *
4524
- * @example
4525
- *
4526
- * ```js
4527
- * async function getInfo() {
4528
- * const app = await fin.Application.getCurrent();
4529
- * return await app.getInfo();
4530
- * }
4531
- *
4532
- * getInfo().then(info => console.log(info)).catch(err => console.log(err));
4533
- * ```
4534
- */
4535
- getInfo() {
4536
- return this.wire.sendAction('get-info', this.identity).then(({ payload }) => payload.data);
4537
- }
4538
- /**
4539
- * Retrieves all process information for entities (windows and views) associated with an application.
4540
- *
4541
- * @example
4542
- * ```js
4543
- * const app = await fin.Application.getCurrent();
4544
- * const processInfo = await app.getProcessInfo();
4545
- * ```
4546
- * @experimental
4547
- */
4548
- async getProcessInfo() {
4549
- const { payload: { data } } = await this.wire.sendAction('application-get-process-info', this.identity);
4550
- return data;
4551
- }
4552
- /**
4553
- * Sets file auto download location. It's only allowed in the same application.
4554
- *
4555
- * Note: This method is restricted by default and must be enabled via
4556
- * <a href="https://developers.openfin.co/docs/api-security">API security settings</a>.
4557
- * @param downloadLocation file auto download location
4558
- *
4559
- * @throws if setting file auto download location on different applications.
4560
- * @example
4561
- *
4562
- * ```js
4563
- * const downloadLocation = 'C:\\dev\\temp';
4564
- * const app = await fin.Application.getCurrent();
4565
- * try {
4566
- * await app.setFileDownloadLocation(downloadLocation);
4567
- * console.log('File download location is set');
4568
- * } catch(err) {
4569
- * console.error(err)
4570
- * }
4571
- * ```
4572
- */
4573
- async setFileDownloadLocation(downloadLocation) {
4574
- const { name } = this.wire.me;
4575
- const entityIdentity = { uuid: this.identity.uuid, name };
4576
- await this.wire.sendAction('set-file-download-location', { ...entityIdentity, downloadLocation });
4577
- }
4578
- /**
4579
- * Gets file auto download location. It's only allowed in the same application. If file auto download location is not set, it will return the default location.
4580
- *
4581
- * Note: This method is restricted by default and must be enabled via
4582
- * <a href="https://developers.openfin.co/docs/api-security">API security settings</a>.
4583
- *
4584
- * @throws if getting file auto download location on different applications.
4585
- * @example
4586
- *
4587
- * ```js
4588
- * const app = await fin.Application.getCurrent();
4589
- * const fileDownloadDir = await app.getFileDownloadLocation();
4590
- * ```
4591
- */
4592
- async getFileDownloadLocation() {
4593
- const { payload: { data } } = await this.wire.sendAction('get-file-download-location', this.identity);
4594
- return data;
4595
- }
4596
- /**
4597
- * Shows a menu on the tray icon. Use with tray-icon-clicked event.
4598
- * @param options
4599
- * @typeParam Data User-defined shape for data returned upon menu item click. Should be a
4600
- * [union](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#union-types)
4601
- * of all possible data shapes for the entire menu, and the click handler should process
4602
- * these with a "reducer" pattern.
4603
- * @throws if the application has no tray icon set
4604
- * @throws if the system tray is currently hidden
4605
- * @example
4606
- *
4607
- * ```js
4608
- * const iconUrl = 'http://cdn.openfin.co/assets/testing/icons/circled-digit-one.png';
4609
- * const app = fin.Application.getCurrentSync();
4610
- *
4611
- * await app.setTrayIcon(iconUrl);
4612
- *
4613
- * const template = [
4614
- * {
4615
- * label: 'Menu Item 1',
4616
- * data: 'hello from item 1'
4617
- * },
4618
- * { type: 'separator' },
4619
- * {
4620
- * label: 'Menu Item 2',
4621
- * type: 'checkbox',
4622
- * checked: true,
4623
- * data: 'The user clicked the checkbox'
4624
- * },
4625
- * {
4626
- * label: 'see more',
4627
- * enabled: false,
4628
- * submenu: [
4629
- * { label: 'submenu 1', data: 'hello from submenu' }
4630
- * ]
4631
- * }
4632
- * ];
4633
- *
4634
- * app.addListener('tray-icon-clicked', (event) => {
4635
- * // right-click
4636
- * if (event.button === 2) {
4637
- * app.showTrayIconPopupMenu({ template }).then(r => {
4638
- * if (r.result === 'closed') {
4639
- * console.log('nothing happened');
4640
- * } else {
4641
- * console.log(r.data);
4642
- * }
4643
- * });
4644
- * }
4645
- * });
4646
- * ```
4647
- */
4648
- async showTrayIconPopupMenu(options) {
4649
- const { name } = this.wire.me;
4650
- const entityIdentity = { uuid: this.identity.uuid, name };
4651
- const { payload } = await this.wire.sendAction('show-tray-icon-popup-menu', { ...entityIdentity, options });
4652
- return payload.data;
4653
- }
4654
- /**
4655
- * Closes the tray icon menu.
4656
- *
4657
- * @throws if the application has no tray icon set
4658
- * @example
4659
- *
4660
- * ```js
4661
- * const app = fin.Application.getCurrentSync();
4662
- *
4663
- * await app.closeTrayIconPopupMenu();
4664
- * ```
4665
- */
4666
- async closeTrayIconPopupMenu() {
4667
- const { name } = this.wire.me;
4668
- const entityIdentity = { uuid: this.identity.uuid, name };
4669
- await this.wire.sendAction('close-tray-icon-popup-menu', { ...entityIdentity });
4670
- }
4671
- }
4672
- Instance$5.Application = Application;
4673
- return Instance$5;
3856
+ Object.defineProperty(Instance$5, "__esModule", { value: true });
3857
+ Instance$5.Application = void 0;
3858
+ /* eslint-disable import/prefer-default-export */
3859
+ const base_1$n = base;
3860
+ const window_1$1 = requireWindow();
3861
+ const view_1 = requireView();
3862
+ /**
3863
+ * An object representing an application. Allows the developer to create,
3864
+ * execute, show/close an application as well as listen to {@link OpenFin.ApplicationEvents application events}.
3865
+ */
3866
+ class Application extends base_1$n.EmitterBase {
3867
+ /**
3868
+ * @internal
3869
+ */
3870
+ constructor(wire, identity) {
3871
+ super(wire, 'application', identity.uuid);
3872
+ this.identity = identity;
3873
+ this.window = new window_1$1._Window(this.wire, {
3874
+ uuid: this.identity.uuid,
3875
+ name: this.identity.uuid
3876
+ });
3877
+ }
3878
+ windowListFromIdentityList(identityList) {
3879
+ const windowList = [];
3880
+ identityList.forEach((identity) => {
3881
+ windowList.push(new window_1$1._Window(this.wire, {
3882
+ uuid: identity.uuid,
3883
+ name: identity.name
3884
+ }));
3885
+ });
3886
+ return windowList;
3887
+ }
3888
+ /**
3889
+ * Determines if the application is currently running.
3890
+ *
3891
+ * @example
3892
+ *
3893
+ * ```js
3894
+ * async function isAppRunning() {
3895
+ * const app = await fin.Application.getCurrent();
3896
+ * return await app.isRunning();
3897
+ * }
3898
+ * isAppRunning().then(running => console.log(`Current app is running: ${running}`)).catch(err => console.log(err));
3899
+ * ```
3900
+ */
3901
+ isRunning() {
3902
+ return this.wire.sendAction('is-application-running', this.identity).then(({ payload }) => payload.data);
3903
+ }
3904
+ /**
3905
+ * Closes the application and any child windows created by the application.
3906
+ * Cleans the application from state so it is no longer found in getAllApplications.
3907
+ * @param force Close will be prevented from closing when force is false and
3908
+ * ‘close-requested’ has been subscribed to for application’s main window.
3909
+ *
3910
+ * @example
3911
+ *
3912
+ * ```js
3913
+ * async function closeApp() {
3914
+ * const allApps1 = await fin.System.getAllApplications(); //[{uuid: 'app1', isRunning: true}, {uuid: 'app2', isRunning: true}]
3915
+ * const app = await fin.Application.wrap({uuid: 'app2'});
3916
+ * await app.quit();
3917
+ * const allApps2 = await fin.System.getAllApplications(); //[{uuid: 'app1', isRunning: true}]
3918
+ *
3919
+ * }
3920
+ * closeApp().then(() => console.log('Application quit')).catch(err => console.log(err));
3921
+ * ```
3922
+ */
3923
+ async quit(force = false) {
3924
+ try {
3925
+ await this._close(force);
3926
+ await this.wire.sendAction('destroy-application', { force, ...this.identity });
3927
+ }
3928
+ catch (error) {
3929
+ const acceptableErrors = ['Remote connection has closed', 'Could not locate the requested application'];
3930
+ if (!acceptableErrors.some((msg) => error.message.includes(msg))) {
3931
+ throw error;
3932
+ }
3933
+ }
3934
+ }
3935
+ async _close(force = false) {
3936
+ try {
3937
+ await this.wire.sendAction('close-application', { force, ...this.identity });
3938
+ }
3939
+ catch (error) {
3940
+ if (!error.message.includes('Remote connection has closed')) {
3941
+ throw error;
3942
+ }
3943
+ }
3944
+ }
3945
+ /**
3946
+ * @deprecated use Application.quit instead
3947
+ * Closes the application and any child windows created by the application.
3948
+ * @param force - Close will be prevented from closing when force is false and ‘close-requested’ has been subscribed to for application’s main window.
3949
+ * @param callback - called if the method succeeds.
3950
+ * @param errorCallback - called if the method fails. The reason for failure is passed as an argument.
3951
+ *
3952
+ * @example
3953
+ *
3954
+ * ```js
3955
+ * async function closeApp() {
3956
+ * const app = await fin.Application.getCurrent();
3957
+ * return await app.close();
3958
+ * }
3959
+ * closeApp().then(() => console.log('Application closed')).catch(err => console.log(err));
3960
+ * ```
3961
+ */
3962
+ close(force = false) {
3963
+ console.warn('Deprecation Warning: Application.close is deprecated Please use Application.quit');
3964
+ this.wire.sendAction('application-close', this.identity).catch((e) => {
3965
+ // we do not want to expose this error, just continue if this analytics-only call fails
3966
+ });
3967
+ return this._close(force);
3968
+ }
3969
+ /**
3970
+ * Retrieves an array of wrapped fin.Windows for each of the application’s child windows.
3971
+ *
3972
+ * @example
3973
+ *
3974
+ * ```js
3975
+ * async function getChildWindows() {
3976
+ * const app = await fin.Application.getCurrent();
3977
+ * return await app.getChildWindows();
3978
+ * }
3979
+ *
3980
+ * getChildWindows().then(children => console.log(children)).catch(err => console.log(err));
3981
+ * ```
3982
+ */
3983
+ getChildWindows() {
3984
+ return this.wire.sendAction('get-child-windows', this.identity).then(({ payload }) => {
3985
+ const identityList = [];
3986
+ payload.data.forEach((winName) => {
3987
+ identityList.push({ uuid: this.identity.uuid, name: winName });
3988
+ });
3989
+ return this.windowListFromIdentityList(identityList);
3990
+ });
3991
+ }
3992
+ /**
3993
+ * Retrieves the JSON manifest that was used to create the application. Invokes the error callback
3994
+ * if the application was not created from a manifest.
3995
+ *
3996
+ * @example
3997
+ *
3998
+ * ```js
3999
+ * async function getManifest() {
4000
+ * const app = await fin.Application.getCurrent();
4001
+ * return await app.getManifest();
4002
+ * }
4003
+ *
4004
+ * getManifest().then(manifest => console.log(manifest)).catch(err => console.log(err));
4005
+ * ```
4006
+ */
4007
+ getManifest() {
4008
+ return this.wire.sendAction('get-application-manifest', this.identity).then(({ payload }) => payload.data);
4009
+ }
4010
+ /**
4011
+ * Retrieves UUID of the application that launches this application. Invokes the error callback
4012
+ * if the application was created from a manifest.
4013
+ *
4014
+ * @example
4015
+ *
4016
+ * ```js
4017
+ * async function getParentUuid() {
4018
+ * const app = await fin.Application.start({
4019
+ * uuid: 'app-1',
4020
+ * name: 'myApp',
4021
+ * url: 'https://cdn.openfin.co/docs/javascript/stable/tutorial-Application.getParentUuid.html',
4022
+ * autoShow: true
4023
+ * });
4024
+ * return await app.getParentUuid();
4025
+ * }
4026
+ *
4027
+ * getParentUuid().then(parentUuid => console.log(parentUuid)).catch(err => console.log(err));
4028
+ * ```
4029
+ */
4030
+ getParentUuid() {
4031
+ return this.wire.sendAction('get-parent-application', this.identity).then(({ payload }) => payload.data);
4032
+ }
4033
+ /**
4034
+ * Retrieves current application's shortcut configuration.
4035
+ *
4036
+ * @example
4037
+ *
4038
+ * ```js
4039
+ * async function getShortcuts() {
4040
+ * const app = await fin.Application.wrap({ uuid: 'testapp' });
4041
+ * return await app.getShortcuts();
4042
+ * }
4043
+ * getShortcuts().then(config => console.log(config)).catch(err => console.log(err));
4044
+ * ```
4045
+ */
4046
+ getShortcuts() {
4047
+ return this.wire.sendAction('get-shortcuts', this.identity).then(({ payload }) => payload.data);
4048
+ }
4049
+ /**
4050
+ * Retrieves current application's views.
4051
+ * @experimental
4052
+ *
4053
+ * @example
4054
+ *
4055
+ * ```js
4056
+ * async function getViews() {
4057
+ * const app = await fin.Application.getCurrent();
4058
+ * return await app.getViews();
4059
+ * }
4060
+ * getViews().then(views => console.log(views)).catch(err => console.log(err));
4061
+ * ```
4062
+ */
4063
+ async getViews() {
4064
+ const { payload } = await this.wire.sendAction('application-get-views', this.identity);
4065
+ return payload.data.map((id) => new view_1.View(this.wire, id));
4066
+ }
4067
+ /**
4068
+ * Returns the current zoom level of the application.
4069
+ *
4070
+ * @example
4071
+ *
4072
+ * ```js
4073
+ * async function getZoomLevel() {
4074
+ * const app = await fin.Application.getCurrent();
4075
+ * return await app.getZoomLevel();
4076
+ * }
4077
+ *
4078
+ * getZoomLevel().then(zoomLevel => console.log(zoomLevel)).catch(err => console.log(err));
4079
+ * ```
4080
+ */
4081
+ getZoomLevel() {
4082
+ return this.wire.sendAction('get-application-zoom-level', this.identity).then(({ payload }) => payload.data);
4083
+ }
4084
+ /**
4085
+ * Returns an instance of the main Window of the application
4086
+ *
4087
+ * @example
4088
+ *
4089
+ * ```js
4090
+ * async function getWindow() {
4091
+ * const app = await fin.Application.start({
4092
+ * uuid: 'app-1',
4093
+ * name: 'myApp',
4094
+ * url: 'https://cdn.openfin.co/docs/javascript/stable/tutorial-Application.getWindow.html',
4095
+ * autoShow: true
4096
+ * });
4097
+ * return await app.getWindow();
4098
+ * }
4099
+ *
4100
+ * getWindow().then(win => {
4101
+ * win.showAt(0, 400);
4102
+ * win.flash();
4103
+ * }).catch(err => console.log(err));
4104
+ * ```
4105
+ */
4106
+ getWindow() {
4107
+ this.wire.sendAction('application-get-window', this.identity).catch((e) => {
4108
+ // we do not want to expose this error, just continue if this analytics-only call fails
4109
+ });
4110
+ return Promise.resolve(this.window);
4111
+ }
4112
+ /**
4113
+ * Manually registers a user with the licensing service. The only data sent by this call is userName and appName.
4114
+ * @param userName - username to be passed to the RVM.
4115
+ * @param appName - app name to be passed to the RVM.
4116
+ *
4117
+ * @example
4118
+ *
4119
+ * ```js
4120
+ * async function registerUser() {
4121
+ * const app = await fin.Application.getCurrent();
4122
+ * return await app.registerUser('user', 'myApp');
4123
+ * }
4124
+ *
4125
+ * registerUser().then(() => console.log('Successfully registered the user')).catch(err => console.log(err));
4126
+ * ```
4127
+ */
4128
+ registerUser(userName, appName) {
4129
+ return this.wire.sendAction('register-user', { userName, appName, ...this.identity }).then(() => undefined);
4130
+ }
4131
+ /**
4132
+ * Removes the application’s icon from the tray.
4133
+ *
4134
+ * @example
4135
+ *
4136
+ * ```js
4137
+ * async function removeTrayIcon() {
4138
+ * const app = await fin.Application.getCurrent();
4139
+ * return await app.removeTrayIcon();
4140
+ * }
4141
+ *
4142
+ * removeTrayIcon().then(() => console.log('Removed the tray icon.')).catch(err => console.log(err));
4143
+ * ```
4144
+ */
4145
+ removeTrayIcon() {
4146
+ return this.wire.sendAction('remove-tray-icon', this.identity).then(() => undefined);
4147
+ }
4148
+ /**
4149
+ * Restarts the application.
4150
+ *
4151
+ * @example
4152
+ *
4153
+ * ```js
4154
+ * async function restartApp() {
4155
+ * const app = await fin.Application.getCurrent();
4156
+ * return await app.restart();
4157
+ * }
4158
+ * restartApp().then(() => console.log('Application restarted')).catch(err => console.log(err));
4159
+ * ```
4160
+ */
4161
+ restart() {
4162
+ return this.wire.sendAction('restart-application', this.identity).then(() => undefined);
4163
+ }
4164
+ /**
4165
+ * DEPRECATED method to run the application.
4166
+ * Needed when starting application via {@link Application.create}, but NOT needed when starting via {@link Application.start}.
4167
+ *
4168
+ * @example
4169
+ *
4170
+ * ```js
4171
+ * async function run() {
4172
+ * const app = await fin.Application.create({
4173
+ * name: 'myApp',
4174
+ * uuid: 'app-1',
4175
+ * url: 'https://cdn.openfin.co/docs/javascript/stable/tutorial-Application.run.html',
4176
+ * autoShow: true
4177
+ * });
4178
+ * await app.run();
4179
+ * }
4180
+ * run().then(() => console.log('Application is running')).catch(err => console.log(err));
4181
+ * ```
4182
+ *
4183
+ * @ignore
4184
+ */
4185
+ run() {
4186
+ console.warn('Deprecation Warning: Application.run is deprecated Please use fin.Application.start');
4187
+ this.wire.sendAction('application-run', this.identity).catch((e) => {
4188
+ // we do not want to expose this error, just continue if this analytics-only call fails
4189
+ });
4190
+ return this._run();
4191
+ }
4192
+ _run(opts = {}) {
4193
+ return this.wire
4194
+ .sendAction('run-application', {
4195
+ manifestUrl: this._manifestUrl,
4196
+ opts,
4197
+ ...this.identity
4198
+ })
4199
+ .then(() => undefined);
4200
+ }
4201
+ /**
4202
+ * Instructs the RVM to schedule one restart of the application.
4203
+ *
4204
+ * @example
4205
+ *
4206
+ * ```js
4207
+ * async function scheduleRestart() {
4208
+ * const app = await fin.Application.getCurrent();
4209
+ * return await app.scheduleRestart();
4210
+ * }
4211
+ *
4212
+ * scheduleRestart().then(() => console.log('Application is scheduled to restart')).catch(err => console.log(err));
4213
+ * ```
4214
+ */
4215
+ scheduleRestart() {
4216
+ return this.wire.sendAction('relaunch-on-close', this.identity).then(() => undefined);
4217
+ }
4218
+ /**
4219
+ * Sends a message to the RVM to upload the application's logs. On success,
4220
+ * an object containing logId is returned.
4221
+ *
4222
+ * @example
4223
+ *
4224
+ * ```js
4225
+ * async function sendLog() {
4226
+ * const app = await fin.Application.getCurrent();
4227
+ * return await app.sendApplicationLog();
4228
+ * }
4229
+ *
4230
+ * sendLog().then(info => console.log(info.logId)).catch(err => console.log(err));
4231
+ * ```
4232
+ */
4233
+ async sendApplicationLog() {
4234
+ const { payload } = await this.wire.sendAction('send-application-log', this.identity);
4235
+ return payload.data;
4236
+ }
4237
+ /**
4238
+ * Sets or removes a custom JumpList for the application. Only applicable in Windows OS.
4239
+ * If categories is null the previously set custom JumpList (if any) will be replaced by the standard JumpList for the app (managed by Windows).
4240
+ *
4241
+ * Note: If the "name" property is omitted it defaults to "tasks".
4242
+ * @param jumpListCategories An array of JumpList Categories to populate. If null, remove any existing JumpList configuration and set to Windows default.
4243
+ *
4244
+ *
4245
+ * @remarks If categories is null the previously set custom JumpList (if any) will be replaced by the standard JumpList for the app (managed by Windows).
4246
+ *
4247
+ * The bottommost item in the jumplist will always be an item pointing to the current app. Its name is taken from the manifest's
4248
+ * **` shortcut.name `** and uses **` shortcut.company `** as a fallback. Clicking that item will launch the app from its current manifest.
4249
+ *
4250
+ * Note: If the "name" property is omitted it defaults to "tasks".
4251
+ *
4252
+ * Note: Window OS caches jumplists icons, therefore an icon change might only be visible after the cache is removed or the
4253
+ * uuid or shortcut.name is changed.
4254
+ *
4255
+ * @example
4256
+ *
4257
+ * ```js
4258
+ * const app = fin.Application.getCurrentSync();
4259
+ * const appName = 'My App';
4260
+ * const jumpListConfig = [ // array of JumpList categories
4261
+ * {
4262
+ * // has no name and no type so `type` is assumed to be "tasks"
4263
+ * items: [ // array of JumpList items
4264
+ * {
4265
+ * type: 'task',
4266
+ * title: `Launch ${appName}`,
4267
+ * description: `Runs ${appName} with the default configuration`,
4268
+ * deepLink: 'fins://path.to/app/manifest.json',
4269
+ * iconPath: 'https://path.to/app/icon.ico',
4270
+ * iconIndex: 0
4271
+ * },
4272
+ * { type: 'separator' },
4273
+ * {
4274
+ * type: 'task',
4275
+ * title: `Restore ${appName}`,
4276
+ * description: 'Restore to last configuration',
4277
+ * deepLink: 'fins://path.to/app/manifest.json?$$use-last-configuration=true',
4278
+ * iconPath: 'https://path.to/app/icon.ico',
4279
+ * iconIndex: 0
4280
+ * },
4281
+ * ]
4282
+ * },
4283
+ * {
4284
+ * name: 'Tools',
4285
+ * items: [ // array of JumpList items
4286
+ * {
4287
+ * type: 'task',
4288
+ * title: 'Tool A',
4289
+ * description: 'Runs Tool A',
4290
+ * deepLink: 'fins://path.to/tool-a/manifest.json',
4291
+ * iconPath: 'https://path.to/tool-a/icon.ico',
4292
+ * iconIndex: 0
4293
+ * },
4294
+ * {
4295
+ * type: 'task',
4296
+ * title: 'Tool B',
4297
+ * description: 'Runs Tool B',
4298
+ * deepLink: 'fins://path.to/tool-b/manifest.json',
4299
+ * iconPath: 'https://path.to/tool-b/icon.ico',
4300
+ * iconIndex: 0
4301
+ * }]
4302
+ * }
4303
+ * ];
4304
+ *
4305
+ * app.setJumpList(jumpListConfig).then(() => console.log('JumpList applied')).catch(e => console.log(`JumpList failed to apply: ${e.toString()}`));
4306
+ * ```
4307
+ *
4308
+ * To handle deeplink args:
4309
+ * ```js
4310
+ * function handleUseLastConfiguration() {
4311
+ * // this handler is called when the app is being launched
4312
+ * app.on('run-requested', event => {
4313
+ * if(event.userAppConfigArgs['use-last-configuration']) {
4314
+ * // your logic here
4315
+ * }
4316
+ * });
4317
+ * // this handler is called when the app was already running when the launch was requested
4318
+ * fin.desktop.main(function(args) {
4319
+ * if(args && args['use-last-configuration']) {
4320
+ * // your logic here
4321
+ * }
4322
+ * });
4323
+ * }
4324
+ * ```
4325
+ */
4326
+ async setJumpList(jumpListCategories) {
4327
+ await this.wire.sendAction('set-jump-list', { config: jumpListCategories, ...this.identity });
4328
+ }
4329
+ /**
4330
+ * Adds a customizable icon in the system tray. To listen for a click on the icon use the `tray-icon-clicked` event.
4331
+ * @param icon Image URL or base64 encoded string to be used as the icon
4332
+ *
4333
+ * @example
4334
+ *
4335
+ * ```js
4336
+ * const imageUrl = "http://cdn.openfin.co/assets/testing/icons/circled-digit-one.png";
4337
+ * const base64EncodedImage = "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX\
4338
+ * ///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII";
4339
+ * const dataURL = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DH\
4340
+ * xgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==";
4341
+ *
4342
+ * async function setTrayIcon(icon) {
4343
+ * const app = await fin.Application.getCurrent();
4344
+ * return await app.setTrayIcon(icon);
4345
+ * }
4346
+ *
4347
+ * // use image url to set tray icon
4348
+ * setTrayIcon(imageUrl).then(() => console.log('Setting tray icon')).catch(err => console.log(err));
4349
+ *
4350
+ * // use base64 encoded string to set tray icon
4351
+ * setTrayIcon(base64EncodedImage).then(() => console.log('Setting tray icon')).catch(err => console.log(err));
4352
+ *
4353
+ * // use a dataURL to set tray icon
4354
+ * setTrayIcon(dataURL).then(() => console.log('Setting tray icon')).catch(err => console.log(err));
4355
+ * ```
4356
+ */
4357
+ setTrayIcon(icon) {
4358
+ return this.wire
4359
+ .sendAction('set-tray-icon', {
4360
+ enabledIcon: icon,
4361
+ ...this.identity
4362
+ })
4363
+ .then(() => undefined);
4364
+ }
4365
+ /**
4366
+ * Set hover text for this application's system tray icon.
4367
+ * Note: Application must first set a tray icon with {@link Application.setTrayIcon}.
4368
+ * @param toolTip
4369
+ *
4370
+ * @example
4371
+ *
4372
+ * ```js
4373
+ * const app = fin.Application.getCurrentSync();
4374
+ * const iconUrl = "http://cdn.openfin.co/assets/testing/icons/circled-digit-one.png";
4375
+ *
4376
+ * await app.setTrayIcon(iconUrl);
4377
+ *
4378
+ * await app.setTrayIconToolTip('My Application');
4379
+ * ```
4380
+ */
4381
+ async setTrayIconToolTip(toolTip) {
4382
+ await this.wire.sendAction('set-tray-icon-tooltip', { ...this.identity, toolTip });
4383
+ }
4384
+ /**
4385
+ * Sets new application's shortcut configuration. Windows only.
4386
+ * @param config New application's shortcut configuration.
4387
+ *
4388
+ * @remarks Application has to be launched with a manifest and has to have shortcut configuration (icon url, name, etc.) in its manifest
4389
+ * to be able to change shortcut states.
4390
+ *
4391
+ * @example
4392
+ *
4393
+ * ```js
4394
+ * async function setShortcuts(config) {
4395
+ * const app = await fin.Application.getCurrent();
4396
+ * return app.setShortcuts(config);
4397
+ * }
4398
+ *
4399
+ * setShortcuts({
4400
+ * desktop: true,
4401
+ * startMenu: false,
4402
+ * systemStartup: true
4403
+ * }).then(() => console.log('Shortcuts are set.')).catch(err => console.log(err));
4404
+ * ```
4405
+ */
4406
+ setShortcuts(config) {
4407
+ return this.wire.sendAction('set-shortcuts', { data: config, ...this.identity }).then(() => undefined);
4408
+ }
4409
+ /**
4410
+ * Sets the query string in all shortcuts for this app. Requires RVM 5.5+.
4411
+ * @param queryString The new query string for this app's shortcuts.
4412
+ *
4413
+ * @example
4414
+ *
4415
+ * ```js
4416
+ * const newQueryArgs = 'arg=true&arg2=false';
4417
+ * const app = await fin.Application.getCurrent();
4418
+ * try {
4419
+ * await app.setShortcutQueryParams(newQueryArgs);
4420
+ * } catch(err) {
4421
+ * console.error(err)
4422
+ * }
4423
+ * ```
4424
+ */
4425
+ async setShortcutQueryParams(queryString) {
4426
+ await this.wire.sendAction('set-shortcut-query-args', { data: queryString, ...this.identity });
4427
+ }
4428
+ /**
4429
+ * Sets the zoom level of the application. The original size is 0 and each increment above or below represents zooming 20%
4430
+ * larger or smaller to default limits of 300% and 50% of original size, respectively.
4431
+ * @param level The zoom level
4432
+ *
4433
+ * @example
4434
+ *
4435
+ * ```js
4436
+ * async function setZoomLevel(number) {
4437
+ * const app = await fin.Application.getCurrent();
4438
+ * return await app.setZoomLevel(number);
4439
+ * }
4440
+ *
4441
+ * setZoomLevel(5).then(() => console.log('Setting a zoom level')).catch(err => console.log(err));
4442
+ * ```
4443
+ */
4444
+ setZoomLevel(level) {
4445
+ return this.wire.sendAction('set-application-zoom-level', { level, ...this.identity }).then(() => undefined);
4446
+ }
4447
+ /**
4448
+ * Sets a username to correlate with App Log Management.
4449
+ * @param username Username to correlate with App's Log.
4450
+ *
4451
+ * @example
4452
+ *
4453
+ * ```js
4454
+ * async function setAppLogUser() {
4455
+ * const app = await fin.Application.getCurrent();
4456
+ * return await app.setAppLogUsername('username');
4457
+ * }
4458
+ *
4459
+ * setAppLogUser().then(() => console.log('Success')).catch(err => console.log(err));
4460
+ *
4461
+ * ```
4462
+ */
4463
+ async setAppLogUsername(username) {
4464
+ await this.wire.sendAction('set-app-log-username', { data: username, ...this.identity });
4465
+ }
4466
+ /**
4467
+ * Retrieves information about the system tray. If the system tray is not set, it will throw an error message.
4468
+ * @remarks The only information currently returned is the position and dimensions.
4469
+ *
4470
+ * @example
4471
+ *
4472
+ * ```js
4473
+ * async function getTrayIconInfo() {
4474
+ * const app = await fin.Application.wrap({ uuid: 'testapp' });
4475
+ * return await app.getTrayIconInfo();
4476
+ * }
4477
+ * getTrayIconInfo().then(info => console.log(info)).catch(err => console.log(err));
4478
+ * ```
4479
+ */
4480
+ getTrayIconInfo() {
4481
+ return this.wire.sendAction('get-tray-icon-info', this.identity).then(({ payload }) => payload.data);
4482
+ }
4483
+ /**
4484
+ * Checks if the application has an associated tray icon.
4485
+ *
4486
+ * @example
4487
+ *
4488
+ * ```js
4489
+ * const app = await fin.Application.wrap({ uuid: 'testapp' });
4490
+ * const hasTrayIcon = await app.hasTrayIcon();
4491
+ * console.log(hasTrayIcon);
4492
+ * ```
4493
+ */
4494
+ hasTrayIcon() {
4495
+ return this.wire.sendAction('has-tray-icon', this.identity).then(({ payload }) => payload.data);
4496
+ }
4497
+ /**
4498
+ * Closes the application by terminating its process.
4499
+ *
4500
+ * @example
4501
+ *
4502
+ * ```js
4503
+ * async function terminateApp() {
4504
+ * const app = await fin.Application.getCurrent();
4505
+ * return await app.terminate();
4506
+ * }
4507
+ * terminateApp().then(() => console.log('Application terminated')).catch(err => console.log(err));
4508
+ * ```
4509
+ */
4510
+ terminate() {
4511
+ return this.wire.sendAction('terminate-application', this.identity).then(() => undefined);
4512
+ }
4513
+ /**
4514
+ * Waits for a hanging application. This method can be called in response to an application
4515
+ * "not-responding" to allow the application to continue and to generate another "not-responding"
4516
+ * message after a certain period of time.
4517
+ *
4518
+ * @ignore
4519
+ */
4520
+ wait() {
4521
+ return this.wire.sendAction('wait-for-hung-application', this.identity).then(() => undefined);
4522
+ }
4523
+ /**
4524
+ * Retrieves information about the application.
4525
+ *
4526
+ * @remarks If the application was not launched from a manifest, the call will return the closest parent application `manifest`
4527
+ * and `manifestUrl`. `initialOptions` shows the parameters used when launched programmatically, or the `startup_app` options
4528
+ * if launched from manifest. The `parentUuid` will be the uuid of the immediate parent (if applicable).
4529
+ *
4530
+ * @example
4531
+ *
4532
+ * ```js
4533
+ * async function getInfo() {
4534
+ * const app = await fin.Application.getCurrent();
4535
+ * return await app.getInfo();
4536
+ * }
4537
+ *
4538
+ * getInfo().then(info => console.log(info)).catch(err => console.log(err));
4539
+ * ```
4540
+ */
4541
+ getInfo() {
4542
+ return this.wire.sendAction('get-info', this.identity).then(({ payload }) => payload.data);
4543
+ }
4544
+ /**
4545
+ * Retrieves all process information for entities (windows and views) associated with an application.
4546
+ *
4547
+ * @example
4548
+ * ```js
4549
+ * const app = await fin.Application.getCurrent();
4550
+ * const processInfo = await app.getProcessInfo();
4551
+ * ```
4552
+ * @experimental
4553
+ */
4554
+ async getProcessInfo() {
4555
+ const { payload: { data } } = await this.wire.sendAction('application-get-process-info', this.identity);
4556
+ return data;
4557
+ }
4558
+ /**
4559
+ * Sets file auto download location. It's only allowed in the same application.
4560
+ *
4561
+ * Note: This method is restricted by default and must be enabled via
4562
+ * <a href="https://developers.openfin.co/docs/api-security">API security settings</a>.
4563
+ * @param downloadLocation file auto download location
4564
+ *
4565
+ * @throws if setting file auto download location on different applications.
4566
+ * @example
4567
+ *
4568
+ * ```js
4569
+ * const downloadLocation = 'C:\\dev\\temp';
4570
+ * const app = await fin.Application.getCurrent();
4571
+ * try {
4572
+ * await app.setFileDownloadLocation(downloadLocation);
4573
+ * console.log('File download location is set');
4574
+ * } catch(err) {
4575
+ * console.error(err)
4576
+ * }
4577
+ * ```
4578
+ */
4579
+ async setFileDownloadLocation(downloadLocation) {
4580
+ const { name } = this.wire.me;
4581
+ const entityIdentity = { uuid: this.identity.uuid, name };
4582
+ await this.wire.sendAction('set-file-download-location', { ...entityIdentity, downloadLocation });
4583
+ }
4584
+ /**
4585
+ * Gets file auto download location. It's only allowed in the same application. If file auto download location is not set, it will return the default location.
4586
+ *
4587
+ * Note: This method is restricted by default and must be enabled via
4588
+ * <a href="https://developers.openfin.co/docs/api-security">API security settings</a>.
4589
+ *
4590
+ * @throws if getting file auto download location on different applications.
4591
+ * @example
4592
+ *
4593
+ * ```js
4594
+ * const app = await fin.Application.getCurrent();
4595
+ * const fileDownloadDir = await app.getFileDownloadLocation();
4596
+ * ```
4597
+ */
4598
+ async getFileDownloadLocation() {
4599
+ const { payload: { data } } = await this.wire.sendAction('get-file-download-location', this.identity);
4600
+ return data;
4601
+ }
4602
+ /**
4603
+ * Shows a menu on the tray icon. Use with tray-icon-clicked event.
4604
+ * @param options
4605
+ * @typeParam Data User-defined shape for data returned upon menu item click. Should be a
4606
+ * [union](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#union-types)
4607
+ * of all possible data shapes for the entire menu, and the click handler should process
4608
+ * these with a "reducer" pattern.
4609
+ * @throws if the application has no tray icon set
4610
+ * @throws if the system tray is currently hidden
4611
+ * @example
4612
+ *
4613
+ * ```js
4614
+ * const iconUrl = 'http://cdn.openfin.co/assets/testing/icons/circled-digit-one.png';
4615
+ * const app = fin.Application.getCurrentSync();
4616
+ *
4617
+ * await app.setTrayIcon(iconUrl);
4618
+ *
4619
+ * const template = [
4620
+ * {
4621
+ * label: 'Menu Item 1',
4622
+ * data: 'hello from item 1'
4623
+ * },
4624
+ * { type: 'separator' },
4625
+ * {
4626
+ * label: 'Menu Item 2',
4627
+ * type: 'checkbox',
4628
+ * checked: true,
4629
+ * data: 'The user clicked the checkbox'
4630
+ * },
4631
+ * {
4632
+ * label: 'see more',
4633
+ * enabled: false,
4634
+ * submenu: [
4635
+ * { label: 'submenu 1', data: 'hello from submenu' }
4636
+ * ]
4637
+ * }
4638
+ * ];
4639
+ *
4640
+ * app.addListener('tray-icon-clicked', (event) => {
4641
+ * // right-click
4642
+ * if (event.button === 2) {
4643
+ * app.showTrayIconPopupMenu({ template }).then(r => {
4644
+ * if (r.result === 'closed') {
4645
+ * console.log('nothing happened');
4646
+ * } else {
4647
+ * console.log(r.data);
4648
+ * }
4649
+ * });
4650
+ * }
4651
+ * });
4652
+ * ```
4653
+ */
4654
+ async showTrayIconPopupMenu(options) {
4655
+ const { name } = this.wire.me;
4656
+ const entityIdentity = { uuid: this.identity.uuid, name };
4657
+ const { payload } = await this.wire.sendAction('show-tray-icon-popup-menu', { ...entityIdentity, options });
4658
+ return payload.data;
4659
+ }
4660
+ /**
4661
+ * Closes the tray icon menu.
4662
+ *
4663
+ * @throws if the application has no tray icon set
4664
+ * @example
4665
+ *
4666
+ * ```js
4667
+ * const app = fin.Application.getCurrentSync();
4668
+ *
4669
+ * await app.closeTrayIconPopupMenu();
4670
+ * ```
4671
+ */
4672
+ async closeTrayIconPopupMenu() {
4673
+ const { name } = this.wire.me;
4674
+ const entityIdentity = { uuid: this.identity.uuid, name };
4675
+ await this.wire.sendAction('close-tray-icon-popup-menu', { ...entityIdentity });
4676
+ }
4674
4677
  }
4678
+ Instance$5.Application = Application;
4675
4679
 
4676
- var hasRequiredFactory$1;
4677
-
4678
- function requireFactory$1 () {
4679
- if (hasRequiredFactory$1) return Factory$6;
4680
- hasRequiredFactory$1 = 1;
4681
- Object.defineProperty(Factory$6, "__esModule", { value: true });
4682
- Factory$6.ApplicationModule = void 0;
4683
- const base_1 = base;
4684
- const validate_1 = validate;
4685
- const Instance_1 = requireInstance$2();
4686
- /**
4687
- * Static namespace for OpenFin API methods that interact with the {@link Application} class, available under `fin.Application`.
4688
- */
4689
- class ApplicationModule extends base_1.Base {
4690
- /**
4691
- * Asynchronously returns an API handle for the given Application identity.
4692
- *
4693
- * @remarks Wrapping an Application identity that does not yet exist will *not* throw an error, and instead
4694
- * returns a stub object that cannot yet perform rendering tasks. This can be useful for plumbing eventing
4695
- * for an Application throughout its entire lifecycle.
4696
- *
4697
- * @example
4698
- *
4699
- * ```js
4700
- * fin.Application.wrap({ uuid: 'testapp' })
4701
- * .then(app => app.isRunning())
4702
- * .then(running => console.log('Application is running: ' + running))
4703
- * .catch(err => console.log(err));
4704
- * ```
4705
- *
4706
- */
4707
- async wrap(identity) {
4708
- this.wire.sendAction('wrap-application').catch((e) => {
4709
- // we do not want to expose this error, just continue if this analytics-only call fails
4710
- });
4711
- const errorMsg = (0, validate_1.validateIdentity)(identity);
4712
- if (errorMsg) {
4713
- throw new Error(errorMsg);
4714
- }
4715
- return new Instance_1.Application(this.wire, identity);
4716
- }
4717
- /**
4718
- * Synchronously returns an API handle for the given Application identity.
4719
- *
4720
- * @remarks Wrapping an Application identity that does not yet exist will *not* throw an error, and instead
4721
- * returns a stub object that cannot yet perform rendering tasks. This can be useful for plumbing eventing
4722
- * for an Aplication throughout its entire lifecycle.
4723
- *
4724
- * @example
4725
- *
4726
- * ```js
4727
- * const app = fin.Application.wrapSync({ uuid: 'testapp' });
4728
- * await app.close();
4729
- * ```
4730
- *
4731
- */
4732
- wrapSync(identity) {
4733
- this.wire.sendAction('wrap-application-sync').catch((e) => {
4734
- // we do not want to expose this error, just continue if this analytics-only call fails
4735
- });
4736
- const errorMsg = (0, validate_1.validateIdentity)(identity);
4737
- if (errorMsg) {
4738
- throw new Error(errorMsg);
4739
- }
4740
- return new Instance_1.Application(this.wire, identity);
4741
- }
4742
- async _create(appOptions) {
4743
- // set defaults:
4744
- if (appOptions.waitForPageLoad === undefined) {
4745
- appOptions.waitForPageLoad = false;
4746
- }
4747
- if (appOptions.autoShow === undefined && appOptions.isPlatformController === undefined) {
4748
- appOptions.autoShow = true;
4749
- }
4750
- await this.wire.sendAction('create-application', appOptions);
4751
- return this.wrap({ uuid: appOptions.uuid });
4752
- }
4753
- /**
4754
- * DEPRECATED method to create a new Application. Use {@link Application.ApplicationModule.start Application.start} instead.
4755
- *
4756
- * @example
4757
- *
4758
- * ```js
4759
- * async function createApp() {
4760
- * const app = await fin.Application.create({
4761
- * name: 'myApp',
4762
- * uuid: 'app-3',
4763
- * url: 'https://cdn.openfin.co/docs/javascript/stable/tutorial-Application.create.html',
4764
- * autoShow: true
4765
- * });
4766
- * await app.run();
4767
- * }
4768
- *
4769
- * createApp().then(() => console.log('Application is created')).catch(err => console.log(err));
4770
- * ```
4771
- *
4772
- * @ignore
4773
- */
4774
- create(appOptions) {
4775
- console.warn('Deprecation Warning: fin.Application.create is deprecated. Please use fin.Application.start');
4776
- this.wire.sendAction('application-create').catch((e) => {
4777
- // we do not want to expose this error, just continue if this analytics-only call fails
4778
- });
4779
- return this._create(appOptions);
4780
- }
4781
- /**
4782
- * Creates and starts a new Application.
4783
- *
4784
- * @example
4785
- *
4786
- * ```js
4787
- * async function start() {
4788
- * return fin.Application.start({
4789
- * name: 'app-1',
4790
- * uuid: 'app-1',
4791
- * url: 'https://cdn.openfin.co/docs/javascript/stable/tutorial-Application.start.html',
4792
- * autoShow: true
4793
- * });
4794
- * }
4795
- * start().then(() => console.log('Application is running')).catch(err => console.log(err));
4796
- * ```
4797
- *
4798
- */
4799
- async start(appOptions) {
4800
- this.wire.sendAction('start-application').catch((e) => {
4801
- // we do not want to expose this error, just continue if this analytics-only call fails
4802
- });
4803
- const app = await this._create(appOptions);
4804
- await this.wire.sendAction('run-application', { uuid: appOptions.uuid });
4805
- return app;
4806
- }
4807
- /**
4808
- * Asynchronously starts a batch of applications given an array of application identifiers and manifestUrls.
4809
- * Returns once the RVM is finished attempting to launch the applications.
4810
- * @param opts - Parameters that the RVM will use.
4811
- *
4812
- * @example
4813
- *
4814
- * ```js
4815
- *
4816
- * const applicationInfoArray = [
4817
- * {
4818
- * "uuid": 'App-1',
4819
- * "manifestUrl": 'http://localhost:5555/app1.json',
4820
- * },
4821
- * {
4822
- * "uuid": 'App-2',
4823
- * "manifestUrl": 'http://localhost:5555/app2.json',
4824
- * },
4825
- * {
4826
- * "uuid": 'App-3',
4827
- * "manifestUrl": 'http://localhost:5555/app3.json',
4828
- * }
4829
- * ]
4830
- *
4831
- * fin.Application.startManyManifests(applicationInfoArray)
4832
- * .then(() => {
4833
- * console.log('RVM has finished launching the application list.');
4834
- * })
4835
- * .catch((err) => {
4836
- * console.log(err);
4837
- * })
4838
- * ```
4839
- *
4840
- * @experimental
4841
- */
4842
- async startManyManifests(applications, opts) {
4843
- return this.wire.sendAction('run-applications', { applications, opts }).then(() => undefined);
4844
- }
4845
- /**
4846
- * Asynchronously returns an Application object that represents the current application
4847
- *
4848
- * @example
4849
- *
4850
- * ```js
4851
- * async function isCurrentAppRunning () {
4852
- * const app = await fin.Application.getCurrent();
4853
- * return app.isRunning();
4854
- * }
4855
- *
4856
- * isCurrentAppRunning().then(running => {
4857
- * console.log(`Current app is running: ${running}`);
4858
- * }).catch(err => {
4859
- * console.error(err);
4860
- * });
4861
- *
4862
- * ```
4863
- */
4864
- getCurrent() {
4865
- this.wire.sendAction('get-current-application').catch((e) => {
4866
- // we do not want to expose this error, just continue if this analytics-only call fails
4867
- });
4868
- return this.wrap({ uuid: this.wire.me.uuid });
4869
- }
4870
- /**
4871
- * Synchronously returns an Application object that represents the current application
4872
- *
4873
- * @example
4874
- *
4875
- * ```js
4876
- * async function isCurrentAppRunning () {
4877
- * const app = fin.Application.getCurrentSync();
4878
- * return app.isRunning();
4879
- * }
4880
- *
4881
- * isCurrentAppRunning().then(running => {
4882
- * console.log(`Current app is running: ${running}`);
4883
- * }).catch(err => {
4884
- * console.error(err);
4885
- * });
4886
- *
4887
- * ```
4888
- */
4889
- getCurrentSync() {
4890
- this.wire.sendAction('get-current-application-sync').catch((e) => {
4891
- // we do not want to expose this error, just continue if this analytics-only call fails
4892
- });
4893
- return this.wrapSync({ uuid: this.wire.me.uuid });
4894
- }
4895
- /**
4896
- * Retrieves application's manifest and returns a running instance of the application.
4897
- * @param manifestUrl - The URL of app's manifest.
4898
- * @param opts - Parameters that the RVM will use.
4899
- *
4900
- * @example
4901
- *
4902
- * ```js
4903
- * fin.Application.startFromManifest('http://localhost:5555/app.json').then(app => console.log('App is running')).catch(err => console.log(err));
4904
- *
4905
- * // For a local manifest file:
4906
- * fin.Application.startFromManifest('file:///C:/somefolder/app.json').then(app => console.log('App is running')).catch(err => console.log(err));
4907
- * ```
4908
- */
4909
- async startFromManifest(manifestUrl, opts) {
4910
- this.wire.sendAction('application-start-from-manifest').catch((e) => {
4911
- // we do not want to expose this error, just continue if this analytics-only call fails
4912
- });
4913
- const app = await this._createFromManifest(manifestUrl);
4914
- // @ts-expect-error using private method without warning.
4915
- await app._run(opts); // eslint-disable-line no-underscore-dangle
4916
- return app;
4917
- }
4918
- /**
4919
- * @deprecated Use {@link Application.ApplicationModule.startFromManifest Application.startFromManifest} instead.
4920
- * Retrieves application's manifest and returns a wrapped application.
4921
- * @param manifestUrl - The URL of app's manifest.
4922
- * @param callback - called if the method succeeds.
4923
- * @param errorCallback - called if the method fails. The reason for failure is passed as an argument.
4924
- *
4925
- * @example
4926
- *
4927
- * ```js
4928
- * fin.Application.createFromManifest('http://localhost:5555/app.json').then(app => console.log(app)).catch(err => console.log(err));
4929
- * ```
4930
- * @ignore
4931
- */
4932
- createFromManifest(manifestUrl) {
4933
- console.warn('Deprecation Warning: fin.Application.createFromManifest is deprecated. Please use fin.Application.startFromManifest');
4934
- this.wire.sendAction('application-create-from-manifest').catch((e) => {
4935
- // we do not want to expose this error, just continue if this analytics-only call fails
4936
- });
4937
- return this._createFromManifest(manifestUrl);
4938
- }
4939
- _createFromManifest(manifestUrl) {
4940
- return this.wire
4941
- .sendAction('get-application-manifest', { manifestUrl })
4942
- .then(({ payload }) => {
4943
- const uuid = payload.data.platform ? payload.data.platform.uuid : payload.data.startup_app.uuid;
4944
- return this.wrap({ uuid });
4945
- })
4946
- .then((app) => {
4947
- app._manifestUrl = manifestUrl; // eslint-disable-line no-underscore-dangle
4948
- return app;
4949
- });
4950
- }
4951
- }
4952
- Factory$6.ApplicationModule = ApplicationModule;
4953
- return Factory$6;
4680
+ Object.defineProperty(Factory$6, "__esModule", { value: true });
4681
+ Factory$6.ApplicationModule = void 0;
4682
+ const base_1$m = base;
4683
+ const validate_1$4 = validate;
4684
+ const Instance_1$5 = Instance$5;
4685
+ /**
4686
+ * Static namespace for OpenFin API methods that interact with the {@link Application} class, available under `fin.Application`.
4687
+ */
4688
+ class ApplicationModule extends base_1$m.Base {
4689
+ /**
4690
+ * Asynchronously returns an API handle for the given Application identity.
4691
+ *
4692
+ * @remarks Wrapping an Application identity that does not yet exist will *not* throw an error, and instead
4693
+ * returns a stub object that cannot yet perform rendering tasks. This can be useful for plumbing eventing
4694
+ * for an Application throughout its entire lifecycle.
4695
+ *
4696
+ * @example
4697
+ *
4698
+ * ```js
4699
+ * fin.Application.wrap({ uuid: 'testapp' })
4700
+ * .then(app => app.isRunning())
4701
+ * .then(running => console.log('Application is running: ' + running))
4702
+ * .catch(err => console.log(err));
4703
+ * ```
4704
+ *
4705
+ */
4706
+ async wrap(identity) {
4707
+ this.wire.sendAction('wrap-application').catch((e) => {
4708
+ // we do not want to expose this error, just continue if this analytics-only call fails
4709
+ });
4710
+ const errorMsg = (0, validate_1$4.validateIdentity)(identity);
4711
+ if (errorMsg) {
4712
+ throw new Error(errorMsg);
4713
+ }
4714
+ return new Instance_1$5.Application(this.wire, identity);
4715
+ }
4716
+ /**
4717
+ * Synchronously returns an API handle for the given Application identity.
4718
+ *
4719
+ * @remarks Wrapping an Application identity that does not yet exist will *not* throw an error, and instead
4720
+ * returns a stub object that cannot yet perform rendering tasks. This can be useful for plumbing eventing
4721
+ * for an Aplication throughout its entire lifecycle.
4722
+ *
4723
+ * @example
4724
+ *
4725
+ * ```js
4726
+ * const app = fin.Application.wrapSync({ uuid: 'testapp' });
4727
+ * await app.close();
4728
+ * ```
4729
+ *
4730
+ */
4731
+ wrapSync(identity) {
4732
+ this.wire.sendAction('wrap-application-sync').catch((e) => {
4733
+ // we do not want to expose this error, just continue if this analytics-only call fails
4734
+ });
4735
+ const errorMsg = (0, validate_1$4.validateIdentity)(identity);
4736
+ if (errorMsg) {
4737
+ throw new Error(errorMsg);
4738
+ }
4739
+ return new Instance_1$5.Application(this.wire, identity);
4740
+ }
4741
+ async _create(appOptions) {
4742
+ // set defaults:
4743
+ if (appOptions.waitForPageLoad === undefined) {
4744
+ appOptions.waitForPageLoad = false;
4745
+ }
4746
+ if (appOptions.autoShow === undefined && appOptions.isPlatformController === undefined) {
4747
+ appOptions.autoShow = true;
4748
+ }
4749
+ await this.wire.sendAction('create-application', appOptions);
4750
+ return this.wrap({ uuid: appOptions.uuid });
4751
+ }
4752
+ /**
4753
+ * DEPRECATED method to create a new Application. Use {@link Application.ApplicationModule.start Application.start} instead.
4754
+ *
4755
+ * @example
4756
+ *
4757
+ * ```js
4758
+ * async function createApp() {
4759
+ * const app = await fin.Application.create({
4760
+ * name: 'myApp',
4761
+ * uuid: 'app-3',
4762
+ * url: 'https://cdn.openfin.co/docs/javascript/stable/tutorial-Application.create.html',
4763
+ * autoShow: true
4764
+ * });
4765
+ * await app.run();
4766
+ * }
4767
+ *
4768
+ * createApp().then(() => console.log('Application is created')).catch(err => console.log(err));
4769
+ * ```
4770
+ *
4771
+ * @ignore
4772
+ */
4773
+ create(appOptions) {
4774
+ console.warn('Deprecation Warning: fin.Application.create is deprecated. Please use fin.Application.start');
4775
+ this.wire.sendAction('application-create').catch((e) => {
4776
+ // we do not want to expose this error, just continue if this analytics-only call fails
4777
+ });
4778
+ return this._create(appOptions);
4779
+ }
4780
+ /**
4781
+ * Creates and starts a new Application.
4782
+ *
4783
+ * @example
4784
+ *
4785
+ * ```js
4786
+ * async function start() {
4787
+ * return fin.Application.start({
4788
+ * name: 'app-1',
4789
+ * uuid: 'app-1',
4790
+ * url: 'https://cdn.openfin.co/docs/javascript/stable/tutorial-Application.start.html',
4791
+ * autoShow: true
4792
+ * });
4793
+ * }
4794
+ * start().then(() => console.log('Application is running')).catch(err => console.log(err));
4795
+ * ```
4796
+ *
4797
+ */
4798
+ async start(appOptions) {
4799
+ this.wire.sendAction('start-application').catch((e) => {
4800
+ // we do not want to expose this error, just continue if this analytics-only call fails
4801
+ });
4802
+ const app = await this._create(appOptions);
4803
+ await this.wire.sendAction('run-application', { uuid: appOptions.uuid });
4804
+ return app;
4805
+ }
4806
+ /**
4807
+ * Asynchronously starts a batch of applications given an array of application identifiers and manifestUrls.
4808
+ * Returns once the RVM is finished attempting to launch the applications.
4809
+ * @param opts - Parameters that the RVM will use.
4810
+ *
4811
+ * @example
4812
+ *
4813
+ * ```js
4814
+ *
4815
+ * const applicationInfoArray = [
4816
+ * {
4817
+ * "uuid": 'App-1',
4818
+ * "manifestUrl": 'http://localhost:5555/app1.json',
4819
+ * },
4820
+ * {
4821
+ * "uuid": 'App-2',
4822
+ * "manifestUrl": 'http://localhost:5555/app2.json',
4823
+ * },
4824
+ * {
4825
+ * "uuid": 'App-3',
4826
+ * "manifestUrl": 'http://localhost:5555/app3.json',
4827
+ * }
4828
+ * ]
4829
+ *
4830
+ * fin.Application.startManyManifests(applicationInfoArray)
4831
+ * .then(() => {
4832
+ * console.log('RVM has finished launching the application list.');
4833
+ * })
4834
+ * .catch((err) => {
4835
+ * console.log(err);
4836
+ * })
4837
+ * ```
4838
+ *
4839
+ * @experimental
4840
+ */
4841
+ async startManyManifests(applications, opts) {
4842
+ return this.wire.sendAction('run-applications', { applications, opts }).then(() => undefined);
4843
+ }
4844
+ /**
4845
+ * Asynchronously returns an Application object that represents the current application
4846
+ *
4847
+ * @example
4848
+ *
4849
+ * ```js
4850
+ * async function isCurrentAppRunning () {
4851
+ * const app = await fin.Application.getCurrent();
4852
+ * return app.isRunning();
4853
+ * }
4854
+ *
4855
+ * isCurrentAppRunning().then(running => {
4856
+ * console.log(`Current app is running: ${running}`);
4857
+ * }).catch(err => {
4858
+ * console.error(err);
4859
+ * });
4860
+ *
4861
+ * ```
4862
+ */
4863
+ getCurrent() {
4864
+ this.wire.sendAction('get-current-application').catch((e) => {
4865
+ // we do not want to expose this error, just continue if this analytics-only call fails
4866
+ });
4867
+ return this.wrap({ uuid: this.wire.me.uuid });
4868
+ }
4869
+ /**
4870
+ * Synchronously returns an Application object that represents the current application
4871
+ *
4872
+ * @example
4873
+ *
4874
+ * ```js
4875
+ * async function isCurrentAppRunning () {
4876
+ * const app = fin.Application.getCurrentSync();
4877
+ * return app.isRunning();
4878
+ * }
4879
+ *
4880
+ * isCurrentAppRunning().then(running => {
4881
+ * console.log(`Current app is running: ${running}`);
4882
+ * }).catch(err => {
4883
+ * console.error(err);
4884
+ * });
4885
+ *
4886
+ * ```
4887
+ */
4888
+ getCurrentSync() {
4889
+ this.wire.sendAction('get-current-application-sync').catch((e) => {
4890
+ // we do not want to expose this error, just continue if this analytics-only call fails
4891
+ });
4892
+ return this.wrapSync({ uuid: this.wire.me.uuid });
4893
+ }
4894
+ /**
4895
+ * Retrieves application's manifest and returns a running instance of the application.
4896
+ * @param manifestUrl - The URL of app's manifest.
4897
+ * @param opts - Parameters that the RVM will use.
4898
+ *
4899
+ * @example
4900
+ *
4901
+ * ```js
4902
+ * fin.Application.startFromManifest('http://localhost:5555/app.json').then(app => console.log('App is running')).catch(err => console.log(err));
4903
+ *
4904
+ * // For a local manifest file:
4905
+ * fin.Application.startFromManifest('file:///C:/somefolder/app.json').then(app => console.log('App is running')).catch(err => console.log(err));
4906
+ * ```
4907
+ */
4908
+ async startFromManifest(manifestUrl, opts) {
4909
+ this.wire.sendAction('application-start-from-manifest').catch((e) => {
4910
+ // we do not want to expose this error, just continue if this analytics-only call fails
4911
+ });
4912
+ const app = await this._createFromManifest(manifestUrl);
4913
+ // @ts-expect-error using private method without warning.
4914
+ await app._run(opts); // eslint-disable-line no-underscore-dangle
4915
+ return app;
4916
+ }
4917
+ /**
4918
+ * @deprecated Use {@link Application.ApplicationModule.startFromManifest Application.startFromManifest} instead.
4919
+ * Retrieves application's manifest and returns a wrapped application.
4920
+ * @param manifestUrl - The URL of app's manifest.
4921
+ * @param callback - called if the method succeeds.
4922
+ * @param errorCallback - called if the method fails. The reason for failure is passed as an argument.
4923
+ *
4924
+ * @example
4925
+ *
4926
+ * ```js
4927
+ * fin.Application.createFromManifest('http://localhost:5555/app.json').then(app => console.log(app)).catch(err => console.log(err));
4928
+ * ```
4929
+ * @ignore
4930
+ */
4931
+ createFromManifest(manifestUrl) {
4932
+ console.warn('Deprecation Warning: fin.Application.createFromManifest is deprecated. Please use fin.Application.startFromManifest');
4933
+ this.wire.sendAction('application-create-from-manifest').catch((e) => {
4934
+ // we do not want to expose this error, just continue if this analytics-only call fails
4935
+ });
4936
+ return this._createFromManifest(manifestUrl);
4937
+ }
4938
+ _createFromManifest(manifestUrl) {
4939
+ return this.wire
4940
+ .sendAction('get-application-manifest', { manifestUrl })
4941
+ .then(({ payload }) => {
4942
+ const uuid = payload.data.platform ? payload.data.platform.uuid : payload.data.startup_app.uuid;
4943
+ return this.wrap({ uuid });
4944
+ })
4945
+ .then((app) => {
4946
+ app._manifestUrl = manifestUrl; // eslint-disable-line no-underscore-dangle
4947
+ return app;
4948
+ });
4949
+ }
4954
4950
  }
4951
+ Factory$6.ApplicationModule = ApplicationModule;
4955
4952
 
4956
- var hasRequiredApplication;
4957
-
4958
- function requireApplication () {
4959
- if (hasRequiredApplication) return application;
4960
- hasRequiredApplication = 1;
4961
- (function (exports) {
4962
- var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4963
- if (k2 === undefined) k2 = k;
4964
- var desc = Object.getOwnPropertyDescriptor(m, k);
4965
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
4966
- desc = { enumerable: true, get: function() { return m[k]; } };
4967
- }
4968
- Object.defineProperty(o, k2, desc);
4969
- }) : (function(o, m, k, k2) {
4970
- if (k2 === undefined) k2 = k;
4971
- o[k2] = m[k];
4972
- }));
4973
- var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
4974
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
4975
- };
4976
- Object.defineProperty(exports, "__esModule", { value: true });
4977
- /**
4978
- * Entry points for the OpenFin `Application` API (`fin.Application`).
4979
- *
4980
- * * {@link ApplicationModule} contains static members of the `Application` API, accessible through `fin.Application`.
4981
- * * {@link Application} describes an instance of an OpenFin Application, e.g. as returned by `fin.Application.getCurrent`.
4982
- *
4983
- * These are separate code entities, and are documented separately. In the [previous version of the API documentation](https://cdn.openfin.co/docs/javascript/32.114.76.10/index.html),
4984
- * both of these were documented on the same page.
4985
- *
4986
- * @packageDocumentation
4987
- */
4988
- __exportStar(requireFactory$1(), exports);
4989
- __exportStar(requireInstance$2(), exports);
4990
- } (application));
4991
- return application;
4992
- }
4953
+ (function (exports) {
4954
+ var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4955
+ if (k2 === undefined) k2 = k;
4956
+ var desc = Object.getOwnPropertyDescriptor(m, k);
4957
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
4958
+ desc = { enumerable: true, get: function() { return m[k]; } };
4959
+ }
4960
+ Object.defineProperty(o, k2, desc);
4961
+ }) : (function(o, m, k, k2) {
4962
+ if (k2 === undefined) k2 = k;
4963
+ o[k2] = m[k];
4964
+ }));
4965
+ var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
4966
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
4967
+ };
4968
+ Object.defineProperty(exports, "__esModule", { value: true });
4969
+ /**
4970
+ * Entry points for the OpenFin `Application` API (`fin.Application`).
4971
+ *
4972
+ * * {@link ApplicationModule} contains static members of the `Application` API, accessible through `fin.Application`.
4973
+ * * {@link Application} describes an instance of an OpenFin Application, e.g. as returned by `fin.Application.getCurrent`.
4974
+ *
4975
+ * These are separate code entities, and are documented separately. In the [previous version of the API documentation](https://cdn.openfin.co/docs/javascript/32.114.76.10/index.html),
4976
+ * both of these were documented on the same page.
4977
+ *
4978
+ * @packageDocumentation
4979
+ */
4980
+ __exportStar(Factory$6, exports);
4981
+ __exportStar(Instance$5, exports);
4982
+ } (application));
4993
4983
 
4994
4984
  var promisifySubscription$1 = {};
4995
4985
 
@@ -5033,7 +5023,7 @@ function requireInstance$1 () {
5033
5023
  /* eslint-disable @typescript-eslint/no-unused-vars */
5034
5024
  /* eslint-disable no-console */
5035
5025
  /* eslint-disable @typescript-eslint/no-non-null-assertion */
5036
- const application_1 = requireApplication();
5026
+ const application_1 = application;
5037
5027
  const main_1 = main;
5038
5028
  const view_1 = requireView();
5039
5029
  const warnings_1 = warnings;
@@ -7094,7 +7084,7 @@ function requireView () {
7094
7084
  *
7095
7085
  * @packageDocumentation
7096
7086
  */
7097
- __exportStar(requireFactory$2(), exports);
7087
+ __exportStar(requireFactory$1(), exports);
7098
7088
  __exportStar(requireInstance(), exports);
7099
7089
  } (view));
7100
7090
  return view;
@@ -7591,7 +7581,7 @@ var __classPrivateFieldGet$g = (commonjsGlobal && commonjsGlobal.__classPrivateF
7591
7581
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
7592
7582
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
7593
7583
  };
7594
- var __importDefault$5 = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
7584
+ var __importDefault$6 = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
7595
7585
  return (mod && mod.__esModule) ? mod : { "default": mod };
7596
7586
  };
7597
7587
  var _Transport_wire, _Transport_fin;
@@ -7600,7 +7590,7 @@ var Transport_1 = transport.Transport = void 0;
7600
7590
  const events_1$5 = require$$0;
7601
7591
  const wire_1 = wire;
7602
7592
  const transport_errors_1$6 = transportErrors;
7603
- const eventAggregator_1 = __importDefault$5(eventAggregator);
7593
+ const eventAggregator_1 = __importDefault$6(eventAggregator);
7604
7594
  const me_1$1 = me;
7605
7595
  const errors_1$2 = errors;
7606
7596
  class Transport extends events_1$5.EventEmitter {
@@ -11475,7 +11465,7 @@ var __classPrivateFieldGet$a = (commonjsGlobal && commonjsGlobal.__classPrivateF
11475
11465
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11476
11466
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11477
11467
  };
11478
- var __importDefault$4 = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
11468
+ var __importDefault$5 = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
11479
11469
  return (mod && mod.__esModule) ? mod : { "default": mod };
11480
11470
  };
11481
11471
  var _ConnectionManager_messageReceiver, _ConnectionManager_rtcConnectionManager;
@@ -11489,7 +11479,7 @@ const ice_manager_1 = iceManager;
11489
11479
  const provider_1$1 = provider;
11490
11480
  const message_receiver_1 = messageReceiver;
11491
11481
  const protocol_manager_1 = protocolManager;
11492
- const strategy_3 = __importDefault$4(strategy);
11482
+ const strategy_3 = __importDefault$5(strategy);
11493
11483
  class ConnectionManager extends base_1$e.Base {
11494
11484
  static getProtocolOptionsFromStrings(protocols) {
11495
11485
  return protocols.map((protocol) => {
@@ -15314,14 +15304,14 @@ var __classPrivateFieldGet$3 = (commonjsGlobal && commonjsGlobal.__classPrivateF
15314
15304
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
15315
15305
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
15316
15306
  };
15317
- var __importDefault$3 = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
15307
+ var __importDefault$4 = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
15318
15308
  return (mod && mod.__esModule) ? mod : { "default": mod };
15319
15309
  };
15320
15310
  var _InteropClient_clientPromise, _InteropClient_sessionContextGroups, _InteropClient_fdc3Factory;
15321
15311
  Object.defineProperty(InteropClient$1, "__esModule", { value: true });
15322
15312
  InteropClient$1.InteropClient = void 0;
15323
15313
  const base_1$4 = base;
15324
- const SessionContextGroupClient_1 = __importDefault$3(SessionContextGroupClient$1);
15314
+ const SessionContextGroupClient_1 = __importDefault$4(SessionContextGroupClient$1);
15325
15315
  const utils_1$5 = utils$3;
15326
15316
  /**
15327
15317
  * The Interop Client API is broken up into two groups:
@@ -16026,15 +16016,86 @@ class PrivateChannelClient {
16026
16016
  }
16027
16017
  PrivateChannelClient$1.PrivateChannelClient = PrivateChannelClient;
16028
16018
 
16019
+ var fdc3Channels2_0 = {};
16020
+
16021
+ var fdc3Channels1_2 = {};
16022
+
16023
+ var __importDefault$3 = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
16024
+ return (mod && mod.__esModule) ? mod : { "default": mod };
16025
+ };
16026
+ Object.defineProperty(fdc3Channels1_2, "__esModule", { value: true });
16027
+ fdc3Channels1_2.createV1Channel = void 0;
16028
+ const isEqual_1$1 = __importDefault$3(require$$3);
16029
+ const createV1Channel = (sessionContextGroup) => {
16030
+ return {
16031
+ id: sessionContextGroup.id,
16032
+ type: 'app',
16033
+ broadcast: sessionContextGroup.setContext,
16034
+ getCurrentContext: async (contextType) => {
16035
+ const context = await sessionContextGroup.getCurrentContext(contextType);
16036
+ return context === undefined ? null : context;
16037
+ },
16038
+ // @ts-expect-error TODO [CORE-1524]
16039
+ addContextListener: (contextType, handler) => {
16040
+ let realHandler;
16041
+ let realType;
16042
+ if (typeof contextType === 'function') {
16043
+ console.warn('addContextListener(handler) has been deprecated. Please use addContextListener(null, handler)');
16044
+ realHandler = contextType;
16045
+ }
16046
+ else {
16047
+ realHandler = handler;
16048
+ if (typeof contextType === 'string') {
16049
+ realType = contextType;
16050
+ }
16051
+ }
16052
+ const listener = (async () => {
16053
+ let first = true;
16054
+ const currentContext = await sessionContextGroup.getCurrentContext(realType);
16055
+ const wrappedHandler = (context, contextMetadata) => {
16056
+ if (first) {
16057
+ first = false;
16058
+ if ((0, isEqual_1$1.default)(currentContext, context)) {
16059
+ return;
16060
+ }
16061
+ }
16062
+ // eslint-disable-next-line consistent-return
16063
+ return realHandler(context, contextMetadata);
16064
+ };
16065
+ return sessionContextGroup.addContextHandler(wrappedHandler, realType);
16066
+ })();
16067
+ return {
16068
+ ...listener,
16069
+ unsubscribe: () => listener.then((l) => l.unsubscribe())
16070
+ };
16071
+ }
16072
+ };
16073
+ };
16074
+ fdc3Channels1_2.createV1Channel = createV1Channel;
16075
+
16076
+ Object.defineProperty(fdc3Channels2_0, "__esModule", { value: true });
16077
+ fdc3Channels2_0.createV2Channel = void 0;
16078
+ const fdc3_channels_1_2_1$1 = fdc3Channels1_2;
16079
+ const createV2Channel = (sessionContextGroup) => {
16080
+ const channel = (0, fdc3_channels_1_2_1$1.createV1Channel)(sessionContextGroup);
16081
+ return {
16082
+ ...channel,
16083
+ // @ts-expect-error Type incompatibility on signature.
16084
+ addContextListener: async (...args) => channel.addContextListener(...args)
16085
+ };
16086
+ };
16087
+ fdc3Channels2_0.createV2Channel = createV2Channel;
16088
+
16029
16089
  (function (exports) {
16030
16090
  var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
16031
16091
  return (mod && mod.__esModule) ? mod : { "default": mod };
16032
16092
  };
16033
16093
  Object.defineProperty(exports, "__esModule", { value: true });
16034
- exports.getIntentResolution = exports.isChannel = exports.isContext = exports.connectPrivateChannel = exports.buildAppChannelObject = exports.buildPrivateChannelObject = exports.ChannelError = exports.ResultError = exports.UnsupportedChannelApiError = exports.getUnsupportedChannelApis = void 0;
16094
+ exports.getIntentResolution = exports.isChannel = exports.isContext = exports.connectPrivateChannel = exports.buildPrivateChannelObject = exports.ChannelError = exports.ResultError = exports.UnsupportedChannelApiError = exports.getUnsupportedChannelApis = void 0;
16035
16095
  const utils_1 = utils$3;
16036
16096
  const PrivateChannelClient_1 = PrivateChannelClient$1;
16037
- const isEqual_1 = __importDefault(require$$3);
16097
+ __importDefault(require$$3);
16098
+ const fdc3_channels_2_0_1 = fdc3Channels2_0;
16038
16099
  const getUnsupportedChannelApis = (channelType) => {
16039
16100
  return {
16040
16101
  addContextListener: () => {
@@ -16133,52 +16194,6 @@ PrivateChannelClient$1.PrivateChannelClient = PrivateChannelClient;
16133
16194
  };
16134
16195
  };
16135
16196
  exports.buildPrivateChannelObject = buildPrivateChannelObject;
16136
- const buildAppChannelObject = (sessionContextGroup) => {
16137
- return {
16138
- id: sessionContextGroup.id,
16139
- type: 'app',
16140
- broadcast: sessionContextGroup.setContext,
16141
- getCurrentContext: async (contextType) => {
16142
- const context = await sessionContextGroup.getCurrentContext(contextType);
16143
- return context === undefined ? null : context;
16144
- },
16145
- // @ts-expect-error TODO [CORE-1524]
16146
- addContextListener: (contextType, handler) => {
16147
- let realHandler;
16148
- let realType;
16149
- if (typeof contextType === 'function') {
16150
- console.warn('addContextListener(handler) has been deprecated. Please use addContextListener(null, handler)');
16151
- realHandler = contextType;
16152
- }
16153
- else {
16154
- realHandler = handler;
16155
- if (typeof contextType === 'string') {
16156
- realType = contextType;
16157
- }
16158
- }
16159
- const listener = (async () => {
16160
- let first = true;
16161
- const currentContext = await sessionContextGroup.getCurrentContext(realType);
16162
- const wrappedHandler = (context, contextMetadata) => {
16163
- if (first) {
16164
- first = false;
16165
- if ((0, isEqual_1.default)(currentContext, context)) {
16166
- return;
16167
- }
16168
- }
16169
- // eslint-disable-next-line consistent-return
16170
- return realHandler(context, contextMetadata);
16171
- };
16172
- return sessionContextGroup.addContextHandler(wrappedHandler, realType);
16173
- })();
16174
- return {
16175
- ...listener,
16176
- unsubscribe: () => listener.then((l) => l.unsubscribe())
16177
- };
16178
- }
16179
- };
16180
- };
16181
- exports.buildAppChannelObject = buildAppChannelObject;
16182
16197
  const connectPrivateChannel = async (channelId) => {
16183
16198
  try {
16184
16199
  const channelClient = await fin.InterApplicationBus.Channel.connect(channelId);
@@ -16210,6 +16225,10 @@ PrivateChannelClient$1.PrivateChannelClient = PrivateChannelClient;
16210
16225
  // Generate an ID to make a session context group with. We will pass that ID to the Broker.
16211
16226
  // The broker will then setContext on that session context group later with our Intent Result,
16212
16227
  const guid = (0, utils_1.generateId)(); // TODO make this undefined in web
16228
+ let isPromiseSettled = false;
16229
+ // Adding the intentResolutionResultId to the intentObj. Because fireIntent only accepts a single arg, we have to slap it in here.
16230
+ const metadata = app ? { target: app, intentResolutionResultId: guid } : { intentResolutionResultId: guid };
16231
+ const intentObj = intent ? { name: intent, context, metadata } : { ...context, metadata };
16213
16232
  // Promise we'll use in getResult
16214
16233
  const getResultPromise = new Promise((resolve, reject) => {
16215
16234
  fin.InterApplicationBus.subscribe({ uuid: '*' }, guid, (intentResult) => {
@@ -16222,13 +16241,24 @@ PrivateChannelClient$1.PrivateChannelClient = PrivateChannelClient;
16222
16241
  reject(new Error('getResult is not supported in this environment'));
16223
16242
  });
16224
16243
  });
16225
- // Adding the intentResolutionResultId to the intentObj. Because fireIntent only accepts a single arg, we have to slap it in here.
16226
- const metadata = app ? { target: app, intentResolutionResultId: guid } : { intentResolutionResultId: guid };
16227
- const intentObj = intent ? { name: intent, context, metadata } : { ...context, metadata };
16244
+ getResultPromise
16245
+ .then(() => {
16246
+ isPromiseSettled = true;
16247
+ })
16248
+ .catch(() => {
16249
+ isPromiseSettled = true;
16250
+ });
16228
16251
  // Set up the getResult call.
16229
16252
  const getResult = async () => {
16253
+ // All this mumbo jumbo is needed to make sure that getResult resolves correctly and conforms to the FDC3 spec.
16254
+ if (!isPromiseSettled) {
16255
+ return undefined;
16256
+ }
16230
16257
  let intentResult = await getResultPromise;
16231
- if (!intentResult || typeof intentResult !== 'object') {
16258
+ if (isPromiseSettled && !intentResult) {
16259
+ return undefined;
16260
+ }
16261
+ if (typeof intentResult !== 'object') {
16232
16262
  throw new Error(ResultError.NoResultReturned);
16233
16263
  }
16234
16264
  const { error } = intentResult;
@@ -16244,7 +16274,7 @@ PrivateChannelClient$1.PrivateChannelClient = PrivateChannelClient;
16244
16274
  }
16245
16275
  case 'app': {
16246
16276
  const sessionContextGroup = await interopModule.joinSessionContextGroup(id);
16247
- intentResult = (0, exports.buildAppChannelObject)(sessionContextGroup);
16277
+ intentResult = (0, fdc3_channels_2_0_1.createV2Channel)(sessionContextGroup);
16248
16278
  break;
16249
16279
  }
16250
16280
  }
@@ -16354,10 +16384,16 @@ class FDC3ModuleBase {
16354
16384
  *
16355
16385
  * @tutorial fdc3.getOrCreateChannel
16356
16386
  */
16357
- async getOrCreateChannel(channelId) {
16387
+ async getOrCreateChannel(channelId, fdc3Factory) {
16358
16388
  this.wire.sendAction('fdc3-get-or-create-channel').catch((e) => {
16359
16389
  // we do not want to expose this error, just continue if this analytics-only call fails
16360
16390
  });
16391
+ const hasChannelIdBeenUsed = await InteropClient_1$2.InteropClient.ferryFdc3Call(this.client, 'isIdUsedByPrivateChannel', {
16392
+ channelId
16393
+ });
16394
+ if (hasChannelIdBeenUsed) {
16395
+ throw new Error(utils_1$4.ChannelError.AccessDenied);
16396
+ }
16361
16397
  const systemChannels = await this._getChannels();
16362
16398
  const userChannel = systemChannels.find((channel) => channel.id === channelId);
16363
16399
  if (userChannel) {
@@ -16365,7 +16401,7 @@ class FDC3ModuleBase {
16365
16401
  }
16366
16402
  try {
16367
16403
  const sessionContextGroup = await this.client.joinSessionContextGroup(channelId);
16368
- return (0, utils_1$4.buildAppChannelObject)(sessionContextGroup);
16404
+ return fdc3Factory(sessionContextGroup);
16369
16405
  }
16370
16406
  catch (error) {
16371
16407
  console.error(error.message);
@@ -16515,6 +16551,7 @@ Object.defineProperty(fdc31_2, "__esModule", { value: true });
16515
16551
  fdc31_2.Fdc3Module = void 0;
16516
16552
  const utils_1$3 = utils$3;
16517
16553
  const fdc3_common_1$1 = fdc3Common;
16554
+ const fdc3_channels_1_2_1 = fdc3Channels1_2;
16518
16555
  /**
16519
16556
  * @version 1.2
16520
16557
  * The FDC3 Client Library provides a set APIs to be used for FDC3 compliance,
@@ -16697,7 +16734,7 @@ class Fdc3Module extends fdc3_common_1$1.FDC3ModuleBase {
16697
16734
  * @tutorial fdc3.getOrCreateChannel
16698
16735
  */
16699
16736
  async getOrCreateChannel(channelId) {
16700
- return super.getOrCreateChannel(channelId);
16737
+ return super.getOrCreateChannel(channelId, fdc3_channels_1_2_1.createV1Channel);
16701
16738
  }
16702
16739
  /**
16703
16740
  * Returns metadata relating to the FDC3 object and its provider, including the supported version of the FDC3 specification and the name of the provider of the implementation.
@@ -16727,6 +16764,7 @@ const utils_1$2 = utils$3;
16727
16764
  const InteropClient_1$1 = InteropClient$1;
16728
16765
  const utils_2 = utils$2;
16729
16766
  const PrivateChannelClient_1 = PrivateChannelClient$1;
16767
+ const fdc3_channels_2_0_1 = fdc3Channels2_0;
16730
16768
  /**
16731
16769
  * @version 2.0
16732
16770
  * The FDC3 Client Library provides a set APIs to be used for FDC3 compliance,
@@ -16978,7 +17016,7 @@ class Fdc3Module2 extends fdc3_common_1.FDC3ModuleBase {
16978
17016
  * @tutorial fdc3.getOrCreateChannel
16979
17017
  */
16980
17018
  async getOrCreateChannel(channelId) {
16981
- return super.getOrCreateChannel(channelId);
17019
+ return super.getOrCreateChannel(channelId, fdc3_channels_2_0_1.createV2Channel);
16982
17020
  }
16983
17021
  /**
16984
17022
  * Returns a Channel with an auto-generated identity that is intended for private communication between applications. Primarily used to create channels that will be returned to other applications via an IntentResolution for a raised intent.
@@ -17696,7 +17734,7 @@ const events_1 = require$$0;
17696
17734
  // Import from the file rather than the directory in case someone consuming types is using module resolution other than "node"
17697
17735
  const index_1 = system;
17698
17736
  const index_2 = requireWindow();
17699
- const index_3 = requireApplication();
17737
+ const index_3 = application;
17700
17738
  const index_4 = interappbus;
17701
17739
  const index_5 = clipboard;
17702
17740
  const index_6 = externalApplication;