bson 4.0.4 → 4.2.2

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.
Files changed (90) hide show
  1. package/HISTORY.md +56 -1
  2. package/README.md +7 -9
  3. package/bower.json +1 -1
  4. package/bson.d.ts +983 -0
  5. package/dist/bson.browser.esm.js +7261 -5004
  6. package/dist/bson.browser.esm.js.map +1 -0
  7. package/dist/bson.browser.umd.js +7319 -5099
  8. package/dist/bson.browser.umd.js.map +1 -0
  9. package/dist/bson.bundle.js +8168 -9216
  10. package/dist/bson.bundle.js.map +1 -0
  11. package/dist/bson.esm.js +5643 -5409
  12. package/dist/bson.esm.js.map +1 -0
  13. package/etc/prepare.js +19 -0
  14. package/lib/binary.js +194 -377
  15. package/lib/binary.js.map +1 -0
  16. package/lib/bson.js +200 -243
  17. package/lib/bson.js.map +1 -0
  18. package/lib/code.js +36 -39
  19. package/lib/code.js.map +1 -0
  20. package/lib/constants.js +78 -203
  21. package/lib/constants.js.map +1 -0
  22. package/lib/db_ref.js +79 -79
  23. package/lib/db_ref.js.map +1 -0
  24. package/lib/decimal128.js +647 -760
  25. package/lib/decimal128.js.map +1 -0
  26. package/lib/double.js +61 -58
  27. package/lib/double.js.map +1 -0
  28. package/lib/ensure_buffer.js +22 -18
  29. package/lib/ensure_buffer.js.map +1 -0
  30. package/lib/extended_json.js +305 -322
  31. package/lib/extended_json.js.map +1 -0
  32. package/lib/float_parser.js +98 -104
  33. package/lib/float_parser.js.map +1 -0
  34. package/lib/int_32.js +45 -47
  35. package/lib/int_32.js.map +1 -0
  36. package/lib/long.js +876 -16
  37. package/lib/long.js.map +1 -0
  38. package/lib/map.js +123 -124
  39. package/lib/map.js.map +1 -0
  40. package/lib/max_key.js +21 -23
  41. package/lib/max_key.js.map +1 -0
  42. package/lib/min_key.js +21 -23
  43. package/lib/min_key.js.map +1 -0
  44. package/lib/objectid.js +264 -382
  45. package/lib/objectid.js.map +1 -0
  46. package/lib/parser/calculate_size.js +185 -224
  47. package/lib/parser/calculate_size.js.map +1 -0
  48. package/lib/parser/deserializer.js +543 -620
  49. package/lib/parser/deserializer.js.map +1 -0
  50. package/lib/parser/serializer.js +774 -918
  51. package/lib/parser/serializer.js.map +1 -0
  52. package/lib/parser/utils.js +81 -30
  53. package/lib/parser/utils.js.map +1 -0
  54. package/lib/regexp.js +54 -70
  55. package/lib/regexp.js.map +1 -0
  56. package/lib/symbol.js +40 -56
  57. package/lib/symbol.js.map +1 -0
  58. package/lib/timestamp.js +70 -95
  59. package/lib/timestamp.js.map +1 -0
  60. package/lib/uuid.js +48 -0
  61. package/lib/uuid.js.map +1 -0
  62. package/lib/validate_utf8.js +32 -33
  63. package/lib/validate_utf8.js.map +1 -0
  64. package/package.json +53 -31
  65. package/src/binary.ts +270 -0
  66. package/src/bson.ts +326 -0
  67. package/src/code.ts +57 -0
  68. package/src/constants.ts +104 -0
  69. package/src/db_ref.ts +115 -0
  70. package/src/decimal128.ts +801 -0
  71. package/src/double.ts +85 -0
  72. package/src/ensure_buffer.ts +26 -0
  73. package/src/extended_json.ts +395 -0
  74. package/src/float_parser.ts +152 -0
  75. package/src/int_32.ts +64 -0
  76. package/src/long.ts +1000 -0
  77. package/src/map.ts +139 -0
  78. package/src/max_key.ts +33 -0
  79. package/src/min_key.ts +33 -0
  80. package/src/objectid.ts +377 -0
  81. package/src/parser/calculate_size.ts +230 -0
  82. package/src/parser/deserializer.ts +655 -0
  83. package/src/parser/serializer.ts +1069 -0
  84. package/src/parser/utils.ts +93 -0
  85. package/src/regexp.ts +92 -0
  86. package/src/symbol.ts +57 -0
  87. package/src/timestamp.ts +103 -0
  88. package/src/uuid.ts +57 -0
  89. package/src/validate_utf8.ts +47 -0
  90. package/lib/fnv1a.js +0 -48
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objectid.js","sourceRoot":"","sources":["../src/objectid.ts"],"names":[],"mappings":"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"}
@@ -1,230 +1,191 @@
1
- 'use strict';
2
-
3
- const Buffer = require('buffer').Buffer;
4
- const Binary = require('../binary');
5
- const normalizedFunctionString = require('./utils').normalizedFunctionString;
6
- const constants = require('../constants');
7
-
8
- // To ensure that 0.4 of node works correctly
9
- function isDate(d) {
10
- return typeof d === 'object' && Object.prototype.toString.call(d) === '[object Date]';
11
- }
12
-
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateObjectSize = void 0;
4
+ const buffer_1 = require("buffer");
5
+ const binary_1 = require("../binary");
6
+ const constants = require("../constants");
7
+ const utils_1 = require("./utils");
13
8
  function calculateObjectSize(object, serializeFunctions, ignoreUndefined) {
14
- let totalLength = 4 + 1;
15
-
16
- if (Array.isArray(object)) {
17
- for (let i = 0; i < object.length; i++) {
18
- totalLength += calculateElement(
19
- i.toString(),
20
- object[i],
21
- serializeFunctions,
22
- true,
23
- ignoreUndefined
24
- );
9
+ let totalLength = 4 + 1;
10
+ if (Array.isArray(object)) {
11
+ for (let i = 0; i < object.length; i++) {
12
+ totalLength += calculateElement(i.toString(), object[i], serializeFunctions, true, ignoreUndefined);
13
+ }
14
+ }
15
+ else {
16
+ // If we have toBSON defined, override the current object
17
+ if (object.toBSON) {
18
+ object = object.toBSON();
19
+ }
20
+ // Calculate size
21
+ for (const key in object) {
22
+ totalLength += calculateElement(key, object[key], serializeFunctions, false, ignoreUndefined);
23
+ }
25
24
  }
26
- } else {
25
+ return totalLength;
26
+ }
27
+ exports.calculateObjectSize = calculateObjectSize;
28
+ /** @internal */
29
+ function calculateElement(name,
30
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
31
+ value, serializeFunctions = false, isArray = false, ignoreUndefined = false) {
27
32
  // If we have toBSON defined, override the current object
28
-
29
- if (object.toBSON) {
30
- object = object.toBSON();
33
+ if (value && value.toBSON) {
34
+ value = value.toBSON();
31
35
  }
32
-
33
- // Calculate size
34
- for (let key in object) {
35
- totalLength += calculateElement(key, object[key], serializeFunctions, false, ignoreUndefined);
36
+ switch (typeof value) {
37
+ case 'string':
38
+ return 1 + buffer_1.Buffer.byteLength(name, 'utf8') + 1 + 4 + buffer_1.Buffer.byteLength(value, 'utf8') + 1;
39
+ case 'number':
40
+ if (Math.floor(value) === value &&
41
+ value >= constants.JS_INT_MIN &&
42
+ value <= constants.JS_INT_MAX) {
43
+ if (value >= constants.BSON_INT32_MIN && value <= constants.BSON_INT32_MAX) {
44
+ // 32 bit
45
+ return (name != null ? buffer_1.Buffer.byteLength(name, 'utf8') + 1 : 0) + (4 + 1);
46
+ }
47
+ else {
48
+ return (name != null ? buffer_1.Buffer.byteLength(name, 'utf8') + 1 : 0) + (8 + 1);
49
+ }
50
+ }
51
+ else {
52
+ // 64 bit
53
+ return (name != null ? buffer_1.Buffer.byteLength(name, 'utf8') + 1 : 0) + (8 + 1);
54
+ }
55
+ case 'undefined':
56
+ if (isArray || !ignoreUndefined)
57
+ return (name != null ? buffer_1.Buffer.byteLength(name, 'utf8') + 1 : 0) + 1;
58
+ return 0;
59
+ case 'boolean':
60
+ return (name != null ? buffer_1.Buffer.byteLength(name, 'utf8') + 1 : 0) + (1 + 1);
61
+ case 'object':
62
+ if (value == null || value['_bsontype'] === 'MinKey' || value['_bsontype'] === 'MaxKey') {
63
+ return (name != null ? buffer_1.Buffer.byteLength(name, 'utf8') + 1 : 0) + 1;
64
+ }
65
+ else if (value['_bsontype'] === 'ObjectId' || value['_bsontype'] === 'ObjectID') {
66
+ return (name != null ? buffer_1.Buffer.byteLength(name, 'utf8') + 1 : 0) + (12 + 1);
67
+ }
68
+ else if (value instanceof Date || utils_1.isDate(value)) {
69
+ return (name != null ? buffer_1.Buffer.byteLength(name, 'utf8') + 1 : 0) + (8 + 1);
70
+ }
71
+ else if (ArrayBuffer.isView(value) || value instanceof ArrayBuffer) {
72
+ return ((name != null ? buffer_1.Buffer.byteLength(name, 'utf8') + 1 : 0) + (1 + 4 + 1) + value.byteLength);
73
+ }
74
+ else if (value['_bsontype'] === 'Long' ||
75
+ value['_bsontype'] === 'Double' ||
76
+ value['_bsontype'] === 'Timestamp') {
77
+ return (name != null ? buffer_1.Buffer.byteLength(name, 'utf8') + 1 : 0) + (8 + 1);
78
+ }
79
+ else if (value['_bsontype'] === 'Decimal128') {
80
+ return (name != null ? buffer_1.Buffer.byteLength(name, 'utf8') + 1 : 0) + (16 + 1);
81
+ }
82
+ else if (value['_bsontype'] === 'Code') {
83
+ // Calculate size depending on the availability of a scope
84
+ if (value.scope != null && Object.keys(value.scope).length > 0) {
85
+ return ((name != null ? buffer_1.Buffer.byteLength(name, 'utf8') + 1 : 0) +
86
+ 1 +
87
+ 4 +
88
+ 4 +
89
+ buffer_1.Buffer.byteLength(value.code.toString(), 'utf8') +
90
+ 1 +
91
+ calculateObjectSize(value.scope, serializeFunctions, ignoreUndefined));
92
+ }
93
+ else {
94
+ return ((name != null ? buffer_1.Buffer.byteLength(name, 'utf8') + 1 : 0) +
95
+ 1 +
96
+ 4 +
97
+ buffer_1.Buffer.byteLength(value.code.toString(), 'utf8') +
98
+ 1);
99
+ }
100
+ }
101
+ else if (value['_bsontype'] === 'Binary') {
102
+ // Check what kind of subtype we have
103
+ if (value.sub_type === binary_1.Binary.SUBTYPE_BYTE_ARRAY) {
104
+ return ((name != null ? buffer_1.Buffer.byteLength(name, 'utf8') + 1 : 0) +
105
+ (value.position + 1 + 4 + 1 + 4));
106
+ }
107
+ else {
108
+ return ((name != null ? buffer_1.Buffer.byteLength(name, 'utf8') + 1 : 0) + (value.position + 1 + 4 + 1));
109
+ }
110
+ }
111
+ else if (value['_bsontype'] === 'Symbol') {
112
+ return ((name != null ? buffer_1.Buffer.byteLength(name, 'utf8') + 1 : 0) +
113
+ buffer_1.Buffer.byteLength(value.value, 'utf8') +
114
+ 4 +
115
+ 1 +
116
+ 1);
117
+ }
118
+ else if (value['_bsontype'] === 'DBRef') {
119
+ // Set up correct object for serialization
120
+ const ordered_values = Object.assign({
121
+ $ref: value.collection,
122
+ $id: value.oid
123
+ }, value.fields);
124
+ // Add db reference if it exists
125
+ if (value.db != null) {
126
+ ordered_values['$db'] = value.db;
127
+ }
128
+ return ((name != null ? buffer_1.Buffer.byteLength(name, 'utf8') + 1 : 0) +
129
+ 1 +
130
+ calculateObjectSize(ordered_values, serializeFunctions, ignoreUndefined));
131
+ }
132
+ else if (value instanceof RegExp ||
133
+ Object.prototype.toString.call(value) === '[object RegExp]') {
134
+ return ((name != null ? buffer_1.Buffer.byteLength(name, 'utf8') + 1 : 0) +
135
+ 1 +
136
+ buffer_1.Buffer.byteLength(value.source, 'utf8') +
137
+ 1 +
138
+ (value.global ? 1 : 0) +
139
+ (value.ignoreCase ? 1 : 0) +
140
+ (value.multiline ? 1 : 0) +
141
+ 1);
142
+ }
143
+ else if (value['_bsontype'] === 'BSONRegExp') {
144
+ return ((name != null ? buffer_1.Buffer.byteLength(name, 'utf8') + 1 : 0) +
145
+ 1 +
146
+ buffer_1.Buffer.byteLength(value.pattern, 'utf8') +
147
+ 1 +
148
+ buffer_1.Buffer.byteLength(value.options, 'utf8') +
149
+ 1);
150
+ }
151
+ else {
152
+ return ((name != null ? buffer_1.Buffer.byteLength(name, 'utf8') + 1 : 0) +
153
+ calculateObjectSize(value, serializeFunctions, ignoreUndefined) +
154
+ 1);
155
+ }
156
+ case 'function':
157
+ // 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]') {
161
+ return ((name != null ? buffer_1.Buffer.byteLength(name, 'utf8') + 1 : 0) +
162
+ 1 +
163
+ buffer_1.Buffer.byteLength(value.source, 'utf8') +
164
+ 1 +
165
+ (value.global ? 1 : 0) +
166
+ (value.ignoreCase ? 1 : 0) +
167
+ (value.multiline ? 1 : 0) +
168
+ 1);
169
+ }
170
+ else {
171
+ if (serializeFunctions && value.scope != null && Object.keys(value.scope).length > 0) {
172
+ return ((name != null ? buffer_1.Buffer.byteLength(name, 'utf8') + 1 : 0) +
173
+ 1 +
174
+ 4 +
175
+ 4 +
176
+ buffer_1.Buffer.byteLength(utils_1.normalizedFunctionString(value), 'utf8') +
177
+ 1 +
178
+ calculateObjectSize(value.scope, serializeFunctions, ignoreUndefined));
179
+ }
180
+ else if (serializeFunctions) {
181
+ return ((name != null ? buffer_1.Buffer.byteLength(name, 'utf8') + 1 : 0) +
182
+ 1 +
183
+ 4 +
184
+ buffer_1.Buffer.byteLength(utils_1.normalizedFunctionString(value), 'utf8') +
185
+ 1);
186
+ }
187
+ }
36
188
  }
37
- }
38
-
39
- return totalLength;
40
- }
41
-
42
- /**
43
- * @ignore
44
- * @api private
45
- */
46
- function calculateElement(name, value, serializeFunctions, isArray, ignoreUndefined) {
47
- // If we have toBSON defined, override the current object
48
- if (value && value.toBSON) {
49
- value = value.toBSON();
50
- }
51
-
52
- switch (typeof value) {
53
- case 'string':
54
- return 1 + Buffer.byteLength(name, 'utf8') + 1 + 4 + Buffer.byteLength(value, 'utf8') + 1;
55
- case 'number':
56
- if (
57
- Math.floor(value) === value &&
58
- value >= constants.JS_INT_MIN &&
59
- value <= constants.JS_INT_MAX
60
- ) {
61
- if (value >= constants.BSON_INT32_MIN && value <= constants.BSON_INT32_MAX) {
62
- // 32 bit
63
- return (name != null ? Buffer.byteLength(name, 'utf8') + 1 : 0) + (4 + 1);
64
- } else {
65
- return (name != null ? Buffer.byteLength(name, 'utf8') + 1 : 0) + (8 + 1);
66
- }
67
- } else {
68
- // 64 bit
69
- return (name != null ? Buffer.byteLength(name, 'utf8') + 1 : 0) + (8 + 1);
70
- }
71
- case 'undefined':
72
- if (isArray || !ignoreUndefined)
73
- return (name != null ? Buffer.byteLength(name, 'utf8') + 1 : 0) + 1;
74
- return 0;
75
- case 'boolean':
76
- return (name != null ? Buffer.byteLength(name, 'utf8') + 1 : 0) + (1 + 1);
77
- case 'object':
78
- if (value == null || value['_bsontype'] === 'MinKey' || value['_bsontype'] === 'MaxKey') {
79
- return (name != null ? Buffer.byteLength(name, 'utf8') + 1 : 0) + 1;
80
- } else if (value['_bsontype'] === 'ObjectId' || value['_bsontype'] === 'ObjectID') {
81
- return (name != null ? Buffer.byteLength(name, 'utf8') + 1 : 0) + (12 + 1);
82
- } else if (value instanceof Date || isDate(value)) {
83
- return (name != null ? Buffer.byteLength(name, 'utf8') + 1 : 0) + (8 + 1);
84
- } else if (typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) {
85
- return (
86
- (name != null ? Buffer.byteLength(name, 'utf8') + 1 : 0) + (1 + 4 + 1) + value.length
87
- );
88
- } else if (
89
- value['_bsontype'] === 'Long' ||
90
- value['_bsontype'] === 'Double' ||
91
- value['_bsontype'] === 'Timestamp'
92
- ) {
93
- return (name != null ? Buffer.byteLength(name, 'utf8') + 1 : 0) + (8 + 1);
94
- } else if (value['_bsontype'] === 'Decimal128') {
95
- return (name != null ? Buffer.byteLength(name, 'utf8') + 1 : 0) + (16 + 1);
96
- } else if (value['_bsontype'] === 'Code') {
97
- // Calculate size depending on the availability of a scope
98
- if (value.scope != null && Object.keys(value.scope).length > 0) {
99
- return (
100
- (name != null ? Buffer.byteLength(name, 'utf8') + 1 : 0) +
101
- 1 +
102
- 4 +
103
- 4 +
104
- Buffer.byteLength(value.code.toString(), 'utf8') +
105
- 1 +
106
- calculateObjectSize(value.scope, serializeFunctions, ignoreUndefined)
107
- );
108
- } else {
109
- return (
110
- (name != null ? Buffer.byteLength(name, 'utf8') + 1 : 0) +
111
- 1 +
112
- 4 +
113
- Buffer.byteLength(value.code.toString(), 'utf8') +
114
- 1
115
- );
116
- }
117
- } else if (value['_bsontype'] === 'Binary') {
118
- // Check what kind of subtype we have
119
- if (value.sub_type === Binary.SUBTYPE_BYTE_ARRAY) {
120
- return (
121
- (name != null ? Buffer.byteLength(name, 'utf8') + 1 : 0) +
122
- (value.position + 1 + 4 + 1 + 4)
123
- );
124
- } else {
125
- return (
126
- (name != null ? Buffer.byteLength(name, 'utf8') + 1 : 0) + (value.position + 1 + 4 + 1)
127
- );
128
- }
129
- } else if (value['_bsontype'] === 'Symbol') {
130
- return (
131
- (name != null ? Buffer.byteLength(name, 'utf8') + 1 : 0) +
132
- Buffer.byteLength(value.value, 'utf8') +
133
- 4 +
134
- 1 +
135
- 1
136
- );
137
- } else if (value['_bsontype'] === 'DBRef') {
138
- // Set up correct object for serialization
139
- const ordered_values = Object.assign(
140
- {
141
- $ref: value.collection,
142
- $id: value.oid
143
- },
144
- value.fields
145
- );
146
-
147
- // Add db reference if it exists
148
- if (value.db != null) {
149
- ordered_values['$db'] = value.db;
150
- }
151
-
152
- return (
153
- (name != null ? Buffer.byteLength(name, 'utf8') + 1 : 0) +
154
- 1 +
155
- calculateObjectSize(ordered_values, serializeFunctions, ignoreUndefined)
156
- );
157
- } else if (
158
- value instanceof RegExp ||
159
- Object.prototype.toString.call(value) === '[object RegExp]'
160
- ) {
161
- return (
162
- (name != null ? Buffer.byteLength(name, 'utf8') + 1 : 0) +
163
- 1 +
164
- Buffer.byteLength(value.source, 'utf8') +
165
- 1 +
166
- (value.global ? 1 : 0) +
167
- (value.ignoreCase ? 1 : 0) +
168
- (value.multiline ? 1 : 0) +
169
- 1
170
- );
171
- } else if (value['_bsontype'] === 'BSONRegExp') {
172
- return (
173
- (name != null ? Buffer.byteLength(name, 'utf8') + 1 : 0) +
174
- 1 +
175
- Buffer.byteLength(value.pattern, 'utf8') +
176
- 1 +
177
- Buffer.byteLength(value.options, 'utf8') +
178
- 1
179
- );
180
- } else {
181
- return (
182
- (name != null ? Buffer.byteLength(name, 'utf8') + 1 : 0) +
183
- calculateObjectSize(value, serializeFunctions, ignoreUndefined) +
184
- 1
185
- );
186
- }
187
- case 'function':
188
- // WTF for 0.4.X where typeof /someregexp/ === 'function'
189
- if (
190
- value instanceof RegExp ||
191
- Object.prototype.toString.call(value) === '[object RegExp]' ||
192
- String.call(value) === '[object RegExp]'
193
- ) {
194
- return (
195
- (name != null ? Buffer.byteLength(name, 'utf8') + 1 : 0) +
196
- 1 +
197
- Buffer.byteLength(value.source, 'utf8') +
198
- 1 +
199
- (value.global ? 1 : 0) +
200
- (value.ignoreCase ? 1 : 0) +
201
- (value.multiline ? 1 : 0) +
202
- 1
203
- );
204
- } else {
205
- if (serializeFunctions && value.scope != null && Object.keys(value.scope).length > 0) {
206
- return (
207
- (name != null ? Buffer.byteLength(name, 'utf8') + 1 : 0) +
208
- 1 +
209
- 4 +
210
- 4 +
211
- Buffer.byteLength(normalizedFunctionString(value), 'utf8') +
212
- 1 +
213
- calculateObjectSize(value.scope, serializeFunctions, ignoreUndefined)
214
- );
215
- } else if (serializeFunctions) {
216
- return (
217
- (name != null ? Buffer.byteLength(name, 'utf8') + 1 : 0) +
218
- 1 +
219
- 4 +
220
- Buffer.byteLength(normalizedFunctionString(value), 'utf8') +
221
- 1
222
- );
223
- }
224
- }
225
- }
226
-
227
- return 0;
189
+ return 0;
228
190
  }
229
-
230
- module.exports = calculateObjectSize;
191
+ //# sourceMappingURL=calculate_size.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculate_size.js","sourceRoot":"","sources":["../../src/parser/calculate_size.ts"],"names":[],"mappings":"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"}