@openfin/remote-adapter 41.102.7 → 41.102.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/out/remote-adapter.js +1175 -1137
  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;
@@ -868,7 +870,7 @@ var __importDefault$6 = (commonjsGlobal && commonjsGlobal.__importDefault) || fu
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$o = base;
873
+ const base_1$m = base;
872
874
  const SessionContextGroupBroker_1 = __importDefault$6(SessionContextGroupBroker$1);
873
875
  const utils_1$7 = utils$3;
874
876
  const isEqual_1$1 = __importDefault$6(require$$3);
@@ -1037,7 +1039,7 @@ const defaultContextGroups = [
1037
1039
  * ---
1038
1040
  *
1039
1041
  */
1040
- class InteropBroker extends base_1$o.Base {
1042
+ class InteropBroker extends base_1$m.Base {
1041
1043
  /**
1042
1044
  * @internal
1043
1045
  */
@@ -1060,6 +1062,7 @@ class InteropBroker extends base_1$o.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$2.Lazy(createProvider), "f");
1064
1067
  this.setContextGroupMap();
1065
1068
  this.setupChannelProvider();
@@ -2080,7 +2083,15 @@ class InteropBroker extends base_1$o.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$1;
2599
+ var hasRequiredFactory$2;
2589
2600
 
2590
- function requireFactory$1 () {
2591
- if (hasRequiredFactory$1) return Factory$8;
2592
- hasRequiredFactory$1 = 1;
2601
+ function requireFactory$2 () {
2602
+ if (hasRequiredFactory$2) return Factory$8;
2603
+ hasRequiredFactory$2 = 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$n = base;
2752
- class WebContents extends base_1$n.EmitterBase {
2762
+ const base_1$l = base;
2763
+ class WebContents extends base_1$l.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,1133 +3853,1154 @@ var Factory$6 = {};
3842
3853
 
3843
3854
  var Instance$5 = {};
3844
3855
 
3845
- Object.defineProperty(Instance$5, "__esModule", { value: true });
3846
- Instance$5.Application = void 0;
3847
- /* eslint-disable import/prefer-default-export */
3848
- const base_1$m = base;
3849
- const window_1$1 = requireWindow();
3850
- const view_1 = requireView();
3851
- /**
3852
- * An object representing an application. Allows the developer to create,
3853
- * execute, show/close an application as well as listen to {@link OpenFin.ApplicationEvents application events}.
3854
- */
3855
- class Application extends base_1$m.EmitterBase {
3856
- /**
3857
- * @internal
3858
- */
3859
- constructor(wire, identity) {
3860
- super(wire, 'application', identity.uuid);
3861
- this.identity = identity;
3862
- this.window = new window_1$1._Window(this.wire, {
3863
- uuid: this.identity.uuid,
3864
- name: this.identity.uuid
3865
- });
3866
- }
3867
- windowListFromIdentityList(identityList) {
3868
- const windowList = [];
3869
- identityList.forEach((identity) => {
3870
- windowList.push(new window_1$1._Window(this.wire, {
3871
- uuid: identity.uuid,
3872
- name: identity.name
3873
- }));
3874
- });
3875
- return windowList;
3876
- }
3877
- /**
3878
- * Determines if the application is currently running.
3879
- *
3880
- * @example
3881
- *
3882
- * ```js
3883
- * async function isAppRunning() {
3884
- * const app = await fin.Application.getCurrent();
3885
- * return await app.isRunning();
3886
- * }
3887
- * isAppRunning().then(running => console.log(`Current app is running: ${running}`)).catch(err => console.log(err));
3888
- * ```
3889
- */
3890
- isRunning() {
3891
- return this.wire.sendAction('is-application-running', this.identity).then(({ payload }) => payload.data);
3892
- }
3893
- /**
3894
- * Closes the application and any child windows created by the application.
3895
- * Cleans the application from state so it is no longer found in getAllApplications.
3896
- * @param force Close will be prevented from closing when force is false and
3897
- * ‘close-requested’ has been subscribed to for application’s main window.
3898
- *
3899
- * @example
3900
- *
3901
- * ```js
3902
- * async function closeApp() {
3903
- * const allApps1 = await fin.System.getAllApplications(); //[{uuid: 'app1', isRunning: true}, {uuid: 'app2', isRunning: true}]
3904
- * const app = await fin.Application.wrap({uuid: 'app2'});
3905
- * await app.quit();
3906
- * const allApps2 = await fin.System.getAllApplications(); //[{uuid: 'app1', isRunning: true}]
3907
- *
3908
- * }
3909
- * closeApp().then(() => console.log('Application quit')).catch(err => console.log(err));
3910
- * ```
3911
- */
3912
- async quit(force = false) {
3913
- try {
3914
- await this._close(force);
3915
- await this.wire.sendAction('destroy-application', { force, ...this.identity });
3916
- }
3917
- catch (error) {
3918
- const acceptableErrors = ['Remote connection has closed', 'Could not locate the requested application'];
3919
- if (!acceptableErrors.some((msg) => error.message.includes(msg))) {
3920
- throw error;
3921
- }
3922
- }
3923
- }
3924
- async _close(force = false) {
3925
- try {
3926
- await this.wire.sendAction('close-application', { force, ...this.identity });
3927
- }
3928
- catch (error) {
3929
- if (!error.message.includes('Remote connection has closed')) {
3930
- throw error;
3931
- }
3932
- }
3933
- }
3934
- /**
3935
- * @deprecated use Application.quit instead
3936
- * Closes the application and any child windows created by the application.
3937
- * @param force - Close will be prevented from closing when force is false and ‘close-requested’ has been subscribed to for application’s main window.
3938
- * @param callback - called if the method succeeds.
3939
- * @param errorCallback - called if the method fails. The reason for failure is passed as an argument.
3940
- *
3941
- * @example
3942
- *
3943
- * ```js
3944
- * async function closeApp() {
3945
- * const app = await fin.Application.getCurrent();
3946
- * return await app.close();
3947
- * }
3948
- * closeApp().then(() => console.log('Application closed')).catch(err => console.log(err));
3949
- * ```
3950
- */
3951
- close(force = false) {
3952
- console.warn('Deprecation Warning: Application.close is deprecated Please use Application.quit');
3953
- this.wire.sendAction('application-close', this.identity).catch((e) => {
3954
- // we do not want to expose this error, just continue if this analytics-only call fails
3955
- });
3956
- return this._close(force);
3957
- }
3958
- /**
3959
- * Retrieves an array of wrapped fin.Windows for each of the application’s child windows.
3960
- *
3961
- * @example
3962
- *
3963
- * ```js
3964
- * async function getChildWindows() {
3965
- * const app = await fin.Application.getCurrent();
3966
- * return await app.getChildWindows();
3967
- * }
3968
- *
3969
- * getChildWindows().then(children => console.log(children)).catch(err => console.log(err));
3970
- * ```
3971
- */
3972
- getChildWindows() {
3973
- return this.wire.sendAction('get-child-windows', this.identity).then(({ payload }) => {
3974
- const identityList = [];
3975
- payload.data.forEach((winName) => {
3976
- identityList.push({ uuid: this.identity.uuid, name: winName });
3977
- });
3978
- return this.windowListFromIdentityList(identityList);
3979
- });
3980
- }
3981
- /**
3982
- * Retrieves the JSON manifest that was used to create the application. Invokes the error callback
3983
- * if the application was not created from a manifest.
3984
- *
3985
- * @example
3986
- *
3987
- * ```js
3988
- * async function getManifest() {
3989
- * const app = await fin.Application.getCurrent();
3990
- * return await app.getManifest();
3991
- * }
3992
- *
3993
- * getManifest().then(manifest => console.log(manifest)).catch(err => console.log(err));
3994
- * ```
3995
- */
3996
- getManifest() {
3997
- return this.wire.sendAction('get-application-manifest', this.identity).then(({ payload }) => payload.data);
3998
- }
3999
- /**
4000
- * Retrieves UUID of the application that launches this application. Invokes the error callback
4001
- * if the application was created from a manifest.
4002
- *
4003
- * @example
4004
- *
4005
- * ```js
4006
- * async function getParentUuid() {
4007
- * const app = await fin.Application.start({
4008
- * uuid: 'app-1',
4009
- * name: 'myApp',
4010
- * url: 'https://cdn.openfin.co/docs/javascript/stable/tutorial-Application.getParentUuid.html',
4011
- * autoShow: true
4012
- * });
4013
- * return await app.getParentUuid();
4014
- * }
4015
- *
4016
- * getParentUuid().then(parentUuid => console.log(parentUuid)).catch(err => console.log(err));
4017
- * ```
4018
- */
4019
- getParentUuid() {
4020
- return this.wire.sendAction('get-parent-application', this.identity).then(({ payload }) => payload.data);
4021
- }
4022
- /**
4023
- * Retrieves current application's shortcut configuration.
4024
- *
4025
- * @example
4026
- *
4027
- * ```js
4028
- * async function getShortcuts() {
4029
- * const app = await fin.Application.wrap({ uuid: 'testapp' });
4030
- * return await app.getShortcuts();
4031
- * }
4032
- * getShortcuts().then(config => console.log(config)).catch(err => console.log(err));
4033
- * ```
4034
- */
4035
- getShortcuts() {
4036
- return this.wire.sendAction('get-shortcuts', this.identity).then(({ payload }) => payload.data);
4037
- }
4038
- /**
4039
- * Retrieves current application's views.
4040
- * @experimental
4041
- *
4042
- * @example
4043
- *
4044
- * ```js
4045
- * async function getViews() {
4046
- * const app = await fin.Application.getCurrent();
4047
- * return await app.getViews();
4048
- * }
4049
- * getViews().then(views => console.log(views)).catch(err => console.log(err));
4050
- * ```
4051
- */
4052
- async getViews() {
4053
- const { payload } = await this.wire.sendAction('application-get-views', this.identity);
4054
- return payload.data.map((id) => new view_1.View(this.wire, id));
4055
- }
4056
- /**
4057
- * Returns the current zoom level of the application.
4058
- *
4059
- * @example
4060
- *
4061
- * ```js
4062
- * async function getZoomLevel() {
4063
- * const app = await fin.Application.getCurrent();
4064
- * return await app.getZoomLevel();
4065
- * }
4066
- *
4067
- * getZoomLevel().then(zoomLevel => console.log(zoomLevel)).catch(err => console.log(err));
4068
- * ```
4069
- */
4070
- getZoomLevel() {
4071
- return this.wire.sendAction('get-application-zoom-level', this.identity).then(({ payload }) => payload.data);
4072
- }
4073
- /**
4074
- * Returns an instance of the main Window of the application
4075
- *
4076
- * @example
4077
- *
4078
- * ```js
4079
- * async function getWindow() {
4080
- * const app = await fin.Application.start({
4081
- * uuid: 'app-1',
4082
- * name: 'myApp',
4083
- * url: 'https://cdn.openfin.co/docs/javascript/stable/tutorial-Application.getWindow.html',
4084
- * autoShow: true
4085
- * });
4086
- * return await app.getWindow();
4087
- * }
4088
- *
4089
- * getWindow().then(win => {
4090
- * win.showAt(0, 400);
4091
- * win.flash();
4092
- * }).catch(err => console.log(err));
4093
- * ```
4094
- */
4095
- getWindow() {
4096
- this.wire.sendAction('application-get-window', this.identity).catch((e) => {
4097
- // we do not want to expose this error, just continue if this analytics-only call fails
4098
- });
4099
- return Promise.resolve(this.window);
4100
- }
4101
- /**
4102
- * Manually registers a user with the licensing service. The only data sent by this call is userName and appName.
4103
- * @param userName - username to be passed to the RVM.
4104
- * @param appName - app name to be passed to the RVM.
4105
- *
4106
- * @example
4107
- *
4108
- * ```js
4109
- * async function registerUser() {
4110
- * const app = await fin.Application.getCurrent();
4111
- * return await app.registerUser('user', 'myApp');
4112
- * }
4113
- *
4114
- * registerUser().then(() => console.log('Successfully registered the user')).catch(err => console.log(err));
4115
- * ```
4116
- */
4117
- registerUser(userName, appName) {
4118
- return this.wire.sendAction('register-user', { userName, appName, ...this.identity }).then(() => undefined);
4119
- }
4120
- /**
4121
- * Removes the application’s icon from the tray.
4122
- *
4123
- * @example
4124
- *
4125
- * ```js
4126
- * async function removeTrayIcon() {
4127
- * const app = await fin.Application.getCurrent();
4128
- * return await app.removeTrayIcon();
4129
- * }
4130
- *
4131
- * removeTrayIcon().then(() => console.log('Removed the tray icon.')).catch(err => console.log(err));
4132
- * ```
4133
- */
4134
- removeTrayIcon() {
4135
- return this.wire.sendAction('remove-tray-icon', this.identity).then(() => undefined);
4136
- }
4137
- /**
4138
- * Restarts the application.
4139
- *
4140
- * @example
4141
- *
4142
- * ```js
4143
- * async function restartApp() {
4144
- * const app = await fin.Application.getCurrent();
4145
- * return await app.restart();
4146
- * }
4147
- * restartApp().then(() => console.log('Application restarted')).catch(err => console.log(err));
4148
- * ```
4149
- */
4150
- restart() {
4151
- return this.wire.sendAction('restart-application', this.identity).then(() => undefined);
4152
- }
4153
- /**
4154
- * DEPRECATED method to run the application.
4155
- * Needed when starting application via {@link Application.create}, but NOT needed when starting via {@link Application.start}.
4156
- *
4157
- * @example
4158
- *
4159
- * ```js
4160
- * async function run() {
4161
- * const app = await fin.Application.create({
4162
- * name: 'myApp',
4163
- * uuid: 'app-1',
4164
- * url: 'https://cdn.openfin.co/docs/javascript/stable/tutorial-Application.run.html',
4165
- * autoShow: true
4166
- * });
4167
- * await app.run();
4168
- * }
4169
- * run().then(() => console.log('Application is running')).catch(err => console.log(err));
4170
- * ```
4171
- *
4172
- * @ignore
4173
- */
4174
- run() {
4175
- console.warn('Deprecation Warning: Application.run is deprecated Please use fin.Application.start');
4176
- this.wire.sendAction('application-run', this.identity).catch((e) => {
4177
- // we do not want to expose this error, just continue if this analytics-only call fails
4178
- });
4179
- return this._run();
4180
- }
4181
- _run(opts = {}) {
4182
- return this.wire
4183
- .sendAction('run-application', {
4184
- manifestUrl: this._manifestUrl,
4185
- opts,
4186
- ...this.identity
4187
- })
4188
- .then(() => undefined);
4189
- }
4190
- /**
4191
- * Instructs the RVM to schedule one restart of the application.
4192
- *
4193
- * @example
4194
- *
4195
- * ```js
4196
- * async function scheduleRestart() {
4197
- * const app = await fin.Application.getCurrent();
4198
- * return await app.scheduleRestart();
4199
- * }
4200
- *
4201
- * scheduleRestart().then(() => console.log('Application is scheduled to restart')).catch(err => console.log(err));
4202
- * ```
4203
- */
4204
- scheduleRestart() {
4205
- return this.wire.sendAction('relaunch-on-close', this.identity).then(() => undefined);
4206
- }
4207
- /**
4208
- * Sends a message to the RVM to upload the application's logs. On success,
4209
- * an object containing logId is returned.
4210
- *
4211
- * @example
4212
- *
4213
- * ```js
4214
- * async function sendLog() {
4215
- * const app = await fin.Application.getCurrent();
4216
- * return await app.sendApplicationLog();
4217
- * }
4218
- *
4219
- * sendLog().then(info => console.log(info.logId)).catch(err => console.log(err));
4220
- * ```
4221
- */
4222
- async sendApplicationLog() {
4223
- const { payload } = await this.wire.sendAction('send-application-log', this.identity);
4224
- return payload.data;
4225
- }
4226
- /**
4227
- * Sets or removes a custom JumpList for the application. Only applicable in Windows OS.
4228
- * If categories is null the previously set custom JumpList (if any) will be replaced by the standard JumpList for the app (managed by Windows).
4229
- *
4230
- * Note: If the "name" property is omitted it defaults to "tasks".
4231
- * @param jumpListCategories An array of JumpList Categories to populate. If null, remove any existing JumpList configuration and set to Windows default.
4232
- *
4233
- *
4234
- * @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).
4235
- *
4236
- * The bottommost item in the jumplist will always be an item pointing to the current app. Its name is taken from the manifest's
4237
- * **` shortcut.name `** and uses **` shortcut.company `** as a fallback. Clicking that item will launch the app from its current manifest.
4238
- *
4239
- * Note: If the "name" property is omitted it defaults to "tasks".
4240
- *
4241
- * Note: Window OS caches jumplists icons, therefore an icon change might only be visible after the cache is removed or the
4242
- * uuid or shortcut.name is changed.
4243
- *
4244
- * @example
4245
- *
4246
- * ```js
4247
- * const app = fin.Application.getCurrentSync();
4248
- * const appName = 'My App';
4249
- * const jumpListConfig = [ // array of JumpList categories
4250
- * {
4251
- * // has no name and no type so `type` is assumed to be "tasks"
4252
- * items: [ // array of JumpList items
4253
- * {
4254
- * type: 'task',
4255
- * title: `Launch ${appName}`,
4256
- * description: `Runs ${appName} with the default configuration`,
4257
- * deepLink: 'fins://path.to/app/manifest.json',
4258
- * iconPath: 'https://path.to/app/icon.ico',
4259
- * iconIndex: 0
4260
- * },
4261
- * { type: 'separator' },
4262
- * {
4263
- * type: 'task',
4264
- * title: `Restore ${appName}`,
4265
- * description: 'Restore to last configuration',
4266
- * deepLink: 'fins://path.to/app/manifest.json?$$use-last-configuration=true',
4267
- * iconPath: 'https://path.to/app/icon.ico',
4268
- * iconIndex: 0
4269
- * },
4270
- * ]
4271
- * },
4272
- * {
4273
- * name: 'Tools',
4274
- * items: [ // array of JumpList items
4275
- * {
4276
- * type: 'task',
4277
- * title: 'Tool A',
4278
- * description: 'Runs Tool A',
4279
- * deepLink: 'fins://path.to/tool-a/manifest.json',
4280
- * iconPath: 'https://path.to/tool-a/icon.ico',
4281
- * iconIndex: 0
4282
- * },
4283
- * {
4284
- * type: 'task',
4285
- * title: 'Tool B',
4286
- * description: 'Runs Tool B',
4287
- * deepLink: 'fins://path.to/tool-b/manifest.json',
4288
- * iconPath: 'https://path.to/tool-b/icon.ico',
4289
- * iconIndex: 0
4290
- * }]
4291
- * }
4292
- * ];
4293
- *
4294
- * app.setJumpList(jumpListConfig).then(() => console.log('JumpList applied')).catch(e => console.log(`JumpList failed to apply: ${e.toString()}`));
4295
- * ```
4296
- *
4297
- * To handle deeplink args:
4298
- * ```js
4299
- * function handleUseLastConfiguration() {
4300
- * // this handler is called when the app is being launched
4301
- * app.on('run-requested', event => {
4302
- * if(event.userAppConfigArgs['use-last-configuration']) {
4303
- * // your logic here
4304
- * }
4305
- * });
4306
- * // this handler is called when the app was already running when the launch was requested
4307
- * fin.desktop.main(function(args) {
4308
- * if(args && args['use-last-configuration']) {
4309
- * // your logic here
4310
- * }
4311
- * });
4312
- * }
4313
- * ```
4314
- */
4315
- async setJumpList(jumpListCategories) {
4316
- await this.wire.sendAction('set-jump-list', { config: jumpListCategories, ...this.identity });
4317
- }
4318
- /**
4319
- * Adds a customizable icon in the system tray. To listen for a click on the icon use the `tray-icon-clicked` event.
4320
- * @param icon Image URL or base64 encoded string to be used as the icon
4321
- *
4322
- * @example
4323
- *
4324
- * ```js
4325
- * const imageUrl = "http://cdn.openfin.co/assets/testing/icons/circled-digit-one.png";
4326
- * const base64EncodedImage = "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX\
4327
- * ///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII";
4328
- * const dataURL = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DH\
4329
- * xgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==";
4330
- *
4331
- * async function setTrayIcon(icon) {
4332
- * const app = await fin.Application.getCurrent();
4333
- * return await app.setTrayIcon(icon);
4334
- * }
4335
- *
4336
- * // use image url to set tray icon
4337
- * setTrayIcon(imageUrl).then(() => console.log('Setting tray icon')).catch(err => console.log(err));
4338
- *
4339
- * // use base64 encoded string to set tray icon
4340
- * setTrayIcon(base64EncodedImage).then(() => console.log('Setting tray icon')).catch(err => console.log(err));
4341
- *
4342
- * // use a dataURL to set tray icon
4343
- * setTrayIcon(dataURL).then(() => console.log('Setting tray icon')).catch(err => console.log(err));
4344
- * ```
4345
- */
4346
- setTrayIcon(icon) {
4347
- return this.wire
4348
- .sendAction('set-tray-icon', {
4349
- enabledIcon: icon,
4350
- ...this.identity
4351
- })
4352
- .then(() => undefined);
4353
- }
4354
- /**
4355
- * Set hover text for this application's system tray icon.
4356
- * Note: Application must first set a tray icon with {@link Application.setTrayIcon}.
4357
- * @param toolTip
4358
- *
4359
- * @example
4360
- *
4361
- * ```js
4362
- * const app = fin.Application.getCurrentSync();
4363
- * const iconUrl = "http://cdn.openfin.co/assets/testing/icons/circled-digit-one.png";
4364
- *
4365
- * await app.setTrayIcon(iconUrl);
4366
- *
4367
- * await app.setTrayIconToolTip('My Application');
4368
- * ```
4369
- */
4370
- async setTrayIconToolTip(toolTip) {
4371
- await this.wire.sendAction('set-tray-icon-tooltip', { ...this.identity, toolTip });
4372
- }
4373
- /**
4374
- * Sets new application's shortcut configuration. Windows only.
4375
- * @param config New application's shortcut configuration.
4376
- *
4377
- * @remarks Application has to be launched with a manifest and has to have shortcut configuration (icon url, name, etc.) in its manifest
4378
- * to be able to change shortcut states.
4379
- *
4380
- * @example
4381
- *
4382
- * ```js
4383
- * async function setShortcuts(config) {
4384
- * const app = await fin.Application.getCurrent();
4385
- * return app.setShortcuts(config);
4386
- * }
4387
- *
4388
- * setShortcuts({
4389
- * desktop: true,
4390
- * startMenu: false,
4391
- * systemStartup: true
4392
- * }).then(() => console.log('Shortcuts are set.')).catch(err => console.log(err));
4393
- * ```
4394
- */
4395
- setShortcuts(config) {
4396
- return this.wire.sendAction('set-shortcuts', { data: config, ...this.identity }).then(() => undefined);
4397
- }
4398
- /**
4399
- * Sets the query string in all shortcuts for this app. Requires RVM 5.5+.
4400
- * @param queryString The new query string for this app's shortcuts.
4401
- *
4402
- * @example
4403
- *
4404
- * ```js
4405
- * const newQueryArgs = 'arg=true&arg2=false';
4406
- * const app = await fin.Application.getCurrent();
4407
- * try {
4408
- * await app.setShortcutQueryParams(newQueryArgs);
4409
- * } catch(err) {
4410
- * console.error(err)
4411
- * }
4412
- * ```
4413
- */
4414
- async setShortcutQueryParams(queryString) {
4415
- await this.wire.sendAction('set-shortcut-query-args', { data: queryString, ...this.identity });
4416
- }
4417
- /**
4418
- * Sets the zoom level of the application. The original size is 0 and each increment above or below represents zooming 20%
4419
- * larger or smaller to default limits of 300% and 50% of original size, respectively.
4420
- * @param level The zoom level
4421
- *
4422
- * @example
4423
- *
4424
- * ```js
4425
- * async function setZoomLevel(number) {
4426
- * const app = await fin.Application.getCurrent();
4427
- * return await app.setZoomLevel(number);
4428
- * }
4429
- *
4430
- * setZoomLevel(5).then(() => console.log('Setting a zoom level')).catch(err => console.log(err));
4431
- * ```
4432
- */
4433
- setZoomLevel(level) {
4434
- return this.wire.sendAction('set-application-zoom-level', { level, ...this.identity }).then(() => undefined);
4435
- }
4436
- /**
4437
- * Sets a username to correlate with App Log Management.
4438
- * @param username Username to correlate with App's Log.
4439
- *
4440
- * @example
4441
- *
4442
- * ```js
4443
- * async function setAppLogUser() {
4444
- * const app = await fin.Application.getCurrent();
4445
- * return await app.setAppLogUsername('username');
4446
- * }
4447
- *
4448
- * setAppLogUser().then(() => console.log('Success')).catch(err => console.log(err));
4449
- *
4450
- * ```
4451
- */
4452
- async setAppLogUsername(username) {
4453
- await this.wire.sendAction('set-app-log-username', { data: username, ...this.identity });
4454
- }
4455
- /**
4456
- * Retrieves information about the system tray. If the system tray is not set, it will throw an error message.
4457
- * @remarks The only information currently returned is the position and dimensions.
4458
- *
4459
- * @example
4460
- *
4461
- * ```js
4462
- * async function getTrayIconInfo() {
4463
- * const app = await fin.Application.wrap({ uuid: 'testapp' });
4464
- * return await app.getTrayIconInfo();
4465
- * }
4466
- * getTrayIconInfo().then(info => console.log(info)).catch(err => console.log(err));
4467
- * ```
4468
- */
4469
- getTrayIconInfo() {
4470
- return this.wire.sendAction('get-tray-icon-info', this.identity).then(({ payload }) => payload.data);
4471
- }
4472
- /**
4473
- * Checks if the application has an associated tray icon.
4474
- *
4475
- * @example
4476
- *
4477
- * ```js
4478
- * const app = await fin.Application.wrap({ uuid: 'testapp' });
4479
- * const hasTrayIcon = await app.hasTrayIcon();
4480
- * console.log(hasTrayIcon);
4481
- * ```
4482
- */
4483
- hasTrayIcon() {
4484
- return this.wire.sendAction('has-tray-icon', this.identity).then(({ payload }) => payload.data);
4485
- }
4486
- /**
4487
- * Closes the application by terminating its process.
4488
- *
4489
- * @example
4490
- *
4491
- * ```js
4492
- * async function terminateApp() {
4493
- * const app = await fin.Application.getCurrent();
4494
- * return await app.terminate();
4495
- * }
4496
- * terminateApp().then(() => console.log('Application terminated')).catch(err => console.log(err));
4497
- * ```
4498
- */
4499
- terminate() {
4500
- return this.wire.sendAction('terminate-application', this.identity).then(() => undefined);
4501
- }
4502
- /**
4503
- * Waits for a hanging application. This method can be called in response to an application
4504
- * "not-responding" to allow the application to continue and to generate another "not-responding"
4505
- * message after a certain period of time.
4506
- *
4507
- * @ignore
4508
- */
4509
- wait() {
4510
- return this.wire.sendAction('wait-for-hung-application', this.identity).then(() => undefined);
4511
- }
4512
- /**
4513
- * Retrieves information about the application.
4514
- *
4515
- * @remarks If the application was not launched from a manifest, the call will return the closest parent application `manifest`
4516
- * and `manifestUrl`. `initialOptions` shows the parameters used when launched programmatically, or the `startup_app` options
4517
- * if launched from manifest. The `parentUuid` will be the uuid of the immediate parent (if applicable).
4518
- *
4519
- * @example
4520
- *
4521
- * ```js
4522
- * async function getInfo() {
4523
- * const app = await fin.Application.getCurrent();
4524
- * return await app.getInfo();
4525
- * }
4526
- *
4527
- * getInfo().then(info => console.log(info)).catch(err => console.log(err));
4528
- * ```
4529
- */
4530
- getInfo() {
4531
- return this.wire.sendAction('get-info', this.identity).then(({ payload }) => payload.data);
4532
- }
4533
- /**
4534
- * Retrieves all process information for entities (windows and views) associated with an application.
4535
- *
4536
- * @example
4537
- * ```js
4538
- * const app = await fin.Application.getCurrent();
4539
- * const processInfo = await app.getProcessInfo();
4540
- * ```
4541
- * @experimental
4542
- */
4543
- async getProcessInfo() {
4544
- const { payload: { data } } = await this.wire.sendAction('application-get-process-info', this.identity);
4545
- return data;
4546
- }
4547
- /**
4548
- * Sets file auto download location. It's only allowed in the same application.
4549
- *
4550
- * Note: This method is restricted by default and must be enabled via
4551
- * <a href="https://developers.openfin.co/docs/api-security">API security settings</a>.
4552
- * @param downloadLocation file auto download location
4553
- *
4554
- * @throws if setting file auto download location on different applications.
4555
- * @example
4556
- *
4557
- * ```js
4558
- * const downloadLocation = 'C:\\dev\\temp';
4559
- * const app = await fin.Application.getCurrent();
4560
- * try {
4561
- * await app.setFileDownloadLocation(downloadLocation);
4562
- * console.log('File download location is set');
4563
- * } catch(err) {
4564
- * console.error(err)
4565
- * }
4566
- * ```
4567
- */
4568
- async setFileDownloadLocation(downloadLocation) {
4569
- const { name } = this.wire.me;
4570
- const entityIdentity = { uuid: this.identity.uuid, name };
4571
- await this.wire.sendAction('set-file-download-location', { ...entityIdentity, downloadLocation });
4572
- }
4573
- /**
4574
- * 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.
4575
- *
4576
- * Note: This method is restricted by default and must be enabled via
4577
- * <a href="https://developers.openfin.co/docs/api-security">API security settings</a>.
4578
- *
4579
- * @throws if getting file auto download location on different applications.
4580
- * @example
4581
- *
4582
- * ```js
4583
- * const app = await fin.Application.getCurrent();
4584
- * const fileDownloadDir = await app.getFileDownloadLocation();
4585
- * ```
4586
- */
4587
- async getFileDownloadLocation() {
4588
- const { payload: { data } } = await this.wire.sendAction('get-file-download-location', this.identity);
4589
- return data;
4590
- }
4591
- /**
4592
- * Shows a menu on the tray icon. Use with tray-icon-clicked event.
4593
- * @param options
4594
- * @typeParam Data User-defined shape for data returned upon menu item click. Should be a
4595
- * [union](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#union-types)
4596
- * of all possible data shapes for the entire menu, and the click handler should process
4597
- * these with a "reducer" pattern.
4598
- * @throws if the application has no tray icon set
4599
- * @throws if the system tray is currently hidden
4600
- * @example
4601
- *
4602
- * ```js
4603
- * const iconUrl = 'http://cdn.openfin.co/assets/testing/icons/circled-digit-one.png';
4604
- * const app = fin.Application.getCurrentSync();
4605
- *
4606
- * await app.setTrayIcon(iconUrl);
4607
- *
4608
- * const template = [
4609
- * {
4610
- * label: 'Menu Item 1',
4611
- * data: 'hello from item 1'
4612
- * },
4613
- * { type: 'separator' },
4614
- * {
4615
- * label: 'Menu Item 2',
4616
- * type: 'checkbox',
4617
- * checked: true,
4618
- * data: 'The user clicked the checkbox'
4619
- * },
4620
- * {
4621
- * label: 'see more',
4622
- * enabled: false,
4623
- * submenu: [
4624
- * { label: 'submenu 1', data: 'hello from submenu' }
4625
- * ]
4626
- * }
4627
- * ];
4628
- *
4629
- * app.addListener('tray-icon-clicked', (event) => {
4630
- * // right-click
4631
- * if (event.button === 2) {
4632
- * app.showTrayIconPopupMenu({ template }).then(r => {
4633
- * if (r.result === 'closed') {
4634
- * console.log('nothing happened');
4635
- * } else {
4636
- * console.log(r.data);
4637
- * }
4638
- * });
4639
- * }
4640
- * });
4641
- * ```
4642
- */
4643
- async showTrayIconPopupMenu(options) {
4644
- const { name } = this.wire.me;
4645
- const entityIdentity = { uuid: this.identity.uuid, name };
4646
- const { payload } = await this.wire.sendAction('show-tray-icon-popup-menu', { ...entityIdentity, options });
4647
- return payload.data;
4648
- }
4649
- /**
4650
- * Closes the tray icon menu.
4651
- *
4652
- * @throws if the application has no tray icon set
4653
- * @example
4654
- *
4655
- * ```js
4656
- * const app = fin.Application.getCurrentSync();
4657
- *
4658
- * await app.closeTrayIconPopupMenu();
4659
- * ```
4660
- */
4661
- async closeTrayIconPopupMenu() {
4662
- const { name } = this.wire.me;
4663
- const entityIdentity = { uuid: this.identity.uuid, name };
4664
- await this.wire.sendAction('close-tray-icon-popup-menu', { ...entityIdentity });
4665
- }
4666
- }
4667
- Instance$5.Application = Application;
3856
+ var hasRequiredInstance$2;
4668
3857
 
4669
- Object.defineProperty(Factory$6, "__esModule", { value: true });
4670
- Factory$6.ApplicationModule = void 0;
4671
- const base_1$l = base;
4672
- const validate_1$4 = validate;
4673
- const Instance_1$5 = Instance$5;
4674
- /**
4675
- * Static namespace for OpenFin API methods that interact with the {@link Application} class, available under `fin.Application`.
4676
- */
4677
- class ApplicationModule extends base_1$l.Base {
4678
- /**
4679
- * Asynchronously returns an API handle for the given Application identity.
4680
- *
4681
- * @remarks Wrapping an Application identity that does not yet exist will *not* throw an error, and instead
4682
- * returns a stub object that cannot yet perform rendering tasks. This can be useful for plumbing eventing
4683
- * for an Application throughout its entire lifecycle.
4684
- *
4685
- * @example
4686
- *
4687
- * ```js
4688
- * fin.Application.wrap({ uuid: 'testapp' })
4689
- * .then(app => app.isRunning())
4690
- * .then(running => console.log('Application is running: ' + running))
4691
- * .catch(err => console.log(err));
4692
- * ```
4693
- *
4694
- */
4695
- async wrap(identity) {
4696
- this.wire.sendAction('wrap-application').catch((e) => {
4697
- // we do not want to expose this error, just continue if this analytics-only call fails
4698
- });
4699
- const errorMsg = (0, validate_1$4.validateIdentity)(identity);
4700
- if (errorMsg) {
4701
- throw new Error(errorMsg);
4702
- }
4703
- return new Instance_1$5.Application(this.wire, identity);
4704
- }
4705
- /**
4706
- * Synchronously returns an API handle for the given Application identity.
4707
- *
4708
- * @remarks Wrapping an Application identity that does not yet exist will *not* throw an error, and instead
4709
- * returns a stub object that cannot yet perform rendering tasks. This can be useful for plumbing eventing
4710
- * for an Aplication throughout its entire lifecycle.
4711
- *
4712
- * @example
4713
- *
4714
- * ```js
4715
- * const app = fin.Application.wrapSync({ uuid: 'testapp' });
4716
- * await app.close();
4717
- * ```
4718
- *
4719
- */
4720
- wrapSync(identity) {
4721
- this.wire.sendAction('wrap-application-sync').catch((e) => {
4722
- // we do not want to expose this error, just continue if this analytics-only call fails
4723
- });
4724
- const errorMsg = (0, validate_1$4.validateIdentity)(identity);
4725
- if (errorMsg) {
4726
- throw new Error(errorMsg);
4727
- }
4728
- return new Instance_1$5.Application(this.wire, identity);
4729
- }
4730
- async _create(appOptions) {
4731
- // set defaults:
4732
- if (appOptions.waitForPageLoad === undefined) {
4733
- appOptions.waitForPageLoad = false;
4734
- }
4735
- if (appOptions.autoShow === undefined && appOptions.isPlatformController === undefined) {
4736
- appOptions.autoShow = true;
4737
- }
4738
- await this.wire.sendAction('create-application', appOptions);
4739
- return this.wrap({ uuid: appOptions.uuid });
4740
- }
4741
- /**
4742
- * DEPRECATED method to create a new Application. Use {@link Application.ApplicationModule.start Application.start} instead.
4743
- *
4744
- * @example
4745
- *
4746
- * ```js
4747
- * async function createApp() {
4748
- * const app = await fin.Application.create({
4749
- * name: 'myApp',
4750
- * uuid: 'app-3',
4751
- * url: 'https://cdn.openfin.co/docs/javascript/stable/tutorial-Application.create.html',
4752
- * autoShow: true
4753
- * });
4754
- * await app.run();
4755
- * }
4756
- *
4757
- * createApp().then(() => console.log('Application is created')).catch(err => console.log(err));
4758
- * ```
4759
- *
4760
- * @ignore
4761
- */
4762
- create(appOptions) {
4763
- console.warn('Deprecation Warning: fin.Application.create is deprecated. Please use fin.Application.start');
4764
- this.wire.sendAction('application-create').catch((e) => {
4765
- // we do not want to expose this error, just continue if this analytics-only call fails
4766
- });
4767
- return this._create(appOptions);
4768
- }
4769
- /**
4770
- * Creates and starts a new Application.
4771
- *
4772
- * @example
4773
- *
4774
- * ```js
4775
- * async function start() {
4776
- * return fin.Application.start({
4777
- * name: 'app-1',
4778
- * uuid: 'app-1',
4779
- * url: 'https://cdn.openfin.co/docs/javascript/stable/tutorial-Application.start.html',
4780
- * autoShow: true
4781
- * });
4782
- * }
4783
- * start().then(() => console.log('Application is running')).catch(err => console.log(err));
4784
- * ```
4785
- *
4786
- */
4787
- async start(appOptions) {
4788
- this.wire.sendAction('start-application').catch((e) => {
4789
- // we do not want to expose this error, just continue if this analytics-only call fails
4790
- });
4791
- const app = await this._create(appOptions);
4792
- await this.wire.sendAction('run-application', { uuid: appOptions.uuid });
4793
- return app;
4794
- }
4795
- /**
4796
- * Asynchronously starts a batch of applications given an array of application identifiers and manifestUrls.
4797
- * Returns once the RVM is finished attempting to launch the applications.
4798
- * @param opts - Parameters that the RVM will use.
4799
- *
4800
- * @example
4801
- *
4802
- * ```js
4803
- *
4804
- * const applicationInfoArray = [
4805
- * {
4806
- * "uuid": 'App-1',
4807
- * "manifestUrl": 'http://localhost:5555/app1.json',
4808
- * },
4809
- * {
4810
- * "uuid": 'App-2',
4811
- * "manifestUrl": 'http://localhost:5555/app2.json',
4812
- * },
4813
- * {
4814
- * "uuid": 'App-3',
4815
- * "manifestUrl": 'http://localhost:5555/app3.json',
4816
- * }
4817
- * ]
4818
- *
4819
- * fin.Application.startManyManifests(applicationInfoArray)
4820
- * .then(() => {
4821
- * console.log('RVM has finished launching the application list.');
4822
- * })
4823
- * .catch((err) => {
4824
- * console.log(err);
4825
- * })
4826
- * ```
4827
- *
4828
- * @experimental
4829
- */
4830
- async startManyManifests(applications, opts) {
4831
- return this.wire.sendAction('run-applications', { applications, opts }).then(() => undefined);
4832
- }
4833
- /**
4834
- * Asynchronously returns an Application object that represents the current application
4835
- *
4836
- * @example
4837
- *
4838
- * ```js
4839
- * async function isCurrentAppRunning () {
4840
- * const app = await fin.Application.getCurrent();
4841
- * return app.isRunning();
4842
- * }
4843
- *
4844
- * isCurrentAppRunning().then(running => {
4845
- * console.log(`Current app is running: ${running}`);
4846
- * }).catch(err => {
4847
- * console.error(err);
4848
- * });
4849
- *
4850
- * ```
4851
- */
4852
- getCurrent() {
4853
- this.wire.sendAction('get-current-application').catch((e) => {
4854
- // we do not want to expose this error, just continue if this analytics-only call fails
4855
- });
4856
- return this.wrap({ uuid: this.wire.me.uuid });
4857
- }
4858
- /**
4859
- * Synchronously returns an Application object that represents the current application
4860
- *
4861
- * @example
4862
- *
4863
- * ```js
4864
- * async function isCurrentAppRunning () {
4865
- * const app = fin.Application.getCurrentSync();
4866
- * return app.isRunning();
4867
- * }
4868
- *
4869
- * isCurrentAppRunning().then(running => {
4870
- * console.log(`Current app is running: ${running}`);
4871
- * }).catch(err => {
4872
- * console.error(err);
4873
- * });
4874
- *
4875
- * ```
4876
- */
4877
- getCurrentSync() {
4878
- this.wire.sendAction('get-current-application-sync').catch((e) => {
4879
- // we do not want to expose this error, just continue if this analytics-only call fails
4880
- });
4881
- return this.wrapSync({ uuid: this.wire.me.uuid });
4882
- }
4883
- /**
4884
- * Retrieves application's manifest and returns a running instance of the application.
4885
- * @param manifestUrl - The URL of app's manifest.
4886
- * @param opts - Parameters that the RVM will use.
4887
- *
4888
- * @example
4889
- *
4890
- * ```js
4891
- * fin.Application.startFromManifest('http://localhost:5555/app.json').then(app => console.log('App is running')).catch(err => console.log(err));
4892
- *
4893
- * // For a local manifest file:
4894
- * fin.Application.startFromManifest('file:///C:/somefolder/app.json').then(app => console.log('App is running')).catch(err => console.log(err));
4895
- * ```
4896
- */
4897
- async startFromManifest(manifestUrl, opts) {
4898
- this.wire.sendAction('application-start-from-manifest').catch((e) => {
4899
- // we do not want to expose this error, just continue if this analytics-only call fails
4900
- });
4901
- const app = await this._createFromManifest(manifestUrl);
4902
- // @ts-expect-error using private method without warning.
4903
- await app._run(opts); // eslint-disable-line no-underscore-dangle
4904
- return app;
4905
- }
4906
- /**
4907
- * @deprecated Use {@link Application.ApplicationModule.startFromManifest Application.startFromManifest} instead.
4908
- * Retrieves application's manifest and returns a wrapped application.
4909
- * @param manifestUrl - The URL of app's manifest.
4910
- * @param callback - called if the method succeeds.
4911
- * @param errorCallback - called if the method fails. The reason for failure is passed as an argument.
4912
- *
4913
- * @example
4914
- *
4915
- * ```js
4916
- * fin.Application.createFromManifest('http://localhost:5555/app.json').then(app => console.log(app)).catch(err => console.log(err));
4917
- * ```
4918
- * @ignore
4919
- */
4920
- createFromManifest(manifestUrl) {
4921
- console.warn('Deprecation Warning: fin.Application.createFromManifest is deprecated. Please use fin.Application.startFromManifest');
4922
- this.wire.sendAction('application-create-from-manifest').catch((e) => {
4923
- // we do not want to expose this error, just continue if this analytics-only call fails
4924
- });
4925
- return this._createFromManifest(manifestUrl);
4926
- }
4927
- _createFromManifest(manifestUrl) {
4928
- return this.wire
4929
- .sendAction('get-application-manifest', { manifestUrl })
4930
- .then(({ payload }) => {
4931
- const uuid = payload.data.platform ? payload.data.platform.uuid : payload.data.startup_app.uuid;
4932
- return this.wrap({ uuid });
4933
- })
4934
- .then((app) => {
4935
- app._manifestUrl = manifestUrl; // eslint-disable-line no-underscore-dangle
4936
- return app;
4937
- });
4938
- }
3858
+ function requireInstance$2 () {
3859
+ if (hasRequiredInstance$2) return Instance$5;
3860
+ hasRequiredInstance$2 = 1;
3861
+ Object.defineProperty(Instance$5, "__esModule", { value: true });
3862
+ Instance$5.Application = void 0;
3863
+ /* eslint-disable import/prefer-default-export */
3864
+ const base_1 = base;
3865
+ const window_1 = requireWindow();
3866
+ const view_1 = requireView();
3867
+ /**
3868
+ * An object representing an application. Allows the developer to create,
3869
+ * execute, show/close an application as well as listen to {@link OpenFin.ApplicationEvents application events}.
3870
+ */
3871
+ class Application extends base_1.EmitterBase {
3872
+ /**
3873
+ * @internal
3874
+ */
3875
+ constructor(wire, identity) {
3876
+ super(wire, 'application', identity.uuid);
3877
+ this.identity = identity;
3878
+ this.window = new window_1._Window(this.wire, {
3879
+ uuid: this.identity.uuid,
3880
+ name: this.identity.uuid
3881
+ });
3882
+ }
3883
+ windowListFromIdentityList(identityList) {
3884
+ const windowList = [];
3885
+ identityList.forEach((identity) => {
3886
+ windowList.push(new window_1._Window(this.wire, {
3887
+ uuid: identity.uuid,
3888
+ name: identity.name
3889
+ }));
3890
+ });
3891
+ return windowList;
3892
+ }
3893
+ /**
3894
+ * Determines if the application is currently running.
3895
+ *
3896
+ * @example
3897
+ *
3898
+ * ```js
3899
+ * async function isAppRunning() {
3900
+ * const app = await fin.Application.getCurrent();
3901
+ * return await app.isRunning();
3902
+ * }
3903
+ * isAppRunning().then(running => console.log(`Current app is running: ${running}`)).catch(err => console.log(err));
3904
+ * ```
3905
+ */
3906
+ isRunning() {
3907
+ return this.wire.sendAction('is-application-running', this.identity).then(({ payload }) => payload.data);
3908
+ }
3909
+ /**
3910
+ * Closes the application and any child windows created by the application.
3911
+ * Cleans the application from state so it is no longer found in getAllApplications.
3912
+ * @param force Close will be prevented from closing when force is false and
3913
+ * ‘close-requested’ has been subscribed to for application’s main window.
3914
+ *
3915
+ * @example
3916
+ *
3917
+ * ```js
3918
+ * async function closeApp() {
3919
+ * const allApps1 = await fin.System.getAllApplications(); //[{uuid: 'app1', isRunning: true}, {uuid: 'app2', isRunning: true}]
3920
+ * const app = await fin.Application.wrap({uuid: 'app2'});
3921
+ * await app.quit();
3922
+ * const allApps2 = await fin.System.getAllApplications(); //[{uuid: 'app1', isRunning: true}]
3923
+ *
3924
+ * }
3925
+ * closeApp().then(() => console.log('Application quit')).catch(err => console.log(err));
3926
+ * ```
3927
+ */
3928
+ async quit(force = false) {
3929
+ try {
3930
+ await this._close(force);
3931
+ await this.wire.sendAction('destroy-application', { force, ...this.identity });
3932
+ }
3933
+ catch (error) {
3934
+ const acceptableErrors = ['Remote connection has closed', 'Could not locate the requested application'];
3935
+ if (!acceptableErrors.some((msg) => error.message.includes(msg))) {
3936
+ throw error;
3937
+ }
3938
+ }
3939
+ }
3940
+ async _close(force = false) {
3941
+ try {
3942
+ await this.wire.sendAction('close-application', { force, ...this.identity });
3943
+ }
3944
+ catch (error) {
3945
+ if (!error.message.includes('Remote connection has closed')) {
3946
+ throw error;
3947
+ }
3948
+ }
3949
+ }
3950
+ /**
3951
+ * @deprecated use Application.quit instead
3952
+ * Closes the application and any child windows created by the application.
3953
+ * @param force - Close will be prevented from closing when force is false and ‘close-requested’ has been subscribed to for application’s main window.
3954
+ * @param callback - called if the method succeeds.
3955
+ * @param errorCallback - called if the method fails. The reason for failure is passed as an argument.
3956
+ *
3957
+ * @example
3958
+ *
3959
+ * ```js
3960
+ * async function closeApp() {
3961
+ * const app = await fin.Application.getCurrent();
3962
+ * return await app.close();
3963
+ * }
3964
+ * closeApp().then(() => console.log('Application closed')).catch(err => console.log(err));
3965
+ * ```
3966
+ */
3967
+ close(force = false) {
3968
+ console.warn('Deprecation Warning: Application.close is deprecated Please use Application.quit');
3969
+ this.wire.sendAction('application-close', this.identity).catch((e) => {
3970
+ // we do not want to expose this error, just continue if this analytics-only call fails
3971
+ });
3972
+ return this._close(force);
3973
+ }
3974
+ /**
3975
+ * Retrieves an array of wrapped fin.Windows for each of the application’s child windows.
3976
+ *
3977
+ * @example
3978
+ *
3979
+ * ```js
3980
+ * async function getChildWindows() {
3981
+ * const app = await fin.Application.getCurrent();
3982
+ * return await app.getChildWindows();
3983
+ * }
3984
+ *
3985
+ * getChildWindows().then(children => console.log(children)).catch(err => console.log(err));
3986
+ * ```
3987
+ */
3988
+ getChildWindows() {
3989
+ return this.wire.sendAction('get-child-windows', this.identity).then(({ payload }) => {
3990
+ const identityList = [];
3991
+ payload.data.forEach((winName) => {
3992
+ identityList.push({ uuid: this.identity.uuid, name: winName });
3993
+ });
3994
+ return this.windowListFromIdentityList(identityList);
3995
+ });
3996
+ }
3997
+ /**
3998
+ * Retrieves the JSON manifest that was used to create the application. Invokes the error callback
3999
+ * if the application was not created from a manifest.
4000
+ *
4001
+ * @example
4002
+ *
4003
+ * ```js
4004
+ * async function getManifest() {
4005
+ * const app = await fin.Application.getCurrent();
4006
+ * return await app.getManifest();
4007
+ * }
4008
+ *
4009
+ * getManifest().then(manifest => console.log(manifest)).catch(err => console.log(err));
4010
+ * ```
4011
+ */
4012
+ getManifest() {
4013
+ return this.wire.sendAction('get-application-manifest', this.identity).then(({ payload }) => payload.data);
4014
+ }
4015
+ /**
4016
+ * Retrieves UUID of the application that launches this application. Invokes the error callback
4017
+ * if the application was created from a manifest.
4018
+ *
4019
+ * @example
4020
+ *
4021
+ * ```js
4022
+ * async function getParentUuid() {
4023
+ * const app = await fin.Application.start({
4024
+ * uuid: 'app-1',
4025
+ * name: 'myApp',
4026
+ * url: 'https://cdn.openfin.co/docs/javascript/stable/tutorial-Application.getParentUuid.html',
4027
+ * autoShow: true
4028
+ * });
4029
+ * return await app.getParentUuid();
4030
+ * }
4031
+ *
4032
+ * getParentUuid().then(parentUuid => console.log(parentUuid)).catch(err => console.log(err));
4033
+ * ```
4034
+ */
4035
+ getParentUuid() {
4036
+ return this.wire.sendAction('get-parent-application', this.identity).then(({ payload }) => payload.data);
4037
+ }
4038
+ /**
4039
+ * Retrieves current application's shortcut configuration.
4040
+ *
4041
+ * @example
4042
+ *
4043
+ * ```js
4044
+ * async function getShortcuts() {
4045
+ * const app = await fin.Application.wrap({ uuid: 'testapp' });
4046
+ * return await app.getShortcuts();
4047
+ * }
4048
+ * getShortcuts().then(config => console.log(config)).catch(err => console.log(err));
4049
+ * ```
4050
+ */
4051
+ getShortcuts() {
4052
+ return this.wire.sendAction('get-shortcuts', this.identity).then(({ payload }) => payload.data);
4053
+ }
4054
+ /**
4055
+ * Retrieves current application's views.
4056
+ * @experimental
4057
+ *
4058
+ * @example
4059
+ *
4060
+ * ```js
4061
+ * async function getViews() {
4062
+ * const app = await fin.Application.getCurrent();
4063
+ * return await app.getViews();
4064
+ * }
4065
+ * getViews().then(views => console.log(views)).catch(err => console.log(err));
4066
+ * ```
4067
+ */
4068
+ async getViews() {
4069
+ const { payload } = await this.wire.sendAction('application-get-views', this.identity);
4070
+ return payload.data.map((id) => new view_1.View(this.wire, id));
4071
+ }
4072
+ /**
4073
+ * Returns the current zoom level of the application.
4074
+ *
4075
+ * @example
4076
+ *
4077
+ * ```js
4078
+ * async function getZoomLevel() {
4079
+ * const app = await fin.Application.getCurrent();
4080
+ * return await app.getZoomLevel();
4081
+ * }
4082
+ *
4083
+ * getZoomLevel().then(zoomLevel => console.log(zoomLevel)).catch(err => console.log(err));
4084
+ * ```
4085
+ */
4086
+ getZoomLevel() {
4087
+ return this.wire.sendAction('get-application-zoom-level', this.identity).then(({ payload }) => payload.data);
4088
+ }
4089
+ /**
4090
+ * Returns an instance of the main Window of the application
4091
+ *
4092
+ * @example
4093
+ *
4094
+ * ```js
4095
+ * async function getWindow() {
4096
+ * const app = await fin.Application.start({
4097
+ * uuid: 'app-1',
4098
+ * name: 'myApp',
4099
+ * url: 'https://cdn.openfin.co/docs/javascript/stable/tutorial-Application.getWindow.html',
4100
+ * autoShow: true
4101
+ * });
4102
+ * return await app.getWindow();
4103
+ * }
4104
+ *
4105
+ * getWindow().then(win => {
4106
+ * win.showAt(0, 400);
4107
+ * win.flash();
4108
+ * }).catch(err => console.log(err));
4109
+ * ```
4110
+ */
4111
+ getWindow() {
4112
+ this.wire.sendAction('application-get-window', this.identity).catch((e) => {
4113
+ // we do not want to expose this error, just continue if this analytics-only call fails
4114
+ });
4115
+ return Promise.resolve(this.window);
4116
+ }
4117
+ /**
4118
+ * Manually registers a user with the licensing service. The only data sent by this call is userName and appName.
4119
+ * @param userName - username to be passed to the RVM.
4120
+ * @param appName - app name to be passed to the RVM.
4121
+ *
4122
+ * @example
4123
+ *
4124
+ * ```js
4125
+ * async function registerUser() {
4126
+ * const app = await fin.Application.getCurrent();
4127
+ * return await app.registerUser('user', 'myApp');
4128
+ * }
4129
+ *
4130
+ * registerUser().then(() => console.log('Successfully registered the user')).catch(err => console.log(err));
4131
+ * ```
4132
+ */
4133
+ registerUser(userName, appName) {
4134
+ return this.wire.sendAction('register-user', { userName, appName, ...this.identity }).then(() => undefined);
4135
+ }
4136
+ /**
4137
+ * Removes the application’s icon from the tray.
4138
+ *
4139
+ * @example
4140
+ *
4141
+ * ```js
4142
+ * async function removeTrayIcon() {
4143
+ * const app = await fin.Application.getCurrent();
4144
+ * return await app.removeTrayIcon();
4145
+ * }
4146
+ *
4147
+ * removeTrayIcon().then(() => console.log('Removed the tray icon.')).catch(err => console.log(err));
4148
+ * ```
4149
+ */
4150
+ removeTrayIcon() {
4151
+ return this.wire.sendAction('remove-tray-icon', this.identity).then(() => undefined);
4152
+ }
4153
+ /**
4154
+ * Restarts the application.
4155
+ *
4156
+ * @example
4157
+ *
4158
+ * ```js
4159
+ * async function restartApp() {
4160
+ * const app = await fin.Application.getCurrent();
4161
+ * return await app.restart();
4162
+ * }
4163
+ * restartApp().then(() => console.log('Application restarted')).catch(err => console.log(err));
4164
+ * ```
4165
+ */
4166
+ restart() {
4167
+ return this.wire.sendAction('restart-application', this.identity).then(() => undefined);
4168
+ }
4169
+ /**
4170
+ * DEPRECATED method to run the application.
4171
+ * Needed when starting application via {@link Application.create}, but NOT needed when starting via {@link Application.start}.
4172
+ *
4173
+ * @example
4174
+ *
4175
+ * ```js
4176
+ * async function run() {
4177
+ * const app = await fin.Application.create({
4178
+ * name: 'myApp',
4179
+ * uuid: 'app-1',
4180
+ * url: 'https://cdn.openfin.co/docs/javascript/stable/tutorial-Application.run.html',
4181
+ * autoShow: true
4182
+ * });
4183
+ * await app.run();
4184
+ * }
4185
+ * run().then(() => console.log('Application is running')).catch(err => console.log(err));
4186
+ * ```
4187
+ *
4188
+ * @ignore
4189
+ */
4190
+ run() {
4191
+ console.warn('Deprecation Warning: Application.run is deprecated Please use fin.Application.start');
4192
+ this.wire.sendAction('application-run', this.identity).catch((e) => {
4193
+ // we do not want to expose this error, just continue if this analytics-only call fails
4194
+ });
4195
+ return this._run();
4196
+ }
4197
+ _run(opts = {}) {
4198
+ return this.wire
4199
+ .sendAction('run-application', {
4200
+ manifestUrl: this._manifestUrl,
4201
+ opts,
4202
+ ...this.identity
4203
+ })
4204
+ .then(() => undefined);
4205
+ }
4206
+ /**
4207
+ * Instructs the RVM to schedule one restart of the application.
4208
+ *
4209
+ * @example
4210
+ *
4211
+ * ```js
4212
+ * async function scheduleRestart() {
4213
+ * const app = await fin.Application.getCurrent();
4214
+ * return await app.scheduleRestart();
4215
+ * }
4216
+ *
4217
+ * scheduleRestart().then(() => console.log('Application is scheduled to restart')).catch(err => console.log(err));
4218
+ * ```
4219
+ */
4220
+ scheduleRestart() {
4221
+ return this.wire.sendAction('relaunch-on-close', this.identity).then(() => undefined);
4222
+ }
4223
+ /**
4224
+ * Sends a message to the RVM to upload the application's logs. On success,
4225
+ * an object containing logId is returned.
4226
+ *
4227
+ * @example
4228
+ *
4229
+ * ```js
4230
+ * async function sendLog() {
4231
+ * const app = await fin.Application.getCurrent();
4232
+ * return await app.sendApplicationLog();
4233
+ * }
4234
+ *
4235
+ * sendLog().then(info => console.log(info.logId)).catch(err => console.log(err));
4236
+ * ```
4237
+ */
4238
+ async sendApplicationLog() {
4239
+ const { payload } = await this.wire.sendAction('send-application-log', this.identity);
4240
+ return payload.data;
4241
+ }
4242
+ /**
4243
+ * Sets or removes a custom JumpList for the application. Only applicable in Windows OS.
4244
+ * If categories is null the previously set custom JumpList (if any) will be replaced by the standard JumpList for the app (managed by Windows).
4245
+ *
4246
+ * Note: If the "name" property is omitted it defaults to "tasks".
4247
+ * @param jumpListCategories An array of JumpList Categories to populate. If null, remove any existing JumpList configuration and set to Windows default.
4248
+ *
4249
+ *
4250
+ * @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).
4251
+ *
4252
+ * The bottommost item in the jumplist will always be an item pointing to the current app. Its name is taken from the manifest's
4253
+ * **` shortcut.name `** and uses **` shortcut.company `** as a fallback. Clicking that item will launch the app from its current manifest.
4254
+ *
4255
+ * Note: If the "name" property is omitted it defaults to "tasks".
4256
+ *
4257
+ * Note: Window OS caches jumplists icons, therefore an icon change might only be visible after the cache is removed or the
4258
+ * uuid or shortcut.name is changed.
4259
+ *
4260
+ * @example
4261
+ *
4262
+ * ```js
4263
+ * const app = fin.Application.getCurrentSync();
4264
+ * const appName = 'My App';
4265
+ * const jumpListConfig = [ // array of JumpList categories
4266
+ * {
4267
+ * // has no name and no type so `type` is assumed to be "tasks"
4268
+ * items: [ // array of JumpList items
4269
+ * {
4270
+ * type: 'task',
4271
+ * title: `Launch ${appName}`,
4272
+ * description: `Runs ${appName} with the default configuration`,
4273
+ * deepLink: 'fins://path.to/app/manifest.json',
4274
+ * iconPath: 'https://path.to/app/icon.ico',
4275
+ * iconIndex: 0
4276
+ * },
4277
+ * { type: 'separator' },
4278
+ * {
4279
+ * type: 'task',
4280
+ * title: `Restore ${appName}`,
4281
+ * description: 'Restore to last configuration',
4282
+ * deepLink: 'fins://path.to/app/manifest.json?$$use-last-configuration=true',
4283
+ * iconPath: 'https://path.to/app/icon.ico',
4284
+ * iconIndex: 0
4285
+ * },
4286
+ * ]
4287
+ * },
4288
+ * {
4289
+ * name: 'Tools',
4290
+ * items: [ // array of JumpList items
4291
+ * {
4292
+ * type: 'task',
4293
+ * title: 'Tool A',
4294
+ * description: 'Runs Tool A',
4295
+ * deepLink: 'fins://path.to/tool-a/manifest.json',
4296
+ * iconPath: 'https://path.to/tool-a/icon.ico',
4297
+ * iconIndex: 0
4298
+ * },
4299
+ * {
4300
+ * type: 'task',
4301
+ * title: 'Tool B',
4302
+ * description: 'Runs Tool B',
4303
+ * deepLink: 'fins://path.to/tool-b/manifest.json',
4304
+ * iconPath: 'https://path.to/tool-b/icon.ico',
4305
+ * iconIndex: 0
4306
+ * }]
4307
+ * }
4308
+ * ];
4309
+ *
4310
+ * app.setJumpList(jumpListConfig).then(() => console.log('JumpList applied')).catch(e => console.log(`JumpList failed to apply: ${e.toString()}`));
4311
+ * ```
4312
+ *
4313
+ * To handle deeplink args:
4314
+ * ```js
4315
+ * function handleUseLastConfiguration() {
4316
+ * // this handler is called when the app is being launched
4317
+ * app.on('run-requested', event => {
4318
+ * if(event.userAppConfigArgs['use-last-configuration']) {
4319
+ * // your logic here
4320
+ * }
4321
+ * });
4322
+ * // this handler is called when the app was already running when the launch was requested
4323
+ * fin.desktop.main(function(args) {
4324
+ * if(args && args['use-last-configuration']) {
4325
+ * // your logic here
4326
+ * }
4327
+ * });
4328
+ * }
4329
+ * ```
4330
+ */
4331
+ async setJumpList(jumpListCategories) {
4332
+ await this.wire.sendAction('set-jump-list', { config: jumpListCategories, ...this.identity });
4333
+ }
4334
+ /**
4335
+ * Adds a customizable icon in the system tray. To listen for a click on the icon use the `tray-icon-clicked` event.
4336
+ * @param icon Image URL or base64 encoded string to be used as the icon
4337
+ *
4338
+ * @example
4339
+ *
4340
+ * ```js
4341
+ * const imageUrl = "http://cdn.openfin.co/assets/testing/icons/circled-digit-one.png";
4342
+ * const base64EncodedImage = "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX\
4343
+ * ///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII";
4344
+ * const dataURL = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DH\
4345
+ * xgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==";
4346
+ *
4347
+ * async function setTrayIcon(icon) {
4348
+ * const app = await fin.Application.getCurrent();
4349
+ * return await app.setTrayIcon(icon);
4350
+ * }
4351
+ *
4352
+ * // use image url to set tray icon
4353
+ * setTrayIcon(imageUrl).then(() => console.log('Setting tray icon')).catch(err => console.log(err));
4354
+ *
4355
+ * // use base64 encoded string to set tray icon
4356
+ * setTrayIcon(base64EncodedImage).then(() => console.log('Setting tray icon')).catch(err => console.log(err));
4357
+ *
4358
+ * // use a dataURL to set tray icon
4359
+ * setTrayIcon(dataURL).then(() => console.log('Setting tray icon')).catch(err => console.log(err));
4360
+ * ```
4361
+ */
4362
+ setTrayIcon(icon) {
4363
+ return this.wire
4364
+ .sendAction('set-tray-icon', {
4365
+ enabledIcon: icon,
4366
+ ...this.identity
4367
+ })
4368
+ .then(() => undefined);
4369
+ }
4370
+ /**
4371
+ * Set hover text for this application's system tray icon.
4372
+ * Note: Application must first set a tray icon with {@link Application.setTrayIcon}.
4373
+ * @param toolTip
4374
+ *
4375
+ * @example
4376
+ *
4377
+ * ```js
4378
+ * const app = fin.Application.getCurrentSync();
4379
+ * const iconUrl = "http://cdn.openfin.co/assets/testing/icons/circled-digit-one.png";
4380
+ *
4381
+ * await app.setTrayIcon(iconUrl);
4382
+ *
4383
+ * await app.setTrayIconToolTip('My Application');
4384
+ * ```
4385
+ */
4386
+ async setTrayIconToolTip(toolTip) {
4387
+ await this.wire.sendAction('set-tray-icon-tooltip', { ...this.identity, toolTip });
4388
+ }
4389
+ /**
4390
+ * Sets new application's shortcut configuration. Windows only.
4391
+ * @param config New application's shortcut configuration.
4392
+ *
4393
+ * @remarks Application has to be launched with a manifest and has to have shortcut configuration (icon url, name, etc.) in its manifest
4394
+ * to be able to change shortcut states.
4395
+ *
4396
+ * @example
4397
+ *
4398
+ * ```js
4399
+ * async function setShortcuts(config) {
4400
+ * const app = await fin.Application.getCurrent();
4401
+ * return app.setShortcuts(config);
4402
+ * }
4403
+ *
4404
+ * setShortcuts({
4405
+ * desktop: true,
4406
+ * startMenu: false,
4407
+ * systemStartup: true
4408
+ * }).then(() => console.log('Shortcuts are set.')).catch(err => console.log(err));
4409
+ * ```
4410
+ */
4411
+ setShortcuts(config) {
4412
+ return this.wire.sendAction('set-shortcuts', { data: config, ...this.identity }).then(() => undefined);
4413
+ }
4414
+ /**
4415
+ * Sets the query string in all shortcuts for this app. Requires RVM 5.5+.
4416
+ * @param queryString The new query string for this app's shortcuts.
4417
+ *
4418
+ * @example
4419
+ *
4420
+ * ```js
4421
+ * const newQueryArgs = 'arg=true&arg2=false';
4422
+ * const app = await fin.Application.getCurrent();
4423
+ * try {
4424
+ * await app.setShortcutQueryParams(newQueryArgs);
4425
+ * } catch(err) {
4426
+ * console.error(err)
4427
+ * }
4428
+ * ```
4429
+ */
4430
+ async setShortcutQueryParams(queryString) {
4431
+ await this.wire.sendAction('set-shortcut-query-args', { data: queryString, ...this.identity });
4432
+ }
4433
+ /**
4434
+ * Sets the zoom level of the application. The original size is 0 and each increment above or below represents zooming 20%
4435
+ * larger or smaller to default limits of 300% and 50% of original size, respectively.
4436
+ * @param level The zoom level
4437
+ *
4438
+ * @example
4439
+ *
4440
+ * ```js
4441
+ * async function setZoomLevel(number) {
4442
+ * const app = await fin.Application.getCurrent();
4443
+ * return await app.setZoomLevel(number);
4444
+ * }
4445
+ *
4446
+ * setZoomLevel(5).then(() => console.log('Setting a zoom level')).catch(err => console.log(err));
4447
+ * ```
4448
+ */
4449
+ setZoomLevel(level) {
4450
+ return this.wire.sendAction('set-application-zoom-level', { level, ...this.identity }).then(() => undefined);
4451
+ }
4452
+ /**
4453
+ * Sets a username to correlate with App Log Management.
4454
+ * @param username Username to correlate with App's Log.
4455
+ *
4456
+ * @example
4457
+ *
4458
+ * ```js
4459
+ * async function setAppLogUser() {
4460
+ * const app = await fin.Application.getCurrent();
4461
+ * return await app.setAppLogUsername('username');
4462
+ * }
4463
+ *
4464
+ * setAppLogUser().then(() => console.log('Success')).catch(err => console.log(err));
4465
+ *
4466
+ * ```
4467
+ */
4468
+ async setAppLogUsername(username) {
4469
+ await this.wire.sendAction('set-app-log-username', { data: username, ...this.identity });
4470
+ }
4471
+ /**
4472
+ * Retrieves information about the system tray. If the system tray is not set, it will throw an error message.
4473
+ * @remarks The only information currently returned is the position and dimensions.
4474
+ *
4475
+ * @example
4476
+ *
4477
+ * ```js
4478
+ * async function getTrayIconInfo() {
4479
+ * const app = await fin.Application.wrap({ uuid: 'testapp' });
4480
+ * return await app.getTrayIconInfo();
4481
+ * }
4482
+ * getTrayIconInfo().then(info => console.log(info)).catch(err => console.log(err));
4483
+ * ```
4484
+ */
4485
+ getTrayIconInfo() {
4486
+ return this.wire.sendAction('get-tray-icon-info', this.identity).then(({ payload }) => payload.data);
4487
+ }
4488
+ /**
4489
+ * Checks if the application has an associated tray icon.
4490
+ *
4491
+ * @example
4492
+ *
4493
+ * ```js
4494
+ * const app = await fin.Application.wrap({ uuid: 'testapp' });
4495
+ * const hasTrayIcon = await app.hasTrayIcon();
4496
+ * console.log(hasTrayIcon);
4497
+ * ```
4498
+ */
4499
+ hasTrayIcon() {
4500
+ return this.wire.sendAction('has-tray-icon', this.identity).then(({ payload }) => payload.data);
4501
+ }
4502
+ /**
4503
+ * Closes the application by terminating its process.
4504
+ *
4505
+ * @example
4506
+ *
4507
+ * ```js
4508
+ * async function terminateApp() {
4509
+ * const app = await fin.Application.getCurrent();
4510
+ * return await app.terminate();
4511
+ * }
4512
+ * terminateApp().then(() => console.log('Application terminated')).catch(err => console.log(err));
4513
+ * ```
4514
+ */
4515
+ terminate() {
4516
+ return this.wire.sendAction('terminate-application', this.identity).then(() => undefined);
4517
+ }
4518
+ /**
4519
+ * Waits for a hanging application. This method can be called in response to an application
4520
+ * "not-responding" to allow the application to continue and to generate another "not-responding"
4521
+ * message after a certain period of time.
4522
+ *
4523
+ * @ignore
4524
+ */
4525
+ wait() {
4526
+ return this.wire.sendAction('wait-for-hung-application', this.identity).then(() => undefined);
4527
+ }
4528
+ /**
4529
+ * Retrieves information about the application.
4530
+ *
4531
+ * @remarks If the application was not launched from a manifest, the call will return the closest parent application `manifest`
4532
+ * and `manifestUrl`. `initialOptions` shows the parameters used when launched programmatically, or the `startup_app` options
4533
+ * if launched from manifest. The `parentUuid` will be the uuid of the immediate parent (if applicable).
4534
+ *
4535
+ * @example
4536
+ *
4537
+ * ```js
4538
+ * async function getInfo() {
4539
+ * const app = await fin.Application.getCurrent();
4540
+ * return await app.getInfo();
4541
+ * }
4542
+ *
4543
+ * getInfo().then(info => console.log(info)).catch(err => console.log(err));
4544
+ * ```
4545
+ */
4546
+ getInfo() {
4547
+ return this.wire.sendAction('get-info', this.identity).then(({ payload }) => payload.data);
4548
+ }
4549
+ /**
4550
+ * Retrieves all process information for entities (windows and views) associated with an application.
4551
+ *
4552
+ * @example
4553
+ * ```js
4554
+ * const app = await fin.Application.getCurrent();
4555
+ * const processInfo = await app.getProcessInfo();
4556
+ * ```
4557
+ * @experimental
4558
+ */
4559
+ async getProcessInfo() {
4560
+ const { payload: { data } } = await this.wire.sendAction('application-get-process-info', this.identity);
4561
+ return data;
4562
+ }
4563
+ /**
4564
+ * Sets file auto download location. It's only allowed in the same application.
4565
+ *
4566
+ * Note: This method is restricted by default and must be enabled via
4567
+ * <a href="https://developers.openfin.co/docs/api-security">API security settings</a>.
4568
+ * @param downloadLocation file auto download location
4569
+ *
4570
+ * @throws if setting file auto download location on different applications.
4571
+ * @example
4572
+ *
4573
+ * ```js
4574
+ * const downloadLocation = 'C:\\dev\\temp';
4575
+ * const app = await fin.Application.getCurrent();
4576
+ * try {
4577
+ * await app.setFileDownloadLocation(downloadLocation);
4578
+ * console.log('File download location is set');
4579
+ * } catch(err) {
4580
+ * console.error(err)
4581
+ * }
4582
+ * ```
4583
+ */
4584
+ async setFileDownloadLocation(downloadLocation) {
4585
+ const { name } = this.wire.me;
4586
+ const entityIdentity = { uuid: this.identity.uuid, name };
4587
+ await this.wire.sendAction('set-file-download-location', { ...entityIdentity, downloadLocation });
4588
+ }
4589
+ /**
4590
+ * 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.
4591
+ *
4592
+ * Note: This method is restricted by default and must be enabled via
4593
+ * <a href="https://developers.openfin.co/docs/api-security">API security settings</a>.
4594
+ *
4595
+ * @throws if getting file auto download location on different applications.
4596
+ * @example
4597
+ *
4598
+ * ```js
4599
+ * const app = await fin.Application.getCurrent();
4600
+ * const fileDownloadDir = await app.getFileDownloadLocation();
4601
+ * ```
4602
+ */
4603
+ async getFileDownloadLocation() {
4604
+ const { payload: { data } } = await this.wire.sendAction('get-file-download-location', this.identity);
4605
+ return data;
4606
+ }
4607
+ /**
4608
+ * Shows a menu on the tray icon. Use with tray-icon-clicked event.
4609
+ * @param options
4610
+ * @typeParam Data User-defined shape for data returned upon menu item click. Should be a
4611
+ * [union](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#union-types)
4612
+ * of all possible data shapes for the entire menu, and the click handler should process
4613
+ * these with a "reducer" pattern.
4614
+ * @throws if the application has no tray icon set
4615
+ * @throws if the system tray is currently hidden
4616
+ * @example
4617
+ *
4618
+ * ```js
4619
+ * const iconUrl = 'http://cdn.openfin.co/assets/testing/icons/circled-digit-one.png';
4620
+ * const app = fin.Application.getCurrentSync();
4621
+ *
4622
+ * await app.setTrayIcon(iconUrl);
4623
+ *
4624
+ * const template = [
4625
+ * {
4626
+ * label: 'Menu Item 1',
4627
+ * data: 'hello from item 1'
4628
+ * },
4629
+ * { type: 'separator' },
4630
+ * {
4631
+ * label: 'Menu Item 2',
4632
+ * type: 'checkbox',
4633
+ * checked: true,
4634
+ * data: 'The user clicked the checkbox'
4635
+ * },
4636
+ * {
4637
+ * label: 'see more',
4638
+ * enabled: false,
4639
+ * submenu: [
4640
+ * { label: 'submenu 1', data: 'hello from submenu' }
4641
+ * ]
4642
+ * }
4643
+ * ];
4644
+ *
4645
+ * app.addListener('tray-icon-clicked', (event) => {
4646
+ * // right-click
4647
+ * if (event.button === 2) {
4648
+ * app.showTrayIconPopupMenu({ template }).then(r => {
4649
+ * if (r.result === 'closed') {
4650
+ * console.log('nothing happened');
4651
+ * } else {
4652
+ * console.log(r.data);
4653
+ * }
4654
+ * });
4655
+ * }
4656
+ * });
4657
+ * ```
4658
+ */
4659
+ async showTrayIconPopupMenu(options) {
4660
+ const { name } = this.wire.me;
4661
+ const entityIdentity = { uuid: this.identity.uuid, name };
4662
+ const { payload } = await this.wire.sendAction('show-tray-icon-popup-menu', { ...entityIdentity, options });
4663
+ return payload.data;
4664
+ }
4665
+ /**
4666
+ * Closes the tray icon menu.
4667
+ *
4668
+ * @throws if the application has no tray icon set
4669
+ * @example
4670
+ *
4671
+ * ```js
4672
+ * const app = fin.Application.getCurrentSync();
4673
+ *
4674
+ * await app.closeTrayIconPopupMenu();
4675
+ * ```
4676
+ */
4677
+ async closeTrayIconPopupMenu() {
4678
+ const { name } = this.wire.me;
4679
+ const entityIdentity = { uuid: this.identity.uuid, name };
4680
+ await this.wire.sendAction('close-tray-icon-popup-menu', { ...entityIdentity });
4681
+ }
4682
+ }
4683
+ Instance$5.Application = Application;
4684
+ return Instance$5;
4939
4685
  }
4940
- Factory$6.ApplicationModule = ApplicationModule;
4941
4686
 
4942
- (function (exports) {
4943
- var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4944
- if (k2 === undefined) k2 = k;
4945
- var desc = Object.getOwnPropertyDescriptor(m, k);
4946
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
4947
- desc = { enumerable: true, get: function() { return m[k]; } };
4948
- }
4949
- Object.defineProperty(o, k2, desc);
4950
- }) : (function(o, m, k, k2) {
4951
- if (k2 === undefined) k2 = k;
4952
- o[k2] = m[k];
4953
- }));
4954
- var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
4955
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
4956
- };
4957
- Object.defineProperty(exports, "__esModule", { value: true });
4687
+ var hasRequiredFactory$1;
4688
+
4689
+ function requireFactory$1 () {
4690
+ if (hasRequiredFactory$1) return Factory$6;
4691
+ hasRequiredFactory$1 = 1;
4692
+ Object.defineProperty(Factory$6, "__esModule", { value: true });
4693
+ Factory$6.ApplicationModule = void 0;
4694
+ const base_1 = base;
4695
+ const validate_1 = validate;
4696
+ const Instance_1 = requireInstance$2();
4958
4697
  /**
4959
- * Entry points for the OpenFin `Application` API (`fin.Application`).
4960
- *
4961
- * * {@link ApplicationModule} contains static members of the `Application` API, accessible through `fin.Application`.
4962
- * * {@link Application} describes an instance of an OpenFin Application, e.g. as returned by `fin.Application.getCurrent`.
4963
- *
4964
- * 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),
4965
- * both of these were documented on the same page.
4966
- *
4967
- * @packageDocumentation
4698
+ * Static namespace for OpenFin API methods that interact with the {@link Application} class, available under `fin.Application`.
4968
4699
  */
4969
- __exportStar(Factory$6, exports);
4970
- __exportStar(Instance$5, exports);
4971
- } (application));
4700
+ class ApplicationModule extends base_1.Base {
4701
+ /**
4702
+ * Asynchronously returns an API handle for the given Application identity.
4703
+ *
4704
+ * @remarks Wrapping an Application identity that does not yet exist will *not* throw an error, and instead
4705
+ * returns a stub object that cannot yet perform rendering tasks. This can be useful for plumbing eventing
4706
+ * for an Application throughout its entire lifecycle.
4707
+ *
4708
+ * @example
4709
+ *
4710
+ * ```js
4711
+ * fin.Application.wrap({ uuid: 'testapp' })
4712
+ * .then(app => app.isRunning())
4713
+ * .then(running => console.log('Application is running: ' + running))
4714
+ * .catch(err => console.log(err));
4715
+ * ```
4716
+ *
4717
+ */
4718
+ async wrap(identity) {
4719
+ this.wire.sendAction('wrap-application').catch((e) => {
4720
+ // we do not want to expose this error, just continue if this analytics-only call fails
4721
+ });
4722
+ const errorMsg = (0, validate_1.validateIdentity)(identity);
4723
+ if (errorMsg) {
4724
+ throw new Error(errorMsg);
4725
+ }
4726
+ return new Instance_1.Application(this.wire, identity);
4727
+ }
4728
+ /**
4729
+ * Synchronously returns an API handle for the given Application identity.
4730
+ *
4731
+ * @remarks Wrapping an Application identity that does not yet exist will *not* throw an error, and instead
4732
+ * returns a stub object that cannot yet perform rendering tasks. This can be useful for plumbing eventing
4733
+ * for an Aplication throughout its entire lifecycle.
4734
+ *
4735
+ * @example
4736
+ *
4737
+ * ```js
4738
+ * const app = fin.Application.wrapSync({ uuid: 'testapp' });
4739
+ * await app.close();
4740
+ * ```
4741
+ *
4742
+ */
4743
+ wrapSync(identity) {
4744
+ this.wire.sendAction('wrap-application-sync').catch((e) => {
4745
+ // we do not want to expose this error, just continue if this analytics-only call fails
4746
+ });
4747
+ const errorMsg = (0, validate_1.validateIdentity)(identity);
4748
+ if (errorMsg) {
4749
+ throw new Error(errorMsg);
4750
+ }
4751
+ return new Instance_1.Application(this.wire, identity);
4752
+ }
4753
+ async _create(appOptions) {
4754
+ // set defaults:
4755
+ if (appOptions.waitForPageLoad === undefined) {
4756
+ appOptions.waitForPageLoad = false;
4757
+ }
4758
+ if (appOptions.autoShow === undefined && appOptions.isPlatformController === undefined) {
4759
+ appOptions.autoShow = true;
4760
+ }
4761
+ await this.wire.sendAction('create-application', appOptions);
4762
+ return this.wrap({ uuid: appOptions.uuid });
4763
+ }
4764
+ /**
4765
+ * DEPRECATED method to create a new Application. Use {@link Application.ApplicationModule.start Application.start} instead.
4766
+ *
4767
+ * @example
4768
+ *
4769
+ * ```js
4770
+ * async function createApp() {
4771
+ * const app = await fin.Application.create({
4772
+ * name: 'myApp',
4773
+ * uuid: 'app-3',
4774
+ * url: 'https://cdn.openfin.co/docs/javascript/stable/tutorial-Application.create.html',
4775
+ * autoShow: true
4776
+ * });
4777
+ * await app.run();
4778
+ * }
4779
+ *
4780
+ * createApp().then(() => console.log('Application is created')).catch(err => console.log(err));
4781
+ * ```
4782
+ *
4783
+ * @ignore
4784
+ */
4785
+ create(appOptions) {
4786
+ console.warn('Deprecation Warning: fin.Application.create is deprecated. Please use fin.Application.start');
4787
+ this.wire.sendAction('application-create').catch((e) => {
4788
+ // we do not want to expose this error, just continue if this analytics-only call fails
4789
+ });
4790
+ return this._create(appOptions);
4791
+ }
4792
+ /**
4793
+ * Creates and starts a new Application.
4794
+ *
4795
+ * @example
4796
+ *
4797
+ * ```js
4798
+ * async function start() {
4799
+ * return fin.Application.start({
4800
+ * name: 'app-1',
4801
+ * uuid: 'app-1',
4802
+ * url: 'https://cdn.openfin.co/docs/javascript/stable/tutorial-Application.start.html',
4803
+ * autoShow: true
4804
+ * });
4805
+ * }
4806
+ * start().then(() => console.log('Application is running')).catch(err => console.log(err));
4807
+ * ```
4808
+ *
4809
+ */
4810
+ async start(appOptions) {
4811
+ this.wire.sendAction('start-application').catch((e) => {
4812
+ // we do not want to expose this error, just continue if this analytics-only call fails
4813
+ });
4814
+ const app = await this._create(appOptions);
4815
+ await this.wire.sendAction('run-application', { uuid: appOptions.uuid });
4816
+ return app;
4817
+ }
4818
+ /**
4819
+ * Asynchronously starts a batch of applications given an array of application identifiers and manifestUrls.
4820
+ * Returns once the RVM is finished attempting to launch the applications.
4821
+ * @param opts - Parameters that the RVM will use.
4822
+ *
4823
+ * @example
4824
+ *
4825
+ * ```js
4826
+ *
4827
+ * const applicationInfoArray = [
4828
+ * {
4829
+ * "uuid": 'App-1',
4830
+ * "manifestUrl": 'http://localhost:5555/app1.json',
4831
+ * },
4832
+ * {
4833
+ * "uuid": 'App-2',
4834
+ * "manifestUrl": 'http://localhost:5555/app2.json',
4835
+ * },
4836
+ * {
4837
+ * "uuid": 'App-3',
4838
+ * "manifestUrl": 'http://localhost:5555/app3.json',
4839
+ * }
4840
+ * ]
4841
+ *
4842
+ * fin.Application.startManyManifests(applicationInfoArray)
4843
+ * .then(() => {
4844
+ * console.log('RVM has finished launching the application list.');
4845
+ * })
4846
+ * .catch((err) => {
4847
+ * console.log(err);
4848
+ * })
4849
+ * ```
4850
+ *
4851
+ * @experimental
4852
+ */
4853
+ async startManyManifests(applications, opts) {
4854
+ return this.wire.sendAction('run-applications', { applications, opts }).then(() => undefined);
4855
+ }
4856
+ /**
4857
+ * Asynchronously returns an Application object that represents the current application
4858
+ *
4859
+ * @example
4860
+ *
4861
+ * ```js
4862
+ * async function isCurrentAppRunning () {
4863
+ * const app = await fin.Application.getCurrent();
4864
+ * return app.isRunning();
4865
+ * }
4866
+ *
4867
+ * isCurrentAppRunning().then(running => {
4868
+ * console.log(`Current app is running: ${running}`);
4869
+ * }).catch(err => {
4870
+ * console.error(err);
4871
+ * });
4872
+ *
4873
+ * ```
4874
+ */
4875
+ getCurrent() {
4876
+ this.wire.sendAction('get-current-application').catch((e) => {
4877
+ // we do not want to expose this error, just continue if this analytics-only call fails
4878
+ });
4879
+ return this.wrap({ uuid: this.wire.me.uuid });
4880
+ }
4881
+ /**
4882
+ * Synchronously returns an Application object that represents the current application
4883
+ *
4884
+ * @example
4885
+ *
4886
+ * ```js
4887
+ * async function isCurrentAppRunning () {
4888
+ * const app = fin.Application.getCurrentSync();
4889
+ * return app.isRunning();
4890
+ * }
4891
+ *
4892
+ * isCurrentAppRunning().then(running => {
4893
+ * console.log(`Current app is running: ${running}`);
4894
+ * }).catch(err => {
4895
+ * console.error(err);
4896
+ * });
4897
+ *
4898
+ * ```
4899
+ */
4900
+ getCurrentSync() {
4901
+ this.wire.sendAction('get-current-application-sync').catch((e) => {
4902
+ // we do not want to expose this error, just continue if this analytics-only call fails
4903
+ });
4904
+ return this.wrapSync({ uuid: this.wire.me.uuid });
4905
+ }
4906
+ /**
4907
+ * Retrieves application's manifest and returns a running instance of the application.
4908
+ * @param manifestUrl - The URL of app's manifest.
4909
+ * @param opts - Parameters that the RVM will use.
4910
+ *
4911
+ * @example
4912
+ *
4913
+ * ```js
4914
+ * fin.Application.startFromManifest('http://localhost:5555/app.json').then(app => console.log('App is running')).catch(err => console.log(err));
4915
+ *
4916
+ * // For a local manifest file:
4917
+ * fin.Application.startFromManifest('file:///C:/somefolder/app.json').then(app => console.log('App is running')).catch(err => console.log(err));
4918
+ * ```
4919
+ */
4920
+ async startFromManifest(manifestUrl, opts) {
4921
+ this.wire.sendAction('application-start-from-manifest').catch((e) => {
4922
+ // we do not want to expose this error, just continue if this analytics-only call fails
4923
+ });
4924
+ const app = await this._createFromManifest(manifestUrl);
4925
+ // @ts-expect-error using private method without warning.
4926
+ await app._run(opts); // eslint-disable-line no-underscore-dangle
4927
+ return app;
4928
+ }
4929
+ /**
4930
+ * @deprecated Use {@link Application.ApplicationModule.startFromManifest Application.startFromManifest} instead.
4931
+ * Retrieves application's manifest and returns a wrapped application.
4932
+ * @param manifestUrl - The URL of app's manifest.
4933
+ * @param callback - called if the method succeeds.
4934
+ * @param errorCallback - called if the method fails. The reason for failure is passed as an argument.
4935
+ *
4936
+ * @example
4937
+ *
4938
+ * ```js
4939
+ * fin.Application.createFromManifest('http://localhost:5555/app.json').then(app => console.log(app)).catch(err => console.log(err));
4940
+ * ```
4941
+ * @ignore
4942
+ */
4943
+ createFromManifest(manifestUrl) {
4944
+ console.warn('Deprecation Warning: fin.Application.createFromManifest is deprecated. Please use fin.Application.startFromManifest');
4945
+ this.wire.sendAction('application-create-from-manifest').catch((e) => {
4946
+ // we do not want to expose this error, just continue if this analytics-only call fails
4947
+ });
4948
+ return this._createFromManifest(manifestUrl);
4949
+ }
4950
+ _createFromManifest(manifestUrl) {
4951
+ return this.wire
4952
+ .sendAction('get-application-manifest', { manifestUrl })
4953
+ .then(({ payload }) => {
4954
+ const uuid = payload.data.platform ? payload.data.platform.uuid : payload.data.startup_app.uuid;
4955
+ return this.wrap({ uuid });
4956
+ })
4957
+ .then((app) => {
4958
+ app._manifestUrl = manifestUrl; // eslint-disable-line no-underscore-dangle
4959
+ return app;
4960
+ });
4961
+ }
4962
+ }
4963
+ Factory$6.ApplicationModule = ApplicationModule;
4964
+ return Factory$6;
4965
+ }
4966
+
4967
+ var hasRequiredApplication;
4968
+
4969
+ function requireApplication () {
4970
+ if (hasRequiredApplication) return application;
4971
+ hasRequiredApplication = 1;
4972
+ (function (exports) {
4973
+ var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4974
+ if (k2 === undefined) k2 = k;
4975
+ var desc = Object.getOwnPropertyDescriptor(m, k);
4976
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
4977
+ desc = { enumerable: true, get: function() { return m[k]; } };
4978
+ }
4979
+ Object.defineProperty(o, k2, desc);
4980
+ }) : (function(o, m, k, k2) {
4981
+ if (k2 === undefined) k2 = k;
4982
+ o[k2] = m[k];
4983
+ }));
4984
+ var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
4985
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
4986
+ };
4987
+ Object.defineProperty(exports, "__esModule", { value: true });
4988
+ /**
4989
+ * Entry points for the OpenFin `Application` API (`fin.Application`).
4990
+ *
4991
+ * * {@link ApplicationModule} contains static members of the `Application` API, accessible through `fin.Application`.
4992
+ * * {@link Application} describes an instance of an OpenFin Application, e.g. as returned by `fin.Application.getCurrent`.
4993
+ *
4994
+ * 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),
4995
+ * both of these were documented on the same page.
4996
+ *
4997
+ * @packageDocumentation
4998
+ */
4999
+ __exportStar(requireFactory$1(), exports);
5000
+ __exportStar(requireInstance$2(), exports);
5001
+ } (application));
5002
+ return application;
5003
+ }
4972
5004
 
4973
5005
  var promisifySubscription$1 = {};
4974
5006
 
@@ -5012,7 +5044,7 @@ function requireInstance$1 () {
5012
5044
  /* eslint-disable @typescript-eslint/no-unused-vars */
5013
5045
  /* eslint-disable no-console */
5014
5046
  /* eslint-disable @typescript-eslint/no-non-null-assertion */
5015
- const application_1 = application;
5047
+ const application_1 = requireApplication();
5016
5048
  const main_1 = main;
5017
5049
  const view_1 = requireView();
5018
5050
  const warnings_1 = warnings;
@@ -7070,7 +7102,7 @@ function requireView () {
7070
7102
  *
7071
7103
  * @packageDocumentation
7072
7104
  */
7073
- __exportStar(requireFactory$1(), exports);
7105
+ __exportStar(requireFactory$2(), exports);
7074
7106
  __exportStar(requireInstance(), exports);
7075
7107
  } (view));
7076
7108
  return view;
@@ -16360,6 +16392,12 @@ class FDC3ModuleBase {
16360
16392
  this.wire.sendAction('fdc3-get-or-create-channel').catch((e) => {
16361
16393
  // we do not want to expose this error, just continue if this analytics-only call fails
16362
16394
  });
16395
+ const hasChannelIdBeenUsed = await InteropClient_1$2.InteropClient.ferryFdc3Call(this.client, 'isIdUsedByPrivateChannel', {
16396
+ channelId
16397
+ });
16398
+ if (hasChannelIdBeenUsed) {
16399
+ throw new Error(utils_1$4.ChannelError.AccessDenied);
16400
+ }
16363
16401
  const systemChannels = await this._getChannels();
16364
16402
  const userChannel = systemChannels.find((channel) => channel.id === channelId);
16365
16403
  if (userChannel) {
@@ -17501,7 +17539,7 @@ const events_1 = require$$0;
17501
17539
  // Import from the file rather than the directory in case someone consuming types is using module resolution other than "node"
17502
17540
  const index_1 = system;
17503
17541
  const index_2 = requireWindow();
17504
- const index_3 = application;
17542
+ const index_3 = requireApplication();
17505
17543
  const index_4 = interappbus;
17506
17544
  const index_5 = clipboard;
17507
17545
  const index_6 = externalApplication;