Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | 2x 2x 2x 2x 6x 6x 6x 6x 2x 2x 2x 2x 2x 2x 2x 176x 176x 176x 176x 176x 176x 176x 176x | 'use strict'
const crypto = require('crypto')
const fs = require('fs')
const base64url = require('base64url')
exports.generateToken = ({ length = 48, prefix = 'TCKT' }) =>
new Promise((resolve, reject) => {
crypto.randomBytes(length, (err, buffer) => {
Iif (err) {
reject(err)
} else {
resolve(prefix + '.' + base64url(buffer))
}
})
})
exports.readFile = filename =>
new Promise((resolve, reject) => {
fs.readFile(filename, (err, data) => {
resolve(err ? undefined : data)
})
})
exports.readJSON = filename =>
exports.readFile(filename)
.then(data => data ? JSON.parse(data) : undefined)
exports.promisifyClass = object => {
const locals = {}
return new Proxy(object, {
set: (target, prop, value) => {
locals[prop] = value
return true
},
get: (target, prop, receiver) => {
Iif (locals[prop]) return locals[prop]
Iif (typeof object[prop] !== 'function') return object[prop]
return (...args) => new Promise((resolve, reject) => {
object[prop](...args, (err, ...results) => {
Iif (err) {
reject(err)
} else {
switch (results.length) {
case 0:
resolve()
break
case 1:
resolve(results[0])
break
default:
resolve(results)
break
}
}
})
})
}
})
}
|