First commit
This commit is contained in:
97
node_modules/mongodb/lib/sort.js
generated
vendored
Normal file
97
node_modules/mongodb/lib/sort.js
generated
vendored
Normal file
@@ -0,0 +1,97 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.formatSort = void 0;
|
||||
const error_1 = require("./error");
|
||||
/** @internal */
|
||||
function prepareDirection(direction = 1) {
|
||||
const value = `${direction}`.toLowerCase();
|
||||
if (isMeta(direction))
|
||||
return direction;
|
||||
switch (value) {
|
||||
case 'ascending':
|
||||
case 'asc':
|
||||
case '1':
|
||||
return 1;
|
||||
case 'descending':
|
||||
case 'desc':
|
||||
case '-1':
|
||||
return -1;
|
||||
default:
|
||||
throw new error_1.MongoInvalidArgumentError(`Invalid sort direction: ${JSON.stringify(direction)}`);
|
||||
}
|
||||
}
|
||||
/** @internal */
|
||||
function isMeta(t) {
|
||||
return typeof t === 'object' && t != null && '$meta' in t && typeof t.$meta === 'string';
|
||||
}
|
||||
/** @internal */
|
||||
function isPair(t) {
|
||||
if (Array.isArray(t) && t.length === 2) {
|
||||
try {
|
||||
prepareDirection(t[1]);
|
||||
return true;
|
||||
}
|
||||
catch (e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
function isDeep(t) {
|
||||
return Array.isArray(t) && Array.isArray(t[0]);
|
||||
}
|
||||
function isMap(t) {
|
||||
return t instanceof Map && t.size > 0;
|
||||
}
|
||||
/** @internal */
|
||||
function pairToMap(v) {
|
||||
return new Map([[`${v[0]}`, prepareDirection([v[1]])]]);
|
||||
}
|
||||
/** @internal */
|
||||
function deepToMap(t) {
|
||||
const sortEntries = t.map(([k, v]) => [`${k}`, prepareDirection(v)]);
|
||||
return new Map(sortEntries);
|
||||
}
|
||||
/** @internal */
|
||||
function stringsToMap(t) {
|
||||
const sortEntries = t.map(key => [`${key}`, 1]);
|
||||
return new Map(sortEntries);
|
||||
}
|
||||
/** @internal */
|
||||
function objectToMap(t) {
|
||||
const sortEntries = Object.entries(t).map(([k, v]) => [
|
||||
`${k}`,
|
||||
prepareDirection(v)
|
||||
]);
|
||||
return new Map(sortEntries);
|
||||
}
|
||||
/** @internal */
|
||||
function mapToMap(t) {
|
||||
const sortEntries = Array.from(t).map(([k, v]) => [
|
||||
`${k}`,
|
||||
prepareDirection(v)
|
||||
]);
|
||||
return new Map(sortEntries);
|
||||
}
|
||||
/** converts a Sort type into a type that is valid for the server (SortForCmd) */
|
||||
function formatSort(sort, direction) {
|
||||
if (sort == null)
|
||||
return undefined;
|
||||
if (typeof sort === 'string')
|
||||
return new Map([[sort, prepareDirection(direction)]]);
|
||||
if (typeof sort !== 'object') {
|
||||
throw new error_1.MongoInvalidArgumentError(`Invalid sort format: ${JSON.stringify(sort)} Sort must be a valid object`);
|
||||
}
|
||||
if (!Array.isArray(sort)) {
|
||||
return isMap(sort) ? mapToMap(sort) : Object.keys(sort).length ? objectToMap(sort) : undefined;
|
||||
}
|
||||
if (!sort.length)
|
||||
return undefined;
|
||||
if (isDeep(sort))
|
||||
return deepToMap(sort);
|
||||
if (isPair(sort))
|
||||
return pairToMap(sort);
|
||||
return stringsToMap(sort);
|
||||
}
|
||||
exports.formatSort = formatSort;
|
||||
//# sourceMappingURL=sort.js.map
|
Reference in New Issue
Block a user