@openfin/core 25.68.30 → 25.70.2

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 (199) hide show
  1. package/OpenFin.d.ts +30 -826
  2. package/README.md +12 -2
  3. package/package.json +1 -1
  4. package/src/api/application/Factory.d.ts +145 -145
  5. package/src/api/application/Factory.js +229 -229
  6. package/src/api/application/Instance.d.ts +301 -302
  7. package/src/api/application/Instance.js +412 -412
  8. package/src/api/application/index.d.ts +3 -3
  9. package/src/api/application/index.js +15 -15
  10. package/src/api/base.d.ts +43 -43
  11. package/src/api/base.js +177 -177
  12. package/src/api/clipboard/index.d.ts +69 -69
  13. package/src/api/clipboard/index.js +88 -88
  14. package/src/api/events/application.d.ts +69 -0
  15. package/src/api/events/application.js +2 -0
  16. package/src/api/events/base.d.ts +17 -0
  17. package/src/api/events/base.js +2 -0
  18. package/src/api/events/channel.d.ts +10 -11
  19. package/src/api/events/channel.js +2 -2
  20. package/src/api/events/emitterMap.d.ts +11 -11
  21. package/src/api/events/emitterMap.js +35 -35
  22. package/src/api/events/eventAggregator.d.ts +5 -5
  23. package/src/api/events/eventAggregator.js +43 -43
  24. package/src/api/events/externalApplication.d.ts +5 -0
  25. package/src/api/events/externalApplication.js +2 -0
  26. package/src/api/events/frame.d.ts +9 -0
  27. package/src/api/events/frame.js +2 -0
  28. package/src/api/events/globalHotkey.d.ts +10 -0
  29. package/src/api/events/globalHotkey.js +2 -0
  30. package/src/api/events/platform.d.ts +18 -0
  31. package/src/api/events/platform.js +2 -0
  32. package/src/api/events/system.d.ts +22 -0
  33. package/src/api/events/system.js +2 -0
  34. package/src/api/events/view.d.ts +56 -0
  35. package/src/api/events/view.js +2 -0
  36. package/src/api/events/webcontents.d.ts +48 -0
  37. package/src/api/events/webcontents.js +2 -0
  38. package/src/api/events/window.d.ts +176 -0
  39. package/src/api/events/window.js +2 -0
  40. package/src/api/external-application/Factory.d.ts +26 -26
  41. package/src/api/external-application/Factory.js +40 -40
  42. package/src/api/external-application/Instance.d.ts +101 -102
  43. package/src/api/external-application/Instance.js +109 -109
  44. package/src/api/external-application/index.d.ts +3 -3
  45. package/src/api/external-application/index.js +15 -15
  46. package/src/api/fin.d.ts +49 -49
  47. package/src/api/fin.js +43 -43
  48. package/src/api/frame/Factory.d.ts +36 -36
  49. package/src/api/frame/Factory.js +69 -69
  50. package/src/api/frame/Instance.d.ts +121 -121
  51. package/src/api/frame/Instance.js +130 -130
  52. package/src/api/frame/index.d.ts +3 -3
  53. package/src/api/frame/index.js +15 -15
  54. package/src/api/global-hotkey/index.d.ts +38 -38
  55. package/src/api/global-hotkey/index.js +58 -58
  56. package/src/api/interappbus/channel/channel.d.ts +26 -26
  57. package/src/api/interappbus/channel/channel.js +77 -77
  58. package/src/api/interappbus/channel/channels-docs.d.ts +318 -318
  59. package/src/api/interappbus/channel/channels-docs.js +376 -376
  60. package/src/api/interappbus/channel/client.d.ts +22 -22
  61. package/src/api/interappbus/channel/client.js +84 -84
  62. package/src/api/interappbus/channel/connection-manager.d.ts +28 -28
  63. package/src/api/interappbus/channel/connection-manager.js +244 -244
  64. package/src/api/interappbus/channel/index.d.ts +22 -23
  65. package/src/api/interappbus/channel/index.js +121 -121
  66. package/src/api/interappbus/channel/protocols/classic/message-receiver.d.ts +13 -13
  67. package/src/api/interappbus/channel/protocols/classic/message-receiver.js +73 -73
  68. package/src/api/interappbus/channel/protocols/classic/strategy.d.ts +22 -22
  69. package/src/api/interappbus/channel/protocols/classic/strategy.js +84 -84
  70. package/src/api/interappbus/channel/protocols/combined/strategy.d.ts +20 -20
  71. package/src/api/interappbus/channel/protocols/combined/strategy.js +58 -58
  72. package/src/api/interappbus/channel/protocols/index.d.ts +44 -44
  73. package/src/api/interappbus/channel/protocols/index.js +2 -2
  74. package/src/api/interappbus/channel/protocols/protocol-manager.d.ts +10 -10
  75. package/src/api/interappbus/channel/protocols/protocol-manager.js +43 -43
  76. package/src/api/interappbus/channel/protocols/rtc/endpoint.d.ts +23 -23
  77. package/src/api/interappbus/channel/protocols/rtc/endpoint.js +135 -135
  78. package/src/api/interappbus/channel/protocols/rtc/ice-manager.d.ts +30 -30
  79. package/src/api/interappbus/channel/protocols/rtc/ice-manager.js +131 -131
  80. package/src/api/interappbus/channel/protocols/rtc/strategy.d.ts +22 -22
  81. package/src/api/interappbus/channel/protocols/rtc/strategy.js +87 -87
  82. package/src/api/interappbus/channel/protocols/strategy-types.d.ts +13 -13
  83. package/src/api/interappbus/channel/protocols/strategy-types.js +2 -2
  84. package/src/api/interappbus/channel/protocols/strategy.d.ts +15 -15
  85. package/src/api/interappbus/channel/protocols/strategy.js +2 -2
  86. package/src/api/interappbus/channel/provider.d.ts +31 -31
  87. package/src/api/interappbus/channel/provider.js +160 -160
  88. package/src/api/interappbus/index.d.ts +85 -86
  89. package/src/api/interappbus/index.js +175 -175
  90. package/src/api/interop/Factory.d.ts +37 -37
  91. package/src/api/interop/Factory.js +54 -54
  92. package/src/api/interop/InteropBroker.d.ts +363 -363
  93. package/src/api/interop/InteropBroker.js +914 -914
  94. package/src/api/interop/InteropClient.d.ts +268 -268
  95. package/src/api/interop/InteropClient.js +450 -450
  96. package/src/api/interop/SessionContextGroupBroker.d.ts +26 -26
  97. package/src/api/interop/SessionContextGroupBroker.js +107 -107
  98. package/src/api/interop/SessionContextGroupClient.d.ts +20 -20
  99. package/src/api/interop/SessionContextGroupClient.js +85 -85
  100. package/src/api/interop/fdc3/fdc3-1.2.d.ts +187 -187
  101. package/src/api/interop/fdc3/fdc3-1.2.js +385 -385
  102. package/src/api/interop/fdc3/fdc3.js +17 -17
  103. package/src/api/interop/fdc3/utils.d.ts +6 -6
  104. package/src/api/interop/fdc3/utils.js +17 -17
  105. package/src/api/interop/index.d.ts +4 -4
  106. package/src/api/interop/index.js +16 -16
  107. package/src/api/interop/utils.d.ts +11 -11
  108. package/src/api/interop/utils.js +36 -36
  109. package/src/api/me.d.ts +38 -35
  110. package/src/api/me.js +128 -60
  111. package/src/api/platform/Factory.d.ts +109 -109
  112. package/src/api/platform/Factory.js +188 -188
  113. package/src/api/platform/Instance.d.ts +122 -122
  114. package/src/api/platform/Instance.js +298 -298
  115. package/src/api/platform/common-utils.d.ts +6 -6
  116. package/src/api/platform/common-utils.js +16 -16
  117. package/src/api/platform/index.d.ts +3 -3
  118. package/src/api/platform/index.js +15 -15
  119. package/src/api/platform/layout/Factory.d.ts +108 -108
  120. package/src/api/platform/layout/Factory.js +189 -189
  121. package/src/api/platform/layout/Instance.d.ts +49 -49
  122. package/src/api/platform/layout/Instance.js +99 -99
  123. package/src/api/platform/layout/index.d.ts +2 -2
  124. package/src/api/platform/layout/index.js +14 -14
  125. package/src/api/platform/layout/shapes.d.ts +11 -0
  126. package/src/api/{window → platform/layout}/shapes.js +2 -2
  127. package/src/api/snapshot-source/Factory.d.ts +36 -36
  128. package/src/api/snapshot-source/Factory.js +65 -65
  129. package/src/api/snapshot-source/Instance.d.ts +30 -30
  130. package/src/api/snapshot-source/Instance.js +134 -134
  131. package/src/api/snapshot-source/index.d.ts +3 -3
  132. package/src/api/snapshot-source/index.js +15 -15
  133. package/src/api/snapshot-source/utils.d.ts +1 -1
  134. package/src/api/snapshot-source/utils.js +5 -5
  135. package/src/api/system/index.d.ts +960 -961
  136. package/src/api/system/index.js +1241 -1241
  137. package/src/api/view/Factory.d.ts +49 -49
  138. package/src/api/view/Factory.js +103 -103
  139. package/src/api/view/Instance.d.ts +387 -380
  140. package/src/api/view/Instance.js +422 -415
  141. package/src/api/view/index.d.ts +3 -3
  142. package/src/api/view/index.js +15 -15
  143. package/src/api/webcontents/main.d.ts +36 -36
  144. package/src/api/webcontents/main.js +82 -82
  145. package/src/api/window/Factory.d.ts +44 -44
  146. package/src/api/window/Factory.js +91 -91
  147. package/src/api/window/Instance.d.ts +972 -966
  148. package/src/api/window/Instance.js +1209 -1202
  149. package/src/api/window/index.d.ts +3 -5
  150. package/src/api/window/index.js +15 -17
  151. package/src/environment/environment.d.ts +28 -25
  152. package/src/environment/environment.js +4 -4
  153. package/src/environment/node-env.d.ts +25 -26
  154. package/src/environment/node-env.js +64 -64
  155. package/src/environment/openfin-env.d.ts +29 -30
  156. package/src/environment/openfin-env.js +107 -107
  157. package/src/mock.d.ts +3 -3
  158. package/src/mock.js +91 -90
  159. package/src/shapes/ERROR_BOX_TYPES.d.ts +1 -0
  160. package/src/shapes/ERROR_BOX_TYPES.js +2 -0
  161. package/src/shapes/WebOptions.d.ts +12 -0
  162. package/src/shapes/WebOptions.js +2 -0
  163. package/src/shapes/WindowOptions.d.ts +42 -0
  164. package/src/shapes/WindowOptions.js +2 -0
  165. package/src/shapes/protocol.d.ts +178 -0
  166. package/src/shapes/protocol.js +2 -0
  167. package/src/transport/fin_store.d.ts +4 -4
  168. package/src/transport/fin_store.js +16 -16
  169. package/src/transport/transport-errors.d.ts +18 -18
  170. package/src/transport/transport-errors.js +37 -37
  171. package/src/transport/transport.d.ts +56 -43
  172. package/src/transport/transport.js +181 -181
  173. package/src/transport/wire.d.ts +71 -11
  174. package/src/transport/wire.js +32 -32
  175. package/src/util/asyncFilter.d.ts +1 -1
  176. package/src/util/asyncFilter.js +7 -7
  177. package/src/util/errors.d.ts +9 -5
  178. package/src/util/errors.js +11 -11
  179. package/src/util/exhaustive.d.ts +1 -1
  180. package/src/util/exhaustive.js +7 -7
  181. package/src/util/http.d.ts +11 -11
  182. package/src/util/http.js +83 -83
  183. package/src/util/normalize-config.d.ts +3 -5
  184. package/src/util/normalize-config.js +47 -47
  185. package/src/util/promises.d.ts +5 -5
  186. package/src/util/promises.js +27 -27
  187. package/src/util/ref-counter.d.ts +7 -7
  188. package/src/util/ref-counter.js +51 -51
  189. package/src/util/runtimeVersioning.d.ts +3 -3
  190. package/src/util/runtimeVersioning.js +25 -25
  191. package/src/util/utilTypes.d.ts +8 -8
  192. package/src/util/utilTypes.js +2 -2
  193. package/src/util/validate.d.ts +3 -3
  194. package/src/util/validate.js +11 -11
  195. package/docs.README(OLD).md +0 -82
  196. package/resources/win/OpenFinRVM.exe +0 -0
  197. package/src/api/window/bounds-changed.d.ts +0 -10
  198. package/src/api/window/bounds-changed.js +0 -6
  199. package/src/api/window/shapes.d.ts +0 -13
@@ -1,385 +1,385 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const base_1 = require("../../base");
4
- const utils_1 = require("./utils");
5
- const utils_2 = require("../utils");
6
- /**
7
- * @typedef { object } Listener
8
- * @summary Listener object returned by addContextListener and addIntentListener
9
- * @property {function} unsubscribe function for addContextListener and addIntentListener.
10
- */
11
- /**
12
- * @typedef { object } Channel
13
- * @summary Information for a Context Group. Contains metadata for displaying the group properly.
14
- * @property {string} id Name of the context group
15
- * @property {DisplayMetadata} displayMetadata Metadata for the Context Group. Contains the group's human-readable name, color, and an image, as defined by the Interop Broker.
16
- * @property {string} type Defaults to system.
17
- * @property {function} broadcast Broadcasts a context for the channel.
18
- * @property {function} addContextListener Add a context handler for incoming context.
19
- * @property {function} getCurrentContext Gets the current context for the channel.
20
- */
21
- /**
22
- * @typedef { object } AppMetadata
23
- * @summary App metadata is provided by the FDC3 App Directory.
24
- * @property {string} name
25
- * @property {string} [appId]
26
- * @property {string} [version]
27
- * @property {string} [title]
28
- * @property {string} [tooltip]
29
- * @property {string} [description]
30
- * @property {Array<string>} [icons]
31
- * @property {Array<string>} [images]
32
- */
33
- /**
34
- * @typedef { string | AppMetadata } TargetApp
35
- * @summary Some operations can identify an app just by its name, or pass full app metadata.
36
- */
37
- /**
38
- * @typedef { object } IntentResolution
39
- * @summary IntentResolution provides a standard format for data returned upon resolving an Intent.
40
- * @property { TargetApp } source identifier for the Application resolving the Intent (null if the Intent could not be resolved)
41
- * @property { string } [data] Return data structure - if one is provided for the given Intent.
42
- * @property { string } version The version number of the Intents schema being used
43
- */
44
- /**
45
- * @typedef { object } AppIntent
46
- * @summary An interface that represents the binding of an intent to apps.
47
- * @property { Intent } intent
48
- * @property { Array<AppMetadata> } apps
49
- */
50
- /**
51
- * @typedef { object } ImplementationMetadata
52
- * @summary An interface that represents FDC3 implementation meta data.
53
- * @property { string } fdc3Version The FDC3 version
54
- * @property { string } provider The provider uuid with prepend 'openfin'
55
- * @property { string } [providerVersion] The provider runtime version
56
- */
57
- /**
58
- * The FDC3 Client Library provides a set APIs to be used for FDC3 compliance,
59
- * while using our Interop API under the hood. In order to use this set of APIs
60
- * you will need to set up your own {@link InteropBroker InteropBroker} or use a Platform application, which does the setup for you. Refer to our documentation on
61
- * our {@link https://developers.openfin.co/of-docs/docs/enable-color-linking Interop API}.
62
- *
63
- * We currently support APIs based on FDC3 1.2. To enable the FDC3 APIs in a {@link Window Window} or {@link View View}, add the fdc3InteropApi
64
- * property to its options:
65
- *
66
- * ```js
67
- * {
68
- * autoShow: false,
69
- * saveWindowState: true,
70
- * url: 'https://openfin.co',
71
- * fdc3InteropApi: '1.2'
72
- * }
73
- * ```
74
- *
75
- * If using a {@link Platform Platform } application, you can set this property in defaultWindowOptions and defaultViewOptions.
76
- *
77
- * @class
78
- * @alias Fdc3
79
- * @hideconstructor
80
- */
81
- class Fdc3Module extends base_1.Base {
82
- /**
83
- * Add a context handler for incoming context. If an entity is part of a context group, and then sets its context handler, it will receive all of its declared contexts. If you wish to listen for all incoming contexts, pass `null` for the contextType argument.
84
- * @param { string | null } contextType - The type of context you wish to handle.
85
- * @param { ContextHandler } handler - Handler for incoming context.
86
- * @returns { Listener }
87
- * @tutorial fdc3.addContextListener
88
- * @static
89
- */
90
- addContextListener(contextType, handler) {
91
- this.wire.sendAction('fdc3-add-context-listener').catch((e) => {
92
- // we do not want to expose this error, just continue if this analytics-only call fails
93
- });
94
- let listener;
95
- if (typeof contextType === 'function') {
96
- console.warn('addContextListener(handler) has been deprecated. Please use addContextListener(null, handler)');
97
- listener = window.fin.me.interop.addContextHandler(contextType);
98
- }
99
- else {
100
- listener = window.fin.me.interop.addContextHandler(handler, contextType === null ? undefined : contextType);
101
- }
102
- return {
103
- ...listener,
104
- unsubscribe: () => listener.then((l) => l.unsubscribe())
105
- };
106
- }
107
- /**
108
- * Broadcasts a context for the channel of the current entity.
109
- * @param { Context } context - New context to set.
110
- * @returns { Promise<void> }
111
- * @tutorial fdc3.broadcast
112
- * @static
113
- */
114
- async broadcast(context) {
115
- this.wire.sendAction('fdc3-broadcast').catch((e) => {
116
- // we do not want to expose this error, just continue if this analytics-only call fails
117
- });
118
- window.fin.me.interop.setContext(context);
119
- }
120
- /**
121
- * Returns the Interop-Broker-defined context groups available for an entity to join.
122
- * @returns { Promise<Channel[]>}
123
- * @tutorial fdc3.getSystemChannels
124
- * @static
125
- */
126
- async getSystemChannels() {
127
- this.wire.sendAction('fdc3-get-system-channels').catch((e) => {
128
- // we do not want to expose this error, just continue if this analytics-only call fails
129
- });
130
- const channels = await window.fin.me.interop.getContextGroups();
131
- const unsupportedChannelApis = {
132
- addContextListener: () => {
133
- throw new utils_1.UnsupportedChannelApiError('Channel.addContextListener');
134
- },
135
- broadcast: () => {
136
- throw new utils_1.UnsupportedChannelApiError('Channel.broadcast');
137
- },
138
- getCurrentChannel: () => {
139
- throw new utils_1.UnsupportedChannelApiError('Channel.getCurrentChannel');
140
- }
141
- };
142
- // fdc3 implementation of getSystemChannels returns on array of channels, have to decorate over
143
- // this so people know that these APIs are not supported
144
- return channels.map((channel) => {
145
- return { ...channel, type: 'system', ...unsupportedChannelApis };
146
- });
147
- }
148
- /**
149
- * Join all Interop Clients at the given identity to context group `contextGroupId`.
150
- * If no target is specified, it adds the sender to the context group.
151
- * Because multiple Channel connections/Interop Clients can potentially exist at a `uuid`/`name` combo, we currently join all Channel connections/Interop Clients at the given identity to the context group.
152
- * If an `endpointId` is provided (which is unlikely, unless the call is coming from an external adapter), then we only join that single connection to the context group.
153
- * For all intents and purposes, there will only be 1 connection present in Platform and Browser implementations, so this point is more-or-less moot.
154
- * @param { string } channelId - Id of the context group.
155
- * @returns { Promise<void> }
156
- * @tutorial fdc3.joinChannel
157
- * @static
158
- */
159
- async joinChannel(channelId) {
160
- this.wire.sendAction('fdc3-join-channel').catch((e) => {
161
- // we do not want to expose this error, just continue if this analytics-only call fails
162
- });
163
- window.fin.me.interop.joinContextGroup(channelId);
164
- }
165
- /**
166
- * Removes the specified target from a context group.
167
- * If no target is specified, it removes the sender from their context group.
168
- * @returns { Promise<void> }
169
- * @tutorial fdc3.leaveCurrentChannel
170
- * @static
171
- */
172
- async leaveCurrentChannel() {
173
- this.wire.sendAction('fdc3-leave-current-channel').catch((e) => {
174
- // we do not want to expose this error, just continue if this analytics-only call fails
175
- });
176
- window.fin.me.interop.removeFromContextGroup();
177
- }
178
- /**
179
- * Adds a listener for incoming Intents.
180
- * @param { string } intent - Name of the Intent
181
- * @param { IntentHandler } handler - Handler for incoming Intent
182
- * @returns { Listener }
183
- * @tutorial fdc3.addIntentListener
184
- * @static
185
- */
186
- addIntentListener(intent, handler) {
187
- this.wire.sendAction('fdc3-add-intent-listener').catch((e) => {
188
- // we do not want to expose this error, just continue if this analytics-only call fails
189
- });
190
- const contextHandler = (raisedIntent) => {
191
- handler(raisedIntent.context);
192
- };
193
- const listener = window.fin.me.interop.registerIntentHandler(contextHandler, intent);
194
- return {
195
- ...listener,
196
- unsubscribe: () => listener.then((l) => l.unsubscribe())
197
- };
198
- }
199
- /**
200
- * Raises a specific intent.
201
- * @param { string } intent Name of the Intent.
202
- * @param { Context } context Context associated with the Intent.
203
- * @param { TargetApp } app App that will resolve the Intent. This is added as metadata to the Intent. Can be accessed by the app provider in {@link InteropBroker#handleFiredIntent InteropBroker.handleFiredIntent}.
204
- * @returns { IntentResolution }
205
- * @tutorial fdc3.raiseIntent
206
- * @static
207
- */
208
- async raiseIntent(intent, context, app) {
209
- this.wire.sendAction('fdc3-raise-intent').catch((e) => {
210
- // we do not want to expose this error, just continue if this analytics-only call fails
211
- });
212
- const intentObj = app
213
- ? { name: intent, context, metadata: { target: app } }
214
- : { name: intent, context };
215
- try {
216
- return await window.fin.me.interop.fireIntent(intentObj);
217
- }
218
- catch (error) {
219
- const errorToThrow = error.message === utils_2.BROKER_ERRORS.fireIntent ? 'ResolverUnavailable' : error;
220
- throw new Error(errorToThrow);
221
- }
222
- }
223
- /**
224
- * Returns the Channel that the entity is subscribed to. Returns null if not joined to a channel.
225
- * @returns { Channel | null }
226
- * @tutorial fdc3.getCurrentChannel
227
- */
228
- async getCurrentChannel() {
229
- this.wire.sendAction('fdc3-get-current-channel').catch((e) => {
230
- // we do not want to expose this error, just continue if this analytics-only call fails
231
- });
232
- const currentContextGroupInfo = await this.getCurrentContextGroupInfo();
233
- if (!currentContextGroupInfo) {
234
- return null;
235
- }
236
- return this.buildChannelObject(currentContextGroupInfo);
237
- }
238
- /**
239
- * Find out more information about a particular intent by passing its name, and optionally its context.
240
- * @param { string } intent Name of the Intent
241
- * @param { Context } [context]
242
- * @return { Promise<AppIntent> }
243
- * @tutorial fdc3.findIntent
244
- */
245
- async findIntent(intent, context) {
246
- this.wire.sendAction('fdc3-find-intent').catch((e) => {
247
- // we do not want to expose this error, just continue if this analytics-only call fails
248
- });
249
- try {
250
- return await window.fin.me.interop.getInfoForIntent({ name: intent, context });
251
- }
252
- catch (error) {
253
- const errorToThrow = error.message === utils_2.BROKER_ERRORS.getInfoForIntent ? 'ResolverUnavailable' : error;
254
- throw new Error(errorToThrow);
255
- }
256
- }
257
- /**
258
- * Find all the available intents for a particular context.
259
- * @param { Context } context
260
- * @return { Promise<Array<AppIntent>> }
261
- * @tutorial fdc3.findIntentsByContext
262
- */
263
- async findIntentsByContext(context) {
264
- this.wire.sendAction('fdc3-find-intents-by-context').catch((e) => {
265
- // we do not want to expose this error, just continue if this analytics-only call fails
266
- });
267
- try {
268
- return await window.fin.me.interop.getInfoForIntentsByContext(context);
269
- }
270
- catch (error) {
271
- const errorToThrow = error.message === utils_2.BROKER_ERRORS.getInfoForIntentsByContext ? 'ResolverUnavailable' : error;
272
- throw new Error(errorToThrow);
273
- }
274
- }
275
- /**
276
- * Finds and raises an intent against a target app based purely on context data.
277
- * @param { Context } context
278
- * @param { TargetApp } [app]
279
- * @return { Promise<IntentResolution> }
280
- * @tutorial fdc3.raiseIntentForContext
281
- */
282
- async raiseIntentForContext(context, app) {
283
- this.wire.sendAction('fdc3-raise-intent-for-context').catch((e) => {
284
- // we do not want to expose this error, just continue if this analytics-only call fails
285
- });
286
- try {
287
- return await window.fin.me.interop.fireIntentForContext({ ...context, metadata: { target: app } });
288
- }
289
- catch (error) {
290
- const errorToThrow = error.message === utils_2.BROKER_ERRORS.fireIntentForContext ? 'ResolverUnavailable' : error;
291
- throw new Error(errorToThrow);
292
- }
293
- }
294
- /**
295
- * Returns a Channel object for the specified channel, creating it as an App Channel if it does not exist.
296
- * @param channelId
297
- * @returns { Promise<Channel> }
298
- * @tutorial fdc3.getOrCreateChannel
299
- */
300
- async getOrCreateChannel(channelId) {
301
- this.wire.sendAction('fdc3-get-or-create-channel').catch((e) => {
302
- // we do not want to expose this error, just continue if this analytics-only call fails
303
- });
304
- const sessionContextGroup = await window.fin.me.interop.joinSessionContextGroup(channelId);
305
- return this.buildAppChannelObject(sessionContextGroup);
306
- }
307
- /**
308
- * Returns metadata relating to the FDC3 object and its provider, including the supported version of the FDC3 specification and the name of the provider of the implementation.
309
- * @return { Promise<ImplementationMetadata> }
310
- * @tutorial fdc3.getInfo
311
- */
312
- getInfo() {
313
- this.wire.sendAction('fdc3-get-info').catch((e) => {
314
- // we do not want to expose this error, just continue if this analytics-only call fails
315
- });
316
- // @ts-expect-error
317
- const { uuid, fdc3InteropApi } = fin.__internal_.initialOptions;
318
- // @ts-expect-error
319
- const runtimeVersion = fin.desktop.getVersion();
320
- return {
321
- fdc3Version: fdc3InteropApi,
322
- provider: `openfin-${uuid}`,
323
- providerVersion: runtimeVersion
324
- };
325
- }
326
- // eslint-disable-next-line class-methods-use-this
327
- open() {
328
- throw new utils_1.UnsupportedError('open');
329
- }
330
- // utils
331
- // eslint-disable-next-line class-methods-use-this
332
- async getCurrentContextGroupInfo() {
333
- const contextGroups = await window.fin.me.interop.getContextGroups();
334
- const clientsInCtxGroupsPromise = contextGroups.map(async (ctxGroup) => {
335
- return window.fin.me.interop.getAllClientsInContextGroup(ctxGroup.id);
336
- });
337
- const clientsInCtxGroups = await Promise.all(clientsInCtxGroupsPromise);
338
- const clientIdx = clientsInCtxGroups.findIndex((clientIdentityArr) => {
339
- return clientIdentityArr.some((clientIdentity) => {
340
- const { uuid, name } = clientIdentity;
341
- return window.fin.me.identity.uuid === uuid && window.fin.me.identity.name === name;
342
- });
343
- });
344
- return contextGroups[clientIdx];
345
- }
346
- async buildChannelObject(currentContextGroupInfo) {
347
- return {
348
- ...currentContextGroupInfo,
349
- type: 'system',
350
- addContextListener: this.addContextListener.bind(this),
351
- broadcast: this.broadcast.bind(this),
352
- getCurrentContext: async (contextType) => {
353
- const context = await window.fin.me.interop.getCurrentContext(contextType);
354
- return context === undefined ? null : context;
355
- }
356
- };
357
- }
358
- // eslint-disable-next-line class-methods-use-this
359
- buildAppChannelObject(sessionContextGroup) {
360
- return {
361
- id: sessionContextGroup.id,
362
- type: 'app',
363
- broadcast: sessionContextGroup.setContext,
364
- getCurrentContext: async (contextType) => {
365
- const context = await sessionContextGroup.getCurrentContext(contextType);
366
- return context === undefined ? null : context;
367
- },
368
- addContextListener: (contextType, handler) => {
369
- let listener;
370
- if (typeof contextType === 'function') {
371
- console.warn('addContextListener(handler) has been deprecated. Please use addContextListener(null, handler)');
372
- listener = sessionContextGroup.addContextHandler(contextType);
373
- }
374
- else {
375
- listener = sessionContextGroup.addContextHandler(handler, contextType === null ? undefined : contextType);
376
- }
377
- return {
378
- ...listener,
379
- unsubscribe: () => listener.then((l) => l.unsubscribe())
380
- };
381
- }
382
- };
383
- }
384
- }
385
- exports.default = Fdc3Module;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const base_1 = require("../../base");
4
+ const utils_1 = require("./utils");
5
+ const utils_2 = require("../utils");
6
+ /**
7
+ * @typedef { object } Listener
8
+ * @summary Listener object returned by addContextListener and addIntentListener
9
+ * @property {function} unsubscribe function for addContextListener and addIntentListener.
10
+ */
11
+ /**
12
+ * @typedef { object } Channel
13
+ * @summary Information for a Context Group. Contains metadata for displaying the group properly.
14
+ * @property {string} id Name of the context group
15
+ * @property {DisplayMetadata} displayMetadata Metadata for the Context Group. Contains the group's human-readable name, color, and an image, as defined by the Interop Broker.
16
+ * @property {string} type Defaults to system.
17
+ * @property {function} broadcast Broadcasts a context for the channel.
18
+ * @property {function} addContextListener Add a context handler for incoming context.
19
+ * @property {function} getCurrentContext Gets the current context for the channel.
20
+ */
21
+ /**
22
+ * @typedef { object } AppMetadata
23
+ * @summary App metadata is provided by the FDC3 App Directory.
24
+ * @property {string} name
25
+ * @property {string} [appId]
26
+ * @property {string} [version]
27
+ * @property {string} [title]
28
+ * @property {string} [tooltip]
29
+ * @property {string} [description]
30
+ * @property {Array<string>} [icons]
31
+ * @property {Array<string>} [images]
32
+ */
33
+ /**
34
+ * @typedef { string | AppMetadata } TargetApp
35
+ * @summary Some operations can identify an app just by its name, or pass full app metadata.
36
+ */
37
+ /**
38
+ * @typedef { object } IntentResolution
39
+ * @summary IntentResolution provides a standard format for data returned upon resolving an Intent.
40
+ * @property { TargetApp } source identifier for the Application resolving the Intent (null if the Intent could not be resolved)
41
+ * @property { string } [data] Return data structure - if one is provided for the given Intent.
42
+ * @property { string } version The version number of the Intents schema being used
43
+ */
44
+ /**
45
+ * @typedef { object } AppIntent
46
+ * @summary An interface that represents the binding of an intent to apps.
47
+ * @property { Intent } intent
48
+ * @property { Array<AppMetadata> } apps
49
+ */
50
+ /**
51
+ * @typedef { object } ImplementationMetadata
52
+ * @summary An interface that represents FDC3 implementation meta data.
53
+ * @property { string } fdc3Version The FDC3 version
54
+ * @property { string } provider The provider uuid with prepend 'openfin'
55
+ * @property { string } [providerVersion] The provider runtime version
56
+ */
57
+ /**
58
+ * The FDC3 Client Library provides a set APIs to be used for FDC3 compliance,
59
+ * while using our Interop API under the hood. In order to use this set of APIs
60
+ * you will need to set up your own {@link InteropBroker InteropBroker} or use a Platform application, which does the setup for you. Refer to our documentation on
61
+ * our {@link https://developers.openfin.co/of-docs/docs/enable-color-linking Interop API}.
62
+ *
63
+ * We currently support APIs based on FDC3 1.2. To enable the FDC3 APIs in a {@link Window Window} or {@link View View}, add the fdc3InteropApi
64
+ * property to its options:
65
+ *
66
+ * ```js
67
+ * {
68
+ * autoShow: false,
69
+ * saveWindowState: true,
70
+ * url: 'https://openfin.co',
71
+ * fdc3InteropApi: '1.2'
72
+ * }
73
+ * ```
74
+ *
75
+ * If using a {@link Platform Platform } application, you can set this property in defaultWindowOptions and defaultViewOptions.
76
+ *
77
+ * @class
78
+ * @alias Fdc3
79
+ * @hideconstructor
80
+ */
81
+ class Fdc3Module extends base_1.Base {
82
+ /**
83
+ * Add a context handler for incoming context. If an entity is part of a context group, and then sets its context handler, it will receive all of its declared contexts. If you wish to listen for all incoming contexts, pass `null` for the contextType argument.
84
+ * @param { string | null } contextType - The type of context you wish to handle.
85
+ * @param { ContextHandler } handler - Handler for incoming context.
86
+ * @returns { Listener }
87
+ * @tutorial fdc3.addContextListener
88
+ * @static
89
+ */
90
+ addContextListener(contextType, handler) {
91
+ this.wire.sendAction('fdc3-add-context-listener').catch((e) => {
92
+ // we do not want to expose this error, just continue if this analytics-only call fails
93
+ });
94
+ let listener;
95
+ if (typeof contextType === 'function') {
96
+ console.warn('addContextListener(handler) has been deprecated. Please use addContextListener(null, handler)');
97
+ listener = window.fin.me.interop.addContextHandler(contextType);
98
+ }
99
+ else {
100
+ listener = window.fin.me.interop.addContextHandler(handler, contextType === null ? undefined : contextType);
101
+ }
102
+ return {
103
+ ...listener,
104
+ unsubscribe: () => listener.then((l) => l.unsubscribe())
105
+ };
106
+ }
107
+ /**
108
+ * Broadcasts a context for the channel of the current entity.
109
+ * @param { Context } context - New context to set.
110
+ * @returns { Promise<void> }
111
+ * @tutorial fdc3.broadcast
112
+ * @static
113
+ */
114
+ async broadcast(context) {
115
+ this.wire.sendAction('fdc3-broadcast').catch((e) => {
116
+ // we do not want to expose this error, just continue if this analytics-only call fails
117
+ });
118
+ window.fin.me.interop.setContext(context);
119
+ }
120
+ /**
121
+ * Returns the Interop-Broker-defined context groups available for an entity to join.
122
+ * @returns { Promise<Channel[]>}
123
+ * @tutorial fdc3.getSystemChannels
124
+ * @static
125
+ */
126
+ async getSystemChannels() {
127
+ this.wire.sendAction('fdc3-get-system-channels').catch((e) => {
128
+ // we do not want to expose this error, just continue if this analytics-only call fails
129
+ });
130
+ const channels = await window.fin.me.interop.getContextGroups();
131
+ const unsupportedChannelApis = {
132
+ addContextListener: () => {
133
+ throw new utils_1.UnsupportedChannelApiError('Channel.addContextListener');
134
+ },
135
+ broadcast: () => {
136
+ throw new utils_1.UnsupportedChannelApiError('Channel.broadcast');
137
+ },
138
+ getCurrentChannel: () => {
139
+ throw new utils_1.UnsupportedChannelApiError('Channel.getCurrentChannel');
140
+ }
141
+ };
142
+ // fdc3 implementation of getSystemChannels returns on array of channels, have to decorate over
143
+ // this so people know that these APIs are not supported
144
+ return channels.map((channel) => {
145
+ return { ...channel, type: 'system', ...unsupportedChannelApis };
146
+ });
147
+ }
148
+ /**
149
+ * Join all Interop Clients at the given identity to context group `contextGroupId`.
150
+ * If no target is specified, it adds the sender to the context group.
151
+ * Because multiple Channel connections/Interop Clients can potentially exist at a `uuid`/`name` combo, we currently join all Channel connections/Interop Clients at the given identity to the context group.
152
+ * If an `endpointId` is provided (which is unlikely, unless the call is coming from an external adapter), then we only join that single connection to the context group.
153
+ * For all intents and purposes, there will only be 1 connection present in Platform and Browser implementations, so this point is more-or-less moot.
154
+ * @param { string } channelId - Id of the context group.
155
+ * @returns { Promise<void> }
156
+ * @tutorial fdc3.joinChannel
157
+ * @static
158
+ */
159
+ async joinChannel(channelId) {
160
+ this.wire.sendAction('fdc3-join-channel').catch((e) => {
161
+ // we do not want to expose this error, just continue if this analytics-only call fails
162
+ });
163
+ window.fin.me.interop.joinContextGroup(channelId);
164
+ }
165
+ /**
166
+ * Removes the specified target from a context group.
167
+ * If no target is specified, it removes the sender from their context group.
168
+ * @returns { Promise<void> }
169
+ * @tutorial fdc3.leaveCurrentChannel
170
+ * @static
171
+ */
172
+ async leaveCurrentChannel() {
173
+ this.wire.sendAction('fdc3-leave-current-channel').catch((e) => {
174
+ // we do not want to expose this error, just continue if this analytics-only call fails
175
+ });
176
+ window.fin.me.interop.removeFromContextGroup();
177
+ }
178
+ /**
179
+ * Adds a listener for incoming Intents.
180
+ * @param { string } intent - Name of the Intent
181
+ * @param { IntentHandler } handler - Handler for incoming Intent
182
+ * @returns { Listener }
183
+ * @tutorial fdc3.addIntentListener
184
+ * @static
185
+ */
186
+ addIntentListener(intent, handler) {
187
+ this.wire.sendAction('fdc3-add-intent-listener').catch((e) => {
188
+ // we do not want to expose this error, just continue if this analytics-only call fails
189
+ });
190
+ const contextHandler = (raisedIntent) => {
191
+ handler(raisedIntent.context);
192
+ };
193
+ const listener = window.fin.me.interop.registerIntentHandler(contextHandler, intent);
194
+ return {
195
+ ...listener,
196
+ unsubscribe: () => listener.then((l) => l.unsubscribe())
197
+ };
198
+ }
199
+ /**
200
+ * Raises a specific intent.
201
+ * @param { string } intent Name of the Intent.
202
+ * @param { Context } context Context associated with the Intent.
203
+ * @param { TargetApp } app App that will resolve the Intent. This is added as metadata to the Intent. Can be accessed by the app provider in {@link InteropBroker#handleFiredIntent InteropBroker.handleFiredIntent}.
204
+ * @returns { IntentResolution }
205
+ * @tutorial fdc3.raiseIntent
206
+ * @static
207
+ */
208
+ async raiseIntent(intent, context, app) {
209
+ this.wire.sendAction('fdc3-raise-intent').catch((e) => {
210
+ // we do not want to expose this error, just continue if this analytics-only call fails
211
+ });
212
+ const intentObj = app
213
+ ? { name: intent, context, metadata: { target: app } }
214
+ : { name: intent, context };
215
+ try {
216
+ return await window.fin.me.interop.fireIntent(intentObj);
217
+ }
218
+ catch (error) {
219
+ const errorToThrow = error.message === utils_2.BROKER_ERRORS.fireIntent ? 'ResolverUnavailable' : error;
220
+ throw new Error(errorToThrow);
221
+ }
222
+ }
223
+ /**
224
+ * Returns the Channel that the entity is subscribed to. Returns null if not joined to a channel.
225
+ * @returns { Channel | null }
226
+ * @tutorial fdc3.getCurrentChannel
227
+ */
228
+ async getCurrentChannel() {
229
+ this.wire.sendAction('fdc3-get-current-channel').catch((e) => {
230
+ // we do not want to expose this error, just continue if this analytics-only call fails
231
+ });
232
+ const currentContextGroupInfo = await this.getCurrentContextGroupInfo();
233
+ if (!currentContextGroupInfo) {
234
+ return null;
235
+ }
236
+ return this.buildChannelObject(currentContextGroupInfo);
237
+ }
238
+ /**
239
+ * Find out more information about a particular intent by passing its name, and optionally its context.
240
+ * @param { string } intent Name of the Intent
241
+ * @param { Context } [context]
242
+ * @return { Promise<AppIntent> }
243
+ * @tutorial fdc3.findIntent
244
+ */
245
+ async findIntent(intent, context) {
246
+ this.wire.sendAction('fdc3-find-intent').catch((e) => {
247
+ // we do not want to expose this error, just continue if this analytics-only call fails
248
+ });
249
+ try {
250
+ return await window.fin.me.interop.getInfoForIntent({ name: intent, context });
251
+ }
252
+ catch (error) {
253
+ const errorToThrow = error.message === utils_2.BROKER_ERRORS.getInfoForIntent ? 'ResolverUnavailable' : error;
254
+ throw new Error(errorToThrow);
255
+ }
256
+ }
257
+ /**
258
+ * Find all the available intents for a particular context.
259
+ * @param { Context } context
260
+ * @return { Promise<Array<AppIntent>> }
261
+ * @tutorial fdc3.findIntentsByContext
262
+ */
263
+ async findIntentsByContext(context) {
264
+ this.wire.sendAction('fdc3-find-intents-by-context').catch((e) => {
265
+ // we do not want to expose this error, just continue if this analytics-only call fails
266
+ });
267
+ try {
268
+ return await window.fin.me.interop.getInfoForIntentsByContext(context);
269
+ }
270
+ catch (error) {
271
+ const errorToThrow = error.message === utils_2.BROKER_ERRORS.getInfoForIntentsByContext ? 'ResolverUnavailable' : error;
272
+ throw new Error(errorToThrow);
273
+ }
274
+ }
275
+ /**
276
+ * Finds and raises an intent against a target app based purely on context data.
277
+ * @param { Context } context
278
+ * @param { TargetApp } [app]
279
+ * @return { Promise<IntentResolution> }
280
+ * @tutorial fdc3.raiseIntentForContext
281
+ */
282
+ async raiseIntentForContext(context, app) {
283
+ this.wire.sendAction('fdc3-raise-intent-for-context').catch((e) => {
284
+ // we do not want to expose this error, just continue if this analytics-only call fails
285
+ });
286
+ try {
287
+ return await window.fin.me.interop.fireIntentForContext({ ...context, metadata: { target: app } });
288
+ }
289
+ catch (error) {
290
+ const errorToThrow = error.message === utils_2.BROKER_ERRORS.fireIntentForContext ? 'ResolverUnavailable' : error;
291
+ throw new Error(errorToThrow);
292
+ }
293
+ }
294
+ /**
295
+ * Returns a Channel object for the specified channel, creating it as an App Channel if it does not exist.
296
+ * @param channelId
297
+ * @returns { Promise<Channel> }
298
+ * @tutorial fdc3.getOrCreateChannel
299
+ */
300
+ async getOrCreateChannel(channelId) {
301
+ this.wire.sendAction('fdc3-get-or-create-channel').catch((e) => {
302
+ // we do not want to expose this error, just continue if this analytics-only call fails
303
+ });
304
+ const sessionContextGroup = await window.fin.me.interop.joinSessionContextGroup(channelId);
305
+ return this.buildAppChannelObject(sessionContextGroup);
306
+ }
307
+ /**
308
+ * Returns metadata relating to the FDC3 object and its provider, including the supported version of the FDC3 specification and the name of the provider of the implementation.
309
+ * @return { Promise<ImplementationMetadata> }
310
+ * @tutorial fdc3.getInfo
311
+ */
312
+ getInfo() {
313
+ this.wire.sendAction('fdc3-get-info').catch((e) => {
314
+ // we do not want to expose this error, just continue if this analytics-only call fails
315
+ });
316
+ // @ts-expect-error
317
+ const { uuid, fdc3InteropApi } = fin.__internal_.initialOptions;
318
+ // @ts-expect-error
319
+ const runtimeVersion = fin.desktop.getVersion();
320
+ return {
321
+ fdc3Version: fdc3InteropApi,
322
+ provider: `openfin-${uuid}`,
323
+ providerVersion: runtimeVersion
324
+ };
325
+ }
326
+ // eslint-disable-next-line class-methods-use-this
327
+ open() {
328
+ throw new utils_1.UnsupportedError('open');
329
+ }
330
+ // utils
331
+ // eslint-disable-next-line class-methods-use-this
332
+ async getCurrentContextGroupInfo() {
333
+ const contextGroups = await window.fin.me.interop.getContextGroups();
334
+ const clientsInCtxGroupsPromise = contextGroups.map(async (ctxGroup) => {
335
+ return window.fin.me.interop.getAllClientsInContextGroup(ctxGroup.id);
336
+ });
337
+ const clientsInCtxGroups = await Promise.all(clientsInCtxGroupsPromise);
338
+ const clientIdx = clientsInCtxGroups.findIndex((clientIdentityArr) => {
339
+ return clientIdentityArr.some((clientIdentity) => {
340
+ const { uuid, name } = clientIdentity;
341
+ return window.fin.me.identity.uuid === uuid && window.fin.me.identity.name === name;
342
+ });
343
+ });
344
+ return contextGroups[clientIdx];
345
+ }
346
+ async buildChannelObject(currentContextGroupInfo) {
347
+ return {
348
+ ...currentContextGroupInfo,
349
+ type: 'system',
350
+ addContextListener: this.addContextListener.bind(this),
351
+ broadcast: this.broadcast.bind(this),
352
+ getCurrentContext: async (contextType) => {
353
+ const context = await window.fin.me.interop.getCurrentContext(contextType);
354
+ return context === undefined ? null : context;
355
+ }
356
+ };
357
+ }
358
+ // eslint-disable-next-line class-methods-use-this
359
+ buildAppChannelObject(sessionContextGroup) {
360
+ return {
361
+ id: sessionContextGroup.id,
362
+ type: 'app',
363
+ broadcast: sessionContextGroup.setContext,
364
+ getCurrentContext: async (contextType) => {
365
+ const context = await sessionContextGroup.getCurrentContext(contextType);
366
+ return context === undefined ? null : context;
367
+ },
368
+ addContextListener: (contextType, handler) => {
369
+ let listener;
370
+ if (typeof contextType === 'function') {
371
+ console.warn('addContextListener(handler) has been deprecated. Please use addContextListener(null, handler)');
372
+ listener = sessionContextGroup.addContextHandler(contextType);
373
+ }
374
+ else {
375
+ listener = sessionContextGroup.addContextHandler(handler, contextType === null ? undefined : contextType);
376
+ }
377
+ return {
378
+ ...listener,
379
+ unsubscribe: () => listener.then((l) => l.unsubscribe())
380
+ };
381
+ }
382
+ };
383
+ }
384
+ }
385
+ exports.default = Fdc3Module;