@lvce-editor/extension-management-worker 3.4.0 → 4.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.
|
@@ -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$
|
|
611
|
+
const get$5 = 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$
|
|
760
|
+
const fn = get$5(id);
|
|
761
761
|
if (!fn) {
|
|
762
762
|
console.log(response);
|
|
763
763
|
warn$1(`callback ${id} may already be disposed`);
|
|
@@ -1215,33 +1215,33 @@ const createMockRpc = ({
|
|
|
1215
1215
|
return mockRpc;
|
|
1216
1216
|
};
|
|
1217
1217
|
|
|
1218
|
-
const rpcs$
|
|
1219
|
-
const set$
|
|
1220
|
-
rpcs$
|
|
1218
|
+
const rpcs$2 = Object.create(null);
|
|
1219
|
+
const set$7 = (id, rpc) => {
|
|
1220
|
+
rpcs$2[id] = rpc;
|
|
1221
1221
|
};
|
|
1222
|
-
const get$
|
|
1223
|
-
return rpcs$
|
|
1222
|
+
const get$4 = id => {
|
|
1223
|
+
return rpcs$2[id];
|
|
1224
1224
|
};
|
|
1225
1225
|
const remove = id => {
|
|
1226
|
-
delete rpcs$
|
|
1226
|
+
delete rpcs$2[id];
|
|
1227
1227
|
};
|
|
1228
1228
|
|
|
1229
1229
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
|
1230
1230
|
const create$1 = rpcId => {
|
|
1231
1231
|
return {
|
|
1232
1232
|
async dispose() {
|
|
1233
|
-
const rpc = get$
|
|
1233
|
+
const rpc = get$4(rpcId);
|
|
1234
1234
|
await rpc.dispose();
|
|
1235
1235
|
},
|
|
1236
1236
|
// @ts-ignore
|
|
1237
1237
|
invoke(method, ...params) {
|
|
1238
|
-
const rpc = get$
|
|
1238
|
+
const rpc = get$4(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$
|
|
1244
|
+
const rpc = get$4(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$
|
|
1252
|
+
set$7(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$
|
|
1261
|
+
set$7(rpcId, rpc);
|
|
1262
1262
|
}
|
|
1263
1263
|
};
|
|
1264
1264
|
};
|
|
@@ -1274,13 +1274,45 @@ const RendererWorker = 1;
|
|
|
1274
1274
|
const SharedProcess = 1492;
|
|
1275
1275
|
|
|
1276
1276
|
const {
|
|
1277
|
+
dispose,
|
|
1277
1278
|
invoke: invoke$4,
|
|
1278
|
-
|
|
1279
|
+
invokeAndTransfer: invokeAndTransfer$2,
|
|
1280
|
+
registerMockRpc,
|
|
1281
|
+
set: set$6
|
|
1279
1282
|
} = create$1(ExtensionHostWorker);
|
|
1283
|
+
const executeReferenceProvider = async (id, offset) => {
|
|
1284
|
+
// @ts-ignore
|
|
1285
|
+
return invoke$4('ExtensionHostReference.executeReferenceProvider', id, offset);
|
|
1286
|
+
};
|
|
1287
|
+
const executeFileReferenceProvider = async id => {
|
|
1288
|
+
// @ts-ignore
|
|
1289
|
+
return invoke$4('ExtensionHostReference.executeFileReferenceProvider', id);
|
|
1290
|
+
};
|
|
1291
|
+
const getRuntimeStatus$2 = async extensionId => {
|
|
1292
|
+
// @ts-ignore
|
|
1293
|
+
return invoke$4('ExtensionHost.getRuntimeStatus', extensionId);
|
|
1294
|
+
};
|
|
1295
|
+
const getEnabledOutputProviderIds = async () => {
|
|
1296
|
+
const channels = await invoke$4('Output.getEnabledProviders');
|
|
1297
|
+
return channels;
|
|
1298
|
+
};
|
|
1299
|
+
|
|
1300
|
+
const ExtensionHost = {
|
|
1301
|
+
__proto__: null,
|
|
1302
|
+
dispose,
|
|
1303
|
+
executeFileReferenceProvider,
|
|
1304
|
+
executeReferenceProvider,
|
|
1305
|
+
getEnabledOutputProviderIds,
|
|
1306
|
+
getRuntimeStatus: getRuntimeStatus$2,
|
|
1307
|
+
invoke: invoke$4,
|
|
1308
|
+
invokeAndTransfer: invokeAndTransfer$2,
|
|
1309
|
+
registerMockRpc,
|
|
1310
|
+
set: set$6
|
|
1311
|
+
};
|
|
1280
1312
|
|
|
1281
1313
|
const {
|
|
1282
1314
|
invoke: invoke$3,
|
|
1283
|
-
set: set$
|
|
1315
|
+
set: set$5
|
|
1284
1316
|
} = create$1(FileSystemWorker);
|
|
1285
1317
|
const readFile = async uri => {
|
|
1286
1318
|
return invoke$3('FileSystem.readFile', uri);
|
|
@@ -1295,7 +1327,7 @@ const exists = async uri => {
|
|
|
1295
1327
|
const {
|
|
1296
1328
|
invoke: invoke$2,
|
|
1297
1329
|
invokeAndTransfer: invokeAndTransfer$1,
|
|
1298
|
-
set: set$
|
|
1330
|
+
set: set$4
|
|
1299
1331
|
} = create$1(RendererWorker);
|
|
1300
1332
|
const sendMessagePortToIconThemeWorker = async (port, rpcId) => {
|
|
1301
1333
|
const command = 'IconTheme.handleMessagePort';
|
|
@@ -1316,7 +1348,7 @@ const sendMessagePortToSharedProcess = async port => {
|
|
|
1316
1348
|
|
|
1317
1349
|
const {
|
|
1318
1350
|
invoke: invoke$1,
|
|
1319
|
-
set: set$
|
|
1351
|
+
set: set$3
|
|
1320
1352
|
} = create$1(SharedProcess);
|
|
1321
1353
|
|
|
1322
1354
|
const create = () => {
|
|
@@ -1364,14 +1396,14 @@ const createEmptyRuntimeStatus = id => {
|
|
|
1364
1396
|
};
|
|
1365
1397
|
};
|
|
1366
1398
|
let extensionsState = createInitialState();
|
|
1367
|
-
const get$
|
|
1399
|
+
const get$3 = () => {
|
|
1368
1400
|
return extensionsState;
|
|
1369
1401
|
};
|
|
1370
|
-
const set$
|
|
1402
|
+
const set$2 = newState => {
|
|
1371
1403
|
extensionsState = newState;
|
|
1372
1404
|
};
|
|
1373
1405
|
const update = newState => {
|
|
1374
|
-
set$
|
|
1406
|
+
set$2({
|
|
1375
1407
|
...extensionsState,
|
|
1376
1408
|
...newState
|
|
1377
1409
|
});
|
|
@@ -1485,10 +1517,10 @@ const rejectAfterTimeout = async (timeout, token) => {
|
|
|
1485
1517
|
}
|
|
1486
1518
|
throw new Error(`Activation timeout of ${timeout}ms exceeded`);
|
|
1487
1519
|
};
|
|
1488
|
-
const activate = async (extensionId, extension) => {
|
|
1489
|
-
await invoke
|
|
1520
|
+
const activate = async (extensionId, extension, extensionHost) => {
|
|
1521
|
+
await extensionHost.invoke('ExtensionHost.activateExtension3', extensionId, extension);
|
|
1490
1522
|
};
|
|
1491
|
-
const activateExtension2 = async (extensionId, extension, absolutePath) => {
|
|
1523
|
+
const activateExtension2 = async (extensionId, extension, absolutePath, extensionHost = ExtensionHost) => {
|
|
1492
1524
|
string(extensionId);
|
|
1493
1525
|
object(extension);
|
|
1494
1526
|
string(absolutePath);
|
|
@@ -1499,7 +1531,7 @@ const activateExtension2 = async (extensionId, extension, absolutePath) => {
|
|
|
1499
1531
|
activationStartTime: startTime,
|
|
1500
1532
|
status: Activating
|
|
1501
1533
|
});
|
|
1502
|
-
await Promise.race([activate(extensionId, extension), rejectAfterTimeout(activationTimeout, token)]);
|
|
1534
|
+
await Promise.race([activate(extensionId, extension, extensionHost), rejectAfterTimeout(activationTimeout, token)]);
|
|
1503
1535
|
const endTime = performance.now();
|
|
1504
1536
|
const time = endTime - startTime;
|
|
1505
1537
|
updateRuntimeStatus(extensionId, {
|
|
@@ -1524,6 +1556,56 @@ const activateExtension2 = async (extensionId, extension, absolutePath) => {
|
|
|
1524
1556
|
}
|
|
1525
1557
|
};
|
|
1526
1558
|
|
|
1559
|
+
const commandMapRef = {};
|
|
1560
|
+
|
|
1561
|
+
const getPortTuple = () => {
|
|
1562
|
+
const {
|
|
1563
|
+
port1,
|
|
1564
|
+
port2
|
|
1565
|
+
} = new MessageChannel();
|
|
1566
|
+
return {
|
|
1567
|
+
port1,
|
|
1568
|
+
port2
|
|
1569
|
+
};
|
|
1570
|
+
};
|
|
1571
|
+
|
|
1572
|
+
const rpcs$1 = Object.create(null);
|
|
1573
|
+
const get$2 = extensionId => {
|
|
1574
|
+
return rpcs$1[extensionId];
|
|
1575
|
+
};
|
|
1576
|
+
const set$1 = (extensionId, rpc) => {
|
|
1577
|
+
rpcs$1[extensionId] = rpc;
|
|
1578
|
+
};
|
|
1579
|
+
|
|
1580
|
+
/* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */
|
|
1581
|
+
const invoke = (method, ...params) => {
|
|
1582
|
+
return invoke$2(method, ...params);
|
|
1583
|
+
};
|
|
1584
|
+
const invokeAndTransfer = (method, ...params) => {
|
|
1585
|
+
return invokeAndTransfer$1(method, ...params);
|
|
1586
|
+
};
|
|
1587
|
+
|
|
1588
|
+
const getOrCreateIsolatedExtensionHostWorker = async extensionId => {
|
|
1589
|
+
const existingRpc = get$2(extensionId);
|
|
1590
|
+
if (existingRpc) {
|
|
1591
|
+
return existingRpc;
|
|
1592
|
+
}
|
|
1593
|
+
const {
|
|
1594
|
+
port1,
|
|
1595
|
+
port2
|
|
1596
|
+
} = getPortTuple();
|
|
1597
|
+
const rpcPromise = create$3({
|
|
1598
|
+
commandMap: commandMapRef,
|
|
1599
|
+
isMessagePortOpen: true,
|
|
1600
|
+
messagePort: port2
|
|
1601
|
+
});
|
|
1602
|
+
port2.start();
|
|
1603
|
+
await invokeAndTransfer('LaunchIsolatedExtensionHostWorker.launchIsolatedExtensionHostWorker', port1, extensionId);
|
|
1604
|
+
const rpc = await rpcPromise;
|
|
1605
|
+
set$1(extensionId, rpc);
|
|
1606
|
+
return rpc;
|
|
1607
|
+
};
|
|
1608
|
+
|
|
1527
1609
|
const rpcs = Object.create(null);
|
|
1528
1610
|
const add = (id, rpc) => {
|
|
1529
1611
|
rpcs[id] = rpc;
|
|
@@ -1567,7 +1649,7 @@ const handleRpcInfos = (extension, platform) => {
|
|
|
1567
1649
|
}
|
|
1568
1650
|
};
|
|
1569
1651
|
|
|
1570
|
-
const importExtension = async (extensionId, absolutePath, activationEvent) => {
|
|
1652
|
+
const importExtension = async (extensionId, absolutePath, activationEvent, extensionHost = ExtensionHost) => {
|
|
1571
1653
|
try {
|
|
1572
1654
|
string(absolutePath);
|
|
1573
1655
|
const startTime = performance.now();
|
|
@@ -1583,7 +1665,7 @@ const importExtension = async (extensionId, absolutePath, activationEvent) => {
|
|
|
1583
1665
|
status: Importing
|
|
1584
1666
|
});
|
|
1585
1667
|
try {
|
|
1586
|
-
await invoke
|
|
1668
|
+
await extensionHost.invoke('ExtensionHost.importExtension2', extensionId, absolutePath);
|
|
1587
1669
|
const endTime = performance.now();
|
|
1588
1670
|
const time = endTime - startTime;
|
|
1589
1671
|
updateRuntimeStatus(extensionId, {
|
|
@@ -1615,11 +1697,16 @@ const interExtensionId = path => {
|
|
|
1615
1697
|
return path.slice(slashIndex + 1);
|
|
1616
1698
|
};
|
|
1617
1699
|
|
|
1700
|
+
const isExtensionIsolated = extension => {
|
|
1701
|
+
return extension?.isolated === true;
|
|
1702
|
+
};
|
|
1703
|
+
|
|
1618
1704
|
const activateExtension3 = async (extension, absolutePath, activationEvent, platform) => {
|
|
1619
1705
|
handleRpcInfos(extension, platform);
|
|
1620
1706
|
const extensionId = extension.id || interExtensionId(extension.uri);
|
|
1621
|
-
await
|
|
1622
|
-
await
|
|
1707
|
+
const extensionHost = isExtensionIsolated(extension) ? await getOrCreateIsolatedExtensionHostWorker(extensionId) : undefined;
|
|
1708
|
+
await importExtension(extensionId, absolutePath, activationEvent, extensionHost);
|
|
1709
|
+
await activateExtension2(extensionId, extension, absolutePath, extensionHost);
|
|
1623
1710
|
};
|
|
1624
1711
|
|
|
1625
1712
|
const getJson$1 = async url => {
|
|
@@ -1667,14 +1754,6 @@ const addWebExtension = async path => {
|
|
|
1667
1754
|
|
|
1668
1755
|
const ModuleWorkerAndWorkaroundForChromeDevtoolsBug = 6;
|
|
1669
1756
|
|
|
1670
|
-
/* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */
|
|
1671
|
-
const invoke = (method, ...params) => {
|
|
1672
|
-
return invoke$2(method, ...params);
|
|
1673
|
-
};
|
|
1674
|
-
const invokeAndTransfer = (method, ...params) => {
|
|
1675
|
-
return invokeAndTransfer$1(method, ...params);
|
|
1676
|
-
};
|
|
1677
|
-
|
|
1678
1757
|
const createWebViewWorkerRpc2 = async (rpcInfo, port) => {
|
|
1679
1758
|
// TODO this function is called from the iframe worker to create a direct
|
|
1680
1759
|
// connection between a webview/iframe and it's webworker. For this to work
|
|
@@ -1764,13 +1843,13 @@ const disabledExtensionsCacheKey = '/cache/disabledExtensions.json';
|
|
|
1764
1843
|
const disableExtension2$1 = async (id, platform) => {
|
|
1765
1844
|
const isTest = platform === Test;
|
|
1766
1845
|
const isWeb = platform === Web;
|
|
1767
|
-
const oldState = get$
|
|
1846
|
+
const oldState = get$3(); // TODO maybe pass in an application id? Would allow multiple editors with different extensions.
|
|
1768
1847
|
if (isTest) {
|
|
1769
1848
|
const newState = {
|
|
1770
1849
|
...oldState,
|
|
1771
1850
|
disabledIds: [...oldState.disabledIds, id]
|
|
1772
1851
|
};
|
|
1773
|
-
set$
|
|
1852
|
+
set$2(newState);
|
|
1774
1853
|
} else if (isWeb) {
|
|
1775
1854
|
const cached = await getJson(disabledExtensionsCacheKey);
|
|
1776
1855
|
const oldDisabled = cached?.disabledExtensions || [];
|
|
@@ -1786,13 +1865,13 @@ const disableExtension2$1 = async (id, platform) => {
|
|
|
1786
1865
|
const enableExtension2$1 = async (id, platform) => {
|
|
1787
1866
|
const isTest = platform === Test;
|
|
1788
1867
|
const isWeb = platform === Web;
|
|
1789
|
-
const oldState = get$
|
|
1868
|
+
const oldState = get$3();
|
|
1790
1869
|
if (isTest) {
|
|
1791
1870
|
const newState = {
|
|
1792
1871
|
...oldState,
|
|
1793
1872
|
disabledIds: oldState.disabledIds.filter(existing => existing !== id)
|
|
1794
1873
|
};
|
|
1795
|
-
set$
|
|
1874
|
+
set$2(newState);
|
|
1796
1875
|
} else if (isWeb) {
|
|
1797
1876
|
const cached = await getJson(disabledExtensionsCacheKey);
|
|
1798
1877
|
const oldDisabled = cached?.disabledExtensions || [];
|
|
@@ -1821,7 +1900,7 @@ const disableExtension2 = async (id, platform) => {
|
|
|
1821
1900
|
};
|
|
1822
1901
|
|
|
1823
1902
|
const disableExtension = async (id, isTest) => {
|
|
1824
|
-
const oldState = get$
|
|
1903
|
+
const oldState = get$3();
|
|
1825
1904
|
return disableExtension2(id, oldState.platform);
|
|
1826
1905
|
};
|
|
1827
1906
|
|
|
@@ -1848,7 +1927,7 @@ const enableExtension2 = async (id, platform) => {
|
|
|
1848
1927
|
};
|
|
1849
1928
|
|
|
1850
1929
|
const enableExtension = async (id, isTest) => {
|
|
1851
|
-
const oldState = get$
|
|
1930
|
+
const oldState = get$3();
|
|
1852
1931
|
return enableExtension2(id, oldState.platform);
|
|
1853
1932
|
};
|
|
1854
1933
|
|
|
@@ -2017,7 +2096,7 @@ const getColorThemeUri = (extensions, colorThemeId) => {
|
|
|
2017
2096
|
};
|
|
2018
2097
|
|
|
2019
2098
|
const getDynamicWebExtensions = () => {
|
|
2020
|
-
return get$
|
|
2099
|
+
return get$3().webExtensions;
|
|
2021
2100
|
};
|
|
2022
2101
|
|
|
2023
2102
|
const getWebExtensionsUrl = assetDir => {
|
|
@@ -2122,17 +2201,6 @@ const getExtension = async (id, assetDir, platform) => {
|
|
|
2122
2201
|
return undefined;
|
|
2123
2202
|
};
|
|
2124
2203
|
|
|
2125
|
-
const getPortTuple = () => {
|
|
2126
|
-
const {
|
|
2127
|
-
port1,
|
|
2128
|
-
port2
|
|
2129
|
-
} = new MessageChannel();
|
|
2130
|
-
return {
|
|
2131
|
-
port1,
|
|
2132
|
-
port2
|
|
2133
|
-
};
|
|
2134
|
-
};
|
|
2135
|
-
|
|
2136
2204
|
const createWebViewIpc = async webView => {
|
|
2137
2205
|
const {
|
|
2138
2206
|
origin,
|
|
@@ -2201,8 +2269,6 @@ const getRuntimeStatus = extensionId => {
|
|
|
2201
2269
|
return getRuntimeStatus$1(extensionId) || emptyStatus;
|
|
2202
2270
|
};
|
|
2203
2271
|
|
|
2204
|
-
const commandMapRef = {};
|
|
2205
|
-
|
|
2206
2272
|
const handleMessagePort = async port => {
|
|
2207
2273
|
await create$8({
|
|
2208
2274
|
commandMap: commandMapRef,
|
|
@@ -2239,7 +2305,7 @@ const getRpc = async platform => {
|
|
|
2239
2305
|
const initializeSharedProcess = async platform => {
|
|
2240
2306
|
const rpc = await getRpc(platform);
|
|
2241
2307
|
if (rpc) {
|
|
2242
|
-
set$
|
|
2308
|
+
set$3(rpc);
|
|
2243
2309
|
}
|
|
2244
2310
|
};
|
|
2245
2311
|
|
|
@@ -2346,7 +2412,7 @@ const initializeExtensionHostWorker = async () => {
|
|
|
2346
2412
|
await sendMessagePortToExtensionHostWorker(port, 0);
|
|
2347
2413
|
}
|
|
2348
2414
|
});
|
|
2349
|
-
set$
|
|
2415
|
+
set$6(rpc);
|
|
2350
2416
|
};
|
|
2351
2417
|
|
|
2352
2418
|
const initializeFileSystemWorker = async () => {
|
|
@@ -2356,7 +2422,7 @@ const initializeFileSystemWorker = async () => {
|
|
|
2356
2422
|
await sendMessagePortToFileSystemWorker(port, 0);
|
|
2357
2423
|
}
|
|
2358
2424
|
});
|
|
2359
|
-
set$
|
|
2425
|
+
set$5(rpc);
|
|
2360
2426
|
};
|
|
2361
2427
|
|
|
2362
2428
|
const initializeIframeWorker = async () => {
|
|
@@ -2373,7 +2439,7 @@ const initializeRendererWorker = async () => {
|
|
|
2373
2439
|
const rpc = await create$2({
|
|
2374
2440
|
commandMap: commandMap
|
|
2375
2441
|
});
|
|
2376
|
-
set$
|
|
2442
|
+
set$4(rpc);
|
|
2377
2443
|
};
|
|
2378
2444
|
|
|
2379
2445
|
const listen = async () => {
|