@signaldb/core
Version:
SignalDB is a client-side database that provides a simple MongoDB-like interface to the data with first-class typescript support to achieve an optimistic UI. Data persistence can be achieved by using storage providers that store the data through a JSON in
30 lines (29 loc) • 1.02 kB
JavaScript
;
const isFieldExpression = require("./index.cjs27.js");
const serializeValue = require("./index.cjs16.js");
function getMatchingKeys(field, selector) {
const result = { include: null, exclude: null };
const fieldSelector = selector[field];
if (fieldSelector instanceof RegExp)
return result;
if (fieldSelector == null)
return result;
if (isFieldExpression(fieldSelector)) {
if (fieldSelector.$ne != null) {
result.exclude = [serializeValue(fieldSelector.$ne)];
return result;
}
if (Array.isArray(fieldSelector.$in) && fieldSelector.$in.length > 0) {
result.include = fieldSelector.$in.map(serializeValue);
return result;
}
if (Array.isArray(fieldSelector.$nin) && fieldSelector.$nin.length > 0) {
result.exclude = fieldSelector.$nin.map(serializeValue);
return result;
}
return { include: null, exclude: null };
}
result.include = [serializeValue(fieldSelector)];
return result;
}
module.exports = getMatchingKeys;