mirror of
https://github.com/microsoft/vscode.git
synced 2026-05-08 09:08:48 +01:00
fixes #58589
This commit is contained in:
@@ -2,11 +2,31 @@
|
|||||||
{
|
{
|
||||||
"name": "ms-vscode.node-debug",
|
"name": "ms-vscode.node-debug",
|
||||||
"version": "1.28.2",
|
"version": "1.28.2",
|
||||||
"repo": "https://github.com/Microsoft/vscode-node-debug"
|
"repo": "https://github.com/Microsoft/vscode-node-debug",
|
||||||
|
"metadata": {
|
||||||
|
"id": "b6ded8fb-a0a0-4c1c-acbd-ab2a3bc995a6",
|
||||||
|
"publisherId": {
|
||||||
|
"publisherId": "5f5636e7-69ed-4afe-b5d6-8d231fb3d3ee",
|
||||||
|
"publisherName": "ms-vscode",
|
||||||
|
"displayName": "Microsoft",
|
||||||
|
"flags": "verified"
|
||||||
|
},
|
||||||
|
"publisherDisplayName": "Microsoft"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "ms-vscode.node-debug2",
|
"name": "ms-vscode.node-debug2",
|
||||||
"version": "1.28.2",
|
"version": "1.28.2",
|
||||||
"repo": "https://github.com/Microsoft/vscode-node-debug2"
|
"repo": "https://github.com/Microsoft/vscode-node-debug2",
|
||||||
|
"metadata": {
|
||||||
|
"id": "36d19e17-7569-4841-a001-947eb18602b2",
|
||||||
|
"publisherId": {
|
||||||
|
"publisherId": "5f5636e7-69ed-4afe-b5d6-8d231fb3d3ee",
|
||||||
|
"publisherName": "ms-vscode",
|
||||||
|
"displayName": "Microsoft",
|
||||||
|
"flags": "verified"
|
||||||
|
},
|
||||||
|
"publisherDisplayName": "Microsoft"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -49,7 +49,7 @@ function syncMarketplaceExtension(extension) {
|
|||||||
|
|
||||||
rimraf.sync(getExtensionPath(extension));
|
rimraf.sync(getExtensionPath(extension));
|
||||||
|
|
||||||
return ext.fromMarketplace(extension.name, extension.version)
|
return ext.fromMarketplace(extension.name, extension.version, extension.metadata)
|
||||||
.pipe(rename(p => p.dirname = `${extension.name}/${p.dirname}`))
|
.pipe(rename(p => p.dirname = `${extension.name}/${p.dirname}`))
|
||||||
.pipe(vfs.dest('.build/builtInExtensions'))
|
.pipe(vfs.dest('.build/builtInExtensions'))
|
||||||
.on('end', () => util.log(util.colors.blue('[marketplace]'), extension.name, util.colors.green('✔︎')));
|
.on('end', () => util.log(util.colors.blue('[marketplace]'), extension.name, util.colors.green('✔︎')));
|
||||||
|
|||||||
+5
-52
@@ -24,7 +24,6 @@ var File = require("vinyl");
|
|||||||
var vsce = require("vsce");
|
var vsce = require("vsce");
|
||||||
var stats_1 = require("./stats");
|
var stats_1 = require("./stats");
|
||||||
var util2 = require("./util");
|
var util2 = require("./util");
|
||||||
var assign = require("object-assign");
|
|
||||||
var remote = require("gulp-remote-src");
|
var remote = require("gulp-remote-src");
|
||||||
var flatmap = require('gulp-flatmap');
|
var flatmap = require('gulp-flatmap');
|
||||||
var vzip = require('gulp-vinyl-zip');
|
var vzip = require('gulp-vinyl-zip');
|
||||||
@@ -163,57 +162,12 @@ var baseHeaders = {
|
|||||||
'User-Agent': 'VSCode Build',
|
'User-Agent': 'VSCode Build',
|
||||||
'X-Market-User-Id': '291C1CD0-051A-4123-9B4B-30D60EF52EE2',
|
'X-Market-User-Id': '291C1CD0-051A-4123-9B4B-30D60EF52EE2',
|
||||||
};
|
};
|
||||||
function fromMarketplace(extensionName, version) {
|
function fromMarketplace(extensionName, version, metadata) {
|
||||||
var filterType = 7;
|
var _a = extensionName.split('.'), publisher = _a[0], name = _a[1];
|
||||||
var value = extensionName;
|
var url = "https://marketplace.visualstudio.com/_apis/public/gallery/publishers/" + publisher + "/vsextensions/" + name + "/" + version + "/vspackage";
|
||||||
var criterium = { filterType: filterType, value: value };
|
|
||||||
var criteria = [criterium];
|
|
||||||
var pageNumber = 1;
|
|
||||||
var pageSize = 1;
|
|
||||||
var sortBy = 0;
|
|
||||||
var sortOrder = 0;
|
|
||||||
var flags = 0x1 | 0x2 | 0x80;
|
|
||||||
var assetTypes = ['Microsoft.VisualStudio.Services.VSIXPackage'];
|
|
||||||
var filters = [{ criteria: criteria, pageNumber: pageNumber, pageSize: pageSize, sortBy: sortBy, sortOrder: sortOrder }];
|
|
||||||
var body = JSON.stringify({ filters: filters, assetTypes: assetTypes, flags: flags });
|
|
||||||
var headers = assign({}, baseHeaders, {
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
'Accept': 'application/json;api-version=3.0-preview.1',
|
|
||||||
'Content-Length': body.length
|
|
||||||
});
|
|
||||||
var options = {
|
|
||||||
base: 'https://marketplace.visualstudio.com/_apis/public/gallery',
|
|
||||||
requestOptions: {
|
|
||||||
method: 'POST',
|
|
||||||
gzip: true,
|
|
||||||
headers: headers,
|
|
||||||
body: body
|
|
||||||
}
|
|
||||||
};
|
|
||||||
return remote('/extensionquery', options)
|
|
||||||
.pipe(flatmap(function (stream, f) {
|
|
||||||
var rawResult = f.contents.toString('utf8');
|
|
||||||
var result = JSON.parse(rawResult);
|
|
||||||
var extension = result.results[0].extensions[0];
|
|
||||||
if (!extension) {
|
|
||||||
return error("No such extension: " + extension);
|
|
||||||
}
|
|
||||||
var metadata = {
|
|
||||||
id: extension.extensionId,
|
|
||||||
publisherId: extension.publisher,
|
|
||||||
publisherDisplayName: extension.publisher.displayName
|
|
||||||
};
|
|
||||||
var extensionVersion = extension.versions.filter(function (v) { return v.version === version; })[0];
|
|
||||||
if (!extensionVersion) {
|
|
||||||
return error("No such extension version: " + extensionName + " @ " + version);
|
|
||||||
}
|
|
||||||
var asset = extensionVersion.files.filter(function (f) { return f.assetType === 'Microsoft.VisualStudio.Services.VSIXPackage'; })[0];
|
|
||||||
if (!asset) {
|
|
||||||
return error("No VSIX found for extension version: " + extensionName + " @ " + version);
|
|
||||||
}
|
|
||||||
util.log('Downloading extension:', util.colors.yellow(extensionName + "@" + version), '...');
|
util.log('Downloading extension:', util.colors.yellow(extensionName + "@" + version), '...');
|
||||||
var options = {
|
var options = {
|
||||||
base: asset.source,
|
base: url,
|
||||||
requestOptions: {
|
requestOptions: {
|
||||||
gzip: true,
|
gzip: true,
|
||||||
headers: baseHeaders
|
headers: baseHeaders
|
||||||
@@ -231,7 +185,6 @@ function fromMarketplace(extensionName, version) {
|
|||||||
.pipe(json({ __metadata: metadata }))
|
.pipe(json({ __metadata: metadata }))
|
||||||
.pipe(packageJsonFilter.restore);
|
.pipe(packageJsonFilter.restore);
|
||||||
}));
|
}));
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
exports.fromMarketplace = fromMarketplace;
|
exports.fromMarketplace = fromMarketplace;
|
||||||
var excludedExtensions = [
|
var excludedExtensions = [
|
||||||
@@ -272,7 +225,7 @@ function packageExtensionsStream(opts) {
|
|||||||
return opts.desiredExtensions ? opts.desiredExtensions.indexOf(name) >= 0 : true;
|
return opts.desiredExtensions ? opts.desiredExtensions.indexOf(name) >= 0 : true;
|
||||||
})
|
})
|
||||||
.map(function (extension) {
|
.map(function (extension) {
|
||||||
return fromMarketplace(extension.name, extension.version)
|
return fromMarketplace(extension.name, extension.version, extension.metadata)
|
||||||
.pipe(rename(function (p) { return p.dirname = "extensions/" + extension.name + "/" + p.dirname; }));
|
.pipe(rename(function (p) { return p.dirname = "extensions/" + extension.name + "/" + p.dirname; }));
|
||||||
}));
|
}));
|
||||||
return es.merge(localExtensions, localExtensionDependencies, marketplaceExtensions)
|
return es.merge(localExtensions, localExtensionDependencies, marketplaceExtensions)
|
||||||
|
|||||||
+13
-58
@@ -13,7 +13,6 @@ import * as File from 'vinyl';
|
|||||||
import * as vsce from 'vsce';
|
import * as vsce from 'vsce';
|
||||||
import { createStatsStream } from './stats';
|
import { createStatsStream } from './stats';
|
||||||
import * as util2 from './util';
|
import * as util2 from './util';
|
||||||
import assign = require('object-assign');
|
|
||||||
import remote = require('gulp-remote-src');
|
import remote = require('gulp-remote-src');
|
||||||
const flatmap = require('gulp-flatmap');
|
const flatmap = require('gulp-flatmap');
|
||||||
const vzip = require('gulp-vinyl-zip');
|
const vzip = require('gulp-vinyl-zip');
|
||||||
@@ -188,64 +187,14 @@ const baseHeaders = {
|
|||||||
'X-Market-User-Id': '291C1CD0-051A-4123-9B4B-30D60EF52EE2',
|
'X-Market-User-Id': '291C1CD0-051A-4123-9B4B-30D60EF52EE2',
|
||||||
};
|
};
|
||||||
|
|
||||||
export function fromMarketplace(extensionName: string, version: string): Stream {
|
export function fromMarketplace(extensionName: string, version: string, metadata: any): Stream {
|
||||||
const filterType = 7;
|
const [publisher, name] = extensionName.split('.');
|
||||||
const value = extensionName;
|
const url = `https://marketplace.visualstudio.com/_apis/public/gallery/publishers/${publisher}/vsextensions/${name}/${version}/vspackage`;
|
||||||
const criterium = { filterType, value };
|
|
||||||
const criteria = [criterium];
|
|
||||||
const pageNumber = 1;
|
|
||||||
const pageSize = 1;
|
|
||||||
const sortBy = 0;
|
|
||||||
const sortOrder = 0;
|
|
||||||
const flags = 0x1 | 0x2 | 0x80;
|
|
||||||
const assetTypes = ['Microsoft.VisualStudio.Services.VSIXPackage'];
|
|
||||||
const filters = [{ criteria, pageNumber, pageSize, sortBy, sortOrder }];
|
|
||||||
const body = JSON.stringify({ filters, assetTypes, flags });
|
|
||||||
const headers: any = assign({}, baseHeaders, {
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
'Accept': 'application/json;api-version=3.0-preview.1',
|
|
||||||
'Content-Length': body.length
|
|
||||||
});
|
|
||||||
|
|
||||||
const options = {
|
|
||||||
base: 'https://marketplace.visualstudio.com/_apis/public/gallery',
|
|
||||||
requestOptions: {
|
|
||||||
method: 'POST',
|
|
||||||
gzip: true,
|
|
||||||
headers,
|
|
||||||
body
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
return remote('/extensionquery', options)
|
|
||||||
.pipe(flatmap((_, f) => {
|
|
||||||
const rawResult = f.contents.toString('utf8');
|
|
||||||
const result = JSON.parse(rawResult);
|
|
||||||
const extension = result.results[0].extensions[0];
|
|
||||||
if (!extension) {
|
|
||||||
return error(`No such extension: ${extension}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
const metadata = {
|
|
||||||
id: extension.extensionId,
|
|
||||||
publisherId: extension.publisher,
|
|
||||||
publisherDisplayName: extension.publisher.displayName
|
|
||||||
};
|
|
||||||
|
|
||||||
const extensionVersion = extension.versions.filter(v => v.version === version)[0];
|
|
||||||
if (!extensionVersion) {
|
|
||||||
return error(`No such extension version: ${extensionName} @ ${version}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
const asset = extensionVersion.files.filter(f => f.assetType === 'Microsoft.VisualStudio.Services.VSIXPackage')[0];
|
|
||||||
if (!asset) {
|
|
||||||
return error(`No VSIX found for extension version: ${extensionName} @ ${version}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
util.log('Downloading extension:', util.colors.yellow(`${extensionName}@${version}`), '...');
|
util.log('Downloading extension:', util.colors.yellow(`${extensionName}@${version}`), '...');
|
||||||
|
|
||||||
const options = {
|
const options = {
|
||||||
base: asset.source,
|
base: url,
|
||||||
requestOptions: {
|
requestOptions: {
|
||||||
gzip: true,
|
gzip: true,
|
||||||
headers: baseHeaders
|
headers: baseHeaders
|
||||||
@@ -265,7 +214,6 @@ export function fromMarketplace(extensionName: string, version: string): Stream
|
|||||||
.pipe(json({ __metadata: metadata }))
|
.pipe(json({ __metadata: metadata }))
|
||||||
.pipe(packageJsonFilter.restore);
|
.pipe(packageJsonFilter.restore);
|
||||||
}));
|
}));
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
interface IPackageExtensionsOptions {
|
interface IPackageExtensionsOptions {
|
||||||
@@ -283,7 +231,14 @@ const excludedExtensions = [
|
|||||||
'ms-vscode.node-debug2',
|
'ms-vscode.node-debug2',
|
||||||
];
|
];
|
||||||
|
|
||||||
const builtInExtensions: { name: string, version: string, repo: string; }[] = require('../builtInExtensions.json');
|
interface IBuiltInExtension {
|
||||||
|
name: string;
|
||||||
|
version: string;
|
||||||
|
repo: string;
|
||||||
|
metadata: any;
|
||||||
|
}
|
||||||
|
|
||||||
|
const builtInExtensions: IBuiltInExtension[] = require('../builtInExtensions.json');
|
||||||
|
|
||||||
export function packageExtensionsStream(opts?: IPackageExtensionsOptions): NodeJS.ReadWriteStream {
|
export function packageExtensionsStream(opts?: IPackageExtensionsOptions): NodeJS.ReadWriteStream {
|
||||||
opts = opts || {};
|
opts = opts || {};
|
||||||
@@ -309,7 +264,7 @@ export function packageExtensionsStream(opts?: IPackageExtensionsOptions): NodeJ
|
|||||||
...builtInExtensions
|
...builtInExtensions
|
||||||
.filter(({ name }) => opts.desiredExtensions ? opts.desiredExtensions.indexOf(name) >= 0 : true)
|
.filter(({ name }) => opts.desiredExtensions ? opts.desiredExtensions.indexOf(name) >= 0 : true)
|
||||||
.map(extension => {
|
.map(extension => {
|
||||||
return fromMarketplace(extension.name, extension.version)
|
return fromMarketplace(extension.name, extension.version, extension.metadata)
|
||||||
.pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
|
.pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user