@lvce-editor/extension-management-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.
@@ -472,10 +472,10 @@ const create$4 = (method, params) => {
472
472
  };
473
473
  };
474
474
  const callbacks = Object.create(null);
475
- const set$2 = (id, fn) => {
475
+ const set$3 = (id, fn) => {
476
476
  callbacks[id] = fn;
477
477
  };
478
- const get$1 = id => {
478
+ const get$2 = id => {
479
479
  return callbacks[id];
480
480
  };
481
481
  const remove = id => {
@@ -491,7 +491,7 @@ const registerPromise = () => {
491
491
  resolve,
492
492
  promise
493
493
  } = Promise.withResolvers();
494
- set$2(id, resolve);
494
+ set$3(id, resolve);
495
495
  return {
496
496
  id,
497
497
  promise
@@ -656,7 +656,7 @@ const warn = (...args) => {
656
656
  console.warn(...args);
657
657
  };
658
658
  const resolve = (id, response) => {
659
- const fn = get$1(id);
659
+ const fn = get$2(id);
660
660
  if (!fn) {
661
661
  console.log(response);
662
662
  warn(`callback ${id} may already be disposed`);
@@ -836,7 +836,7 @@ const send = (transport, method, ...params) => {
836
836
  const message = create$4(method, params);
837
837
  transport.send(message);
838
838
  };
839
- const invoke$1 = (ipc, method, ...params) => {
839
+ const invoke$2 = (ipc, method, ...params) => {
840
840
  return invokeHelper(ipc, method, params, false);
841
841
  };
842
842
  const invokeAndTransfer = (ipc, method, ...params) => {
@@ -875,7 +875,7 @@ const createRpc = ipc => {
875
875
  send(ipc, method, ...params);
876
876
  },
877
877
  invoke(method, ...params) {
878
- return invoke$1(ipc, method, ...params);
878
+ return invoke$2(ipc, method, ...params);
879
879
  },
880
880
  invokeAndTransfer(method, ...params) {
881
881
  return invokeAndTransfer(ipc, method, ...params);
@@ -952,53 +952,102 @@ const WebWorkerRpcClient = {
952
952
  };
953
953
 
954
954
  const RendererWorker = 1;
955
+ const SharedProcess = 1;
955
956
 
956
957
  const rpcs = Object.create(null);
957
- const set$1 = (id, rpc) => {
958
+ const set$2 = (id, rpc) => {
958
959
  rpcs[id] = rpc;
959
960
  };
960
- const get = id => {
961
+ const get$1 = id => {
961
962
  return rpcs[id];
962
963
  };
963
964
 
964
965
  const create = rpcId => {
965
966
  return {
967
+ async dispose() {
968
+ const rpc = get$1(rpcId);
969
+ await rpc.dispose();
970
+ },
966
971
  // @ts-ignore
967
972
  invoke(method, ...params) {
968
- const rpc = get(rpcId);
973
+ const rpc = get$1(rpcId);
969
974
  // @ts-ignore
970
975
  return rpc.invoke(method, ...params);
971
976
  },
972
977
  // @ts-ignore
973
978
  invokeAndTransfer(method, ...params) {
974
- const rpc = get(rpcId);
979
+ const rpc = get$1(rpcId);
975
980
  // @ts-ignore
976
981
  return rpc.invokeAndTransfer(method, ...params);
977
982
  },
978
983
  set(rpc) {
979
- set$1(rpcId, rpc);
980
- },
981
- async dispose() {
982
- const rpc = get(rpcId);
983
- await rpc.dispose();
984
+ set$2(rpcId, rpc);
984
985
  }
985
986
  };
986
987
  };
987
988
 
988
989
  const {
989
- invoke,
990
- set} = create(RendererWorker);
990
+ invoke: invoke$1,
991
+ set: set$1
992
+ } = create(RendererWorker);
991
993
  const getExtension$1 = async id => {
992
994
  // @ts-ignore
993
- return invoke('ExtensionManagement.getExtension', id);
995
+ return invoke$1('ExtensionManagement.getExtension', id);
994
996
  };
995
997
 
996
- const disableExtension = async () => {
997
- // TODO
998
+ const {
999
+ invoke} = create(SharedProcess);
1000
+
1001
+ const invalidateExtensionsCache = async () => {
1002
+ await invoke$1('ExtensionManagement.invalidateExtensionsCache');
998
1003
  };
999
1004
 
1000
- const enableExtension = async () => {
1001
- // TODO
1005
+ let state = {
1006
+ disabledIds: []
1007
+ };
1008
+ const set = newState => {
1009
+ state = newState;
1010
+ };
1011
+ const get = () => {
1012
+ return state;
1013
+ };
1014
+
1015
+ const disableExtension = async (id, isTest) => {
1016
+ try {
1017
+ if (isTest) {
1018
+ const oldState = get();
1019
+ const newState = {
1020
+ ...oldState,
1021
+ disabledIds: [...oldState.disabledIds, id]
1022
+ };
1023
+ set(newState);
1024
+ } else {
1025
+ await invoke('ExtensionManagement.disable', id);
1026
+ }
1027
+ await invalidateExtensionsCache();
1028
+ return undefined;
1029
+ } catch (error) {
1030
+ return error;
1031
+ }
1032
+ };
1033
+
1034
+ const enableExtension = async (id, isTest) => {
1035
+ try {
1036
+ if (isTest) {
1037
+ const oldState = get();
1038
+ const newState = {
1039
+ ...oldState,
1040
+ disabledIds: oldState.disabledIds.filter(existing => existing !== id)
1041
+ };
1042
+ set(newState);
1043
+ } else {
1044
+ await invoke('ExtensionManagement.enable', /* id */id);
1045
+ }
1046
+ await invalidateExtensionsCache();
1047
+ return undefined;
1048
+ } catch (error) {
1049
+ return error;
1050
+ }
1002
1051
  };
1003
1052
 
1004
1053
  const getExtension = async id => {
@@ -1016,6 +1065,10 @@ const handleMessagePort = async port => {
1016
1065
  });
1017
1066
  };
1018
1067
 
1068
+ const initialize = async () => {
1069
+ // TODO create connection to shared process
1070
+ };
1071
+
1019
1072
  const installExtension = async () => {
1020
1073
  // TODO
1021
1074
  };
@@ -1029,6 +1082,7 @@ const commandMap = {
1029
1082
  'Extensions.enable': enableExtension,
1030
1083
  'Extensions.getExtension': getExtension,
1031
1084
  'Extensions.handleMessagePort': handleMessagePort,
1085
+ 'Extensions.initialize': initialize,
1032
1086
  'Extensions.install': installExtension,
1033
1087
  'Extensions.uninstall': uninstallExtension
1034
1088
  };
@@ -1038,7 +1092,7 @@ const listen = async () => {
1038
1092
  const rpc = await WebWorkerRpcClient.create({
1039
1093
  commandMap: commandMap
1040
1094
  });
1041
- set(rpc);
1095
+ set$1(rpc);
1042
1096
  };
1043
1097
 
1044
1098
  const main = async () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/extension-management-worker",
3
- "version": "1.2.0",
3
+ "version": "1.4.0",
4
4
  "description": "Webworker for the Extension Management functionality in Lvce Editor.",
5
5
  "keywords": [
6
6
  "web-worker"