Abstractmarketplace repositories used for search and as install sources.
repository used to load installed plugins.
OptionalpluginManager: PluginManager
optional PluginManager to delegate registerExtensions,
getRegisteredExtensions and instantiate to. Defaults to a
DefaultPluginManager backed by local. Provide this to supply a custom
PluginManager implementation.
ProtectedfetchProtected Readonlylocalrepository used to load installed plugins.
Protected Readonlyremotesmarketplace repositories used for search and as install sources.
Check whether a plugin (and, optionally, a specific version of it) is available from any of the configured remote marketplace repositories, via a direct targeted lookup - not the fuzzy/ranked search.
Each remote is checked in order via its MarketplacePluginRepository.getPlugin, which
performs a targeted lookup rather than scanning all plugins. Returns true as soon as any
remote has a match.
Note: a MarketplacePluginRepository exposes a single "current" VersionedPluginDescriptor
per plugin ID (typically the latest published version), not a full version history. When
version is given, this checks whether that current version matches - it does not confirm
whether an older version was ever published.
the plugin ID to check for (as returned by VersionedPluginDescriptor.pluginId).
Optionalversion: string
optional exact version to additionally check for.
true if the plugin (and version, if given) is found in at least one configured remote,
false otherwise.
Compare the local repository against a remote repository and yield entries where a newer version is available remotely.
Optionalremote: VersionedPluginRepository
the remote VersionedPluginRepository to compare against. Defaults to the first configured remote.
an async iterable of objects pairing the remote VersionedPluginDescriptor with the available version string.
Return ExtensionInfo instances for all registered Extensions implementing the specified Extension Point.
the Extension Point for which to return ExtensionInfo instances
array of ExtensionInfo
AbstractinstallInstall a plugin (and optionally its dependencies) from the remote marketplace into the local repository.
the VersionedPluginDescriptor identifying the plugin to install.
Optionaloptions: { includeDependencies?: boolean }
OptionalincludeDependencies?: booleanif true, recursively install missing dependencies.
Instantiate a specific Extension.
the opaque handle for the Extension provided by this Extension Manager instance via ExtensionInfo.extensionHandle.
OptionalhostData: Map<string, string>
optional data to be passed in to the Extension when instantiating it.
an Extension instance implementing an Extension Point.
List all plugins currently installed in the local repository.
an async iterable of VersionedPluginDescriptor instances for all locally installed plugins.
Scan for Plugins and register their Extensions which implement the specified Extension Point.
the Extension Point for which to register Extensions
Search for plugins across all configured remote marketplace repositories.
the search criteria, passed to each remote repository in order.
an async iterable of matching VersionedPluginDescriptor instances from all remotes.
Supplies a host-provided FetchInterface to this manager and forwards it to its
remotes/local repositories, for those which support FetchCapable.
AbstractuninstallRemove a plugin from the local repository.
Throws if another installed plugin declares a dependency on the plugin being removed.
the ID of the plugin to remove.
Abstract MarketplacePluginManager implementation.
Combines one or more
TRemoterepositories (for search and install source) with aTLocalrepository (for loading installed plugins). The standard PluginManager methods delegate to an internal DefaultPluginManager backed by the local repository only.Provides a concrete checkForUpdates implementation. Subclasses must implement install and uninstall with ecosystem-specific logic (e.g. HttpPluginManager, NpmPluginManager).