@lvce-editor/extension-management-worker 4.88.4 → 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 = fields === undefined ? await invoke$3('ExtensionManagement.getAllExtensions') : await invoke$3('ExtensionManagement.getAllExtensions', [...new Set([...fields, 'id', 'disabled'])]);
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);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/extension-management-worker",
3
- "version": "4.88.4",
3
+ "version": "4.88.5",
4
4
  "description": "Webworker for the Extension Management functionality in Lvce Editor.",
5
5
  "keywords": [
6
6
  "web-worker"