Compatibility
njs is created in compliance with ECMAScript 5.1 (strict mode) with some ECMAScript 6 and later extensions. The compliance is still evolving.
Definitions of njs specific properties and methods not compliant with ECMAScript can be found in Reference. Definitions of njs properties and methods compliant with ECMAScript can be found in ECMAScript specification.
What is currently supported
- Boolean values, numbers, strings, objects, arrays, functions, function constructors (0.3.6), and regular expressions
- ES5.1 operators, ES7 exponentiation operators
-
ES5.1 statements:
break
,catch
,continue
,do while
,else
,finally
,for
,for in
,if
,return
,switch
,throw
,try
,var
,while
, labeled statements (0.2.8) -
ES6 statements:
let
(0.6.0),const
(0.6.0),async
(0.7.0),await
(0.7.0) -
Math
properties:-
ES6:
E
,LN10
,LN2
,LOG10E
,LOG2E
,PI
,SQRT1_2
,SQRT2
-
ES6:
-
Math
methods:-
ES6:
abs
,acos
,acosh
,asin
,asinh
,atan
,atan2
,atanh
,cbrt
,ceil
,clz32
,cos
,cosh
,exp
,expm1
,floor
,fround
,hypot
,imul
,log
,log10
,log1p
,log2
,max
,min
,pow
,random
,round
,sign
,sin
,sinh
,sqrt
,tan
,tanh
,trunc
-
ES6:
-
Number
properties:-
ES6:
EPSILON
,MAX_SAFE_INTEGER
,MAX_VALUE
,MIN_SAFE_INTEGER
,MIN_VALUE
,NEGATIVE_INFINITY
,NaN
,POSITIVE_INFINITY
-
ES6:
-
Number
methods:-
ES6:
isFinite
,isInteger
,isNaN
,isSafeInteger
,parseFloat
,parseInt
-
ES6:
-
Number
prototype methods: -
String
methods:-
ES5.1:
fromCharCode
-
ES6:
fromCodePoint
-
ES5.1:
-
String
prototype methods: -
Object
methods:-
ES5.1:
create
(support without properties list),defineProperties
(accessor descriptors support since 0.3.3),defineProperty
(accessor descriptors support since 0.3.3),freeze
,getOwnPropertyDescriptor
,getOwnPropertyDescriptors
(0.3.1),getOwnPropertyNames
(0.3.1),getPrototypeOf
,isExtensible
,isFrozen
,isSealed
,keys
,preventExtensions
,seal
-
ES6:
assign
(0.3.7) -
ES8:
entries
(0.2.7),values
(0.2.7)
-
ES5.1:
-
Object
prototype methods: -
Array
methods:-
ES5.1:
isArray
-
ES6:
of
-
ES13:
from
(0.8.0),
-
ES5.1:
-
Array
prototype methods: -
ArrayBuffer
methods (0.3.8):-
ES6:
isView
-
ES6:
-
ArrayBuffer
prototype methods (0.3.8):-
ES6:
slice
-
ES6:
-
Typed-array
constructors (0.3.8):-
ES6:
Int8Array
,Uint8Array
,Uint8ClampedArray
,Int16Array
,Uint16Array
,Int32Array
,Uint32Array
,Float32Array
,Float64Array
-
ES6:
-
Typed-array
prototype methods (0.3.8):-
ES6:
copyWithin
,every
(0.4.4),fill
,filter
(0.4.4),find
(0.4.4),findIndex
(0.4.4),forEach
(0.4.4),includes
(0.4.4),indexOf
(0.4.4),join
,lastIndexOf
(0.4.4),map
(0.4.4),reduce
(0.4.4),reduceRight
(0.4.4),reverse
(0.4.4),set
,slice
,some
(0.4.4),sort
(0.4.2),subarray
,toString
-
ES13:
toReversed
(0.8.0)toSorted
(0.8.0)
-
ES6:
-
Buffer
methods (0.4.4): -
Buffer
prototype methods: (0.4.4):-
compare
,copy
,equals
,fill
,includes
,indexOf
,lastIndexOf
,readIntBE
,readInt8
,readInt16BE
,readInt32BE
,readIntLE
,readInt8
,readInt16LE
,readInt32LE
,readUIntBE
,readUInt8
,readUInt16BE
,readUInt32BE
,readUIntLE
,readUInt8
,readUInt16LE
,readUInt32LE
,readDoubleBE
,readDoubleLE
,readFloatBE
,readFloatLE
,subarray
,slice
,swap16
,swap32
,swap64
,toJSON
,toString
,write
,writeIntBE
,writeInt8
,writeInt16BE
,writeInt32BE
,writeIntLE
,writeInt8
,writeInt16LE
,writeInt32LE
,writeUIntBE
,writeUInt8
,writeUInt16BE
,writeUInt32BE
,writeUIntLE
,writeUInt8
,writeUInt16LE
,writeUInt32LE
,writeDoubleBE
,writeDoubleLE
,writeFloatBE
,writeFloatLE
-
-
Promise
methods (0.3.8): -
Promise
prototype methods (0.3.8):-
ES6:
catch
,finally
,then
-
ES6:
-
Function
prototype methods:-
ES5.1:
apply
,bind
,call
-
ES5.1:
-
RegExp
prototype accessor properties: -
RegExp
prototype methods: -
RegExp
instance properties:-
lastIndex
-
-
RegExp
ES9 named capture groups (0.3.2) -
DataView
prototype methods (0.4.4):-
ES6:
getFloat32
,getFloat64
,getInt16
,getInt32
,getInt8
,getUint16
,getUint32
,getUint8
,setFloat32
,setFloat64
,setInt16
,setInt32
,setInt8
,setUint16
,setUint32
,setUint8
-
ES6:
-
Date
methods:-
ES5.1:
now
,parse
,UTC
-
ES5.1:
-
Date
prototype methods:-
ES5.1:
getDate
,getDay
,getFullYear
,getHours
,getMilliseconds
,getMinutes
,getMonth
,getSeconds
,getTime
,getTimezoneOffset
,getUTCDate
,getUTCDay
,getUTCFullYear
,getUTCHours
,getUTCMilliseconds
,getUTCMinutes
,getUTCMonth
,getUTCSeconds
,toDateString
,toISOString
,toLocaleDateString
,toLocaleString
,toLocaleTimeString
,toTimeString
,toUTCString
,setDate
,setFullYear
,setHours
,setMinutes
,setMilliseconds
,setMonth
,setSeconds
,setTime
,setUTCDate
,setUTCFullYear
,setUTCHours
,setUTCMilliseconds
,setUTCMinutes
,setUTCMonth
,setUTCSeconds
-
ES5.1:
-
JSON
methods:-
ES5.1:
parse
,stringify
-
ES5.1:
-
Symbol
methods (0.7.6):-
for
,keyfor
-
-
ES5.1
arguments
object (0.2.5) - ES6 rest parameters syntax (without destructuring support) (0.2.7)
-
ES5.1 global functions:
decodeURI
,decodeURIComponent
,encodeURI
,encodeURIComponent
,isFinite
,isNaN
,parseFloat
,parseInt
-
Global functions (0.7.6):
atob
,btoa
-
Error
objects:Error
,EvalError
,InternalError
,RangeError
,ReferenceError
,SyntaxError
,TypeError
,URIError
-
clearTimeout
andsetTimeout
functions (0.2.0) -
File system
methods:fs.accessSync
(0.3.9),fs.appendFileSync
,fs.closeSync
,fs.existsSync
(0.8.2),fs.FileHandle
(0.7.7),fs.fstatSync
(0.7.7),fs.lstatSync
(0.7.1),fs.mkdirSync
(0.4.2),fs.openSync
(0.7.7),fs.promises.open
(0.7.7),fs.readdirSync
(0.4.2),fs.readFileSync
,fs.readSync
(0.7.7),fs.realpathSync
(0.3.9),fs.renameSync
(0.3.4),fs.rmdirSync
(0.4.2),fs.symlinkSync
(0.3.9),fs.unlinkSync
(0.3.9),fs.writeFileSync
fs.writeSync
(0.7.7) -
fs.promises
API (0.3.9), asynchronous version of file system methods. -
Crypto
methods (0.2.0):crypto.createHash
,crypto.createHmac
-
Query String
methods (0.4.3):querystring.decode
,querystring.encode
,querystring.escape
,querystring.parse
,querystring.stringify
,querystring.unescape
-
TextDecoder
methods (0.4.3):encoding
,fatal
,ignoreBOM
,decode
-
TextEncoder
methods (0.4.3):encode
,encodeInto
-
XML
methods (0.7.10):parse
,xml.c14n
,xml.exclusiveC14n
-
zlib
methods (0.7.12):deflateRawSync
,deflateSync
,inflateRawSync
inflateSync
-
ES6 modules support:
default
export
and defaultimport
statements (0.3.0) - ES6 arrow functions (0.3.1)
- Template literals: multiline strings, expression interpolation, nesting templates (0.3.2)
-
Global objects
(0.3.3):
-
console
(0.8.2):error
,info
,log
,time
,timeEnd
,warn
-
crypto
(0.7.0):getRandomValues
,subtle.encrypt
,subtle.decrypt
,subtle.deriveBits
,subtle.deriveKey
,subtle.digest
subtle.exportKey
(0.7.10),subtle.generateKey
(0.7.10),subtle.importKey
,subtle.sign
,subtle.verify
-
globalThis
alias (0.3.8), -
njs
:version
,version_number
(0.7.4),dump
,memoryStats
(0.7.8),on
(0.5.2) -
process
:argv
,env
,pid
,ppid
-
-
nginx object methods:
-
HTTP Request
:r.done
(0.5.2),r.error
,r.finish
,r.internalRedirect
,r.log
,r.return
(0.5.0),r.send
(0.5.0),r.sendBuffer
(0.5.2),r.sendHeader
,r.setReturnValue
(0.7.0),r.subrequest
,r.warn
-
Stream Session
:s.allow
(0.2.4),s.decline
(0.2.4),s.deny
(0.2.4),s.done
(0.2.4),s.error
,s.log
,s.off
(0.2.4),s.on
(0.2.4),s.send
(0.2.4),s.sendDownstream
(0.7.8),s.sendUpstream
(0.7.8),s.setReturnValue
(0.7.0),s.warn
-
Headers
(0.5.1):append
,delete
,get
,getAll
,forEach
,has
,set
-
Request
(0.7.10):arrayBuffer
,headers
,json
,text
-
Response
(0.5.1):arrayBuffer
,headers
,json
,text
-
ngx
(0.5.0):fetch
(0.5.1),log
-
ngx.shared
(0.8.0):add
,clear
,delete
,freeSpace
,get
,has
,incr
,items
,keys
,pop
,replace
,set
,size
-
-
nginx object properties:
-
HTTP Request
:r.args
,r.headersIn
,r.headersOut
,r.httpVersion
,r.internal
,r.method
,r.parent
,r.rawHeadersIn
(0.4.1),r.rawHeadersOut
(0.4.1),r.rawVariables
(0.5.0),r.remoteAddress
,r.requestBuffer
(0.5.0),r.requestText
,r.responseBuffer
(0.5.0),r.responseText
(0.5.0),r.status
,r.uri
,r.variables
(0.2.8) -
Stream Session
:s.remoteAddress
,s.rawVariables
(0.5.0),s.status
(0.5.2),s.variables
(0.2.8) -
Periodic Session
(0.8.1):PeriodicSession.rawVariables
,PeriodicSession.variables
-
Request
(0.7.10):bodyUsed
,cache
,credentials
,method
,mode
,url
-
Response
(0.5.1):bodyUsed
,ok
,redirected
,status
,statusText
,type
,url
-
ngx
(0.5.0):build
(0.8.0),conf_file_path
(0.8.0),conf_prefix
(0.7.8),error_log_path
(0.8.0),prefix
(0.8.0),version
(0.8.0),version_number
(0.8.0),worker_id
(0.8.0) -
ngx.shared
(0.8.0):capacity
,name
,type
-