[Snyk] Upgrade bson from 6.9.0 to 6.10.0 #507
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Snyk has created this PR to upgrade bson from 6.9.0 to 6.10.0.
ℹ️ Keep your dependencies up-to-date. This makes it easier to fix existing vulnerabilities and to more quickly identify and fix newly disclosed vulnerabilities when they affect your project.
The recommended version is 1 version ahead of your current version.
The recommended version was released on 22 days ago.
Release notes
Package name: bson
6.10.0 (2024-11-18)
The MongoDB Node.js team is pleased to announce version 6.10.0 of the
bson
package!Release Notes
BSON Binary Vector Support!
The
Binary
class has new helpers to assist with using the newly minted Vectorsub_type
of Binarysub_type == 9
🎉! For more on how these types can be used with MongoDB take a look at How to Ingest Quantized Vectors!Here's a summary of the API:
toInt8Array(): Int8Array;
toFloat32Array(): Float32Array;
toPackedBits(): Uint8Array;
static fromInt8Array(array: Int8Array): Binary;
static fromFloat32Array(array: Float32Array): Binary;
static fromPackedBits(array: Uint8Array, padding: number = 0): Binary;
}
Relatively self-explanatory: each one supports converting to and constructing from a native Javascript data type that corresponds to one of the three vector types:
Int8
,Float32
,PackedBit
.Vector Bytes Format
When a Binary is
sub_type
9 the first two bytes are set to important metadata about the vector.binary.buffer[0]
- Thedatatype
that indicates what the following bytes are.binary.buffer[1]
- Thepadding
amount, a value 0-7 that indicates how many bits to ignore in aPackedBit
vector.Packed Bits 📦
static fromPackedBits(array: Uint8Array, padding: number = 0)
When handling packed bits, the last byte may not be entirely used. For example, a PackedBit vector =
[0xFF, 0xF0]
with padding =4
ignores those last four 0s making the bit vector logically equal to 12 ones.Important
When using the
fromPackedBits
method to set your padding amount to avoid inadvertently extending your bit vector.Unpacking Bits 🧳
Packed bits get special treatment with two styles of conversion methods to suit your vector-y needs.
toBits
will return individually addressable bits shifted apart into an array.fromBits
takes the same format in reverse and packs the bits into bytes.Notice there is no argument to set the
padding
. That is because it can be determined by the array's length. Recall those 12 ones from the previous example, well, the padding has to be 4 to reach a multiple of 8.Caution
We highly encourage using ONLY these methods to interact with vector data and avoid operating directly on the byte format. Other Binary class methods (
put()
,write()
read()
, andvalue()
) and direct access of data in a Binary'sbuffer
beyond the 1st index should only be used in exceptional circumstances and with extreme caution after closely consulting the BSON Vector specification.Details to keep in mind
read()
always returns unsigned bytes.2
.Binary's
read()
returns a view ofBinary.buffer
Binary's
read()
return type claimed it would returnnumber[]
orUint8Array
which was true in previous BSON versions that didn't always store a Uint8Array on the buffer property likeBinary
does today.read()
's length parameter did not respect theposition
value allowing reading bytes beyond the data that is actually stored in the Binary. This has been corrected.Additionally, this method returned a view in Node.js environments and a copy in Web environments. it has been fixed to always return a view.
Features
Bug Fixes
Documentation
We invite you to try the
bson
library immediately, and report any issues to the NODE project.6.9.0 (2024-10-15)
The MongoDB Node.js team is pleased to announce version 6.9.0 of the
bson
package!Release Notes
Timestamp now has
t
andi
propertiesTo make this type a bit easier to use we are surfacing the breakdown of the two internal 32 bit segments of a Timestamp value.
ObjectId.isValid(string)
performance improvementOften used to validate whether a hex string is the correct length and proper format before constructing an ObjectId for querying, the isValid function will validate strings much faster than before. Many thanks to @ SeanReece for the contribution!
Serialization performance improved.
Optimizations have been implemented with respect to BSON serialization across the board, resulting in up to 20% gains in serialization with a sample of MFlix documents. Thanks again to @ SeanReece for the contribution!
Features
t
andi
to Timestamp (#704) (b766d0f)Performance Improvements
Documentation
We invite you to try the
bson
library immediately, and report any issues to the NODE project.Important
Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open upgrade PRs.
For more information: