63 lines
1.4 KiB
JavaScript
63 lines
1.4 KiB
JavaScript
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true,
|
|
});
|
|
exports.planQuery = planQuery;
|
|
function planQuery({
|
|
since,
|
|
directoryFilters,
|
|
extensions,
|
|
includeSha1,
|
|
includeSymlinks,
|
|
}) {
|
|
const fields = ["name", "exists", "mtime_ms", "size"];
|
|
if (includeSha1) {
|
|
fields.push("content.sha1hex");
|
|
}
|
|
if (includeSymlinks) {
|
|
fields.push("type");
|
|
}
|
|
const allOfTerms = includeSymlinks
|
|
? [
|
|
[
|
|
"anyof",
|
|
["allof", ["type", "f"], ["suffix", extensions]],
|
|
["type", "l"],
|
|
],
|
|
]
|
|
: [["type", "f"]];
|
|
const query = {
|
|
fields,
|
|
};
|
|
let queryGenerator;
|
|
if (since != null) {
|
|
query.since = since;
|
|
queryGenerator = "since";
|
|
if (directoryFilters.length > 0) {
|
|
allOfTerms.push([
|
|
"anyof",
|
|
...directoryFilters.map((dir) => ["dirname", dir]),
|
|
]);
|
|
}
|
|
} else if (directoryFilters.length > 0) {
|
|
query.glob = directoryFilters.map((directory) => `${directory}/**`);
|
|
query.glob_includedotfiles = true;
|
|
queryGenerator = "glob";
|
|
} else if (!includeSymlinks) {
|
|
query.suffix = extensions;
|
|
queryGenerator = "suffix";
|
|
} else {
|
|
queryGenerator = "all";
|
|
}
|
|
if (!includeSymlinks && queryGenerator !== "suffix") {
|
|
allOfTerms.push(["suffix", extensions]);
|
|
}
|
|
query.expression =
|
|
allOfTerms.length === 1 ? allOfTerms[0] : ["allof", ...allOfTerms];
|
|
return {
|
|
query,
|
|
queryGenerator,
|
|
};
|
|
}
|