1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const mongoose_1 = __importDefault(require("mongoose"));
class LongSchema extends mongoose_1.default.SchemaType {
constructor() {
super(...arguments);
this.$conditionalHandlers = {
$lt: this.handleSingle,
$lte: this.handleSingle,
$gt: this.handleSingle,
$gte: this.handleSingle,
$ne: this.handleSingle,
$in: this.handleArray,
$nin: this.handleArray,
$mod: this.handleArray,
$all: this.handleArray,
$bitsAnySet: this.handleArray,
$bitsAllSet: this.handleArray,
};
}
handleSingle(val) {
return this.cast(val);
}
handleArray(val) {
var self = this;
return val.map(function (m) {
return self.cast(m);
});
}
checkRequired(val) {
return null != val;
}
cast(val, scope, init) {
if (null === val)
return val;
if ("" === val)
return null;
if (typeof val === "bigint")
return mongoose_1.default.mongo.Long.fromString(val.toString());
if (val instanceof mongoose_1.default.mongo.Long)
return BigInt(val.toString());
if (val instanceof Number || "number" == typeof val)
return BigInt(val);
if (!Array.isArray(val) && val.toString)
return BigInt(val.toString());
// @ts-ignore
throw new SchemaType.CastError("Long", val);
}
castForQuery($conditional, value) {
var handler;
if (2 === arguments.length) {
// @ts-ignore
handler = this.$conditionalHandlers[$conditional];
if (!handler) {
throw new Error("Can't use " + $conditional + " with Long.");
}
return handler.call(this, value);
}
else {
return this.cast($conditional);
}
}
}
LongSchema.cast = mongoose_1.default.SchemaType.cast;
LongSchema.set = mongoose_1.default.SchemaType.set;
LongSchema.get = mongoose_1.default.SchemaType.get;
mongoose_1.default.Schema.Types.Long = LongSchema;
mongoose_1.default.Types.Long = mongoose_1.default.mongo.Long;
//# sourceMappingURL=MongoBigInt.js.map
|