@openfin/node-adapter 40.82.17 → 40.82.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/node-adapter.js +1032 -986
- package/package.json +2 -2
package/out/node-adapter.js
CHANGED
|
@@ -73,7 +73,7 @@ async function promiseMapSerial(arr, func) {
|
|
|
73
73
|
}
|
|
74
74
|
promises.promiseMapSerial = promiseMapSerial;
|
|
75
75
|
|
|
76
|
-
var __classPrivateFieldSet$
|
|
76
|
+
var __classPrivateFieldSet$d = (commonjsGlobal && commonjsGlobal.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
77
77
|
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
78
78
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
79
79
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
@@ -202,7 +202,7 @@ class EmitterBase extends Base {
|
|
|
202
202
|
// This will only be reached if unsubscribe from event that does not exist but do not want to error here
|
|
203
203
|
return Promise.resolve();
|
|
204
204
|
};
|
|
205
|
-
__classPrivateFieldSet$
|
|
205
|
+
__classPrivateFieldSet$d(this, _EmitterBase_emitterAccessor, [topic, ...additionalAccessors], "f");
|
|
206
206
|
this.listeners = (event) => this.hasEmitter() ? this.getOrCreateEmitter().listeners(event) : [];
|
|
207
207
|
}
|
|
208
208
|
/**
|
|
@@ -767,781 +767,117 @@ class AsyncRetryableLazy {
|
|
|
767
767
|
}
|
|
768
768
|
lazy.AsyncRetryableLazy = AsyncRetryableLazy;
|
|
769
769
|
|
|
770
|
-
var
|
|
771
|
-
|
|
772
|
-
var apiExposer$1 = {};
|
|
773
|
-
|
|
774
|
-
var apiConsumer = {};
|
|
775
|
-
|
|
776
|
-
Object.defineProperty(apiConsumer, "__esModule", { value: true });
|
|
777
|
-
apiConsumer.ApiConsumer = void 0;
|
|
778
|
-
/**
|
|
779
|
-
* Consumer for apis exposed with {@see ApiExposer}.
|
|
780
|
-
*
|
|
781
|
-
* A strategy that matches the strategy used to expose a target API must be provided.
|
|
782
|
-
*/
|
|
783
|
-
class ApiConsumer {
|
|
784
|
-
// eslint-disable-next-line
|
|
785
|
-
constructor(strategy) {
|
|
786
|
-
this.strategy = strategy;
|
|
787
|
-
/**
|
|
788
|
-
* Consumes an api exposed using a given transport strategy, and generates a client
|
|
789
|
-
* for easy, type safe consumption of that client.
|
|
790
|
-
* @param options Strategy specific consumption options.
|
|
791
|
-
* @returns An api client matching the given type.
|
|
792
|
-
*/
|
|
793
|
-
this.consume = async (options) => {
|
|
794
|
-
const exposedProperties = await this.strategy.getExposedFunctions(options);
|
|
795
|
-
return exposedProperties.reduce((client, prop) => ({
|
|
796
|
-
...client,
|
|
797
|
-
[prop.key]: this.strategy.createFunction(prop, options)
|
|
798
|
-
}), {});
|
|
799
|
-
};
|
|
800
|
-
}
|
|
801
|
-
}
|
|
802
|
-
apiConsumer.ApiConsumer = ApiConsumer;
|
|
803
|
-
|
|
804
|
-
var apiExposer = {};
|
|
805
|
-
|
|
806
|
-
var decorators = {};
|
|
807
|
-
|
|
808
|
-
Object.defineProperty(decorators, "__esModule", { value: true });
|
|
809
|
-
decorators.expose = decorators.getExposedProperties = void 0;
|
|
810
|
-
const exposedProperties = Symbol('exposedProperties');
|
|
811
|
-
const getExposedProperties = (target) => {
|
|
812
|
-
return target[exposedProperties] || target.prototype[exposedProperties] || [];
|
|
813
|
-
};
|
|
814
|
-
decorators.getExposedProperties = getExposedProperties;
|
|
815
|
-
/**
|
|
816
|
-
* Indicates that a class member function can be exposed using {@link ApiExposer}.
|
|
817
|
-
* @param options Options specific to the strategy used in {@link ApiExposer}
|
|
818
|
-
*/
|
|
819
|
-
// Returns any as decorator typing is weird.
|
|
820
|
-
const expose = (options) => (target, key, descriptor) => {
|
|
821
|
-
target[exposedProperties] = target[exposedProperties] || [];
|
|
822
|
-
target[exposedProperties].push({ key, descriptor, options });
|
|
823
|
-
};
|
|
824
|
-
decorators.expose = expose;
|
|
770
|
+
var main = {};
|
|
825
771
|
|
|
826
|
-
Object.defineProperty(
|
|
827
|
-
|
|
828
|
-
const
|
|
829
|
-
|
|
830
|
-
* Exposes api services on the transport of choice.
|
|
831
|
-
*/
|
|
832
|
-
class ApiExposer {
|
|
772
|
+
Object.defineProperty(main, "__esModule", { value: true });
|
|
773
|
+
main.WebContents = void 0;
|
|
774
|
+
const base_1$j = base;
|
|
775
|
+
class WebContents extends base_1$j.EmitterBase {
|
|
833
776
|
/**
|
|
834
|
-
* @param
|
|
777
|
+
* @param identity The identity of the {@link OpenFin.WebContentsEvents WebContents}.
|
|
778
|
+
* @param entityType The type of the {@link OpenFin.WebContentsEvents WebContents}.
|
|
835
779
|
*/
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
this.
|
|
839
|
-
|
|
840
|
-
* Exposes an instance of a given api on
|
|
841
|
-
* @param instance Instance of a class which has been decorated to indicate which functions can be exposed.
|
|
842
|
-
* @param instanceOptions Transport strategy specific options to use when exposing.
|
|
843
|
-
*/
|
|
844
|
-
this.exposeInstance = async (instance, instanceOptions) => {
|
|
845
|
-
const exposableProps = (0, decorators_1.getExposedProperties)(instance);
|
|
846
|
-
const exposedProps = await Promise.all(exposableProps.map(async ({ key, options }) => {
|
|
847
|
-
const customConsumptionOptions = await this.strategy.exposeFunction(instance[key].bind(instance), {
|
|
848
|
-
key,
|
|
849
|
-
options,
|
|
850
|
-
meta: instanceOptions
|
|
851
|
-
});
|
|
852
|
-
return {
|
|
853
|
-
key,
|
|
854
|
-
options: customConsumptionOptions
|
|
855
|
-
};
|
|
856
|
-
}));
|
|
857
|
-
await this.strategy.exposeMeta(instanceOptions, exposedProps);
|
|
858
|
-
};
|
|
780
|
+
constructor(wire, identity, entityType) {
|
|
781
|
+
super(wire, entityType, identity.uuid, identity.name);
|
|
782
|
+
this.identity = identity;
|
|
783
|
+
this.entityType = entityType;
|
|
859
784
|
}
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
785
|
+
/**
|
|
786
|
+
* Gets a base64 encoded image of all or part of the WebContents.
|
|
787
|
+
* @param options Options for the capturePage call.
|
|
788
|
+
*
|
|
789
|
+
* @example
|
|
790
|
+
*
|
|
791
|
+
* View:
|
|
792
|
+
* ```js
|
|
793
|
+
* const view = fin.View.getCurrentSync();
|
|
794
|
+
*
|
|
795
|
+
* // PNG image of a full visible View
|
|
796
|
+
* console.log(await view.capturePage());
|
|
797
|
+
*
|
|
798
|
+
* // Low-quality JPEG image of a defined visible area of the view
|
|
799
|
+
* const options = {
|
|
800
|
+
* area: {
|
|
801
|
+
* height: 100,
|
|
802
|
+
* width: 100,
|
|
803
|
+
* x: 10,
|
|
804
|
+
* y: 10,
|
|
805
|
+
* },
|
|
806
|
+
* format: 'jpg',
|
|
807
|
+
* quality: 20
|
|
808
|
+
* }
|
|
809
|
+
* console.log(await view.capturePage(options));
|
|
810
|
+
* ```
|
|
811
|
+
*
|
|
812
|
+
* Window:
|
|
813
|
+
* ```js
|
|
814
|
+
* const wnd = await fin.Window.getCurrent();
|
|
815
|
+
*
|
|
816
|
+
* // PNG image of a full visible window
|
|
817
|
+
* console.log(await wnd.capturePage());
|
|
818
|
+
*
|
|
819
|
+
* // Low-quality JPEG image of a defined visible area of the window
|
|
820
|
+
* const options = {
|
|
821
|
+
* area: {
|
|
822
|
+
* height: 100,
|
|
823
|
+
* width: 100,
|
|
824
|
+
* x: 10,
|
|
825
|
+
* y: 10,
|
|
826
|
+
* },
|
|
827
|
+
* format: 'jpg',
|
|
828
|
+
* quality: 20
|
|
829
|
+
* }
|
|
830
|
+
* console.log(await wnd.capturePage(options));
|
|
831
|
+
* ```
|
|
832
|
+
*
|
|
833
|
+
* @remarks
|
|
834
|
+
* `WebContents` refers to shared functionality between {@link OpenFin.Window} and {@link OpenFin.View}.
|
|
835
|
+
* We do not expose an explicit superclass for this functionality, but it does have its own
|
|
836
|
+
* {@link OpenFin.WebContentsEvents event namespace}.
|
|
837
|
+
*/
|
|
838
|
+
capturePage(options) {
|
|
839
|
+
return this.wire.sendAction('capture-page', { options, ...this.identity }).then(({ payload }) => payload.data);
|
|
885
840
|
}
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
(
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
}));
|
|
927
|
-
var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
|
|
928
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
929
|
-
};
|
|
930
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
931
|
-
__exportStar(channelsConsumer, exports);
|
|
932
|
-
__exportStar(channelsExposer, exports);
|
|
933
|
-
} (openfinChannels));
|
|
934
|
-
|
|
935
|
-
(function (exports) {
|
|
936
|
-
var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
937
|
-
if (k2 === undefined) k2 = k;
|
|
938
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
939
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
940
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
941
|
-
}
|
|
942
|
-
Object.defineProperty(o, k2, desc);
|
|
943
|
-
}) : (function(o, m, k, k2) {
|
|
944
|
-
if (k2 === undefined) k2 = k;
|
|
945
|
-
o[k2] = m[k];
|
|
946
|
-
}));
|
|
947
|
-
var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
|
|
948
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
949
|
-
};
|
|
950
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
951
|
-
__exportStar(openfinChannels, exports);
|
|
952
|
-
} (strategies));
|
|
953
|
-
|
|
954
|
-
(function (exports) {
|
|
955
|
-
var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
956
|
-
if (k2 === undefined) k2 = k;
|
|
957
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
958
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
959
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
960
|
-
}
|
|
961
|
-
Object.defineProperty(o, k2, desc);
|
|
962
|
-
}) : (function(o, m, k, k2) {
|
|
963
|
-
if (k2 === undefined) k2 = k;
|
|
964
|
-
o[k2] = m[k];
|
|
965
|
-
}));
|
|
966
|
-
var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
|
|
967
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
968
|
-
};
|
|
969
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
970
|
-
__exportStar(apiConsumer, exports);
|
|
971
|
-
__exportStar(apiExposer, exports);
|
|
972
|
-
__exportStar(strategies, exports);
|
|
973
|
-
__exportStar(decorators, exports);
|
|
974
|
-
} (apiExposer$1));
|
|
975
|
-
|
|
976
|
-
var channelApiRelay = {};
|
|
977
|
-
|
|
978
|
-
Object.defineProperty(channelApiRelay, "__esModule", { value: true });
|
|
979
|
-
channelApiRelay.createRelayedDispatch = channelApiRelay.relayChannelClientApi = void 0;
|
|
980
|
-
const EXPECTED_ERRORS = [
|
|
981
|
-
'no longer connected',
|
|
982
|
-
'RTCDataChannel closed unexpectedly',
|
|
983
|
-
'The client you are trying to dispatch from is disconnected from the target provider',
|
|
984
|
-
];
|
|
985
|
-
// Checks possible error messages that we want to trap, client error message can originate
|
|
986
|
-
// from ChannelProvider::dispatch OR ClassicStrategy::closeEndpoint OR RTCEndPoint::dataChannel::onclose
|
|
987
|
-
const isDisconnectedError = (errorMsg) => {
|
|
988
|
-
return EXPECTED_ERRORS.some(e => errorMsg.includes(e));
|
|
989
|
-
};
|
|
990
|
-
/**
|
|
991
|
-
* @internal
|
|
992
|
-
* Create a channel relay for a given channel exposition, allowing a single provider to route
|
|
993
|
-
* actions to the designated clients.
|
|
994
|
-
*
|
|
995
|
-
* Designed to be used in conjunction with @expose
|
|
996
|
-
*
|
|
997
|
-
* @param channelProvider The channel provider to relay the actions on.
|
|
998
|
-
* @param config Determines which actions to relay. Please ensure action prefix matches the exposed api.
|
|
999
|
-
*/
|
|
1000
|
-
const relayChannelClientApi = async (channelProvider, relayId) => {
|
|
1001
|
-
channelProvider.register(`relay:${relayId}`, ({ action, target, payload }) => {
|
|
1002
|
-
return channelProvider.dispatch(target, action, payload);
|
|
1003
|
-
});
|
|
1004
|
-
await Promise.resolve();
|
|
1005
|
-
};
|
|
1006
|
-
channelApiRelay.relayChannelClientApi = relayChannelClientApi;
|
|
1007
|
-
const createRelayedDispatch = (client, target, relayId, relayErrorMsg) => async (action, payload) => {
|
|
1008
|
-
try {
|
|
1009
|
-
return await client.dispatch(`relay:${relayId}`, {
|
|
1010
|
-
action,
|
|
1011
|
-
payload,
|
|
1012
|
-
target
|
|
1013
|
-
});
|
|
1014
|
-
}
|
|
1015
|
-
catch (e) {
|
|
1016
|
-
if (isDisconnectedError(e.message) && relayErrorMsg) {
|
|
1017
|
-
throw new Error(relayErrorMsg);
|
|
1018
|
-
}
|
|
1019
|
-
throw e;
|
|
1020
|
-
}
|
|
1021
|
-
};
|
|
1022
|
-
channelApiRelay.createRelayedDispatch = createRelayedDispatch;
|
|
1023
|
-
|
|
1024
|
-
var __classPrivateFieldSet$b = (commonjsGlobal && commonjsGlobal.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
1025
|
-
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
1026
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
1027
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
1028
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
1029
|
-
};
|
|
1030
|
-
var __classPrivateFieldGet$d = (commonjsGlobal && commonjsGlobal.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
1031
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
1032
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
1033
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
1034
|
-
};
|
|
1035
|
-
var _LayoutNode_client, _TabStack_client, _ColumnOrRow_client;
|
|
1036
|
-
Object.defineProperty(layoutEntities, "__esModule", { value: true });
|
|
1037
|
-
layoutEntities.ColumnOrRow = layoutEntities.TabStack = layoutEntities.LayoutNode = void 0;
|
|
1038
|
-
const api_exposer_1 = apiExposer$1;
|
|
1039
|
-
const channel_api_relay_1 = channelApiRelay;
|
|
1040
|
-
/*
|
|
1041
|
-
This file includes LayoutNode, ColumnOrRow and TabStack classes, which are all closely
|
|
1042
|
-
intertwined, and share members via parent abstract class LayoutNode. To prevent circular
|
|
1043
|
-
refs, we define and export all the classes here.
|
|
1044
|
-
*/
|
|
1045
|
-
/**
|
|
1046
|
-
* @ignore
|
|
1047
|
-
* @internal
|
|
1048
|
-
* Supplies an ApiClient for {@link LayoutEntitiesController} and helper methods
|
|
1049
|
-
* for the entities {@link TabStack} AND {@link ColumnOrRow} to use.
|
|
1050
|
-
*/
|
|
1051
|
-
class LayoutNode {
|
|
1052
|
-
/**
|
|
1053
|
-
* @internal
|
|
1054
|
-
* @ignore
|
|
1055
|
-
*/
|
|
1056
|
-
constructor(client, entityId) {
|
|
1057
|
-
/**
|
|
1058
|
-
* @ignore
|
|
1059
|
-
* @internal
|
|
1060
|
-
* ApiClient for {@link LayoutEntitiesController}
|
|
1061
|
-
*/
|
|
1062
|
-
_LayoutNode_client.set(this, void 0);
|
|
1063
|
-
/**
|
|
1064
|
-
* Checks if the TabStack or ColumnOrRow is the root content item
|
|
1065
|
-
*
|
|
1066
|
-
* @example
|
|
1067
|
-
* ```js
|
|
1068
|
-
* if (!fin.me.isView) {
|
|
1069
|
-
* throw new Error('Not running in a platform View.');
|
|
1070
|
-
* }
|
|
1071
|
-
*
|
|
1072
|
-
* const stack = await fin.me.getCurrentStack();
|
|
1073
|
-
* const isRoot = await stack.isRoot();
|
|
1074
|
-
* // The TabStack is root: false
|
|
1075
|
-
* console.log(`The TabStack is root: ${isRoot}`);
|
|
1076
|
-
*
|
|
1077
|
-
* // Retrieves the parent ColumnOrRow
|
|
1078
|
-
* const parent = await stack.getParent();
|
|
1079
|
-
* const parentIsRoot = await parent.isRoot();
|
|
1080
|
-
* // The parent ColumnOrRow is root: true
|
|
1081
|
-
* console.log(`The parent ColumnOrRow is root: ${parentIsRoot}`);
|
|
1082
|
-
* ```
|
|
1083
|
-
*/
|
|
1084
|
-
this.isRoot = () => __classPrivateFieldGet$d(this, _LayoutNode_client, "f").isRoot(this.entityId);
|
|
1085
|
-
/**
|
|
1086
|
-
* Checks if the TabStack or ColumnOrRow exists
|
|
1087
|
-
*
|
|
1088
|
-
* @example
|
|
1089
|
-
* ```js
|
|
1090
|
-
* if (!fin.me.isView) {
|
|
1091
|
-
* throw new Error('Not running in a platform View.');
|
|
1092
|
-
* }
|
|
1093
|
-
*
|
|
1094
|
-
* const stack = await fin.me.getCurrentStack();
|
|
1095
|
-
* // Retrieves the parent ColumnOrRow
|
|
1096
|
-
* const columnOrRow = await stack.getParent();
|
|
1097
|
-
* let exists = await stack.exists();
|
|
1098
|
-
* // or
|
|
1099
|
-
* let exists = await columnOrRow.exists();
|
|
1100
|
-
* // The entity exists: true
|
|
1101
|
-
* console.log(`The entity exists: ${exists}`);
|
|
1102
|
-
* ```
|
|
1103
|
-
*/
|
|
1104
|
-
this.exists = () => __classPrivateFieldGet$d(this, _LayoutNode_client, "f").exists(this.entityId);
|
|
1105
|
-
/**
|
|
1106
|
-
* Retrieves the parent of the TabStack or ColumnOrRow
|
|
1107
|
-
*
|
|
1108
|
-
* @example
|
|
1109
|
-
* ```js
|
|
1110
|
-
* if (!fin.me.isView) {
|
|
1111
|
-
* throw new Error('Not running in a platform View.');
|
|
1112
|
-
* }
|
|
1113
|
-
*
|
|
1114
|
-
* const stack = await fin.me.getCurrentStack();
|
|
1115
|
-
* // Retrieves the parent ColumnOrRow
|
|
1116
|
-
* const columnOrRow = await stack.getParent();
|
|
1117
|
-
*
|
|
1118
|
-
* // undefined if entity is the root item
|
|
1119
|
-
* let parent = await columnOrRow.getParent();
|
|
1120
|
-
* // or
|
|
1121
|
-
* let parent = await stack.getParent();
|
|
1122
|
-
* ```
|
|
1123
|
-
*/
|
|
1124
|
-
this.getParent = async () => {
|
|
1125
|
-
const parent = await __classPrivateFieldGet$d(this, _LayoutNode_client, "f").getParent(this.entityId);
|
|
1126
|
-
if (!parent) {
|
|
1127
|
-
return undefined;
|
|
1128
|
-
}
|
|
1129
|
-
return LayoutNode.getEntity(parent, __classPrivateFieldGet$d(this, _LayoutNode_client, "f"));
|
|
1130
|
-
};
|
|
1131
|
-
/**
|
|
1132
|
-
* Creates a new TabStack adjacent to the given TabStack or ColumnOrRow. Inputs can be new views to create, or existing views.
|
|
1133
|
-
*
|
|
1134
|
-
* Known Issue: If the number of views to add overflows the tab-container, the added views will be set as active
|
|
1135
|
-
* during each render, and then placed at the front of the tab-stack, while the underlying order of tabs will remain unchanged.
|
|
1136
|
-
* This means the views you pass to createAdjacentStack() may not render in the order given by the array.
|
|
1137
|
-
* Until fixed, this problem can be avoided only if your window is wide enough to fit creating all the views in the tabstack.
|
|
1138
|
-
*
|
|
1139
|
-
* @param views The views that will populate the new TabStack.
|
|
1140
|
-
* @param options Additional options that control new TabStack creation.
|
|
1141
|
-
* @returns The newly-created TabStack.
|
|
1142
|
-
*
|
|
1143
|
-
* @example
|
|
1144
|
-
* ```js
|
|
1145
|
-
* if (!fin.me.isView) {
|
|
1146
|
-
* throw new Error('Not running in a platform View.');
|
|
1147
|
-
* }
|
|
1148
|
-
*
|
|
1149
|
-
* const stack = await fin.me.getCurrentStack();
|
|
1150
|
-
* const columnOrRow = await stack.getParent();
|
|
1151
|
-
*
|
|
1152
|
-
* // Create view references by supplying a 'name' and 'url'
|
|
1153
|
-
* const views = [
|
|
1154
|
-
* // if 'name' is undefined, one will be generated
|
|
1155
|
-
* // if 'url' is undefined, it will default the view URL to 'about:blank'
|
|
1156
|
-
* { name: 'google-view', url: 'http://google.com/'},
|
|
1157
|
-
* { name: 'of-developers-view', url: 'http://developers.openfin.co/'},
|
|
1158
|
-
* ];
|
|
1159
|
-
*
|
|
1160
|
-
* // Create a view beforehand to be included in the new tab stack
|
|
1161
|
-
* const outsideView = await fin.View.create({
|
|
1162
|
-
* name: 'outside-bloomberg-view',
|
|
1163
|
-
* url: 'https://bloomberg.com/',
|
|
1164
|
-
* target: fin.me.identity,
|
|
1165
|
-
* });
|
|
1166
|
-
*
|
|
1167
|
-
* // Views to add can be identities, or the reference views mentioned above
|
|
1168
|
-
* const viewsToAdd = [outsideView.identity, ...views];
|
|
1169
|
-
*
|
|
1170
|
-
* // Possible position inputs: 'right' | 'left' | 'top' | 'bottom'
|
|
1171
|
-
* let stackFrom = await columnOrRow.createAdjacentStack(viewsToAdd, { position: 'right' });
|
|
1172
|
-
* // Or
|
|
1173
|
-
* let newStack = await stack.createAdjacentStack(viewsToAdd, { position: 'right' });
|
|
1174
|
-
* console.log(`A new TabStack created to the right has ${newStack.length} views in it`);
|
|
1175
|
-
*
|
|
1176
|
-
* ```
|
|
1177
|
-
* @experimental
|
|
1178
|
-
*/
|
|
1179
|
-
this.createAdjacentStack = async (views, options) => {
|
|
1180
|
-
const entityId = await __classPrivateFieldGet$d(this, _LayoutNode_client, "f").createAdjacentStack(this.entityId, views, options);
|
|
1181
|
-
return LayoutNode.getEntity({ entityId, type: 'stack' }, __classPrivateFieldGet$d(this, _LayoutNode_client, "f"));
|
|
1182
|
-
};
|
|
1183
|
-
/**
|
|
1184
|
-
* Retrieves the adjacent TabStacks of the given TabStack or ColumnOrRow.
|
|
1185
|
-
*
|
|
1186
|
-
* @param edge Edge whose adjacent TabStacks will be returned.
|
|
1187
|
-
*
|
|
1188
|
-
* @example
|
|
1189
|
-
* ```js
|
|
1190
|
-
* if (!fin.me.isView) {
|
|
1191
|
-
* throw new Error('Not running in a platform View.');
|
|
1192
|
-
* }
|
|
1193
|
-
*
|
|
1194
|
-
* const stack = await fin.me.getCurrentStack();
|
|
1195
|
-
* const columnOrRow = await stack.getParent();
|
|
1196
|
-
* // Possible position inputs: 'right' | 'left' | 'top' | 'bottom'
|
|
1197
|
-
* let rightStacks = await columnOrRow.getAdjacentStacks('right');
|
|
1198
|
-
* let leftStacks = await columnOrRow.getAdjacentStacks('left');
|
|
1199
|
-
* // or
|
|
1200
|
-
* let rightStacks = await stack.getAdjacentStacks('right');
|
|
1201
|
-
* let leftStacks = await stack.getAdjacentStacks('left');
|
|
1202
|
-
*
|
|
1203
|
-
* console.log(`The entity has ${rightStacks.length} stacks to the right, and ${leftStacks.length} stacks to the left`);
|
|
1204
|
-
*
|
|
1205
|
-
* ```
|
|
1206
|
-
* @experimental
|
|
1207
|
-
*/
|
|
1208
|
-
this.getAdjacentStacks = async (edge) => {
|
|
1209
|
-
const adjacentStacks = await __classPrivateFieldGet$d(this, _LayoutNode_client, "f").getAdjacentStacks({
|
|
1210
|
-
targetId: this.entityId,
|
|
1211
|
-
edge
|
|
1212
|
-
});
|
|
1213
|
-
return adjacentStacks.map((stack) => LayoutNode.getEntity({
|
|
1214
|
-
type: 'stack',
|
|
1215
|
-
entityId: stack.entityId
|
|
1216
|
-
}, __classPrivateFieldGet$d(this, _LayoutNode_client, "f")));
|
|
1217
|
-
};
|
|
1218
|
-
__classPrivateFieldSet$b(this, _LayoutNode_client, client, "f");
|
|
1219
|
-
this.entityId = entityId;
|
|
1220
|
-
}
|
|
1221
|
-
}
|
|
1222
|
-
layoutEntities.LayoutNode = LayoutNode;
|
|
1223
|
-
_LayoutNode_client = new WeakMap();
|
|
1224
|
-
/**
|
|
1225
|
-
* @ignore
|
|
1226
|
-
* @internal
|
|
1227
|
-
* Encapsulates Api consumption of {@link LayoutEntitiesClient} with a relayed dispatch
|
|
1228
|
-
* @param client
|
|
1229
|
-
* @param controllerId
|
|
1230
|
-
* @param identity
|
|
1231
|
-
* @returns a new instance of {@link LayoutEntitiesClient} with bound to the controllerId
|
|
1232
|
-
*/
|
|
1233
|
-
LayoutNode.newLayoutEntitiesClient = async (client, controllerId, identity) => {
|
|
1234
|
-
const dispatch = (0, channel_api_relay_1.createRelayedDispatch)(client, identity, 'layout-relay', 'You are trying to interact with a layout component on a window that does not exist or has been destroyed.');
|
|
1235
|
-
const consumer = new api_exposer_1.ApiConsumer(new api_exposer_1.ChannelsConsumer({ dispatch }));
|
|
1236
|
-
return consumer.consume({ id: controllerId });
|
|
1237
|
-
};
|
|
1238
|
-
LayoutNode.getEntity = (definition, client) => {
|
|
1239
|
-
const { entityId, type } = definition;
|
|
1240
|
-
switch (type) {
|
|
1241
|
-
case 'column':
|
|
1242
|
-
case 'row':
|
|
1243
|
-
return new ColumnOrRow(client, entityId, type);
|
|
1244
|
-
case 'stack':
|
|
1245
|
-
return new TabStack(client, entityId);
|
|
1246
|
-
default:
|
|
1247
|
-
throw new Error(`Unrecognised Layout Entity encountered ('${JSON.stringify(definition)})`);
|
|
1248
|
-
}
|
|
1249
|
-
};
|
|
1250
|
-
/**
|
|
1251
|
-
* A TabStack is used to manage the state of a stack of tabs within an OpenFin Layout.
|
|
1252
|
-
*/
|
|
1253
|
-
class TabStack extends LayoutNode {
|
|
1254
|
-
/** @internal */
|
|
1255
|
-
constructor(client, entityId) {
|
|
1256
|
-
super(client, entityId);
|
|
1257
|
-
/**
|
|
1258
|
-
* @internal
|
|
1259
|
-
* ApiClient for {@link LayoutEntitiesController}
|
|
1260
|
-
*/
|
|
1261
|
-
_TabStack_client.set(this, void 0);
|
|
1262
|
-
/**
|
|
1263
|
-
* Type of the content item. Always stack, but useful for distinguishing between a {@link TabStack} and {@link ColumnOrRow}.
|
|
1264
|
-
*/
|
|
1265
|
-
this.type = 'stack';
|
|
1266
|
-
/**
|
|
1267
|
-
* Retrieves a list of all views belonging to this {@link TabStack}.
|
|
1268
|
-
*
|
|
1269
|
-
* Known Issue: If adding a view overflows the tab-container width, the added view will be set as active
|
|
1270
|
-
* and rendered at the front of the tab-stack, while the underlying order of tabs will remain unchanged.
|
|
1271
|
-
* If that happens and then getViews() is called, it will return the identities in a different order than
|
|
1272
|
-
* than the currently rendered tab order.
|
|
1273
|
-
*
|
|
1274
|
-
*
|
|
1275
|
-
* @throws If the {@link TabStack} has been destroyed.
|
|
1276
|
-
* @example
|
|
1277
|
-
* ```js
|
|
1278
|
-
* if (!fin.me.isView) {
|
|
1279
|
-
* throw new Error('Not running in a platform View.');
|
|
1280
|
-
* }
|
|
1281
|
-
*
|
|
1282
|
-
* const stack = await fin.me.getCurrentStack();
|
|
1283
|
-
* // Alternatively, you can wrap any view and get the stack from there
|
|
1284
|
-
* // const viewFromSomewhere = fin.View.wrapSync(someView.identity);
|
|
1285
|
-
* // const stack = await viewFromSomewhere.getCurrentStack();
|
|
1286
|
-
* const views = await stack.getViews();
|
|
1287
|
-
* console.log(`Stack contains ${views.length} view(s)`);
|
|
1288
|
-
* ```
|
|
1289
|
-
* @experimental
|
|
1290
|
-
*/
|
|
1291
|
-
this.getViews = () => __classPrivateFieldGet$d(this, _TabStack_client, "f").getStackViews(this.entityId);
|
|
1292
|
-
/**
|
|
1293
|
-
* Adds or creates a view in this {@link TabStack}.
|
|
1294
|
-
*
|
|
1295
|
-
* @remarks Known Issue: If adding a view overflows the tab-container, the added view will be set as active
|
|
1296
|
-
* and rendered at the front of the tab-stack, while the underlying order of tabs will remain unchanged.
|
|
1297
|
-
*
|
|
1298
|
-
* @param view The identity of an existing view to add, or options to create a view.
|
|
1299
|
-
* @param options Optional view options: index number used to insert the view into the stack at that index. Defaults to 0 (front of the stack)
|
|
1300
|
-
* @returns Resolves with the {@link OpenFin.Identity identity} of the added view.
|
|
1301
|
-
* @throws If the view does not exist or fails to create.
|
|
1302
|
-
* @throws If the {@link TabStack} has been destroyed.
|
|
1303
|
-
* @example
|
|
1304
|
-
* ```js
|
|
1305
|
-
* if (!fin.me.isView) {
|
|
1306
|
-
* throw new Error('Not running in a platform View.');
|
|
1307
|
-
* }
|
|
1308
|
-
*
|
|
1309
|
-
* const stack = await fin.me.getCurrentStack();
|
|
1310
|
-
* // Alternatively, you can wrap any view and get the stack from there
|
|
1311
|
-
* // const viewFromSomewhere = fin.View.wrapSync(someView.identity);
|
|
1312
|
-
* // const stack = await viewFromSomewhere.getCurrentStack();
|
|
1313
|
-
* const googleViewIdentity = await stack.addView({ name: 'google-view', url: 'http://google.com/' });
|
|
1314
|
-
* console.log('Identity of the google view just added', { googleViewIdentity });
|
|
1315
|
-
* // pass in { index: number } to set the index in the stack. Here 1 means, end of the stack (defaults to 0)
|
|
1316
|
-
* const appleViewIdentity = await stack.addView({ name: 'apple-view', url: 'http://apple.com/' }, { index: 1 });
|
|
1317
|
-
* console.log('Identity of the apple view just added', { appleViewIdentity });
|
|
1318
|
-
* ```
|
|
1319
|
-
* @experimental
|
|
1320
|
-
*/
|
|
1321
|
-
this.addView = async (view, options = { index: 0 }) => __classPrivateFieldGet$d(this, _TabStack_client, "f").addViewToStack(this.entityId, view, options);
|
|
1322
|
-
/**
|
|
1323
|
-
* Removes a view from this {@link TabStack}.
|
|
1324
|
-
*
|
|
1325
|
-
* @remarks Throws an exception if the view identity does not exist or was already destroyed.
|
|
1326
|
-
*
|
|
1327
|
-
* @param view - Identity of the view to remove.
|
|
1328
|
-
* @throws If the view does not exist or does not belong to the stack.
|
|
1329
|
-
* @throws If the {@link TabStack} has been destroyed.
|
|
1330
|
-
*
|
|
1331
|
-
* @example
|
|
1332
|
-
* ```js
|
|
1333
|
-
* if (!fin.me.isView) {
|
|
1334
|
-
* throw new Error('Not running in a platform View.');
|
|
1335
|
-
* }
|
|
1336
|
-
*
|
|
1337
|
-
* const stack = await fin.me.getCurrentStack();
|
|
1338
|
-
* const googleViewIdentity = await stack.addView({ name: 'google-view', url: 'http://google.com/' });
|
|
1339
|
-
*
|
|
1340
|
-
* await stack.removeView(googleViewIdentity);
|
|
1341
|
-
*
|
|
1342
|
-
* try {
|
|
1343
|
-
* await stack.removeView(googleViewIdentity);
|
|
1344
|
-
* } catch (error) {
|
|
1345
|
-
* // Tried to remove a view ('google-view') which does not belong to the stack.
|
|
1346
|
-
* console.log(error);
|
|
1347
|
-
* }
|
|
1348
|
-
* ```
|
|
1349
|
-
*/
|
|
1350
|
-
this.removeView = async (view) => {
|
|
1351
|
-
await __classPrivateFieldGet$d(this, _TabStack_client, "f").removeViewFromStack(this.entityId, view);
|
|
1352
|
-
};
|
|
1353
|
-
/**
|
|
1354
|
-
* Sets the active view of the {@link TabStack} without focusing it.
|
|
1355
|
-
* @param view - Identity of the view to activate.
|
|
1356
|
-
* @returns Promise which resolves with void once the view has been activated.
|
|
1357
|
-
* @throws If the {@link TabStack} has been destroyed.
|
|
1358
|
-
* @throws If the view does not exist.
|
|
1359
|
-
* @example
|
|
1360
|
-
* Change the active tab of a known View's TabStack:
|
|
1361
|
-
* ```js
|
|
1362
|
-
* const targetView = fin.View.wrapSync({ uuid: 'uuid', name: 'view-name' });
|
|
1363
|
-
* const stack = await targetView.getCurrentStack();
|
|
1364
|
-
* await stack.setActiveView(targetView.identity);
|
|
1365
|
-
* ```
|
|
1366
|
-
*
|
|
1367
|
-
* Set the current View as active within its TabStack:
|
|
1368
|
-
* ```js
|
|
1369
|
-
* const stack = await fin.me.getCurrentStack();
|
|
1370
|
-
* await stack.setActiveView(fin.me.identity);
|
|
1371
|
-
* ```
|
|
1372
|
-
* @experimental
|
|
1373
|
-
*/
|
|
1374
|
-
this.setActiveView = async (view) => {
|
|
1375
|
-
await __classPrivateFieldGet$d(this, _TabStack_client, "f").setStackActiveView(this.entityId, view);
|
|
1376
|
-
};
|
|
1377
|
-
__classPrivateFieldSet$b(this, _TabStack_client, client, "f");
|
|
1378
|
-
}
|
|
1379
|
-
}
|
|
1380
|
-
layoutEntities.TabStack = TabStack;
|
|
1381
|
-
_TabStack_client = new WeakMap();
|
|
1382
|
-
/**
|
|
1383
|
-
* A ColumnOrRow is used to manage the state of Column and Rows within an OpenFin Layout.
|
|
1384
|
-
*/
|
|
1385
|
-
class ColumnOrRow extends LayoutNode {
|
|
1386
|
-
/**
|
|
1387
|
-
* @internal
|
|
1388
|
-
*/
|
|
1389
|
-
constructor(client, entityId, type) {
|
|
1390
|
-
super(client, entityId);
|
|
1391
|
-
/**
|
|
1392
|
-
* @ignore
|
|
1393
|
-
* @internal
|
|
1394
|
-
* ApiClient for {@link LayoutEntitiesController}
|
|
1395
|
-
*/
|
|
1396
|
-
_ColumnOrRow_client.set(this, void 0);
|
|
1397
|
-
/**
|
|
1398
|
-
* Retrieves the content array of the ColumnOrRow
|
|
1399
|
-
*
|
|
1400
|
-
* @example
|
|
1401
|
-
* ```js
|
|
1402
|
-
* if (!fin.me.isView) {
|
|
1403
|
-
* throw new Error('Not running in a platform View.');
|
|
1404
|
-
* }
|
|
1405
|
-
*
|
|
1406
|
-
* const stack = await fin.me.getCurrentStack();
|
|
1407
|
-
* // Retrieves the parent ColumnOrRow
|
|
1408
|
-
* const columnOrRow = await stack.getParent();
|
|
1409
|
-
*
|
|
1410
|
-
* // returns [TabStack]
|
|
1411
|
-
* const contentArray = await columnOrRow.getContent();
|
|
1412
|
-
* console.log(`The ColumnOrRow has ${contentArray.length} item(s)`);
|
|
1413
|
-
* ```
|
|
1414
|
-
*/
|
|
1415
|
-
this.getContent = async () => {
|
|
1416
|
-
const contentItemEntities = await __classPrivateFieldGet$d(this, _ColumnOrRow_client, "f").getContent(this.entityId);
|
|
1417
|
-
return contentItemEntities.map((entity) => LayoutNode.getEntity(entity, __classPrivateFieldGet$d(this, _ColumnOrRow_client, "f")));
|
|
1418
|
-
};
|
|
1419
|
-
__classPrivateFieldSet$b(this, _ColumnOrRow_client, client, "f");
|
|
1420
|
-
this.type = type;
|
|
1421
|
-
}
|
|
1422
|
-
}
|
|
1423
|
-
layoutEntities.ColumnOrRow = ColumnOrRow;
|
|
1424
|
-
_ColumnOrRow_client = new WeakMap();
|
|
1425
|
-
|
|
1426
|
-
var layout_constants = {};
|
|
1427
|
-
|
|
1428
|
-
Object.defineProperty(layout_constants, "__esModule", { value: true });
|
|
1429
|
-
layout_constants.DEFAULT_LAYOUT_KEY = layout_constants.LAYOUT_CONTROLLER_ID = void 0;
|
|
1430
|
-
layout_constants.LAYOUT_CONTROLLER_ID = 'layout-entities';
|
|
1431
|
-
// TODO: eventually export this somehow
|
|
1432
|
-
layout_constants.DEFAULT_LAYOUT_KEY = '__default__';
|
|
1433
|
-
|
|
1434
|
-
var main = {};
|
|
1435
|
-
|
|
1436
|
-
Object.defineProperty(main, "__esModule", { value: true });
|
|
1437
|
-
main.WebContents = void 0;
|
|
1438
|
-
const base_1$j = base;
|
|
1439
|
-
class WebContents extends base_1$j.EmitterBase {
|
|
1440
|
-
/**
|
|
1441
|
-
* @param identity The identity of the {@link OpenFin.WebContentsEvents WebContents}.
|
|
1442
|
-
* @param entityType The type of the {@link OpenFin.WebContentsEvents WebContents}.
|
|
1443
|
-
*/
|
|
1444
|
-
constructor(wire, identity, entityType) {
|
|
1445
|
-
super(wire, entityType, identity.uuid, identity.name);
|
|
1446
|
-
this.identity = identity;
|
|
1447
|
-
this.entityType = entityType;
|
|
1448
|
-
}
|
|
1449
|
-
/**
|
|
1450
|
-
* Gets a base64 encoded image of all or part of the WebContents.
|
|
1451
|
-
* @param options Options for the capturePage call.
|
|
1452
|
-
*
|
|
1453
|
-
* @example
|
|
1454
|
-
*
|
|
1455
|
-
* View:
|
|
1456
|
-
* ```js
|
|
1457
|
-
* const view = fin.View.getCurrentSync();
|
|
1458
|
-
*
|
|
1459
|
-
* // PNG image of a full visible View
|
|
1460
|
-
* console.log(await view.capturePage());
|
|
1461
|
-
*
|
|
1462
|
-
* // Low-quality JPEG image of a defined visible area of the view
|
|
1463
|
-
* const options = {
|
|
1464
|
-
* area: {
|
|
1465
|
-
* height: 100,
|
|
1466
|
-
* width: 100,
|
|
1467
|
-
* x: 10,
|
|
1468
|
-
* y: 10,
|
|
1469
|
-
* },
|
|
1470
|
-
* format: 'jpg',
|
|
1471
|
-
* quality: 20
|
|
1472
|
-
* }
|
|
1473
|
-
* console.log(await view.capturePage(options));
|
|
1474
|
-
* ```
|
|
1475
|
-
*
|
|
1476
|
-
* Window:
|
|
1477
|
-
* ```js
|
|
1478
|
-
* const wnd = await fin.Window.getCurrent();
|
|
1479
|
-
*
|
|
1480
|
-
* // PNG image of a full visible window
|
|
1481
|
-
* console.log(await wnd.capturePage());
|
|
1482
|
-
*
|
|
1483
|
-
* // Low-quality JPEG image of a defined visible area of the window
|
|
1484
|
-
* const options = {
|
|
1485
|
-
* area: {
|
|
1486
|
-
* height: 100,
|
|
1487
|
-
* width: 100,
|
|
1488
|
-
* x: 10,
|
|
1489
|
-
* y: 10,
|
|
1490
|
-
* },
|
|
1491
|
-
* format: 'jpg',
|
|
1492
|
-
* quality: 20
|
|
1493
|
-
* }
|
|
1494
|
-
* console.log(await wnd.capturePage(options));
|
|
1495
|
-
* ```
|
|
1496
|
-
*
|
|
1497
|
-
* @remarks
|
|
1498
|
-
* `WebContents` refers to shared functionality between {@link OpenFin.Window} and {@link OpenFin.View}.
|
|
1499
|
-
* We do not expose an explicit superclass for this functionality, but it does have its own
|
|
1500
|
-
* {@link OpenFin.WebContentsEvents event namespace}.
|
|
1501
|
-
*/
|
|
1502
|
-
capturePage(options) {
|
|
1503
|
-
return this.wire.sendAction('capture-page', { options, ...this.identity }).then(({ payload }) => payload.data);
|
|
1504
|
-
}
|
|
1505
|
-
/**
|
|
1506
|
-
* Executes Javascript on the WebContents, restricted to contents you own or contents owned by
|
|
1507
|
-
* applications you have created.
|
|
1508
|
-
* @param code JavaScript code to be executed on the view.
|
|
1509
|
-
*
|
|
1510
|
-
* @example
|
|
1511
|
-
* View:
|
|
1512
|
-
* ```js
|
|
1513
|
-
* async function executeJavaScript(code) {
|
|
1514
|
-
* const view = await fin.View.wrap({uuid: 'uuid', name: 'view name'});
|
|
1515
|
-
* return await view.executeJavaScript(code);
|
|
1516
|
-
* }
|
|
1517
|
-
*
|
|
1518
|
-
* executeJavaScript(`console.log('Hello, Openfin')`).then(() => console.log('Javascript excuted')).catch(err => console.log(err));
|
|
1519
|
-
* ```
|
|
1520
|
-
*
|
|
1521
|
-
* Window:
|
|
1522
|
-
* ```js
|
|
1523
|
-
* async function executeJavaScript(code) {
|
|
1524
|
-
* const app = await fin.Application.start({
|
|
1525
|
-
* name: 'myApp',
|
|
1526
|
-
* uuid: 'app-1',
|
|
1527
|
-
* url: 'https://cdn.openfin.co/docs/javascript/stable/tutorial-Window.executeJavaScript.html',
|
|
1528
|
-
* autoShow: true
|
|
1529
|
-
* });
|
|
1530
|
-
* const win = await app.getWindow();
|
|
1531
|
-
* return await win.executeJavaScript(code);
|
|
1532
|
-
* }
|
|
1533
|
-
*
|
|
1534
|
-
* executeJavaScript(`console.log('Hello, Openfin')`).then(() => console.log('Javascript excuted')).catch(err => console.log(err));
|
|
1535
|
-
* ```
|
|
1536
|
-
* @remarks
|
|
1537
|
-
* `WebContents` refers to shared functionality between {@link OpenFin.Window} and {@link OpenFin.View}.
|
|
1538
|
-
* We do not expose an explicit superclass for this functionality, but it does have its own
|
|
1539
|
-
* {@link OpenFin.WebContentsEvents event namespace}.
|
|
1540
|
-
*/
|
|
1541
|
-
executeJavaScript(code) {
|
|
1542
|
-
return this.wire
|
|
1543
|
-
.sendAction('execute-javascript-in-window', { ...this.identity, code })
|
|
1544
|
-
.then(({ payload }) => payload.data);
|
|
841
|
+
/**
|
|
842
|
+
* Executes Javascript on the WebContents, restricted to contents you own or contents owned by
|
|
843
|
+
* applications you have created.
|
|
844
|
+
* @param code JavaScript code to be executed on the view.
|
|
845
|
+
*
|
|
846
|
+
* @example
|
|
847
|
+
* View:
|
|
848
|
+
* ```js
|
|
849
|
+
* async function executeJavaScript(code) {
|
|
850
|
+
* const view = await fin.View.wrap({uuid: 'uuid', name: 'view name'});
|
|
851
|
+
* return await view.executeJavaScript(code);
|
|
852
|
+
* }
|
|
853
|
+
*
|
|
854
|
+
* executeJavaScript(`console.log('Hello, Openfin')`).then(() => console.log('Javascript excuted')).catch(err => console.log(err));
|
|
855
|
+
* ```
|
|
856
|
+
*
|
|
857
|
+
* Window:
|
|
858
|
+
* ```js
|
|
859
|
+
* async function executeJavaScript(code) {
|
|
860
|
+
* const app = await fin.Application.start({
|
|
861
|
+
* name: 'myApp',
|
|
862
|
+
* uuid: 'app-1',
|
|
863
|
+
* url: 'https://cdn.openfin.co/docs/javascript/stable/tutorial-Window.executeJavaScript.html',
|
|
864
|
+
* autoShow: true
|
|
865
|
+
* });
|
|
866
|
+
* const win = await app.getWindow();
|
|
867
|
+
* return await win.executeJavaScript(code);
|
|
868
|
+
* }
|
|
869
|
+
*
|
|
870
|
+
* executeJavaScript(`console.log('Hello, Openfin')`).then(() => console.log('Javascript excuted')).catch(err => console.log(err));
|
|
871
|
+
* ```
|
|
872
|
+
* @remarks
|
|
873
|
+
* `WebContents` refers to shared functionality between {@link OpenFin.Window} and {@link OpenFin.View}.
|
|
874
|
+
* We do not expose an explicit superclass for this functionality, but it does have its own
|
|
875
|
+
* {@link OpenFin.WebContentsEvents event namespace}.
|
|
876
|
+
*/
|
|
877
|
+
executeJavaScript(code) {
|
|
878
|
+
return this.wire
|
|
879
|
+
.sendAction('execute-javascript-in-window', { ...this.identity, code })
|
|
880
|
+
.then(({ payload }) => payload.data);
|
|
1545
881
|
}
|
|
1546
882
|
/**
|
|
1547
883
|
* Returns the zoom level of the WebContents.
|
|
@@ -2507,18 +1843,11 @@ var hasRequiredInstance$2;
|
|
|
2507
1843
|
function requireInstance$2 () {
|
|
2508
1844
|
if (hasRequiredInstance$2) return Instance$5;
|
|
2509
1845
|
hasRequiredInstance$2 = 1;
|
|
2510
|
-
var __classPrivateFieldGet = (commonjsGlobal && commonjsGlobal.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
2511
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
2512
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
2513
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
2514
|
-
};
|
|
2515
1846
|
var _View_providerChannelClient;
|
|
2516
1847
|
Object.defineProperty(Instance$5, "__esModule", { value: true });
|
|
2517
1848
|
Instance$5.View = void 0;
|
|
2518
1849
|
const transport_errors_1 = transportErrors;
|
|
2519
1850
|
const lazy_1 = lazy;
|
|
2520
|
-
const layout_entities_1 = layoutEntities;
|
|
2521
|
-
const layout_constants_1 = layout_constants;
|
|
2522
1851
|
const main_1 = main;
|
|
2523
1852
|
const window_1 = requireWindow();
|
|
2524
1853
|
/**
|
|
@@ -2836,7 +2165,7 @@ function requireInstance$2 () {
|
|
|
2836
2165
|
return ack.payload.data;
|
|
2837
2166
|
};
|
|
2838
2167
|
/**
|
|
2839
|
-
* Retrieves the
|
|
2168
|
+
* Retrieves the OpenFin.Layout instance for the Window the View is attached to.
|
|
2840
2169
|
*
|
|
2841
2170
|
* @example
|
|
2842
2171
|
* ```js
|
|
@@ -2852,29 +2181,7 @@ function requireInstance$2 () {
|
|
|
2852
2181
|
this.wire.sendAction('view-get-parent-layout', { ...this.identity }).catch(() => {
|
|
2853
2182
|
// don't expose
|
|
2854
2183
|
});
|
|
2855
|
-
|
|
2856
|
-
let layoutWindowIdentity = layoutWindow.identity;
|
|
2857
|
-
// TODO: CORE-1857 - when we tearout active layout or drag a view out of a window, the above identity includes the whole window info.
|
|
2858
|
-
if (layoutWindowIdentity.identity) {
|
|
2859
|
-
layoutWindowIdentity = layoutWindowIdentity.identity;
|
|
2860
|
-
}
|
|
2861
|
-
try {
|
|
2862
|
-
const providerChannelClient = await __classPrivateFieldGet(this, _View_providerChannelClient, "f").getValue();
|
|
2863
|
-
const client = await layout_entities_1.LayoutNode.newLayoutEntitiesClient(providerChannelClient, layout_constants_1.LAYOUT_CONTROLLER_ID, layoutWindowIdentity);
|
|
2864
|
-
const layoutIdentity = await client.getLayoutIdentityForViewOrThrow(this.identity);
|
|
2865
|
-
return this.fin.Platform.Layout.wrap(layoutIdentity);
|
|
2866
|
-
}
|
|
2867
|
-
catch (e) {
|
|
2868
|
-
const allowedErrors = [
|
|
2869
|
-
'No action registered at target for',
|
|
2870
|
-
'getLayoutIdentityForViewOrThrow is not a function'
|
|
2871
|
-
];
|
|
2872
|
-
if (!allowedErrors.some((m) => e.message.includes(m))) {
|
|
2873
|
-
throw e;
|
|
2874
|
-
}
|
|
2875
|
-
// fallback logic for missing endpoint
|
|
2876
|
-
return this.fin.Platform.Layout.wrap(layoutWindowIdentity);
|
|
2877
|
-
}
|
|
2184
|
+
return this.fin.Platform.Layout.getLayoutByViewIdentity(this.identity);
|
|
2878
2185
|
};
|
|
2879
2186
|
/**
|
|
2880
2187
|
* Gets the View's options.
|
|
@@ -2991,7 +2298,7 @@ function requireInstance$2 () {
|
|
|
2991
2298
|
});
|
|
2992
2299
|
try {
|
|
2993
2300
|
const layout = await this.getParentLayout();
|
|
2994
|
-
return layout.
|
|
2301
|
+
return layout.getStackByViewIdentity(this.identity);
|
|
2995
2302
|
}
|
|
2996
2303
|
catch (error) {
|
|
2997
2304
|
throw new transport_errors_1.RuntimeError({ reason: 'This view does not belong to a stack.', error });
|
|
@@ -8024,12 +7331,12 @@ class ChannelError extends Error {
|
|
|
8024
7331
|
}
|
|
8025
7332
|
channelError.ChannelError = ChannelError;
|
|
8026
7333
|
|
|
8027
|
-
var __classPrivateFieldGet$
|
|
7334
|
+
var __classPrivateFieldGet$d = (commonjsGlobal && commonjsGlobal.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8028
7335
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
8029
7336
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
8030
7337
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
8031
7338
|
};
|
|
8032
|
-
var __classPrivateFieldSet$
|
|
7339
|
+
var __classPrivateFieldSet$c = (commonjsGlobal && commonjsGlobal.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
8033
7340
|
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
8034
7341
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
8035
7342
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
@@ -8073,7 +7380,7 @@ class ChannelClient extends channel_1$1.ChannelBase {
|
|
|
8073
7380
|
static closeChannelByEndpointId(id) {
|
|
8074
7381
|
const channel = channelClientsByEndpointId.get(id);
|
|
8075
7382
|
if (channel) {
|
|
8076
|
-
__classPrivateFieldGet$
|
|
7383
|
+
__classPrivateFieldGet$d(channel, _ChannelClient_close, "f").call(channel);
|
|
8077
7384
|
}
|
|
8078
7385
|
}
|
|
8079
7386
|
/**
|
|
@@ -8084,7 +7391,7 @@ class ChannelClient extends channel_1$1.ChannelBase {
|
|
|
8084
7391
|
for (const channelClient of channelClientsByEndpointId.values()) {
|
|
8085
7392
|
if (channelClient.providerIdentity.channelId === eventPayload.channelId) {
|
|
8086
7393
|
channelClient.disconnectListener(eventPayload);
|
|
8087
|
-
__classPrivateFieldGet$
|
|
7394
|
+
__classPrivateFieldGet$d(channelClient, _ChannelClient_close, "f").call(channelClient);
|
|
8088
7395
|
}
|
|
8089
7396
|
}
|
|
8090
7397
|
}
|
|
@@ -8099,12 +7406,12 @@ class ChannelClient extends channel_1$1.ChannelBase {
|
|
|
8099
7406
|
this.processAction = (action, payload, senderIdentity) => super.processAction(action, payload, senderIdentity);
|
|
8100
7407
|
_ChannelClient_close.set(this, () => {
|
|
8101
7408
|
channelClientsByEndpointId.delete(this.endpointId);
|
|
8102
|
-
__classPrivateFieldGet$
|
|
7409
|
+
__classPrivateFieldGet$d(this, _ChannelClient_strategy, "f").close();
|
|
8103
7410
|
});
|
|
8104
|
-
__classPrivateFieldSet$
|
|
7411
|
+
__classPrivateFieldSet$c(this, _ChannelClient_protectedObj, new channel_1$1.ProtectedItems(routingInfo, close), "f");
|
|
8105
7412
|
this.disconnectListener = () => undefined;
|
|
8106
7413
|
this.endpointId = routingInfo.endpointId;
|
|
8107
|
-
__classPrivateFieldSet$
|
|
7414
|
+
__classPrivateFieldSet$c(this, _ChannelClient_strategy, strategy, "f");
|
|
8108
7415
|
channelClientsByEndpointId.set(this.endpointId, this);
|
|
8109
7416
|
strategy.receive(this.processAction);
|
|
8110
7417
|
}
|
|
@@ -8112,7 +7419,7 @@ class ChannelClient extends channel_1$1.ChannelBase {
|
|
|
8112
7419
|
* a read-only provider identity
|
|
8113
7420
|
*/
|
|
8114
7421
|
get providerIdentity() {
|
|
8115
|
-
const protectedObj = __classPrivateFieldGet$
|
|
7422
|
+
const protectedObj = __classPrivateFieldGet$d(this, _ChannelClient_protectedObj, "f");
|
|
8116
7423
|
return protectedObj.providerIdentity;
|
|
8117
7424
|
}
|
|
8118
7425
|
/**
|
|
@@ -8141,9 +7448,9 @@ class ChannelClient extends channel_1$1.ChannelBase {
|
|
|
8141
7448
|
* ```
|
|
8142
7449
|
*/
|
|
8143
7450
|
async dispatch(action, payload) {
|
|
8144
|
-
if (__classPrivateFieldGet$
|
|
7451
|
+
if (__classPrivateFieldGet$d(this, _ChannelClient_strategy, "f").isEndpointConnected(this.providerIdentity.channelId)) {
|
|
8145
7452
|
const callSites = transport_errors_1$3.RuntimeError.getCallSite();
|
|
8146
|
-
return __classPrivateFieldGet$
|
|
7453
|
+
return __classPrivateFieldGet$d(this, _ChannelClient_strategy, "f").send(this.providerIdentity.channelId, action, payload).catch((e) => {
|
|
8147
7454
|
throw new channel_error_1$1.ChannelError(e, action, payload, callSites);
|
|
8148
7455
|
});
|
|
8149
7456
|
}
|
|
@@ -8195,10 +7502,10 @@ class ChannelClient extends channel_1$1.ChannelBase {
|
|
|
8195
7502
|
*/
|
|
8196
7503
|
async disconnect() {
|
|
8197
7504
|
await this.sendDisconnectAction();
|
|
8198
|
-
__classPrivateFieldGet$
|
|
7505
|
+
__classPrivateFieldGet$d(this, _ChannelClient_close, "f").call(this);
|
|
8199
7506
|
}
|
|
8200
7507
|
async sendDisconnectAction() {
|
|
8201
|
-
const protectedObj = __classPrivateFieldGet$
|
|
7508
|
+
const protectedObj = __classPrivateFieldGet$d(this, _ChannelClient_protectedObj, "f");
|
|
8202
7509
|
await protectedObj.close();
|
|
8203
7510
|
}
|
|
8204
7511
|
/**
|
|
@@ -8231,13 +7538,13 @@ exhaustive.exhaustiveCheck = exhaustiveCheck;
|
|
|
8231
7538
|
|
|
8232
7539
|
var strategy$3 = {};
|
|
8233
7540
|
|
|
8234
|
-
var __classPrivateFieldSet$
|
|
7541
|
+
var __classPrivateFieldSet$b = (commonjsGlobal && commonjsGlobal.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
8235
7542
|
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
8236
7543
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
8237
7544
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
8238
7545
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
8239
7546
|
};
|
|
8240
|
-
var __classPrivateFieldGet$
|
|
7547
|
+
var __classPrivateFieldGet$c = (commonjsGlobal && commonjsGlobal.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8241
7548
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
8242
7549
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
8243
7550
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
@@ -8262,7 +7569,7 @@ class ClassicStrategy {
|
|
|
8262
7569
|
// connection problems occur
|
|
8263
7570
|
_ClassicStrategy_pendingMessagesByEndpointId.set(this, new Map());
|
|
8264
7571
|
this.send = async (endpointId, action, payload) => {
|
|
8265
|
-
const to = __classPrivateFieldGet$
|
|
7572
|
+
const to = __classPrivateFieldGet$c(this, _ClassicStrategy_endpointIdentityMap, "f").get(endpointId);
|
|
8266
7573
|
if (!to) {
|
|
8267
7574
|
throw new Error(`Could not locate routing info for endpoint ${endpointId}`);
|
|
8268
7575
|
}
|
|
@@ -8274,13 +7581,13 @@ class ClassicStrategy {
|
|
|
8274
7581
|
}
|
|
8275
7582
|
delete cleanId.isLocalEndpointId;
|
|
8276
7583
|
// grab the promise before awaiting it to save in our pending messages map
|
|
8277
|
-
const p = __classPrivateFieldGet$
|
|
7584
|
+
const p = __classPrivateFieldGet$c(this, _ClassicStrategy_wire, "f").sendAction('send-channel-message', {
|
|
8278
7585
|
...cleanId,
|
|
8279
7586
|
providerIdentity: this.providerIdentity,
|
|
8280
7587
|
action,
|
|
8281
7588
|
payload
|
|
8282
7589
|
});
|
|
8283
|
-
__classPrivateFieldGet$
|
|
7590
|
+
__classPrivateFieldGet$c(this, _ClassicStrategy_pendingMessagesByEndpointId, "f").get(endpointId)?.add(p);
|
|
8284
7591
|
const raw = await p
|
|
8285
7592
|
.catch((error) => {
|
|
8286
7593
|
if ('cause' in error) {
|
|
@@ -8290,16 +7597,16 @@ class ClassicStrategy {
|
|
|
8290
7597
|
})
|
|
8291
7598
|
.finally(() => {
|
|
8292
7599
|
// clean up the pending promise
|
|
8293
|
-
__classPrivateFieldGet$
|
|
7600
|
+
__classPrivateFieldGet$c(this, _ClassicStrategy_pendingMessagesByEndpointId, "f").get(endpointId)?.delete(p);
|
|
8294
7601
|
});
|
|
8295
7602
|
return raw.payload.data.result;
|
|
8296
7603
|
};
|
|
8297
7604
|
this.close = async () => {
|
|
8298
7605
|
this.messageReceiver.removeEndpoint(this.providerIdentity.channelId, this.endpointId);
|
|
8299
|
-
[...__classPrivateFieldGet$
|
|
8300
|
-
__classPrivateFieldSet$
|
|
7606
|
+
[...__classPrivateFieldGet$c(this, _ClassicStrategy_endpointIdentityMap, "f").keys()].forEach((id) => this.closeEndpoint(id));
|
|
7607
|
+
__classPrivateFieldSet$b(this, _ClassicStrategy_endpointIdentityMap, new Map(), "f");
|
|
8301
7608
|
};
|
|
8302
|
-
__classPrivateFieldSet$
|
|
7609
|
+
__classPrivateFieldSet$b(this, _ClassicStrategy_wire, wire, "f");
|
|
8303
7610
|
}
|
|
8304
7611
|
onEndpointDisconnect(endpointId, listener) {
|
|
8305
7612
|
// Never fires for 'classic'.
|
|
@@ -8308,20 +7615,20 @@ class ClassicStrategy {
|
|
|
8308
7615
|
this.messageReceiver.addEndpoint(listener, this.providerIdentity.channelId, this.endpointId);
|
|
8309
7616
|
}
|
|
8310
7617
|
async closeEndpoint(endpointId) {
|
|
8311
|
-
const id = __classPrivateFieldGet$
|
|
8312
|
-
__classPrivateFieldGet$
|
|
8313
|
-
const pendingSet = __classPrivateFieldGet$
|
|
7618
|
+
const id = __classPrivateFieldGet$c(this, _ClassicStrategy_endpointIdentityMap, "f").get(endpointId);
|
|
7619
|
+
__classPrivateFieldGet$c(this, _ClassicStrategy_endpointIdentityMap, "f").delete(endpointId);
|
|
7620
|
+
const pendingSet = __classPrivateFieldGet$c(this, _ClassicStrategy_pendingMessagesByEndpointId, "f").get(endpointId);
|
|
8314
7621
|
pendingSet?.forEach((p) => {
|
|
8315
7622
|
const errorMsg = `Channel connection with identity uuid: ${id?.uuid} / name: ${id?.name} / endpointId: ${endpointId} no longer connected.`;
|
|
8316
7623
|
p.cancel(new Error(errorMsg));
|
|
8317
7624
|
});
|
|
8318
7625
|
}
|
|
8319
7626
|
isEndpointConnected(endpointId) {
|
|
8320
|
-
return __classPrivateFieldGet$
|
|
7627
|
+
return __classPrivateFieldGet$c(this, _ClassicStrategy_endpointIdentityMap, "f").has(endpointId);
|
|
8321
7628
|
}
|
|
8322
7629
|
addEndpoint(endpointId, payload) {
|
|
8323
|
-
__classPrivateFieldGet$
|
|
8324
|
-
__classPrivateFieldGet$
|
|
7630
|
+
__classPrivateFieldGet$c(this, _ClassicStrategy_endpointIdentityMap, "f").set(endpointId, payload.endpointIdentity);
|
|
7631
|
+
__classPrivateFieldGet$c(this, _ClassicStrategy_pendingMessagesByEndpointId, "f").set(endpointId, new Set());
|
|
8325
7632
|
}
|
|
8326
7633
|
isValidEndpointPayload(payload) {
|
|
8327
7634
|
return (typeof payload?.endpointIdentity?.endpointId === 'string' ||
|
|
@@ -8356,12 +7663,12 @@ function errorToPOJO(error) {
|
|
|
8356
7663
|
}
|
|
8357
7664
|
errors.errorToPOJO = errorToPOJO;
|
|
8358
7665
|
|
|
8359
|
-
var __classPrivateFieldGet$
|
|
7666
|
+
var __classPrivateFieldGet$b = (commonjsGlobal && commonjsGlobal.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8360
7667
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
8361
7668
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
8362
7669
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
8363
7670
|
};
|
|
8364
|
-
var __classPrivateFieldSet$
|
|
7671
|
+
var __classPrivateFieldSet$a = (commonjsGlobal && commonjsGlobal.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
8365
7672
|
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
8366
7673
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
8367
7674
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
@@ -8396,8 +7703,8 @@ class RTCEndpoint {
|
|
|
8396
7703
|
if (this.rtc.rtcClient.connectionState !== 'connected') {
|
|
8397
7704
|
this.rtc.rtcClient.removeEventListener('connectionstatechange', this.connectionStateChangeHandler);
|
|
8398
7705
|
this.close();
|
|
8399
|
-
if (__classPrivateFieldGet$
|
|
8400
|
-
__classPrivateFieldGet$
|
|
7706
|
+
if (__classPrivateFieldGet$b(this, _RTCEndpoint_disconnectListener, "f")) {
|
|
7707
|
+
__classPrivateFieldGet$b(this, _RTCEndpoint_disconnectListener, "f").call(this);
|
|
8401
7708
|
}
|
|
8402
7709
|
}
|
|
8403
7710
|
};
|
|
@@ -8445,9 +7752,9 @@ class RTCEndpoint {
|
|
|
8445
7752
|
data = new TextDecoder().decode(e.data);
|
|
8446
7753
|
}
|
|
8447
7754
|
const { messageId, action, payload } = JSON.parse(data);
|
|
8448
|
-
if (__classPrivateFieldGet$
|
|
7755
|
+
if (__classPrivateFieldGet$b(this, _RTCEndpoint_processAction, "f")) {
|
|
8449
7756
|
try {
|
|
8450
|
-
const res = await __classPrivateFieldGet$
|
|
7757
|
+
const res = await __classPrivateFieldGet$b(this, _RTCEndpoint_processAction, "f").call(this, action, payload, endpointIdentity);
|
|
8451
7758
|
this.rtc.channels.response.send(JSON.stringify({
|
|
8452
7759
|
messageId,
|
|
8453
7760
|
payload: res,
|
|
@@ -8481,25 +7788,25 @@ class RTCEndpoint {
|
|
|
8481
7788
|
datachannel.onclose = (e) => {
|
|
8482
7789
|
[...this.responseMap.values()].forEach((promise) => promise.reject(new Error('RTCDataChannel closed unexpectedly, this is most commonly caused by message size. Note: RTC Channels have a message size limit of ~255kB.')));
|
|
8483
7790
|
this.close();
|
|
8484
|
-
if (__classPrivateFieldGet$
|
|
8485
|
-
__classPrivateFieldGet$
|
|
7791
|
+
if (__classPrivateFieldGet$b(this, _RTCEndpoint_disconnectListener, "f")) {
|
|
7792
|
+
__classPrivateFieldGet$b(this, _RTCEndpoint_disconnectListener, "f").call(this);
|
|
8486
7793
|
}
|
|
8487
7794
|
};
|
|
8488
7795
|
});
|
|
8489
7796
|
}
|
|
8490
7797
|
onDisconnect(listener) {
|
|
8491
|
-
if (!__classPrivateFieldGet$
|
|
8492
|
-
__classPrivateFieldSet$
|
|
7798
|
+
if (!__classPrivateFieldGet$b(this, _RTCEndpoint_disconnectListener, "f")) {
|
|
7799
|
+
__classPrivateFieldSet$a(this, _RTCEndpoint_disconnectListener, listener, "f");
|
|
8493
7800
|
}
|
|
8494
7801
|
else {
|
|
8495
7802
|
throw new Error('RTCEndpoint disconnectListener cannot be set twice.');
|
|
8496
7803
|
}
|
|
8497
7804
|
}
|
|
8498
7805
|
receive(listener) {
|
|
8499
|
-
if (__classPrivateFieldGet$
|
|
7806
|
+
if (__classPrivateFieldGet$b(this, _RTCEndpoint_processAction, "f")) {
|
|
8500
7807
|
throw new Error('You have already set a listener for this RTC Endpoint.');
|
|
8501
7808
|
}
|
|
8502
|
-
__classPrivateFieldSet$
|
|
7809
|
+
__classPrivateFieldSet$a(this, _RTCEndpoint_processAction, listener, "f");
|
|
8503
7810
|
}
|
|
8504
7811
|
get connected() {
|
|
8505
7812
|
return this.rtc.rtcClient.connectionState === 'connected';
|
|
@@ -8510,12 +7817,12 @@ _RTCEndpoint_processAction = new WeakMap(), _RTCEndpoint_disconnectListener = ne
|
|
|
8510
7817
|
|
|
8511
7818
|
var strategy$1 = {};
|
|
8512
7819
|
|
|
8513
|
-
var __classPrivateFieldGet$
|
|
7820
|
+
var __classPrivateFieldGet$a = (commonjsGlobal && commonjsGlobal.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8514
7821
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
8515
7822
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
8516
7823
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
8517
7824
|
};
|
|
8518
|
-
var __classPrivateFieldSet$
|
|
7825
|
+
var __classPrivateFieldSet$9 = (commonjsGlobal && commonjsGlobal.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
8519
7826
|
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
8520
7827
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
8521
7828
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
@@ -8536,11 +7843,11 @@ class EndpointStrategy {
|
|
|
8536
7843
|
return this.getEndpointById(endpointId).send(action, payload);
|
|
8537
7844
|
};
|
|
8538
7845
|
this.close = async () => {
|
|
8539
|
-
if (__classPrivateFieldGet$
|
|
8540
|
-
__classPrivateFieldGet$
|
|
8541
|
-
__classPrivateFieldSet$
|
|
7846
|
+
if (__classPrivateFieldGet$a(this, _EndpointStrategy_connected, "f")) {
|
|
7847
|
+
__classPrivateFieldGet$a(this, _EndpointStrategy_endpointMap, "f").forEach((endpoint) => endpoint.close());
|
|
7848
|
+
__classPrivateFieldSet$9(this, _EndpointStrategy_endpointMap, new Map(), "f");
|
|
8542
7849
|
}
|
|
8543
|
-
__classPrivateFieldSet$
|
|
7850
|
+
__classPrivateFieldSet$9(this, _EndpointStrategy_connected, false, "f");
|
|
8544
7851
|
};
|
|
8545
7852
|
this.isValidEndpointPayload = validateEndpoint;
|
|
8546
7853
|
}
|
|
@@ -8548,39 +7855,39 @@ class EndpointStrategy {
|
|
|
8548
7855
|
this.getEndpointById(endpointId).onDisconnect(listener);
|
|
8549
7856
|
}
|
|
8550
7857
|
receive(listener) {
|
|
8551
|
-
if (__classPrivateFieldGet$
|
|
7858
|
+
if (__classPrivateFieldGet$a(this, _EndpointStrategy_processAction, "f")) {
|
|
8552
7859
|
throw new Error(`You have already set a listener for this ${this.StrategyName} Strategy`);
|
|
8553
7860
|
}
|
|
8554
|
-
__classPrivateFieldSet$
|
|
7861
|
+
__classPrivateFieldSet$9(this, _EndpointStrategy_processAction, listener, "f");
|
|
8555
7862
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
8556
|
-
__classPrivateFieldGet$
|
|
7863
|
+
__classPrivateFieldGet$a(this, _EndpointStrategy_endpointMap, "f").forEach((endpoint) => endpoint.receive(__classPrivateFieldGet$a(this, _EndpointStrategy_processAction, "f")));
|
|
8557
7864
|
}
|
|
8558
7865
|
getEndpointById(endpointId) {
|
|
8559
|
-
const endpoint = __classPrivateFieldGet$
|
|
7866
|
+
const endpoint = __classPrivateFieldGet$a(this, _EndpointStrategy_endpointMap, "f").get(endpointId);
|
|
8560
7867
|
if (!endpoint) {
|
|
8561
7868
|
throw new Error(`Client with endpoint id ${endpointId} is not connected`);
|
|
8562
7869
|
}
|
|
8563
7870
|
return endpoint;
|
|
8564
7871
|
}
|
|
8565
7872
|
get connected() {
|
|
8566
|
-
return __classPrivateFieldGet$
|
|
7873
|
+
return __classPrivateFieldGet$a(this, _EndpointStrategy_connected, "f");
|
|
8567
7874
|
}
|
|
8568
7875
|
isEndpointConnected(endpointId) {
|
|
8569
|
-
return __classPrivateFieldGet$
|
|
7876
|
+
return __classPrivateFieldGet$a(this, _EndpointStrategy_endpointMap, "f").has(endpointId);
|
|
8570
7877
|
}
|
|
8571
7878
|
addEndpoint(endpointId, payload) {
|
|
8572
|
-
if (!__classPrivateFieldGet$
|
|
7879
|
+
if (!__classPrivateFieldGet$a(this, _EndpointStrategy_connected, "f")) {
|
|
8573
7880
|
console.warn(`Adding endpoint to disconnected ${this.StrategyName} Strategy`);
|
|
8574
7881
|
return;
|
|
8575
7882
|
}
|
|
8576
7883
|
const clientStrat = new this.EndpointType(payload);
|
|
8577
|
-
if (__classPrivateFieldGet$
|
|
8578
|
-
clientStrat.receive(__classPrivateFieldGet$
|
|
7884
|
+
if (__classPrivateFieldGet$a(this, _EndpointStrategy_processAction, "f")) {
|
|
7885
|
+
clientStrat.receive(__classPrivateFieldGet$a(this, _EndpointStrategy_processAction, "f"));
|
|
8579
7886
|
}
|
|
8580
|
-
__classPrivateFieldGet$
|
|
7887
|
+
__classPrivateFieldGet$a(this, _EndpointStrategy_endpointMap, "f").set(endpointId, clientStrat);
|
|
8581
7888
|
}
|
|
8582
7889
|
async closeEndpoint(endpointId) {
|
|
8583
|
-
__classPrivateFieldGet$
|
|
7890
|
+
__classPrivateFieldGet$a(this, _EndpointStrategy_endpointMap, "f").delete(endpointId);
|
|
8584
7891
|
}
|
|
8585
7892
|
}
|
|
8586
7893
|
strategy$1.EndpointStrategy = EndpointStrategy;
|
|
@@ -8762,12 +8069,12 @@ function runtimeUuidMeetsMinimumRuntimeVersion(runtimeUuid, minVersion) {
|
|
|
8762
8069
|
}
|
|
8763
8070
|
runtimeVersioning.runtimeUuidMeetsMinimumRuntimeVersion = runtimeUuidMeetsMinimumRuntimeVersion;
|
|
8764
8071
|
|
|
8765
|
-
var __classPrivateFieldGet$
|
|
8072
|
+
var __classPrivateFieldGet$9 = (commonjsGlobal && commonjsGlobal.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8766
8073
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
8767
8074
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
8768
8075
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
8769
8076
|
};
|
|
8770
|
-
var __classPrivateFieldSet$
|
|
8077
|
+
var __classPrivateFieldSet$8 = (commonjsGlobal && commonjsGlobal.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
8771
8078
|
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
8772
8079
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
8773
8080
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
@@ -8811,18 +8118,18 @@ class ChannelProvider extends channel_1.ChannelBase {
|
|
|
8811
8118
|
* a read-only array containing all the identities of connecting clients.
|
|
8812
8119
|
*/
|
|
8813
8120
|
get connections() {
|
|
8814
|
-
return [...__classPrivateFieldGet$
|
|
8121
|
+
return [...__classPrivateFieldGet$9(this, _ChannelProvider_connections, "f")];
|
|
8815
8122
|
}
|
|
8816
8123
|
static handleClientDisconnection(channel, payload) {
|
|
8817
8124
|
const removeById = channel.connections.find((identity) => identity.endpointId === payload.endpointId);
|
|
8818
8125
|
if (removeById) {
|
|
8819
|
-
__classPrivateFieldGet$
|
|
8126
|
+
__classPrivateFieldGet$9(channel, _ChannelProvider_removeEndpoint, "f").call(channel, removeById);
|
|
8820
8127
|
}
|
|
8821
8128
|
else {
|
|
8822
8129
|
const multipleRemoves = channel.connections.filter((identity) => {
|
|
8823
8130
|
return identity.uuid === payload.uuid && identity.name === payload.name;
|
|
8824
8131
|
});
|
|
8825
|
-
multipleRemoves.forEach(__classPrivateFieldGet$
|
|
8132
|
+
multipleRemoves.forEach(__classPrivateFieldGet$9(channel, _ChannelProvider_removeEndpoint, "f"));
|
|
8826
8133
|
}
|
|
8827
8134
|
channel.disconnectListener(payload);
|
|
8828
8135
|
}
|
|
@@ -8839,8 +8146,8 @@ class ChannelProvider extends channel_1.ChannelBase {
|
|
|
8839
8146
|
_ChannelProvider_strategy.set(this, void 0);
|
|
8840
8147
|
_ChannelProvider_removeEndpoint.set(this, (identity) => {
|
|
8841
8148
|
const remainingConnections = this.connections.filter((clientIdentity) => clientIdentity.endpointId !== identity.endpointId);
|
|
8842
|
-
__classPrivateFieldGet$
|
|
8843
|
-
__classPrivateFieldSet$
|
|
8149
|
+
__classPrivateFieldGet$9(this, _ChannelProvider_strategy, "f").closeEndpoint(identity.endpointId);
|
|
8150
|
+
__classPrivateFieldSet$8(this, _ChannelProvider_connections, remainingConnections, "f");
|
|
8844
8151
|
});
|
|
8845
8152
|
// Must be bound.
|
|
8846
8153
|
this.processAction = async (action, payload, senderIdentity) => {
|
|
@@ -8854,17 +8161,17 @@ class ChannelProvider extends channel_1.ChannelBase {
|
|
|
8854
8161
|
return super.processAction(action, payload, senderIdentity);
|
|
8855
8162
|
};
|
|
8856
8163
|
_ChannelProvider_close.set(this, () => {
|
|
8857
|
-
__classPrivateFieldGet$
|
|
8164
|
+
__classPrivateFieldGet$9(this, _ChannelProvider_strategy, "f").close();
|
|
8858
8165
|
const remove = ChannelProvider.removalMap.get(this);
|
|
8859
8166
|
if (remove) {
|
|
8860
8167
|
remove();
|
|
8861
8168
|
}
|
|
8862
8169
|
});
|
|
8863
|
-
__classPrivateFieldSet$
|
|
8170
|
+
__classPrivateFieldSet$8(this, _ChannelProvider_protectedObj, new channel_1.ProtectedItems(providerIdentity, close), "f");
|
|
8864
8171
|
this.connectListener = () => undefined;
|
|
8865
8172
|
this.disconnectListener = () => undefined;
|
|
8866
|
-
__classPrivateFieldSet$
|
|
8867
|
-
__classPrivateFieldSet$
|
|
8173
|
+
__classPrivateFieldSet$8(this, _ChannelProvider_connections, [], "f");
|
|
8174
|
+
__classPrivateFieldSet$8(this, _ChannelProvider_strategy, strategy, "f");
|
|
8868
8175
|
strategy.receive(this.processAction);
|
|
8869
8176
|
}
|
|
8870
8177
|
/**
|
|
@@ -8895,16 +8202,16 @@ class ChannelProvider extends channel_1.ChannelBase {
|
|
|
8895
8202
|
*/
|
|
8896
8203
|
dispatch(to, action, payload) {
|
|
8897
8204
|
const endpointId = to.endpointId ?? this.getEndpointIdForOpenFinId(to, action);
|
|
8898
|
-
if (endpointId && __classPrivateFieldGet$
|
|
8205
|
+
if (endpointId && __classPrivateFieldGet$9(this, _ChannelProvider_strategy, "f").isEndpointConnected(endpointId)) {
|
|
8899
8206
|
const callSites = transport_errors_1$2.RuntimeError.getCallSite();
|
|
8900
|
-
return __classPrivateFieldGet$
|
|
8207
|
+
return __classPrivateFieldGet$9(this, _ChannelProvider_strategy, "f").send(endpointId, action, payload).catch((e) => {
|
|
8901
8208
|
throw new channel_error_1.ChannelError(e, action, payload, callSites);
|
|
8902
8209
|
});
|
|
8903
8210
|
}
|
|
8904
8211
|
return Promise.reject(new Error(`Client connection with identity uuid: ${to.uuid} / name: ${to.name} / endpointId: ${endpointId} no longer connected.`));
|
|
8905
8212
|
}
|
|
8906
8213
|
async processConnection(senderId, payload) {
|
|
8907
|
-
__classPrivateFieldGet$
|
|
8214
|
+
__classPrivateFieldGet$9(this, _ChannelProvider_connections, "f").push(senderId);
|
|
8908
8215
|
return this.connectListener(senderId, payload);
|
|
8909
8216
|
}
|
|
8910
8217
|
/**
|
|
@@ -8927,7 +8234,7 @@ class ChannelProvider extends channel_1.ChannelBase {
|
|
|
8927
8234
|
* ```
|
|
8928
8235
|
*/
|
|
8929
8236
|
publish(action, payload) {
|
|
8930
|
-
return this.connections.map((to) => __classPrivateFieldGet$
|
|
8237
|
+
return this.connections.map((to) => __classPrivateFieldGet$9(this, _ChannelProvider_strategy, "f").send(to.endpointId, action, payload));
|
|
8931
8238
|
}
|
|
8932
8239
|
/**
|
|
8933
8240
|
* Register a listener that is called on every new client connection.
|
|
@@ -9001,11 +8308,11 @@ class ChannelProvider extends channel_1.ChannelBase {
|
|
|
9001
8308
|
* ```
|
|
9002
8309
|
*/
|
|
9003
8310
|
async destroy() {
|
|
9004
|
-
const protectedObj = __classPrivateFieldGet$
|
|
8311
|
+
const protectedObj = __classPrivateFieldGet$9(this, _ChannelProvider_protectedObj, "f");
|
|
9005
8312
|
protectedObj.providerIdentity;
|
|
9006
|
-
__classPrivateFieldSet$
|
|
8313
|
+
__classPrivateFieldSet$8(this, _ChannelProvider_connections, [], "f");
|
|
9007
8314
|
await protectedObj.close();
|
|
9008
|
-
__classPrivateFieldGet$
|
|
8315
|
+
__classPrivateFieldGet$9(this, _ChannelProvider_close, "f").call(this);
|
|
9009
8316
|
}
|
|
9010
8317
|
/**
|
|
9011
8318
|
* Returns an array with info on every Client connected to the Provider
|
|
@@ -9075,7 +8382,7 @@ class ChannelProvider extends channel_1.ChannelBase {
|
|
|
9075
8382
|
getEndpointIdForOpenFinId(clientIdentity, action) {
|
|
9076
8383
|
const matchingConnections = this.connections.filter((c) => c.name === clientIdentity.name && c.uuid === clientIdentity.uuid);
|
|
9077
8384
|
if (matchingConnections.length >= 2) {
|
|
9078
|
-
const protectedObj = __classPrivateFieldGet$
|
|
8385
|
+
const protectedObj = __classPrivateFieldGet$9(this, _ChannelProvider_protectedObj, "f");
|
|
9079
8386
|
const { uuid, name } = clientIdentity;
|
|
9080
8387
|
const providerUuid = protectedObj?.providerIdentity.uuid;
|
|
9081
8388
|
const providerName = protectedObj?.providerIdentity.name;
|
|
@@ -9287,13 +8594,13 @@ class CombinedStrategy {
|
|
|
9287
8594
|
}
|
|
9288
8595
|
strategy.default = CombinedStrategy;
|
|
9289
8596
|
|
|
9290
|
-
var __classPrivateFieldSet$
|
|
8597
|
+
var __classPrivateFieldSet$7 = (commonjsGlobal && commonjsGlobal.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
9291
8598
|
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
9292
8599
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
9293
8600
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
9294
8601
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
9295
8602
|
};
|
|
9296
|
-
var __classPrivateFieldGet$
|
|
8603
|
+
var __classPrivateFieldGet$8 = (commonjsGlobal && commonjsGlobal.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9297
8604
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9298
8605
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
9299
8606
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
@@ -9342,8 +8649,8 @@ class ConnectionManager extends base_1$f.Base {
|
|
|
9342
8649
|
};
|
|
9343
8650
|
this.providerMap = new Map();
|
|
9344
8651
|
this.protocolManager = new protocol_manager_1.ProtocolManager(this.wire.environment.type === 'node' ? ['classic'] : ['rtc', 'classic']);
|
|
9345
|
-
__classPrivateFieldSet$
|
|
9346
|
-
__classPrivateFieldSet$
|
|
8652
|
+
__classPrivateFieldSet$7(this, _ConnectionManager_messageReceiver, new message_receiver_1.MessageReceiver(wire), "f");
|
|
8653
|
+
__classPrivateFieldSet$7(this, _ConnectionManager_rtcConnectionManager, new ice_manager_1.RTCICEManager(wire), "f");
|
|
9347
8654
|
wire.registerMessageHandler(this.onmessage.bind(this));
|
|
9348
8655
|
}
|
|
9349
8656
|
createProvider(options, providerIdentity) {
|
|
@@ -9354,7 +8661,7 @@ class ConnectionManager extends base_1$f.Base {
|
|
|
9354
8661
|
case 'rtc':
|
|
9355
8662
|
return new strategy_2.RTCStrategy();
|
|
9356
8663
|
case 'classic':
|
|
9357
|
-
return new strategy_1.ClassicStrategy(this.wire, __classPrivateFieldGet$
|
|
8664
|
+
return new strategy_1.ClassicStrategy(this.wire, __classPrivateFieldGet$8(this, _ConnectionManager_messageReceiver, "f"),
|
|
9358
8665
|
// Providers do not have an endpointId, use channelId as endpointId in the strategy.
|
|
9359
8666
|
providerIdentity.channelId, providerIdentity);
|
|
9360
8667
|
default:
|
|
@@ -9390,7 +8697,7 @@ class ConnectionManager extends base_1$f.Base {
|
|
|
9390
8697
|
const supportedProtocols = await Promise.all(protocols.map(async (type) => {
|
|
9391
8698
|
switch (type) {
|
|
9392
8699
|
case 'rtc': {
|
|
9393
|
-
const { rtcClient, channels, offer, rtcConnectionId, channelsOpened } = await __classPrivateFieldGet$
|
|
8700
|
+
const { rtcClient, channels, offer, rtcConnectionId, channelsOpened } = await __classPrivateFieldGet$8(this, _ConnectionManager_rtcConnectionManager, "f").startClientOffer();
|
|
9394
8701
|
rtcPacket = { rtcClient, channels, channelsOpened };
|
|
9395
8702
|
return {
|
|
9396
8703
|
type: 'rtc',
|
|
@@ -9417,18 +8724,18 @@ class ConnectionManager extends base_1$f.Base {
|
|
|
9417
8724
|
routingInfo.endpointId = this.wire.environment.getNextMessageId();
|
|
9418
8725
|
// For New Clients connecting to Old Providers. To prevent multi-dispatching and publishing, we delete previously-connected
|
|
9419
8726
|
// clients that are in the same context as the newly-connected client.
|
|
9420
|
-
__classPrivateFieldGet$
|
|
8727
|
+
__classPrivateFieldGet$8(this, _ConnectionManager_messageReceiver, "f").checkForPreviousClientConnection(routingInfo.channelId);
|
|
9421
8728
|
}
|
|
9422
8729
|
const answer = routingInfo.answer ?? {
|
|
9423
8730
|
supportedProtocols: [{ type: 'classic', version: 1 }]
|
|
9424
8731
|
};
|
|
9425
8732
|
const createStrategyFromAnswer = async (protocol) => {
|
|
9426
8733
|
if (protocol.type === 'rtc' && rtcPacket) {
|
|
9427
|
-
await __classPrivateFieldGet$
|
|
8734
|
+
await __classPrivateFieldGet$8(this, _ConnectionManager_rtcConnectionManager, "f").finishClientOffer(rtcPacket.rtcClient, protocol.payload.answer, rtcPacket.channelsOpened);
|
|
9428
8735
|
return new strategy_2.RTCStrategy();
|
|
9429
8736
|
}
|
|
9430
8737
|
if (protocol.type === 'classic') {
|
|
9431
|
-
return new strategy_1.ClassicStrategy(this.wire, __classPrivateFieldGet$
|
|
8738
|
+
return new strategy_1.ClassicStrategy(this.wire, __classPrivateFieldGet$8(this, _ConnectionManager_messageReceiver, "f"), routingInfo.endpointId, routingInfo);
|
|
9432
8739
|
}
|
|
9433
8740
|
return null;
|
|
9434
8741
|
};
|
|
@@ -9496,7 +8803,7 @@ class ConnectionManager extends base_1$f.Base {
|
|
|
9496
8803
|
clientAnswer = await overlappingProtocols.reduce(async (accumP, protocolToUse) => {
|
|
9497
8804
|
const answer = await accumP;
|
|
9498
8805
|
if (protocolToUse.type === 'rtc') {
|
|
9499
|
-
const { answer: rtcAnswer, rtcClient, channels } = await __classPrivateFieldGet$
|
|
8806
|
+
const { answer: rtcAnswer, rtcClient, channels } = await __classPrivateFieldGet$8(this, _ConnectionManager_rtcConnectionManager, "f").createProviderAnswer(protocolToUse.payload.rtcConnectionId, protocolToUse.payload.offer);
|
|
9500
8807
|
answer.supportedProtocols.push({
|
|
9501
8808
|
type: 'rtc',
|
|
9502
8809
|
version: strategy_2.RTCInfo.version,
|
|
@@ -9544,13 +8851,13 @@ _ConnectionManager_messageReceiver = new WeakMap(), _ConnectionManager_rtcConnec
|
|
|
9544
8851
|
*
|
|
9545
8852
|
* @packageDocumentation
|
|
9546
8853
|
*/
|
|
9547
|
-
var __classPrivateFieldSet$
|
|
8854
|
+
var __classPrivateFieldSet$6 = (commonjsGlobal && commonjsGlobal.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
9548
8855
|
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
9549
8856
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
9550
8857
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
9551
8858
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
9552
8859
|
};
|
|
9553
|
-
var __classPrivateFieldGet$
|
|
8860
|
+
var __classPrivateFieldGet$7 = (commonjsGlobal && commonjsGlobal.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9554
8861
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9555
8862
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
9556
8863
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
@@ -9607,11 +8914,11 @@ class Channel extends base_1$e.EmitterBase {
|
|
|
9607
8914
|
client_1.ChannelClient.handleProviderDisconnect(eventPayload);
|
|
9608
8915
|
}),
|
|
9609
8916
|
this.on('connected', (...args) => {
|
|
9610
|
-
__classPrivateFieldGet$
|
|
8917
|
+
__classPrivateFieldGet$7(this, _Channel_internalEmitter, "f").emit('connected', ...args);
|
|
9611
8918
|
})
|
|
9612
8919
|
]).catch(() => new Error('error setting up channel connection listeners'));
|
|
9613
8920
|
}));
|
|
9614
|
-
__classPrivateFieldSet$
|
|
8921
|
+
__classPrivateFieldSet$6(this, _Channel_connectionManager, new connection_manager_1.ConnectionManager(wire), "f");
|
|
9615
8922
|
}
|
|
9616
8923
|
/**
|
|
9617
8924
|
*
|
|
@@ -9686,7 +8993,7 @@ class Channel extends base_1$e.EmitterBase {
|
|
|
9686
8993
|
resolve(true);
|
|
9687
8994
|
}
|
|
9688
8995
|
};
|
|
9689
|
-
__classPrivateFieldGet$
|
|
8996
|
+
__classPrivateFieldGet$7(this, _Channel_internalEmitter, "f").on('connected', connectedListener);
|
|
9690
8997
|
});
|
|
9691
8998
|
try {
|
|
9692
8999
|
if (retryInfo.count > 0) {
|
|
@@ -9718,7 +9025,7 @@ class Channel extends base_1$e.EmitterBase {
|
|
|
9718
9025
|
finally {
|
|
9719
9026
|
retryInfo.count += 1;
|
|
9720
9027
|
// in case of other errors, remove our listener
|
|
9721
|
-
__classPrivateFieldGet$
|
|
9028
|
+
__classPrivateFieldGet$7(this, _Channel_internalEmitter, "f").removeListener('connected', connectedListener);
|
|
9722
9029
|
}
|
|
9723
9030
|
} while (shouldWait); // If we're waiting we retry the above loop
|
|
9724
9031
|
// Should wait was false, no channel was found.
|
|
@@ -9777,12 +9084,12 @@ class Channel extends base_1$e.EmitterBase {
|
|
|
9777
9084
|
async connect(channelName, options = {}) {
|
|
9778
9085
|
// Make sure we don't connect before listeners are set up
|
|
9779
9086
|
// This also errors if we're not in OpenFin, ensuring we don't run unnecessary code
|
|
9780
|
-
await __classPrivateFieldGet$
|
|
9087
|
+
await __classPrivateFieldGet$7(this, _Channel_readyToConnect, "f").getValue();
|
|
9781
9088
|
if (!channelName || typeof channelName !== 'string') {
|
|
9782
9089
|
throw new Error('Please provide a channelName string to connect to a channel.');
|
|
9783
9090
|
}
|
|
9784
9091
|
const opts = { wait: true, ...this.wire.environment.getDefaultChannelOptions().connect, ...options };
|
|
9785
|
-
const { offer, rtc: rtcPacket } = await __classPrivateFieldGet$
|
|
9092
|
+
const { offer, rtc: rtcPacket } = await __classPrivateFieldGet$7(this, _Channel_connectionManager, "f").createClientOffer(opts);
|
|
9786
9093
|
let connectionUrl;
|
|
9787
9094
|
if (this.fin.me.isFrame || this.fin.me.isView || this.fin.me.isWindow) {
|
|
9788
9095
|
connectionUrl = (await this.fin.me.getInfo()).url;
|
|
@@ -9794,7 +9101,7 @@ class Channel extends base_1$e.EmitterBase {
|
|
|
9794
9101
|
connectionUrl
|
|
9795
9102
|
};
|
|
9796
9103
|
const routingInfo = await this.safeConnect(channelName, opts.wait, connectPayload);
|
|
9797
|
-
const strategy = await __classPrivateFieldGet$
|
|
9104
|
+
const strategy = await __classPrivateFieldGet$7(this, _Channel_connectionManager, "f").createClientStrategy(rtcPacket, routingInfo);
|
|
9798
9105
|
const channel = new client_1.ChannelClient(routingInfo, () => client_1.ChannelClient.wireClose(this.wire, routingInfo, routingInfo.endpointId), strategy);
|
|
9799
9106
|
// It is the client's responsibility to handle endpoint disconnection to the provider.
|
|
9800
9107
|
// If the endpoint dies, the client will force a disconnection through the core.
|
|
@@ -9863,7 +9170,7 @@ class Channel extends base_1$e.EmitterBase {
|
|
|
9863
9170
|
throw new Error('Please provide a channelName to create a channel');
|
|
9864
9171
|
}
|
|
9865
9172
|
const { payload: { data: providerIdentity } } = await this.wire.sendAction('create-channel', { channelName });
|
|
9866
|
-
const channel = __classPrivateFieldGet$
|
|
9173
|
+
const channel = __classPrivateFieldGet$7(this, _Channel_connectionManager, "f").createProvider(options, providerIdentity);
|
|
9867
9174
|
// TODO: fix typing (internal)
|
|
9868
9175
|
// @ts-expect-error
|
|
9869
9176
|
this.on('client-disconnected', (eventPayload) => {
|
|
@@ -10754,19 +10061,23 @@ var Factory$3 = {};
|
|
|
10754
10061
|
|
|
10755
10062
|
var Instance$2 = {};
|
|
10756
10063
|
|
|
10757
|
-
var
|
|
10064
|
+
var __classPrivateFieldSet$5 = (commonjsGlobal && commonjsGlobal.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
10065
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
10066
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
10067
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
10068
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
10069
|
+
};
|
|
10070
|
+
var __classPrivateFieldGet$6 = (commonjsGlobal && commonjsGlobal.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
10758
10071
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
10759
10072
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10760
10073
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
10761
10074
|
};
|
|
10762
|
-
var _Platform_connectToProvider;
|
|
10075
|
+
var _Platform_channelName, _Platform_connectToProvider;
|
|
10763
10076
|
Object.defineProperty(Instance$2, "__esModule", { value: true });
|
|
10764
10077
|
Instance$2.Platform = void 0;
|
|
10765
10078
|
/* eslint-disable import/prefer-default-export, no-undef */
|
|
10766
10079
|
const base_1$6 = base;
|
|
10767
10080
|
const validate_1$1 = validate;
|
|
10768
|
-
// Reuse clients to avoid overwriting already-registered client in provider
|
|
10769
|
-
const clientMap = new Map();
|
|
10770
10081
|
/** Manages the life cycle of windows and views in the application.
|
|
10771
10082
|
*
|
|
10772
10083
|
* Enables taking snapshots of itself and applying them to restore a previous configuration
|
|
@@ -10777,34 +10088,40 @@ class Platform extends base_1$6.EmitterBase {
|
|
|
10777
10088
|
* @internal
|
|
10778
10089
|
*/
|
|
10779
10090
|
// eslint-disable-next-line no-shadow
|
|
10780
|
-
constructor(identity,
|
|
10091
|
+
constructor(wire, identity, channelName = `custom-frame-${identity.uuid}`) {
|
|
10781
10092
|
// we piggyback off of application event emitter because from the core's perspective platform is just an app.
|
|
10782
|
-
super(
|
|
10783
|
-
|
|
10093
|
+
super(wire, 'application', identity.uuid);
|
|
10094
|
+
/**
|
|
10095
|
+
* @internal
|
|
10096
|
+
*/
|
|
10097
|
+
_Platform_channelName.set(this, void 0);
|
|
10098
|
+
this.getClient = (identity = this.identity) => {
|
|
10099
|
+
if (identity.uuid !== this.identity.uuid) {
|
|
10100
|
+
// I have no idea why we allow passing in a different identity, but we do.
|
|
10101
|
+
// Doing this above the analytics call so we only register one call.
|
|
10102
|
+
return new Platform(this.wire, identity).getClient();
|
|
10103
|
+
}
|
|
10784
10104
|
this.wire.sendAction('platform-get-client', this.identity).catch((e) => {
|
|
10785
10105
|
// don't expose
|
|
10786
10106
|
});
|
|
10787
|
-
|
|
10788
|
-
|
|
10789
|
-
|
|
10790
|
-
const clientPromise = __classPrivateFieldGet$5(this, _Platform_connectToProvider, "f").call(this, uuid);
|
|
10791
|
-
clientMap.set(uuid, clientPromise);
|
|
10107
|
+
if (!Platform.clientMap.has(__classPrivateFieldGet$6(this, _Platform_channelName, "f"))) {
|
|
10108
|
+
const clientPromise = __classPrivateFieldGet$6(this, _Platform_connectToProvider, "f").call(this);
|
|
10109
|
+
Platform.clientMap.set(__classPrivateFieldGet$6(this, _Platform_channelName, "f"), clientPromise);
|
|
10792
10110
|
}
|
|
10793
10111
|
// we set it above
|
|
10794
10112
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
10795
|
-
return clientMap.get(
|
|
10113
|
+
return Platform.clientMap.get(__classPrivateFieldGet$6(this, _Platform_channelName, "f"));
|
|
10796
10114
|
};
|
|
10797
|
-
_Platform_connectToProvider.set(this, async (
|
|
10115
|
+
_Platform_connectToProvider.set(this, async () => {
|
|
10798
10116
|
try {
|
|
10799
|
-
const
|
|
10800
|
-
const client = await this._channel.connect(channelName, { wait: false });
|
|
10117
|
+
const client = await this._channel.connect(__classPrivateFieldGet$6(this, _Platform_channelName, "f"), { wait: false });
|
|
10801
10118
|
client.onDisconnection(() => {
|
|
10802
|
-
clientMap.delete(
|
|
10119
|
+
Platform.clientMap.delete(__classPrivateFieldGet$6(this, _Platform_channelName, "f"));
|
|
10803
10120
|
});
|
|
10804
10121
|
return client;
|
|
10805
10122
|
}
|
|
10806
10123
|
catch (e) {
|
|
10807
|
-
clientMap.delete(
|
|
10124
|
+
Platform.clientMap.delete(__classPrivateFieldGet$6(this, _Platform_channelName, "f"));
|
|
10808
10125
|
throw new Error('The targeted Platform is not currently running. Listen for application-started event for the given Uuid.');
|
|
10809
10126
|
}
|
|
10810
10127
|
});
|
|
@@ -10817,7 +10134,8 @@ class Platform extends base_1$6.EmitterBase {
|
|
|
10817
10134
|
if (errorMsg) {
|
|
10818
10135
|
throw new Error(errorMsg);
|
|
10819
10136
|
}
|
|
10820
|
-
this
|
|
10137
|
+
__classPrivateFieldSet$5(this, _Platform_channelName, channelName, "f");
|
|
10138
|
+
this._channel = this.fin.InterApplicationBus.Channel;
|
|
10821
10139
|
this.identity = { uuid: identity.uuid };
|
|
10822
10140
|
this.Layout = this.fin.Platform.Layout;
|
|
10823
10141
|
this.Application = this.fin.Application.wrapSync(this.identity);
|
|
@@ -11530,87 +10848,757 @@ class Platform extends base_1$6.EmitterBase {
|
|
|
11530
10848
|
*
|
|
11531
10849
|
* const windowOrViewIdentity = { uuid: fin.me.uuid, name: 'nameOfWindowOrView' };
|
|
11532
10850
|
*
|
|
11533
|
-
* const targetWindowContext = await platform.getWindowContext(windowOrViewIdentity);
|
|
11534
|
-
* console.log(targetWindowContext); // context of target window
|
|
10851
|
+
* const targetWindowContext = await platform.getWindowContext(windowOrViewIdentity);
|
|
10852
|
+
* console.log(targetWindowContext); // context of target window
|
|
10853
|
+
* ```
|
|
10854
|
+
* @experimental
|
|
10855
|
+
*/
|
|
10856
|
+
async getWindowContext(target) {
|
|
10857
|
+
this.wire.sendAction('platform-get-window-context', this.identity).catch((e) => {
|
|
10858
|
+
// don't expose
|
|
10859
|
+
});
|
|
10860
|
+
const client = await this.getClient();
|
|
10861
|
+
const { entityType } = target ? await this.fin.System.getEntityInfo(target.uuid, target.name) : this.fin.me;
|
|
10862
|
+
return client.dispatch('get-window-context', {
|
|
10863
|
+
target: target || { uuid: this.fin.me.uuid, name: this.fin.me.name },
|
|
10864
|
+
entityType
|
|
10865
|
+
});
|
|
10866
|
+
}
|
|
10867
|
+
/**
|
|
10868
|
+
* Closes a window. If enableBeforeUnload is enabled in the Platform options, any beforeunload handler set on Views will fire
|
|
10869
|
+
* This behavior can be disabled by setting skipBeforeUnload to false in the options parameter.
|
|
10870
|
+
* @param winId
|
|
10871
|
+
* @param options
|
|
10872
|
+
*
|
|
10873
|
+
* @remarks This method works by setting a `close-requested` handler on the Platform Window. If you have your own `close-requested` handler set on the Platform Window as well,
|
|
10874
|
+
* it is recommended to move that logic over to the [PlatformProvider.closeWindow]{@link PlatformProvider#closeWindow} override to ensure it runs when the Window closes.
|
|
10875
|
+
*
|
|
10876
|
+
* @example
|
|
10877
|
+
*
|
|
10878
|
+
* ```js
|
|
10879
|
+
* // Close the current Window inside a Window context
|
|
10880
|
+
* const platform = await fin.Platform.getCurrent();
|
|
10881
|
+
* platform.closeWindow(fin.me.identity);
|
|
10882
|
+
*
|
|
10883
|
+
* // Close the Window from inside a View context
|
|
10884
|
+
* const platform = await fin.Platform.getCurrent();
|
|
10885
|
+
* const parentWindow = await fin.me.getCurrentWindow();
|
|
10886
|
+
* platform.closeWindow(parentWindow.identity);
|
|
10887
|
+
*
|
|
10888
|
+
* // Close the Window and do not fire the before unload handler on Views
|
|
10889
|
+
* const platform = await fin.Platform.getCurrent();
|
|
10890
|
+
* platform.closeWindow(fin.me.identity, { skipBeforeUnload: true });
|
|
11535
10891
|
* ```
|
|
11536
10892
|
* @experimental
|
|
11537
10893
|
*/
|
|
11538
|
-
async
|
|
11539
|
-
this.wire.sendAction('platform-
|
|
10894
|
+
async closeWindow(windowId, options = { skipBeforeUnload: false }) {
|
|
10895
|
+
this.wire.sendAction('platform-close-window', this.identity).catch((e) => {
|
|
11540
10896
|
// don't expose
|
|
11541
10897
|
});
|
|
11542
10898
|
const client = await this.getClient();
|
|
11543
|
-
|
|
11544
|
-
|
|
11545
|
-
|
|
11546
|
-
|
|
10899
|
+
return client.dispatch('close-window', { windowId, options });
|
|
10900
|
+
}
|
|
10901
|
+
}
|
|
10902
|
+
Instance$2.Platform = Platform;
|
|
10903
|
+
_Platform_channelName = new WeakMap(), _Platform_connectToProvider = new WeakMap();
|
|
10904
|
+
/**
|
|
10905
|
+
* @internal
|
|
10906
|
+
* Reuse clients to avoid overwriting already-registered client in provider
|
|
10907
|
+
* This ensures that only channel client is created per channel name per `fin` instance
|
|
10908
|
+
*/
|
|
10909
|
+
Platform.clientMap = new Map();
|
|
10910
|
+
|
|
10911
|
+
var layout = {};
|
|
10912
|
+
|
|
10913
|
+
var Factory$2 = {};
|
|
10914
|
+
|
|
10915
|
+
var Instance$1 = {};
|
|
10916
|
+
|
|
10917
|
+
var commonUtils = {};
|
|
10918
|
+
|
|
10919
|
+
Object.defineProperty(commonUtils, "__esModule", { value: true });
|
|
10920
|
+
commonUtils.overrideFromComposables = commonUtils.isValidPresetType = void 0;
|
|
10921
|
+
function isValidPresetType(type) {
|
|
10922
|
+
switch (type) {
|
|
10923
|
+
case 'columns':
|
|
10924
|
+
case 'grid':
|
|
10925
|
+
case 'rows':
|
|
10926
|
+
case 'tabs':
|
|
10927
|
+
return true;
|
|
10928
|
+
default:
|
|
10929
|
+
return false;
|
|
10930
|
+
}
|
|
10931
|
+
}
|
|
10932
|
+
commonUtils.isValidPresetType = isValidPresetType;
|
|
10933
|
+
function overrideFromComposables(...overrides) {
|
|
10934
|
+
return (base) => overrides.reduceRight((p, c) => (b) => c(p(b)), (x) => x)(base);
|
|
10935
|
+
}
|
|
10936
|
+
commonUtils.overrideFromComposables = overrideFromComposables;
|
|
10937
|
+
commonUtils.default = { isValidPresetType };
|
|
10938
|
+
|
|
10939
|
+
var layoutEntities = {};
|
|
10940
|
+
|
|
10941
|
+
var apiExposer$1 = {};
|
|
10942
|
+
|
|
10943
|
+
var apiConsumer = {};
|
|
10944
|
+
|
|
10945
|
+
Object.defineProperty(apiConsumer, "__esModule", { value: true });
|
|
10946
|
+
apiConsumer.ApiConsumer = void 0;
|
|
10947
|
+
/**
|
|
10948
|
+
* Consumer for apis exposed with {@see ApiExposer}.
|
|
10949
|
+
*
|
|
10950
|
+
* A strategy that matches the strategy used to expose a target API must be provided.
|
|
10951
|
+
*/
|
|
10952
|
+
class ApiConsumer {
|
|
10953
|
+
// eslint-disable-next-line
|
|
10954
|
+
constructor(strategy) {
|
|
10955
|
+
this.strategy = strategy;
|
|
10956
|
+
/**
|
|
10957
|
+
* Consumes an api exposed using a given transport strategy, and generates a client
|
|
10958
|
+
* for easy, type safe consumption of that client.
|
|
10959
|
+
* @param options Strategy specific consumption options.
|
|
10960
|
+
* @returns An api client matching the given type.
|
|
10961
|
+
*/
|
|
10962
|
+
this.consume = async (options) => {
|
|
10963
|
+
const exposedProperties = await this.strategy.getExposedFunctions(options);
|
|
10964
|
+
return exposedProperties.reduce((client, prop) => ({
|
|
10965
|
+
...client,
|
|
10966
|
+
[prop.key]: this.strategy.createFunction(prop, options)
|
|
10967
|
+
}), {});
|
|
10968
|
+
};
|
|
10969
|
+
}
|
|
10970
|
+
}
|
|
10971
|
+
apiConsumer.ApiConsumer = ApiConsumer;
|
|
10972
|
+
|
|
10973
|
+
var apiExposer = {};
|
|
10974
|
+
|
|
10975
|
+
var decorators = {};
|
|
10976
|
+
|
|
10977
|
+
Object.defineProperty(decorators, "__esModule", { value: true });
|
|
10978
|
+
decorators.expose = decorators.getExposedProperties = void 0;
|
|
10979
|
+
const exposedProperties = Symbol('exposedProperties');
|
|
10980
|
+
const getExposedProperties = (target) => {
|
|
10981
|
+
return target[exposedProperties] || target.prototype[exposedProperties] || [];
|
|
10982
|
+
};
|
|
10983
|
+
decorators.getExposedProperties = getExposedProperties;
|
|
10984
|
+
/**
|
|
10985
|
+
* Indicates that a class member function can be exposed using {@link ApiExposer}.
|
|
10986
|
+
* @param options Options specific to the strategy used in {@link ApiExposer}
|
|
10987
|
+
*/
|
|
10988
|
+
// Returns any as decorator typing is weird.
|
|
10989
|
+
const expose = (options) => (target, key, descriptor) => {
|
|
10990
|
+
target[exposedProperties] = target[exposedProperties] || [];
|
|
10991
|
+
target[exposedProperties].push({ key, descriptor, options });
|
|
10992
|
+
};
|
|
10993
|
+
decorators.expose = expose;
|
|
10994
|
+
|
|
10995
|
+
Object.defineProperty(apiExposer, "__esModule", { value: true });
|
|
10996
|
+
apiExposer.ApiExposer = void 0;
|
|
10997
|
+
const decorators_1 = decorators;
|
|
10998
|
+
/**
|
|
10999
|
+
* Exposes api services on the transport of choice.
|
|
11000
|
+
*/
|
|
11001
|
+
class ApiExposer {
|
|
11002
|
+
/**
|
|
11003
|
+
* @param strategy The expose strategy to use to expose instances.
|
|
11004
|
+
*/
|
|
11005
|
+
// eslint-disable-next-line
|
|
11006
|
+
constructor(strategy) {
|
|
11007
|
+
this.strategy = strategy;
|
|
11008
|
+
/**
|
|
11009
|
+
* Exposes an instance of a given api on
|
|
11010
|
+
* @param instance Instance of a class which has been decorated to indicate which functions can be exposed.
|
|
11011
|
+
* @param instanceOptions Transport strategy specific options to use when exposing.
|
|
11012
|
+
*/
|
|
11013
|
+
this.exposeInstance = async (instance, instanceOptions) => {
|
|
11014
|
+
const exposableProps = (0, decorators_1.getExposedProperties)(instance);
|
|
11015
|
+
const exposedProps = await Promise.all(exposableProps.map(async ({ key, options }) => {
|
|
11016
|
+
const customConsumptionOptions = await this.strategy.exposeFunction(instance[key].bind(instance), {
|
|
11017
|
+
key,
|
|
11018
|
+
options,
|
|
11019
|
+
meta: instanceOptions
|
|
11020
|
+
});
|
|
11021
|
+
return {
|
|
11022
|
+
key,
|
|
11023
|
+
options: customConsumptionOptions
|
|
11024
|
+
};
|
|
11025
|
+
}));
|
|
11026
|
+
await this.strategy.exposeMeta(instanceOptions, exposedProps);
|
|
11027
|
+
};
|
|
11028
|
+
}
|
|
11029
|
+
;
|
|
11030
|
+
}
|
|
11031
|
+
apiExposer.ApiExposer = ApiExposer;
|
|
11032
|
+
|
|
11033
|
+
var strategies = {};
|
|
11034
|
+
|
|
11035
|
+
var openfinChannels = {};
|
|
11036
|
+
|
|
11037
|
+
var channelsConsumer = {};
|
|
11038
|
+
|
|
11039
|
+
Object.defineProperty(channelsConsumer, "__esModule", { value: true });
|
|
11040
|
+
channelsConsumer.ChannelsConsumer = void 0;
|
|
11041
|
+
class ChannelsConsumer {
|
|
11042
|
+
// eslint-disable-next-line
|
|
11043
|
+
constructor(channel) {
|
|
11044
|
+
this.channel = channel;
|
|
11045
|
+
this.getExposedFunctions = async (options) => {
|
|
11046
|
+
const { id } = options;
|
|
11047
|
+
const { props } = await this.channel.dispatch(`api-meta:${id}`);
|
|
11048
|
+
return props;
|
|
11049
|
+
};
|
|
11050
|
+
this.createFunction = (prop) => (...args) => {
|
|
11051
|
+
const { action } = prop.options;
|
|
11052
|
+
return this.channel.dispatch(action, { args });
|
|
11053
|
+
};
|
|
11054
|
+
}
|
|
11055
|
+
;
|
|
11056
|
+
}
|
|
11057
|
+
channelsConsumer.ChannelsConsumer = ChannelsConsumer;
|
|
11058
|
+
|
|
11059
|
+
var channelsExposer = {};
|
|
11060
|
+
|
|
11061
|
+
Object.defineProperty(channelsExposer, "__esModule", { value: true });
|
|
11062
|
+
channelsExposer.ChannelsExposer = void 0;
|
|
11063
|
+
class ChannelsExposer {
|
|
11064
|
+
// eslint-disable-next-line
|
|
11065
|
+
constructor(channelProviderOrClient) {
|
|
11066
|
+
this.channelProviderOrClient = channelProviderOrClient;
|
|
11067
|
+
this.exposeFunction = async (target, config) => {
|
|
11068
|
+
const { key, options, meta } = config;
|
|
11069
|
+
const { id } = meta;
|
|
11070
|
+
const action = `${id}.${options?.action || key}`;
|
|
11071
|
+
await this.channelProviderOrClient.register(action, async ({ args }) => {
|
|
11072
|
+
return target(...args);
|
|
11073
|
+
});
|
|
11074
|
+
return { action };
|
|
11075
|
+
};
|
|
11076
|
+
this.exposeMeta = async ({ id }, props) => {
|
|
11077
|
+
const action = `api-meta:${id}`;
|
|
11078
|
+
await this.channelProviderOrClient.register(action, () => ({ props }));
|
|
11079
|
+
};
|
|
11080
|
+
}
|
|
11081
|
+
}
|
|
11082
|
+
channelsExposer.ChannelsExposer = ChannelsExposer;
|
|
11083
|
+
|
|
11084
|
+
(function (exports) {
|
|
11085
|
+
var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11086
|
+
if (k2 === undefined) k2 = k;
|
|
11087
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11088
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11089
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11090
|
+
}
|
|
11091
|
+
Object.defineProperty(o, k2, desc);
|
|
11092
|
+
}) : (function(o, m, k, k2) {
|
|
11093
|
+
if (k2 === undefined) k2 = k;
|
|
11094
|
+
o[k2] = m[k];
|
|
11095
|
+
}));
|
|
11096
|
+
var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
|
|
11097
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11098
|
+
};
|
|
11099
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11100
|
+
__exportStar(channelsConsumer, exports);
|
|
11101
|
+
__exportStar(channelsExposer, exports);
|
|
11102
|
+
} (openfinChannels));
|
|
11103
|
+
|
|
11104
|
+
(function (exports) {
|
|
11105
|
+
var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11106
|
+
if (k2 === undefined) k2 = k;
|
|
11107
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11108
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11109
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11110
|
+
}
|
|
11111
|
+
Object.defineProperty(o, k2, desc);
|
|
11112
|
+
}) : (function(o, m, k, k2) {
|
|
11113
|
+
if (k2 === undefined) k2 = k;
|
|
11114
|
+
o[k2] = m[k];
|
|
11115
|
+
}));
|
|
11116
|
+
var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
|
|
11117
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11118
|
+
};
|
|
11119
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11120
|
+
__exportStar(openfinChannels, exports);
|
|
11121
|
+
} (strategies));
|
|
11122
|
+
|
|
11123
|
+
(function (exports) {
|
|
11124
|
+
var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11125
|
+
if (k2 === undefined) k2 = k;
|
|
11126
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11127
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11128
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11129
|
+
}
|
|
11130
|
+
Object.defineProperty(o, k2, desc);
|
|
11131
|
+
}) : (function(o, m, k, k2) {
|
|
11132
|
+
if (k2 === undefined) k2 = k;
|
|
11133
|
+
o[k2] = m[k];
|
|
11134
|
+
}));
|
|
11135
|
+
var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
|
|
11136
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11137
|
+
};
|
|
11138
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11139
|
+
__exportStar(apiConsumer, exports);
|
|
11140
|
+
__exportStar(apiExposer, exports);
|
|
11141
|
+
__exportStar(strategies, exports);
|
|
11142
|
+
__exportStar(decorators, exports);
|
|
11143
|
+
} (apiExposer$1));
|
|
11144
|
+
|
|
11145
|
+
var channelApiRelay = {};
|
|
11146
|
+
|
|
11147
|
+
Object.defineProperty(channelApiRelay, "__esModule", { value: true });
|
|
11148
|
+
channelApiRelay.createRelayedDispatch = channelApiRelay.relayChannelClientApi = void 0;
|
|
11149
|
+
const EXPECTED_ERRORS = [
|
|
11150
|
+
'no longer connected',
|
|
11151
|
+
'RTCDataChannel closed unexpectedly',
|
|
11152
|
+
'The client you are trying to dispatch from is disconnected from the target provider',
|
|
11153
|
+
];
|
|
11154
|
+
// Checks possible error messages that we want to trap, client error message can originate
|
|
11155
|
+
// from ChannelProvider::dispatch OR ClassicStrategy::closeEndpoint OR RTCEndPoint::dataChannel::onclose
|
|
11156
|
+
const isDisconnectedError = (errorMsg) => {
|
|
11157
|
+
return EXPECTED_ERRORS.some(e => errorMsg.includes(e));
|
|
11158
|
+
};
|
|
11159
|
+
/**
|
|
11160
|
+
* @internal
|
|
11161
|
+
* Create a channel relay for a given channel exposition, allowing a single provider to route
|
|
11162
|
+
* actions to the designated clients.
|
|
11163
|
+
*
|
|
11164
|
+
* Designed to be used in conjunction with @expose
|
|
11165
|
+
*
|
|
11166
|
+
* @param channelProvider The channel provider to relay the actions on.
|
|
11167
|
+
* @param config Determines which actions to relay. Please ensure action prefix matches the exposed api.
|
|
11168
|
+
*/
|
|
11169
|
+
const relayChannelClientApi = async (channelProvider, relayId) => {
|
|
11170
|
+
channelProvider.register(`relay:${relayId}`, ({ action, target, payload }) => {
|
|
11171
|
+
return channelProvider.dispatch(target, action, payload);
|
|
11172
|
+
});
|
|
11173
|
+
await Promise.resolve();
|
|
11174
|
+
};
|
|
11175
|
+
channelApiRelay.relayChannelClientApi = relayChannelClientApi;
|
|
11176
|
+
const createRelayedDispatch = (client, target, relayId, relayErrorMsg) => async (action, payload) => {
|
|
11177
|
+
try {
|
|
11178
|
+
return await client.dispatch(`relay:${relayId}`, {
|
|
11179
|
+
action,
|
|
11180
|
+
payload,
|
|
11181
|
+
target
|
|
11547
11182
|
});
|
|
11548
11183
|
}
|
|
11184
|
+
catch (e) {
|
|
11185
|
+
if (isDisconnectedError(e.message) && relayErrorMsg) {
|
|
11186
|
+
throw new Error(relayErrorMsg);
|
|
11187
|
+
}
|
|
11188
|
+
throw e;
|
|
11189
|
+
}
|
|
11190
|
+
};
|
|
11191
|
+
channelApiRelay.createRelayedDispatch = createRelayedDispatch;
|
|
11192
|
+
|
|
11193
|
+
var __classPrivateFieldSet$4 = (commonjsGlobal && commonjsGlobal.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
11194
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
11195
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
11196
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
11197
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
11198
|
+
};
|
|
11199
|
+
var __classPrivateFieldGet$5 = (commonjsGlobal && commonjsGlobal.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
11200
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
11201
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11202
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11203
|
+
};
|
|
11204
|
+
var _LayoutNode_client, _TabStack_client, _ColumnOrRow_client;
|
|
11205
|
+
Object.defineProperty(layoutEntities, "__esModule", { value: true });
|
|
11206
|
+
layoutEntities.ColumnOrRow = layoutEntities.TabStack = layoutEntities.LayoutNode = void 0;
|
|
11207
|
+
const api_exposer_1 = apiExposer$1;
|
|
11208
|
+
const channel_api_relay_1 = channelApiRelay;
|
|
11209
|
+
/*
|
|
11210
|
+
This file includes LayoutNode, ColumnOrRow and TabStack classes, which are all closely
|
|
11211
|
+
intertwined, and share members via parent abstract class LayoutNode. To prevent circular
|
|
11212
|
+
refs, we define and export all the classes here.
|
|
11213
|
+
*/
|
|
11214
|
+
/**
|
|
11215
|
+
* @ignore
|
|
11216
|
+
* @internal
|
|
11217
|
+
* Supplies an ApiClient for {@link LayoutEntitiesController} and helper methods
|
|
11218
|
+
* for the entities {@link TabStack} AND {@link ColumnOrRow} to use.
|
|
11219
|
+
*/
|
|
11220
|
+
class LayoutNode {
|
|
11549
11221
|
/**
|
|
11550
|
-
*
|
|
11551
|
-
*
|
|
11552
|
-
* @param winId
|
|
11553
|
-
* @param options
|
|
11554
|
-
*
|
|
11555
|
-
* @remarks This method works by setting a `close-requested` handler on the Platform Window. If you have your own `close-requested` handler set on the Platform Window as well,
|
|
11556
|
-
* it is recommended to move that logic over to the [PlatformProvider.closeWindow]{@link PlatformProvider#closeWindow} override to ensure it runs when the Window closes.
|
|
11557
|
-
*
|
|
11558
|
-
* @example
|
|
11559
|
-
*
|
|
11560
|
-
* ```js
|
|
11561
|
-
* // Close the current Window inside a Window context
|
|
11562
|
-
* const platform = await fin.Platform.getCurrent();
|
|
11563
|
-
* platform.closeWindow(fin.me.identity);
|
|
11564
|
-
*
|
|
11565
|
-
* // Close the Window from inside a View context
|
|
11566
|
-
* const platform = await fin.Platform.getCurrent();
|
|
11567
|
-
* const parentWindow = await fin.me.getCurrentWindow();
|
|
11568
|
-
* platform.closeWindow(parentWindow.identity);
|
|
11569
|
-
*
|
|
11570
|
-
* // Close the Window and do not fire the before unload handler on Views
|
|
11571
|
-
* const platform = await fin.Platform.getCurrent();
|
|
11572
|
-
* platform.closeWindow(fin.me.identity, { skipBeforeUnload: true });
|
|
11573
|
-
* ```
|
|
11574
|
-
* @experimental
|
|
11222
|
+
* @internal
|
|
11223
|
+
* @ignore
|
|
11575
11224
|
*/
|
|
11576
|
-
|
|
11577
|
-
|
|
11578
|
-
|
|
11579
|
-
|
|
11580
|
-
|
|
11581
|
-
|
|
11225
|
+
constructor(client, entityId) {
|
|
11226
|
+
/**
|
|
11227
|
+
* @ignore
|
|
11228
|
+
* @internal
|
|
11229
|
+
* ApiClient for {@link LayoutEntitiesController}
|
|
11230
|
+
*/
|
|
11231
|
+
_LayoutNode_client.set(this, void 0);
|
|
11232
|
+
/**
|
|
11233
|
+
* Checks if the TabStack or ColumnOrRow is the root content item
|
|
11234
|
+
*
|
|
11235
|
+
* @example
|
|
11236
|
+
* ```js
|
|
11237
|
+
* if (!fin.me.isView) {
|
|
11238
|
+
* throw new Error('Not running in a platform View.');
|
|
11239
|
+
* }
|
|
11240
|
+
*
|
|
11241
|
+
* const stack = await fin.me.getCurrentStack();
|
|
11242
|
+
* const isRoot = await stack.isRoot();
|
|
11243
|
+
* // The TabStack is root: false
|
|
11244
|
+
* console.log(`The TabStack is root: ${isRoot}`);
|
|
11245
|
+
*
|
|
11246
|
+
* // Retrieves the parent ColumnOrRow
|
|
11247
|
+
* const parent = await stack.getParent();
|
|
11248
|
+
* const parentIsRoot = await parent.isRoot();
|
|
11249
|
+
* // The parent ColumnOrRow is root: true
|
|
11250
|
+
* console.log(`The parent ColumnOrRow is root: ${parentIsRoot}`);
|
|
11251
|
+
* ```
|
|
11252
|
+
*/
|
|
11253
|
+
this.isRoot = () => __classPrivateFieldGet$5(this, _LayoutNode_client, "f").isRoot(this.entityId);
|
|
11254
|
+
/**
|
|
11255
|
+
* Checks if the TabStack or ColumnOrRow exists
|
|
11256
|
+
*
|
|
11257
|
+
* @example
|
|
11258
|
+
* ```js
|
|
11259
|
+
* if (!fin.me.isView) {
|
|
11260
|
+
* throw new Error('Not running in a platform View.');
|
|
11261
|
+
* }
|
|
11262
|
+
*
|
|
11263
|
+
* const stack = await fin.me.getCurrentStack();
|
|
11264
|
+
* // Retrieves the parent ColumnOrRow
|
|
11265
|
+
* const columnOrRow = await stack.getParent();
|
|
11266
|
+
* let exists = await stack.exists();
|
|
11267
|
+
* // or
|
|
11268
|
+
* let exists = await columnOrRow.exists();
|
|
11269
|
+
* // The entity exists: true
|
|
11270
|
+
* console.log(`The entity exists: ${exists}`);
|
|
11271
|
+
* ```
|
|
11272
|
+
*/
|
|
11273
|
+
this.exists = () => __classPrivateFieldGet$5(this, _LayoutNode_client, "f").exists(this.entityId);
|
|
11274
|
+
/**
|
|
11275
|
+
* Retrieves the parent of the TabStack or ColumnOrRow
|
|
11276
|
+
*
|
|
11277
|
+
* @example
|
|
11278
|
+
* ```js
|
|
11279
|
+
* if (!fin.me.isView) {
|
|
11280
|
+
* throw new Error('Not running in a platform View.');
|
|
11281
|
+
* }
|
|
11282
|
+
*
|
|
11283
|
+
* const stack = await fin.me.getCurrentStack();
|
|
11284
|
+
* // Retrieves the parent ColumnOrRow
|
|
11285
|
+
* const columnOrRow = await stack.getParent();
|
|
11286
|
+
*
|
|
11287
|
+
* // undefined if entity is the root item
|
|
11288
|
+
* let parent = await columnOrRow.getParent();
|
|
11289
|
+
* // or
|
|
11290
|
+
* let parent = await stack.getParent();
|
|
11291
|
+
* ```
|
|
11292
|
+
*/
|
|
11293
|
+
this.getParent = async () => {
|
|
11294
|
+
const parent = await __classPrivateFieldGet$5(this, _LayoutNode_client, "f").getParent(this.entityId);
|
|
11295
|
+
if (!parent) {
|
|
11296
|
+
return undefined;
|
|
11297
|
+
}
|
|
11298
|
+
return LayoutNode.getEntity(parent, __classPrivateFieldGet$5(this, _LayoutNode_client, "f"));
|
|
11299
|
+
};
|
|
11300
|
+
/**
|
|
11301
|
+
* Creates a new TabStack adjacent to the given TabStack or ColumnOrRow. Inputs can be new views to create, or existing views.
|
|
11302
|
+
*
|
|
11303
|
+
* Known Issue: If the number of views to add overflows the tab-container, the added views will be set as active
|
|
11304
|
+
* during each render, and then placed at the front of the tab-stack, while the underlying order of tabs will remain unchanged.
|
|
11305
|
+
* This means the views you pass to createAdjacentStack() may not render in the order given by the array.
|
|
11306
|
+
* Until fixed, this problem can be avoided only if your window is wide enough to fit creating all the views in the tabstack.
|
|
11307
|
+
*
|
|
11308
|
+
* @param views The views that will populate the new TabStack.
|
|
11309
|
+
* @param options Additional options that control new TabStack creation.
|
|
11310
|
+
* @returns The newly-created TabStack.
|
|
11311
|
+
*
|
|
11312
|
+
* @example
|
|
11313
|
+
* ```js
|
|
11314
|
+
* if (!fin.me.isView) {
|
|
11315
|
+
* throw new Error('Not running in a platform View.');
|
|
11316
|
+
* }
|
|
11317
|
+
*
|
|
11318
|
+
* const stack = await fin.me.getCurrentStack();
|
|
11319
|
+
* const columnOrRow = await stack.getParent();
|
|
11320
|
+
*
|
|
11321
|
+
* // Create view references by supplying a 'name' and 'url'
|
|
11322
|
+
* const views = [
|
|
11323
|
+
* // if 'name' is undefined, one will be generated
|
|
11324
|
+
* // if 'url' is undefined, it will default the view URL to 'about:blank'
|
|
11325
|
+
* { name: 'google-view', url: 'http://google.com/'},
|
|
11326
|
+
* { name: 'of-developers-view', url: 'http://developers.openfin.co/'},
|
|
11327
|
+
* ];
|
|
11328
|
+
*
|
|
11329
|
+
* // Create a view beforehand to be included in the new tab stack
|
|
11330
|
+
* const outsideView = await fin.View.create({
|
|
11331
|
+
* name: 'outside-bloomberg-view',
|
|
11332
|
+
* url: 'https://bloomberg.com/',
|
|
11333
|
+
* target: fin.me.identity,
|
|
11334
|
+
* });
|
|
11335
|
+
*
|
|
11336
|
+
* // Views to add can be identities, or the reference views mentioned above
|
|
11337
|
+
* const viewsToAdd = [outsideView.identity, ...views];
|
|
11338
|
+
*
|
|
11339
|
+
* // Possible position inputs: 'right' | 'left' | 'top' | 'bottom'
|
|
11340
|
+
* let stackFrom = await columnOrRow.createAdjacentStack(viewsToAdd, { position: 'right' });
|
|
11341
|
+
* // Or
|
|
11342
|
+
* let newStack = await stack.createAdjacentStack(viewsToAdd, { position: 'right' });
|
|
11343
|
+
* console.log(`A new TabStack created to the right has ${newStack.length} views in it`);
|
|
11344
|
+
*
|
|
11345
|
+
* ```
|
|
11346
|
+
* @experimental
|
|
11347
|
+
*/
|
|
11348
|
+
this.createAdjacentStack = async (views, options) => {
|
|
11349
|
+
const entityId = await __classPrivateFieldGet$5(this, _LayoutNode_client, "f").createAdjacentStack(this.entityId, views, options);
|
|
11350
|
+
return LayoutNode.getEntity({ entityId, type: 'stack' }, __classPrivateFieldGet$5(this, _LayoutNode_client, "f"));
|
|
11351
|
+
};
|
|
11352
|
+
/**
|
|
11353
|
+
* Retrieves the adjacent TabStacks of the given TabStack or ColumnOrRow.
|
|
11354
|
+
*
|
|
11355
|
+
* @param edge Edge whose adjacent TabStacks will be returned.
|
|
11356
|
+
*
|
|
11357
|
+
* @example
|
|
11358
|
+
* ```js
|
|
11359
|
+
* if (!fin.me.isView) {
|
|
11360
|
+
* throw new Error('Not running in a platform View.');
|
|
11361
|
+
* }
|
|
11362
|
+
*
|
|
11363
|
+
* const stack = await fin.me.getCurrentStack();
|
|
11364
|
+
* const columnOrRow = await stack.getParent();
|
|
11365
|
+
* // Possible position inputs: 'right' | 'left' | 'top' | 'bottom'
|
|
11366
|
+
* let rightStacks = await columnOrRow.getAdjacentStacks('right');
|
|
11367
|
+
* let leftStacks = await columnOrRow.getAdjacentStacks('left');
|
|
11368
|
+
* // or
|
|
11369
|
+
* let rightStacks = await stack.getAdjacentStacks('right');
|
|
11370
|
+
* let leftStacks = await stack.getAdjacentStacks('left');
|
|
11371
|
+
*
|
|
11372
|
+
* console.log(`The entity has ${rightStacks.length} stacks to the right, and ${leftStacks.length} stacks to the left`);
|
|
11373
|
+
*
|
|
11374
|
+
* ```
|
|
11375
|
+
* @experimental
|
|
11376
|
+
*/
|
|
11377
|
+
this.getAdjacentStacks = async (edge) => {
|
|
11378
|
+
const adjacentStacks = await __classPrivateFieldGet$5(this, _LayoutNode_client, "f").getAdjacentStacks({
|
|
11379
|
+
targetId: this.entityId,
|
|
11380
|
+
edge
|
|
11381
|
+
});
|
|
11382
|
+
return adjacentStacks.map((stack) => LayoutNode.getEntity({
|
|
11383
|
+
type: 'stack',
|
|
11384
|
+
entityId: stack.entityId
|
|
11385
|
+
}, __classPrivateFieldGet$5(this, _LayoutNode_client, "f")));
|
|
11386
|
+
};
|
|
11387
|
+
__classPrivateFieldSet$4(this, _LayoutNode_client, client, "f");
|
|
11388
|
+
this.entityId = entityId;
|
|
11582
11389
|
}
|
|
11583
11390
|
}
|
|
11584
|
-
|
|
11585
|
-
|
|
11586
|
-
|
|
11587
|
-
|
|
11588
|
-
|
|
11589
|
-
|
|
11590
|
-
|
|
11591
|
-
|
|
11592
|
-
|
|
11593
|
-
|
|
11594
|
-
|
|
11595
|
-
|
|
11596
|
-
|
|
11597
|
-
|
|
11391
|
+
layoutEntities.LayoutNode = LayoutNode;
|
|
11392
|
+
_LayoutNode_client = new WeakMap();
|
|
11393
|
+
/**
|
|
11394
|
+
* @ignore
|
|
11395
|
+
* @internal
|
|
11396
|
+
* Encapsulates Api consumption of {@link LayoutEntitiesClient} with a relayed dispatch
|
|
11397
|
+
* @param client
|
|
11398
|
+
* @param controllerId
|
|
11399
|
+
* @param identity
|
|
11400
|
+
* @returns a new instance of {@link LayoutEntitiesClient} with bound to the controllerId
|
|
11401
|
+
*/
|
|
11402
|
+
LayoutNode.newLayoutEntitiesClient = async (client, controllerId, identity) => {
|
|
11403
|
+
const dispatch = (0, channel_api_relay_1.createRelayedDispatch)(client, identity, 'layout-relay', 'You are trying to interact with a layout component on a window that does not exist or has been destroyed.');
|
|
11404
|
+
const consumer = new api_exposer_1.ApiConsumer(new api_exposer_1.ChannelsConsumer({ dispatch }));
|
|
11405
|
+
return consumer.consume({ id: controllerId });
|
|
11406
|
+
};
|
|
11407
|
+
LayoutNode.getEntity = (definition, client) => {
|
|
11408
|
+
const { entityId, type } = definition;
|
|
11598
11409
|
switch (type) {
|
|
11599
|
-
case '
|
|
11600
|
-
case '
|
|
11601
|
-
|
|
11602
|
-
case '
|
|
11603
|
-
return
|
|
11410
|
+
case 'column':
|
|
11411
|
+
case 'row':
|
|
11412
|
+
return new ColumnOrRow(client, entityId, type);
|
|
11413
|
+
case 'stack':
|
|
11414
|
+
return new TabStack(client, entityId);
|
|
11604
11415
|
default:
|
|
11605
|
-
|
|
11416
|
+
throw new Error(`Unrecognised Layout Entity encountered ('${JSON.stringify(definition)})`);
|
|
11417
|
+
}
|
|
11418
|
+
};
|
|
11419
|
+
/**
|
|
11420
|
+
* A TabStack is used to manage the state of a stack of tabs within an OpenFin Layout.
|
|
11421
|
+
*/
|
|
11422
|
+
class TabStack extends LayoutNode {
|
|
11423
|
+
/** @internal */
|
|
11424
|
+
constructor(client, entityId) {
|
|
11425
|
+
super(client, entityId);
|
|
11426
|
+
/**
|
|
11427
|
+
* @internal
|
|
11428
|
+
* ApiClient for {@link LayoutEntitiesController}
|
|
11429
|
+
*/
|
|
11430
|
+
_TabStack_client.set(this, void 0);
|
|
11431
|
+
/**
|
|
11432
|
+
* Type of the content item. Always stack, but useful for distinguishing between a {@link TabStack} and {@link ColumnOrRow}.
|
|
11433
|
+
*/
|
|
11434
|
+
this.type = 'stack';
|
|
11435
|
+
/**
|
|
11436
|
+
* Retrieves a list of all views belonging to this {@link TabStack}.
|
|
11437
|
+
*
|
|
11438
|
+
* Known Issue: If adding a view overflows the tab-container width, the added view will be set as active
|
|
11439
|
+
* and rendered at the front of the tab-stack, while the underlying order of tabs will remain unchanged.
|
|
11440
|
+
* If that happens and then getViews() is called, it will return the identities in a different order than
|
|
11441
|
+
* than the currently rendered tab order.
|
|
11442
|
+
*
|
|
11443
|
+
*
|
|
11444
|
+
* @throws If the {@link TabStack} has been destroyed.
|
|
11445
|
+
* @example
|
|
11446
|
+
* ```js
|
|
11447
|
+
* if (!fin.me.isView) {
|
|
11448
|
+
* throw new Error('Not running in a platform View.');
|
|
11449
|
+
* }
|
|
11450
|
+
*
|
|
11451
|
+
* const stack = await fin.me.getCurrentStack();
|
|
11452
|
+
* // Alternatively, you can wrap any view and get the stack from there
|
|
11453
|
+
* // const viewFromSomewhere = fin.View.wrapSync(someView.identity);
|
|
11454
|
+
* // const stack = await viewFromSomewhere.getCurrentStack();
|
|
11455
|
+
* const views = await stack.getViews();
|
|
11456
|
+
* console.log(`Stack contains ${views.length} view(s)`);
|
|
11457
|
+
* ```
|
|
11458
|
+
* @experimental
|
|
11459
|
+
*/
|
|
11460
|
+
this.getViews = () => __classPrivateFieldGet$5(this, _TabStack_client, "f").getStackViews(this.entityId);
|
|
11461
|
+
/**
|
|
11462
|
+
* Adds or creates a view in this {@link TabStack}.
|
|
11463
|
+
*
|
|
11464
|
+
* @remarks Known Issue: If adding a view overflows the tab-container, the added view will be set as active
|
|
11465
|
+
* and rendered at the front of the tab-stack, while the underlying order of tabs will remain unchanged.
|
|
11466
|
+
*
|
|
11467
|
+
* @param view The identity of an existing view to add, or options to create a view.
|
|
11468
|
+
* @param options Optional view options: index number used to insert the view into the stack at that index. Defaults to 0 (front of the stack)
|
|
11469
|
+
* @returns Resolves with the {@link OpenFin.Identity identity} of the added view.
|
|
11470
|
+
* @throws If the view does not exist or fails to create.
|
|
11471
|
+
* @throws If the {@link TabStack} has been destroyed.
|
|
11472
|
+
* @example
|
|
11473
|
+
* ```js
|
|
11474
|
+
* if (!fin.me.isView) {
|
|
11475
|
+
* throw new Error('Not running in a platform View.');
|
|
11476
|
+
* }
|
|
11477
|
+
*
|
|
11478
|
+
* const stack = await fin.me.getCurrentStack();
|
|
11479
|
+
* // Alternatively, you can wrap any view and get the stack from there
|
|
11480
|
+
* // const viewFromSomewhere = fin.View.wrapSync(someView.identity);
|
|
11481
|
+
* // const stack = await viewFromSomewhere.getCurrentStack();
|
|
11482
|
+
* const googleViewIdentity = await stack.addView({ name: 'google-view', url: 'http://google.com/' });
|
|
11483
|
+
* console.log('Identity of the google view just added', { googleViewIdentity });
|
|
11484
|
+
* // pass in { index: number } to set the index in the stack. Here 1 means, end of the stack (defaults to 0)
|
|
11485
|
+
* const appleViewIdentity = await stack.addView({ name: 'apple-view', url: 'http://apple.com/' }, { index: 1 });
|
|
11486
|
+
* console.log('Identity of the apple view just added', { appleViewIdentity });
|
|
11487
|
+
* ```
|
|
11488
|
+
* @experimental
|
|
11489
|
+
*/
|
|
11490
|
+
this.addView = async (view, options = { index: 0 }) => __classPrivateFieldGet$5(this, _TabStack_client, "f").addViewToStack(this.entityId, view, options);
|
|
11491
|
+
/**
|
|
11492
|
+
* Removes a view from this {@link TabStack}.
|
|
11493
|
+
*
|
|
11494
|
+
* @remarks Throws an exception if the view identity does not exist or was already destroyed.
|
|
11495
|
+
*
|
|
11496
|
+
* @param view - Identity of the view to remove.
|
|
11497
|
+
* @throws If the view does not exist or does not belong to the stack.
|
|
11498
|
+
* @throws If the {@link TabStack} has been destroyed.
|
|
11499
|
+
*
|
|
11500
|
+
* @example
|
|
11501
|
+
* ```js
|
|
11502
|
+
* if (!fin.me.isView) {
|
|
11503
|
+
* throw new Error('Not running in a platform View.');
|
|
11504
|
+
* }
|
|
11505
|
+
*
|
|
11506
|
+
* const stack = await fin.me.getCurrentStack();
|
|
11507
|
+
* const googleViewIdentity = await stack.addView({ name: 'google-view', url: 'http://google.com/' });
|
|
11508
|
+
*
|
|
11509
|
+
* await stack.removeView(googleViewIdentity);
|
|
11510
|
+
*
|
|
11511
|
+
* try {
|
|
11512
|
+
* await stack.removeView(googleViewIdentity);
|
|
11513
|
+
* } catch (error) {
|
|
11514
|
+
* // Tried to remove a view ('google-view') which does not belong to the stack.
|
|
11515
|
+
* console.log(error);
|
|
11516
|
+
* }
|
|
11517
|
+
* ```
|
|
11518
|
+
*/
|
|
11519
|
+
this.removeView = async (view) => {
|
|
11520
|
+
await __classPrivateFieldGet$5(this, _TabStack_client, "f").removeViewFromStack(this.entityId, view);
|
|
11521
|
+
};
|
|
11522
|
+
/**
|
|
11523
|
+
* Sets the active view of the {@link TabStack} without focusing it.
|
|
11524
|
+
* @param view - Identity of the view to activate.
|
|
11525
|
+
* @returns Promise which resolves with void once the view has been activated.
|
|
11526
|
+
* @throws If the {@link TabStack} has been destroyed.
|
|
11527
|
+
* @throws If the view does not exist.
|
|
11528
|
+
* @example
|
|
11529
|
+
* Change the active tab of a known View's TabStack:
|
|
11530
|
+
* ```js
|
|
11531
|
+
* const targetView = fin.View.wrapSync({ uuid: 'uuid', name: 'view-name' });
|
|
11532
|
+
* const stack = await targetView.getCurrentStack();
|
|
11533
|
+
* await stack.setActiveView(targetView.identity);
|
|
11534
|
+
* ```
|
|
11535
|
+
*
|
|
11536
|
+
* Set the current View as active within its TabStack:
|
|
11537
|
+
* ```js
|
|
11538
|
+
* const stack = await fin.me.getCurrentStack();
|
|
11539
|
+
* await stack.setActiveView(fin.me.identity);
|
|
11540
|
+
* ```
|
|
11541
|
+
* @experimental
|
|
11542
|
+
*/
|
|
11543
|
+
this.setActiveView = async (view) => {
|
|
11544
|
+
await __classPrivateFieldGet$5(this, _TabStack_client, "f").setStackActiveView(this.entityId, view);
|
|
11545
|
+
};
|
|
11546
|
+
__classPrivateFieldSet$4(this, _TabStack_client, client, "f");
|
|
11606
11547
|
}
|
|
11607
11548
|
}
|
|
11608
|
-
|
|
11609
|
-
|
|
11610
|
-
|
|
11549
|
+
layoutEntities.TabStack = TabStack;
|
|
11550
|
+
_TabStack_client = new WeakMap();
|
|
11551
|
+
/**
|
|
11552
|
+
* A ColumnOrRow is used to manage the state of Column and Rows within an OpenFin Layout.
|
|
11553
|
+
*/
|
|
11554
|
+
class ColumnOrRow extends LayoutNode {
|
|
11555
|
+
/**
|
|
11556
|
+
* @internal
|
|
11557
|
+
*/
|
|
11558
|
+
constructor(client, entityId, type) {
|
|
11559
|
+
super(client, entityId);
|
|
11560
|
+
/**
|
|
11561
|
+
* @ignore
|
|
11562
|
+
* @internal
|
|
11563
|
+
* ApiClient for {@link LayoutEntitiesController}
|
|
11564
|
+
*/
|
|
11565
|
+
_ColumnOrRow_client.set(this, void 0);
|
|
11566
|
+
/**
|
|
11567
|
+
* Retrieves the content array of the ColumnOrRow
|
|
11568
|
+
*
|
|
11569
|
+
* @example
|
|
11570
|
+
* ```js
|
|
11571
|
+
* if (!fin.me.isView) {
|
|
11572
|
+
* throw new Error('Not running in a platform View.');
|
|
11573
|
+
* }
|
|
11574
|
+
*
|
|
11575
|
+
* const stack = await fin.me.getCurrentStack();
|
|
11576
|
+
* // Retrieves the parent ColumnOrRow
|
|
11577
|
+
* const columnOrRow = await stack.getParent();
|
|
11578
|
+
*
|
|
11579
|
+
* // returns [TabStack]
|
|
11580
|
+
* const contentArray = await columnOrRow.getContent();
|
|
11581
|
+
* console.log(`The ColumnOrRow has ${contentArray.length} item(s)`);
|
|
11582
|
+
* ```
|
|
11583
|
+
*/
|
|
11584
|
+
this.getContent = async () => {
|
|
11585
|
+
const contentItemEntities = await __classPrivateFieldGet$5(this, _ColumnOrRow_client, "f").getContent(this.entityId);
|
|
11586
|
+
return contentItemEntities.map((entity) => LayoutNode.getEntity(entity, __classPrivateFieldGet$5(this, _ColumnOrRow_client, "f")));
|
|
11587
|
+
};
|
|
11588
|
+
__classPrivateFieldSet$4(this, _ColumnOrRow_client, client, "f");
|
|
11589
|
+
this.type = type;
|
|
11590
|
+
}
|
|
11611
11591
|
}
|
|
11612
|
-
|
|
11613
|
-
|
|
11592
|
+
layoutEntities.ColumnOrRow = ColumnOrRow;
|
|
11593
|
+
_ColumnOrRow_client = new WeakMap();
|
|
11594
|
+
|
|
11595
|
+
var layout_constants = {};
|
|
11596
|
+
|
|
11597
|
+
Object.defineProperty(layout_constants, "__esModule", { value: true });
|
|
11598
|
+
layout_constants.DEFAULT_LAYOUT_KEY = layout_constants.LAYOUT_CONTROLLER_ID = void 0;
|
|
11599
|
+
layout_constants.LAYOUT_CONTROLLER_ID = 'layout-entities';
|
|
11600
|
+
// TODO: eventually export this somehow
|
|
11601
|
+
layout_constants.DEFAULT_LAYOUT_KEY = '__default__';
|
|
11614
11602
|
|
|
11615
11603
|
var __classPrivateFieldGet$4 = (commonjsGlobal && commonjsGlobal.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
11616
11604
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
@@ -11759,6 +11747,12 @@ const layout_constants_1$1 = layout_constants;
|
|
|
11759
11747
|
* ```
|
|
11760
11748
|
*/
|
|
11761
11749
|
class Layout extends base_1$5.Base {
|
|
11750
|
+
/**
|
|
11751
|
+
* @internal
|
|
11752
|
+
*/
|
|
11753
|
+
static getClient(layout) {
|
|
11754
|
+
return __classPrivateFieldGet$4(layout, _Layout_layoutClient, "f").getValue();
|
|
11755
|
+
}
|
|
11762
11756
|
/**
|
|
11763
11757
|
* @internal
|
|
11764
11758
|
*/
|
|
@@ -11983,7 +11977,17 @@ class Layout extends base_1$5.Base {
|
|
|
11983
11977
|
const root = await client.getRoot('layoutName' in this.identity ? this.identity : undefined);
|
|
11984
11978
|
return layout_entities_1.LayoutNode.getEntity(root, client);
|
|
11985
11979
|
}
|
|
11986
|
-
|
|
11980
|
+
/**
|
|
11981
|
+
* Retrieves the OpenFin.TabStack instance which the View belongs to.
|
|
11982
|
+
*
|
|
11983
|
+
* @example
|
|
11984
|
+
* ```js
|
|
11985
|
+
* const viewIdentity = { uuid: 'uuid', name: 'view-name' };
|
|
11986
|
+
* const stack = await fin.View.wrapSync(viewIdentity).getStackByViewIdentity(viewIdentity);
|
|
11987
|
+
* console.log(await stack.getViews());
|
|
11988
|
+
* ```
|
|
11989
|
+
*/
|
|
11990
|
+
async getStackByViewIdentity(identity) {
|
|
11987
11991
|
this.wire.sendAction('layout-get-stack-by-view').catch(() => {
|
|
11988
11992
|
// don't expose
|
|
11989
11993
|
});
|
|
@@ -12216,6 +12220,44 @@ class LayoutModule extends base_1$4.Base {
|
|
|
12216
12220
|
const { uuid, name } = this.fin.me;
|
|
12217
12221
|
return this.wrapSync({ uuid, name });
|
|
12218
12222
|
}
|
|
12223
|
+
/**
|
|
12224
|
+
* Retrieves the OpenFin.Layout instance for the Window the View is attached to.
|
|
12225
|
+
*
|
|
12226
|
+
* @example
|
|
12227
|
+
* ```js
|
|
12228
|
+
* const viewIdentity = { uuid: 'uuid', name: 'view-name' };
|
|
12229
|
+
* const layout = await fin.Platform.Layout.getLayoutByViewIdentity(viewIdentity);
|
|
12230
|
+
* console.log(await layout.getCurrentViews());
|
|
12231
|
+
* ```
|
|
12232
|
+
*/
|
|
12233
|
+
async getLayoutByViewIdentity(viewIdentity) {
|
|
12234
|
+
this.wire.sendAction('layout-get-by-view-identity').catch(() => {
|
|
12235
|
+
// don't expose
|
|
12236
|
+
});
|
|
12237
|
+
const winIdentity = await this.wire.environment.getViewWindowIdentity(this.fin, viewIdentity);
|
|
12238
|
+
let layoutWindowIdentity = winIdentity;
|
|
12239
|
+
// TODO: CORE-1857 - when we tearout active layout or drag a view out of a window, the above identity includes the whole window info.
|
|
12240
|
+
if (layoutWindowIdentity.identity) {
|
|
12241
|
+
layoutWindowIdentity = layoutWindowIdentity.identity;
|
|
12242
|
+
}
|
|
12243
|
+
try {
|
|
12244
|
+
const layoutWindow = this.wrapSync(layoutWindowIdentity);
|
|
12245
|
+
const client = await Instance_1$2.Layout.getClient(layoutWindow);
|
|
12246
|
+
const layoutIdentity = await client.getLayoutIdentityForViewOrThrow(viewIdentity);
|
|
12247
|
+
return this.wrapSync(layoutIdentity);
|
|
12248
|
+
}
|
|
12249
|
+
catch (e) {
|
|
12250
|
+
const allowedErrors = [
|
|
12251
|
+
'No action registered at target for',
|
|
12252
|
+
'getLayoutIdentityForViewOrThrow is not a function'
|
|
12253
|
+
];
|
|
12254
|
+
if (!allowedErrors.some((m) => e.message.includes(m))) {
|
|
12255
|
+
throw e;
|
|
12256
|
+
}
|
|
12257
|
+
// fallback logic for missing endpoint in older runtimes
|
|
12258
|
+
return this.wrapSync(layoutWindowIdentity);
|
|
12259
|
+
}
|
|
12260
|
+
}
|
|
12219
12261
|
}
|
|
12220
12262
|
Factory$2.LayoutModule = LayoutModule;
|
|
12221
12263
|
_LayoutModule_layoutInitializationAttempted = new WeakMap(), _LayoutModule_layoutManager = new WeakMap(), _LayoutModule_getLayoutManagerSpy = new WeakMap(), _LayoutModule_instances = new WeakSet(), _LayoutModule_getSafeLayoutManager = function _LayoutModule_getSafeLayoutManager(method) {
|
|
@@ -12352,7 +12394,7 @@ class PlatformModule extends base_1$3.Base {
|
|
|
12352
12394
|
this.wire.sendAction('platform-wrap').catch((e) => {
|
|
12353
12395
|
// don't expose
|
|
12354
12396
|
});
|
|
12355
|
-
return new Instance_1$1.Platform({ uuid: identity.uuid }
|
|
12397
|
+
return new Instance_1$1.Platform(this.wire, { uuid: identity.uuid });
|
|
12356
12398
|
}
|
|
12357
12399
|
/**
|
|
12358
12400
|
* Synchronously returns a Platform object that represents an existing platform.
|
|
@@ -12369,7 +12411,7 @@ class PlatformModule extends base_1$3.Base {
|
|
|
12369
12411
|
this.wire.sendAction('platform-wrap-sync').catch((e) => {
|
|
12370
12412
|
// don't expose
|
|
12371
12413
|
});
|
|
12372
|
-
return new Instance_1$1.Platform({ uuid: identity.uuid }
|
|
12414
|
+
return new Instance_1$1.Platform(this.wire, { uuid: identity.uuid });
|
|
12373
12415
|
}
|
|
12374
12416
|
/**
|
|
12375
12417
|
* Asynchronously returns a Platform object that represents the current platform.
|
|
@@ -17576,6 +17618,10 @@ Object.defineProperty(baseEnv, "__esModule", { value: true });
|
|
|
17576
17618
|
var BaseEnvironment_1 = baseEnv.BaseEnvironment = void 0;
|
|
17577
17619
|
const overrideCheck_1 = requireOverrideCheck();
|
|
17578
17620
|
class BaseEnvironment {
|
|
17621
|
+
async getViewWindowIdentity(fin, viewIdentity) {
|
|
17622
|
+
const { identity } = await fin.View.wrapSync(viewIdentity).getCurrentWindow();
|
|
17623
|
+
return identity;
|
|
17624
|
+
}
|
|
17579
17625
|
async getInteropInfo(fin) {
|
|
17580
17626
|
const appInfo = await fin.Application.getCurrentSync()
|
|
17581
17627
|
.getInfo()
|
|
@@ -17639,7 +17685,7 @@ class NodeEnvironment extends BaseEnvironment_1 {
|
|
|
17639
17685
|
};
|
|
17640
17686
|
}
|
|
17641
17687
|
getAdapterVersionSync() {
|
|
17642
|
-
return "40.82.
|
|
17688
|
+
return "40.82.20";
|
|
17643
17689
|
}
|
|
17644
17690
|
observeBounds(element, onChange) {
|
|
17645
17691
|
throw new Error('Method not implemented.');
|