diff --git a/build/gulpfile.extensions.js b/build/gulpfile.extensions.js index c204e84fd8cfec..90225367973687 100644 --- a/build/gulpfile.extensions.js +++ b/build/gulpfile.extensions.js @@ -166,7 +166,7 @@ const cleanExtensionsBuildTask = task.define('clean-extensions-build', util.rimr const compileExtensionsBuildTask = task.define('compile-extensions-build', task.series( cleanExtensionsBuildTask, task.define('bundle-extensions-build', () => ext.packageLocalExtensionsStream(false).pipe(gulp.dest('.build'))), - task.define('bundle-marketplace-extensions-build', () => ext.packageMarketplaceExtensionsStream(false).pipe(gulp.dest('.build'))), + // task.define('bundle-marketplace-extensions-build', () => ext.packageMarketplaceExtensionsStream(false).pipe(gulp.dest('.build'))), )); gulp.task(compileExtensionsBuildTask); diff --git a/build/lib/extensions.ts b/build/lib/extensions.ts index dac71c814798ec..222c732db9c942 100644 --- a/build/lib/extensions.ts +++ b/build/lib/extensions.ts @@ -234,8 +234,8 @@ const excludedExtensions = [ 'vscode-custom-editor-tests', ]; -const marketplaceWebExtensions = [ - 'ms-vscode.references-view' +const marketplaceWebExtensions: string[] = [ + // 'ms-vscode.references-view' ]; interface IBuiltInExtension { diff --git a/product.json b/product.json index 207bcf8f512ea3..71eceec96f2cbe 100644 --- a/product.json +++ b/product.json @@ -59,21 +59,6 @@ "publisherDisplayName": "Microsoft" } }, - { - "name": "ms-vscode.references-view", - "version": "0.0.74", - "repo": "https://github.com/microsoft/vscode-reference-view", - "metadata": { - "id": "dc489f46-520d-4556-ae85-1f9eab3c412d", - "publisherId": { - "publisherId": "5f5636e7-69ed-4afe-b5d6-8d231fb3d3ee", - "publisherName": "ms-vscode", - "displayName": "Microsoft", - "flags": "verified" - }, - "publisherDisplayName": "Microsoft" - } - }, { "name": "ms-vscode.js-debug-companion", "version": "1.0.8", diff --git a/scripts/main.js b/scripts/main.js index deb0ca89c1f7eb..59cece50b65651 100644 --- a/scripts/main.js +++ b/scripts/main.js @@ -15,7 +15,10 @@ var __copyProps = (to, from, except, desc) => { } return to; }; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod)); +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); // node_modules/chrome-remote-interface/lib/defaults.js var require_defaults = __commonJS({ @@ -37,7 +40,6 @@ var require_external_request = __commonJS({ if (!options.useHostName) { try { const { address } = await util.promisify(dns.lookup)(options.host); - options = Object.assign({}, options); options.host = address; } catch (err) { callback(err); @@ -25134,15 +25136,15 @@ var require_devtools = __commonJS({ var https = require("https"); var defaults = require_defaults(); var externalRequest = require_external_request(); - function devToolsInterface(options, callback) { - options.host = options.host || defaults.HOST; - options.port = options.port || defaults.PORT; - options.secure = !!options.secure; - options.useHostName = !!options.useHostName; - options.alterPath = options.alterPath || ((path) => path); - const newOptions = { ...options }; - newOptions.path = options.alterPath(options.path); - externalRequest(options.secure ? https : http, newOptions, callback); + function devToolsInterface(path, options, callback) { + const transport = options.secure ? https : http; + const requestOptions = { + host: options.host || defaults.HOST, + port: options.port || defaults.PORT, + useHostName: options.useHostName, + path: options.alterPath ? options.alterPath(path) : path + }; + externalRequest(transport, requestOptions, callback); } function promisesWrapper(func) { return (options, callback) => { @@ -25173,8 +25175,7 @@ var require_devtools = __commonJS({ callback(null, localDescriptor); return; } - options.path = "/json/protocol"; - devToolsInterface(options, (err, descriptor) => { + devToolsInterface("/json/protocol", options, (err, descriptor) => { if (err) { callback(err); } else { @@ -25183,8 +25184,7 @@ var require_devtools = __commonJS({ }); } function List(options, callback) { - options.path = "/json/list"; - devToolsInterface(options, (err, tabs) => { + devToolsInterface("/json/list", options, (err, tabs) => { if (err) { callback(err); } else { @@ -25193,11 +25193,11 @@ var require_devtools = __commonJS({ }); } function New(options, callback) { - options.path = "/json/new"; + let path = "/json/new"; if (Object.prototype.hasOwnProperty.call(options, "url")) { - options.path += `?${options.url}`; + path += `?${options.url}`; } - devToolsInterface(options, (err, tab) => { + devToolsInterface(path, options, (err, tab) => { if (err) { callback(err); } else { @@ -25206,8 +25206,7 @@ var require_devtools = __commonJS({ }); } function Activate(options, callback) { - options.path = "/json/activate/" + options.id; - devToolsInterface(options, (err) => { + devToolsInterface("/json/activate/" + options.id, options, (err) => { if (err) { callback(err); } else { @@ -25216,8 +25215,7 @@ var require_devtools = __commonJS({ }); } function Close(options, callback) { - options.path = "/json/close/" + options.id; - devToolsInterface(options, (err) => { + devToolsInterface("/json/close/" + options.id, options, (err) => { if (err) { callback(err); } else { @@ -25226,8 +25224,7 @@ var require_devtools = __commonJS({ }); } function Version(options, callback) { - options.path = "/json/version"; - devToolsInterface(options, (err, versionInfo) => { + devToolsInterface("/json/version", options, (err, versionInfo) => { if (err) { callback(err); } else { @@ -25444,7 +25441,11 @@ var require_permessage_deflate = __commonJS({ this._deflate.close(); this._deflate = null; if (callback) { - callback(new Error("The deflate stream was closed while data was being processed")); + callback( + new Error( + "The deflate stream was closed while data was being processed" + ) + ); } } } @@ -25485,7 +25486,9 @@ var require_permessage_deflate = __commonJS({ params.client_max_window_bits = this._options.clientMaxWindowBits; } } else if (this._options.clientMaxWindowBits === false || typeof this._options.clientMaxWindowBits === "number" && params.client_max_window_bits > this._options.clientMaxWindowBits) { - throw new Error('Unexpected or invalid parameter "client_max_window_bits"'); + throw new Error( + 'Unexpected or invalid parameter "client_max_window_bits"' + ); } return params; } @@ -25501,21 +25504,29 @@ var require_permessage_deflate = __commonJS({ if (value !== true) { const num = +value; if (!Number.isInteger(num) || num < 8 || num > 15) { - throw new TypeError(`Invalid value for parameter "${key}": ${value}`); + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); } value = num; } else if (!this._isServer) { - throw new TypeError(`Invalid value for parameter "${key}": ${value}`); + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); } } else if (key === "server_max_window_bits") { const num = +value; if (!Number.isInteger(num) || num < 8 || num > 15) { - throw new TypeError(`Invalid value for parameter "${key}": ${value}`); + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); } value = num; } else if (key === "client_no_context_takeover" || key === "server_no_context_takeover") { if (value !== true) { - throw new TypeError(`Invalid value for parameter "${key}": ${value}`); + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); } } else { throw new Error(`Unknown parameter "${key}"`); @@ -25568,7 +25579,10 @@ var require_permessage_deflate = __commonJS({ callback(err); return; } - const data2 = bufferUtil.concat(this._inflate[kBuffers], this._inflate[kTotalLength]); + const data2 = bufferUtil.concat( + this._inflate[kBuffers], + this._inflate[kTotalLength] + ); if (this._inflate._readableState.endEmitted) { this._inflate.close(); this._inflate = null; @@ -25602,7 +25616,10 @@ var require_permessage_deflate = __commonJS({ if (!this._deflate) { return; } - let data2 = bufferUtil.concat(this._deflate[kBuffers], this._deflate[kTotalLength]); + let data2 = bufferUtil.concat( + this._deflate[kBuffers], + this._deflate[kTotalLength] + ); if (fin) data2 = data2.slice(0, data2.length - 4); this._deflate[kCallback] = null; @@ -25802,12 +25819,24 @@ var require_receiver = __commonJS({ const buf = this.consume(2); if ((buf[0] & 48) !== 0) { this._loop = false; - return error(RangeError, "RSV2 and RSV3 must be clear", true, 1002, "WS_ERR_UNEXPECTED_RSV_2_3"); + return error( + RangeError, + "RSV2 and RSV3 must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_RSV_2_3" + ); } const compressed = (buf[0] & 64) === 64; if (compressed && !this._extensions[PerMessageDeflate.extensionName]) { this._loop = false; - return error(RangeError, "RSV1 must be clear", true, 1002, "WS_ERR_UNEXPECTED_RSV_1"); + return error( + RangeError, + "RSV1 must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_RSV_1" + ); } this._fin = (buf[0] & 128) === 128; this._opcode = buf[0] & 15; @@ -25815,35 +25844,77 @@ var require_receiver = __commonJS({ if (this._opcode === 0) { if (compressed) { this._loop = false; - return error(RangeError, "RSV1 must be clear", true, 1002, "WS_ERR_UNEXPECTED_RSV_1"); + return error( + RangeError, + "RSV1 must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_RSV_1" + ); } if (!this._fragmented) { this._loop = false; - return error(RangeError, "invalid opcode 0", true, 1002, "WS_ERR_INVALID_OPCODE"); + return error( + RangeError, + "invalid opcode 0", + true, + 1002, + "WS_ERR_INVALID_OPCODE" + ); } this._opcode = this._fragmented; } else if (this._opcode === 1 || this._opcode === 2) { if (this._fragmented) { this._loop = false; - return error(RangeError, `invalid opcode ${this._opcode}`, true, 1002, "WS_ERR_INVALID_OPCODE"); + return error( + RangeError, + `invalid opcode ${this._opcode}`, + true, + 1002, + "WS_ERR_INVALID_OPCODE" + ); } this._compressed = compressed; } else if (this._opcode > 7 && this._opcode < 11) { if (!this._fin) { this._loop = false; - return error(RangeError, "FIN must be set", true, 1002, "WS_ERR_EXPECTED_FIN"); + return error( + RangeError, + "FIN must be set", + true, + 1002, + "WS_ERR_EXPECTED_FIN" + ); } if (compressed) { this._loop = false; - return error(RangeError, "RSV1 must be clear", true, 1002, "WS_ERR_UNEXPECTED_RSV_1"); + return error( + RangeError, + "RSV1 must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_RSV_1" + ); } if (this._payloadLength > 125) { this._loop = false; - return error(RangeError, `invalid payload length ${this._payloadLength}`, true, 1002, "WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH"); + return error( + RangeError, + `invalid payload length ${this._payloadLength}`, + true, + 1002, + "WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH" + ); } } else { this._loop = false; - return error(RangeError, `invalid opcode ${this._opcode}`, true, 1002, "WS_ERR_INVALID_OPCODE"); + return error( + RangeError, + `invalid opcode ${this._opcode}`, + true, + 1002, + "WS_ERR_INVALID_OPCODE" + ); } if (!this._fin && !this._fragmented) this._fragmented = this._opcode; @@ -25851,11 +25922,23 @@ var require_receiver = __commonJS({ if (this._isServer) { if (!this._masked) { this._loop = false; - return error(RangeError, "MASK must be set", true, 1002, "WS_ERR_EXPECTED_MASK"); + return error( + RangeError, + "MASK must be set", + true, + 1002, + "WS_ERR_EXPECTED_MASK" + ); } } else if (this._masked) { this._loop = false; - return error(RangeError, "MASK must be clear", true, 1002, "WS_ERR_UNEXPECTED_MASK"); + return error( + RangeError, + "MASK must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_MASK" + ); } if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16; @@ -25881,7 +25964,13 @@ var require_receiver = __commonJS({ const num = buf.readUInt32BE(0); if (num > Math.pow(2, 53 - 32) - 1) { this._loop = false; - return error(RangeError, "Unsupported WebSocket frame: payload length > 2^53 - 1", false, 1009, "WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH"); + return error( + RangeError, + "Unsupported WebSocket frame: payload length > 2^53 - 1", + false, + 1009, + "WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH" + ); } this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4); return this.haveLength(); @@ -25891,7 +25980,13 @@ var require_receiver = __commonJS({ this._totalPayloadLength += this._payloadLength; if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) { this._loop = false; - return error(RangeError, "Max payload size exceeded", false, 1009, "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"); + return error( + RangeError, + "Max payload size exceeded", + false, + 1009, + "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH" + ); } } if (this._masked) @@ -25939,7 +26034,15 @@ var require_receiver = __commonJS({ if (buf.length) { this._messageLength += buf.length; if (this._messageLength > this._maxPayload && this._maxPayload > 0) { - return cb(error(RangeError, "Max payload size exceeded", false, 1009, "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH")); + return cb( + error( + RangeError, + "Max payload size exceeded", + false, + 1009, + "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH" + ) + ); } this._fragments.push(buf); } @@ -25971,7 +26074,13 @@ var require_receiver = __commonJS({ const buf = concat(fragments, messageLength); if (!isValidUTF8(buf)) { this._loop = false; - return error(Error, "invalid UTF-8 sequence", true, 1007, "WS_ERR_INVALID_UTF8"); + return error( + Error, + "invalid UTF-8 sequence", + true, + 1007, + "WS_ERR_INVALID_UTF8" + ); } this.emit("message", buf.toString()); } @@ -25985,15 +26094,33 @@ var require_receiver = __commonJS({ this.emit("conclude", 1005, ""); this.end(); } else if (data.length === 1) { - return error(RangeError, "invalid payload length 1", true, 1002, "WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH"); + return error( + RangeError, + "invalid payload length 1", + true, + 1002, + "WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH" + ); } else { const code = data.readUInt16BE(0); if (!isValidStatusCode(code)) { - return error(RangeError, `invalid status code ${code}`, true, 1002, "WS_ERR_INVALID_CLOSE_CODE"); + return error( + RangeError, + `invalid status code ${code}`, + true, + 1002, + "WS_ERR_INVALID_CLOSE_CODE" + ); } const buf = data.slice(2); if (!isValidUTF8(buf)) { - return error(Error, "invalid UTF-8 sequence", true, 1007, "WS_ERR_INVALID_UTF8"); + return error( + Error, + "invalid UTF-8 sequence", + true, + 1007, + "WS_ERR_INVALID_UTF8" + ); } this.emit("conclude", code, buf.toString()); this.end(); @@ -26008,7 +26135,9 @@ var require_receiver = __commonJS({ }; module2.exports = Receiver; function error(ErrorCtor, message, prefix, statusCode, errorCode) { - const err = new ErrorCtor(prefix ? `Invalid WebSocket frame: ${message}` : message); + const err = new ErrorCtor( + prefix ? `Invalid WebSocket frame: ${message}` : message + ); Error.captureStackTrace(err, error); err.code = errorCode; err[kStatusCode] = statusCode; @@ -26101,13 +26230,16 @@ var require_sender = __commonJS({ } } doClose(data, mask2, cb) { - this.sendFrame(Sender.frame(data, { - fin: true, - rsv1: false, - opcode: 8, - mask: mask2, - readOnly: false - }), cb); + this.sendFrame( + Sender.frame(data, { + fin: true, + rsv1: false, + opcode: 8, + mask: mask2, + readOnly: false + }), + cb + ); } ping(data, mask2, cb) { const buf = toBuffer(data); @@ -26121,13 +26253,16 @@ var require_sender = __commonJS({ } } doPing(data, mask2, readOnly, cb) { - this.sendFrame(Sender.frame(data, { - fin: true, - rsv1: false, - opcode: 9, - mask: mask2, - readOnly - }), cb); + this.sendFrame( + Sender.frame(data, { + fin: true, + rsv1: false, + opcode: 9, + mask: mask2, + readOnly + }), + cb + ); } pong(data, mask2, cb) { const buf = toBuffer(data); @@ -26141,13 +26276,16 @@ var require_sender = __commonJS({ } } doPong(data, mask2, readOnly, cb) { - this.sendFrame(Sender.frame(data, { - fin: true, - rsv1: false, - opcode: 10, - mask: mask2, - readOnly - }), cb); + this.sendFrame( + Sender.frame(data, { + fin: true, + rsv1: false, + opcode: 10, + mask: mask2, + readOnly + }), + cb + ); } send(data, options, cb) { const buf = toBuffer(data); @@ -26180,13 +26318,16 @@ var require_sender = __commonJS({ this.dispatch(buf, this._compress, opts, cb); } } else { - this.sendFrame(Sender.frame(buf, { - fin: options.fin, - rsv1: false, - opcode, - mask: options.mask, - readOnly: toBuffer.readOnly - }), cb); + this.sendFrame( + Sender.frame(buf, { + fin: options.fin, + rsv1: false, + opcode, + mask: options.mask, + readOnly: toBuffer.readOnly + }), + cb + ); } } dispatch(data, compress, options, cb) { @@ -26199,7 +26340,9 @@ var require_sender = __commonJS({ this._deflating = true; perMessageDeflate.compress(data, options.fin, (_, buf) => { if (this._socket.destroyed) { - const err = new Error("The socket was closed while data was being compressed"); + const err = new Error( + "The socket was closed while data was being compressed" + ); if (typeof cb === "function") cb(err); for (let i = 0; i < this._queue.length; i++) { @@ -26609,12 +26752,14 @@ var require_extension = __commonJS({ if (!Array.isArray(configurations)) configurations = [configurations]; return configurations.map((params) => { - return [extension].concat(Object.keys(params).map((k) => { - let values = params[k]; - if (!Array.isArray(values)) - values = [values]; - return values.map((v) => v === true ? k : `${k}=${v}`).join("; "); - })).join("; "); + return [extension].concat( + Object.keys(params).map((k) => { + let values = params[k]; + if (!Array.isArray(values)) + values = [values]; + return values.map((v) => v === true ? k : `${k}=${v}`).join("; "); + }) + ).join("; "); }).join(", "); }).join(", "); } @@ -26729,7 +26874,12 @@ var require_websocket = __commonJS({ return this._url; } setSocket(socket, head, maxPayload) { - const receiver = new Receiver(this.binaryType, this._extensions, this._isServer, maxPayload); + const receiver = new Receiver( + this.binaryType, + this._extensions, + this._isServer, + maxPayload + ); this._sender = new Sender(socket, this._extensions); this._receiver = receiver; this._socket = socket; @@ -26787,7 +26937,10 @@ var require_websocket = __commonJS({ this._socket.end(); } }); - this._closeTimer = setTimeout(this._socket.destroy.bind(this._socket), closeTimeout); + this._closeTimer = setTimeout( + this._socket.destroy.bind(this._socket), + closeTimeout + ); } ping(data, mask, cb) { if (this.readyState === WebSocket.CONNECTING) { @@ -26955,7 +27108,9 @@ var require_websocket = __commonJS({ port: void 0 }; if (!protocolVersions.includes(opts.protocolVersion)) { - throw new RangeError(`Unsupported protocol version: ${opts.protocolVersion} (supported versions: ${protocolVersions.join(", ")})`); + throw new RangeError( + `Unsupported protocol version: ${opts.protocolVersion} (supported versions: ${protocolVersions.join(", ")})` + ); } let parsedUrl; if (address instanceof URL) { @@ -26994,7 +27149,11 @@ var require_websocket = __commonJS({ opts.path = parsedUrl.pathname + parsedUrl.search; opts.timeout = opts.handshakeTimeout; if (opts.perMessageDeflate) { - perMessageDeflate = new PerMessageDeflate(opts.perMessageDeflate !== true ? opts.perMessageDeflate : {}, false, opts.maxPayload); + perMessageDeflate = new PerMessageDeflate( + opts.perMessageDeflate !== true ? opts.perMessageDeflate : {}, + false, + opts.maxPayload + ); opts.headers["Sec-WebSocket-Extensions"] = format({ [PerMessageDeflate.extensionName]: perMessageDeflate.offer() }); @@ -27019,7 +27178,9 @@ var require_websocket = __commonJS({ } if (opts.followRedirects) { if (websocket._redirects === 0) { - websocket._originalHost = parsedUrl.host; + websocket._originalUnixSocket = isUnixSocket; + websocket._originalSecure = isSecure; + websocket._originalHostOrSocketPath = isUnixSocket ? opts.socketPath : parsedUrl.host; const headers = options && options.headers; options = { ...options, headers: {} }; if (headers) { @@ -27027,11 +27188,15 @@ var require_websocket = __commonJS({ options.headers[key2.toLowerCase()] = value; } } - } else if (parsedUrl.host !== websocket._originalHost) { - delete opts.headers.authorization; - delete opts.headers.cookie; - delete opts.headers.host; - opts.auth = void 0; + } else { + const isSameHost = isUnixSocket ? websocket._originalUnixSocket ? opts.socketPath === websocket._originalHostOrSocketPath : false : websocket._originalUnixSocket ? false : parsedUrl.host === websocket._originalHostOrSocketPath; + if (!isSameHost || websocket._originalSecure && !isSecure) { + delete opts.headers.authorization; + delete opts.headers.cookie; + if (!isSameHost) + delete opts.headers.host; + opts.auth = void 0; + } } if (opts.auth && !options.headers.authorization) { options.headers.authorization = "Basic " + Buffer.from(opts.auth).toString("base64"); @@ -27067,7 +27232,11 @@ var require_websocket = __commonJS({ } initAsClient(websocket, addr, protocols, options); } else if (!websocket.emit("unexpected-response", req, res)) { - abortHandshake(websocket, req, `Unexpected server response: ${res.statusCode}`); + abortHandshake( + websocket, + req, + `Unexpected server response: ${res.statusCode}` + ); } }); req.on("upgrade", (res, socket, head) => { @@ -27075,6 +27244,10 @@ var require_websocket = __commonJS({ if (websocket.readyState !== WebSocket.CONNECTING) return; req = websocket._req = null; + if (res.headers.upgrade.toLowerCase() !== "websocket") { + abortHandshake(websocket, socket, "Invalid Upgrade header"); + return; + } const digest = createHash("sha1").update(key + GUID).digest("base64"); if (res.headers["sec-websocket-accept"] !== digest) { abortHandshake(websocket, socket, "Invalid Sec-WebSocket-Accept header"); @@ -27173,7 +27346,9 @@ var require_websocket = __commonJS({ websocket._bufferedAmount += length; } if (cb) { - const err = new Error(`WebSocket is not open: readyState ${websocket.readyState} (${readyStates[websocket.readyState]})`); + const err = new Error( + `WebSocket is not open: readyState ${websocket.readyState} (${readyStates[websocket.readyState]})` + ); cb(err); } } @@ -27422,7 +27597,9 @@ var require_websocket_server = __commonJS({ ...options }; if (options.port == null && !options.server && !options.noServer || options.port != null && (options.server || options.noServer) || options.server && options.noServer) { - throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified'); + throw new TypeError( + 'One and only one of the "port", "server", or "noServer" options must be specified' + ); } if (options.port != null) { this._server = http.createServer((req, res) => { @@ -27433,7 +27610,12 @@ var require_websocket_server = __commonJS({ }); res.end(body); }); - this._server.listen(options.port, options.host, options.backlog, callback); + this._server.listen( + options.port, + options.host, + options.backlog, + callback + ); } else if (options.server) { this._server = options.server; } @@ -27505,7 +27687,11 @@ var require_websocket_server = __commonJS({ return abortHandshake(socket, 400); } if (this.options.perMessageDeflate) { - const perMessageDeflate = new PerMessageDeflate(this.options.perMessageDeflate, true, this.options.maxPayload); + const perMessageDeflate = new PerMessageDeflate( + this.options.perMessageDeflate, + true, + this.options.maxPayload + ); try { const offers = parse(req.headers["sec-websocket-extensions"]); if (offers[PerMessageDeflate.extensionName]) { @@ -27540,7 +27726,9 @@ var require_websocket_server = __commonJS({ if (!socket.readable || !socket.writable) return socket.destroy(); if (socket[kWebSocket]) { - throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration"); + throw new Error( + "server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration" + ); } if (this._state > RUNNING) return abortHandshake(socket, 503); @@ -27610,8 +27798,10 @@ var require_websocket_server = __commonJS({ "Content-Length": Buffer.byteLength(message), ...headers }; - socket.write(`HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\r -` + Object.keys(headers).map((h) => `${h}: ${headers[h]}`).join("\r\n") + "\r\n\r\n" + message); + socket.write( + `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\r +` + Object.keys(headers).map((h) => `${h}: ${headers[h]}`).join("\r\n") + "\r\n\r\n" + message + ); } socket.removeListener("error", socketOnError); socket.destroy(); @@ -27793,7 +27983,9 @@ var require_chrome = __commonJS({ this._enqueueCommand(method, params, sessionId, (error, response) => { if (error) { const request = { method, params, sessionId }; - reject(error instanceof Error ? error : new ProtocolError(request, response)); + reject( + error instanceof Error ? error : new ProtocolError(request, response) + ); } else { fulfill(response); } @@ -28027,14 +28219,18 @@ var require_ms = __commonJS({ } else if (type === "number" && isNaN(val) === false) { return options.long ? fmtLong(val) : fmtShort(val); } - throw new Error("val is not a non-empty string or a valid number. val=" + JSON.stringify(val)); + throw new Error( + "val is not a non-empty string or a valid number. val=" + JSON.stringify(val) + ); }; function parse(str) { str = String(str); if (str.length > 100) { return; } - var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str); + var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec( + str + ); if (!match) { return; } @@ -28442,7 +28638,8 @@ var require_marky_cjs = __commonJS({ "node_modules/marky/lib/marky.cjs.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); - var nowForNode; + var perf = typeof performance !== "undefined" && performance; + var nowPolyfillForNode; { hrtime = process.hrtime; getNanoSeconds = function() { @@ -28450,14 +28647,16 @@ var require_marky_cjs = __commonJS({ return hr[0] * 1e9 + hr[1]; }; loadTime = getNanoSeconds(); - nowForNode = function() { + nowPolyfillForNode = function() { return (getNanoSeconds() - loadTime) / 1e6; }; } var hrtime; var getNanoSeconds; var loadTime; - var now = nowForNode; + var now = perf && perf.now ? function() { + return perf.now(); + } : nowPolyfillForNode; function throwIfEmpty(name) { if (!name) { throw new Error("name must be non-empty"); @@ -28481,7 +28680,29 @@ var require_marky_cjs = __commonJS({ exports.stop = void 0; exports.getEntries = void 0; exports.clear = void 0; - { + if (perf && perf.mark && perf.measure && perf.getEntriesByName && perf.getEntriesByType && perf.clearMarks && perf.clearMeasures && perf.clearResourceTimings) { + exports.mark = function(name) { + throwIfEmpty(name); + perf.mark("start " + name); + }; + exports.stop = function(name) { + throwIfEmpty(name); + perf.mark("end " + name); + var measure = perf.measure(name, "start " + name, "end " + name); + if (measure) { + return measure; + } + var entries2 = perf.getEntriesByName(name); + return entries2[entries2.length - 1]; + }; + exports.getEntries = function() { + return perf.getEntriesByType("measure"); + }; + exports.clear = function() { + perf.clearMarks(); + perf.clearMeasures(); + }; + } else { marks = {}; entries = []; exports.mark = function(name) { @@ -28749,7 +28970,7 @@ var require_utils = __commonJS({ "node_modules/chrome-launcher/dist/utils.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); - exports.getLocalAppDataPath = exports.toWinDirFormat = exports.makeTmpDir = exports.getPlatform = exports.ChromeNotInstalledError = exports.UnsupportedPlatformError = exports.InvalidUserDataDirectoryError = exports.ChromePathNotSetError = exports.LauncherError = exports.delay = exports.defaults = void 0; + exports.getWSLLocalAppDataPath = exports.toWSLPath = exports.toWin32Path = exports.makeTmpDir = exports.getPlatform = exports.ChromeNotInstalledError = exports.UnsupportedPlatformError = exports.InvalidUserDataDirectoryError = exports.ChromePathNotSetError = exports.LauncherError = exports.delay = exports.defaults = void 0; var path_1 = require("path"); var child_process_1 = require("child_process"); var fs_1 = require("fs"); @@ -28814,7 +29035,7 @@ var require_utils = __commonJS({ case "linux": return makeUnixTmpDir(); case "wsl": - process.env.TEMP = getLocalAppDataPath(`${process.env.PATH}`); + process.env.TEMP = getWSLLocalAppDataPath(`${process.env.PATH}`); case "win32": return makeWin32TmpDir(); default: @@ -28830,13 +29051,36 @@ var require_utils = __commonJS({ const driveLetter = results[1]; return dir.replace(`/mnt/${driveLetter}/`, `${driveLetter.toUpperCase()}:\\`).replace(/\//g, "\\"); } - exports.toWinDirFormat = toWinDirFormat; + function toWin32Path(dir = "") { + if (/[a-z]:\\/iu.test(dir)) { + return dir; + } + try { + return child_process_1.execFileSync("wslpath", ["-w", dir]).toString().trim(); + } catch { + return toWinDirFormat(dir); + } + } + exports.toWin32Path = toWin32Path; + function toWSLPath(dir, fallback) { + try { + return child_process_1.execFileSync("wslpath", ["-u", dir]).toString().trim(); + } catch { + return fallback; + } + } + exports.toWSLPath = toWSLPath; function getLocalAppDataPath(path) { const userRegExp = /\/mnt\/([a-z])\/Users\/([^\/:]+)\/AppData\//; const results = userRegExp.exec(path) || []; return `/mnt/${results[1]}/Users/${results[2]}/AppData/Local`; } - exports.getLocalAppDataPath = getLocalAppDataPath; + function getWSLLocalAppDataPath(path) { + const userRegExp = /\/([a-z])\/Users\/([^\/:]+)\/AppData\//; + const results = userRegExp.exec(path) || []; + return toWSLPath(`${results[1]}:\\Users\\${results[2]}\\AppData\\Local`, getLocalAppDataPath(path)); + } + exports.getWSLLocalAppDataPath = getWSLLocalAppDataPath; function makeUnixTmpDir() { return child_process_1.execSync("mktemp -d -t lighthouse.XXXXXXX").toString().trim(); } @@ -28970,9 +29214,9 @@ var require_chrome_finder = __commonJS({ } exports.linux = linux; function wsl() { - process.env.LOCALAPPDATA = utils_1.getLocalAppDataPath(`${process.env.PATH}`); - process.env.PROGRAMFILES = "/mnt/c/Program Files"; - process.env["PROGRAMFILES(X86)"] = "/mnt/c/Program Files (x86)"; + process.env.LOCALAPPDATA = utils_1.getWSLLocalAppDataPath(`${process.env.PATH}`); + process.env.PROGRAMFILES = utils_1.toWSLPath("C:/Program Files", "/mnt/c/Program Files"); + process.env["PROGRAMFILES(X86)"] = utils_1.toWSLPath("C:/Program Files (x86)", "/mnt/c/Program Files (x86)"); return win32(); } exports.wsl = wsl; @@ -29102,24 +29346,22 @@ var require_chrome_launcher = __commonJS({ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getChromePath = exports.killAll = exports.launch = exports.Launcher = void 0; - var childProcess = require("child_process"); var fs = require("fs"); var net = require("net"); var chromeFinder = require_chrome_finder(); var random_port_1 = require_random_port(); var flags_1 = require_flags(); var utils_1 = require_utils(); + var child_process_1 = require("child_process"); var log = require_lighthouse_logger(); - var spawn = childProcess.spawn; - var execSync = childProcess.execSync; var isWsl = utils_1.getPlatform() === "wsl"; var isWindows = utils_1.getPlatform() === "win32"; var _SIGINT = "SIGINT"; var _SIGINT_EXIT_CODE = 130; var _SUPPORTED_PLATFORMS = /* @__PURE__ */ new Set(["darwin", "linux", "win32", "wsl"]); var instances = /* @__PURE__ */ new Set(); - var sigintListener = async () => { - await killAll(); + var sigintListener = () => { + killAll(); process.exit(_SIGINT_EXIT_CODE); }; async function launch2(opts = {}) { @@ -29137,7 +29379,7 @@ var require_chrome_launcher = __commonJS({ } return instance.kill(); }; - return { pid: instance.pid, port: instance.port, kill, process: instance.chrome }; + return { pid: instance.pid, port: instance.port, kill, process: instance.chromeProcess }; } exports.launch = launch2; function getChromePath() { @@ -29148,11 +29390,11 @@ var require_chrome_launcher = __commonJS({ return installation; } exports.getChromePath = getChromePath; - async function killAll() { + function killAll() { let errors = []; for (const instance of instances) { try { - await instance.kill(); + instance.kill(); instances.delete(instance); } catch (err) { errors.push(err); @@ -29166,7 +29408,7 @@ var require_chrome_launcher = __commonJS({ this.opts = opts; this.tmpDirandPidFileReady = false; this.fs = moduleOverrides.fs || fs; - this.spawn = moduleOverrides.spawn || spawn; + this.spawn = moduleOverrides.spawn || child_process_1.spawn; log.setLevel(utils_1.defaults(this.opts.logLevel, "silent")); this.startingUrl = utils_1.defaults(this.opts.startingUrl, "about:blank"); this.chromeFlags = utils_1.defaults(this.opts.chromeFlags, []); @@ -29196,8 +29438,10 @@ var require_chrome_launcher = __commonJS({ flags.push("--disable-setuid-sandbox"); } if (!this.useDefaultProfile) { - flags.push(`--user-data-dir=${isWsl ? utils_1.toWinDirFormat(this.userDataDir) : this.userDataDir}`); + flags.push(`--user-data-dir=${isWsl ? utils_1.toWin32Path(this.userDataDir) : this.userDataDir}`); } + if (process.env.HEADLESS) + flags.push("--headless"); flags.push(...this.chromeFlags); flags.push(this.startingUrl); return flags; @@ -29270,22 +29514,25 @@ var require_chrome_launcher = __commonJS({ } async spawnProcess(execPath) { const spawnPromise = (async () => { - if (this.chrome) { - log.log("ChromeLauncher", `Chrome already running with pid ${this.chrome.pid}.`); - return this.chrome.pid; + if (this.chromeProcess) { + log.log("ChromeLauncher", `Chrome already running with pid ${this.chromeProcess.pid}.`); + return this.chromeProcess.pid; } if (this.requestedPort === 0) { this.port = await random_port_1.getRandomPort(); } log.verbose("ChromeLauncher", `Launching with command: "${execPath}" ${this.flags.join(" ")}`); - const chrome2 = this.spawn(execPath, this.flags, { detached: true, stdio: ["ignore", this.outFile, this.errFile], env: this.envVars }); - this.chrome = chrome2; - if (chrome2.pid) { - this.fs.writeFileSync(this.pidFile, chrome2.pid.toString()); + this.chromeProcess = this.spawn(execPath, this.flags, { + detached: process.platform !== "win32", + stdio: ["ignore", this.outFile, this.errFile], + env: this.envVars + }); + if (this.chromeProcess.pid) { + this.fs.writeFileSync(this.pidFile, this.chromeProcess.pid.toString()); } - log.verbose("ChromeLauncher", `Chrome running with pid ${chrome2.pid} on port ${this.port}.`); - return chrome2.pid; + log.verbose("ChromeLauncher", `Chrome running with pid ${this.chromeProcess.pid} on port ${this.port}.`); + return this.chromeProcess.pid; })(); const pid = await spawnPromise; await this.waitUntilReady(); @@ -29342,47 +29589,45 @@ var require_chrome_launcher = __commonJS({ }); } kill() { - return new Promise((resolve, reject) => { - if (this.chrome) { - this.chrome.on("close", () => { - delete this.chrome; - this.destroyTmp().then(resolve); - }); - log.log("ChromeLauncher", `Killing Chrome instance ${this.chrome.pid}`); - try { - if (isWindows) { - execSync(`taskkill /pid ${this.chrome.pid} /T /F`, { stdio: "pipe" }); - } else { - if (this.chrome.pid) { - process.kill(-this.chrome.pid); - } - } - } catch (err) { - const message = `Chrome could not be killed ${err.message}`; - log.warn("ChromeLauncher", message); - reject(new Error(message)); - } + if (!this.chromeProcess) { + return; + } + this.chromeProcess.on("close", () => { + delete this.chromeProcess; + this.destroyTmp(); + }); + log.log("ChromeLauncher", `Killing Chrome instance ${this.chromeProcess.pid}`); + try { + if (isWindows) { + const taskkillProc = child_process_1.spawnSync(`taskkill /pid ${this.chromeProcess.pid} /T /F`, { shell: true, encoding: "utf-8" }); + const { stderr: stderr2 } = taskkillProc; + if (stderr2) + log.error("ChromeLauncher", `taskkill stderr`, stderr2); } else { - resolve(); + if (this.chromeProcess.pid) { + process.kill(-this.chromeProcess.pid, "SIGKILL"); + } } - }); + } catch (err) { + const message = `Chrome could not be killed ${err.message}`; + log.warn("ChromeLauncher", message); + } + this.destroyTmp(); } destroyTmp() { - return new Promise((resolve) => { - if (this.userDataDir === void 0 || this.opts.userDataDir !== void 0) { - return resolve(); - } - if (this.outFile) { - this.fs.closeSync(this.outFile); - delete this.outFile; - } - if (this.errFile) { - this.fs.closeSync(this.errFile); - delete this.errFile; - } - const rm = this.fs.rm || this.fs.rmdir; - rm(this.userDataDir, { recursive: true }, () => resolve()); - }); + if (this.userDataDir === void 0 || this.opts.userDataDir !== void 0) { + return; + } + if (this.outFile) { + this.fs.closeSync(this.outFile); + delete this.outFile; + } + if (this.errFile) { + this.fs.closeSync(this.errFile); + delete this.errFile; + } + const rmSync = this.fs.rmSync || this.fs.rmdirSync; + rmSync(this.userDataDir, { recursive: true, force: true, maxRetries: 10 }); } }; exports.Launcher = Launcher; @@ -29547,12 +29792,14 @@ ${msg}`); if (!htmls[0].start) { throw new Error("first record is not start"); } - htmls[0].events.push({ - idx: i, - name: events[i], - target: target_selectors[i], - targetExists: true - }); + htmls[0].events.push( + { + idx: i, + name: events[i], + target: target_selectors[i], + targetExists: true + } + ); } else { htmls[htmls.length - 1].events.push({ idx: i, diff --git a/src/vs/editor/contrib/interactLive/InteractLiveController.ts b/src/vs/editor/contrib/interactLive/InteractLiveController.ts index 408d572b640afa..287b0a19c0559b 100644 --- a/src/vs/editor/contrib/interactLive/InteractLiveController.ts +++ b/src/vs/editor/contrib/interactLive/InteractLiveController.ts @@ -1,3 +1,4 @@ +/* eslint-disable code-import-patterns */ import { IKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { IMouseWheelEvent } from 'vs/base/browser/mouseEvent'; import { KeyCode } from 'vs/base/common/keyCodes'; @@ -278,9 +279,9 @@ export class InteractLiveController implements IInteractLiveController { private async promptViewSrc(): Promise { const confirmation: IConfirmation = { - message: "You haven't selected an HTML file to examine in the View Box.", - detail: "Press \"Choose File\" to select one, \"Cancel\" to abort.", - primaryButton: "&&Choose File", + message: 'You haven\'t selected an HTML file to examine in the View Box.', + detail: 'Press \"Choose File\" to select one, \"Cancel\" to abort.', + primaryButton: '&&Choose File', type: 'question' }; diff --git a/src/vs/editor/contrib/interactLive/interactLive.css b/src/vs/editor/contrib/interactLive/interactLive.css index f7fb737f7fdc53..b8b6b23a5a1b62 100644 --- a/src/vs/editor/contrib/interactLive/interactLive.css +++ b/src/vs/editor/contrib/interactLive/interactLive.css @@ -25,7 +25,7 @@ } .error-msg { - overflow: scroll; + overflow: auto; text-align: initial; padding: 10px; } @@ -45,7 +45,7 @@ top: 0; position: absolute; padding: 0; - overflow: scroll; + overflow: auto; } .status-msg::-webkit-scrollbar { background-color: transparent; diff --git a/src/vs/platform/issue/electron-main/issueMainService.ts b/src/vs/platform/issue/electron-main/issueMainService.ts index da98e2f94f60f9..dfabb2bdcd39e1 100644 --- a/src/vs/platform/issue/electron-main/issueMainService.ts +++ b/src/vs/platform/issue/electron-main/issueMainService.ts @@ -203,6 +203,7 @@ export class IssueMainService implements ICommonIssueService { title: localize('issueReporter', "Issue Reporter"), backgroundColor: data.styles.backgroundColor || DEFAULT_BACKGROUND_COLOR, webPreferences: { + webSecurity: false, preload: FileAccess.asFileUri('vs/base/parts/sandbox/electron-browser/preload.js', require).fsPath, enableWebSQL: false, enableRemoteModule: false, @@ -259,6 +260,7 @@ export class IssueMainService implements ICommonIssueService { backgroundColor: data.styles.backgroundColor, title: localize('processExplorer', "Process Explorer"), webPreferences: { + webSecurity: false, preload: FileAccess.asFileUri('vs/base/parts/sandbox/electron-browser/preload.js', require).fsPath, enableWebSQL: false, enableRemoteModule: false, diff --git a/test/unit/electron/index.js b/test/unit/electron/index.js index 9aeaaccc844c8a..ee94c34c995fb5 100644 --- a/test/unit/electron/index.js +++ b/test/unit/electron/index.js @@ -117,6 +117,7 @@ app.on('ready', () => { width: 800, show: false, webPreferences: { + webSecurity: false, preload: path.join(__dirname, '..', '..', '..', 'src', 'vs', 'base', 'parts', 'sandbox', 'electron-browser', 'preload.js'), // ensure similar environment as VSCode as tests may depend on this nodeIntegration: true, enableWebSQL: false, diff --git a/yarn.lock b/yarn.lock index 0554e7ef606dfd..55017c4753c01c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5164,9 +5164,6 @@ html-escaper@^2.0.0: resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.0.tgz#71e87f931de3fe09e56661ab9a29aadec707b491" integrity sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig== -"html-insider@file:../html-insider/build": - version "0.0.0" - "htmlparser2@>= 3.7.3 < 4.0.0", htmlparser2@^3.9.1: version "3.9.2" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338"