1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-24 15:19:26 -05:00

fix(ext/node): use primordials in ext/node/polyfills/https.ts (#26323)

Towards https://github.com/denoland/deno/issues/24236
This commit is contained in:
jiang1997 2024-10-21 15:50:53 +08:00 committed by GitHub
parent 473e3069de
commit afb33b3c25
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,9 +1,6 @@
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
// Copyright Joyent and Node contributors. All rights reserved. MIT license. // Copyright Joyent and Node contributors. All rights reserved. MIT license.
// TODO(petamoriken): enable prefer-primordials for node polyfills
// deno-lint-ignore-file prefer-primordials
import { notImplemented } from "ext:deno_node/_utils.ts"; import { notImplemented } from "ext:deno_node/_utils.ts";
import { urlToHttpOptions } from "ext:deno_node/internal/url.ts"; import { urlToHttpOptions } from "ext:deno_node/internal/url.ts";
import { import {
@ -17,6 +14,14 @@ import { type ServerHandler, ServerImpl as HttpServer } from "node:http";
import { validateObject } from "ext:deno_node/internal/validators.mjs"; import { validateObject } from "ext:deno_node/internal/validators.mjs";
import { kEmptyObject } from "ext:deno_node/internal/util.mjs"; import { kEmptyObject } from "ext:deno_node/internal/util.mjs";
import { Buffer } from "node:buffer"; import { Buffer } from "node:buffer";
import { primordials } from "ext:core/mod.js";
const {
ArrayPrototypeShift,
ArrayPrototypeUnshift,
ArrayIsArray,
ObjectPrototypeIsPrototypeOf,
ObjectAssign,
} = primordials;
export class Server extends HttpServer { export class Server extends HttpServer {
constructor(opts, requestListener?: ServerHandler) { constructor(opts, requestListener?: ServerHandler) {
@ -29,11 +34,11 @@ export class Server extends HttpServer {
validateObject(opts, "options"); validateObject(opts, "options");
} }
if (opts.cert && Array.isArray(opts.cert)) { if (opts.cert && ArrayIsArray(opts.cert)) {
notImplemented("https.Server.opts.cert array type"); notImplemented("https.Server.opts.cert array type");
} }
if (opts.key && Array.isArray(opts.key)) { if (opts.key && ArrayIsArray(opts.key)) {
notImplemented("https.Server.opts.key array type"); notImplemented("https.Server.opts.key array type");
} }
@ -42,10 +47,12 @@ export class Server extends HttpServer {
_additionalServeOptions() { _additionalServeOptions() {
return { return {
cert: this._opts.cert instanceof Buffer cert: ObjectPrototypeIsPrototypeOf(Buffer, this._opts.cert)
// deno-lint-ignore prefer-primordials
? this._opts.cert.toString() ? this._opts.cert.toString()
: this._opts.cert, : this._opts.cert,
key: this._opts.key instanceof Buffer key: ObjectPrototypeIsPrototypeOf(Buffer, this._opts.key)
// deno-lint-ignore prefer-primordials
? this._opts.key.toString() ? this._opts.key.toString()
: this._opts.key, : this._opts.key,
}; };
@ -159,18 +166,18 @@ export function request(...args: any[]) {
let options = {}; let options = {};
if (typeof args[0] === "string") { if (typeof args[0] === "string") {
const urlStr = args.shift(); const urlStr = ArrayPrototypeShift(args);
options = urlToHttpOptions(new URL(urlStr)); options = urlToHttpOptions(new URL(urlStr));
} else if (args[0] instanceof URL) { } else if (ObjectPrototypeIsPrototypeOf(URL, args[0])) {
options = urlToHttpOptions(args.shift()); options = urlToHttpOptions(ArrayPrototypeShift(args));
} }
if (args[0] && typeof args[0] !== "function") { if (args[0] && typeof args[0] !== "function") {
Object.assign(options, args.shift()); ObjectAssign(options, ArrayPrototypeShift(args));
} }
options._defaultAgent = globalAgent; options._defaultAgent = globalAgent;
args.unshift(options); ArrayPrototypeUnshift(args, options);
return new HttpsClientRequest(args[0], args[1]); return new HttpsClientRequest(args[0], args[1]);
} }