Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
var lastSeq = opts.since || 0;
var called = 0;
var streamOpts = {
reverse: descending
};
var limit;
if ('limit' in opts && opts.limit > 0) {
limit = opts.limit;
}
if (!streamOpts.reverse) {
streamOpts.start = formatSeq(opts.since || 0);
}
var docIds = opts.doc_ids && new pouchdbCollections.Set(opts.doc_ids);
var filter = pouchdbUtils.filterChange(opts);
var docIdsToMetadata = new pouchdbCollections.Map();
var returnDocs;
if ('return_docs' in opts) {
returnDocs = opts.return_docs;
} else if ('returnDocs' in opts) {
// TODO: Remove 'returnDocs' in favor of 'return_docs' in a future release
returnDocs = opts.returnDocs;
} else {
returnDocs = true;
}
function complete() {
opts.done = true;
if (returnDocs && opts.limit) {
/* istanbul ignore if */
if (opts.limit < results.length) {
uniqBatches.push(operation);
}
db.batch(uniqBatches, callback);
};
var DOC_STORE = 'document-store';
var BY_SEQ_STORE = 'by-sequence';
var ATTACHMENT_STORE = 'attach-store';
var BINARY_STORE = 'attach-binary-store';
var LOCAL_STORE = 'local-store';
var META_STORE = 'meta-store';
// leveldb barks if we try to open a db multiple times
// so we cache opened connections here for initstore()
var dbStores = new pouchdbCollections.Map();
// store the value of update_seq in the by-sequence store the key name will
// never conflict, since the keys in the by-sequence store are integers
var UPDATE_SEQ_KEY = '_local_last_update_seq';
var DOC_COUNT_KEY = '_local_doc_count';
var UUID_KEY = '_local_uuid';
var MD5_PREFIX = 'md5-';
var safeJsonEncoding = {
encode: safeJsonStringify,
decode: safeJsonParse,
buffer: false,
type: 'cheap-json'
};
var db
var name = opts.name
// TODO: this is undocumented and unused probably
/* istanbul ignore else */
if (typeof opts.createIfMissing === 'undefined') {
opts.createIfMissing = true
}
var leveldown = opts.db
var dbStore
var leveldownName = functionName(leveldown)
if (dbStores.has(leveldownName)) {
dbStore = dbStores.get(leveldownName)
} else {
dbStore = new Map()
dbStores.set(leveldownName, dbStore)
}
if (dbStore.has(name)) {
db = dbStore.get(name)
afterDBCreated()
} else {
dbStore.set(name, sublevel(levelup(name, opts, function (err) {
/* istanbul ignore if */
if (err) {
dbStore.delete(name)
return callback(err)
}
db = dbStore.get(name)
db._docCount = -1
db._queue = new Deque()
afterDBCreated()
function bulkGet(db, opts, callback) {
var requests = opts.docs;
// consolidate into one request per doc if possible
var requestsById = new pouchdbCollections.Map();
requests.forEach(function (request) {
if (requestsById.has(request.id)) {
requestsById.get(request.id).push(request);
} else {
requestsById.set(request.id, [request]);
}
});
var numDocs = requestsById.size;
var numDone = 0;
var perDocResults = new Array(numDocs);
function collapseResultsAndFinish() {
var results = [];
perDocResults.forEach(function (res) {
res.docs.forEach(function (info) {
var lastSeq = opts.since || 0
var called = 0
var streamOpts = {
reverse: descending
}
var limit
if ('limit' in opts && opts.limit > 0) {
limit = opts.limit
}
if (!streamOpts.reverse) {
streamOpts.start = formatSeq(opts.since || 0)
}
var docIds = opts.doc_ids && new Set(opts.doc_ids)
var filter = filterChange(opts)
var docIdsToMetadata = new Map()
var returnDocs
if ('return_docs' in opts) {
returnDocs = opts.return_docs
} else if ('returnDocs' in opts) {
// TODO: Remove 'returnDocs' in favor of 'return_docs' in a future release
returnDocs = opts.returnDocs
} else {
returnDocs = true
}
function complete () {
opts.done = true
if (returnDocs && opts.limit) {
/* istanbul ignore if */
if (opts.limit < results.length) {
var db;
var name = opts.name;
// TODO: this is undocumented and unused probably
/* istanbul ignore else */
if (typeof opts.createIfMissing === 'undefined') {
opts.createIfMissing = true;
}
var leveldown = opts.db;
var dbStore;
var leveldownName = functionName(leveldown);
if (dbStores.has(leveldownName)) {
dbStore = dbStores.get(leveldownName);
} else {
dbStore = new Map();
dbStores.set(leveldownName, dbStore);
}
if (dbStore.has(name)) {
db = dbStore.get(name);
afterDBCreated();
} else {
dbStore.set(name, sublevel(levelup(name, opts, function (err) {
/* istanbul ignore if */
if (err) {
dbStore.delete(name);
return callback(err);
}
db = dbStore.get(name);
db._docCount = -1;
db._queue = new Deque();
/* istanbul ignore else */
function setUpEventEmitter(Pouch) {
Object.keys(EE.prototype).forEach(function (key) {
if (typeof EE.prototype[key] === 'function') {
Pouch[key] = eventEmitter[key].bind(eventEmitter);
}
});
// these are created in constructor.js, and allow us to notify each DB with
// the same name that it was destroyed, via the constructor object
var destructListeners = Pouch._destructionListeners = new Map();
Pouch.on('destroyed', function onConstructorDestroyed(name) {
destructListeners.get(name).forEach(function (callback) {
callback();
});
destructListeners.delete(name);
});
}
var possiblyOrphanedAttachments = Object.keys(digestMap);
if (!possiblyOrphanedAttachments.length) {
return finish();
}
var numDone = 0;
var overallErr;
function checkDone(err) {
/* istanbul ignore if */
if (err) {
overallErr = err;
}
if (++numDone === possiblyOrphanedAttachments.length) {
finish(overallErr);
}
}
var refsToDelete = new pouchdbCollections.Map();
revs.forEach(function (rev) {
refsToDelete.set(docId + '@' + rev, true);
});
possiblyOrphanedAttachments.forEach(function (digest) {
txn.get(stores.attachmentStore, digest, function (err, attData) {
/* istanbul ignore if */
if (err) {
if (err.name === 'NotFoundError') {
return checkDone();
} else {
return checkDone(err);
}
}
var refs = Object.keys(attData.refs || {}).filter(function (ref) {
return !refsToDelete.has(ref);
});
var descending = opts.descending
var results = []
var lastSeq = opts.since || 0
var called = 0
var streamOpts = {
reverse: descending
}
var limit
if ('limit' in opts && opts.limit > 0) {
limit = opts.limit
}
if (!streamOpts.reverse) {
streamOpts.start = formatSeq(opts.since || 0)
}
var docIds = opts.doc_ids && new Set(opts.doc_ids)
var filter = filterChange(opts)
var docIdsToMetadata = new Map()
var returnDocs
if ('return_docs' in opts) {
returnDocs = opts.return_docs
} else if ('returnDocs' in opts) {
// TODO: Remove 'returnDocs' in favor of 'return_docs' in a future release
returnDocs = opts.returnDocs
} else {
returnDocs = true
}
function complete () {
opts.done = true
if (returnDocs && opts.limit) {
var descending = opts.descending;
var results = [];
var lastSeq = opts.since || 0;
var called = 0;
var streamOpts = {
reverse: descending
};
var limit;
if ('limit' in opts && opts.limit > 0) {
limit = opts.limit;
}
if (!streamOpts.reverse) {
streamOpts.start = formatSeq(opts.since || 0);
}
var docIds = opts.doc_ids && new pouchdbCollections.Set(opts.doc_ids);
var filter = pouchdbUtils.filterChange(opts);
var docIdsToMetadata = new pouchdbCollections.Map();
var returnDocs;
if ('return_docs' in opts) {
returnDocs = opts.return_docs;
} else if ('returnDocs' in opts) {
// TODO: Remove 'returnDocs' in favor of 'return_docs' in a future release
returnDocs = opts.returnDocs;
} else {
returnDocs = true;
}
function complete() {
opts.done = true;
if (returnDocs && opts.limit) {