@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.
- package/dist/extensionManagementWorkerMain.js +122 -103
- package/package.json +1 -1
|
@@ -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$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$
|
|
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
|
|
944
|
+
let id = 0;
|
|
945
945
|
const create$9 = () => {
|
|
946
|
-
return ++id
|
|
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$
|
|
1219
|
+
const set$6 = (id, rpc) => {
|
|
1220
1220
|
rpcs$1[id] = rpc;
|
|
1221
1221
|
};
|
|
1222
|
-
const get$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
1278
|
+
set: set$5
|
|
1279
1279
|
} = create$1(ExtensionHostWorker);
|
|
1280
1280
|
|
|
1281
1281
|
const {
|
|
1282
1282
|
invoke: invoke$3,
|
|
1283
|
-
set: set$
|
|
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$
|
|
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$
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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$
|
|
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
|
-
|
|
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
|
-
|
|
1589
|
+
updateRuntimeStatus(extensionId, {
|
|
1525
1590
|
importEndTime: endTime,
|
|
1526
1591
|
importTime: time
|
|
1527
1592
|
});
|
|
1528
1593
|
} catch (error) {
|
|
1529
|
-
|
|
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 (
|
|
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
|
-
|
|
1620
|
-
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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
|
|
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$
|
|
2242
|
+
set$2(rpc);
|
|
2222
2243
|
}
|
|
2223
2244
|
};
|
|
2224
2245
|
|
|
2225
2246
|
const initialize = async platform => {
|
|
2226
|
-
|
|
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$
|
|
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$
|
|
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$
|
|
2376
|
+
set$3(rpc);
|
|
2358
2377
|
};
|
|
2359
2378
|
|
|
2360
2379
|
const listen = async () => {
|