@lvce-editor/extension-management-worker 4.88.3 → 4.88.5
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.
|
@@ -127,11 +127,21 @@ const removeWebExtension = (id, applicationId) => {
|
|
|
127
127
|
}, applicationId);
|
|
128
128
|
return true;
|
|
129
129
|
};
|
|
130
|
-
const clearCachedExtensions = applicationId => {
|
|
130
|
+
const clearCachedExtensions = (applicationId, expected) => {
|
|
131
|
+
const current = get$7(applicationId);
|
|
132
|
+
if (expected !== undefined && current.cachedExtensions?.extensions !== expected) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
131
135
|
update({
|
|
132
136
|
cachedExtensions: undefined
|
|
133
137
|
}, applicationId);
|
|
134
138
|
};
|
|
139
|
+
const clearAllCachedExtensions = () => {
|
|
140
|
+
clearCachedExtensions();
|
|
141
|
+
for (const applicationId of applications$2.keys()) {
|
|
142
|
+
clearCachedExtensions(applicationId);
|
|
143
|
+
}
|
|
144
|
+
};
|
|
135
145
|
const getOrCreateWebExtensionsCache = extensionsState => {
|
|
136
146
|
const existing = webExtensionsCaches.get(extensionsState);
|
|
137
147
|
if (existing) {
|
|
@@ -2166,6 +2176,32 @@ const getExtensionsWithState = async (extensions, extensionsState, platform) =>
|
|
|
2166
2176
|
} = await getWorkspaceExtensionEnablementSafe();
|
|
2167
2177
|
return withDisabledState(extensionsWithDisabledState, workspaceDisabledIds, workspaceEnabledIds);
|
|
2168
2178
|
};
|
|
2179
|
+
const getSharedProcessExtensions = (extensionsState, fields) => {
|
|
2180
|
+
const current = get$7(extensionsState.applicationId);
|
|
2181
|
+
const requestedFields = fields === undefined ? undefined : [...new Set([...fields, 'id', 'disabled'])];
|
|
2182
|
+
const cached = current.cachedExtensions;
|
|
2183
|
+
if (cached) {
|
|
2184
|
+
const cachedFields = cached.fields;
|
|
2185
|
+
if (cachedFields === undefined || requestedFields !== undefined && requestedFields.every(field => cachedFields.includes(field))) {
|
|
2186
|
+
return cached.extensions;
|
|
2187
|
+
}
|
|
2188
|
+
}
|
|
2189
|
+
const extensions = Promise.try(() => requestedFields === undefined ? invoke$3('ExtensionManagement.getAllExtensions') : invoke$3('ExtensionManagement.getAllExtensions', requestedFields));
|
|
2190
|
+
update({
|
|
2191
|
+
cachedExtensions: {
|
|
2192
|
+
extensions,
|
|
2193
|
+
fields: requestedFields
|
|
2194
|
+
}
|
|
2195
|
+
}, extensionsState.applicationId);
|
|
2196
|
+
void extensions.catch(() => {
|
|
2197
|
+
try {
|
|
2198
|
+
clearCachedExtensions(extensionsState.applicationId, extensions);
|
|
2199
|
+
} catch {
|
|
2200
|
+
// The application may have been disposed while discovery was pending.
|
|
2201
|
+
}
|
|
2202
|
+
});
|
|
2203
|
+
return extensions;
|
|
2204
|
+
};
|
|
2169
2205
|
const getAllExtensionsWithState = async (extensionsState, assetDir, platform, fields) => {
|
|
2170
2206
|
const {
|
|
2171
2207
|
assetDir: resolvedAssetDir,
|
|
@@ -2187,7 +2223,7 @@ const getAllExtensionsWithState = async (extensionsState, assetDir, platform, fi
|
|
|
2187
2223
|
const compatibleExtensions = [...webExtensions, ...meta].filter(extension => isExtensionCompatible(extension, resolvedPlatform));
|
|
2188
2224
|
extensions = await getExtensionsWithState(compatibleExtensions, extensionsState, resolvedPlatform);
|
|
2189
2225
|
} else {
|
|
2190
|
-
const local = await
|
|
2226
|
+
const local = await getSharedProcessExtensions(extensionsState, fields);
|
|
2191
2227
|
extensions = await getExtensionsWithState([...local, ...meta], extensionsState, resolvedPlatform);
|
|
2192
2228
|
}
|
|
2193
2229
|
if (fields === undefined) {
|
|
@@ -3414,6 +3450,7 @@ const activateByEvent = async (event, assetDir, platform, application) => {
|
|
|
3414
3450
|
};
|
|
3415
3451
|
|
|
3416
3452
|
const invalidateExtensionsCache = async (extensionId, disabled) => {
|
|
3453
|
+
clearAllCachedExtensions();
|
|
3417
3454
|
try {
|
|
3418
3455
|
if (extensionId) {
|
|
3419
3456
|
await invoke$4('ExtensionManagement.handleExtensionsCacheInvalidated', extensionId, disabled);
|
|
@@ -3916,6 +3953,9 @@ const executeLanguageServerCompletion = async (rpc, extension, textDocument, off
|
|
|
3916
3953
|
return result.map(sanitizeCompletionItem).filter(item => item !== undefined);
|
|
3917
3954
|
};
|
|
3918
3955
|
|
|
3956
|
+
// Preserve provider activation, RPC permissions, application identity and language-server metadata.
|
|
3957
|
+
const languageProviderManifestFields = ['applicationGeneration', 'applicationId', 'browser', 'builtin', 'completionProviders', 'contentSecurityPolicy', 'diagnosticProviders', 'disabled', 'id', 'isolated', 'isWeb', 'languageServers', 'path', 'rpc', 'uri', 'workerName'];
|
|
3958
|
+
|
|
3919
3959
|
/* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */
|
|
3920
3960
|
|
|
3921
3961
|
const contributesCompletionProvider = (extension, languageId) => {
|
|
@@ -3925,7 +3965,7 @@ const contributesLanguageServer$3 = (extension, languageId) => {
|
|
|
3925
3965
|
return Array.isArray(extension.languageServers) && extension.languageServers.some(languageServer => languageServer.languageId === languageId);
|
|
3926
3966
|
};
|
|
3927
3967
|
const getMatchingExtensions$6 = async (extensionsState, textDocument, assetDir, platform) => {
|
|
3928
|
-
const extensions = await getAllExtensionsWithState(extensionsState, assetDir, platform);
|
|
3968
|
+
const extensions = await getAllExtensionsWithState(extensionsState, assetDir, platform, languageProviderManifestFields);
|
|
3929
3969
|
return extensions.filter(extension => !extension.disabled && isExtensionIsolated(extension) && (contributesCompletionProvider(extension, textDocument.languageId) || contributesLanguageServer$3(extension, textDocument.languageId)));
|
|
3930
3970
|
};
|
|
3931
3971
|
const executeRpcCompletionProvider = async (rpc, textDocument, args) => {
|
|
@@ -4015,7 +4055,7 @@ const contributesLanguageServer$2 = (extension, languageId) => {
|
|
|
4015
4055
|
return Array.isArray(extension.languageServers) && extension.languageServers.some(languageServer => languageServer.languageId === languageId);
|
|
4016
4056
|
};
|
|
4017
4057
|
const getMatchingExtensions$5 = async (extensionsState, textDocument, assetDir, platform) => {
|
|
4018
|
-
const extensions = await getAllExtensionsWithState(extensionsState, assetDir, platform);
|
|
4058
|
+
const extensions = await getAllExtensionsWithState(extensionsState, assetDir, platform, languageProviderManifestFields);
|
|
4019
4059
|
return extensions.filter(extension => !extension.disabled && isExtensionIsolated(extension) && (contributesDiagnosticProvider(extension, textDocument.languageId) || contributesLanguageServer$2(extension, textDocument.languageId)));
|
|
4020
4060
|
};
|
|
4021
4061
|
const executeRpcDiagnosticProvider = async (rpc, textDocument, args) => {
|