1 | ;
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.isModel = exports.isRefTypeArray = exports.isRefType = exports.isDocumentArray = exports.isDocument = void 0;
|
4 | const mongoose = require("mongoose");
|
5 | const utils_1 = require("./internal/utils");
|
6 | const logSettings_1 = require("./logSettings");
|
7 | /**
|
8 | * Check if the given document is populated
|
9 | * @param doc The Ref with uncertain type
|
10 | */
|
11 | function isDocument(doc) {
|
12 | return doc instanceof mongoose.Model;
|
13 | }
|
14 | exports.isDocument = isDocument;
|
15 | function isDocumentArray(docs) {
|
16 | // its "any" & "unknown" because this is not listed as an overload
|
17 | return Array.isArray(docs) && docs.every((v) => isDocument(v));
|
18 | }
|
19 | exports.isDocumentArray = isDocumentArray;
|
20 | /**
|
21 | * Check if the document is of type "refType"
|
22 | * @param doc The Ref with uncretain type
|
23 | * @param refType The Expected Reference Type (this is required because this type is only known at compile time, not at runtime)
|
24 | */
|
25 | function isRefType(doc, refType) {
|
26 | logSettings_1.logger.info('isRefType:', refType);
|
27 | if ((0, utils_1.isNullOrUndefined)(doc) || isDocument(doc)) {
|
28 | return false;
|
29 | }
|
30 | // this "ObjectId" test is in the front, because its the most common - to lower resource use
|
31 | if (refType === mongoose.Types.ObjectId) {
|
32 | return doc instanceof mongoose.Types.ObjectId;
|
33 | }
|
34 | if (refType === String) {
|
35 | return typeof doc === 'string';
|
36 | }
|
37 | if (refType === Number) {
|
38 | return typeof doc === 'number';
|
39 | }
|
40 | if (refType === Buffer || refType === mongoose.Types.Buffer) {
|
41 | return doc instanceof Buffer;
|
42 | }
|
43 | return false;
|
44 | }
|
45 | exports.isRefType = isRefType;
|
46 | function isRefTypeArray(docs, refType) {
|
47 | // its "any" & "unknown" because this is not listed as an overload
|
48 | return Array.isArray(docs) && docs.every((v) => isRefType(v, refType));
|
49 | }
|
50 | exports.isRefTypeArray = isRefTypeArray;
|
51 | /**
|
52 | * Check if the input is a mongoose.Model
|
53 | * @param model The Value to check
|
54 | */
|
55 | function isModel(model) {
|
56 | return model?.prototype instanceof mongoose.Model;
|
57 | }
|
58 | exports.isModel = isModel;
|
59 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWd1YXJkcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlZ3VhcmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFDQUFxQztBQUNyQyw0Q0FBcUQ7QUFDckQsK0NBQXVDO0FBR3ZDOzs7R0FHRztBQUNILFNBQWdCLFVBQVUsQ0FBdUIsR0FBaUM7SUFDaEYsT0FBTyxHQUFHLFlBQVksUUFBUSxDQUFDLEtBQUssQ0FBQztBQUN2QyxDQUFDO0FBRkQsZ0NBRUM7QUFnQkQsU0FBZ0IsZUFBZSxDQUFDLElBQXdDO0lBQ3RFLGtFQUFrRTtJQUNsRSxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakUsQ0FBQztBQUhELDBDQUdDO0FBSUQ7Ozs7R0FJRztBQUNILFNBQWdCLFNBQVMsQ0FBdUIsR0FBaUMsRUFBRSxPQUF3QjtJQUN6RyxvQkFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFbkMsSUFBSSxJQUFBLHlCQUFpQixFQUFDLEdBQUcsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUM3QyxPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsNEZBQTRGO0lBQzVGLElBQUksT0FBTyxLQUFLLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO1FBQ3ZDLE9BQU8sR0FBRyxZQUFZLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO0tBQy9DO0lBQ0QsSUFBSSxPQUFPLEtBQUssTUFBTSxFQUFFO1FBQ3RCLE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDO0tBQ2hDO0lBQ0QsSUFBSSxPQUFPLEtBQUssTUFBTSxFQUFFO1FBQ3RCLE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDO0tBQ2hDO0lBQ0QsSUFBSSxPQUFPLEtBQUssTUFBTSxJQUFJLE9BQU8sS0FBSyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtRQUMzRCxPQUFPLEdBQUcsWUFBWSxNQUFNLENBQUM7S0FDOUI7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUF0QkQsOEJBc0JDO0FBc0JELFNBQWdCLGNBQWMsQ0FBQyxJQUF3QyxFQUFFLE9BQXdCO0lBQy9GLGtFQUFrRTtJQUNsRSxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLENBQUM7QUFIRCx3Q0FHQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxLQUFVO0lBQ2hDLE9BQU8sS0FBSyxFQUFFLFNBQVMsWUFBWSxRQUFRLENBQUMsS0FBSyxDQUFDO0FBQ3BELENBQUM7QUFGRCwwQkFFQyJ9 |
\ | No newline at end of file |