Current Folder
This commit is contained in:
1 parent
8b3382289b
commit
cfcada880d
4379 files changed
No files matched your search
-44
@@ -1,44 +0,0 @@
|
||||
'use strict'
|
||||
const { Buffer } = require('buffer')
|
||||
|
||||
module.exports = function base64 (alphabet) {
|
||||
// The alphabet is only used to know:
|
||||
// 1. If padding is enabled (must contain '=')
|
||||
// 2. If the output must be url-safe (must contain '-' and '_')
|
||||
// 3. If the input of the output function is valid
|
||||
// The alphabets from RFC 4648 are always used.
|
||||
const padding = alphabet.indexOf('=') > -1
|
||||
const url = alphabet.indexOf('-') > -1 && alphabet.indexOf('_') > -1
|
||||
|
||||
return {
|
||||
encode (input) {
|
||||
let output = ''
|
||||
|
||||
if (typeof input === 'string') {
|
||||
output = Buffer.from(input).toString('base64')
|
||||
} else {
|
||||
output = input.toString('base64')
|
||||
}
|
||||
|
||||
if (url) {
|
||||
output = output.replace(/\+/g, '-').replace(/\//g, '_')
|
||||
}
|
||||
|
||||
const pad = output.indexOf('=')
|
||||
if (pad > 0 && !padding) {
|
||||
output = output.substring(0, pad)
|
||||
}
|
||||
|
||||
return output
|
||||
},
|
||||
decode (input) {
|
||||
for (const char of input) {
|
||||
if (alphabet.indexOf(char) < 0) {
|
||||
throw new Error('invalid base64 character')
|
||||
}
|
||||
}
|
||||
|
||||
return Buffer.from(input, 'base64')
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user