@lvce-editor/extension-management-worker 2.3.0 → 3.0.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.
@@ -540,7 +540,7 @@ const waitForWebSocketToBeOpen = webSocket => {
540
540
  open: Open
541
541
  });
542
542
  };
543
- const create$7 = async ({
543
+ const create$6 = async ({
544
544
  webSocket
545
545
  }) => {
546
546
  const firstWebSocketEvent = await waitForWebSocketToBeOpen(webSocket);
@@ -577,60 +577,18 @@ const wrap = webSocket => {
577
577
  };
578
578
  const IpcParentWithWebSocket$1 = {
579
579
  __proto__: null,
580
- create: create$7,
580
+ create: create$6,
581
581
  wrap
582
582
  };
583
583
 
584
- const Two = '2.0';
585
- const create$4$1 = (method, params) => {
586
- return {
587
- jsonrpc: Two,
588
- method,
589
- params
590
- };
591
- };
584
+ const Two$1 = '2.0';
592
585
  const callbacks = Object.create(null);
593
- const set$8 = (id, fn) => {
594
- callbacks[id] = fn;
595
- };
596
586
  const get$5 = id => {
597
587
  return callbacks[id];
598
588
  };
599
- const remove = id => {
589
+ const remove$1 = id => {
600
590
  delete callbacks[id];
601
591
  };
602
- let id$1 = 0;
603
- const create$3$1 = () => {
604
- return ++id$1;
605
- };
606
- const registerPromise = () => {
607
- const id = create$3$1();
608
- const {
609
- resolve,
610
- promise
611
- } = Promise.withResolvers();
612
- set$8(id, resolve);
613
- return {
614
- id,
615
- promise
616
- };
617
- };
618
- const create$2$1 = (method, params) => {
619
- const {
620
- id,
621
- promise
622
- } = registerPromise();
623
- const message = {
624
- jsonrpc: Two,
625
- method,
626
- params,
627
- id
628
- };
629
- return {
630
- message,
631
- promise
632
- };
633
- };
634
592
  class JsonRpcError extends Error {
635
593
  constructor(message) {
636
594
  super(message);
@@ -781,7 +739,7 @@ const resolve = (id, response) => {
781
739
  return;
782
740
  }
783
741
  fn(response);
784
- remove(id);
742
+ remove$1(id);
785
743
  };
786
744
  const E_COMMAND_NOT_FOUND = 'E_COMMAND_NOT_FOUND';
787
745
  const getErrorType = prettyError => {
@@ -824,9 +782,9 @@ const getErrorProperty = (error, prettyError) => {
824
782
  }
825
783
  };
826
784
  };
827
- const create$1$2 = (id, error) => {
785
+ const create$1$1 = (id, error) => {
828
786
  return {
829
- jsonrpc: Two,
787
+ jsonrpc: Two$1,
830
788
  id,
831
789
  error
832
790
  };
@@ -835,22 +793,22 @@ const getErrorResponse = (id, error, preparePrettyError, logError) => {
835
793
  const prettyError = preparePrettyError(error);
836
794
  logError(error, prettyError);
837
795
  const errorProperty = getErrorProperty(error, prettyError);
838
- return create$1$2(id, errorProperty);
796
+ return create$1$1(id, errorProperty);
839
797
  };
840
- const create$6 = (message, result) => {
798
+ const create$4 = (message, result) => {
841
799
  return {
842
- jsonrpc: Two,
800
+ jsonrpc: Two$1,
843
801
  id: message.id,
844
802
  result: result ?? null
845
803
  };
846
804
  };
847
805
  const getSuccessResponse = (message, result) => {
848
806
  const resultProperty = result ?? null;
849
- return create$6(message, resultProperty);
807
+ return create$4(message, resultProperty);
850
808
  };
851
809
  const getErrorResponseSimple = (id, error) => {
852
810
  return {
853
- jsonrpc: Two,
811
+ jsonrpc: Two$1,
854
812
  id,
855
813
  error: {
856
814
  code: Custom,
@@ -937,29 +895,6 @@ const handleJsonRpcMessage = async (...args) => {
937
895
  }
938
896
  throw new JsonRpcError('unexpected message');
939
897
  };
940
- const invokeHelper = async (ipc, method, params, useSendAndTransfer) => {
941
- const {
942
- message,
943
- promise
944
- } = create$2$1(method, params);
945
- if (useSendAndTransfer && ipc.sendAndTransfer) {
946
- ipc.sendAndTransfer(message);
947
- } else {
948
- ipc.send(message);
949
- }
950
- const responseMessage = await promise;
951
- return unwrapJsonRpcResult(responseMessage);
952
- };
953
- const send = (transport, method, ...params) => {
954
- const message = create$4$1(method, params);
955
- transport.send(message);
956
- };
957
- const invoke$5 = (ipc, method, ...params) => {
958
- return invokeHelper(ipc, method, params, false);
959
- };
960
- const invokeAndTransfer$2 = (ipc, method, ...params) => {
961
- return invokeHelper(ipc, method, params, true);
962
- };
963
898
 
964
899
  class CommandNotFoundError extends Error {
965
900
  constructor(command) {
@@ -982,24 +917,87 @@ const execute = (command, ...args) => {
982
917
  return fn(...args);
983
918
  };
984
919
 
920
+ const Two = '2.0';
921
+ const create$t = (method, params) => {
922
+ return {
923
+ jsonrpc: Two,
924
+ method,
925
+ params
926
+ };
927
+ };
928
+ const create$s = (id, method, params) => {
929
+ const message = {
930
+ id,
931
+ jsonrpc: Two,
932
+ method,
933
+ params
934
+ };
935
+ return message;
936
+ };
937
+ let id$1 = 0;
938
+ const create$r = () => {
939
+ return ++id$1;
940
+ };
941
+
942
+ /* eslint-disable n/no-unsupported-features/es-syntax */
943
+
944
+ const registerPromise = map => {
945
+ const id = create$r();
946
+ const {
947
+ promise,
948
+ resolve
949
+ } = Promise.withResolvers();
950
+ map[id] = resolve;
951
+ return {
952
+ id,
953
+ promise
954
+ };
955
+ };
956
+
957
+ // @ts-ignore
958
+ const invokeHelper = async (callbacks, ipc, method, params, useSendAndTransfer) => {
959
+ const {
960
+ id,
961
+ promise
962
+ } = registerPromise(callbacks);
963
+ const message = create$s(id, method, params);
964
+ if (useSendAndTransfer && ipc.sendAndTransfer) {
965
+ ipc.sendAndTransfer(message);
966
+ } else {
967
+ ipc.send(message);
968
+ }
969
+ const responseMessage = await promise;
970
+ return unwrapJsonRpcResult(responseMessage);
971
+ };
985
972
  const createRpc = ipc => {
973
+ const callbacks = Object.create(null);
974
+ ipc._resolve = (id, response) => {
975
+ const fn = callbacks[id];
976
+ if (!fn) {
977
+ console.warn(`callback ${id} may already be disposed`);
978
+ return;
979
+ }
980
+ fn(response);
981
+ delete callbacks[id];
982
+ };
986
983
  const rpc = {
984
+ async dispose() {
985
+ await ipc?.dispose();
986
+ },
987
+ invoke(method, ...params) {
988
+ return invokeHelper(callbacks, ipc, method, params, false);
989
+ },
990
+ invokeAndTransfer(method, ...params) {
991
+ return invokeHelper(callbacks, ipc, method, params, true);
992
+ },
987
993
  // @ts-ignore
988
994
  ipc,
989
995
  /**
990
996
  * @deprecated
991
997
  */
992
998
  send(method, ...params) {
993
- send(ipc, method, ...params);
994
- },
995
- invoke(method, ...params) {
996
- return invoke$5(ipc, method, ...params);
997
- },
998
- invokeAndTransfer(method, ...params) {
999
- return invokeAndTransfer$2(ipc, method, ...params);
1000
- },
1001
- async dispose() {
1002
- await ipc?.dispose();
999
+ const message = create$t(method, params);
1000
+ ipc.send(message);
1003
1001
  }
1004
1002
  };
1005
1003
  return rpc;
@@ -1016,7 +1014,7 @@ const logError = () => {
1016
1014
  const handleMessage = event => {
1017
1015
  const actualRequiresSocket = event?.target?.requiresSocket || requiresSocket;
1018
1016
  const actualExecute = event?.target?.execute || execute;
1019
- return handleJsonRpcMessage(event.target, event.data, actualExecute, resolve, preparePrettyError, logError, actualRequiresSocket);
1017
+ return handleJsonRpcMessage(event.target, event.data, actualExecute, event.target._resolve, preparePrettyError, logError, actualRequiresSocket);
1020
1018
  };
1021
1019
  const handleIpc = ipc => {
1022
1020
  if ('addEventListener' in ipc) {
@@ -1034,16 +1032,64 @@ const listen$1 = async (module, options) => {
1034
1032
  const ipc = module.wrap(rawIpc);
1035
1033
  return ipc;
1036
1034
  };
1035
+ const Https = 'https:';
1036
+ const Ws = 'ws:';
1037
+ const Wss = 'wss:';
1038
+ const getWebSocketProtocol = locationProtocol => {
1039
+ return locationProtocol === Https ? Wss : Ws;
1040
+ };
1041
+ const getWebSocketUrl = (type, host, locationProtocol) => {
1042
+ const wsProtocol = getWebSocketProtocol(locationProtocol);
1043
+ return `${wsProtocol}//${host}/websocket/${type}`;
1044
+ };
1045
+ const getHost = () => {
1046
+ return location.host;
1047
+ };
1048
+ const getProtocol = () => {
1049
+ return location.protocol;
1050
+ };
1051
+ const create$i = async ({
1052
+ commandMap,
1053
+ webSocket
1054
+ }) => {
1055
+ // TODO create a commandMap per rpc instance
1056
+ register(commandMap);
1057
+ const rawIpc = await IpcParentWithWebSocket$1.create({
1058
+ webSocket
1059
+ });
1060
+ const ipc = IpcParentWithWebSocket$1.wrap(rawIpc);
1061
+ handleIpc(ipc);
1062
+ const rpc = createRpc(ipc);
1063
+ return rpc;
1064
+ };
1065
+ const create$h = async ({
1066
+ commandMap,
1067
+ type
1068
+ }) => {
1069
+ const host = getHost();
1070
+ const protocol = getProtocol();
1071
+ const wsUrl = getWebSocketUrl(type, host, protocol);
1072
+ const webSocket = new WebSocket(wsUrl);
1073
+ const rpc = await create$i({
1074
+ commandMap,
1075
+ webSocket
1076
+ });
1077
+ return rpc;
1078
+ };
1079
+ const WebSocketRpcParent2 = {
1080
+ __proto__: null,
1081
+ create: create$h
1082
+ };
1037
1083
  const create$e = async ({
1038
1084
  commandMap,
1039
- messagePort,
1040
- isMessagePortOpen
1085
+ isMessagePortOpen,
1086
+ messagePort
1041
1087
  }) => {
1042
1088
  // TODO create a commandMap per rpc instance
1043
1089
  register(commandMap);
1044
1090
  const rawIpc = await IpcParentWithMessagePort$1.create({
1045
- messagePort,
1046
- isMessagePortOpen
1091
+ isMessagePortOpen,
1092
+ messagePort
1047
1093
  });
1048
1094
  const ipc = IpcParentWithMessagePort$1.wrap(rawIpc);
1049
1095
  handleIpc(ipc);
@@ -1056,13 +1102,14 @@ const MessagePortRpcParent = {
1056
1102
  };
1057
1103
  const create$5 = async ({
1058
1104
  commandMap,
1105
+ isMessagePortOpen = true,
1059
1106
  messagePort
1060
1107
  }) => {
1061
1108
  // TODO create a commandMap per rpc instance
1062
1109
  register(commandMap);
1063
1110
  const rawIpc = await IpcParentWithMessagePort$1.create({
1064
- messagePort,
1065
- isMessagePortOpen: true
1111
+ isMessagePortOpen,
1112
+ messagePort
1066
1113
  });
1067
1114
  const ipc = IpcParentWithMessagePort$1.wrap(rawIpc);
1068
1115
  handleIpc(ipc);
@@ -1076,6 +1123,7 @@ const PlainMessagePortRpc = {
1076
1123
  };
1077
1124
  const create$3 = async ({
1078
1125
  commandMap,
1126
+ isMessagePortOpen,
1079
1127
  send
1080
1128
  }) => {
1081
1129
  const {
@@ -1085,6 +1133,7 @@ const create$3 = async ({
1085
1133
  await send(port1);
1086
1134
  return create$5({
1087
1135
  commandMap,
1136
+ isMessagePortOpen,
1088
1137
  messagePort: port2
1089
1138
  });
1090
1139
  };
@@ -1093,54 +1142,6 @@ const TransferMessagePortRpcParent = {
1093
1142
  create: create$3
1094
1143
  };
1095
1144
  const create$2 = async ({
1096
- commandMap,
1097
- webSocket
1098
- }) => {
1099
- // TODO create a commandMap per rpc instance
1100
- register(commandMap);
1101
- const rawIpc = await IpcParentWithWebSocket$1.create({
1102
- webSocket
1103
- });
1104
- const ipc = IpcParentWithWebSocket$1.wrap(rawIpc);
1105
- handleIpc(ipc);
1106
- const rpc = createRpc(ipc);
1107
- return rpc;
1108
- };
1109
- const Https = 'https:';
1110
- const Ws = 'ws:';
1111
- const Wss = 'wss:';
1112
- const getWebSocketProtocol = locationProtocol => {
1113
- return locationProtocol === Https ? Wss : Ws;
1114
- };
1115
- const getWebSocketUrl = (type, host, locationProtocol) => {
1116
- const wsProtocol = getWebSocketProtocol(locationProtocol);
1117
- return `${wsProtocol}//${host}/websocket/${type}`;
1118
- };
1119
- const getHost = () => {
1120
- return location.host;
1121
- };
1122
- const getProtocol = () => {
1123
- return location.protocol;
1124
- };
1125
- const create$1$1 = async ({
1126
- commandMap,
1127
- type
1128
- }) => {
1129
- const host = getHost();
1130
- const protocol = getProtocol();
1131
- const wsUrl = getWebSocketUrl(type, host, protocol);
1132
- const webSocket = new WebSocket(wsUrl);
1133
- const rpc = await create$2({
1134
- webSocket,
1135
- commandMap
1136
- });
1137
- return rpc;
1138
- };
1139
- const WebSocketRpcParent2 = {
1140
- __proto__: null,
1141
- create: create$1$1
1142
- };
1143
- const create$4 = async ({
1144
1145
  commandMap
1145
1146
  }) => {
1146
1147
  // TODO create a commandMap per rpc instance
@@ -1152,7 +1153,26 @@ const create$4 = async ({
1152
1153
  };
1153
1154
  const WebWorkerRpcClient = {
1154
1155
  __proto__: null,
1155
- create: create$4
1156
+ create: create$2
1157
+ };
1158
+ const createMockRpc = ({
1159
+ commandMap
1160
+ }) => {
1161
+ const invocations = [];
1162
+ const invoke = (method, ...params) => {
1163
+ invocations.push([method, ...params]);
1164
+ const command = commandMap[method];
1165
+ if (!command) {
1166
+ throw new Error(`command ${method} not found`);
1167
+ }
1168
+ return command(...params);
1169
+ };
1170
+ const mockRpc = {
1171
+ invocations,
1172
+ invoke,
1173
+ invokeAndTransfer: invoke
1174
+ };
1175
+ return mockRpc;
1156
1176
  };
1157
1177
 
1158
1178
  const Web = 1;
@@ -1172,7 +1192,11 @@ const set$7 = (id, rpc) => {
1172
1192
  const get$4 = id => {
1173
1193
  return rpcs$1[id];
1174
1194
  };
1195
+ const remove = id => {
1196
+ delete rpcs$1[id];
1197
+ };
1175
1198
 
1199
+ /* eslint-disable @typescript-eslint/explicit-function-return-type */
1176
1200
  const create$1 = rpcId => {
1177
1201
  return {
1178
1202
  async dispose() {
@@ -1191,6 +1215,18 @@ const create$1 = rpcId => {
1191
1215
  // @ts-ignore
1192
1216
  return rpc.invokeAndTransfer(method, ...params);
1193
1217
  },
1218
+ registerMockRpc(commandMap) {
1219
+ const mockRpc = createMockRpc({
1220
+ commandMap
1221
+ });
1222
+ set$7(rpcId, mockRpc);
1223
+ // @ts-ignore
1224
+ mockRpc[Symbol.dispose] = () => {
1225
+ remove(rpcId);
1226
+ };
1227
+ // @ts-ignore
1228
+ return mockRpc;
1229
+ },
1194
1230
  set(rpc) {
1195
1231
  set$7(rpcId, rpc);
1196
1232
  }
@@ -1213,7 +1249,6 @@ const writeFile = async (uri, content) => {
1213
1249
  return invoke$3('FileSystem.writeFile', uri, content);
1214
1250
  };
1215
1251
  const exists = async uri => {
1216
- // @ts-ignore
1217
1252
  return invoke$3('FileSystem.exists', uri);
1218
1253
  };
1219
1254
 
@@ -1917,7 +1952,7 @@ const getWebExtensions = async assetDir => {
1917
1952
  };
1918
1953
 
1919
1954
  const getAllExtensions = async (assetDir, platform) => {
1920
- if (!assetDir) {
1955
+ if (typeof assetDir !== 'string') {
1921
1956
  assetDir = await invoke$2('Layout.getAssetDir');
1922
1957
  }
1923
1958
  if (!platform) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/extension-management-worker",
3
- "version": "2.3.0",
3
+ "version": "3.0.0",
4
4
  "description": "Webworker for the Extension Management functionality in Lvce Editor.",
5
5
  "keywords": [
6
6
  "web-worker"