blob: 0a6c93c76028b559cc00ef55634f84036dfd7b69 [file] [log] [blame]
'use strict';
import { createError, IDB_ERROR } from 'pouchdb-errors';
import { btoa, readAsBinaryString } from 'pouchdb-binary-utils';
var DOC_STORE = 'docs';
var META_STORE = 'meta';
function idbError(callback) {
return function (evt) {
var message = 'unknown_error';
if (evt.target && evt.target.error) {
message = evt.target.error.name || evt.target.error.message;
}
callback(createError(IDB_ERROR, message, evt.type));
};
}
function processAttachment(name, src, doc, isBinary) {
delete doc._attachments[name].stub;
if (isBinary) {
doc._attachments[name].data =
src.attachments[doc._attachments[name].digest].data;
return Promise.resolve();
}
return new Promise(function (resolve) {
var data = src.attachments[doc._attachments[name].digest].data;
readAsBinaryString(data, function (binString) {
doc._attachments[name].data = btoa(binString);
delete doc._attachments[name].length;
resolve();
});
});
}
function openTransactionSafely(idb, stores, mode) {
try {
return {
txn: idb.transaction(stores, mode)
};
} catch (err) {
return {
error: err
};
}
}
export {
DOC_STORE,
META_STORE,
idbError,
processAttachment,
openTransactionSafely
};