kura
Version:
The FileSystem API abstraction library.
77 lines • 2.28 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.textToBase64 = exports.textToUint8Array = exports.textToBlob = exports.base64ToText = exports.toText = void 0;
const BinaryConverter_1 = require("./BinaryConverter");
const FileSystemConstants_1 = require("./FileSystemConstants");
const textEncoder = new TextEncoder();
const textDecoder = new TextDecoder();
async function blobToText(blob) {
if (blob.size === 0) {
return "";
}
const text = await new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onerror = (ev) => {
reject(reader.error || ev);
};
reader.onload = () => {
resolve(reader.result);
};
reader.readAsText(blob);
});
return text;
}
async function toText(content) {
if (!content) {
return "";
}
let text;
if (typeof content === "string") {
text = await base64ToText(content);
}
else if (content instanceof Blob) {
text = await blobToText(content);
}
else if (ArrayBuffer.isView(content)) {
text = textDecoder.decode(content);
}
else {
text = textDecoder.decode(new Uint8Array(content));
}
return text;
}
exports.toText = toText;
async function base64ToText(base64) {
if (!base64) {
return "";
}
const buffer = await (0, BinaryConverter_1.toArrayBuffer)(base64);
const text = await toText(buffer);
return text;
}
exports.base64ToText = base64ToText;
function textToBlob(text, type = FileSystemConstants_1.DEFAULT_CONTENT_TYPE) {
if (!text) {
return new Blob([], FileSystemConstants_1.DEFAULT_BLOB_PROPS);
}
return new Blob([text], { type });
}
exports.textToBlob = textToBlob;
function textToUint8Array(text) {
if (!text) {
return new Uint8Array(new ArrayBuffer(0));
}
const u8 = textEncoder.encode(text);
return u8;
}
exports.textToUint8Array = textToUint8Array;
async function textToBase64(text) {
if (!text) {
return "";
}
const buffer = textEncoder.encode(text);
const base64 = await (0, BinaryConverter_1.toBase64)(buffer);
return base64;
}
exports.textToBase64 = textToBase64;
//# sourceMappingURL=TextConverter.js.map