sqlocal
Version:
SQLocal makes it easy to run SQLite3 in the browser, backed by the origin private file system.
43 lines • 1.49 kB
JavaScript
export async function normalizeDatabaseFile(dbFile, convertStreamTo) {
let bufferOrStream;
if (dbFile instanceof Blob) {
bufferOrStream = dbFile.stream();
}
else {
bufferOrStream = dbFile;
}
if (bufferOrStream instanceof ReadableStream && convertStreamTo) {
const stream = bufferOrStream;
const reader = stream.getReader();
switch (convertStreamTo) {
case 'callback':
return async () => {
const chunk = await reader.read();
return chunk.value;
};
case 'buffer':
const chunks = [];
let streamDone = false;
while (!streamDone) {
const chunk = await reader.read();
if (chunk.value)
chunks.push(chunk.value);
streamDone = chunk.done;
}
const arrayLength = chunks.reduce((length, chunk) => {
return length + chunk.length;
}, 0);
const buffer = new Uint8Array(arrayLength);
let offset = 0;
chunks.forEach((chunk) => {
buffer.set(chunk, offset);
offset += chunk.length;
});
return buffer.buffer;
}
}
else {
return bufferOrStream;
}
}
//# sourceMappingURL=normalize-database-file.js.map