bson 4.2.2 → 4.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/HISTORY.md +44 -0
- package/bower.json +1 -1
- package/bson.d.ts +77 -6
- package/dist/bson.browser.esm.js +2116 -1292
- package/dist/bson.browser.esm.js.map +1 -1
- package/dist/bson.browser.umd.js +2172 -1347
- package/dist/bson.browser.umd.js.map +1 -1
- package/dist/bson.bundle.js +2174 -1347
- package/dist/bson.bundle.js.map +1 -1
- package/dist/bson.esm.js +2061 -1241
- package/dist/bson.esm.js.map +1 -1
- package/lib/binary.js +71 -60
- package/lib/binary.js.map +1 -1
- package/lib/bson.js +60 -52
- package/lib/bson.js.map +1 -1
- package/lib/code.js +18 -15
- package/lib/code.js.map +1 -1
- package/lib/db_ref.js +40 -30
- package/lib/db_ref.js.map +1 -1
- package/lib/decimal128.js +135 -124
- package/lib/decimal128.js.map +1 -1
- package/lib/double.js +24 -21
- package/lib/double.js.map +1 -1
- package/lib/ensure_buffer.js +4 -7
- package/lib/ensure_buffer.js.map +1 -1
- package/lib/extended_json.js +113 -71
- package/lib/extended_json.js.map +1 -1
- package/lib/float_parser.js +21 -21
- package/lib/float_parser.js.map +1 -1
- package/lib/int_32.js +19 -16
- package/lib/int_32.js.map +1 -1
- package/lib/long.js +248 -230
- package/lib/long.js.map +1 -1
- package/lib/map.js +54 -45
- package/lib/map.js.map +1 -1
- package/lib/max_key.js +16 -11
- package/lib/max_key.js.map +1 -1
- package/lib/min_key.js +16 -11
- package/lib/min_key.js.map +1 -1
- package/lib/objectid.js +96 -93
- package/lib/objectid.js.map +1 -1
- package/lib/parser/calculate_size.js +17 -15
- package/lib/parser/calculate_size.js.map +1 -1
- package/lib/parser/deserializer.js +135 -123
- package/lib/parser/deserializer.js.map +1 -1
- package/lib/parser/serializer.js +108 -88
- package/lib/parser/serializer.js.map +1 -1
- package/lib/parser/utils.js +47 -25
- package/lib/parser/utils.js.map +1 -1
- package/lib/regexp.js +16 -15
- package/lib/regexp.js.map +1 -1
- package/lib/symbol.js +21 -18
- package/lib/symbol.js.map +1 -1
- package/lib/timestamp.js +50 -27
- package/lib/timestamp.js.map +1 -1
- package/lib/uuid.js +173 -42
- package/lib/uuid.js.map +1 -1
- package/lib/uuid_utils.js +34 -0
- package/lib/uuid_utils.js.map +1 -0
- package/lib/validate_utf8.js +12 -12
- package/lib/validate_utf8.js.map +1 -1
- package/package.json +5 -4
- package/src/binary.ts +20 -6
- package/src/bson.ts +3 -0
- package/src/code.ts +6 -2
- package/src/db_ref.ts +14 -5
- package/src/decimal128.ts +14 -5
- package/src/double.ts +4 -2
- package/src/ensure_buffer.ts +7 -7
- package/src/extended_json.ts +64 -16
- package/src/int_32.ts +4 -2
- package/src/long.ts +22 -8
- package/src/max_key.ts +5 -1
- package/src/min_key.ts +5 -1
- package/src/objectid.ts +15 -20
- package/src/parser/calculate_size.ts +8 -11
- package/src/parser/deserializer.ts +46 -36
- package/src/parser/serializer.ts +13 -12
- package/src/parser/utils.ts +49 -17
- package/src/regexp.ts +5 -5
- package/src/symbol.ts +4 -2
- package/src/timestamp.ts +6 -1
- package/src/uuid.ts +192 -40
- package/src/uuid_utils.ts +31 -0
package/lib/objectid.js
CHANGED
|
@@ -1,37 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ObjectId = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
// constants
|
|
8
|
-
const PROCESS_UNIQUE = utils_1.randomBytes(5);
|
|
4
|
+
var buffer_1 = require("buffer");
|
|
5
|
+
var ensure_buffer_1 = require("./ensure_buffer");
|
|
6
|
+
var utils_1 = require("./parser/utils");
|
|
9
7
|
// Regular expression that checks for hex value
|
|
10
|
-
|
|
11
|
-
//
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
hexTable[i] = (i <= 15 ? '0' : '') + i.toString(16);
|
|
15
|
-
}
|
|
16
|
-
// Lookup tables
|
|
17
|
-
const decodeLookup = [];
|
|
18
|
-
let i = 0;
|
|
19
|
-
while (i < 10)
|
|
20
|
-
decodeLookup[0x30 + i] = i++;
|
|
21
|
-
while (i < 16)
|
|
22
|
-
decodeLookup[0x41 - 10 + i] = decodeLookup[0x61 - 10 + i] = i++;
|
|
23
|
-
const kId = Symbol('id');
|
|
8
|
+
var checkForHexRegExp = new RegExp('^[0-9a-fA-F]{24}$');
|
|
9
|
+
// Unique sequence for the current process (initialized on first use)
|
|
10
|
+
var PROCESS_UNIQUE = null;
|
|
11
|
+
var kId = Symbol('id');
|
|
24
12
|
/**
|
|
25
13
|
* A class representation of the BSON ObjectId type.
|
|
26
14
|
* @public
|
|
27
15
|
*/
|
|
28
|
-
|
|
16
|
+
var ObjectId = /** @class */ (function () {
|
|
29
17
|
/**
|
|
30
18
|
* Create an ObjectId type
|
|
31
19
|
*
|
|
32
20
|
* @param id - Can be a 24 character hex string, 12 byte binary Buffer, or a number.
|
|
33
21
|
*/
|
|
34
|
-
|
|
22
|
+
function ObjectId(id) {
|
|
23
|
+
if (!(this instanceof ObjectId))
|
|
24
|
+
return new ObjectId(id);
|
|
35
25
|
// Duck-typing to support ObjectId from different npm packages
|
|
36
26
|
if (id instanceof ObjectId) {
|
|
37
27
|
this[kId] = id.id;
|
|
@@ -59,7 +49,7 @@ class ObjectId {
|
|
|
59
49
|
}
|
|
60
50
|
if (typeof id === 'string') {
|
|
61
51
|
if (id.length === 12) {
|
|
62
|
-
|
|
52
|
+
var bytes = buffer_1.Buffer.from(id);
|
|
63
53
|
if (bytes.byteLength === 12) {
|
|
64
54
|
this[kId] = bytes;
|
|
65
55
|
}
|
|
@@ -75,63 +65,75 @@ class ObjectId {
|
|
|
75
65
|
this.__id = this.id.toString('hex');
|
|
76
66
|
}
|
|
77
67
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
68
|
+
Object.defineProperty(ObjectId.prototype, "id", {
|
|
69
|
+
/**
|
|
70
|
+
* The ObjectId bytes
|
|
71
|
+
* @readonly
|
|
72
|
+
*/
|
|
73
|
+
get: function () {
|
|
74
|
+
return this[kId];
|
|
75
|
+
},
|
|
76
|
+
set: function (value) {
|
|
77
|
+
this[kId] = value;
|
|
78
|
+
if (ObjectId.cacheHexString) {
|
|
79
|
+
this.__id = value.toString('hex');
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
enumerable: false,
|
|
83
|
+
configurable: true
|
|
84
|
+
});
|
|
85
|
+
Object.defineProperty(ObjectId.prototype, "generationTime", {
|
|
86
|
+
/**
|
|
87
|
+
* The generation time of this ObjectId instance
|
|
88
|
+
* @deprecated Please use getTimestamp / createFromTime which returns an int32 epoch
|
|
89
|
+
*/
|
|
90
|
+
get: function () {
|
|
91
|
+
return this.id.readInt32BE(0);
|
|
92
|
+
},
|
|
93
|
+
set: function (value) {
|
|
94
|
+
// Encode time into first 4 bytes
|
|
95
|
+
this.id.writeUInt32BE(value, 0);
|
|
96
|
+
},
|
|
97
|
+
enumerable: false,
|
|
98
|
+
configurable: true
|
|
99
|
+
});
|
|
102
100
|
/** Returns the ObjectId id as a 24 character hex string representation */
|
|
103
|
-
toHexString() {
|
|
101
|
+
ObjectId.prototype.toHexString = function () {
|
|
104
102
|
if (ObjectId.cacheHexString && this.__id) {
|
|
105
103
|
return this.__id;
|
|
106
104
|
}
|
|
107
|
-
|
|
105
|
+
var hexString = this.id.toString('hex');
|
|
108
106
|
if (ObjectId.cacheHexString && !this.__id) {
|
|
109
107
|
this.__id = hexString;
|
|
110
108
|
}
|
|
111
109
|
return hexString;
|
|
112
|
-
}
|
|
110
|
+
};
|
|
113
111
|
/**
|
|
114
112
|
* Update the ObjectId index
|
|
115
113
|
* @privateRemarks
|
|
116
114
|
* Used in generating new ObjectId's on the driver
|
|
117
115
|
* @internal
|
|
118
116
|
*/
|
|
119
|
-
|
|
117
|
+
ObjectId.getInc = function () {
|
|
120
118
|
return (ObjectId.index = (ObjectId.index + 1) % 0xffffff);
|
|
121
|
-
}
|
|
119
|
+
};
|
|
122
120
|
/**
|
|
123
121
|
* Generate a 12 byte id buffer used in ObjectId's
|
|
124
122
|
*
|
|
125
123
|
* @param time - pass in a second based timestamp.
|
|
126
124
|
*/
|
|
127
|
-
|
|
125
|
+
ObjectId.generate = function (time) {
|
|
128
126
|
if ('number' !== typeof time) {
|
|
129
127
|
time = ~~(Date.now() / 1000);
|
|
130
128
|
}
|
|
131
|
-
|
|
132
|
-
|
|
129
|
+
var inc = ObjectId.getInc();
|
|
130
|
+
var buffer = buffer_1.Buffer.alloc(12);
|
|
133
131
|
// 4-byte timestamp
|
|
134
132
|
buffer.writeUInt32BE(time, 0);
|
|
133
|
+
// set PROCESS_UNIQUE if yet not initialized
|
|
134
|
+
if (PROCESS_UNIQUE === null) {
|
|
135
|
+
PROCESS_UNIQUE = utils_1.randomBytes(5);
|
|
136
|
+
}
|
|
135
137
|
// 5-byte process unique
|
|
136
138
|
buffer[4] = PROCESS_UNIQUE[0];
|
|
137
139
|
buffer[5] = PROCESS_UNIQUE[1];
|
|
@@ -143,32 +145,32 @@ class ObjectId {
|
|
|
143
145
|
buffer[10] = (inc >> 8) & 0xff;
|
|
144
146
|
buffer[9] = (inc >> 16) & 0xff;
|
|
145
147
|
return buffer;
|
|
146
|
-
}
|
|
148
|
+
};
|
|
147
149
|
/**
|
|
148
150
|
* Converts the id into a 24 character hex string for printing
|
|
149
151
|
*
|
|
150
152
|
* @param format - The Buffer toString format parameter.
|
|
151
153
|
* @internal
|
|
152
154
|
*/
|
|
153
|
-
toString(format) {
|
|
155
|
+
ObjectId.prototype.toString = function (format) {
|
|
154
156
|
// Is the id a buffer then use the buffer toString method to return the format
|
|
155
157
|
if (format)
|
|
156
158
|
return this.id.toString(format);
|
|
157
159
|
return this.toHexString();
|
|
158
|
-
}
|
|
160
|
+
};
|
|
159
161
|
/**
|
|
160
162
|
* Converts to its JSON the 24 character hex string representation.
|
|
161
163
|
* @internal
|
|
162
164
|
*/
|
|
163
|
-
toJSON() {
|
|
165
|
+
ObjectId.prototype.toJSON = function () {
|
|
164
166
|
return this.toHexString();
|
|
165
|
-
}
|
|
167
|
+
};
|
|
166
168
|
/**
|
|
167
169
|
* Compares the equality of this ObjectId with `otherID`.
|
|
168
170
|
*
|
|
169
171
|
* @param otherId - ObjectId instance to compare against.
|
|
170
172
|
*/
|
|
171
|
-
equals(otherId) {
|
|
173
|
+
ObjectId.prototype.equals = function (otherId) {
|
|
172
174
|
if (otherId === undefined || otherId === null) {
|
|
173
175
|
return false;
|
|
174
176
|
}
|
|
@@ -178,8 +180,8 @@ class ObjectId {
|
|
|
178
180
|
if (typeof otherId === 'string' &&
|
|
179
181
|
ObjectId.isValid(otherId) &&
|
|
180
182
|
otherId.length === 12 &&
|
|
181
|
-
this.id
|
|
182
|
-
return otherId ===
|
|
183
|
+
utils_1.isUint8Array(this.id)) {
|
|
184
|
+
return otherId === buffer_1.Buffer.prototype.toString.call(this.id, 'latin1');
|
|
183
185
|
}
|
|
184
186
|
if (typeof otherId === 'string' && ObjectId.isValid(otherId) && otherId.length === 24) {
|
|
185
187
|
return otherId.toLowerCase() === this.toHexString();
|
|
@@ -193,48 +195,48 @@ class ObjectId {
|
|
|
193
195
|
return otherId.toHexString() === this.toHexString();
|
|
194
196
|
}
|
|
195
197
|
return false;
|
|
196
|
-
}
|
|
198
|
+
};
|
|
197
199
|
/** Returns the generation date (accurate up to the second) that this ID was generated. */
|
|
198
|
-
getTimestamp() {
|
|
199
|
-
|
|
200
|
-
|
|
200
|
+
ObjectId.prototype.getTimestamp = function () {
|
|
201
|
+
var timestamp = new Date();
|
|
202
|
+
var time = this.id.readUInt32BE(0);
|
|
201
203
|
timestamp.setTime(Math.floor(time) * 1000);
|
|
202
204
|
return timestamp;
|
|
203
|
-
}
|
|
205
|
+
};
|
|
204
206
|
/** @internal */
|
|
205
|
-
|
|
207
|
+
ObjectId.createPk = function () {
|
|
206
208
|
return new ObjectId();
|
|
207
|
-
}
|
|
209
|
+
};
|
|
208
210
|
/**
|
|
209
211
|
* Creates an ObjectId from a second based number, with the rest of the ObjectId zeroed out. Used for comparisons or sorting the ObjectId.
|
|
210
212
|
*
|
|
211
213
|
* @param time - an integer number representing a number of seconds.
|
|
212
214
|
*/
|
|
213
|
-
|
|
214
|
-
|
|
215
|
+
ObjectId.createFromTime = function (time) {
|
|
216
|
+
var buffer = buffer_1.Buffer.from([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
|
|
215
217
|
// Encode time into first 4 bytes
|
|
216
218
|
buffer.writeUInt32BE(time, 0);
|
|
217
219
|
// Return the new objectId
|
|
218
220
|
return new ObjectId(buffer);
|
|
219
|
-
}
|
|
221
|
+
};
|
|
220
222
|
/**
|
|
221
223
|
* Creates an ObjectId from a hex string representation of an ObjectId.
|
|
222
224
|
*
|
|
223
225
|
* @param hexString - create a ObjectId from a passed in 24 character hexstring.
|
|
224
226
|
*/
|
|
225
|
-
|
|
227
|
+
ObjectId.createFromHexString = function (hexString) {
|
|
226
228
|
// Throw an error if it's not a valid setup
|
|
227
229
|
if (typeof hexString === 'undefined' || (hexString != null && hexString.length !== 24)) {
|
|
228
230
|
throw new TypeError('Argument passed in must be a single String of 12 bytes or a string of 24 hex characters');
|
|
229
231
|
}
|
|
230
232
|
return new ObjectId(buffer_1.Buffer.from(hexString, 'hex'));
|
|
231
|
-
}
|
|
233
|
+
};
|
|
232
234
|
/**
|
|
233
235
|
* Checks if a value is a valid bson ObjectId
|
|
234
236
|
*
|
|
235
237
|
* @param id - ObjectId instance to validate.
|
|
236
238
|
*/
|
|
237
|
-
|
|
239
|
+
ObjectId.isValid = function (id) {
|
|
238
240
|
if (id == null)
|
|
239
241
|
return false;
|
|
240
242
|
if (typeof id === 'number') {
|
|
@@ -246,7 +248,7 @@ class ObjectId {
|
|
|
246
248
|
if (id instanceof ObjectId) {
|
|
247
249
|
return true;
|
|
248
250
|
}
|
|
249
|
-
if (id
|
|
251
|
+
if (utils_1.isUint8Array(id) && id.length === 12) {
|
|
250
252
|
return true;
|
|
251
253
|
}
|
|
252
254
|
// Duck-Typing detection of ObjectId like objects
|
|
@@ -257,45 +259,46 @@ class ObjectId {
|
|
|
257
259
|
return id.toHexString().length === 24 && checkForHexRegExp.test(id.id.toString('hex'));
|
|
258
260
|
}
|
|
259
261
|
return false;
|
|
260
|
-
}
|
|
262
|
+
};
|
|
261
263
|
/** @internal */
|
|
262
|
-
toExtendedJSON() {
|
|
264
|
+
ObjectId.prototype.toExtendedJSON = function () {
|
|
263
265
|
if (this.toHexString)
|
|
264
266
|
return { $oid: this.toHexString() };
|
|
265
267
|
return { $oid: this.toString('hex') };
|
|
266
|
-
}
|
|
268
|
+
};
|
|
267
269
|
/** @internal */
|
|
268
|
-
|
|
270
|
+
ObjectId.fromExtendedJSON = function (doc) {
|
|
269
271
|
return new ObjectId(doc.$oid);
|
|
270
|
-
}
|
|
272
|
+
};
|
|
271
273
|
/**
|
|
272
274
|
* Converts to a string representation of this Id.
|
|
273
275
|
*
|
|
274
276
|
* @returns return the 24 character hex string representation.
|
|
275
277
|
* @internal
|
|
276
278
|
*/
|
|
277
|
-
[Symbol.for('nodejs.util.inspect.custom')]() {
|
|
279
|
+
ObjectId.prototype[Symbol.for('nodejs.util.inspect.custom')] = function () {
|
|
278
280
|
return this.inspect();
|
|
279
|
-
}
|
|
280
|
-
inspect() {
|
|
281
|
-
return
|
|
282
|
-
}
|
|
283
|
-
|
|
281
|
+
};
|
|
282
|
+
ObjectId.prototype.inspect = function () {
|
|
283
|
+
return "new ObjectId(\"" + this.toHexString() + "\")";
|
|
284
|
+
};
|
|
285
|
+
/** @internal */
|
|
286
|
+
ObjectId.index = ~~(Math.random() * 0xffffff);
|
|
287
|
+
return ObjectId;
|
|
288
|
+
}());
|
|
284
289
|
exports.ObjectId = ObjectId;
|
|
285
|
-
/** @internal */
|
|
286
|
-
ObjectId.index = ~~(Math.random() * 0xffffff);
|
|
287
290
|
// Deprecated methods
|
|
288
291
|
Object.defineProperty(ObjectId.prototype, 'generate', {
|
|
289
|
-
value: utils_1.deprecate((time)
|
|
292
|
+
value: utils_1.deprecate(function (time) { return ObjectId.generate(time); }, 'Please use the static `ObjectId.generate(time)` instead')
|
|
290
293
|
});
|
|
291
294
|
Object.defineProperty(ObjectId.prototype, 'getInc', {
|
|
292
|
-
value: utils_1.deprecate(()
|
|
295
|
+
value: utils_1.deprecate(function () { return ObjectId.getInc(); }, 'Please use the static `ObjectId.getInc()` instead')
|
|
293
296
|
});
|
|
294
297
|
Object.defineProperty(ObjectId.prototype, 'get_inc', {
|
|
295
|
-
value: utils_1.deprecate(()
|
|
298
|
+
value: utils_1.deprecate(function () { return ObjectId.getInc(); }, 'Please use the static `ObjectId.getInc()` instead')
|
|
296
299
|
});
|
|
297
300
|
Object.defineProperty(ObjectId, 'get_inc', {
|
|
298
|
-
value: utils_1.deprecate(()
|
|
301
|
+
value: utils_1.deprecate(function () { return ObjectId.getInc(); }, 'Please use the static `ObjectId.getInc()` instead')
|
|
299
302
|
});
|
|
300
303
|
Object.defineProperty(ObjectId.prototype, '_bsontype', { value: 'ObjectID' });
|
|
301
304
|
//# sourceMappingURL=objectid.js.map
|
package/lib/objectid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objectid.js","sourceRoot":"","sources":["../src/objectid.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"objectid.js","sourceRoot":"","sources":["../src/objectid.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.calculateObjectSize = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
var buffer_1 = require("buffer");
|
|
5
|
+
var binary_1 = require("../binary");
|
|
6
|
+
var constants = require("../constants");
|
|
7
|
+
var utils_1 = require("./utils");
|
|
8
8
|
function calculateObjectSize(object, serializeFunctions, ignoreUndefined) {
|
|
9
|
-
|
|
9
|
+
var totalLength = 4 + 1;
|
|
10
10
|
if (Array.isArray(object)) {
|
|
11
|
-
for (
|
|
11
|
+
for (var i = 0; i < object.length; i++) {
|
|
12
12
|
totalLength += calculateElement(i.toString(), object[i], serializeFunctions, true, ignoreUndefined);
|
|
13
13
|
}
|
|
14
14
|
}
|
|
@@ -18,7 +18,7 @@ function calculateObjectSize(object, serializeFunctions, ignoreUndefined) {
|
|
|
18
18
|
object = object.toBSON();
|
|
19
19
|
}
|
|
20
20
|
// Calculate size
|
|
21
|
-
for (
|
|
21
|
+
for (var key in object) {
|
|
22
22
|
totalLength += calculateElement(key, object[key], serializeFunctions, false, ignoreUndefined);
|
|
23
23
|
}
|
|
24
24
|
}
|
|
@@ -28,7 +28,10 @@ exports.calculateObjectSize = calculateObjectSize;
|
|
|
28
28
|
/** @internal */
|
|
29
29
|
function calculateElement(name,
|
|
30
30
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
31
|
-
value, serializeFunctions
|
|
31
|
+
value, serializeFunctions, isArray, ignoreUndefined) {
|
|
32
|
+
if (serializeFunctions === void 0) { serializeFunctions = false; }
|
|
33
|
+
if (isArray === void 0) { isArray = false; }
|
|
34
|
+
if (ignoreUndefined === void 0) { ignoreUndefined = false; }
|
|
32
35
|
// If we have toBSON defined, override the current object
|
|
33
36
|
if (value && value.toBSON) {
|
|
34
37
|
value = value.toBSON();
|
|
@@ -68,7 +71,9 @@ value, serializeFunctions = false, isArray = false, ignoreUndefined = false) {
|
|
|
68
71
|
else if (value instanceof Date || utils_1.isDate(value)) {
|
|
69
72
|
return (name != null ? buffer_1.Buffer.byteLength(name, 'utf8') + 1 : 0) + (8 + 1);
|
|
70
73
|
}
|
|
71
|
-
else if (ArrayBuffer.isView(value) ||
|
|
74
|
+
else if (ArrayBuffer.isView(value) ||
|
|
75
|
+
value instanceof ArrayBuffer ||
|
|
76
|
+
utils_1.isAnyArrayBuffer(value)) {
|
|
72
77
|
return ((name != null ? buffer_1.Buffer.byteLength(name, 'utf8') + 1 : 0) + (1 + 4 + 1) + value.byteLength);
|
|
73
78
|
}
|
|
74
79
|
else if (value['_bsontype'] === 'Long' ||
|
|
@@ -117,7 +122,7 @@ value, serializeFunctions = false, isArray = false, ignoreUndefined = false) {
|
|
|
117
122
|
}
|
|
118
123
|
else if (value['_bsontype'] === 'DBRef') {
|
|
119
124
|
// Set up correct object for serialization
|
|
120
|
-
|
|
125
|
+
var ordered_values = Object.assign({
|
|
121
126
|
$ref: value.collection,
|
|
122
127
|
$id: value.oid
|
|
123
128
|
}, value.fields);
|
|
@@ -129,8 +134,7 @@ value, serializeFunctions = false, isArray = false, ignoreUndefined = false) {
|
|
|
129
134
|
1 +
|
|
130
135
|
calculateObjectSize(ordered_values, serializeFunctions, ignoreUndefined));
|
|
131
136
|
}
|
|
132
|
-
else if (value instanceof RegExp ||
|
|
133
|
-
Object.prototype.toString.call(value) === '[object RegExp]') {
|
|
137
|
+
else if (value instanceof RegExp || utils_1.isRegExp(value)) {
|
|
134
138
|
return ((name != null ? buffer_1.Buffer.byteLength(name, 'utf8') + 1 : 0) +
|
|
135
139
|
1 +
|
|
136
140
|
buffer_1.Buffer.byteLength(value.source, 'utf8') +
|
|
@@ -155,9 +159,7 @@ value, serializeFunctions = false, isArray = false, ignoreUndefined = false) {
|
|
|
155
159
|
}
|
|
156
160
|
case 'function':
|
|
157
161
|
// WTF for 0.4.X where typeof /someregexp/ === 'function'
|
|
158
|
-
if (value instanceof RegExp ||
|
|
159
|
-
Object.prototype.toString.call(value) === '[object RegExp]' ||
|
|
160
|
-
String.call(value) === '[object RegExp]') {
|
|
162
|
+
if (value instanceof RegExp || utils_1.isRegExp(value) || String.call(value) === '[object RegExp]') {
|
|
161
163
|
return ((name != null ? buffer_1.Buffer.byteLength(name, 'utf8') + 1 : 0) +
|
|
162
164
|
1 +
|
|
163
165
|
buffer_1.Buffer.byteLength(value.source, 'utf8') +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculate_size.js","sourceRoot":"","sources":["../../src/parser/calculate_size.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"calculate_size.js","sourceRoot":"","sources":["../../src/parser/calculate_size.ts"],"names":[],"mappings":"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"}
|