| Server IP : 159.203.156.69 / Your IP : 216.73.216.28 Web Server : nginx/1.24.0 System : Linux main-ubuntu 6.8.0-71-generic #71-Ubuntu SMP PREEMPT_DYNAMIC Tue Jul 22 16:52:38 UTC 2025 x86_64 User : root ( 0) PHP Version : 8.3.6 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /usr/lib/node_modules/pm2/modules/pm2-io-bpm/utils/ |
Upload File : |
'use strict'
class Autocast {
constructor () {
this.commonStrings = {
'true': true,
'false': false,
'undefined': undefined,
'null': null,
'NaN': NaN
}
}
process (key, value, o) {
if (typeof(value) === 'object') return
o[key] = this._cast(value)
}
traverse (o, func) {
for (let i in o) {
func.apply(this, [i, o[i], o])
if (o[i] !== null && typeof(o[i]) === 'object') {
// going on step down in the object tree!!
this.traverse(o[i], func)
}
}
}
/**
* Given a value, try and cast it
*/
autocast (s) {
if (typeof(s) === 'object') {
this.traverse(s, this.process)
return s
}
return this._cast(s)
}
_cast (s) {
let key
// Don't cast Date objects
if (s instanceof Date) return s
if (typeof s === 'boolean') return s
// Try to cast it to a number
if (!isNaN(s)) return Number(s)
// Try to make it a common string
for (key in this.commonStrings) {
if (s === key) return this.commonStrings[key]
}
// Give up
return s
}
}
module.exports = Autocast