@typegoose/typegoose
Version:
Define Mongoose models using TypeScript classes
59 lines • 4.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isDocument = isDocument;
exports.isDocumentArray = isDocumentArray;
exports.isRefType = isRefType;
exports.isRefTypeArray = isRefTypeArray;
exports.isModel = isModel;
const tslib_1 = require("tslib");
const mongoose_1 = tslib_1.__importDefault(require("mongoose"));
const utils_1 = require("./internal/utils");
const logSettings_1 = require("./logSettings");
/**
* Check if the given document is populated
* @param doc The Ref with uncertain type
*/
function isDocument(doc) {
return doc instanceof mongoose_1.default.Model;
}
function isDocumentArray(docs) {
// its "any" & "unknown" because this is not listed as an overload
return Array.isArray(docs) && docs.every((v) => isDocument(v));
}
/**
* Check if the document is of type "refType"
* @param doc The Ref with uncretain type
* @param refType The Expected Reference Type (this is required because this type is only known at compile time, not at runtime)
*/
function isRefType(doc, refType) {
logSettings_1.logger.info('isRefType:', refType);
if ((0, utils_1.isNullOrUndefined)(doc) || isDocument(doc)) {
return false;
}
// this "ObjectId" test is in the front, because its the most common - to lower resource use
if (refType === mongoose_1.default.Types.ObjectId) {
return doc instanceof mongoose_1.default.Types.ObjectId;
}
if (refType === String) {
return typeof doc === 'string';
}
if (refType === Number) {
return typeof doc === 'number';
}
if (refType === Buffer || refType === mongoose_1.default.Types.Buffer) {
return doc instanceof Buffer;
}
return false;
}
function isRefTypeArray(docs, refType) {
// its "any" & "unknown" because this is not listed as an overload
return Array.isArray(docs) && docs.every((v) => isRefType(v, refType));
}
/**
* Check if the input is a mongoose.Model
* @param model The Value to check
*/
function isModel(model) {
return model?.prototype instanceof mongoose_1.default.Model;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWd1YXJkcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlZ3VhcmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBU0EsZ0NBRUM7QUFnQkQsMENBR0M7QUFTRCw4QkFzQkM7QUFzQkQsd0NBR0M7QUFNRCwwQkFFQzs7QUE5RkQsZ0VBQWdDO0FBQ2hDLDRDQUFxRDtBQUNyRCwrQ0FBdUM7QUFHdkM7OztHQUdHO0FBQ0gsU0FBZ0IsVUFBVSxDQUF1QixHQUFpQztJQUNoRixPQUFPLEdBQUcsWUFBWSxrQkFBUSxDQUFDLEtBQUssQ0FBQztBQUN2QyxDQUFDO0FBZ0JELFNBQWdCLGVBQWUsQ0FBQyxJQUF3QztJQUN0RSxrRUFBa0U7SUFDbEUsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLENBQUM7QUFJRDs7OztHQUlHO0FBQ0gsU0FBZ0IsU0FBUyxDQUF1QixHQUFpQyxFQUFFLE9BQXdCO0lBQ3pHLG9CQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVuQyxJQUFJLElBQUEseUJBQWlCLEVBQUMsR0FBRyxDQUFDLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDOUMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsNEZBQTRGO0lBQzVGLElBQUksT0FBTyxLQUFLLGtCQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3hDLE9BQU8sR0FBRyxZQUFZLGtCQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsSUFBSSxPQUFPLEtBQUssTUFBTSxFQUFFLENBQUM7UUFDdkIsT0FBTyxPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUM7SUFDakMsQ0FBQztJQUNELElBQUksT0FBTyxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDO0lBQ2pDLENBQUM7SUFDRCxJQUFJLE9BQU8sS0FBSyxNQUFNLElBQUksT0FBTyxLQUFLLGtCQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzVELE9BQU8sR0FBRyxZQUFZLE1BQU0sQ0FBQztJQUMvQixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBc0JELFNBQWdCLGNBQWMsQ0FBQyxJQUF3QyxFQUFFLE9BQXdCO0lBQy9GLGtFQUFrRTtJQUNsRSxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixPQUFPLENBQUMsS0FBVTtJQUNoQyxPQUFPLEtBQUssRUFBRSxTQUFTLFlBQVksa0JBQVEsQ0FBQyxLQUFLLENBQUM7QUFDcEQsQ0FBQyJ9