@lvce-editor/opener-worker 1.2.0 → 1.4.0

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.
@@ -677,7 +677,7 @@ const getErrorResponse = (id, error, preparePrettyError, logError) => {
677
677
  const errorProperty = getErrorProperty(error, prettyError);
678
678
  return create$1(id, errorProperty);
679
679
  };
680
- const create$3 = (message, result) => {
680
+ const create$6 = (message, result) => {
681
681
  return {
682
682
  jsonrpc: Two$1,
683
683
  id: message.id,
@@ -686,7 +686,7 @@ const create$3 = (message, result) => {
686
686
  };
687
687
  const getSuccessResponse = (message, result) => {
688
688
  const resultProperty = result ?? null;
689
- return create$3(message, resultProperty);
689
+ return create$6(message, resultProperty);
690
690
  };
691
691
  const getErrorResponseSimple = (id, error) => {
692
692
  return {
@@ -944,6 +944,26 @@ const PlainMessagePortRpcParent = {
944
944
  __proto__: null,
945
945
  create: create$4
946
946
  };
947
+ const create$3 = async ({
948
+ commandMap,
949
+ isMessagePortOpen,
950
+ send
951
+ }) => {
952
+ const {
953
+ port1,
954
+ port2
955
+ } = new MessageChannel();
956
+ await send(port1);
957
+ return create$5({
958
+ commandMap,
959
+ isMessagePortOpen,
960
+ messagePort: port2
961
+ });
962
+ };
963
+ const TransferMessagePortRpcParent = {
964
+ __proto__: null,
965
+ create: create$3
966
+ };
947
967
  const create$2 = async ({
948
968
  commandMap
949
969
  }) => {
@@ -984,7 +1004,7 @@ const RendererWorker = 1;
984
1004
  const SharedProcess = 1492;
985
1005
 
986
1006
  const rpcs = Object.create(null);
987
- const set$2 = (id, rpc) => {
1007
+ const set$3 = (id, rpc) => {
988
1008
  rpcs[id] = rpc;
989
1009
  };
990
1010
  const get$1 = id => {
@@ -1017,7 +1037,7 @@ const create = rpcId => {
1017
1037
  const mockRpc = createMockRpc({
1018
1038
  commandMap
1019
1039
  });
1020
- set$2(rpcId, mockRpc);
1040
+ set$3(rpcId, mockRpc);
1021
1041
  // @ts-ignore
1022
1042
  mockRpc[Symbol.dispose] = () => {
1023
1043
  remove(rpcId);
@@ -1026,18 +1046,26 @@ const create = rpcId => {
1026
1046
  return mockRpc;
1027
1047
  },
1028
1048
  set(rpc) {
1029
- set$2(rpcId, rpc);
1049
+ set$3(rpcId, rpc);
1030
1050
  }
1031
1051
  };
1032
1052
  };
1033
1053
 
1034
1054
  const {
1035
1055
  invoke: invoke$2,
1036
- set: set$1
1056
+ invokeAndTransfer,
1057
+ set: set$2
1037
1058
  } = create(RendererWorker);
1059
+ const sendMessagePortToSharedProcess = async port => {
1060
+ const command = 'HandleElectronMessagePort.handleElectronMessagePort';
1061
+ // @ts-ignore
1062
+ await invokeAndTransfer('SendMessagePortToExtensionHostWorker.sendMessagePortToSharedProcess', port, command, 0);
1063
+ };
1038
1064
 
1039
1065
  const {
1040
- invoke: invoke$1} = create(SharedProcess);
1066
+ invoke: invoke$1,
1067
+ set: set$1
1068
+ } = create(SharedProcess);
1041
1069
 
1042
1070
  const handleMessagePort = async (port, rpcId) => {
1043
1071
  const rpc = await PlainMessagePortRpcParent.create({
@@ -1045,7 +1073,7 @@ const handleMessagePort = async (port, rpcId) => {
1045
1073
  messagePort: port
1046
1074
  });
1047
1075
  if (rpcId) {
1048
- set$2(rpcId, rpc);
1076
+ set$3(rpcId, rpc);
1049
1077
  }
1050
1078
  };
1051
1079
 
@@ -1121,23 +1149,57 @@ const enable = () => {
1121
1149
  return set(true);
1122
1150
  };
1123
1151
 
1152
+ let saveDialogMockReturnValue = null;
1153
+ const registerSaveDialogMock = value => {
1154
+ saveDialogMockReturnValue = value;
1155
+ };
1156
+ const clearSaveDialogMock = () => {
1157
+ saveDialogMockReturnValue = null;
1158
+ };
1159
+ const showSaveDialog = async (title, properties, platform) => {
1160
+ if (saveDialogMockReturnValue !== null) {
1161
+ return saveDialogMockReturnValue;
1162
+ }
1163
+ if (platform === Electron) {
1164
+ return invoke$1('ElectronDialog.showSaveDialog', title, properties);
1165
+ }
1166
+ // TODO when running in web, maybe only make a prompt and ask for a filename
1167
+ // and the use the workspace path as directory
1168
+ return invoke$2('ConfirmPompt.prompt', title);
1169
+ };
1170
+
1124
1171
  const commandMap = {
1125
1172
  'HandleMessagePort.handleMessagePort': handleMessagePort,
1126
1173
  'Open.enableMemoryOpener': enable,
1127
1174
  'Open.openExternal': openExternal,
1128
1175
  'Open.openUrl': openUrl,
1129
- 'Open.readOpenedUrl': readOpenedMemory
1176
+ 'Open.readOpenedUrl': readOpenedMemory,
1177
+ 'Open.showSaveDialog': showSaveDialog,
1178
+ 'ShowSaveDialog.clearSaveDialogMock': clearSaveDialogMock,
1179
+ 'ShowSaveDialog.registerSaveDialogMock': registerSaveDialogMock
1180
+ };
1181
+
1182
+ const send = async port => {
1183
+ await sendMessagePortToSharedProcess(port);
1184
+ };
1185
+ const initializeMainProcess = async () => {
1186
+ const rpc = await TransferMessagePortRpcParent.create({
1187
+ commandMap: commandMap,
1188
+ send
1189
+ });
1190
+ set$1(rpc);
1130
1191
  };
1131
1192
 
1132
1193
  const initializeRendererWorker = async () => {
1133
1194
  const rpc = await WebWorkerRpcClient.create({
1134
1195
  commandMap: commandMap
1135
1196
  });
1136
- set$1(rpc);
1197
+ set$2(rpc);
1137
1198
  };
1138
1199
 
1139
1200
  const listen = async () => {
1140
1201
  await initializeRendererWorker();
1202
+ await initializeMainProcess();
1141
1203
  };
1142
1204
 
1143
1205
  const main = async () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/opener-worker",
3
- "version": "1.2.0",
3
+ "version": "1.4.0",
4
4
  "description": "Opener Worker",
5
5
  "repository": {
6
6
  "type": "git",