simple-pure-utils
Version:
Funciones puras para manipulación de objetos, arreglos, promesas y observables
86 lines • 6.6 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.blobToString = exports.stringToBlob = exports.base64ToBlob = exports.stringToBase64 = exports.base64ToString = exports.blobToBase64 = void 0;
/**Convierte un Blob a una cadena base64 */
function blobToBase64(archivo) {
return new Promise(resolve => {
const reader = new FileReader();
reader.onload = function () {
const dataUrl = reader.result;
if (typeof dataUrl != "string") {
throw new Error("No se pudo convertir a base64 ya que el FileReader devolvio un dataUrl que no es string");
}
//Caso especial, si el blob viene vacio esto devuelve "data:"
if (dataUrl == "data:")
resolve("");
const base64Prefix = "base64,";
const base64 = dataUrl.substring(dataUrl.indexOf(base64Prefix) + base64Prefix.length);
resolve(base64);
};
reader.readAsDataURL(archivo);
});
}
exports.blobToBase64 = blobToBase64;
/**Decodifica una cadena a base64 */
function base64ToString(base64) {
if (typeof (atob) != "undefined") {
return atob(base64);
}
else {
return Buffer.from(base64, 'base64').toString();
}
}
exports.base64ToString = base64ToString;
/**Codifica una cadena a base64 */
function stringToBase64(str) {
if (typeof (btoa) != "undefined") {
return btoa(str);
}
else {
return Buffer.from(str).toString('base64');
}
}
exports.stringToBase64 = stringToBase64;
/**Convierte una cadena base64 a un blob */
function base64ToBlob(base64, contentType) {
//Este codigo fue tomado de
//http://stackoverflow.com/questions/16245767/creating-a-blob-from-a-base64-string-in-javascript#16245768
contentType = contentType || '';
var byteCharacters = base64ToString(base64);
return stringToBlob(byteCharacters, contentType);
}
exports.base64ToBlob = base64ToBlob;
/**Convierte una cadena binaria en un blob */
function stringToBlob(value, contentType) {
const sliceSize = 512;
const byteArrays = [];
for (let offset = 0; offset < value.length; offset += sliceSize) {
const slice = value.slice(offset, offset + sliceSize);
const byteNumbers = new Array(slice.length);
for (let i = 0; i < slice.length; i++) {
byteNumbers[i] = slice.charCodeAt(i);
}
var byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
}
var blob = new Blob(byteArrays, { type: contentType });
return blob;
}
exports.stringToBlob = stringToBlob;
/**Convierte un blob a una cadena */
function blobToString(value) {
const reader = new FileReader();
return new Promise((resolve, reject) => {
reader.onload = function () {
if (typeof reader.result == "string") {
resolve(reader.result);
}
else {
reject(new Error("No se pudo convertir a base64 ya que el FileReader devolvio un dataUrl que no es string"));
}
};
reader.readAsText(value);
});
}
exports.blobToString = blobToString;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZTY0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jhc2U2NC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBMkM7QUFDM0MsU0FBZ0IsWUFBWSxDQUFDLE9BQWE7SUFDdEMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUN6QixNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxNQUFNLEdBQUc7WUFDWixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQzlCLElBQUksT0FBTyxPQUFPLElBQUksUUFBUSxFQUFFO2dCQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLHlGQUF5RixDQUFDLENBQUM7YUFDOUc7WUFFRCw2REFBNkQ7WUFDN0QsSUFBSSxPQUFPLElBQUksT0FBTztnQkFDbEIsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRWhCLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQTtZQUM5QixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ3JGLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQixDQUFDLENBQUM7UUFDRixNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQW5CRCxvQ0FtQkM7QUFFRCxvQ0FBb0M7QUFDcEMsU0FBZ0IsY0FBYyxDQUFDLE1BQWM7SUFDekMsSUFBRyxPQUFNLENBQUMsSUFBSSxDQUFDLElBQUksV0FBVyxFQUFFO1FBQzVCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ3ZCO1NBQU07UUFDSCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFD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
;