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
package/lib/bson.js CHANGED
@@ -1,279 +1,236 @@
1
- 'use strict';
2
-
3
- const Buffer = require('buffer').Buffer;
4
- const Map = require('./map');
5
- const Long = require('./long');
6
- const Double = require('./double');
7
- const Timestamp = require('./timestamp');
8
- const ObjectId = require('./objectid');
9
- const BSONRegExp = require('./regexp');
10
- const BSONSymbol = require('./symbol');
11
- const Int32 = require('./int_32');
12
- const Code = require('./code');
13
- const Decimal128 = require('./decimal128');
14
- const MinKey = require('./min_key');
15
- const MaxKey = require('./max_key');
16
- const DBRef = require('./db_ref');
17
- const Binary = require('./binary');
18
- const constants = require('./constants');
19
- const EJSON = require('./extended_json');
20
-
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deserializeStream = exports.calculateObjectSize = exports.deserialize = exports.serializeWithBufferAndIndex = exports.serialize = exports.setInternalBufferSize = exports.ObjectID = exports.Decimal128 = exports.BSONRegExp = exports.MaxKey = exports.MinKey = exports.Int32 = exports.Double = exports.Timestamp = exports.Long = exports.ObjectId = exports.Binary = exports.DBRef = exports.BSONSymbol = exports.Map = exports.Code = exports.LongWithoutOverridesClass = exports.EJSON = exports.BSON_INT64_MIN = exports.BSON_INT64_MAX = exports.BSON_INT32_MIN = exports.BSON_INT32_MAX = exports.BSON_DATA_UNDEFINED = exports.BSON_DATA_TIMESTAMP = exports.BSON_DATA_SYMBOL = exports.BSON_DATA_STRING = exports.BSON_DATA_REGEXP = exports.BSON_DATA_OID = exports.BSON_DATA_OBJECT = exports.BSON_DATA_NUMBER = exports.BSON_DATA_NULL = exports.BSON_DATA_MIN_KEY = exports.BSON_DATA_MAX_KEY = exports.BSON_DATA_LONG = exports.BSON_DATA_INT = exports.BSON_DATA_DECIMAL128 = exports.BSON_DATA_DBPOINTER = exports.BSON_DATA_DATE = exports.BSON_DATA_CODE_W_SCOPE = exports.BSON_DATA_CODE = exports.BSON_DATA_BOOLEAN = exports.BSON_DATA_BINARY = exports.BSON_DATA_ARRAY = exports.BSON_BINARY_SUBTYPE_UUID_NEW = exports.BSON_BINARY_SUBTYPE_UUID = exports.BSON_BINARY_SUBTYPE_USER_DEFINED = exports.BSON_BINARY_SUBTYPE_MD5 = exports.BSON_BINARY_SUBTYPE_FUNCTION = exports.BSON_BINARY_SUBTYPE_DEFAULT = exports.BSON_BINARY_SUBTYPE_BYTE_ARRAY = void 0;
4
+ const buffer_1 = require("buffer");
5
+ const binary_1 = require("./binary");
6
+ Object.defineProperty(exports, "Binary", { enumerable: true, get: function () { return binary_1.Binary; } });
7
+ const code_1 = require("./code");
8
+ Object.defineProperty(exports, "Code", { enumerable: true, get: function () { return code_1.Code; } });
9
+ const db_ref_1 = require("./db_ref");
10
+ Object.defineProperty(exports, "DBRef", { enumerable: true, get: function () { return db_ref_1.DBRef; } });
11
+ const decimal128_1 = require("./decimal128");
12
+ Object.defineProperty(exports, "Decimal128", { enumerable: true, get: function () { return decimal128_1.Decimal128; } });
13
+ const double_1 = require("./double");
14
+ Object.defineProperty(exports, "Double", { enumerable: true, get: function () { return double_1.Double; } });
15
+ const ensure_buffer_1 = require("./ensure_buffer");
16
+ const extended_json_1 = require("./extended_json");
17
+ const int_32_1 = require("./int_32");
18
+ Object.defineProperty(exports, "Int32", { enumerable: true, get: function () { return int_32_1.Int32; } });
19
+ const long_1 = require("./long");
20
+ Object.defineProperty(exports, "Long", { enumerable: true, get: function () { return long_1.Long; } });
21
+ const map_1 = require("./map");
22
+ Object.defineProperty(exports, "Map", { enumerable: true, get: function () { return map_1.Map; } });
23
+ const max_key_1 = require("./max_key");
24
+ Object.defineProperty(exports, "MaxKey", { enumerable: true, get: function () { return max_key_1.MaxKey; } });
25
+ const min_key_1 = require("./min_key");
26
+ Object.defineProperty(exports, "MinKey", { enumerable: true, get: function () { return min_key_1.MinKey; } });
27
+ const objectid_1 = require("./objectid");
28
+ Object.defineProperty(exports, "ObjectId", { enumerable: true, get: function () { return objectid_1.ObjectId; } });
29
+ Object.defineProperty(exports, "ObjectID", { enumerable: true, get: function () { return objectid_1.ObjectId; } });
30
+ const calculate_size_1 = require("./parser/calculate_size");
21
31
  // Parts of the parser
22
- const internalDeserialize = require('./parser/deserializer');
23
- const internalSerialize = require('./parser/serializer');
24
- const internalCalculateObjectSize = require('./parser/calculate_size');
25
- const ensureBuffer = require('./ensure_buffer');
26
-
27
- /**
28
- * @ignore
29
- */
32
+ const deserializer_1 = require("./parser/deserializer");
33
+ const serializer_1 = require("./parser/serializer");
34
+ const regexp_1 = require("./regexp");
35
+ Object.defineProperty(exports, "BSONRegExp", { enumerable: true, get: function () { return regexp_1.BSONRegExp; } });
36
+ const symbol_1 = require("./symbol");
37
+ Object.defineProperty(exports, "BSONSymbol", { enumerable: true, get: function () { return symbol_1.BSONSymbol; } });
38
+ const timestamp_1 = require("./timestamp");
39
+ Object.defineProperty(exports, "Timestamp", { enumerable: true, get: function () { return timestamp_1.Timestamp; } });
40
+ var constants_1 = require("./constants");
41
+ Object.defineProperty(exports, "BSON_BINARY_SUBTYPE_BYTE_ARRAY", { enumerable: true, get: function () { return constants_1.BSON_BINARY_SUBTYPE_BYTE_ARRAY; } });
42
+ Object.defineProperty(exports, "BSON_BINARY_SUBTYPE_DEFAULT", { enumerable: true, get: function () { return constants_1.BSON_BINARY_SUBTYPE_DEFAULT; } });
43
+ Object.defineProperty(exports, "BSON_BINARY_SUBTYPE_FUNCTION", { enumerable: true, get: function () { return constants_1.BSON_BINARY_SUBTYPE_FUNCTION; } });
44
+ Object.defineProperty(exports, "BSON_BINARY_SUBTYPE_MD5", { enumerable: true, get: function () { return constants_1.BSON_BINARY_SUBTYPE_MD5; } });
45
+ Object.defineProperty(exports, "BSON_BINARY_SUBTYPE_USER_DEFINED", { enumerable: true, get: function () { return constants_1.BSON_BINARY_SUBTYPE_USER_DEFINED; } });
46
+ Object.defineProperty(exports, "BSON_BINARY_SUBTYPE_UUID", { enumerable: true, get: function () { return constants_1.BSON_BINARY_SUBTYPE_UUID; } });
47
+ Object.defineProperty(exports, "BSON_BINARY_SUBTYPE_UUID_NEW", { enumerable: true, get: function () { return constants_1.BSON_BINARY_SUBTYPE_UUID_NEW; } });
48
+ Object.defineProperty(exports, "BSON_DATA_ARRAY", { enumerable: true, get: function () { return constants_1.BSON_DATA_ARRAY; } });
49
+ Object.defineProperty(exports, "BSON_DATA_BINARY", { enumerable: true, get: function () { return constants_1.BSON_DATA_BINARY; } });
50
+ Object.defineProperty(exports, "BSON_DATA_BOOLEAN", { enumerable: true, get: function () { return constants_1.BSON_DATA_BOOLEAN; } });
51
+ Object.defineProperty(exports, "BSON_DATA_CODE", { enumerable: true, get: function () { return constants_1.BSON_DATA_CODE; } });
52
+ Object.defineProperty(exports, "BSON_DATA_CODE_W_SCOPE", { enumerable: true, get: function () { return constants_1.BSON_DATA_CODE_W_SCOPE; } });
53
+ Object.defineProperty(exports, "BSON_DATA_DATE", { enumerable: true, get: function () { return constants_1.BSON_DATA_DATE; } });
54
+ Object.defineProperty(exports, "BSON_DATA_DBPOINTER", { enumerable: true, get: function () { return constants_1.BSON_DATA_DBPOINTER; } });
55
+ Object.defineProperty(exports, "BSON_DATA_DECIMAL128", { enumerable: true, get: function () { return constants_1.BSON_DATA_DECIMAL128; } });
56
+ Object.defineProperty(exports, "BSON_DATA_INT", { enumerable: true, get: function () { return constants_1.BSON_DATA_INT; } });
57
+ Object.defineProperty(exports, "BSON_DATA_LONG", { enumerable: true, get: function () { return constants_1.BSON_DATA_LONG; } });
58
+ Object.defineProperty(exports, "BSON_DATA_MAX_KEY", { enumerable: true, get: function () { return constants_1.BSON_DATA_MAX_KEY; } });
59
+ Object.defineProperty(exports, "BSON_DATA_MIN_KEY", { enumerable: true, get: function () { return constants_1.BSON_DATA_MIN_KEY; } });
60
+ Object.defineProperty(exports, "BSON_DATA_NULL", { enumerable: true, get: function () { return constants_1.BSON_DATA_NULL; } });
61
+ Object.defineProperty(exports, "BSON_DATA_NUMBER", { enumerable: true, get: function () { return constants_1.BSON_DATA_NUMBER; } });
62
+ Object.defineProperty(exports, "BSON_DATA_OBJECT", { enumerable: true, get: function () { return constants_1.BSON_DATA_OBJECT; } });
63
+ Object.defineProperty(exports, "BSON_DATA_OID", { enumerable: true, get: function () { return constants_1.BSON_DATA_OID; } });
64
+ Object.defineProperty(exports, "BSON_DATA_REGEXP", { enumerable: true, get: function () { return constants_1.BSON_DATA_REGEXP; } });
65
+ Object.defineProperty(exports, "BSON_DATA_STRING", { enumerable: true, get: function () { return constants_1.BSON_DATA_STRING; } });
66
+ Object.defineProperty(exports, "BSON_DATA_SYMBOL", { enumerable: true, get: function () { return constants_1.BSON_DATA_SYMBOL; } });
67
+ Object.defineProperty(exports, "BSON_DATA_TIMESTAMP", { enumerable: true, get: function () { return constants_1.BSON_DATA_TIMESTAMP; } });
68
+ Object.defineProperty(exports, "BSON_DATA_UNDEFINED", { enumerable: true, get: function () { return constants_1.BSON_DATA_UNDEFINED; } });
69
+ Object.defineProperty(exports, "BSON_INT32_MAX", { enumerable: true, get: function () { return constants_1.BSON_INT32_MAX; } });
70
+ Object.defineProperty(exports, "BSON_INT32_MIN", { enumerable: true, get: function () { return constants_1.BSON_INT32_MIN; } });
71
+ Object.defineProperty(exports, "BSON_INT64_MAX", { enumerable: true, get: function () { return constants_1.BSON_INT64_MAX; } });
72
+ Object.defineProperty(exports, "BSON_INT64_MIN", { enumerable: true, get: function () { return constants_1.BSON_INT64_MIN; } });
73
+ var extended_json_2 = require("./extended_json");
74
+ Object.defineProperty(exports, "EJSON", { enumerable: true, get: function () { return extended_json_2.EJSON; } });
75
+ var timestamp_2 = require("./timestamp");
76
+ Object.defineProperty(exports, "LongWithoutOverridesClass", { enumerable: true, get: function () { return timestamp_2.LongWithoutOverridesClass; } });
77
+ /** @internal */
30
78
  // Default Max Size
31
79
  const MAXSIZE = 1024 * 1024 * 17;
32
-
33
80
  // Current Internal Temporary Serialization Buffer
34
- let buffer = Buffer.alloc(MAXSIZE);
35
-
81
+ let buffer = buffer_1.Buffer.alloc(MAXSIZE);
36
82
  /**
37
83
  * Sets the size of the internal serialization buffer.
38
84
  *
39
- * @method
40
- * @param {number} size The desired size for the internal serialization buffer
85
+ * @param size - The desired size for the internal serialization buffer
86
+ * @public
41
87
  */
42
88
  function setInternalBufferSize(size) {
43
- // Resize the internal serialization buffer if needed
44
- if (buffer.length < size) {
45
- buffer = Buffer.alloc(size);
46
- }
89
+ // Resize the internal serialization buffer if needed
90
+ if (buffer.length < size) {
91
+ buffer = buffer_1.Buffer.alloc(size);
92
+ }
47
93
  }
48
-
94
+ exports.setInternalBufferSize = setInternalBufferSize;
49
95
  /**
50
96
  * Serialize a Javascript object.
51
97
  *
52
- * @param {Object} object the Javascript object to serialize.
53
- * @param {Boolean} [options.checkKeys] the serializer will check if keys are valid.
54
- * @param {Boolean} [options.serializeFunctions=false] serialize the javascript functions **(default:false)**.
55
- * @param {Boolean} [options.ignoreUndefined=true] ignore undefined fields **(default:true)**.
56
- * @return {Buffer} returns the Buffer object containing the serialized object.
98
+ * @param object - the Javascript object to serialize.
99
+ * @returns Buffer object containing the serialized object.
100
+ * @public
57
101
  */
58
- function serialize(object, options) {
59
- options = options || {};
60
- // Unpack the options
61
- const checkKeys = typeof options.checkKeys === 'boolean' ? options.checkKeys : false;
62
- const serializeFunctions =
63
- typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
64
- const ignoreUndefined =
65
- typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;
66
- const minInternalBufferSize =
67
- typeof options.minInternalBufferSize === 'number' ? options.minInternalBufferSize : MAXSIZE;
68
-
69
- // Resize the internal serialization buffer if needed
70
- if (buffer.length < minInternalBufferSize) {
71
- buffer = Buffer.alloc(minInternalBufferSize);
72
- }
73
-
74
- // Attempt to serialize
75
- const serializationIndex = internalSerialize(
76
- buffer,
77
- object,
78
- checkKeys,
79
- 0,
80
- 0,
81
- serializeFunctions,
82
- ignoreUndefined,
83
- []
84
- );
85
-
86
- // Create the final buffer
87
- const finishedBuffer = Buffer.alloc(serializationIndex);
88
-
89
- // Copy into the finished buffer
90
- buffer.copy(finishedBuffer, 0, 0, finishedBuffer.length);
91
-
92
- // Return the buffer
93
- return finishedBuffer;
102
+ function serialize(object, options = {}) {
103
+ // Unpack the options
104
+ const checkKeys = typeof options.checkKeys === 'boolean' ? options.checkKeys : false;
105
+ const serializeFunctions = typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
106
+ const ignoreUndefined = typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;
107
+ const minInternalBufferSize = typeof options.minInternalBufferSize === 'number' ? options.minInternalBufferSize : MAXSIZE;
108
+ // Resize the internal serialization buffer if needed
109
+ if (buffer.length < minInternalBufferSize) {
110
+ buffer = buffer_1.Buffer.alloc(minInternalBufferSize);
111
+ }
112
+ // Attempt to serialize
113
+ const serializationIndex = serializer_1.serializeInto(buffer, object, checkKeys, 0, 0, serializeFunctions, ignoreUndefined, []);
114
+ // Create the final buffer
115
+ const finishedBuffer = buffer_1.Buffer.alloc(serializationIndex);
116
+ // Copy into the finished buffer
117
+ buffer.copy(finishedBuffer, 0, 0, finishedBuffer.length);
118
+ // Return the buffer
119
+ return finishedBuffer;
94
120
  }
95
-
121
+ exports.serialize = serialize;
96
122
  /**
97
- * Serialize a Javascript object using a predefined Buffer and index into the buffer, useful when pre-allocating the space for serialization.
123
+ * Serialize a Javascript object using a predefined Buffer and index into the buffer,
124
+ * useful when pre-allocating the space for serialization.
98
125
  *
99
- * @param {Object} object the Javascript object to serialize.
100
- * @param {Buffer} buffer the Buffer you pre-allocated to store the serialized BSON object.
101
- * @param {Boolean} [options.checkKeys] the serializer will check if keys are valid.
102
- * @param {Boolean} [options.serializeFunctions=false] serialize the javascript functions **(default:false)**.
103
- * @param {Boolean} [options.ignoreUndefined=true] ignore undefined fields **(default:true)**.
104
- * @param {Number} [options.index] the index in the buffer where we wish to start serializing into.
105
- * @return {Number} returns the index pointing to the last written byte in the buffer.
126
+ * @param object - the Javascript object to serialize.
127
+ * @param finalBuffer - the Buffer you pre-allocated to store the serialized BSON object.
128
+ * @returns the index pointing to the last written byte in the buffer.
129
+ * @public
106
130
  */
107
- function serializeWithBufferAndIndex(object, finalBuffer, options) {
108
- options = options || {};
109
- // Unpack the options
110
- const checkKeys = typeof options.checkKeys === 'boolean' ? options.checkKeys : false;
111
- const serializeFunctions =
112
- typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
113
- const ignoreUndefined =
114
- typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;
115
- const startIndex = typeof options.index === 'number' ? options.index : 0;
116
-
117
- // Attempt to serialize
118
- const serializationIndex = internalSerialize(
119
- buffer,
120
- object,
121
- checkKeys,
122
- 0,
123
- 0,
124
- serializeFunctions,
125
- ignoreUndefined
126
- );
127
- buffer.copy(finalBuffer, startIndex, 0, serializationIndex);
128
-
129
- // Return the index
130
- return startIndex + serializationIndex - 1;
131
+ function serializeWithBufferAndIndex(object, finalBuffer, options = {}) {
132
+ // Unpack the options
133
+ const checkKeys = typeof options.checkKeys === 'boolean' ? options.checkKeys : false;
134
+ const serializeFunctions = typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
135
+ const ignoreUndefined = typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;
136
+ const startIndex = typeof options.index === 'number' ? options.index : 0;
137
+ // Attempt to serialize
138
+ const serializationIndex = serializer_1.serializeInto(buffer, object, checkKeys, 0, 0, serializeFunctions, ignoreUndefined);
139
+ buffer.copy(finalBuffer, startIndex, 0, serializationIndex);
140
+ // Return the index
141
+ return startIndex + serializationIndex - 1;
131
142
  }
132
-
143
+ exports.serializeWithBufferAndIndex = serializeWithBufferAndIndex;
133
144
  /**
134
145
  * Deserialize data as BSON.
135
146
  *
136
- * @param {Buffer} buffer the buffer containing the serialized set of BSON documents.
137
- * @param {Object} [options.evalFunctions=false] evaluate functions in the BSON document scoped to the object deserialized.
138
- * @param {Object} [options.cacheFunctions=false] cache evaluated functions for reuse.
139
- * @param {Object} [options.cacheFunctionsCrc32=false] use a crc32 code for caching, otherwise use the string of the function.
140
- * @param {Object} [options.promoteLongs=true] when deserializing a Long will fit it into a Number if it's smaller than 53 bits
141
- * @param {Object} [options.promoteBuffers=false] when deserializing a Binary will return it as a node.js Buffer instance.
142
- * @param {Object} [options.promoteValues=false] when deserializing will promote BSON values to their Node.js closest equivalent types.
143
- * @param {Object} [options.fieldsAsRaw=null] allow to specify if there what fields we wish to return as unserialized raw buffer.
144
- * @param {Object} [options.bsonRegExp=false] return BSON regular expressions as BSONRegExp instances.
145
- * @param {boolean} [options.allowObjectSmallerThanBufferSize=false] allows the buffer to be larger than the parsed BSON object
146
- * @return {Object} returns the deserialized Javascript Object.
147
+ * @param buffer - the buffer containing the serialized set of BSON documents.
148
+ * @returns returns the deserialized Javascript Object.
149
+ * @public
147
150
  */
148
- function deserialize(buffer, options) {
149
- buffer = ensureBuffer(buffer);
150
- return internalDeserialize(buffer, options);
151
+ function deserialize(buffer, options = {}) {
152
+ return deserializer_1.deserialize(ensure_buffer_1.ensureBuffer(buffer), options);
151
153
  }
152
-
154
+ exports.deserialize = deserialize;
153
155
  /**
154
156
  * Calculate the bson size for a passed in Javascript object.
155
157
  *
156
- * @param {Object} object the Javascript object to calculate the BSON byte size for.
157
- * @param {Boolean} [options.serializeFunctions=false] serialize the javascript functions **(default:false)**.
158
- * @param {Boolean} [options.ignoreUndefined=true] ignore undefined fields **(default:true)**.
159
- * @return {Number} returns the number of bytes the BSON object will take up.
158
+ * @param object - the Javascript object to calculate the BSON byte size for
159
+ * @returns size of BSON object in bytes
160
+ * @public
160
161
  */
161
- function calculateObjectSize(object, options) {
162
- options = options || {};
163
-
164
- const serializeFunctions =
165
- typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
166
- const ignoreUndefined =
167
- typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;
168
-
169
- return internalCalculateObjectSize(object, serializeFunctions, ignoreUndefined);
162
+ function calculateObjectSize(object, options = {}) {
163
+ options = options || {};
164
+ const serializeFunctions = typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
165
+ const ignoreUndefined = typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;
166
+ return calculate_size_1.calculateObjectSize(object, serializeFunctions, ignoreUndefined);
170
167
  }
171
-
168
+ exports.calculateObjectSize = calculateObjectSize;
172
169
  /**
173
170
  * Deserialize stream data as BSON documents.
174
171
  *
175
- * @param {Buffer} data the buffer containing the serialized set of BSON documents.
176
- * @param {Number} startIndex the start index in the data Buffer where the deserialization is to start.
177
- * @param {Number} numberOfDocuments number of documents to deserialize.
178
- * @param {Array} documents an array where to store the deserialized documents.
179
- * @param {Number} docStartIndex the index in the documents array from where to start inserting documents.
180
- * @param {Object} [options] additional options used for the deserialization.
181
- * @param {Object} [options.evalFunctions=false] evaluate functions in the BSON document scoped to the object deserialized.
182
- * @param {Object} [options.cacheFunctions=false] cache evaluated functions for reuse.
183
- * @param {Object} [options.cacheFunctionsCrc32=false] use a crc32 code for caching, otherwise use the string of the function.
184
- * @param {Object} [options.promoteLongs=true] when deserializing a Long will fit it into a Number if it's smaller than 53 bits
185
- * @param {Object} [options.promoteBuffers=false] when deserializing a Binary will return it as a node.js Buffer instance.
186
- * @param {Object} [options.promoteValues=false] when deserializing will promote BSON values to their Node.js closest equivalent types.
187
- * @param {Object} [options.fieldsAsRaw=null] allow to specify if there what fields we wish to return as unserialized raw buffer.
188
- * @param {Object} [options.bsonRegExp=false] return BSON regular expressions as BSONRegExp instances.
189
- * @return {Number} returns the next index in the buffer after deserialization **x** numbers of documents.
172
+ * @param data - the buffer containing the serialized set of BSON documents.
173
+ * @param startIndex - the start index in the data Buffer where the deserialization is to start.
174
+ * @param numberOfDocuments - number of documents to deserialize.
175
+ * @param documents - an array where to store the deserialized documents.
176
+ * @param docStartIndex - the index in the documents array from where to start inserting documents.
177
+ * @param options - additional options used for the deserialization.
178
+ * @returns next index in the buffer after deserialization **x** numbers of documents.
179
+ * @public
190
180
  */
191
181
  function deserializeStream(data, startIndex, numberOfDocuments, documents, docStartIndex, options) {
192
- options = Object.assign({ allowObjectSmallerThanBufferSize: true }, options);
193
- data = ensureBuffer(data);
194
-
195
- let index = startIndex;
196
- // Loop over all documents
197
- for (let i = 0; i < numberOfDocuments; i++) {
198
- // Find size of the document
199
- const size =
200
- data[index] | (data[index + 1] << 8) | (data[index + 2] << 16) | (data[index + 3] << 24);
201
- // Update options with index
202
- options.index = index;
203
- // Parse the document at this point
204
- documents[docStartIndex + i] = internalDeserialize(data, options);
205
- // Adjust index by the document size
206
- index = index + size;
207
- }
208
-
209
- // Return object containing end index of parsing and list of documents
210
- return index;
182
+ const internalOptions = Object.assign({ allowObjectSmallerThanBufferSize: true, index: 0 }, options);
183
+ const bufferData = ensure_buffer_1.ensureBuffer(data);
184
+ let index = startIndex;
185
+ // Loop over all documents
186
+ for (let i = 0; i < numberOfDocuments; i++) {
187
+ // Find size of the document
188
+ const size = bufferData[index] |
189
+ (bufferData[index + 1] << 8) |
190
+ (bufferData[index + 2] << 16) |
191
+ (bufferData[index + 3] << 24);
192
+ // Update options with index
193
+ internalOptions.index = index;
194
+ // Parse the document at this point
195
+ documents[docStartIndex + i] = deserializer_1.deserialize(bufferData, internalOptions);
196
+ // Adjust index by the document size
197
+ index = index + size;
198
+ }
199
+ // Return object containing end index of parsing and list of documents
200
+ return index;
211
201
  }
212
-
213
- module.exports = {
214
- // constants
215
- // NOTE: this is done this way because rollup can't resolve an `Object.assign`ed export
216
- BSON_INT32_MAX: constants.BSON_INT32_MAX,
217
- BSON_INT32_MIN: constants.BSON_INT32_MIN,
218
- BSON_INT64_MAX: constants.BSON_INT64_MAX,
219
- BSON_INT64_MIN: constants.BSON_INT64_MIN,
220
- JS_INT_MAX: constants.JS_INT_MAX,
221
- JS_INT_MIN: constants.JS_INT_MIN,
222
- BSON_DATA_NUMBER: constants.BSON_DATA_NUMBER,
223
- BSON_DATA_STRING: constants.BSON_DATA_STRING,
224
- BSON_DATA_OBJECT: constants.BSON_DATA_OBJECT,
225
- BSON_DATA_ARRAY: constants.BSON_DATA_ARRAY,
226
- BSON_DATA_BINARY: constants.BSON_DATA_BINARY,
227
- BSON_DATA_UNDEFINED: constants.BSON_DATA_UNDEFINED,
228
- BSON_DATA_OID: constants.BSON_DATA_OID,
229
- BSON_DATA_BOOLEAN: constants.BSON_DATA_BOOLEAN,
230
- BSON_DATA_DATE: constants.BSON_DATA_DATE,
231
- BSON_DATA_NULL: constants.BSON_DATA_NULL,
232
- BSON_DATA_REGEXP: constants.BSON_DATA_REGEXP,
233
- BSON_DATA_DBPOINTER: constants.BSON_DATA_DBPOINTER,
234
- BSON_DATA_CODE: constants.BSON_DATA_CODE,
235
- BSON_DATA_SYMBOL: constants.BSON_DATA_SYMBOL,
236
- BSON_DATA_CODE_W_SCOPE: constants.BSON_DATA_CODE_W_SCOPE,
237
- BSON_DATA_INT: constants.BSON_DATA_INT,
238
- BSON_DATA_TIMESTAMP: constants.BSON_DATA_TIMESTAMP,
239
- BSON_DATA_LONG: constants.BSON_DATA_LONG,
240
- BSON_DATA_DECIMAL128: constants.BSON_DATA_DECIMAL128,
241
- BSON_DATA_MIN_KEY: constants.BSON_DATA_MIN_KEY,
242
- BSON_DATA_MAX_KEY: constants.BSON_DATA_MAX_KEY,
243
- BSON_BINARY_SUBTYPE_DEFAULT: constants.BSON_BINARY_SUBTYPE_DEFAULT,
244
- BSON_BINARY_SUBTYPE_FUNCTION: constants.BSON_BINARY_SUBTYPE_FUNCTION,
245
- BSON_BINARY_SUBTYPE_BYTE_ARRAY: constants.BSON_BINARY_SUBTYPE_BYTE_ARRAY,
246
- BSON_BINARY_SUBTYPE_UUID: constants.BSON_BINARY_SUBTYPE_UUID,
247
- BSON_BINARY_SUBTYPE_MD5: constants.BSON_BINARY_SUBTYPE_MD5,
248
- BSON_BINARY_SUBTYPE_USER_DEFINED: constants.BSON_BINARY_SUBTYPE_USER_DEFINED,
249
-
250
- // wrapped types
251
- Code,
252
- Map,
253
- BSONSymbol,
254
- DBRef,
255
- Binary,
256
- ObjectId,
257
- Long,
258
- Timestamp,
259
- Double,
260
- Int32,
261
- MinKey,
262
- MaxKey,
263
- BSONRegExp,
264
- Decimal128,
265
-
266
- // methods
267
- serialize,
268
- serializeWithBufferAndIndex,
269
- deserialize,
270
- calculateObjectSize,
271
- deserializeStream,
272
- setInternalBufferSize,
273
-
274
- // legacy support
275
- ObjectID: ObjectId,
276
-
277
- // Extended JSON
278
- EJSON
202
+ exports.deserializeStream = deserializeStream;
203
+ /**
204
+ * BSON default export
205
+ * @deprecated Please use named exports
206
+ * @privateRemarks
207
+ * We want to someday deprecate the default export,
208
+ * so none of the new TS types are being exported on the default
209
+ * @public
210
+ */
211
+ const BSON = {
212
+ Binary: binary_1.Binary,
213
+ Code: code_1.Code,
214
+ DBRef: db_ref_1.DBRef,
215
+ Decimal128: decimal128_1.Decimal128,
216
+ Double: double_1.Double,
217
+ Int32: int_32_1.Int32,
218
+ Long: long_1.Long,
219
+ Map: map_1.Map,
220
+ MaxKey: max_key_1.MaxKey,
221
+ MinKey: min_key_1.MinKey,
222
+ ObjectId: objectid_1.ObjectId,
223
+ ObjectID: objectid_1.ObjectId,
224
+ BSONRegExp: regexp_1.BSONRegExp,
225
+ BSONSymbol: symbol_1.BSONSymbol,
226
+ Timestamp: timestamp_1.Timestamp,
227
+ EJSON: extended_json_1.EJSON,
228
+ setInternalBufferSize,
229
+ serialize,
230
+ serializeWithBufferAndIndex,
231
+ deserialize,
232
+ calculateObjectSize,
233
+ deserializeStream
279
234
  };
235
+ exports.default = BSON;
236
+ //# sourceMappingURL=bson.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bson.js","sourceRoot":"","sources":["../src/bson.ts"],"names":[],"mappings":"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"}
package/lib/code.js CHANGED
@@ -1,46 +1,43 @@
1
- 'use strict';
2
-
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Code = void 0;
3
4
  /**
4
5
  * A class representation of the BSON Code type.
6
+ * @public
5
7
  */
6
8
  class Code {
7
- /**
8
- * Create a Code type
9
- *
10
- * @param {(string|function)} code a string or function.
11
- * @param {Object} [scope] an optional scope for the function.
12
- * @return {Code}
13
- */
14
- constructor(code, scope) {
15
- this.code = code;
16
- this.scope = scope;
17
- }
18
-
19
- /**
20
- * @ignore
21
- */
22
- toJSON() {
23
- return { scope: this.scope, code: this.code };
24
- }
25
-
26
- /**
27
- * @ignore
28
- */
29
- toExtendedJSON() {
30
- if (this.scope) {
31
- return { $code: this.code, $scope: this.scope };
9
+ /**
10
+ * @param code - a string or function.
11
+ * @param scope - an optional scope for the function.
12
+ */
13
+ constructor(code, scope) {
14
+ this.code = code;
15
+ this.scope = scope;
16
+ }
17
+ /** @internal */
18
+ toJSON() {
19
+ return { code: this.code, scope: this.scope };
20
+ }
21
+ /** @internal */
22
+ toExtendedJSON() {
23
+ if (this.scope) {
24
+ return { $code: this.code, $scope: this.scope };
25
+ }
26
+ return { $code: this.code };
27
+ }
28
+ /** @internal */
29
+ static fromExtendedJSON(doc) {
30
+ return new Code(doc.$code, doc.$scope);
31
+ }
32
+ /** @internal */
33
+ [Symbol.for('nodejs.util.inspect.custom')]() {
34
+ return this.inspect();
35
+ }
36
+ inspect() {
37
+ const codeJson = this.toJSON();
38
+ return `Code("${codeJson.code}"${codeJson.scope ? `, ${JSON.stringify(codeJson.scope)}` : ''})`;
32
39
  }
33
-
34
- return { $code: this.code };
35
- }
36
-
37
- /**
38
- * @ignore
39
- */
40
- static fromExtendedJSON(doc) {
41
- return new Code(doc.$code, doc.$scope);
42
- }
43
40
  }
44
-
41
+ exports.Code = Code;
45
42
  Object.defineProperty(Code.prototype, '_bsontype', { value: 'Code' });
46
- module.exports = Code;
43
+ //# sourceMappingURL=code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code.js","sourceRoot":"","sources":["../src/code.ts"],"names":[],"mappings":";;;AAQA;;;GAGG;AACH,MAAa,IAAI;IAKf;;;OAGG;IACH,YAAY,IAAuB,EAAE,KAAgB;QACnD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,gBAAgB;IAChB,MAAM;QACJ,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAChD,CAAC;IAED,gBAAgB;IAChB,cAAc;QACZ,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;SACjD;QAED,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,gBAAgB;IAChB,MAAM,CAAC,gBAAgB,CAAC,GAAiB;QACvC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,gBAAgB;IAChB,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,OAAO;QACL,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC/B,OAAO,SAAS,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;IAClG,CAAC;CACF;AA1CD,oBA0CC;AAED,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC"}