@lvce-editor/extension-management-worker 4.30.2 → 4.30.4
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.
|
@@ -1597,6 +1597,7 @@ const invokeAndTransfer = (method, ...params) => {
|
|
|
1597
1597
|
return invokeAndTransfer$1(method, ...params);
|
|
1598
1598
|
};
|
|
1599
1599
|
|
|
1600
|
+
const pendingRpcs = Object.create(null);
|
|
1600
1601
|
const createIsolatedExtensionHostWorker = async (extensionId, absolutePath, workerName, createRpc, invokeAndTransfer) => {
|
|
1601
1602
|
return createRpc({
|
|
1602
1603
|
commandMap: commandMapRef,
|
|
@@ -1606,14 +1607,30 @@ const createIsolatedExtensionHostWorker = async (extensionId, absolutePath, work
|
|
|
1606
1607
|
}
|
|
1607
1608
|
});
|
|
1608
1609
|
};
|
|
1609
|
-
const
|
|
1610
|
+
const createWorker = (extensionId, absolutePath, workerName) => {
|
|
1611
|
+
return createIsolatedExtensionHostWorker(extensionId, absolutePath, workerName, create$7, invokeAndTransfer);
|
|
1612
|
+
};
|
|
1613
|
+
const createAndStoreRpc = async (extensionId, absolutePath, workerName, create) => {
|
|
1614
|
+
const rpc = await create(extensionId, absolutePath, workerName);
|
|
1615
|
+
set$2(extensionId, rpc);
|
|
1616
|
+
return rpc;
|
|
1617
|
+
};
|
|
1618
|
+
const getOrCreateIsolatedExtensionHostWorker = async (extensionId, absolutePath, workerName = '', create = createWorker) => {
|
|
1610
1619
|
const existingRpc = get$3(extensionId);
|
|
1611
1620
|
if (existingRpc) {
|
|
1612
1621
|
return existingRpc;
|
|
1613
1622
|
}
|
|
1614
|
-
const
|
|
1615
|
-
|
|
1616
|
-
|
|
1623
|
+
const pendingRpc = pendingRpcs[extensionId];
|
|
1624
|
+
if (pendingRpc !== undefined) {
|
|
1625
|
+
return pendingRpc;
|
|
1626
|
+
}
|
|
1627
|
+
const newRpc = createAndStoreRpc(extensionId, absolutePath, workerName, create);
|
|
1628
|
+
pendingRpcs[extensionId] = newRpc;
|
|
1629
|
+
try {
|
|
1630
|
+
return await newRpc;
|
|
1631
|
+
} finally {
|
|
1632
|
+
delete pendingRpcs[extensionId];
|
|
1633
|
+
}
|
|
1617
1634
|
};
|
|
1618
1635
|
|
|
1619
1636
|
const activateIsolatedExtension = async (extensionId, absolutePath, workerName, activationEvent, getOrCreate = getOrCreateIsolatedExtensionHostWorker) => {
|
|
@@ -3244,12 +3261,6 @@ const getStatusBarItems = async () => {
|
|
|
3244
3261
|
return results.flat();
|
|
3245
3262
|
};
|
|
3246
3263
|
|
|
3247
|
-
const contributesViews = extension => {
|
|
3248
|
-
return Array.isArray(extension.views) && extension.views.length > 0;
|
|
3249
|
-
};
|
|
3250
|
-
const getManifestView = (extension, id) => {
|
|
3251
|
-
return extension.views?.find(view => view.id === id);
|
|
3252
|
-
};
|
|
3253
3264
|
const getCss = (extension, manifestView, assetDir, platform) => {
|
|
3254
3265
|
const css = manifestView?.css;
|
|
3255
3266
|
if (typeof css !== 'string' || css.length === 0) {
|
|
@@ -3260,13 +3271,16 @@ const getCss = (extension, manifestView, assetDir, platform) => {
|
|
|
3260
3271
|
browser: css
|
|
3261
3272
|
}, assetDir, platform);
|
|
3262
3273
|
};
|
|
3274
|
+
|
|
3263
3275
|
const isAbsoluteIcon = icon => {
|
|
3264
3276
|
return icon.startsWith('http://') || icon.startsWith('https://') || icon.startsWith('file://') || icon.startsWith('/');
|
|
3265
3277
|
};
|
|
3278
|
+
|
|
3266
3279
|
const isRelativeIconPath = icon => {
|
|
3267
3280
|
return icon.startsWith('./') || icon.startsWith('../') || icon.includes('/') || /\.(?:bmp|gif|ico|jpe?g|png|svg|webp)$/i.test(icon);
|
|
3268
3281
|
};
|
|
3269
|
-
|
|
3282
|
+
|
|
3283
|
+
const getIcon = (extension, manifestView, assetDir, platform) => {
|
|
3270
3284
|
const manifestIcon = manifestView?.icon;
|
|
3271
3285
|
if (typeof manifestIcon === 'string' && manifestIcon.length > 0) {
|
|
3272
3286
|
if (isAbsoluteIcon(manifestIcon) || !isRelativeIconPath(manifestIcon)) {
|
|
@@ -3277,8 +3291,9 @@ const getIcon = (extension, manifestView, registeredView, assetDir, platform) =>
|
|
|
3277
3291
|
browser: manifestIcon
|
|
3278
3292
|
}, assetDir, platform);
|
|
3279
3293
|
}
|
|
3280
|
-
return
|
|
3294
|
+
return '';
|
|
3281
3295
|
};
|
|
3296
|
+
|
|
3282
3297
|
const getIframe = (extension, manifestView, assetDir, platform) => {
|
|
3283
3298
|
const iframe = manifestView?.iframe;
|
|
3284
3299
|
if (!iframe || typeof iframe.path !== 'string' || iframe.path.length === 0) {
|
|
@@ -3294,9 +3309,9 @@ const getIframe = (extension, manifestView, assetDir, platform) => {
|
|
|
3294
3309
|
}, assetDir, platform)
|
|
3295
3310
|
};
|
|
3296
3311
|
};
|
|
3297
|
-
|
|
3298
|
-
|
|
3299
|
-
const
|
|
3312
|
+
|
|
3313
|
+
const toView = (extension, manifestView, assetDir, platform) => {
|
|
3314
|
+
const id = manifestView.id || '';
|
|
3300
3315
|
const css = getCss(extension, manifestView, assetDir, platform);
|
|
3301
3316
|
const selector = Array.isArray(manifestView?.selector) ? manifestView.selector.filter(item => typeof item === 'string') : undefined;
|
|
3302
3317
|
const type = typeof manifestView?.type === 'string' ? manifestView.type : undefined;
|
|
@@ -3304,8 +3319,8 @@ const toView = (extension, registeredView, assetDir, platform) => {
|
|
|
3304
3319
|
...(css && {
|
|
3305
3320
|
css
|
|
3306
3321
|
}),
|
|
3307
|
-
...(
|
|
3308
|
-
eventListeners:
|
|
3322
|
+
...(Array.isArray(manifestView.eventListeners) && {
|
|
3323
|
+
eventListeners: manifestView.eventListeners
|
|
3309
3324
|
}),
|
|
3310
3325
|
...(selector && {
|
|
3311
3326
|
selector
|
|
@@ -3314,37 +3329,49 @@ const toView = (extension, registeredView, assetDir, platform) => {
|
|
|
3314
3329
|
type
|
|
3315
3330
|
}),
|
|
3316
3331
|
extensionId: getExtensionId$1(extension),
|
|
3317
|
-
icon: getIcon(extension, manifestView,
|
|
3332
|
+
icon: getIcon(extension, manifestView, assetDir, platform),
|
|
3318
3333
|
id,
|
|
3319
3334
|
iframe: getIframe(extension, manifestView, assetDir, platform),
|
|
3320
|
-
kind:
|
|
3321
|
-
showSideBarHeader: manifestView
|
|
3322
|
-
title:
|
|
3335
|
+
kind: manifestView.kind || '',
|
|
3336
|
+
showSideBarHeader: manifestView.showSideBarHeader !== false,
|
|
3337
|
+
title: manifestView.title || id
|
|
3323
3338
|
};
|
|
3324
3339
|
};
|
|
3325
|
-
|
|
3326
|
-
|
|
3327
|
-
|
|
3328
|
-
const getExtensionViews = async (extension, assetDir, platform) => {
|
|
3329
|
-
const rpc = await getRpc$1(extension, assetDir, platform);
|
|
3330
|
-
const snapshot = await getRpcViewRegistrySnapshot(rpc);
|
|
3331
|
-
if (!Array.isArray(snapshot.views)) {
|
|
3340
|
+
|
|
3341
|
+
const getExtensionViews = (extension, assetDir, platform) => {
|
|
3342
|
+
if (!Array.isArray(extension.views)) {
|
|
3332
3343
|
return [];
|
|
3333
3344
|
}
|
|
3334
|
-
return
|
|
3345
|
+
return extension.views.filter(view => view && typeof view.id === 'string').map(view => toView(extension, view, assetDir, platform));
|
|
3335
3346
|
};
|
|
3336
|
-
|
|
3337
|
-
|
|
3338
|
-
|
|
3339
|
-
return results.flat();
|
|
3347
|
+
|
|
3348
|
+
const contributesViews = extension => {
|
|
3349
|
+
return Array.isArray(extension.views) && extension.views.length > 0;
|
|
3340
3350
|
};
|
|
3351
|
+
|
|
3352
|
+
const shouldLoadViews = extension => {
|
|
3353
|
+
if (!contributesViews(extension)) {
|
|
3354
|
+
return false;
|
|
3355
|
+
}
|
|
3356
|
+
if (!isExtensionIsolated(extension)) {
|
|
3357
|
+
warn(`Extension "${getExtensionId$1(extension)}" contributes activity bar views but is not isolated. The views will not be shown. Add "isolated": true to extension.json to enable them.`);
|
|
3358
|
+
return false;
|
|
3359
|
+
}
|
|
3360
|
+
return true;
|
|
3361
|
+
};
|
|
3362
|
+
|
|
3363
|
+
const getViewsFromExtensions = (extensions, assetDir, platform) => {
|
|
3364
|
+
const matchingExtensions = extensions.filter(shouldLoadViews);
|
|
3365
|
+
return matchingExtensions.flatMap(extension => getExtensionViews(extension, assetDir, platform));
|
|
3366
|
+
};
|
|
3367
|
+
|
|
3341
3368
|
const getViews = async (assetDir, platform) => {
|
|
3342
3369
|
const {
|
|
3343
3370
|
assetDir: resolvedAssetDir,
|
|
3344
3371
|
platform: resolvedPlatform
|
|
3345
3372
|
} = await getRuntimeContext(assetDir, platform);
|
|
3346
3373
|
const extensions = await getAllExtensions(resolvedAssetDir, resolvedPlatform);
|
|
3347
|
-
return
|
|
3374
|
+
return getViewsFromExtensions(extensions, resolvedAssetDir, resolvedPlatform);
|
|
3348
3375
|
};
|
|
3349
3376
|
|
|
3350
3377
|
const handleData = () => {};
|