@@ -33,7 +33,11 @@ const {
3333  ERR_VM_MODULE_NOT_MODULE , 
3434}  =  require ( 'internal/errors' ) . codes ; 
3535const  {  isModuleNamespaceObject,  isArrayBufferView }  =  require ( 'util' ) . types ; 
36- const  {  validateInt32,  validateUint32 }  =  require ( 'internal/validators' ) ; 
36+ const  { 
37+   validateInt32, 
38+   validateUint32, 
39+   validateString
40+ }  =  require ( 'internal/validators' ) ; 
3741const  kParsingContext  =  Symbol ( 'script parsing context' ) ; 
3842
3943const  ArrayForEach  =  Function . call . bind ( Array . prototype . forEach ) ; 
@@ -58,9 +62,7 @@ class Script extends ContextifyScript {
5862      [ kParsingContext ] : parsingContext , 
5963    }  =  options ; 
6064
61-     if  ( typeof  filename  !==  'string' )  { 
62-       throw  new  ERR_INVALID_ARG_TYPE ( 'options.filename' ,  'string' ,  filename ) ; 
63-     } 
65+     validateString ( filename ,  'options.filename' ) ; 
6466    validateInt32 ( lineOffset ,  'options.lineOffset' ) ; 
6567    validateInt32 ( columnOffset ,  'options.columnOffset' ) ; 
6668    if  ( cachedData  !==  undefined  &&  ! isArrayBufferView ( cachedData ) )  { 
@@ -149,11 +151,6 @@ function validateContext(sandbox) {
149151  } 
150152} 
151153
152- function  validateString ( prop ,  propName )  { 
153-   if  ( prop  !==  undefined  &&  typeof  prop  !==  'string' ) 
154-     throw  new  ERR_INVALID_ARG_TYPE ( propName ,  'string' ,  prop ) ; 
155- } 
156- 
157154function  validateBool ( prop ,  propName )  { 
158155  if  ( prop  !==  undefined  &&  typeof  prop  !==  'boolean' ) 
159156    throw  new  ERR_INVALID_ARG_TYPE ( propName ,  'boolean' ,  prop ) ; 
@@ -208,8 +205,10 @@ function getContextOptions(options) {
208205        wasm : options . contextCodeGeneration . wasm , 
209206      }  : undefined , 
210207    } ; 
211-     validateString ( contextOptions . name ,  'options.contextName' ) ; 
212-     validateString ( contextOptions . origin ,  'options.contextOrigin' ) ; 
208+     if  ( contextOptions . name  !==  undefined ) 
209+       validateString ( contextOptions . name ,  'options.contextName' ) ; 
210+     if  ( contextOptions . origin  !==  undefined ) 
211+       validateString ( contextOptions . origin ,  'options.contextOrigin' ) ; 
213212    if  ( contextOptions . codeGeneration )  { 
214213      validateBool ( contextOptions . codeGeneration . strings , 
215214                   'options.contextCodeGeneration.strings' ) ; 
@@ -244,10 +243,9 @@ function createContext(sandbox = {}, options = {}) {
244243    codeGeneration
245244  }  =  options ; 
246245
247-   if  ( typeof  name  !==  'string' )  { 
248-     throw  new  ERR_INVALID_ARG_TYPE ( 'options.name' ,  'string' ,  options . name ) ; 
249-   } 
250-   validateString ( origin ,  'options.origin' ) ; 
246+   validateString ( name ,  'options.name' ) ; 
247+   if  ( origin  !==  undefined ) 
248+     validateString ( origin ,  'options.origin' ) ; 
251249  validateObject ( codeGeneration ,  'options.codeGeneration' ) ; 
252250
253251  let  strings  =  true ; 
@@ -319,18 +317,12 @@ function runInThisContext(code, options) {
319317} 
320318
321319function  compileFunction ( code ,  params ,  options  =  { } )  { 
322-   if  ( typeof  code  !==  'string' )  { 
323-     throw  new  ERR_INVALID_ARG_TYPE ( 'code' ,  'string' ,  code ) ; 
324-   } 
320+   validateString ( code ,  'code' ) ; 
325321  if  ( params  !==  undefined )  { 
326322    if  ( ! ArrayIsArray ( params ) )  { 
327323      throw  new  ERR_INVALID_ARG_TYPE ( 'params' ,  'Array' ,  params ) ; 
328324    } 
329-     ArrayForEach ( params ,  ( param ,  i )  =>  { 
330-       if  ( typeof  param  !==  'string' )  { 
331-         throw  new  ERR_INVALID_ARG_TYPE ( `params[${ i }  ,  'string' ,  param ) ; 
332-       } 
333-     } ) ; 
325+     ArrayForEach ( params ,  ( param ,  i )  =>  validateString ( param ,  `params[${ i }  ) ) ; 
334326  } 
335327
336328  const  { 
@@ -343,9 +335,7 @@ function compileFunction(code, params, options = {}) {
343335    contextExtensions =  [ ] , 
344336  }  =  options ; 
345337
346-   if  ( typeof  filename  !==  'string' )  { 
347-     throw  new  ERR_INVALID_ARG_TYPE ( 'options.filename' ,  'string' ,  filename ) ; 
348-   } 
338+   validateString ( filename ,  'options.filename' ) ; 
349339  validateUint32 ( columnOffset ,  'options.columnOffset' ) ; 
350340  validateUint32 ( lineOffset ,  'options.lineOffset' ) ; 
351341  if  ( cachedData  !==  undefined  &&  ! isArrayBufferView ( cachedData ) )  { 
0 commit comments