@lvce-editor/extension-management-worker 4.11.0 → 4.13.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.
|
@@ -1453,7 +1453,7 @@ const baseName = path => {
|
|
|
1453
1453
|
const slashIndex = path.lastIndexOf('/');
|
|
1454
1454
|
return path.slice(slashIndex + 1);
|
|
1455
1455
|
};
|
|
1456
|
-
const getExtensionId$
|
|
1456
|
+
const getExtensionId$4 = extension => {
|
|
1457
1457
|
if (extension && extension.id) {
|
|
1458
1458
|
return extension.id;
|
|
1459
1459
|
}
|
|
@@ -1541,7 +1541,7 @@ const activateExtension2 = async (extensionId, extension, absolutePath, extensio
|
|
|
1541
1541
|
status: Activated
|
|
1542
1542
|
});
|
|
1543
1543
|
} catch (error) {
|
|
1544
|
-
const id = getExtensionId$
|
|
1544
|
+
const id = getExtensionId$4(extension);
|
|
1545
1545
|
if (isImportError(error)) {
|
|
1546
1546
|
const actualErrorMessage = await tryToGetActualImportErrorMessage(absolutePath, error);
|
|
1547
1547
|
throw new Error(`Failed to activate extension ${id}: ${actualErrorMessage}`, {
|
|
@@ -1876,14 +1876,14 @@ const runningExtensions = Object.create(null);
|
|
|
1876
1876
|
const matchesEvent = (extension, event) => {
|
|
1877
1877
|
return !extension.disabled && isExtensionIsolated(extension) && Array.isArray(extension.activation) && extension.activation.includes(event);
|
|
1878
1878
|
};
|
|
1879
|
-
const getExtensionId$
|
|
1879
|
+
const getExtensionId$3 = extension => {
|
|
1880
1880
|
return extension.id;
|
|
1881
1881
|
};
|
|
1882
1882
|
const getAbsolutePath$1 = (extension, assetDir, platform) => {
|
|
1883
1883
|
return getExtensionAbsolutePath(extension.id, extension.isWeb, extension.builtin, extension.path || extension.uri, extension.browser, globalThis.location.origin, platform, assetDir);
|
|
1884
1884
|
};
|
|
1885
1885
|
const doActivateExtension = async (extension, absolutePath, event, platform) => {
|
|
1886
|
-
const extensionId = getExtensionId$
|
|
1886
|
+
const extensionId = getExtensionId$3(extension);
|
|
1887
1887
|
try {
|
|
1888
1888
|
await activateExtension3(extension, absolutePath, event, platform);
|
|
1889
1889
|
runningExtensions[extensionId] = true;
|
|
@@ -1892,7 +1892,7 @@ const doActivateExtension = async (extension, absolutePath, event, platform) =>
|
|
|
1892
1892
|
}
|
|
1893
1893
|
};
|
|
1894
1894
|
const activateExtension = async (extension, event, assetDir, platform) => {
|
|
1895
|
-
const extensionId = getExtensionId$
|
|
1895
|
+
const extensionId = getExtensionId$3(extension);
|
|
1896
1896
|
if (runningExtensions[extensionId]) {
|
|
1897
1897
|
return;
|
|
1898
1898
|
}
|
|
@@ -2176,7 +2176,7 @@ const enableWorkspaceExtension = async id => {
|
|
|
2176
2176
|
|
|
2177
2177
|
/* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */
|
|
2178
2178
|
|
|
2179
|
-
const getExtensionId$
|
|
2179
|
+
const getExtensionId$2 = extension => {
|
|
2180
2180
|
return extension.id || interExtensionId(extension.uri || extension.path || '');
|
|
2181
2181
|
};
|
|
2182
2182
|
const contributesCommand = (extension, id) => {
|
|
@@ -2191,7 +2191,7 @@ const getRpcForCommand = async (extensionsState, id, platform) => {
|
|
|
2191
2191
|
if (!extension) {
|
|
2192
2192
|
return undefined;
|
|
2193
2193
|
}
|
|
2194
|
-
const extensionId = getExtensionId$
|
|
2194
|
+
const extensionId = getExtensionId$2(extension);
|
|
2195
2195
|
const existingRpc = get$3(extensionId);
|
|
2196
2196
|
if (existingRpc) {
|
|
2197
2197
|
return existingRpc;
|
|
@@ -2234,14 +2234,14 @@ const getOrigin = () => {
|
|
|
2234
2234
|
return globalThis.location?.origin || 'http://localhost';
|
|
2235
2235
|
};
|
|
2236
2236
|
|
|
2237
|
-
const getExtensionId = extension => {
|
|
2237
|
+
const getExtensionId$1 = extension => {
|
|
2238
2238
|
return extension.id || interExtensionId(extension.uri || extension.path || '');
|
|
2239
2239
|
};
|
|
2240
2240
|
const getAbsolutePath = (extension, assetDir, platform) => {
|
|
2241
|
-
return getExtensionAbsolutePath(getExtensionId(extension), extension.isWeb === true, extension.builtin === true, extension.path || extension.uri || '', extension.browser || '', getOrigin(), platform, assetDir);
|
|
2241
|
+
return getExtensionAbsolutePath(getExtensionId$1(extension), extension.isWeb === true, extension.builtin === true, extension.path || extension.uri || '', extension.browser || '', getOrigin(), platform, assetDir);
|
|
2242
2242
|
};
|
|
2243
2243
|
const getRpc$1 = async (extension, assetDir, platform) => {
|
|
2244
|
-
const extensionId = getExtensionId(extension);
|
|
2244
|
+
const extensionId = getExtensionId$1(extension);
|
|
2245
2245
|
const existingRpc = get$3(extensionId);
|
|
2246
2246
|
if (existingRpc) {
|
|
2247
2247
|
return existingRpc;
|
|
@@ -2394,7 +2394,7 @@ const getExtensionForView = async (viewId, assetDir, platform) => {
|
|
|
2394
2394
|
};
|
|
2395
2395
|
const getRpcForView = async (viewId, assetDir, platform) => {
|
|
2396
2396
|
const extension = await getExtensionForView(viewId, assetDir, platform);
|
|
2397
|
-
const existingRpc = get$3(getExtensionId(extension));
|
|
2397
|
+
const existingRpc = get$3(getExtensionId$1(extension));
|
|
2398
2398
|
if (existingRpc) {
|
|
2399
2399
|
return existingRpc;
|
|
2400
2400
|
}
|
|
@@ -2447,6 +2447,16 @@ const dispatchViewEvent = async (viewId, uid, event, assetDir, platform) => {
|
|
|
2447
2447
|
}
|
|
2448
2448
|
return rpc.invoke('ExtensionApi.dispatchViewEvent', uid, event);
|
|
2449
2449
|
};
|
|
2450
|
+
const requestViewRerender = async uid => {
|
|
2451
|
+
await invoke$3('Viewlet.executeViewletCommand', uid, 'rerender');
|
|
2452
|
+
};
|
|
2453
|
+
const renderViewInstance = async (viewId, uid, assetDir, platform) => {
|
|
2454
|
+
const instance = get$1(uid);
|
|
2455
|
+
if (!instance || instance.status === 'error') {
|
|
2456
|
+
return undefined;
|
|
2457
|
+
}
|
|
2458
|
+
return instance.rpc.invoke('ExtensionApi.renderViewInstance', uid);
|
|
2459
|
+
};
|
|
2450
2460
|
const disposeViewInstance = async (viewId, uid, assetDir, platform) => {
|
|
2451
2461
|
const rpc = await getRpcForInstance(viewId, uid, assetDir, platform);
|
|
2452
2462
|
if (!rpc) {
|
|
@@ -2707,6 +2717,48 @@ const getExtension = async (id, assetDir, platform) => {
|
|
|
2707
2717
|
return undefined;
|
|
2708
2718
|
};
|
|
2709
2719
|
|
|
2720
|
+
const getExtensionId = extension => {
|
|
2721
|
+
return extension.id || interExtensionId(extension.uri || extension.path || '');
|
|
2722
|
+
};
|
|
2723
|
+
const toKeyBinding = (extension, keybinding) => {
|
|
2724
|
+
if (typeof keybinding.key !== 'string' || typeof keybinding.command !== 'string') {
|
|
2725
|
+
return undefined;
|
|
2726
|
+
}
|
|
2727
|
+
if (keybinding.when !== undefined && typeof keybinding.when !== 'string') {
|
|
2728
|
+
return undefined;
|
|
2729
|
+
}
|
|
2730
|
+
if (keybinding.args !== undefined && !Array.isArray(keybinding.args)) {
|
|
2731
|
+
return undefined;
|
|
2732
|
+
}
|
|
2733
|
+
return {
|
|
2734
|
+
...(keybinding.args && {
|
|
2735
|
+
args: keybinding.args
|
|
2736
|
+
}),
|
|
2737
|
+
command: keybinding.command,
|
|
2738
|
+
extensionId: getExtensionId(extension),
|
|
2739
|
+
key: keybinding.key,
|
|
2740
|
+
...(keybinding.when && {
|
|
2741
|
+
when: keybinding.when
|
|
2742
|
+
})
|
|
2743
|
+
};
|
|
2744
|
+
};
|
|
2745
|
+
const getKeyBindings = async (assetDir, platform) => {
|
|
2746
|
+
const extensions = await getAllExtensions(assetDir, platform);
|
|
2747
|
+
const keybindings = [];
|
|
2748
|
+
for (const extension of extensions) {
|
|
2749
|
+
if (!Array.isArray(extension.keybindings)) {
|
|
2750
|
+
continue;
|
|
2751
|
+
}
|
|
2752
|
+
for (const keybinding of extension.keybindings) {
|
|
2753
|
+
const normalized = toKeyBinding(extension, keybinding);
|
|
2754
|
+
if (normalized) {
|
|
2755
|
+
keybindings.push(normalized);
|
|
2756
|
+
}
|
|
2757
|
+
}
|
|
2758
|
+
}
|
|
2759
|
+
return keybindings;
|
|
2760
|
+
};
|
|
2761
|
+
|
|
2710
2762
|
const getPortTuple = () => {
|
|
2711
2763
|
const {
|
|
2712
2764
|
port1,
|
|
@@ -2811,6 +2863,25 @@ const getCss = (extension, manifestView, assetDir, platform) => {
|
|
|
2811
2863
|
browser: css
|
|
2812
2864
|
}, assetDir, platform);
|
|
2813
2865
|
};
|
|
2866
|
+
const isAbsoluteIcon = icon => {
|
|
2867
|
+
return icon.startsWith('http://') || icon.startsWith('https://') || icon.startsWith('file://') || icon.startsWith('/');
|
|
2868
|
+
};
|
|
2869
|
+
const isRelativeIconPath = icon => {
|
|
2870
|
+
return icon.startsWith('./') || icon.startsWith('../') || icon.includes('/') || /\.(?:bmp|gif|ico|jpe?g|png|svg|webp)$/i.test(icon);
|
|
2871
|
+
};
|
|
2872
|
+
const getIcon = (extension, manifestView, registeredView, assetDir, platform) => {
|
|
2873
|
+
const manifestIcon = manifestView?.icon;
|
|
2874
|
+
if (typeof manifestIcon === 'string' && manifestIcon.length > 0) {
|
|
2875
|
+
if (isAbsoluteIcon(manifestIcon) || !isRelativeIconPath(manifestIcon)) {
|
|
2876
|
+
return manifestIcon;
|
|
2877
|
+
}
|
|
2878
|
+
return getAbsolutePath({
|
|
2879
|
+
...extension,
|
|
2880
|
+
browser: manifestIcon
|
|
2881
|
+
}, assetDir, platform);
|
|
2882
|
+
}
|
|
2883
|
+
return registeredView.icon || '';
|
|
2884
|
+
};
|
|
2814
2885
|
const getIframe = (extension, manifestView, assetDir, platform) => {
|
|
2815
2886
|
const iframe = manifestView?.iframe;
|
|
2816
2887
|
if (!iframe || typeof iframe.path !== 'string' || iframe.path.length === 0) {
|
|
@@ -2834,8 +2905,11 @@ const toView = (extension, registeredView, assetDir, platform) => {
|
|
|
2834
2905
|
...(css && {
|
|
2835
2906
|
css
|
|
2836
2907
|
}),
|
|
2837
|
-
|
|
2838
|
-
|
|
2908
|
+
...(registeredView.eventListeners && {
|
|
2909
|
+
eventListeners: registeredView.eventListeners
|
|
2910
|
+
}),
|
|
2911
|
+
extensionId: getExtensionId$1(extension),
|
|
2912
|
+
icon: getIcon(extension, manifestView, registeredView, assetDir, platform),
|
|
2839
2913
|
id,
|
|
2840
2914
|
iframe: getIframe(extension, manifestView, assetDir, platform),
|
|
2841
2915
|
kind: registeredView.kind || manifestView?.kind || '',
|
|
@@ -2875,6 +2949,10 @@ const handleMessagePort = async (port, rpcId) => {
|
|
|
2875
2949
|
}
|
|
2876
2950
|
};
|
|
2877
2951
|
|
|
2952
|
+
const handleViewContextChange = async (uid, viewId, context) => {
|
|
2953
|
+
await invoke$3('ExtensionManagement.handleViewContextChange', uid, viewId, context);
|
|
2954
|
+
};
|
|
2955
|
+
|
|
2878
2956
|
const getRpcRemote = async () => {
|
|
2879
2957
|
const rpc = await create$4({
|
|
2880
2958
|
commandMap: commandMapRef,
|
|
@@ -3029,6 +3107,7 @@ const commandMap = {
|
|
|
3029
3107
|
'Extensions.getColorThemeNames': getColorThemeNames,
|
|
3030
3108
|
'Extensions.getDynamicWebExtensions': getDynamicWebExtensions,
|
|
3031
3109
|
'Extensions.getExtension': getExtension,
|
|
3110
|
+
'Extensions.getKeyBindings': getKeyBindings,
|
|
3032
3111
|
'Extensions.getLanguages': getLanguages,
|
|
3033
3112
|
'Extensions.getPreference': getPreference,
|
|
3034
3113
|
'Extensions.getRemoteUrlForWebView': getRemoteUrlForWebView,
|
|
@@ -3037,10 +3116,13 @@ const commandMap = {
|
|
|
3037
3116
|
'Extensions.getStatusBarItems': getStatusBarItems,
|
|
3038
3117
|
'Extensions.getViews': getViews,
|
|
3039
3118
|
'Extensions.handleMessagePort': handleMessagePort,
|
|
3119
|
+
'Extensions.handleViewContextChange': handleViewContextChange,
|
|
3040
3120
|
'Extensions.importExtension': importExtension,
|
|
3041
3121
|
'Extensions.initialize': initialize,
|
|
3042
3122
|
'Extensions.install': installExtension,
|
|
3043
3123
|
'Extensions.invalidateExtensionsCache': invalidateExtensionsCache,
|
|
3124
|
+
'Extensions.renderViewInstance': renderViewInstance,
|
|
3125
|
+
'Extensions.requestViewRerender': requestViewRerender,
|
|
3044
3126
|
'Extensions.saveViewInstanceState': saveViewInstanceState,
|
|
3045
3127
|
'Extensions.sendMessagePortToFileSystemWorker': sendMessagePortToFileSystemWorker,
|
|
3046
3128
|
'Extensions.setPreference': setPreference,
|