@lvce-editor/extension-management-worker 4.14.0 → 4.16.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.
|
@@ -1725,6 +1725,33 @@ const getExtensionAbsolutePath = (id, isWeb, isBuiltin, path, relativePath, orig
|
|
|
1725
1725
|
return new URL('/remote' + path + '/' + relativePath, origin).href;
|
|
1726
1726
|
};
|
|
1727
1727
|
|
|
1728
|
+
const isMissingAssetDir = assetDir => {
|
|
1729
|
+
return typeof assetDir !== 'string' || assetDir.length === 0;
|
|
1730
|
+
};
|
|
1731
|
+
const isMissingPlatform = platform => {
|
|
1732
|
+
return typeof platform !== 'number' || platform === 0;
|
|
1733
|
+
};
|
|
1734
|
+
const isStaticHttpAssetDir = assetDir => {
|
|
1735
|
+
return assetDir.startsWith('/') || assetDir.startsWith('http');
|
|
1736
|
+
};
|
|
1737
|
+
const isHttpLocation = () => {
|
|
1738
|
+
return Reflect.has(globalThis, 'location') && globalThis.location.protocol.startsWith('http');
|
|
1739
|
+
};
|
|
1740
|
+
const getRuntimeContext = async (assetDir, platform) => {
|
|
1741
|
+
const resolvedAssetDir = isMissingAssetDir(assetDir) ? await invoke$3('Layout.getAssetDir') : assetDir;
|
|
1742
|
+
const resolvedPlatform = isMissingPlatform(platform) ? await invoke$3('Layout.getPlatform') : platform;
|
|
1743
|
+
if (isHttpLocation() && isStaticHttpAssetDir(resolvedAssetDir)) {
|
|
1744
|
+
return {
|
|
1745
|
+
assetDir: resolvedAssetDir,
|
|
1746
|
+
platform: Web
|
|
1747
|
+
};
|
|
1748
|
+
}
|
|
1749
|
+
return {
|
|
1750
|
+
assetDir: resolvedAssetDir,
|
|
1751
|
+
platform: resolvedPlatform
|
|
1752
|
+
};
|
|
1753
|
+
};
|
|
1754
|
+
|
|
1728
1755
|
const getJson$1 = async url => {
|
|
1729
1756
|
try {
|
|
1730
1757
|
const response = await fetch(url);
|
|
@@ -1752,6 +1779,30 @@ const getWebExtensions = async assetDir => {
|
|
|
1752
1779
|
|
|
1753
1780
|
const WorkspaceConfigFolderName = '.lvce';
|
|
1754
1781
|
const DisabledExtensionsFileName = 'disabled-extensions.json';
|
|
1782
|
+
const UriSchemeRegex = /^[a-zA-Z][a-zA-Z\d+.-]*:/;
|
|
1783
|
+
const WindowsDrivePathRegex = /^[a-zA-Z]:[\\/]/;
|
|
1784
|
+
const WindowsDriveSegmentRegex = /^[a-zA-Z]:$/;
|
|
1785
|
+
const encodePathSegment = (segment, index) => {
|
|
1786
|
+
if (index === 0 && WindowsDriveSegmentRegex.test(segment)) {
|
|
1787
|
+
return segment;
|
|
1788
|
+
}
|
|
1789
|
+
return encodeURIComponent(segment);
|
|
1790
|
+
};
|
|
1791
|
+
const encodeFilePath = path => {
|
|
1792
|
+
return path.split('/').map(encodePathSegment).join('/');
|
|
1793
|
+
};
|
|
1794
|
+
const toWorkspaceUri = workspacePath => {
|
|
1795
|
+
if (WindowsDrivePathRegex.test(workspacePath)) {
|
|
1796
|
+
return `file:///${encodeFilePath(workspacePath.replaceAll('\\', '/'))}`;
|
|
1797
|
+
}
|
|
1798
|
+
if (UriSchemeRegex.test(workspacePath)) {
|
|
1799
|
+
return workspacePath;
|
|
1800
|
+
}
|
|
1801
|
+
if (workspacePath.startsWith('/')) {
|
|
1802
|
+
return `file://${encodeFilePath(workspacePath)}`;
|
|
1803
|
+
}
|
|
1804
|
+
return workspacePath;
|
|
1805
|
+
};
|
|
1755
1806
|
const joinUri = (base, ...parts) => {
|
|
1756
1807
|
const normalizedBase = base.endsWith('/') ? base.slice(0, -1) : base;
|
|
1757
1808
|
return [normalizedBase, ...parts].join('/');
|
|
@@ -1760,7 +1811,8 @@ const stringifyJson = data => {
|
|
|
1760
1811
|
return JSON.stringify(data, null, 2) + '\n';
|
|
1761
1812
|
};
|
|
1762
1813
|
const getWorkspaceUri = async () => {
|
|
1763
|
-
|
|
1814
|
+
const workspacePath = await invoke$3('Workspace.getPath');
|
|
1815
|
+
return toWorkspaceUri(workspacePath);
|
|
1764
1816
|
};
|
|
1765
1817
|
const getWorkspaceConfigDirUri = async () => {
|
|
1766
1818
|
const workspaceUri = await getWorkspaceUri();
|
|
@@ -1850,17 +1902,15 @@ const getExtensionsWithWorkspaceState = async extensions => {
|
|
|
1850
1902
|
return withWorkspaceDisabledState(extensions, workspaceDisabledIds);
|
|
1851
1903
|
};
|
|
1852
1904
|
const getAllExtensionsWithState = async (extensionsState, assetDir, platform) => {
|
|
1853
|
-
|
|
1854
|
-
assetDir
|
|
1855
|
-
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
string(assetDir);
|
|
1860
|
-
number(platform);
|
|
1905
|
+
const {
|
|
1906
|
+
assetDir: resolvedAssetDir,
|
|
1907
|
+
platform: resolvedPlatform
|
|
1908
|
+
} = await getRuntimeContext(assetDir, platform);
|
|
1909
|
+
string(resolvedAssetDir);
|
|
1910
|
+
number(resolvedPlatform);
|
|
1861
1911
|
const meta = extensionsState.webExtensions;
|
|
1862
|
-
if (
|
|
1863
|
-
const webExtensions = await getWebExtensions(
|
|
1912
|
+
if (resolvedPlatform === Web) {
|
|
1913
|
+
const webExtensions = await getWebExtensions(resolvedAssetDir);
|
|
1864
1914
|
return getExtensionsWithWorkspaceState([...webExtensions, ...meta]);
|
|
1865
1915
|
}
|
|
1866
1916
|
const local = await invoke$2('ExtensionManagement.getAllExtensions');
|
|
@@ -1911,10 +1961,14 @@ const activateByEvent = async (event, assetDir, platform) => {
|
|
|
1911
1961
|
hasActivatedExtensions: Object.keys(activatingExtensions).length > 0
|
|
1912
1962
|
};
|
|
1913
1963
|
}
|
|
1914
|
-
const
|
|
1964
|
+
const {
|
|
1965
|
+
assetDir: resolvedAssetDir,
|
|
1966
|
+
platform: resolvedPlatform
|
|
1967
|
+
} = await getRuntimeContext(assetDir, platform);
|
|
1968
|
+
const extensions = await getAllExtensions(resolvedAssetDir, resolvedPlatform);
|
|
1915
1969
|
const matchingExtensions = extensions.filter(extension => matchesEvent(extension, event));
|
|
1916
1970
|
for (const extension of matchingExtensions) {
|
|
1917
|
-
await activateExtension(extension, event,
|
|
1971
|
+
await activateExtension(extension, event, resolvedAssetDir, resolvedPlatform);
|
|
1918
1972
|
}
|
|
1919
1973
|
return {
|
|
1920
1974
|
error: undefined,
|
|
@@ -2267,9 +2321,9 @@ const executeRpcResolveCompletionItemProvider = async (rpc, textDocument, args)
|
|
|
2267
2321
|
};
|
|
2268
2322
|
const executeCompletionProvider = async (extensionsState, textDocument, ...args) => {
|
|
2269
2323
|
const {
|
|
2324
|
+
assetDir,
|
|
2270
2325
|
platform
|
|
2271
|
-
} = extensionsState;
|
|
2272
|
-
const assetDir = '';
|
|
2326
|
+
} = await getRuntimeContext('', extensionsState.platform);
|
|
2273
2327
|
const extensions = await getMatchingExtensions$3(extensionsState, textDocument, assetDir, platform);
|
|
2274
2328
|
const rpcs = await Promise.all(extensions.map(extension => getRpc$1(extension, assetDir, platform)));
|
|
2275
2329
|
const results = await Promise.all(rpcs.map(rpc => executeRpcCompletionProvider(rpc, textDocument, args)));
|
|
@@ -2277,9 +2331,9 @@ const executeCompletionProvider = async (extensionsState, textDocument, ...args)
|
|
|
2277
2331
|
};
|
|
2278
2332
|
const executeResolveCompletionItemProvider = async (extensionsState, textDocument, ...args) => {
|
|
2279
2333
|
const {
|
|
2334
|
+
assetDir,
|
|
2280
2335
|
platform
|
|
2281
|
-
} = extensionsState;
|
|
2282
|
-
const assetDir = '';
|
|
2336
|
+
} = await getRuntimeContext('', extensionsState.platform);
|
|
2283
2337
|
const extensions = await getMatchingExtensions$3(extensionsState, textDocument, assetDir, platform);
|
|
2284
2338
|
const rpcs = await Promise.all(extensions.map(extension => getRpc$1(extension, assetDir, platform)));
|
|
2285
2339
|
const results = await Promise.all(rpcs.map(rpc => executeRpcResolveCompletionItemProvider(rpc, textDocument, args)));
|
|
@@ -2300,9 +2354,9 @@ const executeRpcDiagnosticProvider = async (rpc, textDocument, args) => {
|
|
|
2300
2354
|
};
|
|
2301
2355
|
const executeDiagnosticProvider = async (extensionsState, textDocument, ...args) => {
|
|
2302
2356
|
const {
|
|
2357
|
+
assetDir,
|
|
2303
2358
|
platform
|
|
2304
|
-
} = extensionsState;
|
|
2305
|
-
const assetDir = '';
|
|
2359
|
+
} = await getRuntimeContext('', extensionsState.platform);
|
|
2306
2360
|
const extensions = await getMatchingExtensions$2(extensionsState, textDocument, assetDir, platform);
|
|
2307
2361
|
const rpcs = await Promise.all(extensions.map(extension => getRpc$1(extension, assetDir, platform)));
|
|
2308
2362
|
const results = await Promise.all(rpcs.map(rpc => executeRpcDiagnosticProvider(rpc, textDocument, args)));
|
|
@@ -2323,9 +2377,9 @@ const executeRpcFormattingProvider = async (rpc, textDocument, args) => {
|
|
|
2323
2377
|
};
|
|
2324
2378
|
const executeFormattingProvider = async (extensionsState, textDocument, ...args) => {
|
|
2325
2379
|
const {
|
|
2380
|
+
assetDir,
|
|
2326
2381
|
platform
|
|
2327
|
-
} = extensionsState;
|
|
2328
|
-
const assetDir = '';
|
|
2382
|
+
} = await getRuntimeContext('', extensionsState.platform);
|
|
2329
2383
|
const extensions = await getMatchingExtensions$1(extensionsState, textDocument, assetDir, platform);
|
|
2330
2384
|
const rpcs = await Promise.all(extensions.map(extension => getRpc$1(extension, assetDir, platform)));
|
|
2331
2385
|
const results = await Promise.all(rpcs.map(rpc => executeRpcFormattingProvider(rpc, textDocument, args)));
|
|
@@ -2346,9 +2400,9 @@ const executeRpcHoverProvider = async (rpc, textDocument, args) => {
|
|
|
2346
2400
|
};
|
|
2347
2401
|
const executeHoverProvider = async (extensionsState, textDocument, ...args) => {
|
|
2348
2402
|
const {
|
|
2403
|
+
assetDir,
|
|
2349
2404
|
platform
|
|
2350
|
-
} = extensionsState;
|
|
2351
|
-
const assetDir = '';
|
|
2405
|
+
} = await getRuntimeContext('', extensionsState.platform);
|
|
2352
2406
|
const extensions = await getMatchingExtensions(extensionsState, textDocument, assetDir, platform);
|
|
2353
2407
|
const rpcs = await Promise.all(extensions.map(extension => getRpc$1(extension, assetDir, platform)));
|
|
2354
2408
|
const results = await Promise.all(rpcs.map(rpc => executeRpcHoverProvider(rpc, textDocument, args)));
|
|
@@ -2393,16 +2447,20 @@ const getExtensionForView = async (viewId, assetDir, platform) => {
|
|
|
2393
2447
|
return extension;
|
|
2394
2448
|
};
|
|
2395
2449
|
const getRpcForView = async (viewId, assetDir, platform) => {
|
|
2396
|
-
const
|
|
2450
|
+
const {
|
|
2451
|
+
assetDir: resolvedAssetDir,
|
|
2452
|
+
platform: resolvedPlatform
|
|
2453
|
+
} = await getRuntimeContext(assetDir, platform);
|
|
2454
|
+
const extension = await getExtensionForView(viewId, resolvedAssetDir, resolvedPlatform);
|
|
2397
2455
|
const existingRpc = get$3(getExtensionId$1(extension));
|
|
2398
2456
|
if (existingRpc) {
|
|
2399
2457
|
return existingRpc;
|
|
2400
2458
|
}
|
|
2401
|
-
const activationResult = await activateByEvent(`onView:${viewId}`,
|
|
2459
|
+
const activationResult = await activateByEvent(`onView:${viewId}`, resolvedAssetDir, resolvedPlatform);
|
|
2402
2460
|
if (activationResult.error) {
|
|
2403
2461
|
throw activationResult.error;
|
|
2404
2462
|
}
|
|
2405
|
-
return getRpc$1(extension,
|
|
2463
|
+
return getRpc$1(extension, resolvedAssetDir, resolvedPlatform);
|
|
2406
2464
|
};
|
|
2407
2465
|
const getRpcForInstance = async (viewId, uid, assetDir, platform) => {
|
|
2408
2466
|
const instance = get$1(uid);
|
|
@@ -2447,9 +2505,26 @@ const dispatchViewEvent = async (viewId, uid, event, assetDir, platform) => {
|
|
|
2447
2505
|
}
|
|
2448
2506
|
return rpc.invoke('ExtensionApi.dispatchViewEvent', uid, event);
|
|
2449
2507
|
};
|
|
2508
|
+
const getViewMenuEntries = async (viewId, uid, menuId, assetDir, platform) => {
|
|
2509
|
+
const instance = get$1(uid);
|
|
2510
|
+
if (!instance || instance.status === 'error') {
|
|
2511
|
+
return [];
|
|
2512
|
+
}
|
|
2513
|
+
return instance.rpc.invoke('ExtensionApi.getViewMenuEntries', uid, menuId);
|
|
2514
|
+
};
|
|
2515
|
+
const getViewActions = async (viewId, uid, assetDir, platform) => {
|
|
2516
|
+
const instance = get$1(uid);
|
|
2517
|
+
if (!instance || instance.status === 'error') {
|
|
2518
|
+
return [];
|
|
2519
|
+
}
|
|
2520
|
+
return instance.rpc.invoke('ExtensionApi.getViewActions', uid);
|
|
2521
|
+
};
|
|
2450
2522
|
const requestViewRerender = async uid => {
|
|
2451
2523
|
await invoke$3('Viewlet.executeViewletCommand', uid, 'rerender');
|
|
2452
2524
|
};
|
|
2525
|
+
const showViewContextMenu = async (uid, viewId, menuId, x, y) => {
|
|
2526
|
+
await invoke$3('ExtensionManagement.showViewContextMenu', uid, viewId, menuId, x, y);
|
|
2527
|
+
};
|
|
2453
2528
|
const renderViewInstance = async (viewId, uid, assetDir, platform) => {
|
|
2454
2529
|
const instance = get$1(uid);
|
|
2455
2530
|
if (!instance || instance.status === 'error') {
|
|
@@ -2933,8 +3008,12 @@ const getViewsFromExtensionWorkers = async (extensions, assetDir, platform) => {
|
|
|
2933
3008
|
return results.flat();
|
|
2934
3009
|
};
|
|
2935
3010
|
const getViews = async (assetDir, platform) => {
|
|
2936
|
-
const
|
|
2937
|
-
|
|
3011
|
+
const {
|
|
3012
|
+
assetDir: resolvedAssetDir,
|
|
3013
|
+
platform: resolvedPlatform
|
|
3014
|
+
} = await getRuntimeContext(assetDir, platform);
|
|
3015
|
+
const extensions = await getAllExtensions(resolvedAssetDir, resolvedPlatform);
|
|
3016
|
+
return getViewsFromExtensionWorkers(extensions, resolvedAssetDir, resolvedPlatform);
|
|
2938
3017
|
};
|
|
2939
3018
|
|
|
2940
3019
|
const StatusBarWorker = 200;
|
|
@@ -3114,6 +3193,8 @@ const commandMap = {
|
|
|
3114
3193
|
'Extensions.getRpcInfo': getRpcInfo,
|
|
3115
3194
|
'Extensions.getRuntimeStatus': getRuntimeStatus,
|
|
3116
3195
|
'Extensions.getStatusBarItems': getStatusBarItems,
|
|
3196
|
+
'Extensions.getViewActions': getViewActions,
|
|
3197
|
+
'Extensions.getViewMenuEntries': getViewMenuEntries,
|
|
3117
3198
|
'Extensions.getViews': getViews,
|
|
3118
3199
|
'Extensions.handleMessagePort': handleMessagePort,
|
|
3119
3200
|
'Extensions.handleViewContextChange': handleViewContextChange,
|
|
@@ -3126,6 +3207,7 @@ const commandMap = {
|
|
|
3126
3207
|
'Extensions.saveViewInstanceState': saveViewInstanceState,
|
|
3127
3208
|
'Extensions.sendMessagePortToFileSystemWorker': sendMessagePortToFileSystemWorker,
|
|
3128
3209
|
'Extensions.setPreference': setPreference,
|
|
3210
|
+
'Extensions.showViewContextMenu': showViewContextMenu,
|
|
3129
3211
|
'Extensions.uninstall': uninstallExtension,
|
|
3130
3212
|
'StatusBar.handleChange': handleChange
|
|
3131
3213
|
};
|