@lvce-editor/extension-management-worker 4.37.0 → 4.37.2

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.
@@ -613,7 +613,7 @@ const callbacks = Object.create(null);
613
613
  const get$7 = id => {
614
614
  return callbacks[id];
615
615
  };
616
- const remove$2 = id => {
616
+ const remove$3 = id => {
617
617
  delete callbacks[id];
618
618
  };
619
619
  class JsonRpcError extends Error {
@@ -807,7 +807,7 @@ const resolve = (id, response) => {
807
807
  return;
808
808
  }
809
809
  fn(response);
810
- remove$2(id);
810
+ remove$3(id);
811
811
  };
812
812
  const E_COMMAND_NOT_FOUND = 'E_COMMAND_NOT_FOUND';
813
813
  const getErrorType = prettyError => {
@@ -1270,7 +1270,7 @@ const set$b = (id, rpc) => {
1270
1270
  const get$6 = id => {
1271
1271
  return rpcs$2[id];
1272
1272
  };
1273
- const remove$1 = id => {
1273
+ const remove$2 = id => {
1274
1274
  delete rpcs$2[id];
1275
1275
  };
1276
1276
 
@@ -1300,7 +1300,7 @@ const create$1 = rpcId => {
1300
1300
  set$b(rpcId, mockRpc);
1301
1301
  // @ts-ignore
1302
1302
  mockRpc[Symbol.dispose] = () => {
1303
- remove$1(rpcId);
1303
+ remove$2(rpcId);
1304
1304
  };
1305
1305
  // @ts-ignore
1306
1306
  return mockRpc;
@@ -1519,6 +1519,20 @@ const updateRuntimeStatus = (id, statusUpdate) => {
1519
1519
  const getRuntimeStatus$1 = extensionId => {
1520
1520
  return state.extensionsState.runtimeStatuses[extensionId];
1521
1521
  };
1522
+ const omit = (record, id) => {
1523
+ const result = {
1524
+ ...record
1525
+ };
1526
+ delete result[id];
1527
+ return result;
1528
+ };
1529
+ const resetExtensionRuntimeState = extensionId => {
1530
+ update({
1531
+ activatedExtensions: omit(state.extensionsState.activatedExtensions, extensionId),
1532
+ cachedActivationEvents: omit(state.extensionsState.cachedActivationEvents, extensionId),
1533
+ runtimeStatuses: omit(state.extensionsState.runtimeStatuses, extensionId)
1534
+ });
1535
+ };
1522
1536
 
1523
1537
  const baseName = path => {
1524
1538
  const slashIndex = path.lastIndexOf('/');
@@ -1730,6 +1744,11 @@ const getAll = () => {
1730
1744
  const set$2 = (extensionId, rpc) => {
1731
1745
  rpcs$1[extensionId] = rpc;
1732
1746
  };
1747
+ const remove$1 = extensionId => {
1748
+ const rpc = rpcs$1[extensionId];
1749
+ delete rpcs$1[extensionId];
1750
+ return rpc;
1751
+ };
1733
1752
 
1734
1753
  /* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */
1735
1754
  const invoke = (method, ...params) => {
@@ -2252,6 +2271,10 @@ const getAllExtensions = async (assetDir, platform) => {
2252
2271
 
2253
2272
  const activatingExtensions = Object.create(null);
2254
2273
  const runningExtensions = Object.create(null);
2274
+ const resetExtensionActivation = extensionId => {
2275
+ delete activatingExtensions[extensionId];
2276
+ delete runningExtensions[extensionId];
2277
+ };
2255
2278
  const matchesEvent = (extension, event) => {
2256
2279
  return !extension.disabled && isExtensionIsolated(extension) && Array.isArray(extension.activation) && extension.activation.includes(event);
2257
2280
  };
@@ -2311,8 +2334,12 @@ const activateByEvent = async (event, assetDir, platform) => {
2311
2334
  }
2312
2335
  };
2313
2336
 
2314
- const invalidateExtensionsCache = async () => {
2337
+ const invalidateExtensionsCache = async (extensionId, disabled) => {
2315
2338
  try {
2339
+ if (extensionId) {
2340
+ await invoke$2('ExtensionManagement.handleExtensionsCacheInvalidated', extensionId, disabled);
2341
+ return;
2342
+ }
2316
2343
  await invoke$2('ExtensionManagement.handleExtensionsCacheInvalidated');
2317
2344
  } catch {
2318
2345
  // Older renderer workers do not expose the cache invalidation notification.
@@ -2420,6 +2447,26 @@ const createWebViewWorkerRpc = async (rpcInfo, port) => {
2420
2447
  });
2421
2448
  };
2422
2449
 
2450
+ const disposeIsolatedExtensionHostWorker = async (extensionId, invoke$1 = invoke) => {
2451
+ const rpc = remove$1(extensionId);
2452
+ if (!rpc) {
2453
+ return false;
2454
+ }
2455
+ resetExtensionActivation(extensionId);
2456
+ resetExtensionRuntimeState(extensionId);
2457
+ try {
2458
+ await invoke$1('LaunchIsolatedExtensionHostWorker.disposeIsolatedExtensionHostWorker', extensionId);
2459
+ } catch {
2460
+ // Older renderer workers only support disposing the extension RPC.
2461
+ }
2462
+ try {
2463
+ await rpc.dispose();
2464
+ } catch {
2465
+ // The extension is already disabled and removed from state.
2466
+ }
2467
+ return true;
2468
+ };
2469
+
2423
2470
  const disableExtension2$1 = async (id, platform) => {
2424
2471
  const isTest = platform === Test;
2425
2472
  const isWeb = platform === Web;
@@ -2468,7 +2515,8 @@ const disableExtension2 = async (id, platform) => {
2468
2515
  number(platform);
2469
2516
  try {
2470
2517
  await disableExtension2$1(id, platform);
2471
- await invalidateExtensionsCache();
2518
+ await disposeIsolatedExtensionHostWorker(id);
2519
+ await invalidateExtensionsCache(id, true);
2472
2520
  return undefined;
2473
2521
  } catch (error) {
2474
2522
  return error;
@@ -2483,7 +2531,8 @@ const disableExtension = async (id, isTest) => {
2483
2531
  const disableWorkspaceExtension = async id => {
2484
2532
  string(id);
2485
2533
  await disableExtension$1(id);
2486
- await invalidateExtensionsCache();
2534
+ await disposeIsolatedExtensionHostWorker(id);
2535
+ await invalidateExtensionsCache(id, true);
2487
2536
  };
2488
2537
 
2489
2538
  const enableExtension2 = async (id, platform) => {
@@ -2506,7 +2555,7 @@ const enableExtension2 = async (id, platform) => {
2506
2555
  await writeFile(disabledExtensionsJsonPath, newContent);
2507
2556
  }
2508
2557
  await enableExtension2$1(id, platform);
2509
- await invalidateExtensionsCache();
2558
+ await invalidateExtensionsCache(id, false);
2510
2559
  };
2511
2560
 
2512
2561
  const enableExtension = async (id, isTest) => {
@@ -2517,7 +2566,7 @@ const enableExtension = async (id, isTest) => {
2517
2566
  const enableWorkspaceExtension = async id => {
2518
2567
  string(id);
2519
2568
  await enableExtension$1(id);
2520
- await invalidateExtensionsCache();
2569
+ await invalidateExtensionsCache(id, false);
2521
2570
  };
2522
2571
 
2523
2572
  /* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */
@@ -3635,6 +3684,9 @@ const contributesViews = extension => {
3635
3684
  };
3636
3685
 
3637
3686
  const shouldLoadViews = extension => {
3687
+ if (extension.disabled) {
3688
+ return false;
3689
+ }
3638
3690
  if (!contributesViews(extension)) {
3639
3691
  return false;
3640
3692
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/extension-management-worker",
3
- "version": "4.37.0",
3
+ "version": "4.37.2",
4
4
  "description": "Webworker for the Extension Management functionality in Lvce Editor.",
5
5
  "keywords": [
6
6
  "web-worker"