diff --git a/ci/remove-deps-4-old-node.js b/ci/remove-deps-4-old-node.js index e8ff6f617..4cf9deefe 100644 --- a/ci/remove-deps-4-old-node.js +++ b/ci/remove-deps-4-old-node.js @@ -1,5 +1,5 @@ -const fs = require('node:fs'); -const path = require('node:path'); +const fs = require('fs'); +const path = require('path'); const package = require('../package.json'); const UNSUPPORT_DEPS_4_OLD = new Set([ diff --git a/package.json b/package.json index 65b697c2d..73beaad15 100644 --- a/package.json +++ b/package.json @@ -27,27 +27,27 @@ "formidable": "^2.1.2", "methods": "^1.1.2", "mime": "2.6.0", - "qs": "^6.11.2", - "semver": "^7.5.4" + "qs": "^6.11.0", + "semver": "^7.3.8" }, "devDependencies": { - "@babel/cli": "^7.22.10", - "@babel/core": "^7.22.10", - "@babel/plugin-transform-runtime": "^7.22.10", - "@babel/preset-env": "^7.22.10", - "@babel/runtime": "^7.22.10", + "@babel/cli": "^7.20.7", + "@babel/core": "^7.20.12", + "@babel/plugin-transform-runtime": "^7.19.6", + "@babel/preset-env": "^7.20.2", + "@babel/runtime": "^7.20.13", "@commitlint/cli": "17", "@commitlint/config-conventional": "17", - "Base64": "^1.2.0", + "Base64": "^1.1.0", "babelify": "^10.0.0", "basic-auth-connect": "^1.0.0", - "body-parser": "^1.20.2", + "body-parser": "^1.20.1", "browserify": "^17.0.0", "cookie-parser": "^1.4.6", "cross-env": "^7.0.3", - "eslint": "^8.47.0", + "eslint": "^8.32.0", "eslint-config-xo-lass": "2", - "eslint-plugin-compat": "4.1.4", + "eslint-plugin-compat": "4.0.2", "eslint-plugin-node": "^11.1.0", "express": "^4.18.2", "express-session": "^1.17.3", @@ -65,7 +65,7 @@ "should": "^13.2.3", "should-http": "^0.1.1", "tinyify": "3.0.0", - "xo": "^0.56.0", + "xo": "^0.53.1", "zuul": "^3.12.0" }, "engines": { diff --git a/src/client.js b/src/client.js index b632bf626..9260bcbea 100644 --- a/src/client.js +++ b/src/client.js @@ -75,9 +75,7 @@ request.getXHR = () => { * @api private */ -const trim = ''.trim - ? (s) => s.trim() - : (s) => s.replaceAll(/(^\s*|\s*$)/g, ''); +const trim = ''.trim ? (s) => s.trim() : (s) => s.replace(/(^\s*|\s*$)/g, ''); /** * Serialize the given `obj`. @@ -312,7 +310,7 @@ function Response(request_) { this.text = (this.req.method !== 'HEAD' && (this.xhr.responseType === '' || this.xhr.responseType === 'text')) || - this.xhr.responseType === undefined + typeof this.xhr.responseType === 'undefined' ? this.xhr.responseText : null; this.statusText = this.req.xhr.statusText; @@ -425,7 +423,7 @@ function Request(method, url) { if (self.xhr) { // ie9 doesn't have 'response' property error.rawResponse = - self.xhr.responseType === undefined + typeof self.xhr.responseType === 'undefined' ? self.xhr.responseText : self.xhr.response; // issue #876: return the http status code if the response parsing fails @@ -869,7 +867,7 @@ Request.prototype._end = function () { // IE11 xhr.send(undefined) sends 'undefined' string as POST payload (instead of nothing) // We need null here if data is undefined - xhr.send(data === undefined ? null : data); + xhr.send(typeof data === 'undefined' ? null : data); }; request.agent = () => new Agent(); diff --git a/src/node/agent.js b/src/node/agent.js index 67556a507..0761dc689 100644 --- a/src/node/agent.js +++ b/src/node/agent.js @@ -3,7 +3,7 @@ */ // eslint-disable-next-line node/no-deprecated-api -const { parse } = require('node:url'); +const { parse } = require('url'); const { CookieJar } = require('cookiejar'); const { CookieAccessInfo } = require('cookiejar'); const methods = require('methods'); @@ -66,7 +66,7 @@ Agent.prototype = Object.create(AgentBase.prototype); Agent.prototype._saveCookies = function (res) { const cookies = res.headers['set-cookie']; if (cookies) { - const url = parse(res.request?.url || ''); + const url = parse(res.request?.url || '') this.jar.setCookies(cookies, url.hostname, url.pathname); } }; diff --git a/src/node/http2wrapper.js b/src/node/http2wrapper.js index d742390f9..4141692c7 100644 --- a/src/node/http2wrapper.js +++ b/src/node/http2wrapper.js @@ -1,14 +1,14 @@ -const Stream = require('node:stream'); -const net = require('node:net'); -const tls = require('node:tls'); +const Stream = require('stream'); +const net = require('net'); +const tls = require('tls'); // eslint-disable-next-line node/no-deprecated-api -const { parse } = require('node:url'); -const process = require('node:process'); +const { parse } = require('url'); +const process = require('process'); const semverGte = require('semver/functions/gte'); let http2; -if (semverGte(process.version, 'v10.10.0')) http2 = require('node:http2'); +if (semverGte(process.version, 'v10.10.0')) http2 = require('http2'); else throw new Error('superagent: this version of Node.js does not support http2'); @@ -70,20 +70,15 @@ class Request extends Stream { createUnixConnection(authority, options) { switch (this.protocol) { - case 'http:': { + case 'http:': return net.connect(options.socketPath); - } - - case 'https:': { + case 'https:': options.ALPNProtocols = ['h2']; options.servername = this.host; options.allowHalfOpen = true; return tls.connect(options.socketPath, options); - } - - default: { + default: throw new Error('Unsupported protocol', this.protocol); - } } } @@ -134,14 +129,11 @@ class Request extends Stream { let value = headers[key]; key = key.toLowerCase(); switch (key) { - case HTTP2_HEADER_SET_COOKIE: { + case HTTP2_HEADER_SET_COOKIE: value = Array.isArray(value) ? value : [value]; break; - } - - default: { + default: break; - } } http2Headers[key] = value; @@ -157,17 +149,14 @@ class Request extends Stream { let value = headers[key]; key = key.toLowerCase(); switch (key) { - case HTTP2_HEADER_HOST: { + case HTTP2_HEADER_HOST: key = HTTP2_HEADER_AUTHORITY; value = /^http:\/\/|^https:\/\//.test(value) ? parse(value).host : value; break; - } - - default: { + default: break; - } } http2Headers[key] = value; diff --git a/src/node/index.js b/src/node/index.js index 4cc23b379..e6dc73cc9 100644 --- a/src/node/index.js +++ b/src/node/index.js @@ -3,13 +3,13 @@ */ // eslint-disable-next-line node/no-deprecated-api -const { parse, format, resolve } = require('node:url'); -const Stream = require('node:stream'); -const https = require('node:https'); -const http = require('node:http'); -const fs = require('node:fs'); -const zlib = require('node:zlib'); -const util = require('node:util'); +const { parse, format, resolve } = require('url'); +const Stream = require('stream'); +const https = require('https'); +const http = require('http'); +const fs = require('fs'); +const zlib = require('zlib'); +const util = require('util'); const qs = require('qs'); const mime = require('mime'); let methods = require('methods'); @@ -19,6 +19,7 @@ const debug = require('debug')('superagent'); const CookieJar = require('cookiejar'); const semverGte = require('semver/functions/gte'); const safeStringify = require('fast-safe-stringify'); + const utils = require('../utils'); const RequestBase = require('../request-base'); const { unzip } = require('./unzip'); @@ -468,6 +469,7 @@ Request.prototype._pipeContinue = function (stream, options) { res.pipe(stream, options); res.once('end', () => this.emit('end')); } + }); return stream; }; @@ -717,7 +719,7 @@ Request.prototype.request = function () { // See https://github.com/ladjs/superagent/issues/1367 if (queryStringBackticks) { let i = 0; - url.query = url.query.replaceAll('%60', () => queryStringBackticks[i++]); + url.query = url.query.replace(/%60/g, () => queryStringBackticks[i++]); url.search = `?${url.query}`; url.path = url.pathname + url.search; } @@ -729,7 +731,7 @@ Request.prototype.request = function () { // get the socket, path const unixParts = url.path.match(/^([^/]+)(.+)$/); - options.socketPath = unixParts[1].replaceAll('%2F', '/'); + options.socketPath = unixParts[1].replace(/%2F/g, '/'); url.path = unixParts[2]; } diff --git a/src/node/response.js b/src/node/response.js index 5c5fbd447..af1abc0bd 100644 --- a/src/node/response.js +++ b/src/node/response.js @@ -2,8 +2,8 @@ * Module dependencies. */ -const util = require('node:util'); -const Stream = require('node:stream'); +const util = require('util'); +const Stream = require('stream'); const ResponseBase = require('../response-base'); const { mixin } = require('../utils'); @@ -51,11 +51,11 @@ function Response(request) { // https://github.com/nodejs/node/pull/39520#issuecomment-889697136 Object.defineProperty(Response.prototype, 'body', { get() { - return this._body === undefined - ? this.res.body === undefined - ? {} - : this.res.body - : this._body; + return this._body !== undefined + ? this._body + : this.res.body !== undefined + ? this.res.body + : {}; }, set(value) { this._body = value; diff --git a/src/node/unzip.js b/src/node/unzip.js index 232a3eb00..46182f4da 100644 --- a/src/node/unzip.js +++ b/src/node/unzip.js @@ -2,9 +2,9 @@ * Module dependencies. */ -const { StringDecoder } = require('node:string_decoder'); -const Stream = require('node:stream'); -const zlib = require('node:zlib'); +const { StringDecoder } = require('string_decoder'); +const Stream = require('stream'); +const zlib = require('zlib'); /** * Buffers response data events and re-emits when they're unzipped. diff --git a/src/request-base.js b/src/request-base.js index 8bf544900..cd6020bbf 100644 --- a/src/request-base.js +++ b/src/request-base.js @@ -112,24 +112,17 @@ RequestBase.prototype.timeout = function (options) { for (const option in options) { if (hasOwn(options, option)) { switch (option) { - case 'deadline': { + case 'deadline': this._timeout = options.deadline; break; - } - - case 'response': { + case 'response': this._responseTimeout = options.response; break; - } - - case 'upload': { + case 'upload': this._uploadTimeout = options.upload; break; - } - - default: { + default: console.warn('Unknown timeout option', option); - } } } } @@ -520,26 +513,20 @@ RequestBase.prototype.abort = function () { RequestBase.prototype._auth = function (user, pass, options, base64Encoder) { switch (options.type) { - case 'basic': { + case 'basic': this.set('Authorization', `Basic ${base64Encoder(`${user}:${pass}`)}`); break; - } - case 'auto': { + case 'auto': this.username = user; this.password = pass; break; - } - case 'bearer': { - // usage would be .auth(accessToken, { type: 'bearer' }) + case 'bearer': // usage would be .auth(accessToken, { type: 'bearer' }) this.set('Authorization', `Bearer ${user}`); break; - } - - default: { + default: break; - } } return this; @@ -675,12 +662,11 @@ RequestBase.prototype.send = function (data) { // merge if (isObject_ && isObject(this._data)) { for (const key in data) { - if (typeof data[key] === 'bigint') - throw new Error('Cannot serialize BigInt value to json'); + if (typeof data[key] == "bigint") throw new Error("Cannot serialize BigInt value to json"); if (hasOwn(data, key)) this._data[key] = data[key]; } - } else if (typeof data === 'bigint') - throw new Error('Cannot send value of type BigInt'); + } + else if (typeof data === 'bigint') throw new Error("Cannot send value of type BigInt"); else if (typeof data === 'string') { // default to x-www-form-urlencoded if (!type) this.type('form'); @@ -734,7 +720,7 @@ RequestBase.prototype.send = function (data) { RequestBase.prototype.sortQuery = function (sort) { // _sort default to true but otherwise can be a function or boolean - this._sort = sort === undefined ? true : sort; + this._sort = typeof sort === 'undefined' ? true : sort; return this; }; diff --git a/test/agent-base.js b/test/agent-base.js index b493daf91..592f996e8 100644 --- a/test/agent-base.js +++ b/test/agent-base.js @@ -1,5 +1,6 @@ -const assert = require('node:assert'); +const assert = require('assert'); const getSetup = require('./support/setup'); + const request = require('./support/client'); describe('Agent', () => { diff --git a/test/basic.js b/test/basic.js index 3fbe4b450..ab6b5703a 100644 --- a/test/basic.js +++ b/test/basic.js @@ -1,5 +1,6 @@ -const assert = require('node:assert'); +const assert = require('assert'); const getSetup = require('./support/setup'); + const request = require('./support/client'); describe('request', function () { diff --git a/test/client/request.js b/test/client/request.js index 290041a3a..3263bddb7 100644 --- a/test/client/request.js +++ b/test/client/request.js @@ -1,4 +1,4 @@ -const assert = require('node:assert'); +const assert = require('assert'); const request = require('../support/client'); describe('request', function () { diff --git a/test/client/serialize.js b/test/client/serialize.js index c3970fabf..fe4ec91d8 100644 --- a/test/client/serialize.js +++ b/test/client/serialize.js @@ -1,4 +1,5 @@ -const assert = require('node:assert'); +const assert = require('assert'); + const request = require('../support/client'); function serialize(object, res) { diff --git a/test/client/xdomain.js b/test/client/xdomain.js index 2eccc0abe..477338aa9 100644 --- a/test/client/xdomain.js +++ b/test/client/xdomain.js @@ -1,4 +1,4 @@ -const assert = require('node:assert'); +const assert = require('assert'); const request = require('../support/client'); describe('xdomain', function () { diff --git a/test/content-type.js b/test/content-type.js index c16587919..097b93850 100644 --- a/test/content-type.js +++ b/test/content-type.js @@ -1,5 +1,6 @@ -const assert = require('node:assert'); +const assert = require('assert'); const getSetup = require('./support/setup'); + const request = require('./support/client'); describe('req.set("Content-Type", contentType)', function () { diff --git a/test/form.js b/test/form.js index b83031fc4..6c9fc5f2b 100644 --- a/test/form.js +++ b/test/form.js @@ -1,5 +1,6 @@ -const assert = require('node:assert'); +const assert = require('assert'); const should = require('should'); + const getSetup = require('./support/setup'); const request = require('./support/client'); diff --git a/test/json.js b/test/json.js index 7ad6450f6..3d10d7b4b 100644 --- a/test/json.js +++ b/test/json.js @@ -2,7 +2,7 @@ const getSetup = require('./support/setup'); const doesntWorkInHttp2 = !process.env.HTTP2_TEST; -const assert = require('node:assert'); +const assert = require('assert'); const request = require('./support/client'); describe('req.send(Object) as "json"', function () { @@ -99,7 +99,7 @@ describe('req.send(Object) as "json"', function () { try { res.should.be.json(); res.text.should.equal('{"tobi":"ferret"}'); - ({ tobi: 'ferret' }).should.eql(res.body); + ({ tobi: 'ferret' }.should.eql(res.body)); done(); } catch (err) { done(err); @@ -114,30 +114,34 @@ describe('req.send(Object) as "json"', function () { .send({ name: 'vendor' }) .end((error, res) => { res.text.should.equal('{"name":"vendor"}'); - ({ name: 'vendor' }).should.eql(res.body); + ({ name: 'vendor' }.should.eql(res.body)); done(); }); }); it('should error for BigInt object', (done) => { try { - request.post(`${uri}/echo`).type('json').send({ number: 1n }); - throw new Error('Should have thrown error for object with BigInt'); - } catch (err) { - assert.strictEqual(err.message, 'Cannot serialize BigInt value to json'); + request + .post(`${uri}/echo`) + .type('json') + .send({number: 1n}) + throw new Error('Should have thrown error for object with BigInt') + } catch (error) { + assert.strictEqual(error.message, 'Cannot serialize BigInt value to json'); } - done(); }); it('should error for BigInt primitive', (done) => { try { - request.post(`${uri}/echo`).type('json').send(1n); - throw new Error('Should have thrown error for BigInt primitive'); - } catch (err) { - assert.strictEqual(err.message, 'Cannot send value of type BigInt'); + request + .post(`${uri}/echo`) + .type('json') + .send(1n) + throw new Error('Should have thrown error for BigInt primitive') + } catch (error) { + assert.strictEqual(error.message, 'Cannot send value of type BigInt'); } - done(); }); @@ -150,7 +154,7 @@ describe('req.send(Object) as "json"', function () { .end((error, res) => { res.should.be.json(); res.text.should.equal('{"name":"tobi","age":1}'); - ({ name: 'tobi', age: 1 }).should.eql(res.body); + ({ name: 'tobi', age: 1 }.should.eql(res.body)); done(); }); }); diff --git a/test/node/agency.js b/test/node/agency.js index 85127de05..dbe8fa958 100644 --- a/test/node/agency.js +++ b/test/node/agency.js @@ -2,19 +2,19 @@ require('should-http'); -let http = require('node:http'); -const assert = require('node:assert'); +const express = require('../support/express'); + +const app = express(); +const request = require('../support/client'); +const assert = require('assert'); const should = require('should'); const cookieParser = require('cookie-parser'); const cookiejar = require('cookiejar'); const session = require('express-session'); -const request = require('../support/client'); -const express = require('../support/express'); - -const app = express(); +let http = require('http'); if (process.env.HTTP2_TEST) { - http = require('node:http2'); + http = require('http2'); http.Http2ServerResponse.prototype._implicitHeader = function () { this.writeHead(this.statusCode); }; @@ -134,26 +134,19 @@ describe('request', () => { assert.deepStrictEqual(cookiePairs, [ 'first_cookie=dummy', 'cookie=jar', - `connect.sid=${ - agent4.jar.getCookie( - 'connect.sid', - cookiejar.CookieAccessInfo.All - ).value - }` + `connect.sid=${agent4.jar.getCookie('connect.sid', cookiejar.CookieAccessInfo.All).value}`, ]); done(); }); }); it('should not share cookies between domains', () => { - assert.equal(agent4.get('https://google.com').cookies, ''); + assert.equal(agent4.get('https://google.com').cookies, ""); }); it('should send cookies to allowed domain with a different path', () => { - const postRequest = agent4.post(`${base}/x/y/z`); - const cookiesNames = postRequest.cookies - .split(';') - .map((cookie) => cookie.split('=')[0]); + const postRequest = agent4.post(`${base}/x/y/z`) + const cookiesNames = postRequest.cookies.split(';').map(cookie => cookie.split('=')[0]) cookiesNames.should.eql(['cookie', ' connect.sid']); }); diff --git a/test/node/basic-auth.js b/test/node/basic-auth.js index cef15c4a5..90d015b04 100644 --- a/test/node/basic-auth.js +++ b/test/node/basic-auth.js @@ -1,5 +1,5 @@ 'use strict'; -const URL = require('node:url'); +const URL = require('url'); const request = require('../support/client'); const getSetup = require('../support/setup'); diff --git a/test/node/basic.js b/test/node/basic.js index 809cb76f3..f208dc884 100644 --- a/test/node/basic.js +++ b/test/node/basic.js @@ -1,10 +1,10 @@ 'use strict'; -const assert = require('node:assert'); -const fs = require('node:fs'); -const { EventEmitter } = require('node:events'); -const { StringDecoder } = require('node:string_decoder'); -const url = require('node:url'); +const assert = require('assert'); +const fs = require('fs'); +const { EventEmitter } = require('events'); +const { StringDecoder } = require('string_decoder'); +const url = require('url'); const getSetup = require('../support/setup'); const request = require('../support/client'); @@ -247,7 +247,7 @@ describe('[node] request', () => { describe('.agent(new http.Agent())', () => { it('should set passed agent', (done) => { - const http = require('node:http'); + const http = require('http'); const request_ = request.get(`${base}/echo`); const agent = new http.Agent(); const returnValue = request_.agent(agent); diff --git a/test/node/buffers.js b/test/node/buffers.js index 2c47f1451..607d7b2fc 100644 --- a/test/node/buffers.js +++ b/test/node/buffers.js @@ -1,5 +1,5 @@ 'use strict'; -const assert = require('node:assert'); +const assert = require('assert'); const request = require('../support/client'); const getSetup = require('../support/setup'); diff --git a/test/node/flags.js b/test/node/flags.js index 4d1ada4e1..a29200157 100644 --- a/test/node/flags.js +++ b/test/node/flags.js @@ -1,6 +1,6 @@ 'use strict'; -const assert = require('node:assert'); +const assert = require('assert'); const request = require('../support/client'); const getSetup = require('../support/setup'); diff --git a/test/node/form.js b/test/node/form.js index 1af79bb02..f24634133 100644 --- a/test/node/form.js +++ b/test/node/form.js @@ -1,6 +1,6 @@ 'use strict'; -const assert = require('node:assert'); +const assert = require('assert'); const request = require('../support/client'); const getSetup = require('../support/setup'); diff --git a/test/node/http2.js b/test/node/http2.js index f6529d419..24e32da20 100644 --- a/test/node/http2.js +++ b/test/node/http2.js @@ -3,8 +3,8 @@ if (!process.env.HTTP2_TEST) { return; } -const assert = require('node:assert'); -const url = require('node:url'); +const assert = require('assert'); +const url = require('url'); const request = require('../..'); const getSetup = require('../support/setup'); diff --git a/test/node/https.js b/test/node/https.js index c5f1f5736..e485723b8 100644 --- a/test/node/https.js +++ b/test/node/https.js @@ -1,9 +1,10 @@ 'use strict'; -const assert = require('node:assert'); -const url = require('node:url'); -const https = require('node:https'); -const fs = require('node:fs'); +const assert = require('assert'); + +const url = require('url'); +const https = require('https'); +const fs = require('fs'); const express = require('../support/express'); const request = require('../support/client'); @@ -31,7 +32,7 @@ openssl pkcs12 -export -in cert.pem -inkey key.pem -out passcert.pfx # password */ let http2; if (process.env.HTTP2_TEST) { - http2 = require('node:http2'); + http2 = require('http2'); } let server; diff --git a/test/node/image.js b/test/node/image.js index e59e1a082..2b66b499f 100644 --- a/test/node/image.js +++ b/test/node/image.js @@ -1,6 +1,6 @@ 'use strict'; -const fs = require('node:fs'); +const fs = require('fs'); const request = require('../support/client'); const getSetup = require('../support/setup'); diff --git a/test/node/inflate.js b/test/node/inflate.js index 08bc4e3e1..1a849e440 100644 --- a/test/node/inflate.js +++ b/test/node/inflate.js @@ -2,15 +2,15 @@ require('should'); require('should-http'); -const assert = require('node:assert'); -const zlib = require('node:zlib'); -let http = require('node:http'); +const assert = require('assert'); +const zlib = require('zlib'); +let http = require('http'); const getPort = require('get-port'); const express = require('../support/express'); const request = require('../support/client'); if (process.env.HTTP2_TEST) { - http = require('node:http2'); + http = require('http2'); } const app = express(); diff --git a/test/node/lookup.js b/test/node/lookup.js index c3d72c24e..0eafef210 100644 --- a/test/node/lookup.js +++ b/test/node/lookup.js @@ -1,6 +1,6 @@ 'use strict'; -const assert = require('node:assert'); -const dns = require('node:dns'); +const assert = require('assert'); +const dns = require('dns'); const request = require('../support/client'); const getSetup = require('../support/setup'); diff --git a/test/node/multipart.js b/test/node/multipart.js index 4b82a449d..bf992b382 100644 --- a/test/node/multipart.js +++ b/test/node/multipart.js @@ -1,13 +1,13 @@ 'use strict'; -const assert = require('node:assert'); -const fs = require('node:fs'); -const path = require('node:path'); +const assert = require('assert'); +const fs = require('fs'); +const path = require('path'); const should = require('should'); const getPort = require('get-port'); const request = require('../support/client'); const getSetup = require('../support/setup'); -const IS_WINDOWS = require('node:os').platform() === 'win32'; +const IS_WINDOWS = require('os').platform() === 'win32'; function read(file) { return fs.readFileSync(file, 'utf8'); diff --git a/test/node/network-error.js b/test/node/network-error.js index a71a43c03..3828590ea 100644 --- a/test/node/network-error.js +++ b/test/node/network-error.js @@ -1,6 +1,6 @@ 'use strict'; -const assert = require('node:assert'); -const net = require('node:net'); +const assert = require('assert'); +const net = require('net'); const request = require('../support/client'); const express = require('../support/express'); diff --git a/test/node/parsers.js b/test/node/parsers.js index 01753f61f..924628982 100644 --- a/test/node/parsers.js +++ b/test/node/parsers.js @@ -1,5 +1,5 @@ 'use strict'; -const assert = require('node:assert'); +const assert = require('assert'); const request = require('../support/client'); const getSetup = require('../support/setup'); diff --git a/test/node/pipe-redirect.js b/test/node/pipe-redirect.js index 8a91e661d..3b7525f74 100644 --- a/test/node/pipe-redirect.js +++ b/test/node/pipe-redirect.js @@ -1,5 +1,5 @@ 'use strict'; -const fs = require('node:fs'); +const fs = require('fs'); const request = require('../support/client'); const getSetup = require('../support/setup'); diff --git a/test/node/pipe.js b/test/node/pipe.js index d1d9df66b..c6f11222c 100644 --- a/test/node/pipe.js +++ b/test/node/pipe.js @@ -3,14 +3,14 @@ const request = require('../support/client'); const express = require('../support/express'); const app = express(); -const fs = require('node:fs'); -let http = require('node:http'); -const zlib = require('node:zlib'); -const { pipeline } = require('node:stream'); +const fs = require('fs'); const bodyParser = require('body-parser'); +let http = require('http'); +const zlib = require('zlib'); +const { pipeline } = require('stream'); if (process.env.HTTP2_TEST) { - http = require('node:http2'); + http = require('http2'); } app.use(bodyParser.json()); @@ -23,9 +23,7 @@ app.get('/gzip', (request_, res) => { res.writeHead(200, { 'Content-Encoding': 'gzip' }); - fs.createReadStream('test/node/fixtures/user.json') - .pipe(new zlib.createGzip()) - .pipe(res); + fs.createReadStream('test/node/fixtures/user.json').pipe(new zlib.createGzip()).pipe(res); }); app.get('/redirect', (request_, res) => { @@ -149,7 +147,7 @@ describe('request pipe', () => { // not monitored by pipeline, we need to make sure request_ does not emit 'end' until the unzip step // has finished writing data. Otherwise, we'll either end up with truncated data or a 'write after end' error. pipeline(request_, stream, function (err) { - Boolean(err).should.be.false(); + (!!err).should.be.false(); responseCalled.should.be.true(); JSON.parse(fs.readFileSync(destinationPath)).should.eql({ diff --git a/test/node/query.js b/test/node/query.js index 9ba6adc7b..dfa0efd75 100644 --- a/test/node/query.js +++ b/test/node/query.js @@ -1,14 +1,14 @@ 'use strict'; -let http = require('node:http'); -const assert = require('node:assert'); -const fs = require('node:fs'); +let http = require('http'); +const assert = require('assert'); +const fs = require('fs'); const request = require('../support/client'); const express = require('../support/express'); const app = express(); if (process.env.HTTP2_TEST) { - http = require('node:http2'); + http = require('http2'); } app.get('/raw-query', (request_, res) => { diff --git a/test/node/redirects-other-host.js b/test/node/redirects-other-host.js index 4fccca198..067866e17 100644 --- a/test/node/redirects-other-host.js +++ b/test/node/redirects-other-host.js @@ -1,15 +1,15 @@ 'use strict'; -const assert = require('node:assert'); +const assert = require('assert'); const request = require('../support/client'); const express = require('../support/express'); const app = express(); const app2 = express(); const should = require('should'); -let http = require('node:http'); +let http = require('http'); if (process.env.HTTP2_TEST) { - http = require('node:http2'); + http = require('http2'); } let base = 'http://localhost'; diff --git a/test/node/redirects.js b/test/node/redirects.js index b6d9f99de..b1d5d9260 100644 --- a/test/node/redirects.js +++ b/test/node/redirects.js @@ -1,7 +1,7 @@ 'use strict'; -const URL = require('node:url'); -const assert = require('node:assert'); +const URL = require('url'); +const assert = require('assert'); const getSetup = require('../support/setup'); const request = require('../support/client'); @@ -88,7 +88,7 @@ describe('request', () => { } }); }); - }); + }) it('should follow Location', (done) => { const redirects = []; diff --git a/test/node/response-readable-stream.js b/test/node/response-readable-stream.js index 47841dceb..fdd076781 100644 --- a/test/node/response-readable-stream.js +++ b/test/node/response-readable-stream.js @@ -3,11 +3,11 @@ const request = require('../support/client'); const express = require('../support/express'); const app = express(); -const fs = require('node:fs'); -let http = require('node:http'); +const fs = require('fs'); +let http = require('http'); if (process.env.HTTP2_TEST) { - http = require('node:http2'); + http = require('http2'); } app.get('/', (request_, res) => { diff --git a/test/node/serialize.js b/test/node/serialize.js index 0fc0316bb..0d01c6911 100644 --- a/test/node/serialize.js +++ b/test/node/serialize.js @@ -1,6 +1,6 @@ 'use strict'; -const assert = require('node:assert'); +const assert = require('assert'); const request = require('../support/client'); const getSetup = require('../support/setup'); diff --git a/test/node/set-host.js b/test/node/set-host.js index 7c06f96e3..6bd58f1b3 100644 --- a/test/node/set-host.js +++ b/test/node/set-host.js @@ -3,8 +3,8 @@ const request = require('../support/client'); const express = require('../support/express'); const app = express(); -const http = require('node:http'); -const assert = require('node:assert'); +const http = require('http'); +const assert = require('assert'); describe('request.get().set()', () => { if (process.env.HTTP2_TEST) { diff --git a/test/node/toError.js b/test/node/toError.js index fd49ae6f3..300100fdf 100644 --- a/test/node/toError.js +++ b/test/node/toError.js @@ -1,13 +1,13 @@ 'use strict'; -const assert = require('node:assert'); +const assert = require('assert'); const request = require('../support/client'); const express = require('../support/express'); const app = express(); -let http = require('node:http'); +let http = require('http'); if (process.env.HTTP2_TEST) { - http = require('node:http2'); + http = require('http2'); } app.get('/', (request_, res) => { diff --git a/test/node/unix-sockets.js b/test/node/unix-sockets.js index 15ccf6e19..a443079af 100644 --- a/test/node/unix-sockets.js +++ b/test/node/unix-sockets.js @@ -1,9 +1,10 @@ 'use strict'; -const assert = require('node:assert'); -let http = require('node:http'); -let https = require('node:https'); -const os = require('node:os'); -const fs = require('node:fs'); +const assert = require('assert'); + +let http = require('http'); +let https = require('https'); +const os = require('os'); +const fs = require('fs'); const express = require('../support/express'); const request = require('../support/client'); @@ -18,7 +19,7 @@ let httpServer; let httpsServer; if (process.env.HTTP2_TEST) { - http = https = require('node:http2'); + http = https = require('http2'); } app.get('/', (request_, res) => { @@ -44,7 +45,7 @@ describe('[unix-sockets] http', () => { httpServer.listen(httpSockPath, done); }); - const base = `http+unix://${httpSockPath.replaceAll('/', '%2F')}`; + const base = `http+unix://${httpSockPath.replace(/\//g, '%2F')}`; describe('request', () => { it('path: / (root)', (done) => { @@ -89,7 +90,7 @@ describe('[unix-sockets] https', () => { httpsServer.listen(httpsSockPath, done); }); - const base = `https+unix://${httpsSockPath.replaceAll('/', '%2F')}`; + const base = `https+unix://${httpsSockPath.replace(/\//g, '%2F')}`; describe('request', () => { it('path: / (root)', (done) => { diff --git a/test/node/user-agent.js b/test/node/user-agent.js index 449c92ded..3e0f008ac 100644 --- a/test/node/user-agent.js +++ b/test/node/user-agent.js @@ -1,5 +1,5 @@ 'use strict'; -const assert = require('node:assert'); +const assert = require('assert'); const request = require('../support/client'); const getSetup = require('../support/setup'); diff --git a/test/node/utils.js b/test/node/utils.js index 7260f47a7..e0ba5e57d 100644 --- a/test/node/utils.js +++ b/test/node/utils.js @@ -1,5 +1,5 @@ 'use strict'; -const assert = require('node:assert'); +const assert = require('assert'); const utils = process.env.OLD_NODE_TEST === '1' ? // eslint-disable-next-line node/no-missing-require diff --git a/test/redirects.js b/test/redirects.js index c81bbb53c..7cba5f46a 100644 --- a/test/redirects.js +++ b/test/redirects.js @@ -1,4 +1,5 @@ -const assert = require('node:assert'); +const assert = require('assert'); + const getSetup = require('./support/setup'); const request = require('./support/client'); diff --git a/test/request.js b/test/request.js index 6a5937431..e4ec3b739 100644 --- a/test/request.js +++ b/test/request.js @@ -1,6 +1,8 @@ -const fs = require('node:fs'); -const assert = require('node:assert'); +const fs = require('fs'); + +const assert = require('assert'); const getSetup = require('./support/setup'); + const request = require('./support/client'); const binData = fs.readFileSync(`${__dirname}/node/fixtures/test.aac`); diff --git a/test/retry.js b/test/retry.js index cbfbdd38c..52c023418 100644 --- a/test/retry.js +++ b/test/retry.js @@ -1,5 +1,6 @@ -const assert = require('node:assert'); +const assert = require('assert'); const getSetup = require('./support/setup'); + const request = require('./support/client'); function uniqid() { diff --git a/test/support/express/index.js b/test/support/express/index.js index ec5cf228d..fed7e8632 100644 --- a/test/support/express/index.js +++ b/test/support/express/index.js @@ -1,10 +1,10 @@ -const process = require('node:process'); +const process = require('process'); const express = require('express'); let http2Request; let http2Res; if (process.env.HTTP2_TEST) { - const http2 = require('node:http2'); + const http2 = require('http2'); const requestDecorator = require('./requestDecorator'); const resDecorator = require('./responseDecorator'); http2Request = requestDecorator( diff --git a/test/support/express/requestDecorator.js b/test/support/express/requestDecorator.js index 8580a38ed..196406b9c 100644 --- a/test/support/express/requestDecorator.js +++ b/test/support/express/requestDecorator.js @@ -13,7 +13,7 @@ * @private */ -const { isIP } = require('node:net'); +const { isIP } = require('net'); const accepts = require('accepts'); const typeis = require('type-is'); const fresh = require('fresh'); @@ -71,13 +71,10 @@ function setMethods(request) { switch (lc) { case 'referer': - case 'referrer': { + case 'referrer': return this.headers.referrer || this.headers.referer; - } - - default: { + default: return this.headers[lc]; - } } }; @@ -294,7 +291,7 @@ function setMethods(request) { const header = this.get('X-Forwarded-Proto') || proto; const index = header.indexOf(','); - return index === -1 ? header.trim() : header.slice(0, index).trim(); + return index !== -1 ? header.slice(0, index).trim() : header.trim(); }); /** @@ -369,9 +366,9 @@ function setMethods(request) { if (!hostname) return []; const offset = this.app.get('subdomain offset'); - const subdomains = isIP(hostname) - ? [hostname] - : hostname.split('.').reverse(); + const subdomains = !isIP(hostname) + ? hostname.split('.').reverse() + : [hostname]; return subdomains.slice(offset); }); @@ -429,7 +426,7 @@ function setMethods(request) { const offset = host[0] === '[' ? host.indexOf(']') + 1 : 0; const index = host.indexOf(':', offset); - return index === -1 ? host : host.slice(0, index); + return index !== -1 ? host.slice(0, index) : host; }); /** diff --git a/test/support/express/responseDecorator.js b/test/support/express/responseDecorator.js index 04823fec8..26535e879 100644 --- a/test/support/express/responseDecorator.js +++ b/test/support/express/responseDecorator.js @@ -12,7 +12,7 @@ * @private */ -const path = require('node:path'); +const path = require('path'); const { Buffer } = require('safe-buffer'); const contentDisposition = require('content-disposition'); const encodeUrl = require('encodeurl'); @@ -113,17 +113,15 @@ function setMethods(res) { switch (typeof chunk) { // string defaulting to html - case 'string': { + case 'string': if (!this.get('Content-Type')) { this.type('html'); } break; - } - case 'boolean': case 'number': - case 'object': { + case 'object': if (chunk === null) { chunk = ''; } else if (Buffer.isBuffer(chunk)) { @@ -135,7 +133,6 @@ function setMethods(res) { } break; - } } // write strings in utf-8 @@ -270,12 +267,10 @@ function setMethods(res) { this.set('Content-Type', 'text/javascript'); // restrict callback charset - callback = callback.replaceAll(/[^[\]\w$.]/g, ''); + callback = callback.replace(/[^[\]\w$.]/g, ''); // replace chars not allowed in JavaScript that are in JSON - body = body - .replaceAll('\u2028', '\\u2028') - .replaceAll('\u2029', '\\u2029'); + body = body.replace(/\u2028/g, '\\u2028').replace(/\u2029/g, '\\u2029'); // the /**/ is a specific security mitigation for "Rosetta Flash JSONP abuse" // the typeof check is just to reduce client error noise @@ -473,7 +468,7 @@ function setMethods(res) { */ res.contentType = res.type = function contentType(type) { - const ct = type.includes('/') ? type : mime.lookup(type); + const ct = !type.includes('/') ? mime.lookup(type) : type; return this.set('Content-Type', ct); }; @@ -1004,23 +999,16 @@ function stringify(value, replacer, spaces, escape) { : JSON.stringify(value); if (escape) { - json = json.replaceAll(/[<>&]/g, (c) => { + json = json.replace(/[<>&]/g, (c) => { switch (c.charCodeAt(0)) { - case 0x3c: { + case 0x3c: return '\\u003c'; - } - - case 0x3e: { + case 0x3e: return '\\u003e'; - } - - case 0x26: { + case 0x26: return '\\u0026'; - } - - default: { + default: return c; - } } }); } diff --git a/test/support/express/utils.js b/test/support/express/utils.js index 8c21ab76c..b3dbc7a65 100644 --- a/test/support/express/utils.js +++ b/test/support/express/utils.js @@ -12,7 +12,7 @@ * @api private */ -const querystring = require('node:querystring'); +const querystring = require('querystring'); const { Buffer } = require('safe-buffer'); const contentType = require('content-type'); const { mime } = require('send'); @@ -27,7 +27,7 @@ let isHttp2Supported = true; * @api private */ try { - require('node:http2'); + require('http2'); } catch { isHttp2Supported = false; } @@ -132,28 +132,19 @@ exports.compileETag = function (value) { } switch (value) { - case true: { + case true: fn = exports.wetag; break; - } - - case false: { + case false: break; - } - - case 'strong': { + case 'strong': fn = exports.etag; break; - } - - case 'weak': { + case 'weak': fn = exports.wetag; break; - } - - default: { + default: throw new TypeError('unknown value for etag function: ' + value); - } } return fn; @@ -175,28 +166,19 @@ exports.compileQueryParser = function compileQueryParser(value) { } switch (value) { - case true: { + case true: fn = querystring.parse; break; - } - - case false: { + case false: break; - } - - case 'extended': { + case 'extended': fn = parseExtendedQueryString; break; - } - - case 'simple': { + case 'simple': fn = querystring.parse; break; - } - - default: { + default: throw new TypeError('unknown value for query parser function: ' + value); - } } return fn; @@ -274,7 +256,7 @@ exports.setCharset = function setCharset(type, charset) { function createETagGenerator(options) { return function generateETag(body, encoding) { - const buf = Buffer.isBuffer(body) ? body : Buffer.from(body, encoding); + const buf = !Buffer.isBuffer(body) ? Buffer.from(body, encoding) : body; return etag(buf, options); }; diff --git a/test/support/server.js b/test/support/server.js index 0ebb55b85..a219c0d15 100644 --- a/test/support/server.js +++ b/test/support/server.js @@ -1,6 +1,6 @@ -const fs = require('node:fs'); -const path = require('node:path'); -let http = require('node:http'); +const fs = require('fs'); +const path = require('path'); +let http = require('http'); const multer = require('multer'); const bodyParser = require('body-parser'); const cookieParser = require('cookie-parser'); @@ -10,7 +10,7 @@ const express = require('./express'); let isPseudoHeader; if (process.env.HTTP2_TEST) { - http = require('node:http2'); + http = require('http2'); const { HTTP2_HEADER_AUTHORITY, HTTP2_HEADER_METHOD, @@ -24,14 +24,10 @@ if (process.env.HTTP2_TEST) { case HTTP2_HEADER_METHOD: // :method case HTTP2_HEADER_PATH: // :path case HTTP2_HEADER_AUTHORITY: // :authority - case HTTP2_HEADER_SCHEME: { - // :scheme + case HTTP2_HEADER_SCHEME: // :scheme return true; - } - - default: { + default: return false; - } } }; } @@ -423,7 +419,7 @@ app.get('/cookie-redirect', (request, res) => { }); app.get('/set-cookie', (request, res) => { - res.cookie('replaced', 'no'); + res.cookie('replaced', 'no') res.cookie('persist', '123'); res.send('ok'); }); @@ -546,48 +542,48 @@ app.get('/error/ok/:id', (request, res) => { } const { id } = request.params; - if (called[id]) { - res.send(request.headers); - delete called[id]; - } else { + if (!called[id]) { called[id] = true; res.status(500).send('boom'); + } else { + res.send(request.headers); + delete called[id]; } }); app.get('/delay/:ms/ok/:id', (request, res) => { const { id } = request.params; - if (called[id]) { - res.send(`ok = ${request.url}`); - delete called[id]; - } else { + if (!called[id]) { called[id] = true; const ms = Math.trunc(request.params.ms); setTimeout(() => { res.sendStatus(200); }, ms); + } else { + res.send(`ok = ${request.url}`); + delete called[id]; } }); app.get('/error/redirect/:id', (request, res) => { const { id } = request.params; - if (called[id]) { - res.redirect('/movies'); - delete called[id]; - } else { + if (!called[id]) { called[id] = true; res.status(500).send('boom'); + } else { + res.redirect('/movies'); + delete called[id]; } }); app.get('/error/redirect-error:id', (request, res) => { const { id } = request.params; - if (called[id]) { - res.redirect('/error'); - delete called[id]; - } else { + if (!called[id]) { called[id] = true; res.status(500).send('boom'); + } else { + res.redirect('/error'); + delete called[id]; } }); diff --git a/test/support/setup.js b/test/support/setup.js index 938746d01..ee251837f 100644 --- a/test/support/setup.js +++ b/test/support/setup.js @@ -12,7 +12,10 @@ async function getSetup() { } NODE = true; - if (typeof window === 'undefined') { + if (typeof window !== 'undefined') { + NODE = false; + uri = `//${window.location.host}`; + } else { try { const port = await getPort(); @@ -25,9 +28,6 @@ async function getSetup() { } catch (err) { console.error(err); } - } else { - NODE = false; - uri = `//${window.location.host}`; } return { NODE, uri }; diff --git a/test/timeout.js b/test/timeout.js index 4a77a28ec..7acf39b5c 100644 --- a/test/timeout.js +++ b/test/timeout.js @@ -1,5 +1,6 @@ -const assert = require('node:assert'); +const assert = require('assert'); const getSetup = require('./support/setup'); + const request = require('./support/client'); describe('.timeout(ms)', function () { diff --git a/test/use.js b/test/use.js index 8606208e3..59598f00a 100644 --- a/test/use.js +++ b/test/use.js @@ -1,5 +1,6 @@ -const assert = require('node:assert'); +const assert = require('assert'); const getSetup = require('./support/setup'); + const request = require('./support/client'); describe('request', function () {