@lvce-editor/extension-management-worker 4.6.0 → 4.8.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.
@@ -604,10 +604,10 @@ const execute = (command, ...args) => {
604
604
 
605
605
  const Two$1 = '2.0';
606
606
  const callbacks = Object.create(null);
607
- const get$5 = id => {
607
+ const get$6 = id => {
608
608
  return callbacks[id];
609
609
  };
610
- const remove$1 = id => {
610
+ const remove$2 = id => {
611
611
  delete callbacks[id];
612
612
  };
613
613
  class JsonRpcError extends Error {
@@ -753,14 +753,14 @@ const warn$1 = (...args) => {
753
753
  console.warn(...args);
754
754
  };
755
755
  const resolve = (id, response) => {
756
- const fn = get$5(id);
756
+ const fn = get$6(id);
757
757
  if (!fn) {
758
758
  console.log(response);
759
759
  warn$1(`callback ${id} may already be disposed`);
760
760
  return;
761
761
  }
762
762
  fn(response);
763
- remove$1(id);
763
+ remove$2(id);
764
764
  };
765
765
  const E_COMMAND_NOT_FOUND = 'E_COMMAND_NOT_FOUND';
766
766
  const getErrorType = prettyError => {
@@ -1212,13 +1212,13 @@ const createMockRpc = ({
1212
1212
  };
1213
1213
 
1214
1214
  const rpcs$2 = Object.create(null);
1215
- const set$8 = (id, rpc) => {
1215
+ const set$9 = (id, rpc) => {
1216
1216
  rpcs$2[id] = rpc;
1217
1217
  };
1218
- const get$4 = id => {
1218
+ const get$5 = id => {
1219
1219
  return rpcs$2[id];
1220
1220
  };
1221
- const remove = id => {
1221
+ const remove$1 = id => {
1222
1222
  delete rpcs$2[id];
1223
1223
  };
1224
1224
 
@@ -1226,18 +1226,18 @@ const remove = id => {
1226
1226
  const create$1 = rpcId => {
1227
1227
  return {
1228
1228
  async dispose() {
1229
- const rpc = get$4(rpcId);
1229
+ const rpc = get$5(rpcId);
1230
1230
  await rpc.dispose();
1231
1231
  },
1232
1232
  // @ts-ignore
1233
1233
  invoke(method, ...params) {
1234
- const rpc = get$4(rpcId);
1234
+ const rpc = get$5(rpcId);
1235
1235
  // @ts-ignore
1236
1236
  return rpc.invoke(method, ...params);
1237
1237
  },
1238
1238
  // @ts-ignore
1239
1239
  invokeAndTransfer(method, ...params) {
1240
- const rpc = get$4(rpcId);
1240
+ const rpc = get$5(rpcId);
1241
1241
  // @ts-ignore
1242
1242
  return rpc.invokeAndTransfer(method, ...params);
1243
1243
  },
@@ -1245,16 +1245,16 @@ const create$1 = rpcId => {
1245
1245
  const mockRpc = createMockRpc({
1246
1246
  commandMap
1247
1247
  });
1248
- set$8(rpcId, mockRpc);
1248
+ set$9(rpcId, mockRpc);
1249
1249
  // @ts-ignore
1250
1250
  mockRpc[Symbol.dispose] = () => {
1251
- remove(rpcId);
1251
+ remove$1(rpcId);
1252
1252
  };
1253
1253
  // @ts-ignore
1254
1254
  return mockRpc;
1255
1255
  },
1256
1256
  set(rpc) {
1257
- set$8(rpcId, rpc);
1257
+ set$9(rpcId, rpc);
1258
1258
  }
1259
1259
  };
1260
1260
  };
@@ -1274,7 +1274,7 @@ const {
1274
1274
  invoke: invoke$5,
1275
1275
  invokeAndTransfer: invokeAndTransfer$2,
1276
1276
  registerMockRpc,
1277
- set: set$7
1277
+ set: set$8
1278
1278
  } = create$1(ExtensionHostWorker);
1279
1279
  const executeReferenceProvider = async (id, offset) => {
1280
1280
  // @ts-ignore
@@ -1303,12 +1303,12 @@ const ExtensionHost = {
1303
1303
  invoke: invoke$5,
1304
1304
  invokeAndTransfer: invokeAndTransfer$2,
1305
1305
  registerMockRpc,
1306
- set: set$7
1306
+ set: set$8
1307
1307
  };
1308
1308
 
1309
1309
  const {
1310
1310
  invoke: invoke$4,
1311
- set: set$6
1311
+ set: set$7
1312
1312
  } = create$1(FileSystemWorker);
1313
1313
  const readFile = async uri => {
1314
1314
  return invoke$4('FileSystem.readFile', uri);
@@ -1323,13 +1323,13 @@ const exists = async uri => {
1323
1323
  const {
1324
1324
  invoke: invoke$3,
1325
1325
  invokeAndTransfer: invokeAndTransfer$1,
1326
- set: set$5
1326
+ set: set$6
1327
1327
  } = create$1(RendererWorker);
1328
1328
  const sendMessagePortToIconThemeWorker = async (port, rpcId) => {
1329
1329
  const command = 'IconTheme.handleMessagePort';
1330
1330
  await invokeAndTransfer$1('SendMessagePortToExtensionHostWorker.sendMessagePortToIconThemeWorker', port, command, rpcId);
1331
1331
  };
1332
- const sendMessagePortToFileSystemWorker = async (port, rpcId) => {
1332
+ const sendMessagePortToFileSystemWorker$1 = async (port, rpcId) => {
1333
1333
  const command = 'FileSystem.handleMessagePort';
1334
1334
  await invokeAndTransfer$1('SendMessagePortToExtensionHostWorker.sendMessagePortToFileSystemWorker', port, command, rpcId);
1335
1335
  };
@@ -1344,7 +1344,7 @@ const sendMessagePortToSharedProcess = async port => {
1344
1344
 
1345
1345
  const {
1346
1346
  invoke: invoke$2,
1347
- set: set$4
1347
+ set: set$5
1348
1348
  } = create$1(SharedProcess);
1349
1349
 
1350
1350
  const create = () => {
@@ -1394,14 +1394,14 @@ const createEmptyRuntimeStatus = id => {
1394
1394
  const state$1 = {
1395
1395
  extensionsState: createInitialState()
1396
1396
  };
1397
- const get$3 = () => {
1397
+ const get$4 = () => {
1398
1398
  return state$1.extensionsState;
1399
1399
  };
1400
- const set$3 = newState => {
1400
+ const set$4 = newState => {
1401
1401
  state$1.extensionsState = newState;
1402
1402
  };
1403
1403
  const update = newState => {
1404
- set$3({
1404
+ set$4({
1405
1405
  ...state$1.extensionsState,
1406
1406
  ...newState
1407
1407
  });
@@ -1557,13 +1557,13 @@ const activateExtension2 = async (extensionId, extension, absolutePath, extensio
1557
1557
  const commandMapRef = {};
1558
1558
 
1559
1559
  const rpcs$1 = Object.create(null);
1560
- const get$2 = extensionId => {
1560
+ const get$3 = extensionId => {
1561
1561
  return rpcs$1[extensionId];
1562
1562
  };
1563
1563
  const getAll = () => {
1564
1564
  return Object.values(rpcs$1);
1565
1565
  };
1566
- const set$2 = (extensionId, rpc) => {
1566
+ const set$3 = (extensionId, rpc) => {
1567
1567
  rpcs$1[extensionId] = rpc;
1568
1568
  };
1569
1569
 
@@ -1585,12 +1585,12 @@ const createIsolatedExtensionHostWorker = async (extensionId, absolutePath, crea
1585
1585
  });
1586
1586
  };
1587
1587
  const getOrCreateIsolatedExtensionHostWorker = async (extensionId, absolutePath) => {
1588
- const existingRpc = get$2(extensionId);
1588
+ const existingRpc = get$3(extensionId);
1589
1589
  if (existingRpc) {
1590
1590
  return existingRpc;
1591
1591
  }
1592
1592
  const rpc = await createIsolatedExtensionHostWorker(extensionId, absolutePath, create$7, invokeAndTransfer);
1593
- set$2(extensionId, rpc);
1593
+ set$3(extensionId, rpc);
1594
1594
  return rpc;
1595
1595
  };
1596
1596
 
@@ -1598,7 +1598,7 @@ const rpcs = Object.create(null);
1598
1598
  const add = (id, rpc) => {
1599
1599
  rpcs[id] = rpc;
1600
1600
  };
1601
- const get$1 = id => {
1601
+ const get$2 = id => {
1602
1602
  return rpcs[id];
1603
1603
  };
1604
1604
 
@@ -1768,7 +1768,7 @@ const getAllExtensionsWithState = async (extensionsState, assetDir, platform) =>
1768
1768
  };
1769
1769
 
1770
1770
  const getAllExtensions = async (assetDir, platform) => {
1771
- return getAllExtensionsWithState(get$3(), assetDir, platform);
1771
+ return getAllExtensionsWithState(get$4(), assetDir, platform);
1772
1772
  };
1773
1773
 
1774
1774
  const activatingExtensions = Object.create(null);
@@ -1836,7 +1836,7 @@ const getWebManifestPath = path => {
1836
1836
  const state = {
1837
1837
  rpc: undefined
1838
1838
  };
1839
- const set$1 = value => {
1839
+ const set$2 = value => {
1840
1840
  state.rpc = value;
1841
1841
  };
1842
1842
  const invoke = async (method, ...params) => {
@@ -1958,13 +1958,13 @@ const disabledExtensionsCacheKey = '/cache/disabledExtensions.json';
1958
1958
  const disableExtension2$1 = async (id, platform) => {
1959
1959
  const isTest = platform === Test;
1960
1960
  const isWeb = platform === Web;
1961
- const oldState = get$3(); // TODO maybe pass in an application id? Would allow multiple editors with different extensions.
1961
+ const oldState = get$4(); // TODO maybe pass in an application id? Would allow multiple editors with different extensions.
1962
1962
  if (isTest) {
1963
1963
  const newState = {
1964
1964
  ...oldState,
1965
1965
  disabledIds: [...oldState.disabledIds, id]
1966
1966
  };
1967
- set$3(newState);
1967
+ set$4(newState);
1968
1968
  } else if (isWeb) {
1969
1969
  const cached = await getJson(disabledExtensionsCacheKey);
1970
1970
  const oldDisabled = cached?.disabledExtensions || [];
@@ -1980,13 +1980,13 @@ const disableExtension2$1 = async (id, platform) => {
1980
1980
  const enableExtension2$1 = async (id, platform) => {
1981
1981
  const isTest = platform === Test;
1982
1982
  const isWeb = platform === Web;
1983
- const oldState = get$3();
1983
+ const oldState = get$4();
1984
1984
  if (isTest) {
1985
1985
  const newState = {
1986
1986
  ...oldState,
1987
1987
  disabledIds: oldState.disabledIds.filter(existing => existing !== id)
1988
1988
  };
1989
- set$3(newState);
1989
+ set$4(newState);
1990
1990
  } else if (isWeb) {
1991
1991
  const cached = await getJson(disabledExtensionsCacheKey);
1992
1992
  const oldDisabled = cached?.disabledExtensions || [];
@@ -2015,7 +2015,7 @@ const disableExtension2 = async (id, platform) => {
2015
2015
  };
2016
2016
 
2017
2017
  const disableExtension = async (id, isTest) => {
2018
- const oldState = get$3();
2018
+ const oldState = get$4();
2019
2019
  return disableExtension2(id, oldState.platform);
2020
2020
  };
2021
2021
 
@@ -2042,7 +2042,7 @@ const enableExtension2 = async (id, platform) => {
2042
2042
  };
2043
2043
 
2044
2044
  const enableExtension = async (id, isTest) => {
2045
- const oldState = get$3();
2045
+ const oldState = get$4();
2046
2046
  return enableExtension2(id, oldState.platform);
2047
2047
  };
2048
2048
 
@@ -2064,12 +2064,12 @@ const getRpcForCommand = async (extensionsState, id, platform) => {
2064
2064
  return undefined;
2065
2065
  }
2066
2066
  const extensionId = getExtensionId$1(extension);
2067
- const existingRpc = get$2(extensionId);
2067
+ const existingRpc = get$3(extensionId);
2068
2068
  if (existingRpc) {
2069
2069
  return existingRpc;
2070
2070
  }
2071
2071
  await activateByEvent(`onCommand:${id}`, '', platform);
2072
- return get$2(extensionId);
2072
+ return get$3(extensionId);
2073
2073
  };
2074
2074
  const executeRendererCommand = (id, args) => {
2075
2075
  return invoke$3(id, ...args);
@@ -2097,7 +2097,7 @@ const getAbsolutePath = (extension, assetDir, platform) => {
2097
2097
  };
2098
2098
  const getRpc$1 = async (extension, assetDir, platform) => {
2099
2099
  const extensionId = getExtensionId(extension);
2100
- const existingRpc = get$2(extensionId);
2100
+ const existingRpc = get$3(extensionId);
2101
2101
  if (existingRpc) {
2102
2102
  return existingRpc;
2103
2103
  }
@@ -2210,6 +2210,67 @@ const executeHoverProvider = async (extensionsState, textDocument, ...args) => {
2210
2210
  return results[0];
2211
2211
  };
2212
2212
 
2213
+ const instances = Object.create(null);
2214
+ const set$1 = (uid, instance) => {
2215
+ instances[uid] = instance;
2216
+ };
2217
+ const get$1 = uid => {
2218
+ return instances[uid];
2219
+ };
2220
+ const remove = uid => {
2221
+ delete instances[uid];
2222
+ };
2223
+
2224
+ const hasView = (extension, viewId) => {
2225
+ return Array.isArray(extension.views) && extension.views.some(view => view.id === viewId);
2226
+ };
2227
+ const getExtensionForView = async (viewId, assetDir, platform) => {
2228
+ const extensions = await getAllExtensions(assetDir, platform);
2229
+ const extension = extensions.find(extension => isExtensionIsolated(extension) && hasView(extension, viewId));
2230
+ if (!extension) {
2231
+ throw new Error(`view ${viewId} not found`);
2232
+ }
2233
+ return extension;
2234
+ };
2235
+ const getRpcForView = async (viewId, assetDir, platform) => {
2236
+ const extension = await getExtensionForView(viewId, assetDir, platform);
2237
+ const existingRpc = get$3(getExtensionId(extension));
2238
+ if (existingRpc) {
2239
+ return existingRpc;
2240
+ }
2241
+ await activateByEvent(`onView:${viewId}`, assetDir, platform);
2242
+ return getRpc$1(extension, assetDir, platform);
2243
+ };
2244
+ const getRpcForInstance = async (viewId, uid, assetDir, platform) => {
2245
+ const instance = get$1(uid);
2246
+ if (instance) {
2247
+ return instance.rpc;
2248
+ }
2249
+ return getRpcForView(viewId, assetDir, platform);
2250
+ };
2251
+ const createViewInstance = async (viewId, uid, context, assetDir, platform) => {
2252
+ const rpc = await getRpcForView(viewId, assetDir, platform);
2253
+ const result = await rpc.invoke('ExtensionApi.createViewInstance', viewId, uid, context);
2254
+ set$1(uid, {
2255
+ rpc,
2256
+ viewId
2257
+ });
2258
+ return result;
2259
+ };
2260
+ const dispatchViewEvent = async (viewId, uid, event, assetDir, platform) => {
2261
+ const rpc = await getRpcForInstance(viewId, uid, assetDir, platform);
2262
+ return rpc.invoke('ExtensionApi.dispatchViewEvent', uid, event);
2263
+ };
2264
+ const disposeViewInstance = async (viewId, uid, assetDir, platform) => {
2265
+ const rpc = await getRpcForInstance(viewId, uid, assetDir, platform);
2266
+ await rpc.invoke('ExtensionApi.disposeViewInstance', uid);
2267
+ remove(uid);
2268
+ };
2269
+ const saveViewInstanceState = async (viewId, uid, assetDir, platform) => {
2270
+ const rpc = await getRpcForInstance(viewId, uid, assetDir, platform);
2271
+ return rpc.invoke('ExtensionApi.saveViewInstanceState', uid);
2272
+ };
2273
+
2213
2274
  /* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */
2214
2275
  const warn = (...args) => {
2215
2276
  console.warn(...args);
@@ -2442,7 +2503,7 @@ const getColorThemeNames = async (assetDir, platform) => {
2442
2503
  };
2443
2504
 
2444
2505
  const getDynamicWebExtensions = () => {
2445
- return get$3().webExtensions;
2506
+ return get$4().webExtensions;
2446
2507
  };
2447
2508
 
2448
2509
  const getExtension = async (id, assetDir, platform) => {
@@ -2512,7 +2573,7 @@ const getRemoteUrlForWebView = async (uri, options = {}) => {
2512
2573
  };
2513
2574
 
2514
2575
  const getRpcInfo = rpcId => {
2515
- const info = get$1(rpcId);
2576
+ const info = get$2(rpcId);
2516
2577
  if (!info) {
2517
2578
  throw new Error(`Rpc not found ${rpcId}`);
2518
2579
  }
@@ -2572,6 +2633,7 @@ const toView = (extension, registeredView, assetDir, platform) => {
2572
2633
  icon: registeredView.icon || manifestView?.icon || '',
2573
2634
  id,
2574
2635
  iframe: getIframe(extension, manifestView, assetDir, platform),
2636
+ kind: registeredView.kind || manifestView?.kind || '',
2575
2637
  title: registeredView.title || manifestView?.title || id
2576
2638
  };
2577
2639
  };
@@ -2604,7 +2666,7 @@ const handleMessagePort = async (port, rpcId) => {
2604
2666
  messagePort: port
2605
2667
  });
2606
2668
  if (rpcId === StatusBarWorker) {
2607
- set$1(rpc);
2669
+ set$2(rpc);
2608
2670
  }
2609
2671
  };
2610
2672
 
@@ -2637,7 +2699,7 @@ const getRpc = async platform => {
2637
2699
  const initializeSharedProcess = async platform => {
2638
2700
  const rpc = await getRpc(platform);
2639
2701
  if (rpc) {
2640
- set$4(rpc);
2702
+ set$5(rpc);
2641
2703
  }
2642
2704
  };
2643
2705
 
@@ -2706,6 +2768,10 @@ const getLanguages = async (platform, assetDir) => {
2706
2768
  }
2707
2769
  };
2708
2770
 
2771
+ const sendMessagePortToFileSystemWorker = async port => {
2772
+ await sendMessagePortToFileSystemWorker$1(port, 0);
2773
+ };
2774
+
2709
2775
  const uninstallExtension = async () => {
2710
2776
  // TODO
2711
2777
  };
@@ -2714,7 +2780,7 @@ const uninstallExtension = async () => {
2714
2780
 
2715
2781
  const wrapCommand = command => {
2716
2782
  return (...args) => {
2717
- return command(get$3(), ...args);
2783
+ return command(get$4(), ...args);
2718
2784
  };
2719
2785
  };
2720
2786
  const commandMap = {
@@ -2722,10 +2788,13 @@ const commandMap = {
2722
2788
  'Extensions.activate3': activateExtension3,
2723
2789
  'Extensions.activateByEvent': activateByEvent,
2724
2790
  'Extensions.addWebExtension': addWebExtension,
2791
+ 'Extensions.createViewInstance': createViewInstance,
2725
2792
  'Extensions.createWebViewWorkerRpc': createWebViewWorkerRpc,
2726
2793
  'Extensions.createWebViewWorkerRpc2': createWebViewWorkerRpc2,
2727
2794
  'Extensions.disable': disableExtension,
2728
2795
  'Extensions.disable2': disableExtension2,
2796
+ 'Extensions.dispatchViewEvent': dispatchViewEvent,
2797
+ 'Extensions.disposeViewInstance': disposeViewInstance,
2729
2798
  'Extensions.enable': enableExtension,
2730
2799
  'Extensions.enable2': enableExtension2,
2731
2800
  'Extensions.executeCommand': wrapCommand(executeCommand),
@@ -2752,6 +2821,8 @@ const commandMap = {
2752
2821
  'Extensions.initialize': initialize,
2753
2822
  'Extensions.install': installExtension,
2754
2823
  'Extensions.invalidateExtensionsCache': invalidateExtensionsCache,
2824
+ 'Extensions.saveViewInstanceState': saveViewInstanceState,
2825
+ 'Extensions.sendMessagePortToFileSystemWorker': sendMessagePortToFileSystemWorker,
2755
2826
  'Extensions.uninstall': uninstallExtension,
2756
2827
  'StatusBar.handleChange': handleChange
2757
2828
  };
@@ -2763,17 +2834,17 @@ const initializeExtensionHostWorker = async () => {
2763
2834
  await sendMessagePortToExtensionHostWorker(port, 0);
2764
2835
  }
2765
2836
  });
2766
- set$7(rpc);
2837
+ set$8(rpc);
2767
2838
  };
2768
2839
 
2769
2840
  const initializeFileSystemWorker = async () => {
2770
2841
  const rpc = await create$6({
2771
2842
  commandMap: commandMapRef,
2772
2843
  async send(port) {
2773
- await sendMessagePortToFileSystemWorker(port, 0);
2844
+ await sendMessagePortToFileSystemWorker$1(port, 0);
2774
2845
  }
2775
2846
  });
2776
- set$6(rpc);
2847
+ set$7(rpc);
2777
2848
  };
2778
2849
 
2779
2850
  const initializeIframeWorker = async () => {
@@ -2790,7 +2861,7 @@ const initializeRendererWorker = async () => {
2790
2861
  const rpc = await create$2({
2791
2862
  commandMap: commandMap
2792
2863
  });
2793
- set$5(rpc);
2864
+ set$6(rpc);
2794
2865
  };
2795
2866
 
2796
2867
  const listen = async () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/extension-management-worker",
3
- "version": "4.6.0",
3
+ "version": "4.8.0",
4
4
  "description": "Webworker for the Extension Management functionality in Lvce Editor.",
5
5
  "keywords": [
6
6
  "web-worker"