mirror of
https://github.com/Microsoft/vscode
synced 2024-10-01 08:50:48 +00:00
Support version for proposed APIs (#216608)
Support version for proposed APIs
This commit is contained in:
parent
f97a14715e
commit
a764c2ac80
|
@ -234,7 +234,7 @@ class MonacoGenerator {
|
|||
function generateApiProposalNames() {
|
||||
let eol;
|
||||
try {
|
||||
const src = fs.readFileSync('src/vs/workbench/services/extensions/common/extensionsApiProposals.ts', 'utf-8');
|
||||
const src = fs.readFileSync('src/vs/platform/extensions/common/extensionsApiProposals.ts', 'utf-8');
|
||||
const match = /\r?\n/m.exec(src);
|
||||
eol = match ? match[0] : os.EOL;
|
||||
}
|
||||
|
@ -242,18 +242,27 @@ function generateApiProposalNames() {
|
|||
eol = os.EOL;
|
||||
}
|
||||
const pattern = /vscode\.proposed\.([a-zA-Z\d]+)\.d\.ts$/;
|
||||
const proposalNames = new Set();
|
||||
const versionPattern = /^\s*\/\/\s*version\s*:\s*(\d+)\s*$/mi;
|
||||
const proposals = new Map();
|
||||
const input = es.through();
|
||||
const output = input
|
||||
.pipe(util.filter((f) => pattern.test(f.path)))
|
||||
.pipe(es.through((f) => {
|
||||
const name = path.basename(f.path);
|
||||
const match = pattern.exec(name);
|
||||
if (match) {
|
||||
proposalNames.add(match[1]);
|
||||
if (!match) {
|
||||
return;
|
||||
}
|
||||
const proposalName = match[1];
|
||||
const contents = f.contents.toString('utf8');
|
||||
const versionMatch = versionPattern.exec(contents);
|
||||
const version = versionMatch ? versionMatch[1] : undefined;
|
||||
proposals.set(proposalName, {
|
||||
proposal: `https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.${proposalName}.d.ts`,
|
||||
version: version ? parseInt(version) : undefined
|
||||
});
|
||||
}, function () {
|
||||
const names = [...proposalNames.values()].sort();
|
||||
const names = [...proposals.keys()].sort();
|
||||
const contents = [
|
||||
'/*---------------------------------------------------------------------------------------------',
|
||||
' * Copyright (c) Microsoft Corporation. All rights reserved.',
|
||||
|
@ -262,14 +271,18 @@ function generateApiProposalNames() {
|
|||
'',
|
||||
'// THIS IS A GENERATED FILE. DO NOT EDIT DIRECTLY.',
|
||||
'',
|
||||
'export const allApiProposals = Object.freeze({',
|
||||
`${names.map(name => `\t${name}: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.${name}.d.ts'`).join(`,${eol}`)}`,
|
||||
'});',
|
||||
'export type ApiProposalName = keyof typeof allApiProposals;',
|
||||
'const _allApiProposals = {',
|
||||
`${names.map(proposalName => {
|
||||
const proposal = proposals.get(proposalName);
|
||||
return `\t${proposalName}: {${eol}\t\tproposal: '${proposal.proposal}',${eol}${proposal.version ? `\t\tversion: ${proposal.version}${eol}` : ''}\t}`;
|
||||
}).join(`,${eol}`)}`,
|
||||
'};',
|
||||
'export const allApiProposals = Object.freeze<{ [proposalName: string]: Readonly<{ proposal: string; version?: number }> }>(_allApiProposals);',
|
||||
'export type ApiProposalName = keyof typeof _allApiProposals;',
|
||||
'',
|
||||
].join(eol);
|
||||
this.emit('data', new File({
|
||||
path: 'vs/workbench/services/extensions/common/extensionsApiProposals.ts',
|
||||
path: 'vs/platform/extensions/common/extensionsApiProposals.ts',
|
||||
contents: Buffer.from(contents)
|
||||
}));
|
||||
this.emit('end');
|
||||
|
|
|
@ -275,7 +275,7 @@ function generateApiProposalNames() {
|
|||
let eol: string;
|
||||
|
||||
try {
|
||||
const src = fs.readFileSync('src/vs/workbench/services/extensions/common/extensionsApiProposals.ts', 'utf-8');
|
||||
const src = fs.readFileSync('src/vs/platform/extensions/common/extensionsApiProposals.ts', 'utf-8');
|
||||
const match = /\r?\n/m.exec(src);
|
||||
eol = match ? match[0] : os.EOL;
|
||||
} catch {
|
||||
|
@ -283,7 +283,8 @@ function generateApiProposalNames() {
|
|||
}
|
||||
|
||||
const pattern = /vscode\.proposed\.([a-zA-Z\d]+)\.d\.ts$/;
|
||||
const proposalNames = new Set<string>();
|
||||
const versionPattern = /^\s*\/\/\s*version\s*:\s*(\d+)\s*$/mi;
|
||||
const proposals = new Map<string, { proposal: string; version?: number }>();
|
||||
|
||||
const input = es.through();
|
||||
const output = input
|
||||
|
@ -292,11 +293,22 @@ function generateApiProposalNames() {
|
|||
const name = path.basename(f.path);
|
||||
const match = pattern.exec(name);
|
||||
|
||||
if (match) {
|
||||
proposalNames.add(match[1]);
|
||||
if (!match) {
|
||||
return;
|
||||
}
|
||||
|
||||
const proposalName = match[1];
|
||||
|
||||
const contents = f.contents.toString('utf8');
|
||||
const versionMatch = versionPattern.exec(contents);
|
||||
const version = versionMatch ? versionMatch[1] : undefined;
|
||||
|
||||
proposals.set(proposalName, {
|
||||
proposal: `https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.${proposalName}.d.ts`,
|
||||
version: version ? parseInt(version) : undefined
|
||||
});
|
||||
}, function () {
|
||||
const names = [...proposalNames.values()].sort();
|
||||
const names = [...proposals.keys()].sort();
|
||||
const contents = [
|
||||
'/*---------------------------------------------------------------------------------------------',
|
||||
' * Copyright (c) Microsoft Corporation. All rights reserved.',
|
||||
|
@ -305,15 +317,19 @@ function generateApiProposalNames() {
|
|||
'',
|
||||
'// THIS IS A GENERATED FILE. DO NOT EDIT DIRECTLY.',
|
||||
'',
|
||||
'export const allApiProposals = Object.freeze({',
|
||||
`${names.map(name => `\t${name}: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.${name}.d.ts'`).join(`,${eol}`)}`,
|
||||
'});',
|
||||
'export type ApiProposalName = keyof typeof allApiProposals;',
|
||||
'const _allApiProposals = {',
|
||||
`${names.map(proposalName => {
|
||||
const proposal = proposals.get(proposalName)!;
|
||||
return `\t${proposalName}: {${eol}\t\tproposal: '${proposal.proposal}',${eol}${proposal.version ? `\t\tversion: ${proposal.version}${eol}` : ''}\t}`;
|
||||
}).join(`,${eol}`)}`,
|
||||
'};',
|
||||
'export const allApiProposals = Object.freeze<{ [proposalName: string]: Readonly<{ proposal: string; version?: number }> }>(_allApiProposals);',
|
||||
'export type ApiProposalName = keyof typeof _allApiProposals;',
|
||||
'',
|
||||
].join(eol);
|
||||
|
||||
this.emit('data', new File({
|
||||
path: 'vs/workbench/services/extensions/common/extensionsApiProposals.ts',
|
||||
path: 'vs/platform/extensions/common/extensionsApiProposals.ts',
|
||||
contents: Buffer.from(contents)
|
||||
}));
|
||||
this.emit('end');
|
||||
|
|
|
@ -149,7 +149,8 @@ export class ExtensionLinter {
|
|||
const effectiveProposalNames = extensionEnabledApiProposals[extensionId];
|
||||
if (Array.isArray(effectiveProposalNames) && enabledApiProposals.children) {
|
||||
for (const child of enabledApiProposals.children) {
|
||||
if (child.type === 'string' && !effectiveProposalNames.includes(getNodeValue(child))) {
|
||||
const proposalName = child.type === 'string' ? getNodeValue(child) : undefined;
|
||||
if (typeof proposalName === 'string' && !effectiveProposalNames.includes(proposalName.split('@')[0])) {
|
||||
const start = document.positionAt(child.offset);
|
||||
const end = document.positionAt(child.offset + child.length);
|
||||
diagnostics.push(new Diagnostic(new Range(start, end), apiProposalNotListed, DiagnosticSeverity.Error));
|
||||
|
|
|
@ -24,7 +24,7 @@ import { localize } from 'vs/nls';
|
|||
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
|
||||
import { IProductVersion, Metadata } from 'vs/platform/extensionManagement/common/extensionManagement';
|
||||
import { areSameExtensions, computeTargetPlatform, ExtensionKey, getExtensionId, getGalleryExtensionId } from 'vs/platform/extensionManagement/common/extensionManagementUtil';
|
||||
import { ExtensionType, ExtensionIdentifier, IExtensionManifest, TargetPlatform, IExtensionIdentifier, IRelaxedExtensionManifest, UNDEFINED_PUBLISHER, IExtensionDescription, BUILTIN_MANIFEST_CACHE_FILE, USER_MANIFEST_CACHE_FILE, ExtensionIdentifierMap } from 'vs/platform/extensions/common/extensions';
|
||||
import { ExtensionType, ExtensionIdentifier, IExtensionManifest, TargetPlatform, IExtensionIdentifier, IRelaxedExtensionManifest, UNDEFINED_PUBLISHER, IExtensionDescription, BUILTIN_MANIFEST_CACHE_FILE, USER_MANIFEST_CACHE_FILE, ExtensionIdentifierMap, parseEnabledApiProposalNames } from 'vs/platform/extensions/common/extensions';
|
||||
import { validateExtensionManifest } from 'vs/platform/extensions/common/extensionValidator';
|
||||
import { FileOperationResult, IFileService, toFileOperationResult } from 'vs/platform/files/common/files';
|
||||
import { createDecorator, IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||
|
@ -983,6 +983,7 @@ export function toExtensionDescription(extension: IScannedExtension, isUnderDeve
|
|||
targetPlatform: extension.targetPlatform,
|
||||
publisherDisplayName: extension.publisherDisplayName,
|
||||
...extension.manifest,
|
||||
enabledApiProposals: extension.manifest.enabledApiProposals ? parseEnabledApiProposalNames([...extension.manifest.enabledApiProposals]) : undefined,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -458,7 +458,7 @@ export class ExtensionIdentifierMap<T> {
|
|||
}
|
||||
}
|
||||
|
||||
export interface IRelaxedExtensionDescription extends IRelaxedExtensionManifest {
|
||||
interface IRelaxedExtensionDescription extends IRelaxedExtensionManifest {
|
||||
id?: string;
|
||||
identifier: ExtensionIdentifier;
|
||||
uuid?: string;
|
||||
|
@ -470,7 +470,9 @@ export interface IRelaxedExtensionDescription extends IRelaxedExtensionManifest
|
|||
extensionLocation: URI;
|
||||
}
|
||||
|
||||
export type IExtensionDescription = Readonly<IRelaxedExtensionDescription>;
|
||||
export type IExtensionDescription = Readonly<IRelaxedExtensionDescription> & {
|
||||
enabledApiProposals: string[] | undefined; // This needs to be updated while validating & updating the proposals.
|
||||
};
|
||||
|
||||
export function isApplicationScopedExtension(manifest: IExtensionManifest): boolean {
|
||||
return isLanguagePackExtension(manifest);
|
||||
|
@ -492,6 +494,10 @@ export function isResolverExtension(manifest: IExtensionManifest, remoteAuthorit
|
|||
return false;
|
||||
}
|
||||
|
||||
export function parseEnabledApiProposalNames(enabledApiProposals: string[]): string[] {
|
||||
return enabledApiProposals.map(proposal => proposal.split('@')[0]);
|
||||
}
|
||||
|
||||
export const IBuiltinExtensionsScannerService = createDecorator<IBuiltinExtensionsScannerService>('IBuiltinExtensionsScannerService');
|
||||
export interface IBuiltinExtensionsScannerService {
|
||||
readonly _serviceBrand: undefined;
|
||||
|
|
377
src/vs/platform/extensions/common/extensionsApiProposals.ts
Normal file
377
src/vs/platform/extensions/common/extensionsApiProposals.ts
Normal file
|
@ -0,0 +1,377 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
// THIS IS A GENERATED FILE. DO NOT EDIT DIRECTLY.
|
||||
|
||||
const _allApiProposals = {
|
||||
activeComment: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.activeComment.d.ts',
|
||||
},
|
||||
aiRelatedInformation: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.aiRelatedInformation.d.ts',
|
||||
},
|
||||
aiTextSearchProvider: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.aiTextSearchProvider.d.ts',
|
||||
},
|
||||
attributableCoverage: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.attributableCoverage.d.ts',
|
||||
},
|
||||
authGetSessions: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.authGetSessions.d.ts',
|
||||
},
|
||||
authLearnMore: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.authLearnMore.d.ts',
|
||||
},
|
||||
authSession: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.authSession.d.ts',
|
||||
},
|
||||
canonicalUriProvider: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.canonicalUriProvider.d.ts',
|
||||
},
|
||||
chatParticipantAdditions: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.chatParticipantAdditions.d.ts',
|
||||
},
|
||||
chatParticipantPrivate: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.chatParticipantPrivate.d.ts',
|
||||
},
|
||||
chatProvider: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.chatProvider.d.ts',
|
||||
},
|
||||
chatTab: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.chatTab.d.ts',
|
||||
},
|
||||
chatTools: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.chatTools.d.ts',
|
||||
},
|
||||
chatVariableResolver: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.chatVariableResolver.d.ts',
|
||||
},
|
||||
codeActionAI: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.codeActionAI.d.ts',
|
||||
},
|
||||
codeActionRanges: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.codeActionRanges.d.ts',
|
||||
},
|
||||
codiconDecoration: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.codiconDecoration.d.ts',
|
||||
},
|
||||
commentReactor: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.commentReactor.d.ts',
|
||||
},
|
||||
commentReveal: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.commentReveal.d.ts',
|
||||
},
|
||||
commentThreadApplicability: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.commentThreadApplicability.d.ts',
|
||||
},
|
||||
commentingRangeHint: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.commentingRangeHint.d.ts',
|
||||
},
|
||||
commentsDraftState: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.commentsDraftState.d.ts',
|
||||
},
|
||||
contribAccessibilityHelpContent: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribAccessibilityHelpContent.d.ts',
|
||||
},
|
||||
contribCommentEditorActionsMenu: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribCommentEditorActionsMenu.d.ts',
|
||||
},
|
||||
contribCommentPeekContext: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribCommentPeekContext.d.ts',
|
||||
},
|
||||
contribCommentThreadAdditionalMenu: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribCommentThreadAdditionalMenu.d.ts',
|
||||
},
|
||||
contribCommentsViewThreadMenus: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribCommentsViewThreadMenus.d.ts',
|
||||
},
|
||||
contribDiffEditorGutterToolBarMenus: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribDiffEditorGutterToolBarMenus.d.ts',
|
||||
},
|
||||
contribEditSessions: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribEditSessions.d.ts',
|
||||
},
|
||||
contribEditorContentMenu: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribEditorContentMenu.d.ts',
|
||||
},
|
||||
contribIssueReporter: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribIssueReporter.d.ts',
|
||||
},
|
||||
contribLabelFormatterWorkspaceTooltip: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribLabelFormatterWorkspaceTooltip.d.ts',
|
||||
},
|
||||
contribMenuBarHome: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribMenuBarHome.d.ts',
|
||||
},
|
||||
contribMergeEditorMenus: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribMergeEditorMenus.d.ts',
|
||||
},
|
||||
contribMultiDiffEditorMenus: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribMultiDiffEditorMenus.d.ts',
|
||||
},
|
||||
contribNotebookStaticPreloads: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribNotebookStaticPreloads.d.ts',
|
||||
},
|
||||
contribRemoteHelp: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribRemoteHelp.d.ts',
|
||||
},
|
||||
contribShareMenu: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribShareMenu.d.ts',
|
||||
},
|
||||
contribSourceControlHistoryItemGroupMenu: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribSourceControlHistoryItemGroupMenu.d.ts',
|
||||
},
|
||||
contribSourceControlHistoryItemMenu: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribSourceControlHistoryItemMenu.d.ts',
|
||||
},
|
||||
contribSourceControlInputBoxMenu: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribSourceControlInputBoxMenu.d.ts',
|
||||
},
|
||||
contribSourceControlTitleMenu: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribSourceControlTitleMenu.d.ts',
|
||||
},
|
||||
contribStatusBarItems: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribStatusBarItems.d.ts',
|
||||
},
|
||||
contribViewsRemote: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribViewsRemote.d.ts',
|
||||
},
|
||||
contribViewsWelcome: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribViewsWelcome.d.ts',
|
||||
},
|
||||
createFileSystemWatcher: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.createFileSystemWatcher.d.ts',
|
||||
},
|
||||
customEditorMove: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.customEditorMove.d.ts',
|
||||
},
|
||||
debugVisualization: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.debugVisualization.d.ts',
|
||||
},
|
||||
defaultChatParticipant: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.defaultChatParticipant.d.ts',
|
||||
},
|
||||
diffCommand: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.diffCommand.d.ts',
|
||||
},
|
||||
diffContentOptions: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.diffContentOptions.d.ts',
|
||||
},
|
||||
documentFiltersExclusive: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.documentFiltersExclusive.d.ts',
|
||||
},
|
||||
documentPaste: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.documentPaste.d.ts',
|
||||
},
|
||||
editSessionIdentityProvider: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.editSessionIdentityProvider.d.ts',
|
||||
},
|
||||
editorHoverVerbosityLevel: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.editorHoverVerbosityLevel.d.ts',
|
||||
},
|
||||
editorInsets: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.editorInsets.d.ts',
|
||||
},
|
||||
embeddings: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.embeddings.d.ts',
|
||||
},
|
||||
extensionRuntime: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.extensionRuntime.d.ts',
|
||||
},
|
||||
extensionsAny: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.extensionsAny.d.ts',
|
||||
},
|
||||
externalUriOpener: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.externalUriOpener.d.ts',
|
||||
},
|
||||
fileComments: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.fileComments.d.ts',
|
||||
},
|
||||
fileSearchProvider: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.fileSearchProvider.d.ts',
|
||||
},
|
||||
findFiles2: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.findFiles2.d.ts',
|
||||
},
|
||||
findTextInFiles: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.findTextInFiles.d.ts',
|
||||
},
|
||||
fsChunks: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.fsChunks.d.ts',
|
||||
},
|
||||
idToken: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.idToken.d.ts',
|
||||
},
|
||||
inlineCompletionsAdditions: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.inlineCompletionsAdditions.d.ts',
|
||||
},
|
||||
inlineEdit: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.inlineEdit.d.ts',
|
||||
},
|
||||
interactive: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.interactive.d.ts',
|
||||
},
|
||||
interactiveWindow: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.interactiveWindow.d.ts',
|
||||
},
|
||||
ipc: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.ipc.d.ts',
|
||||
},
|
||||
languageModelSystem: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.languageModelSystem.d.ts',
|
||||
},
|
||||
languageStatusText: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.languageStatusText.d.ts',
|
||||
},
|
||||
lmTools: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.lmTools.d.ts',
|
||||
},
|
||||
mappedEditsProvider: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.mappedEditsProvider.d.ts',
|
||||
},
|
||||
multiDocumentHighlightProvider: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.multiDocumentHighlightProvider.d.ts',
|
||||
},
|
||||
newSymbolNamesProvider: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.newSymbolNamesProvider.d.ts',
|
||||
},
|
||||
notebookCellExecution: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookCellExecution.d.ts',
|
||||
},
|
||||
notebookCellExecutionState: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookCellExecutionState.d.ts',
|
||||
},
|
||||
notebookControllerAffinityHidden: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookControllerAffinityHidden.d.ts',
|
||||
},
|
||||
notebookDeprecated: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookDeprecated.d.ts',
|
||||
},
|
||||
notebookExecution: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookExecution.d.ts',
|
||||
},
|
||||
notebookKernelSource: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookKernelSource.d.ts',
|
||||
},
|
||||
notebookLiveShare: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookLiveShare.d.ts',
|
||||
},
|
||||
notebookMessaging: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookMessaging.d.ts',
|
||||
},
|
||||
notebookMime: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookMime.d.ts',
|
||||
},
|
||||
notebookVariableProvider: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookVariableProvider.d.ts',
|
||||
},
|
||||
portsAttributes: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.portsAttributes.d.ts',
|
||||
},
|
||||
profileContentHandlers: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.profileContentHandlers.d.ts',
|
||||
},
|
||||
quickDiffProvider: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.quickDiffProvider.d.ts',
|
||||
},
|
||||
quickPickItemTooltip: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.quickPickItemTooltip.d.ts',
|
||||
},
|
||||
quickPickSortByLabel: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.quickPickSortByLabel.d.ts',
|
||||
},
|
||||
resolvers: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.resolvers.d.ts',
|
||||
},
|
||||
scmActionButton: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmActionButton.d.ts',
|
||||
},
|
||||
scmHistoryProvider: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmHistoryProvider.d.ts',
|
||||
},
|
||||
scmMultiDiffEditor: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmMultiDiffEditor.d.ts',
|
||||
},
|
||||
scmSelectedProvider: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmSelectedProvider.d.ts',
|
||||
},
|
||||
scmTextDocument: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmTextDocument.d.ts',
|
||||
},
|
||||
scmValidation: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmValidation.d.ts',
|
||||
},
|
||||
shareProvider: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.shareProvider.d.ts',
|
||||
},
|
||||
showLocal: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.showLocal.d.ts',
|
||||
},
|
||||
speech: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.speech.d.ts',
|
||||
},
|
||||
tabInputMultiDiff: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.tabInputMultiDiff.d.ts',
|
||||
},
|
||||
tabInputTextMerge: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.tabInputTextMerge.d.ts',
|
||||
},
|
||||
taskPresentationGroup: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.taskPresentationGroup.d.ts',
|
||||
},
|
||||
telemetry: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.telemetry.d.ts',
|
||||
},
|
||||
terminalDataWriteEvent: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.terminalDataWriteEvent.d.ts',
|
||||
},
|
||||
terminalDimensions: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.terminalDimensions.d.ts',
|
||||
},
|
||||
terminalExecuteCommandEvent: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.terminalExecuteCommandEvent.d.ts',
|
||||
},
|
||||
terminalQuickFixProvider: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.terminalQuickFixProvider.d.ts',
|
||||
},
|
||||
terminalSelection: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.terminalSelection.d.ts',
|
||||
},
|
||||
terminalShellIntegration: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.terminalShellIntegration.d.ts',
|
||||
},
|
||||
testObserver: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.testObserver.d.ts',
|
||||
},
|
||||
textSearchProvider: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.textSearchProvider.d.ts',
|
||||
},
|
||||
timeline: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.timeline.d.ts',
|
||||
},
|
||||
tokenInformation: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.tokenInformation.d.ts',
|
||||
},
|
||||
treeViewActiveItem: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.treeViewActiveItem.d.ts',
|
||||
},
|
||||
treeViewMarkdownMessage: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.treeViewMarkdownMessage.d.ts',
|
||||
},
|
||||
treeViewReveal: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.treeViewReveal.d.ts',
|
||||
},
|
||||
tunnelFactory: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.tunnelFactory.d.ts',
|
||||
},
|
||||
tunnels: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.tunnels.d.ts',
|
||||
},
|
||||
workspaceTrust: {
|
||||
proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.workspaceTrust.d.ts',
|
||||
}
|
||||
};
|
||||
export const allApiProposals = Object.freeze<{ [proposalName: string]: Readonly<{ proposal: string; version?: number }> }>(_allApiProposals);
|
||||
export type ApiProposalName = keyof typeof _allApiProposals;
|
22
src/vs/platform/extensions/test/common/extensions.test.ts
Normal file
22
src/vs/platform/extensions/test/common/extensions.test.ts
Normal file
|
@ -0,0 +1,22 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
import assert from 'assert';
|
||||
import { ensureNoDisposablesAreLeakedInTestSuite } from 'vs/base/test/common/utils';
|
||||
import { parseEnabledApiProposalNames } from 'vs/platform/extensions/common/extensions';
|
||||
|
||||
suite('Parsing Enabled Api Proposals', () => {
|
||||
|
||||
ensureNoDisposablesAreLeakedInTestSuite();
|
||||
|
||||
test('parsingEnabledApiProposals', () => {
|
||||
assert.deepStrictEqual(['activeComment', 'commentsDraftState'], parseEnabledApiProposalNames(['activeComment', 'commentsDraftState']));
|
||||
assert.deepStrictEqual(['activeComment', 'commentsDraftState'], parseEnabledApiProposalNames(['activeComment', 'commentsDraftState@1']));
|
||||
assert.deepStrictEqual(['activeComment', 'commentsDraftState'], parseEnabledApiProposalNames(['activeComment', 'commentsDraftState@']));
|
||||
assert.deepStrictEqual(['activeComment', 'commentsDraftState'], parseEnabledApiProposalNames(['activeComment', 'commentsDraftState@randomstring']));
|
||||
assert.deepStrictEqual(['activeComment', 'commentsDraftState'], parseEnabledApiProposalNames(['activeComment', 'commentsDraftState@1234']));
|
||||
assert.deepStrictEqual(['activeComment', 'commentsDraftState'], parseEnabledApiProposalNames(['activeComment', 'commentsDraftState@1234_random']));
|
||||
});
|
||||
|
||||
});
|
|
@ -8,7 +8,7 @@ import { CancellationToken } from 'vs/base/common/cancellation';
|
|||
import { Emitter, Event } from 'vs/base/common/event';
|
||||
import { URI, UriComponents } from 'vs/base/common/uri';
|
||||
import { Disposable as DisposableCls, toDisposable } from 'vs/base/common/lifecycle';
|
||||
import { ExtensionIdentifier, IExtensionDescription, IRelaxedExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { ExtensionIdentifier, IExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { ISignService } from 'vs/platform/sign/common/sign';
|
||||
import { IWorkspaceFolder } from 'vs/platform/workspace/common/workspace';
|
||||
|
@ -173,7 +173,7 @@ export abstract class ExtHostDebugServiceBase extends DisposableCls implements I
|
|||
return item ? this.convertVisualizerTreeItem(treeId, item) : undefined;
|
||||
}
|
||||
|
||||
public registerDebugVisualizationTree<T extends vscode.DebugTreeItem>(manifest: Readonly<IRelaxedExtensionDescription>, id: string, provider: vscode.DebugVisualizationTree<T>): vscode.Disposable {
|
||||
public registerDebugVisualizationTree<T extends vscode.DebugTreeItem>(manifest: IExtensionDescription, id: string, provider: vscode.DebugVisualizationTree<T>): vscode.Disposable {
|
||||
const extensionId = ExtensionIdentifier.toKey(manifest.identifier);
|
||||
const key = this.extensionVisKey(extensionId, id);
|
||||
if (this._debugVisualizationProviders.has(key)) {
|
||||
|
|
|
@ -7,7 +7,7 @@ import type * as vscode from 'vscode';
|
|||
import { URI } from 'vs/base/common/uri';
|
||||
import { MainContext, MainThreadDiaglogsShape, IMainContext } from 'vs/workbench/api/common/extHost.protocol';
|
||||
import { checkProposedApiEnabled } from 'vs/workbench/services/extensions/common/extensions';
|
||||
import { IRelaxedExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { IExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
|
||||
export class ExtHostDialogs {
|
||||
|
||||
|
@ -17,7 +17,7 @@ export class ExtHostDialogs {
|
|||
this._proxy = mainContext.getProxy(MainContext.MainThreadDialogs);
|
||||
}
|
||||
|
||||
showOpenDialog(extension: IRelaxedExtensionDescription, options?: vscode.OpenDialogOptions): Promise<URI[] | undefined> {
|
||||
showOpenDialog(extension: IExtensionDescription, options?: vscode.OpenDialogOptions): Promise<URI[] | undefined> {
|
||||
if (options?.allowUIResources) {
|
||||
checkProposedApiEnabled(extension, 'showLocal');
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@ import { MissingExtensionDependency, ActivationKind, checkProposedApiEnabled, is
|
|||
import { ExtensionDescriptionRegistry, IActivationEventsReader } from 'vs/workbench/services/extensions/common/extensionDescriptionRegistry';
|
||||
import * as errors from 'vs/base/common/errors';
|
||||
import type * as vscode from 'vscode';
|
||||
import { ExtensionIdentifier, ExtensionIdentifierMap, ExtensionIdentifierSet, IExtensionDescription, IRelaxedExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { ExtensionIdentifier, ExtensionIdentifierMap, ExtensionIdentifierSet, IExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { VSBuffer } from 'vs/base/common/buffer';
|
||||
import { ExtensionGlobalMemento, ExtensionMemento } from 'vs/workbench/api/common/extHostMemento';
|
||||
import { RemoteAuthorityResolverError, ExtensionKind, ExtensionMode, ExtensionRuntime, ManagedResolvedAuthority as ExtHostManagedResolvedAuthority } from 'vs/workbench/api/common/extHostTypes';
|
||||
|
@ -615,7 +615,7 @@ export abstract class AbstractExtHostExtensionService extends Disposable impleme
|
|||
});
|
||||
}
|
||||
|
||||
private _activateAllStartupFinishedDeferred(extensions: Readonly<IRelaxedExtensionDescription>[], start: number = 0): void {
|
||||
private _activateAllStartupFinishedDeferred(extensions: IExtensionDescription[], start: number = 0): void {
|
||||
const timeBudget = 50; // 50 milliseconds
|
||||
const startTime = Date.now();
|
||||
|
||||
|
@ -1230,7 +1230,7 @@ class SyncedActivationEventsReader implements IActivationEventsReader {
|
|||
this.addActivationEvents(activationEvents);
|
||||
}
|
||||
|
||||
public readActivationEvents(extensionDescription: Readonly<IRelaxedExtensionDescription>): string[] {
|
||||
public readActivationEvents(extensionDescription: IExtensionDescription): string[] {
|
||||
return this._map.get(extensionDescription.identifier) ?? [];
|
||||
}
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ import { Disposable, DisposableStore, toDisposable } from 'vs/base/common/lifecy
|
|||
import { MarshalledId } from 'vs/base/common/marshallingIds';
|
||||
import { isDefined } from 'vs/base/common/types';
|
||||
import { generateUuid } from 'vs/base/common/uuid';
|
||||
import { IExtensionDescription, IRelaxedExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { IExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { ILogService } from 'vs/platform/log/common/log';
|
||||
import { ExtHostTestingShape, ILocationDto, MainContext, MainThreadTestingShape } from 'vs/workbench/api/common/extHost.protocol';
|
||||
|
@ -36,7 +36,7 @@ interface ControllerInfo {
|
|||
controller: vscode.TestController;
|
||||
profiles: Map<number, vscode.TestRunProfile>;
|
||||
collection: ExtHostTestItemCollection;
|
||||
extension: Readonly<IRelaxedExtensionDescription>;
|
||||
extension: IExtensionDescription;
|
||||
activeProfiles: Set<number>;
|
||||
}
|
||||
|
||||
|
@ -552,7 +552,7 @@ class TestRunTracker extends Disposable {
|
|||
private readonly proxy: MainThreadTestingShape,
|
||||
private readonly logService: ILogService,
|
||||
private readonly profile: vscode.TestRunProfile | undefined,
|
||||
private readonly extension: IRelaxedExtensionDescription,
|
||||
private readonly extension: IExtensionDescription,
|
||||
parentToken?: CancellationToken,
|
||||
) {
|
||||
super();
|
||||
|
@ -836,7 +836,7 @@ export class TestRunCoordinator {
|
|||
* `$startedExtensionTestRun` is not invoked. The run must eventually
|
||||
* be cancelled manually.
|
||||
*/
|
||||
public prepareForMainThreadTestRun(extension: IRelaxedExtensionDescription, req: vscode.TestRunRequest, dto: TestRunDto, profile: vscode.TestRunProfile, token: CancellationToken) {
|
||||
public prepareForMainThreadTestRun(extension: IExtensionDescription, req: vscode.TestRunRequest, dto: TestRunDto, profile: vscode.TestRunProfile, token: CancellationToken) {
|
||||
return this.getTracker(req, dto, profile, extension, token);
|
||||
}
|
||||
|
||||
|
@ -859,7 +859,7 @@ export class TestRunCoordinator {
|
|||
/**
|
||||
* Implements the public `createTestRun` API.
|
||||
*/
|
||||
public createTestRun(extension: IRelaxedExtensionDescription, controllerId: string, collection: ExtHostTestItemCollection, request: vscode.TestRunRequest, name: string | undefined, persist: boolean): vscode.TestRun {
|
||||
public createTestRun(extension: IExtensionDescription, controllerId: string, collection: ExtHostTestItemCollection, request: vscode.TestRunRequest, name: string | undefined, persist: boolean): vscode.TestRun {
|
||||
const existing = this.tracked.get(request);
|
||||
if (existing) {
|
||||
return existing.createRun(name);
|
||||
|
@ -888,7 +888,7 @@ export class TestRunCoordinator {
|
|||
return tracker.createRun(name);
|
||||
}
|
||||
|
||||
private getTracker(req: vscode.TestRunRequest, dto: TestRunDto, profile: vscode.TestRunProfile | undefined, extension: IRelaxedExtensionDescription, token?: CancellationToken) {
|
||||
private getTracker(req: vscode.TestRunRequest, dto: TestRunDto, profile: vscode.TestRunProfile | undefined, extension: IExtensionDescription, token?: CancellationToken) {
|
||||
const tracker = new TestRunTracker(dto, this.proxy, this.logService, profile, extension, token);
|
||||
this.tracked.set(req, tracker);
|
||||
this.trackedById.set(tracker.id, tracker);
|
||||
|
|
|
@ -11,7 +11,7 @@ import { IMessagePassingProtocol } from 'vs/base/parts/ipc/common/ipc';
|
|||
import { MainContext, MainThreadConsoleShape } from 'vs/workbench/api/common/extHost.protocol';
|
||||
import { IExtensionHostInitData } from 'vs/workbench/services/extensions/common/extensionHostProtocol';
|
||||
import { RPCProtocol } from 'vs/workbench/services/extensions/common/rpcProtocol';
|
||||
import { ExtensionIdentifier, IExtensionDescription, IRelaxedExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { ExtensionIdentifier, IExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { ILogService } from 'vs/platform/log/common/log';
|
||||
import { getSingletonServiceDescriptors } from 'vs/platform/instantiation/common/extensions';
|
||||
import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection';
|
||||
|
@ -195,7 +195,7 @@ export class ExtensionHostMain {
|
|||
|
||||
private static _transform(initData: IExtensionHostInitData, rpcProtocol: RPCProtocol): IExtensionHostInitData {
|
||||
initData.extensions.allExtensions.forEach((ext) => {
|
||||
(<Mutable<IRelaxedExtensionDescription>>ext).extensionLocation = URI.revive(rpcProtocol.transformIncomingURIs(ext.extensionLocation));
|
||||
(<Mutable<IExtensionDescription>>ext).extensionLocation = URI.revive(rpcProtocol.transformIncomingURIs(ext.extensionLocation));
|
||||
});
|
||||
initData.environment.appRoot = URI.revive(rpcProtocol.transformIncomingURIs(initData.environment.appRoot));
|
||||
const extDevLocs = initData.environment.extensionDevelopmentLocationURI;
|
||||
|
|
|
@ -64,7 +64,8 @@ suite('ExtHostTelemetry', function () {
|
|||
publisher: 'vscode',
|
||||
version: '1.0.0',
|
||||
engines: { vscode: '*' },
|
||||
extensionLocation: URI.parse('fake')
|
||||
extensionLocation: URI.parse('fake'),
|
||||
enabledApiProposals: undefined,
|
||||
};
|
||||
|
||||
const createExtHostTelemetry = () => {
|
||||
|
|
|
@ -14,7 +14,7 @@ import { URI } from 'vs/base/common/uri';
|
|||
import { mock, mockObject, MockObject } from 'vs/base/test/common/mock';
|
||||
import { ensureNoDisposablesAreLeakedInTestSuite } from 'vs/base/test/common/utils';
|
||||
import * as editorRange from 'vs/editor/common/core/range';
|
||||
import { ExtensionIdentifier, IRelaxedExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { ExtensionIdentifier, IExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { NullLogService } from 'vs/platform/log/common/log';
|
||||
import { MainThreadTestingShape } from 'vs/workbench/api/common/extHost.protocol';
|
||||
import { ExtHostCommands } from 'vs/workbench/api/common/extHostCommands';
|
||||
|
@ -637,7 +637,7 @@ suite('ExtHost Testing', () => {
|
|||
let req: TestRunRequest;
|
||||
|
||||
let dto: TestRunDto;
|
||||
const ext: IRelaxedExtensionDescription = {} as any;
|
||||
const ext: IExtensionDescription = {} as any;
|
||||
|
||||
teardown(() => {
|
||||
for (const { id } of c.trackers) {
|
||||
|
|
|
@ -5,9 +5,10 @@
|
|||
|
||||
import assert from 'assert';
|
||||
import { promiseWithResolvers, timeout } from 'vs/base/common/async';
|
||||
import { Mutable } from 'vs/base/common/types';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
import { ensureNoDisposablesAreLeakedInTestSuite } from 'vs/base/test/common/utils';
|
||||
import { ExtensionIdentifier, IExtensionDescription, IRelaxedExtensionDescription, TargetPlatform } from 'vs/platform/extensions/common/extensions';
|
||||
import { ExtensionIdentifier, IExtensionDescription, TargetPlatform } from 'vs/platform/extensions/common/extensions';
|
||||
import { NullLogService } from 'vs/platform/log/common/log';
|
||||
import { ActivatedExtension, EmptyExtension, ExtensionActivationTimes, ExtensionsActivator, IExtensionsActivatorHost } from 'vs/workbench/api/common/extHostExtensionActivator';
|
||||
import { ExtensionDescriptionRegistry, IActivationEventsReader } from 'vs/workbench/services/extensions/common/extensionDescriptionRegistry';
|
||||
|
@ -85,8 +86,8 @@ suite('ExtensionsActivator', () => {
|
|||
test('Supports having resolved extensions', async () => {
|
||||
const host = new SimpleExtensionsActivatorHost();
|
||||
const bExt = desc(idB);
|
||||
delete (<IRelaxedExtensionDescription>bExt).main;
|
||||
delete (<IRelaxedExtensionDescription>bExt).browser;
|
||||
delete (<Mutable<IExtensionDescription>>bExt).main;
|
||||
delete (<Mutable<IExtensionDescription>>bExt).browser;
|
||||
const activator = createActivator(host, [
|
||||
desc(idA, [idB])
|
||||
], [bExt]);
|
||||
|
@ -103,7 +104,7 @@ suite('ExtensionsActivator', () => {
|
|||
[idB, extActivationB]
|
||||
]);
|
||||
const bExt = desc(idB);
|
||||
(<IRelaxedExtensionDescription>bExt).api = 'none';
|
||||
(<Mutable<IExtensionDescription>>bExt).api = 'none';
|
||||
const activator = createActivator(host, [
|
||||
desc(idA, [idB])
|
||||
], [bExt]);
|
||||
|
@ -274,7 +275,8 @@ suite('ExtensionsActivator', () => {
|
|||
activationEvents,
|
||||
main: 'index.js',
|
||||
targetPlatform: TargetPlatform.UNDEFINED,
|
||||
extensionDependencies: deps.map(d => d.value)
|
||||
extensionDependencies: deps.map(d => d.value),
|
||||
enabledApiProposals: undefined,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ import { TernarySearchTree } from 'vs/base/common/ternarySearchTree';
|
|||
import { URI } from 'vs/base/common/uri';
|
||||
import { mock } from 'vs/base/test/common/mock';
|
||||
import { ensureNoDisposablesAreLeakedInTestSuite } from 'vs/base/test/common/utils';
|
||||
import { ExtensionIdentifier, IExtensionDescription, IRelaxedExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { ExtensionIdentifier, IExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { InstantiationService } from 'vs/platform/instantiation/common/instantiationService';
|
||||
import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection';
|
||||
import { ILogService, NullLogService } from 'vs/platform/log/common/log';
|
||||
|
@ -48,7 +48,7 @@ suite('ExtensionHostMain#ErrorHandler - Wrapping prepareStackTrace can cause slo
|
|||
declare readonly _serviceBrand: undefined;
|
||||
getExtensionPathIndex() {
|
||||
return new class extends ExtensionPaths {
|
||||
override findSubstr(key: URI): Readonly<IRelaxedExtensionDescription> | undefined {
|
||||
override findSubstr(key: URI): IExtensionDescription | undefined {
|
||||
findSubstrCount++;
|
||||
return nullExtensionDescription;
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@ import { CancellationToken } from 'vs/base/common/cancellation';
|
|||
import { IDisposable, IReference, toDisposable } from 'vs/base/common/lifecycle';
|
||||
import { isDefined } from 'vs/base/common/types';
|
||||
import { ContextKeyExpr, ContextKeyExpression, IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
|
||||
import { ExtensionIdentifier, IRelaxedExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { ExtensionIdentifier, IExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { ILogService } from 'vs/platform/log/common/log';
|
||||
import { CONTEXT_VARIABLE_NAME, CONTEXT_VARIABLE_TYPE, CONTEXT_VARIABLE_VALUE, MainThreadDebugVisualization, IDebugVisualization, IDebugVisualizationContext, IExpression, IExpressionContainer, IDebugVisualizationTreeItem } from 'vs/workbench/contrib/debug/common/debug';
|
||||
|
@ -250,7 +250,7 @@ export class DebugVisualizerService implements IDebugVisualizerService {
|
|||
return context;
|
||||
}
|
||||
|
||||
private processExtensionRegistration(ext: Readonly<IRelaxedExtensionDescription>) {
|
||||
private processExtensionRegistration(ext: IExtensionDescription) {
|
||||
const viz = ext.contributes?.debugVisualizers;
|
||||
if (!(viz instanceof Array)) {
|
||||
return;
|
||||
|
|
|
@ -64,7 +64,8 @@ suite('Debug - Debugger', () => {
|
|||
'debuggers': [
|
||||
debuggerContribution
|
||||
]
|
||||
}
|
||||
},
|
||||
enabledApiProposals: undefined,
|
||||
};
|
||||
|
||||
const extensionDescriptor1 = {
|
||||
|
@ -89,7 +90,8 @@ suite('Debug - Debugger', () => {
|
|||
args: ['parg']
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
enabledApiProposals: undefined,
|
||||
};
|
||||
|
||||
const extensionDescriptor2 = {
|
||||
|
@ -122,7 +124,8 @@ suite('Debug - Debugger', () => {
|
|||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
enabledApiProposals: undefined,
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ import { IQuickPickSeparator } from 'vs/platform/quickinput/common/quickInput';
|
|||
import { localize } from 'vs/nls';
|
||||
import { ICommandService } from 'vs/platform/commands/common/commands';
|
||||
import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions';
|
||||
import { IRelaxedExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { IExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { ThemeIcon } from 'vs/base/common/themables';
|
||||
import { Codicon } from 'vs/base/common/codicons';
|
||||
import { IssueSource } from 'vs/platform/issue/common/issue';
|
||||
|
@ -107,7 +107,7 @@ export class IssueQuickAccess extends PickerQuickAccessProvider<IPickerQuickAcce
|
|||
return [...issuePicksConst, ...issuePicksParts];
|
||||
}
|
||||
|
||||
private _createPick(filter: string, action?: MenuItemAction | SubmenuItemAction | undefined, extension?: IRelaxedExtensionDescription): IPickerQuickAccessItem | undefined {
|
||||
private _createPick(filter: string, action?: MenuItemAction | SubmenuItemAction | undefined, extension?: IExtensionDescription): IPickerQuickAccessItem | undefined {
|
||||
const buttons = [{
|
||||
iconClass: ThemeIcon.asClassName(Codicon.info),
|
||||
tooltip: localize('contributedIssuePage', "Open Extension Page")
|
||||
|
|
|
@ -22,7 +22,7 @@ import { VIEWLET_ID } from 'vs/workbench/contrib/remote/browser/remoteExplorer';
|
|||
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
|
||||
import { IViewDescriptor, IViewsRegistry, Extensions, ViewContainerLocation, IViewContainersRegistry, IViewDescriptorService } from 'vs/workbench/common/views';
|
||||
import { Registry } from 'vs/platform/registry/common/platform';
|
||||
import { IExtensionDescription, IRelaxedExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { IExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { IOpenerService } from 'vs/platform/opener/common/opener';
|
||||
import { IQuickInputService } from 'vs/platform/quickinput/common/quickInput';
|
||||
import { ICommandService } from 'vs/platform/commands/common/commands';
|
||||
|
@ -290,7 +290,7 @@ abstract class HelpItemBase implements IHelpItem {
|
|||
label: string;
|
||||
url: string;
|
||||
description: string;
|
||||
extensionDescription: Readonly<IRelaxedExtensionDescription>;
|
||||
extensionDescription: IExtensionDescription;
|
||||
}[]> {
|
||||
return (await Promise.all(this.values.map(async (value) => {
|
||||
return {
|
||||
|
@ -419,7 +419,7 @@ class IssueReporterItem extends HelpItemBase {
|
|||
label: string;
|
||||
description: string;
|
||||
url: string;
|
||||
extensionDescription: Readonly<IRelaxedExtensionDescription>;
|
||||
extensionDescription: IExtensionDescription;
|
||||
}[]> {
|
||||
return Promise.all(this.values.map(async (value) => {
|
||||
return {
|
||||
|
|
|
@ -15,7 +15,6 @@ import { Disposable, DisposableStore } from 'vs/base/common/lifecycle';
|
|||
import { ThemeIcon } from 'vs/base/common/themables';
|
||||
import { index } from 'vs/base/common/arrays';
|
||||
import { isProposedApiEnabled } from 'vs/workbench/services/extensions/common/extensions';
|
||||
import { ApiProposalName } from 'vs/workbench/services/extensions/common/extensionsApiProposals';
|
||||
import { ILocalizedString } from 'vs/platform/action/common/action';
|
||||
import { IExtensionFeatureTableRenderer, IExtensionFeaturesRegistry, IRenderedData, IRowData, ITableData, Extensions as ExtensionFeaturesExtensions } from 'vs/workbench/services/extensionManagement/common/extensionFeatures';
|
||||
import { IExtensionManifest, IKeyBinding } from 'vs/platform/extensions/common/extensions';
|
||||
|
@ -25,6 +24,7 @@ import { platform } from 'vs/base/common/process';
|
|||
import { MarkdownString } from 'vs/base/common/htmlContent';
|
||||
import { ResolvedKeybinding } from 'vs/base/common/keybindings';
|
||||
import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
|
||||
import { ApiProposalName } from 'vs/platform/extensions/common/extensionsApiProposals';
|
||||
|
||||
interface IAPIMenu {
|
||||
readonly key: string;
|
||||
|
|
|
@ -9,13 +9,13 @@ import { URI } from 'vs/base/common/uri';
|
|||
import { IMessagePassingProtocol } from 'vs/base/parts/ipc/common/ipc';
|
||||
import { getExtensionId, getGalleryExtensionId } from 'vs/platform/extensionManagement/common/extensionManagementUtil';
|
||||
import { ImplicitActivationEvents } from 'vs/platform/extensionManagement/common/implicitActivationEvents';
|
||||
import { ExtensionIdentifier, ExtensionIdentifierMap, ExtensionIdentifierSet, ExtensionType, IExtension, IExtensionContributions, IExtensionDescription, TargetPlatform } from 'vs/platform/extensions/common/extensions';
|
||||
import { ExtensionIdentifier, ExtensionIdentifierMap, ExtensionIdentifierSet, ExtensionType, IExtension, IExtensionContributions, IExtensionDescription, parseEnabledApiProposalNames, TargetPlatform } from 'vs/platform/extensions/common/extensions';
|
||||
import { ApiProposalName } from 'vs/platform/extensions/common/extensionsApiProposals';
|
||||
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { IV8Profile } from 'vs/platform/profiling/common/profiling';
|
||||
import { ExtensionHostKind } from 'vs/workbench/services/extensions/common/extensionHostKind';
|
||||
import { IExtensionDescriptionDelta, IExtensionDescriptionSnapshot } from 'vs/workbench/services/extensions/common/extensionHostProtocol';
|
||||
import { ExtensionRunningLocation } from 'vs/workbench/services/extensions/common/extensionRunningLocation';
|
||||
import { ApiProposalName } from 'vs/workbench/services/extensions/common/extensionsApiProposals';
|
||||
import { IExtensionPoint } from 'vs/workbench/services/extensions/common/extensionsRegistry';
|
||||
|
||||
export const nullExtensionDescription = Object.freeze<IExtensionDescription>({
|
||||
|
@ -29,6 +29,7 @@ export const nullExtensionDescription = Object.freeze<IExtensionDescription>({
|
|||
targetPlatform: TargetPlatform.UNDEFINED,
|
||||
isUserBuiltin: false,
|
||||
isUnderDevelopment: false,
|
||||
enabledApiProposals: undefined,
|
||||
});
|
||||
|
||||
export type WebWorkerExtHostConfigValue = boolean | 'auto';
|
||||
|
@ -570,6 +571,7 @@ export function toExtensionDescription(extension: IExtension, isUnderDevelopment
|
|||
targetPlatform: extension.targetPlatform,
|
||||
publisherDisplayName: extension.publisherDisplayName,
|
||||
...extension.manifest,
|
||||
enabledApiProposals: extension.manifest.enabledApiProposals ? parseEnabledApiProposalNames([...extension.manifest.enabledApiProposals]) : undefined,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -1,132 +0,0 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
// THIS IS A GENERATED FILE. DO NOT EDIT DIRECTLY.
|
||||
|
||||
export const allApiProposals = Object.freeze({
|
||||
activeComment: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.activeComment.d.ts',
|
||||
aiRelatedInformation: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.aiRelatedInformation.d.ts',
|
||||
aiTextSearchProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.aiTextSearchProvider.d.ts',
|
||||
attributableCoverage: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.attributableCoverage.d.ts',
|
||||
authGetSessions: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.authGetSessions.d.ts',
|
||||
authLearnMore: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.authLearnMore.d.ts',
|
||||
authSession: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.authSession.d.ts',
|
||||
canonicalUriProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.canonicalUriProvider.d.ts',
|
||||
chatParticipantAdditions: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.chatParticipantAdditions.d.ts',
|
||||
chatParticipantPrivate: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.chatParticipantPrivate.d.ts',
|
||||
chatProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.chatProvider.d.ts',
|
||||
chatTab: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.chatTab.d.ts',
|
||||
chatTools: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.chatTools.d.ts',
|
||||
chatVariableResolver: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.chatVariableResolver.d.ts',
|
||||
codeActionAI: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.codeActionAI.d.ts',
|
||||
codeActionRanges: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.codeActionRanges.d.ts',
|
||||
codiconDecoration: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.codiconDecoration.d.ts',
|
||||
commentReactor: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.commentReactor.d.ts',
|
||||
commentReveal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.commentReveal.d.ts',
|
||||
commentThreadApplicability: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.commentThreadApplicability.d.ts',
|
||||
commentingRangeHint: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.commentingRangeHint.d.ts',
|
||||
commentsDraftState: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.commentsDraftState.d.ts',
|
||||
contribAccessibilityHelpContent: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribAccessibilityHelpContent.d.ts',
|
||||
contribCommentEditorActionsMenu: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribCommentEditorActionsMenu.d.ts',
|
||||
contribCommentPeekContext: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribCommentPeekContext.d.ts',
|
||||
contribCommentThreadAdditionalMenu: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribCommentThreadAdditionalMenu.d.ts',
|
||||
contribCommentsViewThreadMenus: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribCommentsViewThreadMenus.d.ts',
|
||||
contribDiffEditorGutterToolBarMenus: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribDiffEditorGutterToolBarMenus.d.ts',
|
||||
contribEditSessions: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribEditSessions.d.ts',
|
||||
contribEditorContentMenu: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribEditorContentMenu.d.ts',
|
||||
contribIssueReporter: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribIssueReporter.d.ts',
|
||||
contribLabelFormatterWorkspaceTooltip: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribLabelFormatterWorkspaceTooltip.d.ts',
|
||||
contribMenuBarHome: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribMenuBarHome.d.ts',
|
||||
contribMergeEditorMenus: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribMergeEditorMenus.d.ts',
|
||||
contribMultiDiffEditorMenus: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribMultiDiffEditorMenus.d.ts',
|
||||
contribNotebookStaticPreloads: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribNotebookStaticPreloads.d.ts',
|
||||
contribRemoteHelp: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribRemoteHelp.d.ts',
|
||||
contribShareMenu: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribShareMenu.d.ts',
|
||||
contribSourceControlHistoryItemGroupMenu: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribSourceControlHistoryItemGroupMenu.d.ts',
|
||||
contribSourceControlHistoryItemMenu: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribSourceControlHistoryItemMenu.d.ts',
|
||||
contribSourceControlInputBoxMenu: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribSourceControlInputBoxMenu.d.ts',
|
||||
contribSourceControlTitleMenu: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribSourceControlTitleMenu.d.ts',
|
||||
contribStatusBarItems: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribStatusBarItems.d.ts',
|
||||
contribViewsRemote: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribViewsRemote.d.ts',
|
||||
contribViewsWelcome: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribViewsWelcome.d.ts',
|
||||
createFileSystemWatcher: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.createFileSystemWatcher.d.ts',
|
||||
customEditorMove: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.customEditorMove.d.ts',
|
||||
debugVisualization: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.debugVisualization.d.ts',
|
||||
defaultChatParticipant: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.defaultChatParticipant.d.ts',
|
||||
diffCommand: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.diffCommand.d.ts',
|
||||
diffContentOptions: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.diffContentOptions.d.ts',
|
||||
documentFiltersExclusive: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.documentFiltersExclusive.d.ts',
|
||||
documentPaste: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.documentPaste.d.ts',
|
||||
editSessionIdentityProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.editSessionIdentityProvider.d.ts',
|
||||
editorHoverVerbosityLevel: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.editorHoverVerbosityLevel.d.ts',
|
||||
editorInsets: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.editorInsets.d.ts',
|
||||
embeddings: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.embeddings.d.ts',
|
||||
extensionRuntime: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.extensionRuntime.d.ts',
|
||||
extensionsAny: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.extensionsAny.d.ts',
|
||||
externalUriOpener: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.externalUriOpener.d.ts',
|
||||
fileComments: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.fileComments.d.ts',
|
||||
fileSearchProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.fileSearchProvider.d.ts',
|
||||
findFiles2: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.findFiles2.d.ts',
|
||||
findTextInFiles: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.findTextInFiles.d.ts',
|
||||
fsChunks: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.fsChunks.d.ts',
|
||||
idToken: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.idToken.d.ts',
|
||||
inlineCompletionsAdditions: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.inlineCompletionsAdditions.d.ts',
|
||||
inlineEdit: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.inlineEdit.d.ts',
|
||||
interactive: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.interactive.d.ts',
|
||||
interactiveWindow: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.interactiveWindow.d.ts',
|
||||
ipc: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.ipc.d.ts',
|
||||
languageModelSystem: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.languageModelSystem.d.ts',
|
||||
languageStatusText: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.languageStatusText.d.ts',
|
||||
lmTools: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.lmTools.d.ts',
|
||||
mappedEditsProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.mappedEditsProvider.d.ts',
|
||||
multiDocumentHighlightProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.multiDocumentHighlightProvider.d.ts',
|
||||
newSymbolNamesProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.newSymbolNamesProvider.d.ts',
|
||||
notebookCellExecution: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookCellExecution.d.ts',
|
||||
notebookCellExecutionState: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookCellExecutionState.d.ts',
|
||||
notebookControllerAffinityHidden: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookControllerAffinityHidden.d.ts',
|
||||
notebookDeprecated: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookDeprecated.d.ts',
|
||||
notebookExecution: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookExecution.d.ts',
|
||||
notebookKernelSource: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookKernelSource.d.ts',
|
||||
notebookLiveShare: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookLiveShare.d.ts',
|
||||
notebookMessaging: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookMessaging.d.ts',
|
||||
notebookMime: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookMime.d.ts',
|
||||
notebookVariableProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookVariableProvider.d.ts',
|
||||
portsAttributes: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.portsAttributes.d.ts',
|
||||
profileContentHandlers: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.profileContentHandlers.d.ts',
|
||||
quickDiffProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.quickDiffProvider.d.ts',
|
||||
quickPickItemTooltip: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.quickPickItemTooltip.d.ts',
|
||||
quickPickSortByLabel: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.quickPickSortByLabel.d.ts',
|
||||
resolvers: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.resolvers.d.ts',
|
||||
scmActionButton: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmActionButton.d.ts',
|
||||
scmHistoryProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmHistoryProvider.d.ts',
|
||||
scmMultiDiffEditor: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmMultiDiffEditor.d.ts',
|
||||
scmSelectedProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmSelectedProvider.d.ts',
|
||||
scmTextDocument: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmTextDocument.d.ts',
|
||||
scmValidation: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmValidation.d.ts',
|
||||
shareProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.shareProvider.d.ts',
|
||||
showLocal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.showLocal.d.ts',
|
||||
speech: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.speech.d.ts',
|
||||
tabInputMultiDiff: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.tabInputMultiDiff.d.ts',
|
||||
tabInputTextMerge: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.tabInputTextMerge.d.ts',
|
||||
taskPresentationGroup: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.taskPresentationGroup.d.ts',
|
||||
telemetry: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.telemetry.d.ts',
|
||||
terminalDataWriteEvent: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.terminalDataWriteEvent.d.ts',
|
||||
terminalDimensions: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.terminalDimensions.d.ts',
|
||||
terminalExecuteCommandEvent: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.terminalExecuteCommandEvent.d.ts',
|
||||
terminalQuickFixProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.terminalQuickFixProvider.d.ts',
|
||||
terminalSelection: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.terminalSelection.d.ts',
|
||||
terminalShellIntegration: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.terminalShellIntegration.d.ts',
|
||||
testObserver: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.testObserver.d.ts',
|
||||
textSearchProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.textSearchProvider.d.ts',
|
||||
timeline: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.timeline.d.ts',
|
||||
tokenInformation: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.tokenInformation.d.ts',
|
||||
treeViewActiveItem: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.treeViewActiveItem.d.ts',
|
||||
treeViewMarkdownMessage: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.treeViewMarkdownMessage.d.ts',
|
||||
treeViewReveal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.treeViewReveal.d.ts',
|
||||
tunnelFactory: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.tunnelFactory.d.ts',
|
||||
tunnels: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.tunnels.d.ts',
|
||||
workspaceTrust: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.workspaceTrust.d.ts'
|
||||
});
|
||||
export type ApiProposalName = keyof typeof allApiProposals;
|
|
@ -5,10 +5,10 @@
|
|||
|
||||
import { isNonEmptyArray } from 'vs/base/common/arrays';
|
||||
import { ExtensionIdentifier, IExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { allApiProposals, ApiProposalName } from 'vs/platform/extensions/common/extensionsApiProposals';
|
||||
import { ILogService } from 'vs/platform/log/common/log';
|
||||
import { IProductService } from 'vs/platform/product/common/productService';
|
||||
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';
|
||||
import { ApiProposalName, allApiProposals } from 'vs/workbench/services/extensions/common/extensionsApiProposals';
|
||||
|
||||
export class ExtensionsProposedApi {
|
||||
|
||||
|
@ -54,12 +54,9 @@ export class ExtensionsProposedApi {
|
|||
}
|
||||
}
|
||||
|
||||
private doUpdateEnabledApiProposals(_extension: IExtensionDescription): void {
|
||||
private doUpdateEnabledApiProposals(extension: IExtensionDescription): void {
|
||||
|
||||
// this is a trick to make the extension description writeable...
|
||||
type Writeable<T> = { -readonly [P in keyof T]: Writeable<T[P]> };
|
||||
const extension = <Writeable<IExtensionDescription>>_extension;
|
||||
const key = ExtensionIdentifier.toKey(_extension.identifier);
|
||||
const key = ExtensionIdentifier.toKey(extension.identifier);
|
||||
|
||||
// warn about invalid proposal and remove them from the list
|
||||
if (isNonEmptyArray(extension.enabledApiProposals)) {
|
||||
|
|
|
@ -13,10 +13,10 @@ import { Registry } from 'vs/platform/registry/common/platform';
|
|||
import { IMessage } from 'vs/workbench/services/extensions/common/extensions';
|
||||
import { IExtensionDescription, EXTENSION_CATEGORIES, ExtensionIdentifierSet } from 'vs/platform/extensions/common/extensions';
|
||||
import { ExtensionKind } from 'vs/platform/environment/common/environment';
|
||||
import { allApiProposals } from 'vs/workbench/services/extensions/common/extensionsApiProposals';
|
||||
import { productSchemaId } from 'vs/platform/product/common/productService';
|
||||
import { ImplicitActivationEvents, IActivationEventsGenerator } from 'vs/platform/extensionManagement/common/implicitActivationEvents';
|
||||
import { IDisposable } from 'vs/base/common/lifecycle';
|
||||
import { allApiProposals } from 'vs/platform/extensions/common/extensionsApiProposals';
|
||||
|
||||
const schemaRegistry = Registry.as<IJSONContributionRegistry>(Extensions.JSONContribution);
|
||||
|
||||
|
@ -242,8 +242,8 @@ export const schema: IJSONSchema = {
|
|||
uniqueItems: true,
|
||||
items: {
|
||||
type: 'string',
|
||||
enum: Object.keys(allApiProposals),
|
||||
markdownEnumDescriptions: Object.values(allApiProposals)
|
||||
enum: Object.keys(allApiProposals).map(proposalName => allApiProposals[proposalName].version ? `${proposalName}@${allApiProposals[proposalName].version}` : proposalName),
|
||||
markdownEnumDescriptions: Object.values(allApiProposals).map(value => value.proposal)
|
||||
}
|
||||
},
|
||||
api: {
|
||||
|
@ -652,7 +652,7 @@ schemaRegistry.registerSchema(productSchemaId, {
|
|||
items: {
|
||||
type: 'string',
|
||||
enum: Object.keys(allApiProposals),
|
||||
markdownEnumDescriptions: Object.values(allApiProposals)
|
||||
markdownEnumDescriptions: Object.values(allApiProposals).map(value => value.proposal)
|
||||
}
|
||||
}]
|
||||
}
|
||||
|
|
|
@ -3,10 +3,11 @@
|
|||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { ExtensionIdentifierMap, IExtensionDescription, IRelaxedExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { ExtensionIdentifierMap, IExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { localize } from 'vs/nls';
|
||||
import { ILogService } from 'vs/platform/log/common/log';
|
||||
import * as semver from 'vs/base/common/semver/semver';
|
||||
import { Mutable } from 'vs/base/common/types';
|
||||
|
||||
// TODO: @sandy081 merge this with deduping in extensionsScannerService.ts
|
||||
export function dedupExtensions(system: IExtensionDescription[], user: IExtensionDescription[], workspace: IExtensionDescription[], development: IExtensionDescription[], logService: ILogService): IExtensionDescription[] {
|
||||
|
@ -27,7 +28,7 @@ export function dedupExtensions(system: IExtensionDescription[], user: IExtensio
|
|||
return;
|
||||
}
|
||||
// Overwriting a builtin extension inherits the `isBuiltin` property and it doesn't show a warning
|
||||
(<IRelaxedExtensionDescription>userExtension).isBuiltin = true;
|
||||
(<Mutable<IExtensionDescription>>userExtension).isBuiltin = true;
|
||||
} else {
|
||||
logService.warn(localize('overwritingExtension', "Overwriting extension {0} with {1}.", extension.extensionLocation.fsPath, userExtension.extensionLocation.fsPath));
|
||||
}
|
||||
|
@ -50,7 +51,7 @@ export function dedupExtensions(system: IExtensionDescription[], user: IExtensio
|
|||
if (extension) {
|
||||
if (extension.isBuiltin) {
|
||||
// Overwriting a builtin extension inherits the `isBuiltin` property
|
||||
(<IRelaxedExtensionDescription>developedExtension).isBuiltin = true;
|
||||
(<Mutable<IExtensionDescription>>developedExtension).isBuiltin = true;
|
||||
}
|
||||
}
|
||||
result.set(developedExtension.identifier, developedExtension);
|
||||
|
|
|
@ -12,7 +12,7 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur
|
|||
import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService';
|
||||
import { TestDialogService } from 'vs/platform/dialogs/test/common/testDialogService';
|
||||
import { ExtensionKind, IEnvironmentService } from 'vs/platform/environment/common/environment';
|
||||
import { ExtensionIdentifier, IExtension, IRelaxedExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { ExtensionIdentifier, IExtension, IExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { IFileService } from 'vs/platform/files/common/files';
|
||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { TestInstantiationService, createServices } from 'vs/platform/instantiation/test/common/instantiationServiceMock';
|
||||
|
@ -209,7 +209,7 @@ suite('ExtensionService', () => {
|
|||
protected _resolveExtensions(): Promise<ResolvedExtensions> {
|
||||
throw new Error('Method not implemented.');
|
||||
}
|
||||
protected _scanSingleExtension(extension: IExtension): Promise<Readonly<IRelaxedExtensionDescription> | null> {
|
||||
protected _scanSingleExtension(extension: IExtension): Promise<IExtensionDescription | null> {
|
||||
throw new Error('Method not implemented.');
|
||||
}
|
||||
protected _onExtensionHostExit(code: number): void {
|
||||
|
|
|
@ -44,7 +44,8 @@ suite('ExtensionDescriptionRegistry', () => {
|
|||
activationEvents,
|
||||
main: 'index.js',
|
||||
targetPlatform: TargetPlatform.UNDEFINED,
|
||||
extensionDependencies: []
|
||||
extensionDependencies: [],
|
||||
enabledApiProposals: undefined,
|
||||
};
|
||||
}
|
||||
});
|
||||
|
|
|
@ -7,7 +7,7 @@ import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteA
|
|||
import { IRemoteExtensionsScannerService, RemoteExtensionsScannerChannelName } from 'vs/platform/remote/common/remoteExtensionsScanner';
|
||||
import * as platform from 'vs/base/common/platform';
|
||||
import { IChannel } from 'vs/base/parts/ipc/common/ipc';
|
||||
import { IExtensionDescription, IRelaxedExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { IExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
import { IUserDataProfileService } from 'vs/workbench/services/userDataProfile/common/userDataProfile';
|
||||
import { IRemoteUserDataProfilesService } from 'vs/workbench/services/userDataProfile/common/remoteUserDataProfiles';
|
||||
|
@ -16,6 +16,7 @@ import { ILogService } from 'vs/platform/log/common/log';
|
|||
import { InstantiationType, registerSingleton } from 'vs/platform/instantiation/common/extensions';
|
||||
import { IActiveLanguagePackService } from 'vs/workbench/services/localization/common/locale';
|
||||
import { IWorkbenchExtensionManagementService } from 'vs/workbench/services/extensionManagement/common/extensionManagement';
|
||||
import { Mutable } from 'vs/base/common/types';
|
||||
|
||||
class RemoteExtensionsScannerService implements IRemoteExtensionsScannerService {
|
||||
|
||||
|
@ -44,7 +45,7 @@ class RemoteExtensionsScannerService implements IRemoteExtensionsScannerService
|
|||
return await this.withChannel(
|
||||
async (channel) => {
|
||||
const profileLocation = this.userDataProfileService.currentProfile.isDefault ? undefined : (await this.remoteUserDataProfilesService.getRemoteProfile(this.userDataProfileService.currentProfile)).extensionsResource;
|
||||
const scannedExtensions = await channel.call<IRelaxedExtensionDescription[]>('scanExtensions', [
|
||||
const scannedExtensions = await channel.call<Mutable<IExtensionDescription>[]>('scanExtensions', [
|
||||
platform.language,
|
||||
profileLocation,
|
||||
this.extensionManagementService.getInstalledWorkspaceExtensionLocations(),
|
||||
|
|
|
@ -14,7 +14,7 @@ This is the place for the stable API and for API proposals.
|
|||
## Add a new proposal
|
||||
|
||||
1. create a _new_ file in this directory, its name must follow this pattern `vscode.proposed.[a-zA-Z]+.d.ts`
|
||||
1. creating the proposal-file will automatically update `src/vs/workbench/services/extensions/common/extensionsApiProposals.ts` (make sure to run `yarn watch`)
|
||||
1. creating the proposal-file will automatically update `src/vs/platform/extensions/common/extensionsApiProposals.ts` (make sure to run `yarn watch`)
|
||||
1. declare and implement your proposal
|
||||
1. make sure to use the `checkProposedApiEnabled` and/or `isProposedApiEnabled`-utils to enforce the API being proposed. Make sure to invoke them with your proposal's name which got generated into `extensionsApiProposals.ts`
|
||||
1. Most likely will need to add your proposed api to vscode-api-tests as well
|
||||
|
|
Loading…
Reference in a new issue