Fix stringify error from resource deployment extension (#14059)

* Fix stringify error from resource deployment extension

* add comment
This commit is contained in:
Charles Gagnon
2021-01-26 12:00:05 -08:00
committed by GitHub
parent 1a84db089a
commit d828a1f042
2 changed files with 25 additions and 1 deletions

View File

@@ -17,6 +17,7 @@ import { IPlatformService } from './platformService';
import { IToolsService } from './toolsService';
import * as loc from './../localizedConstants';
import { ResourceTypeWizard } from '../ui/resourceTypeWizard';
import { deepClone } from '../common/utils';
const localize = nls.loadMessageBundle();
@@ -40,7 +41,11 @@ export class ResourceTypeService implements IResourceTypeService {
vscode.extensions.all.forEach((extension) => {
const extensionResourceTypes = extension.packageJSON.contributes && extension.packageJSON.contributes.resourceDeploymentTypes as ResourceType[];
if (extensionResourceTypes) {
extensionResourceTypes.forEach((resourceType: ResourceType) => {
extensionResourceTypes.forEach((extensionResourceType: ResourceType) => {
// Clone the object - we modify it by adding complex types and so if we modify the original contribution then
// we can break VS Code functionality since it will sometimes pass this object over the RPC layer which requires
// stringifying it - which can break with some of the complex types we add.
const resourceType = deepClone(extensionResourceType);
this.updatePathProperties(resourceType, extension.extensionPath);
resourceType.getProvider = (selectedOptions) => { return this.getProvider(resourceType, selectedOptions); };
resourceType.getOkButtonText = (selectedOptions) => { return this.getOkButtonText(resourceType, selectedOptions); };