UNPKG

@typegoose/typegoose

Version:

Define Mongoose models using TypeScript classes

60 lines 4.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isModel = exports.isRefTypeArray = exports.isRefType = exports.isDocumentArray = exports.isDocument = void 0; 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; } exports.isDocument = isDocument; function isDocumentArray(docs) { // its "any" & "unknown" because this is not listed as an overload return Array.isArray(docs) && docs.every((v) => isDocument(v)); } exports.isDocumentArray = isDocumentArray; /** * 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; } exports.isRefType = isRefType; 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)); } exports.isRefTypeArray = isRefTypeArray; /** * 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; } exports.isModel = isModel; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWd1YXJkcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlZ3VhcmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxnRUFBZ0M7QUFDaEMsNENBQXFEO0FBQ3JELCtDQUF1QztBQUd2Qzs7O0dBR0c7QUFDSCxTQUFnQixVQUFVLENBQXVCLEdBQWlDO0lBQ2hGLE9BQU8sR0FBRyxZQUFZLGtCQUFRLENBQUMsS0FBSyxDQUFDO0FBQ3ZDLENBQUM7QUFGRCxnQ0FFQztBQWdCRCxTQUFnQixlQUFlLENBQUMsSUFBd0M7SUFDdEUsa0VBQWtFO0lBQ2xFLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRSxDQUFDO0FBSEQsMENBR0M7QUFJRDs7OztHQUlHO0FBQ0gsU0FBZ0IsU0FBUyxDQUF1QixHQUFpQyxFQUFFLE9BQXdCO0lBQ3pHLG9CQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVuQyxJQUFJLElBQUEseUJBQWlCLEVBQUMsR0FBRyxDQUFDLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDOUMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsNEZBQTRGO0lBQzVGLElBQUksT0FBTyxLQUFLLGtCQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3hDLE9BQU8sR0FBRyxZQUFZLGtCQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsSUFBSSxPQUFPLEtBQUssTUFBTSxFQUFFLENBQUM7UUFDdkIsT0FBTyxPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUM7SUFDakMsQ0FBQztJQUNELElBQUksT0FBTyxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDO0lBQ2pDLENBQUM7SUFDRCxJQUFJLE9BQU8sS0FBSyxNQUFNLElBQUksT0FBTyxLQUFLLGtCQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzVELE9BQU8sR0FBRyxZQUFZLE1BQU0sQ0FBQztJQUMvQixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBdEJELDhCQXNCQztBQXNCRCxTQUFnQixjQUFjLENBQUMsSUFBd0MsRUFBRSxPQUF3QjtJQUMvRixrRUFBa0U7SUFDbEUsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN6RSxDQUFDO0FBSEQsd0NBR0M7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixPQUFPLENBQUMsS0FBVTtJQUNoQyxPQUFPLEtBQUssRUFBRSxTQUFTLFlBQVksa0JBQVEsQ0FBQyxLQUFLLENBQUM7QUFDcEQsQ0FBQztBQUZELDBCQUVDIn0=