| 1234567891011121314151617181920212223242526272829303132333435363738 | import util from 'node:util'import crypto from 'node:crypto'import passportJWT from 'passport-jwt'const randomBytes = util.promisify(crypto.randomBytes)export function sanitizeCommitUser (user) {  // let wlist = new RegExp('[^a-zA-Z0-9-_.\',& ' + appdata.regex.cjk + appdata.regex.arabic + ']', 'g')  // return {  //   name: _.chain(user.name).replace(wlist, '').trim().value(),  //   email: appconfig.git.showUserEmail ? user.email : appconfig.git.serverEmail  // }}/** * Generate a random token * * @param {any} length * @returns */export async function generateToken (length) {  return (await randomBytes(length)).toString('hex')}export const extractJWT = passportJWT.ExtractJwt.fromExtractors([  passportJWT.ExtractJwt.fromAuthHeaderAsBearerToken(),  (req) => {    let token = null    if (req && req.cookies) {      token = req.cookies['jwt']    }    // Force uploads to use Auth headers    if (req.path.toLowerCase() === '/u') {      return null    }    return token  }])
 |