From 2afe69e236550eb8a3e89d76bee1f77bf0133982 Mon Sep 17 00:00:00 2001 From: Minh Nguyen <2852660+NMinhNguyen@users.noreply.github.com> Date: Fri, 20 May 2022 14:27:38 +0100 Subject: [PATCH] fix(fetch): replace `instanceof FormData` check (#1457) --- lib/fetch/body.js | 2 +- lib/fetch/formdata.js | 2 ++ test/fetch/formdata.js | 6 ++++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/fetch/body.js b/lib/fetch/body.js index c02f79f97b4..415e4ea34da 100644 --- a/lib/fetch/body.js +++ b/lib/fetch/body.js @@ -71,7 +71,7 @@ function extractBody (object, keepalive = false) { // Set source to a copy of the bytes held by object. source = new Uint8Array(object) - } else if (object instanceof FormData || util.isFormDataLike(object)) { + } else if (util.isFormDataLike(object)) { const boundary = '----formdata-undici-' + Math.random() const prefix = `--${boundary}\r\nContent-Disposition: form-data` diff --git a/lib/fetch/formdata.js b/lib/fetch/formdata.js index 0a84f1f384b..e12d2b42bd2 100644 --- a/lib/fetch/formdata.js +++ b/lib/fetch/formdata.js @@ -6,6 +6,8 @@ const { File, FileLike } = require('./file') const { Blob } = require('buffer') class FormData { + static name = 'FormData' + constructor (...args) { if (args.length > 0 && !(args[0]?.constructor?.name === 'HTMLFormElement')) { throw new TypeError( diff --git a/test/fetch/formdata.js b/test/fetch/formdata.js index 9b7f3d4a096..0563de0720c 100644 --- a/test/fetch/formdata.js +++ b/test/fetch/formdata.js @@ -216,3 +216,9 @@ test('formData toStringTag', (t) => { t.equal(FormData.prototype[Symbol.toStringTag], 'FormData') t.end() }) + +test('formData.constructor.name', (t) => { + const form = new FormData() + t.equal(form.constructor.name, 'FormData') + t.end() +})