@lvce-editor/extension-management-worker 3.3.0 → 3.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.
@@ -608,7 +608,7 @@ const execute = (command, ...args) => {
608
608
 
609
609
  const Two$1 = '2.0';
610
610
  const callbacks = Object.create(null);
611
- const get$6 = id => {
611
+ const get$4 = id => {
612
612
  return callbacks[id];
613
613
  };
614
614
  const remove$1 = id => {
@@ -757,7 +757,7 @@ const warn$1 = (...args) => {
757
757
  console.warn(...args);
758
758
  };
759
759
  const resolve = (id, response) => {
760
- const fn = get$6(id);
760
+ const fn = get$4(id);
761
761
  if (!fn) {
762
762
  console.log(response);
763
763
  warn$1(`callback ${id} may already be disposed`);
@@ -941,9 +941,9 @@ const create$a = (id, method, params) => {
941
941
  return message;
942
942
  };
943
943
 
944
- let id$1 = 0;
944
+ let id = 0;
945
945
  const create$9 = () => {
946
- return ++id$1;
946
+ return ++id;
947
947
  };
948
948
 
949
949
  const registerPromise = map => {
@@ -1216,10 +1216,10 @@ const createMockRpc = ({
1216
1216
  };
1217
1217
 
1218
1218
  const rpcs$1 = Object.create(null);
1219
- const set$7 = (id, rpc) => {
1219
+ const set$6 = (id, rpc) => {
1220
1220
  rpcs$1[id] = rpc;
1221
1221
  };
1222
- const get$5 = id => {
1222
+ const get$3 = id => {
1223
1223
  return rpcs$1[id];
1224
1224
  };
1225
1225
  const remove = id => {
@@ -1230,18 +1230,18 @@ const remove = id => {
1230
1230
  const create$1 = rpcId => {
1231
1231
  return {
1232
1232
  async dispose() {
1233
- const rpc = get$5(rpcId);
1233
+ const rpc = get$3(rpcId);
1234
1234
  await rpc.dispose();
1235
1235
  },
1236
1236
  // @ts-ignore
1237
1237
  invoke(method, ...params) {
1238
- const rpc = get$5(rpcId);
1238
+ const rpc = get$3(rpcId);
1239
1239
  // @ts-ignore
1240
1240
  return rpc.invoke(method, ...params);
1241
1241
  },
1242
1242
  // @ts-ignore
1243
1243
  invokeAndTransfer(method, ...params) {
1244
- const rpc = get$5(rpcId);
1244
+ const rpc = get$3(rpcId);
1245
1245
  // @ts-ignore
1246
1246
  return rpc.invokeAndTransfer(method, ...params);
1247
1247
  },
@@ -1249,7 +1249,7 @@ const create$1 = rpcId => {
1249
1249
  const mockRpc = createMockRpc({
1250
1250
  commandMap
1251
1251
  });
1252
- set$7(rpcId, mockRpc);
1252
+ set$6(rpcId, mockRpc);
1253
1253
  // @ts-ignore
1254
1254
  mockRpc[Symbol.dispose] = () => {
1255
1255
  remove(rpcId);
@@ -1258,7 +1258,7 @@ const create$1 = rpcId => {
1258
1258
  return mockRpc;
1259
1259
  },
1260
1260
  set(rpc) {
1261
- set$7(rpcId, rpc);
1261
+ set$6(rpcId, rpc);
1262
1262
  }
1263
1263
  };
1264
1264
  };
@@ -1275,12 +1275,12 @@ const SharedProcess = 1492;
1275
1275
 
1276
1276
  const {
1277
1277
  invoke: invoke$4,
1278
- set: set$6
1278
+ set: set$5
1279
1279
  } = create$1(ExtensionHostWorker);
1280
1280
 
1281
1281
  const {
1282
1282
  invoke: invoke$3,
1283
- set: set$5
1283
+ set: set$4
1284
1284
  } = create$1(FileSystemWorker);
1285
1285
  const readFile = async uri => {
1286
1286
  return invoke$3('FileSystem.readFile', uri);
@@ -1295,7 +1295,7 @@ const exists = async uri => {
1295
1295
  const {
1296
1296
  invoke: invoke$2,
1297
1297
  invokeAndTransfer: invokeAndTransfer$1,
1298
- set: set$4
1298
+ set: set$3
1299
1299
  } = create$1(RendererWorker);
1300
1300
  const sendMessagePortToIconThemeWorker = async (port, rpcId) => {
1301
1301
  const command = 'IconTheme.handleMessagePort';
@@ -1316,7 +1316,7 @@ const sendMessagePortToSharedProcess = async port => {
1316
1316
 
1317
1317
  const {
1318
1318
  invoke: invoke$1,
1319
- set: set$3
1319
+ set: set$2
1320
1320
  } = create$1(SharedProcess);
1321
1321
 
1322
1322
  const create = () => {
@@ -1331,6 +1331,91 @@ const isCanceled = token => {
1331
1331
  return token.finished;
1332
1332
  };
1333
1333
 
1334
+ const None = 0;
1335
+ const Importing = 1;
1336
+ const Activating = 2;
1337
+ const Activated = 3;
1338
+ const Error$1 = 4;
1339
+
1340
+ /* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */
1341
+
1342
+ const createInitialState = () => {
1343
+ return {
1344
+ activatedExtensions: Object.create(null),
1345
+ cachedActivationEvents: Object.create(null),
1346
+ cachedExtensions: undefined,
1347
+ disabledIds: [],
1348
+ platform: 0,
1349
+ runtimeStatuses: Object.create(null),
1350
+ webExtensions: []
1351
+ };
1352
+ };
1353
+ const createEmptyRuntimeStatus = id => {
1354
+ return {
1355
+ activationEndTime: 0,
1356
+ activationEvent: '',
1357
+ activationStartTime: 0,
1358
+ activationTime: 0,
1359
+ id,
1360
+ importEndTime: 0,
1361
+ importStartTime: 0,
1362
+ importTime: 0,
1363
+ status: None
1364
+ };
1365
+ };
1366
+ let extensionsState = createInitialState();
1367
+ const get$2 = () => {
1368
+ return extensionsState;
1369
+ };
1370
+ const set$1 = newState => {
1371
+ extensionsState = newState;
1372
+ };
1373
+ const update = newState => {
1374
+ set$1({
1375
+ ...extensionsState,
1376
+ ...newState
1377
+ });
1378
+ };
1379
+ const setPlatform = platform => {
1380
+ update({
1381
+ platform
1382
+ });
1383
+ };
1384
+ const hasWebExtensionUri = uri => {
1385
+ return extensionsState.webExtensions.some(extension => extension.uri === uri);
1386
+ };
1387
+ const addWebExtension$1 = extension => {
1388
+ update({
1389
+ webExtensions: [...extensionsState.webExtensions, extension]
1390
+ });
1391
+ };
1392
+ const clearCachedExtensions = () => {
1393
+ update({
1394
+ cachedExtensions: undefined
1395
+ });
1396
+ };
1397
+ const setRuntimeStatus = status => {
1398
+ update({
1399
+ runtimeStatuses: {
1400
+ ...extensionsState.runtimeStatuses,
1401
+ [status.id]: {
1402
+ ...status
1403
+ }
1404
+ }
1405
+ });
1406
+ };
1407
+ const updateRuntimeStatus = (id, statusUpdate) => {
1408
+ const previousStatus = extensionsState.runtimeStatuses[id] || createEmptyRuntimeStatus(id);
1409
+ setRuntimeStatus({
1410
+ ...previousStatus,
1411
+ ...statusUpdate,
1412
+ id
1413
+ });
1414
+ };
1415
+ const getRuntimeStatus$1 = extensionId => {
1416
+ return extensionsState.runtimeStatuses[extensionId];
1417
+ };
1418
+
1334
1419
  const baseName = path => {
1335
1420
  const slashIndex = path.lastIndexOf('/');
1336
1421
  return path.slice(slashIndex + 1);
@@ -1361,26 +1446,6 @@ const isImportError = error => {
1361
1446
  return isImportErrorChrome(error) || isImportErrorFirefox(error) || isSyntaxError(error);
1362
1447
  };
1363
1448
 
1364
- const states = Object.create(null);
1365
- const set$2 = status => {
1366
- states[status.id] = status;
1367
- };
1368
- const get$4 = extensionId => {
1369
- return states[extensionId];
1370
- };
1371
- const update$1 = (id, update) => {
1372
- states[id] = {
1373
- ...states[id],
1374
- ...update
1375
- };
1376
- };
1377
-
1378
- const None = 0;
1379
- const Importing = 1;
1380
- const Activating = 2;
1381
- const Activated = 3;
1382
- const Error$1 = 4;
1383
-
1384
1449
  const sleep = duration => {
1385
1450
  const {
1386
1451
  promise,
@@ -1430,14 +1495,14 @@ const activateExtension2 = async (extensionId, extension, absolutePath) => {
1430
1495
  const token = create();
1431
1496
  try {
1432
1497
  const startTime = performance.now();
1433
- update$1(extensionId, {
1498
+ updateRuntimeStatus(extensionId, {
1434
1499
  activationStartTime: startTime,
1435
1500
  status: Activating
1436
1501
  });
1437
1502
  await Promise.race([activate(extensionId, extension), rejectAfterTimeout(activationTimeout, token)]);
1438
1503
  const endTime = performance.now();
1439
1504
  const time = endTime - startTime;
1440
- update$1(extensionId, {
1505
+ updateRuntimeStatus(extensionId, {
1441
1506
  activationEndTime: endTime,
1442
1507
  activationTime: time,
1443
1508
  status: Activated
@@ -1450,7 +1515,7 @@ const activateExtension2 = async (extensionId, extension, absolutePath) => {
1450
1515
  cause: error
1451
1516
  });
1452
1517
  }
1453
- update$1(extensionId, {
1518
+ updateRuntimeStatus(extensionId, {
1454
1519
  status: Error$1 // TODO maybe store error also in runtime status state
1455
1520
  });
1456
1521
  throw new VError(error, `Failed to activate extension ${id}`);
@@ -1463,7 +1528,7 @@ const rpcs = Object.create(null);
1463
1528
  const add = (id, rpc) => {
1464
1529
  rpcs[id] = rpc;
1465
1530
  };
1466
- const get$3 = id => {
1531
+ const get$1 = id => {
1467
1532
  return rpcs[id];
1468
1533
  };
1469
1534
 
@@ -1506,7 +1571,7 @@ const importExtension = async (extensionId, absolutePath, activationEvent) => {
1506
1571
  try {
1507
1572
  string(absolutePath);
1508
1573
  const startTime = performance.now();
1509
- set$2({
1574
+ setRuntimeStatus({
1510
1575
  activationEndTime: 0,
1511
1576
  activationEvent: activationEvent,
1512
1577
  activationStartTime: performance.now(),
@@ -1521,12 +1586,12 @@ const importExtension = async (extensionId, absolutePath, activationEvent) => {
1521
1586
  await invoke$4('ExtensionHost.importExtension2', extensionId, absolutePath);
1522
1587
  const endTime = performance.now();
1523
1588
  const time = endTime - startTime;
1524
- update$1(extensionId, {
1589
+ updateRuntimeStatus(extensionId, {
1525
1590
  importEndTime: endTime,
1526
1591
  importTime: time
1527
1592
  });
1528
1593
  } catch (error) {
1529
- update$1(extensionId, {
1594
+ updateRuntimeStatus(extensionId, {
1530
1595
  status: Error$1 // TODO maybe store error also in runtime status state
1531
1596
  });
1532
1597
  if (isImportError(error)) {
@@ -1557,27 +1622,6 @@ const activateExtension3 = async (extension, absolutePath, activationEvent, plat
1557
1622
  await activateExtension2(extensionId, extension, absolutePath);
1558
1623
  };
1559
1624
 
1560
- const state$1 = {
1561
- webExtensions: []
1562
- };
1563
- const push = extension => {
1564
- state$1.webExtensions.push(extension);
1565
- };
1566
- const hasUri = uri => {
1567
- return state$1.webExtensions.some(extension => extension.uri === uri);
1568
- };
1569
- const get$2 = () => {
1570
- return state$1.webExtensions;
1571
- };
1572
-
1573
- // TODO store one kind of ui state for whole extension management worker
1574
-
1575
- const cache = Object.create(null);
1576
- const id = 1;
1577
- const clear = () => {
1578
- delete cache[id];
1579
- };
1580
-
1581
1625
  const getJson$1 = async url => {
1582
1626
  try {
1583
1627
  const response = await fetch(url);
@@ -1611,14 +1655,13 @@ const getWebManifestPath = path => {
1611
1655
  };
1612
1656
 
1613
1657
  const addWebExtension = async path => {
1614
- if (hasUri(path)) {
1658
+ if (hasWebExtensionUri(path)) {
1615
1659
  return undefined;
1616
1660
  }
1617
1661
  const manifestPath = getWebManifestPath(path);
1618
1662
  const manifest = await getWebExtensionManifest(path, manifestPath);
1619
- // TODO avoid mutation if possible
1620
- push(manifest);
1621
- clear();
1663
+ addWebExtension$1(manifest);
1664
+ clearCachedExtensions();
1622
1665
  return manifest;
1623
1666
  };
1624
1667
 
@@ -1718,32 +1761,10 @@ const setJson = async (cacheKey, data) => {
1718
1761
 
1719
1762
  const disabledExtensionsCacheKey = '/cache/disabledExtensions.json';
1720
1763
 
1721
- /* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */
1722
-
1723
- let state = {
1724
- activatedExtensions: Object.create(null),
1725
- cachedActivationEvents: Object.create(null),
1726
- disabledIds: [],
1727
- platform: 0
1728
- };
1729
- const set$1 = newState => {
1730
- state = newState;
1731
- };
1732
- const update = newState => {
1733
- const fullNewState = {
1734
- ...state,
1735
- ...newState
1736
- };
1737
- state = fullNewState;
1738
- };
1739
- const get$1 = () => {
1740
- return state;
1741
- };
1742
-
1743
1764
  const disableExtension2$1 = async (id, platform) => {
1744
1765
  const isTest = platform === Test;
1745
1766
  const isWeb = platform === Web;
1746
- const oldState = get$1(); // TODO maybe pass in an application id? Would allow multiple editors with different extensions.
1767
+ const oldState = get$2(); // TODO maybe pass in an application id? Would allow multiple editors with different extensions.
1747
1768
  if (isTest) {
1748
1769
  const newState = {
1749
1770
  ...oldState,
@@ -1765,7 +1786,7 @@ const disableExtension2$1 = async (id, platform) => {
1765
1786
  const enableExtension2$1 = async (id, platform) => {
1766
1787
  const isTest = platform === Test;
1767
1788
  const isWeb = platform === Web;
1768
- const oldState = get$1();
1789
+ const oldState = get$2();
1769
1790
  if (isTest) {
1770
1791
  const newState = {
1771
1792
  ...oldState,
@@ -1800,7 +1821,7 @@ const disableExtension2 = async (id, platform) => {
1800
1821
  };
1801
1822
 
1802
1823
  const disableExtension = async (id, isTest) => {
1803
- const oldState = get$1();
1824
+ const oldState = get$2();
1804
1825
  return disableExtension2(id, oldState.platform);
1805
1826
  };
1806
1827
 
@@ -1827,7 +1848,7 @@ const enableExtension2 = async (id, platform) => {
1827
1848
  };
1828
1849
 
1829
1850
  const enableExtension = async (id, isTest) => {
1830
- const oldState = get$1();
1851
+ const oldState = get$2();
1831
1852
  return enableExtension2(id, oldState.platform);
1832
1853
  };
1833
1854
 
@@ -1996,7 +2017,7 @@ const getColorThemeUri = (extensions, colorThemeId) => {
1996
2017
  };
1997
2018
 
1998
2019
  const getDynamicWebExtensions = () => {
1999
- return get$2();
2020
+ return get$2().webExtensions;
2000
2021
  };
2001
2022
 
2002
2023
  const getWebExtensionsUrl = assetDir => {
@@ -2158,7 +2179,7 @@ const getRemoteUrlForWebView = async (uri, options = {}) => {
2158
2179
  };
2159
2180
 
2160
2181
  const getRpcInfo = rpcId => {
2161
- const info = get$3(rpcId);
2182
+ const info = get$1(rpcId);
2162
2183
  if (!info) {
2163
2184
  throw new Error(`Rpc not found ${rpcId}`);
2164
2185
  }
@@ -2177,7 +2198,7 @@ const emptyStatus = {
2177
2198
  status: None
2178
2199
  };
2179
2200
  const getRuntimeStatus = extensionId => {
2180
- return get$4(extensionId) || emptyStatus;
2201
+ return getRuntimeStatus$1(extensionId) || emptyStatus;
2181
2202
  };
2182
2203
 
2183
2204
  const commandMapRef = {};
@@ -2218,14 +2239,12 @@ const getRpc = async platform => {
2218
2239
  const initializeSharedProcess = async platform => {
2219
2240
  const rpc = await getRpc(platform);
2220
2241
  if (rpc) {
2221
- set$3(rpc);
2242
+ set$2(rpc);
2222
2243
  }
2223
2244
  };
2224
2245
 
2225
2246
  const initialize = async platform => {
2226
- update({
2227
- platform
2228
- });
2247
+ setPlatform(platform);
2229
2248
  await initializeSharedProcess(platform);
2230
2249
  };
2231
2250
 
@@ -2327,7 +2346,7 @@ const initializeExtensionHostWorker = async () => {
2327
2346
  await sendMessagePortToExtensionHostWorker(port, 0);
2328
2347
  }
2329
2348
  });
2330
- set$6(rpc);
2349
+ set$5(rpc);
2331
2350
  };
2332
2351
 
2333
2352
  const initializeFileSystemWorker = async () => {
@@ -2337,7 +2356,7 @@ const initializeFileSystemWorker = async () => {
2337
2356
  await sendMessagePortToFileSystemWorker(port, 0);
2338
2357
  }
2339
2358
  });
2340
- set$5(rpc);
2359
+ set$4(rpc);
2341
2360
  };
2342
2361
 
2343
2362
  const initializeIframeWorker = async () => {
@@ -2354,7 +2373,7 @@ const initializeRendererWorker = async () => {
2354
2373
  const rpc = await create$2({
2355
2374
  commandMap: commandMap
2356
2375
  });
2357
- set$4(rpc);
2376
+ set$3(rpc);
2358
2377
  };
2359
2378
 
2360
2379
  const listen = async () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/extension-management-worker",
3
- "version": "3.3.0",
3
+ "version": "3.4.0",
4
4
  "description": "Webworker for the Extension Management functionality in Lvce Editor.",
5
5
  "keywords": [
6
6
  "web-worker"