53 lines
1.5 KiB
JavaScript
53 lines
1.5 KiB
JavaScript
/* 基础小工具,可通用于服务端和用户端
|
|
*/
|
|
|
|
const fs = require('fs')
|
|
const path = require('path')
|
|
|
|
module.exports = {
|
|
sleep: (ms) => new Promise((resolve, reject) => setTimeout(resolve, ms)),
|
|
|
|
parseJsonPossible(value) {
|
|
try {
|
|
return JSON.parse(value)
|
|
} catch (e) {
|
|
return value
|
|
}
|
|
},
|
|
|
|
sortAndFilterJson({ fields, entity, exclude = [] } = {}) {
|
|
const newEntity = {}
|
|
for (let key of Object.keys(fields).sort()) {
|
|
if (typeof (entity[key] !== 'undefined') && !Number.isNaN(entity[key]) && entity[key] !== Infinity) {
|
|
newEntity[key] = entity[key]
|
|
}
|
|
}
|
|
for (let exkey of exclude) {
|
|
delete newEntity[exkey]
|
|
}
|
|
return JSON.stringify(newEntity)
|
|
},
|
|
|
|
getDynamicConfig(dynamicConfigFile='ConfigDynamic.js') { // dynamicConfigFile should be absolute or relative to the node process's dir.
|
|
const fullpath = path.join(process.cwd(), dynamicConfigFile)
|
|
if (fs.existsSync(fullpath)) {
|
|
delete require.cache[require.resolve(fullpath)] // delete require.cache[fullpath] 不起作用
|
|
return require(fullpath)
|
|
} else {
|
|
return {}
|
|
}
|
|
},
|
|
|
|
name2port(name='') {
|
|
let port = name.toLowerCase()
|
|
.replace(/[abc]/g, 2)
|
|
.replace(/[def]/g, 3)
|
|
.replace(/[ghi]/g, 4)
|
|
.replace(/[jkl]/g, 5)
|
|
.replace(/[mno]/g, 6)
|
|
.replace(/[pqrs]/g, 7)
|
|
.replace(/[tuv]/g, 8)
|
|
.replace(/[wxyz]/g, 9)
|
|
return parseInt(port)
|
|
}
|
|
} |