diff --git a/lib/internal/encoding.js b/lib/internal/encoding.js index f6e52238a1270c..2cdd453b15ba91 100644 --- a/lib/internal/encoding.js +++ b/lib/internal/encoding.js @@ -39,7 +39,10 @@ const { isUint8Array } = require('internal/util/types'); -const { validateString } = require('internal/validators'); +const { + validateString, + validateObject, +} = require('internal/validators'); const { encodeInto, @@ -63,12 +66,6 @@ function validateDecoder(obj) { throw new ERR_INVALID_THIS('TextDecoder'); } -function validateArgument(prop, expected, propName, expectedName) { - // eslint-disable-next-line valid-typeof - if (typeof prop !== expected) - throw new ERR_INVALID_ARG_TYPE(propName, expectedName, prop); -} - const CONVERTER_FLAGS_FLUSH = 0x1; const CONVERTER_FLAGS_FATAL = 0x2; const CONVERTER_FLAGS_IGNORE_BOM = 0x4; @@ -381,7 +378,11 @@ function makeTextDecoderICU() { class TextDecoder { constructor(encoding = 'utf-8', options = {}) { encoding = `${encoding}`; - validateArgument(options, 'object', 'options', 'Object'); + validateObject(options, 'options', { + nullable: true, + allowArray: true, + allowFunction: true, + }); const enc = getEncodingFromLabel(encoding); if (enc === undefined) @@ -413,7 +414,11 @@ function makeTextDecoderICU() { ['ArrayBuffer', 'ArrayBufferView'], input); } - validateArgument(options, 'object', 'options', 'Object'); + validateObject(options, 'options', { + nullable: true, + allowArray: true, + allowFunction: true, + }); let flags = 0; if (options !== null) @@ -447,7 +452,11 @@ function makeTextDecoderJS() { class TextDecoder { constructor(encoding = 'utf-8', options = {}) { encoding = `${encoding}`; - validateArgument(options, 'object', 'options', 'Object'); + validateObject(options, 'options', { + nullable: true, + allowArray: true, + allowFunction: true, + }); const enc = getEncodingFromLabel(encoding); if (enc === undefined || !hasConverter(enc)) @@ -481,7 +490,11 @@ function makeTextDecoderJS() { ['ArrayBuffer', 'ArrayBufferView'], input); } - validateArgument(options, 'object', 'options', 'Object'); + validateObject(options, 'options', { + nullable: true, + allowArray: true, + allowFunction: true, + }); if (this[kFlags] & CONVERTER_FLAGS_FLUSH) { this[kBOMSeen] = false;