diff --git a/lib/internal/crypto/keygen.js b/lib/internal/crypto/keygen.js index 61898989b08abe..7222d301f08692 100644 --- a/lib/internal/crypto/keygen.js +++ b/lib/internal/crypto/keygen.js @@ -15,7 +15,7 @@ const { PK_FORMAT_PEM } = internalBinding('crypto'); const { customPromisifyArgs } = require('internal/util'); -const { isUint32 } = require('internal/validators'); +const { isUint32, validateString } = require('internal/validators'); const { ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS, ERR_INVALID_ARG_TYPE, @@ -157,8 +157,7 @@ function parseKeyEncoding(keyType, options) { } function check(type, options, callback) { - if (typeof type !== 'string') - throw new ERR_INVALID_ARG_TYPE('type', 'string', type); + validateString(type, 'type'); if (options == null || typeof options !== 'object') throw new ERR_INVALID_ARG_TYPE('options', 'object', options); diff --git a/lib/internal/dns/promises.js b/lib/internal/dns/promises.js index 4bf5ac02198333..be49ebf2106d7e 100644 --- a/lib/internal/dns/promises.js +++ b/lib/internal/dns/promises.js @@ -21,6 +21,7 @@ const { ERR_MISSING_ARGS, ERR_SOCKET_BAD_PORT } = codes; +const { validateString } = require('internal/validators'); function onlookup(err, addresses) { @@ -192,9 +193,7 @@ function createResolverPromise(resolver, bindingName, hostname, ttl) { function resolver(bindingName) { function query(name, options) { - if (typeof name !== 'string') { - throw new ERR_INVALID_ARG_TYPE('name', 'string', name); - } + validateString(name, 'name'); const ttl = !!(options && options.ttl); return createResolverPromise(this, bindingName, name, ttl); diff --git a/lib/internal/http2/core.js b/lib/internal/http2/core.js index 6ce426a207a488..b15e15f64fa2f7 100644 --- a/lib/internal/http2/core.js +++ b/lib/internal/http2/core.js @@ -78,7 +78,7 @@ const { ERR_SOCKET_CLOSED } } = require('internal/errors'); -const { validateNumber } = require('internal/validators'); +const { validateNumber, validateString } = require('internal/validators'); const { utcDate } = require('internal/http'); const { onServerStream, Http2ServerRequest, @@ -1372,8 +1372,7 @@ class ServerHttp2Session extends Http2Session { } } - if (typeof alt !== 'string') - throw new ERR_INVALID_ARG_TYPE('alt', 'string', alt); + validateString(alt, 'alt'); if (!kQuotedString.test(alt)) throw new ERR_INVALID_CHAR('alt'); @@ -1402,8 +1401,7 @@ class ServerHttp2Session extends Http2Session { } else if (origin != null && typeof origin === 'object') { origin = origin.origin; } - if (typeof origin !== 'string') - throw new ERR_INVALID_ARG_TYPE('origin', 'string', origin); + validateString(origin, 'origin'); if (origin === 'null') throw new ERR_HTTP2_INVALID_ORIGIN(); diff --git a/lib/internal/process/main_thread_only.js b/lib/internal/process/main_thread_only.js index 148dfdc0f7f980..b8b7a454dc2f9f 100644 --- a/lib/internal/process/main_thread_only.js +++ b/lib/internal/process/main_thread_only.js @@ -12,7 +12,8 @@ const { } = require('internal/errors'); const { validateMode, - validateUint32 + validateUint32, + validateString } = require('internal/validators'); const { @@ -36,9 +37,7 @@ function setupProcessMethods(_chdir, _umask, _initgroups, _setegid, } process.chdir = function chdir(directory) { - if (typeof directory !== 'string') { - throw new ERR_INVALID_ARG_TYPE('directory', 'string', directory); - } + validateString(directory, 'directory'); return _chdir(directory); }; diff --git a/lib/internal/vm/source_text_module.js b/lib/internal/vm/source_text_module.js index d22db6e914f50d..8b107a9b74866f 100644 --- a/lib/internal/vm/source_text_module.js +++ b/lib/internal/vm/source_text_module.js @@ -18,7 +18,11 @@ const { emitExperimentalWarning } = require('internal/util'); const { SafePromise } = require('internal/safe_globals'); -const { validateInt32, validateUint32 } = require('internal/validators'); +const { + validateInt32, + validateUint32, + validateString +} = require('internal/validators'); const { ModuleWrap, @@ -54,8 +58,7 @@ class SourceTextModule { constructor(src, options = {}) { emitExperimentalWarning('vm.SourceTextModule'); - if (typeof src !== 'string') - throw new ERR_INVALID_ARG_TYPE('src', 'string', src); + validateString(src, 'src'); if (typeof options !== 'object' || options === null) throw new ERR_INVALID_ARG_TYPE('options', 'Object', options); @@ -79,9 +82,7 @@ class SourceTextModule { let { url } = options; if (url !== undefined) { - if (typeof url !== 'string') { - throw new ERR_INVALID_ARG_TYPE('options.url', 'string', url); - } + validateString(url, 'options.url'); url = new URL(url).href; } else if (context === undefined) { url = `${defaultModuleName}(${globalModuleId++})`; diff --git a/lib/internal/worker.js b/lib/internal/worker.js index 669a86bb23faef..9e41dba7169236 100644 --- a/lib/internal/worker.js +++ b/lib/internal/worker.js @@ -6,11 +6,11 @@ const path = require('path'); const util = require('util'); const { Readable, Writable } = require('stream'); const { - ERR_INVALID_ARG_TYPE, ERR_WORKER_PATH, ERR_WORKER_UNSERIALIZABLE_ERROR, ERR_WORKER_UNSUPPORTED_EXTENSION, } = require('internal/errors').codes; +const { validateString } = require('internal/validators'); const { MessagePort, MessageChannel } = internalBinding('messaging'); const { @@ -251,9 +251,7 @@ class Worker extends EventEmitter { constructor(filename, options = {}) { super(); debug(`[${threadId}] create new worker`, filename, options); - if (typeof filename !== 'string') { - throw new ERR_INVALID_ARG_TYPE('filename', 'string', filename); - } + validateString(filename, 'filename'); if (!options.eval) { if (!path.isAbsolute(filename) && diff --git a/lib/readline.js b/lib/readline.js index e4d9e1aa45fbf5..10cd583f162407 100644 --- a/lib/readline.js +++ b/lib/readline.js @@ -28,11 +28,11 @@ 'use strict'; const { - ERR_INVALID_ARG_TYPE, ERR_INVALID_CURSOR_POS, ERR_INVALID_OPT_VALUE } = require('internal/errors').codes; const { debug, inherits } = require('util'); +const { validateString } = require('internal/validators'); const { emitExperimentalWarning } = require('internal/util'); const { Buffer } = require('buffer'); const EventEmitter = require('events'); @@ -310,9 +310,7 @@ Interface.prototype._onLine = function(line) { }; Interface.prototype._writeToOutput = function _writeToOutput(stringToWrite) { - if (typeof stringToWrite !== 'string') { - throw new ERR_INVALID_ARG_TYPE('stringToWrite', 'string', stringToWrite); - } + validateString(stringToWrite, 'stringToWrite'); if (this.output !== null && this.output !== undefined) { this.output.write(stringToWrite); diff --git a/lib/url.js b/lib/url.js index 29dec5cc5f91c2..c34eee638cdf0b 100644 --- a/lib/url.js +++ b/lib/url.js @@ -31,6 +31,7 @@ const { SafeSet } = require('internal/safe_globals'); const { ERR_INVALID_ARG_TYPE } = require('internal/errors').codes; +const { validateString } = require('internal/validators'); // This ensures setURLConstructor() is called before the native // URL::ToObject() method is used. @@ -150,9 +151,7 @@ function urlParse(url, parseQueryString, slashesDenoteHost) { } Url.prototype.parse = function parse(url, parseQueryString, slashesDenoteHost) { - if (typeof url !== 'string') { - throw new ERR_INVALID_ARG_TYPE('url', 'string', url); - } + validateString(url, 'url'); // Copy chrome, IE, opera backslash-handling behavior. // Back slashes before the query string get converted to forward slashes diff --git a/lib/v8.js b/lib/v8.js index b29304de5c08dc..3d75cf75847876 100644 --- a/lib/v8.js +++ b/lib/v8.js @@ -15,7 +15,7 @@ 'use strict'; const { Buffer } = require('buffer'); -const { ERR_INVALID_ARG_TYPE } = require('internal/errors').codes; +const { validateString } = require('internal/validators'); const { Serializer: _Serializer, Deserializer: _Deserializer @@ -66,8 +66,7 @@ const heapSpaceStatisticsBuffer = new Float64Array(heapSpaceStatisticsArrayBuffer); function setFlagsFromString(flags) { - if (typeof flags !== 'string') - throw new ERR_INVALID_ARG_TYPE('flags', 'string', flags); + validateString(flags, 'flags'); _setFlagsFromString(flags); }