diff --git a/docs/Next/assets/navigation.js b/docs/Next/assets/navigation.js index 5fe29e2b1d0..9c29154f12c 100644 --- a/docs/Next/assets/navigation.js +++ b/docs/Next/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,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" \ No newline at end of file +window.navigationData = "data:application/octet-stream;base64,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" \ No newline at end of file diff --git a/docs/Next/assets/search.js b/docs/Next/assets/search.js index afa2c4b18b6..38d940b2906 100644 --- a/docs/Next/assets/search.js +++ b/docs/Next/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/Next/classes/AbstractCursor.html b/docs/Next/classes/AbstractCursor.html index dc5548331da..79cffab4b95 100644 --- a/docs/Next/classes/AbstractCursor.html +++ b/docs/Next/classes/AbstractCursor.html @@ -412,7 +412,7 @@

Returns Binary

diff --git a/docs/Next/classes/BSON.Decimal128.html b/docs/Next/classes/BSON.Decimal128.html index f1c4505a19c..947b4ddb0f7 100644 --- a/docs/Next/classes/BSON.Decimal128.html +++ b/docs/Next/classes/BSON.Decimal128.html @@ -7,9 +7,9 @@ toString fromString fromStringWithRounding -

Constructors

  • Parameters

    • bytes: string | Uint8Array

      a buffer containing the raw Decimal128 bytes in little endian order, +

Constructors

  • Parameters

    • bytes: string | Uint8Array<ArrayBufferLike>

      a buffer containing the raw Decimal128 bytes in little endian order, or a string representation as returned by .toString()

      -

    Returns Decimal128

Properties

bytes: Uint8Array

Accessors

  • get _bsontype(): "Decimal128"
  • Returns "Decimal128"

Methods

  • Prints a human-readable string of BSON value information +

Returns Decimal128

Properties

bytes: Uint8Array<ArrayBufferLike>

Accessors

  • get _bsontype(): "Decimal128"
  • Returns "Decimal128"

Methods

  • Prints a human-readable string of BSON value information If invoked manually without node.js.inspect function, this will default to a modified JSON.stringify

    Parameters

    • Optionaldepth: number
    • Optionaloptions: unknown
    • Optionalinspect: InspectFn

    Returns string

  • Create a string representation of the raw Decimal128 value

    Returns string

  • Create a Decimal128 instance from a string representation

    diff --git a/docs/Next/classes/BSON.Long.html b/docs/Next/classes/BSON.Long.html index 8f0a4ec75f2..31d835f0cda 100644 --- a/docs/Next/classes/BSON.Long.html +++ b/docs/Next/classes/BSON.Long.html @@ -124,29 +124,29 @@
ZERO: Long

Signed zero

Accessors

  • get __isLong__(): boolean
  • An indicator used to reliably determine if an object is a Long or not.

    Returns boolean

  • get _bsontype(): "Long"
  • Returns "Long"

Methods

  • Returns the sum of this and the specified Long.

    -

    Parameters

    • addend:
          | string
          | number
          | Timestamp
          | Long

    Returns Long

  • Returns the sum of this and the specified Long.

    -

    Parameters

    • other:
          | string
          | number
          | Timestamp
          | Long

    Returns Long

    Sum

    +

    Parameters

    • addend:
          | string
          | number
          | Long
          | Timestamp

    Returns Long

  • Returns the sum of this and the specified Long.

    +

    Parameters

    • other:
          | string
          | number
          | Long
          | Timestamp

    Returns Long

    Sum

  • This is an alias of Long.compare

    -

    Parameters

    • other:
          | string
          | number
          | Timestamp
          | Long

    Returns -1 | 0 | 1

  • Compares this Long's value with the specified's.

    -

    Parameters

    • other:
          | string
          | number
          | Timestamp
          | Long

    Returns -1 | 0 | 1

    0 if they are the same, 1 if the this is greater and -1 if the given one is greater

    +

    Parameters

    • other:
          | string
          | number
          | Long
          | Timestamp

    Returns -1 | 0 | 1

  • Compares this Long's value with the specified's.

    +

    Parameters

    • other:
          | string
          | number
          | Long
          | Timestamp

    Returns -1 | 0 | 1

    0 if they are the same, 1 if the this is greater and -1 if the given one is greater

  • This is an alias of Long.divide

    -

    Parameters

    • divisor:
          | string
          | number
          | Timestamp
          | Long

    Returns Long

  • Returns this Long divided by the specified. The result is signed if this Long is signed or unsigned if this Long is unsigned.

    -

    Parameters

    • divisor:
          | string
          | number
          | Timestamp
          | Long

    Returns Long

    Quotient

    +

    Parameters

    • divisor:
          | string
          | number
          | Long
          | Timestamp

    Returns Long

  • Returns this Long divided by the specified. The result is signed if this Long is signed or unsigned if this Long is unsigned.

    +

    Parameters

    • divisor:
          | string
          | number
          | Long
          | Timestamp

    Returns Long

    Quotient

  • This is an alias of Long.equals

    -

    Parameters

    • other:
          | string
          | number
          | Timestamp
          | Long

    Returns boolean

  • Tests if this Long's value equals the specified's.

    -

    Parameters

    • other:
          | string
          | number
          | Timestamp
          | Long

      Other value

      +

      Parameters

      • other:
            | string
            | number
            | Long
            | Timestamp

      Returns boolean

  • Tests if this Long's value equals the specified's.

    +

    Parameters

    • other:
          | string
          | number
          | Long
          | Timestamp

      Other value

    Returns boolean

  • This is an alias of Long.isZero

    Returns boolean

  • This is an alias of Long.greaterThanOrEqual

    -

    Parameters

    • other:
          | string
          | number
          | Timestamp
          | Long

    Returns boolean

  • Gets the high 32 bits as a signed integer.

    +

    Parameters

    • other:
          | string
          | number
          | Long
          | Timestamp

    Returns boolean

  • Gets the high 32 bits as a signed integer.

    Returns number

  • Gets the high 32 bits as an unsigned integer.

    Returns number

  • Gets the low 32 bits as a signed integer.

    Returns number

  • Gets the low 32 bits as an unsigned integer.

    Returns number

  • Gets the number of bits needed to represent the absolute value of this Long.

    Returns number

  • Tests if this Long's value is greater than the specified's.

    -

    Parameters

    • other:
          | string
          | number
          | Timestamp
          | Long

    Returns boolean

  • Tests if this Long's value is greater than or equal the specified's.

    -

    Parameters

    • other:
          | string
          | number
          | Timestamp
          | Long

    Returns boolean

  • This is an alias of Long.greaterThan

    -

    Parameters

    • other:
          | string
          | number
          | Timestamp
          | Long

    Returns boolean

  • This is an alias of Long.greaterThanOrEqual

    -

    Parameters

    • other:
          | string
          | number
          | Timestamp
          | Long

    Returns boolean

  • Prints a human-readable string of BSON value information +

    Parameters

    • other:
          | string
          | number
          | Long
          | Timestamp

    Returns boolean

  • Tests if this Long's value is greater than or equal the specified's.

    +

    Parameters

    • other:
          | string
          | number
          | Long
          | Timestamp

    Returns boolean

  • This is an alias of Long.greaterThan

    +

    Parameters

    • other:
          | string
          | number
          | Long
          | Timestamp

    Returns boolean

  • This is an alias of Long.greaterThanOrEqual

    +

    Parameters

    • other:
          | string
          | number
          | Long
          | Timestamp

    Returns boolean

  • Prints a human-readable string of BSON value information If invoked manually without node.js.inspect function, this will default to a modified JSON.stringify

    Parameters

    • Optionaldepth: number
    • Optionaloptions: unknown
    • Optionalinspect: InspectFn

    Returns string

  • Tests if this Long's value is even.

    Returns boolean

  • Tests if this Long's value is negative.

    @@ -154,25 +154,25 @@

    Returns boolean

  • Tests if this Long's value is positive.

    Returns boolean

  • Tests if this Long's value equals zero.

    Returns boolean

  • This is an alias of Long.lessThanOrEqual

    -

    Parameters

    • other:
          | string
          | number
          | Timestamp
          | Long

    Returns boolean

  • Tests if this Long's value is less than the specified's.

    -

    Parameters

    • other:
          | string
          | number
          | Timestamp
          | Long

    Returns boolean

  • Tests if this Long's value is less than or equal the specified's.

    -

    Parameters

    • other:
          | string
          | number
          | Timestamp
          | Long

    Returns boolean

  • This is an alias of Long#lessThan.

    -

    Parameters

    • other:
          | string
          | number
          | Timestamp
          | Long

    Returns boolean

  • This is an alias of Long.lessThanOrEqual

    -

    Parameters

    • other:
          | string
          | number
          | Timestamp
          | Long

    Returns boolean

  • This is an alias of Long.modulo

    -

    Parameters

    • divisor:
          | string
          | number
          | Timestamp
          | Long

    Returns Long

  • Returns this Long modulo the specified.

    -

    Parameters

    • divisor:
          | string
          | number
          | Timestamp
          | Long

    Returns Long

  • This is an alias of Long.multiply

    -

    Parameters

    • multiplier:
          | string
          | number
          | Timestamp
          | Long

    Returns Long

  • Returns the product of this and the specified Long.

    -

    Parameters

    • multiplier:
          | string
          | number
          | Timestamp
          | Long

      Multiplier

      +

      Parameters

      • other:
            | string
            | number
            | Long
            | Timestamp

      Returns boolean

  • Tests if this Long's value is less than the specified's.

    +

    Parameters

    • other:
          | string
          | number
          | Long
          | Timestamp

    Returns boolean

  • Tests if this Long's value is less than or equal the specified's.

    +

    Parameters

    • other:
          | string
          | number
          | Long
          | Timestamp

    Returns boolean

  • This is an alias of Long#lessThan.

    +

    Parameters

    • other:
          | string
          | number
          | Long
          | Timestamp

    Returns boolean

  • This is an alias of Long.lessThanOrEqual

    +

    Parameters

    • other:
          | string
          | number
          | Long
          | Timestamp

    Returns boolean

  • This is an alias of Long.modulo

    +

    Parameters

    • divisor:
          | string
          | number
          | Long
          | Timestamp

    Returns Long

  • Returns this Long modulo the specified.

    +

    Parameters

    • divisor:
          | string
          | number
          | Long
          | Timestamp

    Returns Long

  • This is an alias of Long.multiply

    +

    Parameters

    • multiplier:
          | string
          | number
          | Long
          | Timestamp

    Returns Long

  • Returns the product of this and the specified Long.

    +

    Parameters

    • multiplier:
          | string
          | number
          | Long
          | Timestamp

      Multiplier

    Returns Long

    Product

  • This is an alias of Long.notEquals

    -

    Parameters

    • other:
          | string
          | number
          | Timestamp
          | Long

    Returns boolean

  • This is an alias of Long.negate

    +

    Parameters

    • other:
          | string
          | number
          | Long
          | Timestamp

    Returns boolean

  • This is an alias of Long.negate

    Returns Long

  • Returns the Negation of this Long's value.

    Returns Long

  • This is an alias of Long.notEquals

    -

    Parameters

    • other:
          | string
          | number
          | Timestamp
          | Long

    Returns boolean

  • Returns the bitwise NOT of this Long.

    +

    Parameters

    • other:
          | string
          | number
          | Long
          | Timestamp

    Returns boolean

  • Returns the bitwise NOT of this Long.

    Returns Long

  • Tests if this Long's value differs from the specified's.

    -

    Parameters

    • other:
          | string
          | number
          | Timestamp
          | Long

    Returns boolean

  • Returns the bitwise OR of this Long and the specified.

    +

    Parameters

    • other:
          | string
          | number
          | Long
          | Timestamp

    Returns boolean

  • Returns the bitwise OR of this Long and the specified.

    Parameters

    • other: string | number | Long

    Returns Long

  • This is an alias of Long.modulo

    -

    Parameters

    • divisor:
          | string
          | number
          | Timestamp
          | Long

    Returns Long

  • Returns this Long with bits shifted to the left by the given amount.

    +

    Parameters

    • divisor:
          | string
          | number
          | Long
          | Timestamp

    Returns Long

  • Returns this Long with bits shifted to the left by the given amount.

    Parameters

    • numBits: number | Long

      Number of bits

    Returns Long

    Shifted Long

  • Returns this Long with bits arithmetically shifted to the right by the given amount.

    @@ -186,8 +186,8 @@

    Parameters

    • numBits: number | Long

    Returns Long

  • This is an alias of Long.subtract

    -

    Parameters

    • subtrahend:
          | string
          | number
          | Timestamp
          | Long

    Returns Long

  • Returns the difference of this and the specified Long.

    -

    Parameters

    • subtrahend:
          | string
          | number
          | Timestamp
          | Long

      Subtrahend

      +

      Parameters

      • subtrahend:
            | string
            | number
            | Long
            | Timestamp

      Returns Long

  • Returns the difference of this and the specified Long.

    +

    Parameters

    • subtrahend:
          | string
          | number
          | Long
          | Timestamp

      Subtrahend

    Returns Long

    Difference

  • Converts the Long to a BigInt (arbitrary precision).

    Returns bigint

  • Converts this Long to its byte representation.

    diff --git a/docs/Next/classes/BSON.ObjectId.html b/docs/Next/classes/BSON.ObjectId.html index 6ea27e28303..ca1570516e0 100644 --- a/docs/Next/classes/BSON.ObjectId.html +++ b/docs/Next/classes/BSON.ObjectId.html @@ -24,12 +24,12 @@

Returns ObjectId

  • Create ObjectId from the object type that has the toHexString method.

    Parameters

    Returns ObjectId

  • Create ObjectId from a 12 byte binary Buffer.

    -

    Parameters

    • inputId: Uint8Array

      A 12 byte binary Buffer.

      +

      Parameters

      • inputId: Uint8Array<ArrayBufferLike>

        A 12 byte binary Buffer.

      Returns ObjectId

    • To generate a new ObjectId, use ObjectId() with no argument.

      Returns ObjectId

    • Implementation overload.

      -

      Parameters

      • OptionalinputId:
            | string
            | number
            | Uint8Array
            | ObjectId
            | ObjectIdLike

        All input types that are used in the constructor implementation.

        -

      Returns ObjectId

  • Properties

    cacheHexString: boolean

    Accessors

    • get _bsontype(): "ObjectId"
    • Returns "ObjectId"

    • get id(): Uint8Array
    • The ObjectId bytes

      -

      Returns Uint8Array

    Methods

    • Compares the equality of this ObjectId with otherID.

      +

      Parameters

      • OptionalinputId:
            | string
            | number
            | Uint8Array<ArrayBufferLike>
            | ObjectId
            | ObjectIdLike

        All input types that are used in the constructor implementation.

        +

      Returns ObjectId

    Properties

    cacheHexString: boolean

    Accessors

    • get _bsontype(): "ObjectId"
    • Returns "ObjectId"

    • get id(): Uint8Array<ArrayBufferLike>
    • The ObjectId bytes

      +

      Returns Uint8Array<ArrayBufferLike>

    Methods

    • Compares the equality of this ObjectId with otherID.

      Parameters

      • otherId:
            | undefined
            | null
            | string
            | ObjectId
            | ObjectIdLike

        ObjectId instance to compare against.

      Returns boolean

    • Returns the generation date (accurate up to the second) that this ID was generated.

      Returns Date

    • Converts to a string representation of this Id.

      @@ -43,8 +43,8 @@

      Parameters

      • hexString: string

        create a ObjectId from a passed in 24 character hexstring.

      Returns ObjectId

    • Creates an ObjectId from a second based number, with the rest of the ObjectId zeroed out. Used for comparisons or sorting the ObjectId.

      Parameters

      • time: number

        an integer number representing a number of seconds.

        -

      Returns ObjectId

    • Generate a 12 byte id buffer used in ObjectId's

      +

    Returns ObjectId

    • Generate a 12 byte id buffer used in ObjectId's

      Parameters

      • Optionaltime: number

        pass in a second based timestamp.

        -

      Returns Uint8Array

    • Checks if a value can be used to create a valid bson ObjectId

      -

      Parameters

      • id:
            | string
            | number
            | Uint8Array
            | ObjectId
            | ObjectIdLike

        any JS value

        +

      Returns Uint8Array<ArrayBufferLike>

    • Checks if a value can be used to create a valid bson ObjectId

      +

      Parameters

      • id:
            | string
            | number
            | Uint8Array<ArrayBufferLike>
            | ObjectId
            | ObjectIdLike

        any JS value

      Returns boolean

    diff --git a/docs/Next/classes/BSON.Timestamp.html b/docs/Next/classes/BSON.Timestamp.html index 72b345746db..46f17d417b1 100644 --- a/docs/Next/classes/BSON.Timestamp.html +++ b/docs/Next/classes/BSON.Timestamp.html @@ -76,54 +76,54 @@

    Constructors

    • Parameters

      • int: bigint

        A 64-bit bigint representing the Timestamp.

      Returns Timestamp

    • Parameters

      • long: Long

        A 64-bit Long representing the Timestamp.

      Returns Timestamp

    • Parameters

      • value: {
            i: number;
            t: number;
        }

        A pair of two values indicating timestamp and increment.

        -
        • i: number
        • t: number

      Returns Timestamp

    Properties

    __isLong__: boolean
    add: ((addend:
        | string
        | number
        | Timestamp
        | Long) => Long)

    Type declaration

      • (addend): Long
      • Returns the sum of this and the specified Long.

        -

        Parameters

        • addend:
              | string
              | number
              | Timestamp
              | Long

        Returns Long

    and: ((other:
        | string
        | number
        | Timestamp
        | Long) => Long)

    Type declaration

      • (other): Long
      • Returns the sum of this and the specified Long.

        -

        Parameters

        • other:
              | string
              | number
              | Timestamp
              | Long

        Returns Long

        Sum

        -
    comp: ((other:
        | string
        | number
        | Timestamp
        | Long) => -1 | 0 | 1)

    Type declaration

      • (other): -1 | 0 | 1
      • This is an alias of Long.compare

        -

        Parameters

        • other:
              | string
              | number
              | Timestamp
              | Long

        Returns -1 | 0 | 1

    compare: ((other:
        | string
        | number
        | Timestamp
        | Long) => -1 | 0 | 1)

    Type declaration

      • (other): -1 | 0 | 1
      • Compares this Long's value with the specified's.

        -

        Parameters

        • other:
              | string
              | number
              | Timestamp
              | Long

        Returns -1 | 0 | 1

        0 if they are the same, 1 if the this is greater and -1 if the given one is greater

        -
    div: ((divisor:
        | string
        | number
        | Timestamp
        | Long) => Long)

    Type declaration

    divide: ((divisor:
        | string
        | number
        | Timestamp
        | Long) => Long)

    Type declaration

      • (divisor): Long
      • Returns this Long divided by the specified. The result is signed if this Long is signed or unsigned if this Long is unsigned.

        -

        Parameters

        • divisor:
              | string
              | number
              | Timestamp
              | Long

        Returns Long

        Quotient

        -
    eq: ((other:
        | string
        | number
        | Timestamp
        | Long) => boolean)

    Type declaration

      • (other): boolean
      • This is an alias of Long.equals

        -

        Parameters

        • other:
              | string
              | number
              | Timestamp
              | Long

        Returns boolean

    equals: ((other:
        | string
        | number
        | Timestamp
        | Long) => boolean)

    Type declaration

      • (other): boolean
      • Tests if this Long's value equals the specified's.

        -

        Parameters

        • other:
              | string
              | number
              | Timestamp
              | Long

          Other value

          +
          • i: number
          • t: number

        Returns Timestamp

    Properties

    __isLong__: boolean
    add: ((addend:
        | string
        | number
        | Long
        | Timestamp) => Long)

    Type declaration

      • (addend): Long
      • Returns the sum of this and the specified Long.

        +

        Parameters

        • addend:
              | string
              | number
              | Long
              | Timestamp

        Returns Long

    and: ((other:
        | string
        | number
        | Long
        | Timestamp) => Long)

    Type declaration

      • (other): Long
      • Returns the sum of this and the specified Long.

        +

        Parameters

        • other:
              | string
              | number
              | Long
              | Timestamp

        Returns Long

        Sum

        +
    comp: ((other:
        | string
        | number
        | Long
        | Timestamp) => -1 | 0 | 1)

    Type declaration

      • (other): -1 | 0 | 1
      • This is an alias of Long.compare

        +

        Parameters

        • other:
              | string
              | number
              | Long
              | Timestamp

        Returns -1 | 0 | 1

    compare: ((other:
        | string
        | number
        | Long
        | Timestamp) => -1 | 0 | 1)

    Type declaration

      • (other): -1 | 0 | 1
      • Compares this Long's value with the specified's.

        +

        Parameters

        • other:
              | string
              | number
              | Long
              | Timestamp

        Returns -1 | 0 | 1

        0 if they are the same, 1 if the this is greater and -1 if the given one is greater

        +
    div: ((divisor:
        | string
        | number
        | Long
        | Timestamp) => Long)

    Type declaration

    divide: ((divisor:
        | string
        | number
        | Long
        | Timestamp) => Long)

    Type declaration

      • (divisor): Long
      • Returns this Long divided by the specified. The result is signed if this Long is signed or unsigned if this Long is unsigned.

        +

        Parameters

        • divisor:
              | string
              | number
              | Long
              | Timestamp

        Returns Long

        Quotient

        +
    eq: ((other:
        | string
        | number
        | Long
        | Timestamp) => boolean)

    Type declaration

      • (other): boolean
      • This is an alias of Long.equals

        +

        Parameters

        • other:
              | string
              | number
              | Long
              | Timestamp

        Returns boolean

    equals: ((other:
        | string
        | number
        | Long
        | Timestamp) => boolean)

    Type declaration

      • (other): boolean
      • Tests if this Long's value equals the specified's.

        +

        Parameters

        • other:
              | string
              | number
              | Long
              | Timestamp

          Other value

        Returns boolean

    eqz: (() => boolean)

    Type declaration

      • (): boolean
      • This is an alias of Long.isZero

        -

        Returns boolean

    ge: ((other:
        | string
        | number
        | Timestamp
        | Long) => boolean)

    Type declaration

    getHighBits: (() => number)

    Type declaration

      • (): number
      • Gets the high 32 bits as a signed integer.

        +

        Returns boolean

    ge: ((other:
        | string
        | number
        | Long
        | Timestamp) => boolean)

    Type declaration

    getHighBits: (() => number)

    Type declaration

      • (): number
      • Gets the high 32 bits as a signed integer.

        Returns number

    getHighBitsUnsigned: (() => number)

    Type declaration

      • (): number
      • Gets the high 32 bits as an unsigned integer.

        Returns number

    getLowBits: (() => number)

    Type declaration

      • (): number
      • Gets the low 32 bits as a signed integer.

        Returns number

    getLowBitsUnsigned: (() => number)

    Type declaration

      • (): number
      • Gets the low 32 bits as an unsigned integer.

        Returns number

    getNumBitsAbs: (() => number)

    Type declaration

      • (): number
      • Gets the number of bits needed to represent the absolute value of this Long.

        -

        Returns number

    greaterThan: ((other:
        | string
        | number
        | Timestamp
        | Long) => boolean)

    Type declaration

      • (other): boolean
      • Tests if this Long's value is greater than the specified's.

        -

        Parameters

        • other:
              | string
              | number
              | Timestamp
              | Long

        Returns boolean

    greaterThanOrEqual: ((other:
        | string
        | number
        | Timestamp
        | Long) => boolean)

    Type declaration

      • (other): boolean
      • Tests if this Long's value is greater than or equal the specified's.

        -

        Parameters

        • other:
              | string
              | number
              | Timestamp
              | Long

        Returns boolean

    gt: ((other:
        | string
        | number
        | Timestamp
        | Long) => boolean)

    Type declaration

      • (other): boolean
      • This is an alias of Long.greaterThan

        -

        Parameters

        • other:
              | string
              | number
              | Timestamp
              | Long

        Returns boolean

    gte: ((other:
        | string
        | number
        | Timestamp
        | Long) => boolean)

    Type declaration

    high: number
    isEven: (() => boolean)

    Type declaration

      • (): boolean
      • Tests if this Long's value is even.

        +

        Returns number

    greaterThan: ((other:
        | string
        | number
        | Long
        | Timestamp) => boolean)

    Type declaration

      • (other): boolean
      • Tests if this Long's value is greater than the specified's.

        +

        Parameters

        • other:
              | string
              | number
              | Long
              | Timestamp

        Returns boolean

    greaterThanOrEqual: ((other:
        | string
        | number
        | Long
        | Timestamp) => boolean)

    Type declaration

      • (other): boolean
      • Tests if this Long's value is greater than or equal the specified's.

        +

        Parameters

        • other:
              | string
              | number
              | Long
              | Timestamp

        Returns boolean

    gt: ((other:
        | string
        | number
        | Long
        | Timestamp) => boolean)

    Type declaration

      • (other): boolean
      • This is an alias of Long.greaterThan

        +

        Parameters

        • other:
              | string
              | number
              | Long
              | Timestamp

        Returns boolean

    gte: ((other:
        | string
        | number
        | Long
        | Timestamp) => boolean)

    Type declaration

    high: number
    isEven: (() => boolean)

    Type declaration

      • (): boolean
      • Tests if this Long's value is even.

        Returns boolean

    isNegative: (() => boolean)

    Type declaration

      • (): boolean
      • Tests if this Long's value is negative.

        Returns boolean

    isOdd: (() => boolean)

    Type declaration

      • (): boolean
      • Tests if this Long's value is odd.

        Returns boolean

    isPositive: (() => boolean)

    Type declaration

      • (): boolean
      • Tests if this Long's value is positive.

        Returns boolean

    isZero: (() => boolean)

    Type declaration

      • (): boolean
      • Tests if this Long's value equals zero.

        -

        Returns boolean

    le: ((other:
        | string
        | number
        | Timestamp
        | Long) => boolean)

    Type declaration

    lessThan: ((other:
        | string
        | number
        | Timestamp
        | Long) => boolean)

    Type declaration

      • (other): boolean
      • Tests if this Long's value is less than the specified's.

        -

        Parameters

        • other:
              | string
              | number
              | Timestamp
              | Long

        Returns boolean

    lessThanOrEqual: ((other:
        | string
        | number
        | Timestamp
        | Long) => boolean)

    Type declaration

      • (other): boolean
      • Tests if this Long's value is less than or equal the specified's.

        -

        Parameters

        • other:
              | string
              | number
              | Timestamp
              | Long

        Returns boolean

    low: number
    lt: ((other:
        | string
        | number
        | Timestamp
        | Long) => boolean)

    Type declaration

      • (other): boolean
      • This is an alias of Long#lessThan.

        -

        Parameters

        • other:
              | string
              | number
              | Timestamp
              | Long

        Returns boolean

    lte: ((other:
        | string
        | number
        | Timestamp
        | Long) => boolean)

    Type declaration

    mod: ((divisor:
        | string
        | number
        | Timestamp
        | Long) => Long)

    Type declaration

    modulo: ((divisor:
        | string
        | number
        | Timestamp
        | Long) => Long)

    Type declaration

      • (divisor): Long
      • Returns this Long modulo the specified.

        -

        Parameters

        • divisor:
              | string
              | number
              | Timestamp
              | Long

        Returns Long

    mul: ((multiplier:
        | string
        | number
        | Timestamp
        | Long) => Long)

    Type declaration

    multiply: ((multiplier:
        | string
        | number
        | Timestamp
        | Long) => Long)

    Type declaration

      • (multiplier): Long
      • Returns the product of this and the specified Long.

        -

        Parameters

        • multiplier:
              | string
              | number
              | Timestamp
              | Long

          Multiplier

          +

          Returns boolean

    le: ((other:
        | string
        | number
        | Long
        | Timestamp) => boolean)

    Type declaration

    lessThan: ((other:
        | string
        | number
        | Long
        | Timestamp) => boolean)

    Type declaration

      • (other): boolean
      • Tests if this Long's value is less than the specified's.

        +

        Parameters

        • other:
              | string
              | number
              | Long
              | Timestamp

        Returns boolean

    lessThanOrEqual: ((other:
        | string
        | number
        | Long
        | Timestamp) => boolean)

    Type declaration

      • (other): boolean
      • Tests if this Long's value is less than or equal the specified's.

        +

        Parameters

        • other:
              | string
              | number
              | Long
              | Timestamp

        Returns boolean

    low: number
    lt: ((other:
        | string
        | number
        | Long
        | Timestamp) => boolean)

    Type declaration

      • (other): boolean
      • This is an alias of Long#lessThan.

        +

        Parameters

        • other:
              | string
              | number
              | Long
              | Timestamp

        Returns boolean

    lte: ((other:
        | string
        | number
        | Long
        | Timestamp) => boolean)

    Type declaration

    mod: ((divisor:
        | string
        | number
        | Long
        | Timestamp) => Long)

    Type declaration

    modulo: ((divisor:
        | string
        | number
        | Long
        | Timestamp) => Long)

    Type declaration

      • (divisor): Long
      • Returns this Long modulo the specified.

        +

        Parameters

        • divisor:
              | string
              | number
              | Long
              | Timestamp

        Returns Long

    mul: ((multiplier:
        | string
        | number
        | Long
        | Timestamp) => Long)

    Type declaration

    multiply: ((multiplier:
        | string
        | number
        | Long
        | Timestamp) => Long)

    Type declaration

      • (multiplier): Long
      • Returns the product of this and the specified Long.

        +

        Parameters

        • multiplier:
              | string
              | number
              | Long
              | Timestamp

          Multiplier

        Returns Long

        Product

        -
    ne: ((other:
        | string
        | number
        | Timestamp
        | Long) => boolean)

    Type declaration

      • (other): boolean
      • This is an alias of Long.notEquals

        -

        Parameters

        • other:
              | string
              | number
              | Timestamp
              | Long

        Returns boolean

    neg: (() => Long)

    Type declaration

    ne: ((other:
        | string
        | number
        | Long
        | Timestamp) => boolean)

    Type declaration

      • (other): boolean
      • This is an alias of Long.notEquals

        +

        Parameters

        • other:
              | string
              | number
              | Long
              | Timestamp

        Returns boolean

    neg: (() => Long)

    Type declaration

    negate: (() => Long)

    Type declaration

      • (): Long
      • Returns the Negation of this Long's value.

        -

        Returns Long

    neq: ((other:
        | string
        | number
        | Timestamp
        | Long) => boolean)

    Type declaration

      • (other): boolean
      • This is an alias of Long.notEquals

        -

        Parameters

        • other:
              | string
              | number
              | Timestamp
              | Long

        Returns boolean

    not: (() => Long)

    Type declaration

      • (): Long
      • Returns the bitwise NOT of this Long.

        -

        Returns Long

    notEquals: ((other:
        | string
        | number
        | Timestamp
        | Long) => boolean)

    Type declaration

      • (other): boolean
      • Tests if this Long's value differs from the specified's.

        -

        Parameters

        • other:
              | string
              | number
              | Timestamp
              | Long

        Returns boolean

    or: ((other: string | number | Long) => Long)

    Type declaration

      • (other): Long
      • Returns the bitwise OR of this Long and the specified.

        -

        Parameters

        • other: string | number | Long

        Returns Long

    rem: ((divisor:
        | string
        | number
        | Timestamp
        | Long) => Long)

    Type declaration

    shiftLeft: ((numBits: number | Long) => Long)

    Type declaration

      • (numBits): Long
      • Returns this Long with bits shifted to the left by the given amount.

        +

        Returns Long

    neq: ((other:
        | string
        | number
        | Long
        | Timestamp) => boolean)

    Type declaration

      • (other): boolean
      • This is an alias of Long.notEquals

        +

        Parameters

        • other:
              | string
              | number
              | Long
              | Timestamp

        Returns boolean

    not: (() => Long)

    Type declaration

      • (): Long
      • Returns the bitwise NOT of this Long.

        +

        Returns Long

    notEquals: ((other:
        | string
        | number
        | Long
        | Timestamp) => boolean)

    Type declaration

      • (other): boolean
      • Tests if this Long's value differs from the specified's.

        +

        Parameters

        • other:
              | string
              | number
              | Long
              | Timestamp

        Returns boolean

    or: ((other: string | number | Long) => Long)

    Type declaration

      • (other): Long
      • Returns the bitwise OR of this Long and the specified.

        +

        Parameters

        • other: string | number | Long

        Returns Long

    rem: ((divisor:
        | string
        | number
        | Long
        | Timestamp) => Long)

    Type declaration

    shiftLeft: ((numBits: number | Long) => Long)

    Type declaration

      • (numBits): Long
      • Returns this Long with bits shifted to the left by the given amount.

        Parameters

        • numBits: number | Long

          Number of bits

        Returns Long

        Shifted Long

    shiftRight: ((numBits: number | Long) => Long)

    Type declaration

      • (numBits): Long
      • Returns this Long with bits arithmetically shifted to the right by the given amount.

        @@ -136,9 +136,9 @@

        Parameters

        • numBits: number | Long

        Returns Long

    shr: ((numBits: number | Long) => Long)

    Type declaration

    shr_u: ((numBits: number | Long) => Long)

    Type declaration

    shru: ((numBits: number | Long) => Long)

    Type declaration

    sub: ((subtrahend:
        | string
        | number
        | Timestamp
        | Long) => Long)

    Type declaration

    subtract: ((subtrahend:
        | string
        | number
        | Timestamp
        | Long) => Long)

    Type declaration

      • (subtrahend): Long
      • Returns the difference of this and the specified Long.

        -

        Parameters

        • subtrahend:
              | string
              | number
              | Timestamp
              | Long

          Subtrahend

          +

          Parameters

          • numBits: number | Long

          Returns Long

    sub: ((subtrahend:
        | string
        | number
        | Long
        | Timestamp) => Long)

    Type declaration

    subtract: ((subtrahend:
        | string
        | number
        | Long
        | Timestamp) => Long)

    Type declaration

      • (subtrahend): Long
      • Returns the difference of this and the specified Long.

        +

        Parameters

        • subtrahend:
              | string
              | number
              | Long
              | Timestamp

          Subtrahend

        Returns Long

        Difference

    toBigInt: (() => bigint)

    Type declaration

      • (): bigint
      • Converts the Long to a BigInt (arbitrary precision).

        Returns bigint

    toBytes: ((le?: boolean) => number[])

    Type declaration

      • (le?): number[]
      • Converts this Long to its byte representation.

        diff --git a/docs/Next/classes/BSON.UUID.html b/docs/Next/classes/BSON.UUID.html index f63aea49d75..edca3a7a54f 100644 --- a/docs/Next/classes/BSON.UUID.html +++ b/docs/Next/classes/BSON.UUID.html @@ -44,8 +44,8 @@ isValid

    Constructors

    • Create a UUID type

      When the argument to the constructor is omitted a random v4 UUID will be generated.

      -

      Parameters

      • Optionalinput: string | Uint8Array | UUID

        Can be a 32 or 36 character hex string (dashes excluded/included) or a 16 byte binary Buffer.

        -

      Returns UUID

    Properties

    buffer: Uint8Array

    The bytes of the Binary value.

    +

    Parameters

    • Optionalinput: string | Uint8Array<ArrayBufferLike> | UUID

      Can be a 32 or 36 character hex string (dashes excluded/included) or a 16 byte binary Buffer.

      +

    Returns UUID

    Properties

    buffer: Uint8Array<ArrayBufferLike>

    The bytes of the Binary value.

    The format of a Binary value in BSON is defined as:

    binary	::= int32 subtype (byte*)
     
    @@ -87,39 +87,39 @@

    Please use SUBTYPE_UUID

    SUBTYPE_VECTOR: 9 = 9

    Vector BSON type

    VECTOR_TYPE: Readonly<{
        Float32: 39;
        Int8: 3;
        PackedBit: 16;
    }>

    datatype of a Binary Vector (subtype: 9)

    -

    Accessors

    • get _bsontype(): "Binary"
    • Returns "Binary"

    • get id(): Uint8Array
    • The UUID bytes

      -

      Returns Uint8Array

    Methods

    • Compares the equality of this UUID with otherID.

      -

      Parameters

      • otherId: string | Uint8Array | UUID

        UUID instance to compare against.

        +

    Accessors

    • get _bsontype(): "Binary"
    • Returns "Binary"

    • get id(): Uint8Array<ArrayBufferLike>
    • The UUID bytes

      +

      Returns Uint8Array<ArrayBufferLike>

    Methods

    • Compares the equality of this UUID with otherID.

      +

      Parameters

      • otherId: string | Uint8Array<ArrayBufferLike> | UUID

        UUID instance to compare against.

      Returns boolean

    • Converts to a string representation of this Id.

      Parameters

      • Optionaldepth: number
      • Optionaloptions: unknown
      • Optionalinspect: InspectFn

      Returns string

      return the 36 character hex string representation.

    • the length of the binary sequence

      Returns number

    • Updates this binary with byte_value.

      -

      Parameters

      • byteValue:
            | string
            | number
            | Uint8Array
            | number[]

        a single byte we wish to write.

        -

      Returns void

    • Returns a view of length bytes starting at position.

      +

      Parameters

      • byteValue:
            | string
            | number
            | Uint8Array<ArrayBufferLike>
            | number[]

        a single byte we wish to write.

        +

      Returns void

    • Returns a view of length bytes starting at position.

      Parameters

      • position: number

        read from the given position in the Binary.

      • length: number

        the number of bytes to read.

        -

      Returns Uint8Array

    • Creates a Binary instance from the current UUID.

      -

      Returns Binary

    • If this Binary represents a Packed bit Vector (binary.buffer[0] === Binary.VECTOR_TYPE.PackedBit), +

    Returns Uint8Array<ArrayBufferLike>

    • Creates a Binary instance from the current UUID.

      +

      Returns Binary

    • If this Binary represents a Packed bit Vector (binary.buffer[0] === Binary.VECTOR_TYPE.PackedBit), returns a copy of the bit unpacked into a new Int8Array.

      Use toPackedBits to get the bits still in packed form.

      If the Binary is not a Vector, or the datatype is not PackedBit, an error is thrown.

      -

      Returns Int8Array

    • If this Binary represents a Float32 Vector (binary.buffer[0] === Binary.VECTOR_TYPE.Float32), +

      Returns Int8Array<ArrayBufferLike>

    • If this Binary represents a Float32 Vector (binary.buffer[0] === Binary.VECTOR_TYPE.Float32), returns a copy of the bytes in a new Float32Array.

      If the Binary is not a Vector, or the datatype is not Float32, an error is thrown.

      -

      Returns Float32Array

    • Returns the UUID id as a 32 or 36 character hex string representation, excluding/including dashes (defaults to 36 character dash separated)

      +

      Returns Float32Array<ArrayBufferLike>

    • Returns the UUID id as a 32 or 36 character hex string representation, excluding/including dashes (defaults to 36 character dash separated)

      Parameters

      • OptionalincludeDashes: boolean

        should the string exclude dash-separators.

        -

      Returns string

    • If this Binary represents a Int8 Vector (binary.buffer[0] === Binary.VECTOR_TYPE.Int8), +

    Returns string

    • If this Binary represents a Int8 Vector (binary.buffer[0] === Binary.VECTOR_TYPE.Int8), returns a copy of the bytes in a new Int8Array.

      If the Binary is not a Vector, or the datatype is not Int8, an error is thrown.

      -

      Returns Int8Array

    • Converts the id into its JSON string representation. +

      Returns Int8Array<ArrayBufferLike>

    • Converts the id into its JSON string representation. A 36 character (dashes included) hex string in the format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

      -

      Returns string

    • If this Binary represents packed bit Vector (binary.buffer[0] === Binary.VECTOR_TYPE.PackedBit), +

      Returns string

    • If this Binary represents packed bit Vector (binary.buffer[0] === Binary.VECTOR_TYPE.PackedBit), returns a copy of the bytes that are packed bits.

      Use toBits to get the unpacked bits.

      If the Binary is not a Vector, or the datatype is not PackedBit, an error is thrown.

      -

      Returns Uint8Array

    • Converts the id into a 36 character (dashes included) hex string, unless a encoding is specified.

      -

      Parameters

      • Optionalencoding: "base64" | "hex"

      Returns string

    • returns a view of the binary value as a Uint8Array

      -

      Returns Uint8Array

    • Writes a buffer to the binary.

      +

      Returns Uint8Array<ArrayBufferLike>

    • Converts the id into a 36 character (dashes included) hex string, unless a encoding is specified.

      +

      Parameters

      • Optionalencoding: "base64" | "hex"

      Returns string

    • returns a view of the binary value as a Uint8Array

      +

      Returns Uint8Array<ArrayBufferLike>

    • Writes a buffer to the binary.

      Parameters

      • sequence: BinarySequence

        a string or buffer to be written to the Binary BSON object.

      • offset: number

        specify the binary of where to write the content.

      Returns void

    • Creates an UUID from a base64 string representation of an UUID.

      @@ -127,11 +127,11 @@

      Parameters

      • hexString: string

        32 or 36 character hex string (dashes excluded/included).

      Returns UUID

    • Constructs a Binary representing an Packed Bit Vector.

      Parameters

      • bits: ArrayLike<number>

      Returns Binary

    • Constructs a Binary representing an Float32 Vector.

      -

      Parameters

      • array: Float32Array

      Returns Binary

    • Constructs a Binary representing an Int8 Vector.

      -

      Parameters

      • array: Int8Array

        The array to store as a view on the Binary class

        +

        Parameters

        • array: Float32Array<ArrayBufferLike>

        Returns Binary

    • Constructs a Binary representing an Int8 Vector.

      +

      Parameters

      • array: Int8Array<ArrayBufferLike>

        The array to store as a view on the Binary class

      Returns Binary

    • Constructs a Binary representing a packed bit Vector.

      Use fromBits to pack an array of 1s and 0s.

      -

      Parameters

      • array: Uint8Array
      • Optionalpadding: number

      Returns Binary

    • Generates a populated buffer containing a v4 uuid

      -

      Returns Uint8Array

    • Checks if a value is a valid bson UUID

      -

      Parameters

      • input:
            | string
            | Uint8Array
            | Binary
            | UUID

        UUID, string or Buffer to validate.

        +

        Parameters

        • array: Uint8Array<ArrayBufferLike>
        • Optionalpadding: number

        Returns Binary

    • Generates a populated buffer containing a v4 uuid

      +

      Returns Uint8Array<ArrayBufferLike>

    • Checks if a value is a valid bson UUID

      +

      Parameters

      • input:
            | string
            | Uint8Array<ArrayBufferLike>
            | Binary
            | UUID

        UUID, string or Buffer to validate.

      Returns boolean

    diff --git a/docs/Next/classes/BulkOperationBase.html b/docs/Next/classes/BulkOperationBase.html index 756ab5ec4c5..4d3ac890011 100644 --- a/docs/Next/classes/BulkOperationBase.html +++ b/docs/Next/classes/BulkOperationBase.html @@ -9,14 +9,14 @@ find insert raw -

    Properties

    isOrdered: boolean
    operationId?: number

    Accessors

    Methods

    • Builds a find operation for an update/updateOne/delete/deleteOne/replaceOne. +

    Properties

    isOrdered: boolean
    operationId?: number

    Accessors

    Methods

    • Builds a find operation for an update/updateOne/delete/deleteOne/replaceOne. Returns a builder object used to complete the definition of the operation.

      Parameters

      Returns FindOperators

      const bulkOp = collection.initializeOrderedBulkOp();

      // Add an updateOne to the bulkOp
      bulkOp.find({ a: 1 }).updateOne({ $set: { b: 2 } });

      // Add an updateMany to the bulkOp
      bulkOp.find({ c: 3 }).update({ $set: { d: 4 } });

      // Add an upsert
      bulkOp.find({ e: 5 }).upsert().updateOne({ $set: { f: 6 } });

      // Add a deletion
      bulkOp.find({ g: 7 }).deleteOne();

      // Add a multi deletion
      bulkOp.find({ h: 8 }).delete();

      // Add a replaceOne
      bulkOp.find({ i: 9 }).replaceOne({writeConcern: { j: 10 }});

      // Update using a pipeline (requires Mongodb 4.2 or higher)
      bulk.find({ k: 11, y: { $exists: true }, z: { $exists: true } }).updateOne([
      { $set: { total: { $sum: [ '$y', '$z' ] } } }
      ]);

      // All of the ops will now be executed
      await bulkOp.execute();
      -
    • Add a single insert document to the bulk operation

      Parameters

      Returns BulkOperationBase

      const bulkOp = collection.initializeOrderedBulkOp();

      // Adds three inserts to the bulkOp.
      bulkOp
      .insert({ a: 1 })
      .insert({ b: 2 })
      .insert({ c: 3 });
      await bulkOp.execute();
      -
    +
    diff --git a/docs/Next/classes/ChangeStream.html b/docs/Next/classes/ChangeStream.html index 826ab42f126..18341dee9dd 100644 --- a/docs/Next/classes/ChangeStream.html +++ b/docs/Next/classes/ChangeStream.html @@ -1,5 +1,5 @@ ChangeStream | mongodb

    Class ChangeStream<TSchema, TChange>

    Creates a new Change Stream instance. Normally created using Collection.watch().

    -

    Type Parameters

    Hierarchy (view full)

    Implements

    Properties

    Type Parameters

    Hierarchy (view full)

    Implements

    Properties

    [asyncDispose]: (() => Promise<void>)

    An alias for ChangeStream.close|ChangeStream.close().

    -
    namespace: MongoDBNamespace
    options: ChangeStreamOptions & {
        writeConcern?: undefined;
    }

    WriteConcern can still be present on the options because +

    namespace: MongoDBNamespace
    options: ChangeStreamOptions & {
        writeConcern?: undefined;
    }

    WriteConcern can still be present on the options because we inherit options from the client/db/collection. The key must be present on the options in order to delete it. This allows typescript to delete the key but will not allow a writeConcern to be assigned as a property on options.

    -
    pipeline: Document[]
    streamOptions?: CursorStreamOptions
    type: symbol
    captureRejections: boolean

    Value: boolean

    +
    pipeline: Document[]
    streamOptions?: CursorStreamOptions
    type: symbol
    captureRejections: boolean

    Value: boolean

    Change the default captureRejections option on all new EventEmitter objects.

    v13.4.0, v12.16.0

    captureRejectionSymbol: typeof captureRejectionSymbol

    Value: Symbol.for('nodejs.rejection')

    @@ -64,7 +64,7 @@
    CHANGE: "change" = CHANGE

    Fired for each new matching change in the specified namespace. Attaching a change event listener to a Change Stream will switch the stream into flowing mode. Data will then be passed as soon as it is available.

    -
    CLOSE: "close" = CLOSE
    defaultMaxListeners: number

    By default, a maximum of 10 listeners can be registered for any single +

    CLOSE: "close" = CLOSE
    defaultMaxListeners: number

    By default, a maximum of 10 listeners can be registered for any single event. This limit can be changed for individual EventEmitter instances using the emitter.setMaxListeners(n) method. To change the default for allEventEmitter instances, the events.defaultMaxListeners property @@ -89,21 +89,21 @@ listeners, respectively. Its name property is set to 'MaxListenersExceededWarning'.

    v0.11.2

    -
    END: "end" = END
    ERROR: "error" = ERROR
    errorMonitor: typeof errorMonitor

    This symbol shall be used to install a listener for only monitoring 'error' events. Listeners installed using this symbol are called before the regular 'error' listeners are called.

    +
    END: "end" = END
    ERROR: "error" = ERROR
    errorMonitor: typeof errorMonitor

    This symbol shall be used to install a listener for only monitoring 'error' events. Listeners installed using this symbol are called before the regular 'error' listeners are called.

    Installing a listener using this symbol does not change the behavior once an 'error' event is emitted. Therefore, the process will still crash if no regular 'error' listener is installed.

    v13.6.0, v12.17.0

    -
    INIT: "init" = INIT
    MORE: "more" = MORE
    RESPONSE: "response" = RESPONSE
    RESUME_TOKEN_CHANGED: "resumeTokenChanged" = RESUME_TOKEN_CHANGED

    Emitted each time the change stream stores a new resume token.

    -

    Accessors

    • get resumeToken(): unknown
    • The cached resume token that is used to resume after the most recently returned change.

      -

      Returns unknown

    Methods

    • Type Parameters

      • K

      Parameters

      • error: Error
      • event: string | symbol
      • Rest...args: AnyRest

      Returns void

    INIT: "init" = INIT
    MORE: "more" = MORE
    RESPONSE: "response" = RESPONSE
    RESUME_TOKEN_CHANGED: "resumeTokenChanged" = RESUME_TOKEN_CHANGED

    Emitted each time the change stream stores a new resume token.

    +

    Accessors

    • get resumeToken(): unknown
    • The cached resume token that is used to resume after the most recently returned change.

      +

      Returns unknown

    Methods

    • Type Parameters

      • K

      Parameters

      • error: Error
      • event: string | symbol
      • Rest...args: AnyRest

      Returns void

    • Frees the internal resources used by the change stream.

      -

      Returns Promise<void>

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +

      Returns Promise<void>

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments to each.

      Returns true if the event had listeners, false otherwise.

      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener @@ -120,7 +120,7 @@ set by emitter.setMaxListeners(n) or defaults to EventEmitter.defaultMaxListeners.

      Returns number

      v1.0.0

    • Check if there is any document still available in the Change Stream

      -

      Returns Promise<boolean>

    • Returns the number of listeners listening for the event named eventName. +

      Returns Promise<boolean>

    • Return a modified Readable stream including a possible transform method.

      NOTE: When using a Stream to process change stream events, the stream will NOT automatically resume in the case a resumable error is encountered.

      -

      Parameters

      Returns Readable & AsyncIterable<TChange>

      MongoChangeStreamError if the underlying cursor or the change stream is closed

      -
    • Try to get the next available document from the Change Stream's cursor or null if an empty batch is returned

      -

      Returns Promise<null | TChange>

    • Experimental

      Listens once to the abort event on the provided signal.

      +

      Parameters

      Returns Readable & AsyncIterable<TChange, any, any>

      MongoChangeStreamError if the underlying cursor or the change stream is closed

      +
    • Try to get the next available document from the Change Stream's cursor or null if an empty batch is returned

      +

      Returns Promise<null | TChange>

    • Experimental

      Listens once to the abort event on the provided signal.

      Listening to the abort event on abort signals is unsafe and may lead to resource leaks since another third party with the signal can call e.stopImmediatePropagation(). Unfortunately Node.js cannot change diff --git a/docs/Next/classes/Db.html b/docs/Next/classes/Db.html index c9451c5c326..82de9b44ad1 100644 --- a/docs/Next/classes/Db.html +++ b/docs/Next/classes/Db.html @@ -93,10 +93,10 @@

    Returns Promise<boolean>

    Returns Promise<IndexDescriptionInfo[]>

  • Parameters

    Returns Promise<IndexDescriptionCompact>

  • Parameters

    Returns Promise<IndexDescriptionCompact | IndexDescriptionInfo[]>

  • Parameters

    • name: string

    Returns Promise<IndexDescriptionCompact>

    • Retrieve the current profiling Level for MongoDB

      +

    Returns ListCollectionsCursor<Pick<CollectionInfo, "name" | "type">>

  • Parameters

    Returns ListCollectionsCursor<CollectionInfo>

  • Type Parameters

    Parameters

    Returns ListCollectionsCursor<T>

  • Returns this

    Returns this

    Properties

    closed: boolean

    Is true after 'close' has been emitted.

    v18.0.0

    -
    destroyed: boolean

    Is true after readable.destroy() has been called.

    +
    destroyed: boolean

    Is true after readable.destroy() has been called.

    v8.0.0

    -
    errored: null | Error

    Returns error if the stream has been destroyed with an error.

    +
    errored: null | Error

    Returns error if the stream has been destroyed with an error.

    v18.0.0

    -
    readable: boolean

    Is true if it is safe to call read, which means +

    readable: boolean

    Is true if it is safe to call read, which means the stream has not been destroyed or emitted 'error' or 'end'.

    v11.4.0

    -
    readableAborted: boolean

    Returns whether the stream was destroyed or errored before emitting 'end'.

    +
    readableAborted: boolean

    Returns whether the stream was destroyed or errored before emitting 'end'.

    v16.8.0

    -
    readableDidRead: boolean

    Returns whether 'data' has been emitted.

    +
    readableDidRead: boolean

    Returns whether 'data' has been emitted.

    v16.7.0, v14.18.0

    -
    readableEncoding: null | BufferEncoding

    Getter for the property encoding of a given Readable stream. The encoding property can be set using the setEncoding method.

    +
    readableEncoding: null | BufferEncoding

    Getter for the property encoding of a given Readable stream. The encoding property can be set using the setEncoding method.

    v12.7.0

    -
    readableEnded: boolean

    Becomes true when 'end' event is emitted.

    +
    readableEnded: boolean

    Becomes true when 'end' event is emitted.

    v12.9.0

    -
    readableFlowing: null | boolean

    This property reflects the current state of a Readable stream as described +

    readableFlowing: null | boolean

    This property reflects the current state of a Readable stream as described in the Three states section.

    v9.4.0

    -
    readableHighWaterMark: number

    Returns the value of highWaterMark passed when creating this Readable.

    +
    readableHighWaterMark: number

    Returns the value of highWaterMark passed when creating this Readable.

    v9.3.0

    -
    readableLength: number

    This property contains the number of bytes (or objects) in the queue +

    readableLength: number

    This property contains the number of bytes (or objects) in the queue ready to be read. The value provides introspection data regarding the status of the highWaterMark.

    v9.4.0

    -
    readableObjectMode: boolean

    Getter for the property objectMode of a given Readable stream.

    +
    readableObjectMode: boolean

    Getter for the property objectMode of a given Readable stream.

    v12.3.0

    -
    captureRejections: boolean

    Value: boolean

    +
    captureRejections: boolean

    Value: boolean

    Change the default captureRejections option on all new EventEmitter objects.

    v13.4.0, v12.16.0

    captureRejectionSymbol: typeof captureRejectionSymbol

    Value: Symbol.for('nodejs.rejection')

    @@ -140,9 +140,9 @@ regular 'error' listener is installed.

    v13.6.0, v12.17.0

    FILE: "file" = ...

    Fires when the stream loaded the file document corresponding to the provided id.

    -

    Methods

    • Parameters

      • callback: ((error?: null | Error) => void)
          • (error?): void
          • Parameters

            • Optionalerror: null | Error

            Returns void

      Returns void

    • Parameters

      • error: null | Error
      • callback: ((error?: null | Error) => void)
          • (error?): void
          • Parameters

            • Optionalerror: null | Error

            Returns void

      Returns void

    • Calls readable.destroy() with an AbortError and returns a promise that fulfills when the stream is finished.

      +

    Methods

    • Parameters

      • callback: ((error?: null | Error) => void)
          • (error?): void
          • Parameters

            • Optionalerror: null | Error

            Returns void

      Returns void

    • Parameters

      • error: null | Error
      • callback: ((error?: null | Error) => void)
          • (error?): void
          • Parameters

            • Optionalerror: null | Error

            Returns void

      Returns void

    • Calls readable.destroy() with an AbortError and returns a promise that fulfills when the stream is finished.

      Returns Promise<void>

      v20.4.0

      -
    • Returns AsyncIterator<any, any, any>

    • Type Parameters

      • K

      Parameters

      • error: Error
      • event: string | symbol
      • Rest...args: AnyRest

      Returns void

    • Marks this stream as aborted (will never push another data event) +

    • Returns AsyncIterator<any, any, any>

    • Type Parameters

      • K

      Parameters

      • error: Error
      • event: string | symbol
      • Rest...args: AnyRest

      Returns void

    • Marks this stream as aborted (will never push another data event) and kills the underlying cursor. Will emit the 'end' event, and then the 'close' event once the cursor is successfully killed.

      Returns Promise<void>

    • Event emitter @@ -156,92 +156,92 @@

    • readable
    • resume
    • -

      Parameters

      • event: "close"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

    • Alias for emitter.on(eventName, listener).

      +

      Parameters

      • event: "close"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

    • Alias for emitter.on(eventName, listener).

      Parameters

      • event: "data"
      • listener: ((chunk: any) => void)
          • (chunk): void
          • Parameters

            • chunk: any

            Returns void

      Returns this

      v0.1.26

      -
    • Alias for emitter.on(eventName, listener).

      +
    • Alias for emitter.on(eventName, listener).

      Parameters

      • event: "end"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.1.26

      -
    • Alias for emitter.on(eventName, listener).

      +
    • Alias for emitter.on(eventName, listener).

      Parameters

      • event: "error"
      • listener: ((err: Error) => void)
          • (err): void
          • Parameters

            • err: Error

            Returns void

      Returns this

      v0.1.26

      -
    • Alias for emitter.on(eventName, listener).

      +
    • Alias for emitter.on(eventName, listener).

      Parameters

      • event: "pause"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.1.26

      -
    • Alias for emitter.on(eventName, listener).

      +
    • Alias for emitter.on(eventName, listener).

      Parameters

      • event: "readable"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.1.26

      -
    • Alias for emitter.on(eventName, listener).

      +
    • Alias for emitter.on(eventName, listener).

      Parameters

      • event: "resume"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.1.26

      -
    • Alias for emitter.on(eventName, listener).

      +
    • Alias for emitter.on(eventName, listener).

      Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)
          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v0.1.26

      -
    • This method returns a new stream with chunks of the underlying stream paired with a counter +

    • This method returns a new stream with chunks of the underlying stream paired with a counter in the form [index, chunk]. The first index value is 0 and it increases by 1 for each chunk produced.

      Parameters

      • Optionaloptions: Pick<ArrayOptions, "signal">

      Returns Readable

      a stream of indexed pairs.

      v17.5.0

      -
    • Type Parameters

      • T extends ReadableStream

      Parameters

      • stream:
            | ComposeFnParam
            | T
            | Iterable<T>
            | AsyncIterable<T>
      • Optionaloptions: {
            signal: AbortSignal;
        }
        • signal: AbortSignal

      Returns T

    • Destroy the stream. Optionally emit an 'error' event, and emit a 'close' event (unless emitClose is set to false). After this call, the readable +

    • Type Parameters

      • T extends ReadableStream

      Parameters

      • stream:
            | ComposeFnParam
            | T
            | Iterable<T, any, any>
            | AsyncIterable<T, any, any>
      • Optionaloptions: {
            signal: AbortSignal;
        }
        • signal: AbortSignal

      Returns T

    • Destroy the stream. Optionally emit an 'error' event, and emit a 'close' event (unless emitClose is set to false). After this call, the readable stream will release any internal resources and subsequent calls to push() will be ignored.

      Once destroy() has been called any further calls will be a no-op and no further errors except from _destroy() may be emitted as 'error'.

      Implementors should not override this method, but instead implement readable._destroy().

      Parameters

      • Optionalerror: Error

        Error which will be passed as payload in 'error' event

      Returns this

      v8.0.0

      -
    • This method returns a new stream with the first limit chunks dropped from the start.

      +
    • This method returns a new stream with the first limit chunks dropped from the start.

      Parameters

      • limit: number

        the number of chunks to drop from the readable.

      • Optionaloptions: Pick<ArrayOptions, "signal">

      Returns Readable

      a stream with limit chunks dropped from the start.

      v17.5.0

      -
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments to each.

      Returns true if the event had listeners, false otherwise.

      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener

      Parameters

      • event: "close"

      Returns boolean

      v0.1.26

      -
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments to each.

      Returns true if the event had listeners, false otherwise.

      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener

      Parameters

      • event: "data"
      • chunk: any

      Returns boolean

      v0.1.26

      -
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments to each.

      Returns true if the event had listeners, false otherwise.

      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener

      Parameters

      • event: "end"

      Returns boolean

      v0.1.26

      -
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments to each.

      Returns true if the event had listeners, false otherwise.

      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener

      Parameters

      • event: "error"
      • err: Error

      Returns boolean

      v0.1.26

      -
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments to each.

      Returns true if the event had listeners, false otherwise.

      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener

      Parameters

      • event: "pause"

      Returns boolean

      v0.1.26

      -
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments to each.

      Returns true if the event had listeners, false otherwise.

      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener

      Parameters

      • event: "readable"

      Returns boolean

      v0.1.26

      -
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments to each.

      Returns true if the event had listeners, false otherwise.

      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener

      Parameters

      • event: "resume"

      Returns boolean

      v0.1.26

      -
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments to each.

      Returns true if the event had listeners, false otherwise.

      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener

      Parameters

      • event: string | symbol
      • Rest...args: any[]

      Returns boolean

      v0.1.26

      -
    • Sets the 0-based offset in bytes to start streaming from. Throws +

    • Sets the 0-based offset in bytes to start streaming from. Throws an error if this stream has entered flowing mode (e.g. if you've already called on('data'))

      Parameters

      • end: number = 0

        Offset in bytes to stop reading at

        @@ -258,13 +258,13 @@

        Parameters

        • fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => boolean | Promise<boolean>)

          a function to call on each chunk of the stream. Async or not.

            • (data, options?): boolean | Promise<boolean>
            • Parameters

              • data: any
              • Optionaloptions: Pick<ArrayOptions, "signal">

              Returns boolean | Promise<boolean>

        • Optionaloptions: ArrayOptions

        Returns Promise<boolean>

        a promise evaluating to true if fn returned a truthy value for every one of the chunks.

        v17.5.0

        -
    • This method allows filtering the stream. For each chunk in the stream the fn function will be called +

    • This method allows filtering the stream. For each chunk in the stream the fn function will be called and if it returns a truthy value, the chunk will be passed to the result stream. If the fn function returns a promise - that promise will be awaited.

      Parameters

      • fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => boolean | Promise<boolean>)

        a function to filter chunks from the stream. Async or not.

          • (data, options?): boolean | Promise<boolean>
          • Parameters

            • data: any
            • Optionaloptions: Pick<ArrayOptions, "signal">

            Returns boolean | Promise<boolean>

      • Optionaloptions: ArrayOptions

      Returns Readable

      a stream filtered with the predicate fn.

      v17.4.0, v16.14.0

      -
    • This method is similar to Array.prototype.find and calls fn on each chunk in the stream +

    • This method is similar to Array.prototype.find and calls fn on each chunk in the stream to find a chunk with a truthy value for fn. Once an fn call's awaited return value is truthy, the stream is destroyed and the promise is fulfilled with value for which fn returned a truthy value. If all of the fn calls on the chunks return a falsy value, the promise is fulfilled with undefined.

      @@ -272,14 +272,14 @@
        • (data, options?): data is T
        • Parameters

          • data: any
          • Optionaloptions: Pick<ArrayOptions, "signal">

          Returns data is T

    • Optionaloptions: ArrayOptions

    Returns Promise<undefined | T>

    a promise evaluating to the first chunk for which fn evaluated with a truthy value, or undefined if no element was found.

    v17.5.0

    -
  • Parameters

    • fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => boolean | Promise<boolean>)
        • (data, options?): boolean | Promise<boolean>
        • Parameters

          • data: any
          • Optionaloptions: Pick<ArrayOptions, "signal">

          Returns boolean | Promise<boolean>

    • Optionaloptions: ArrayOptions

    Returns Promise<any>

    • This method returns a new stream by applying the given callback to each chunk of the stream +

    • Parameters

      • fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => boolean | Promise<boolean>)
          • (data, options?): boolean | Promise<boolean>
          • Parameters

            • data: any
            • Optionaloptions: Pick<ArrayOptions, "signal">

            Returns boolean | Promise<boolean>

      • Optionaloptions: ArrayOptions

      Returns Promise<any>

    • This method returns a new stream by applying the given callback to each chunk of the stream and then flattening the result.

      It is possible to return a stream or another iterable or async iterable from fn and the result streams will be merged (flattened) into the returned stream.

      Parameters

      • fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => any)

        a function to map over every chunk in the stream. May be async. May be a stream or generator.

          • (data, options?): any
          • Parameters

            • data: any
            • Optionaloptions: Pick<ArrayOptions, "signal">

            Returns any

      • Optionaloptions: ArrayOptions

      Returns Readable

      a stream flat-mapped with the function fn.

      v17.5.0

      -
    • This method allows iterating a stream. For each chunk in the stream the fn function will be called. +

    • This method allows iterating a stream. For each chunk in the stream the fn function will be called. If the fn function returns a promise - that promise will be awaited.

      This method is different from for await...of loops in that it can optionally process chunks concurrently. In addition, a forEach iteration can only be stopped by having passed a signal option @@ -290,7 +290,7 @@

      Parameters

      • fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => void | Promise<void>)

        a function to call on each chunk of the stream. Async or not.

          • (data, options?): void | Promise<void>
          • Parameters

            • data: any
            • Optionaloptions: Pick<ArrayOptions, "signal">

            Returns void | Promise<void>

      • Optionaloptions: ArrayOptions

      Returns Promise<void>

      a promise for when the stream has finished.

      v17.5.0

      -
    • Returns the current max listener value for the EventEmitter which is either +

    • Returns the current max listener value for the EventEmitter which is either set by emitter.setMaxListeners(n) or defaults to EventEmitter.defaultMaxListeners.

      Returns number

      v1.0.0

    • The readable.isPaused() method returns the current operating state of the Readable. @@ -300,14 +300,14 @@

      Returns boolean

      v0.11.14

      -
    • The iterator created by this method gives users the option to cancel the destruction +

    • The iterator created by this method gives users the option to cancel the destruction of the stream if the for await...of loop is exited by return, break, or throw, or if the iterator should destroy the stream if the stream emitted an error during iteration.

      Parameters

      • Optionaloptions: {
            destroyOnReturn?: boolean;
        }
        • OptionaldestroyOnReturn?: boolean

          When set to false, calling return on the async iterator, or exiting a for await...of iteration using a break, return, or throw will not destroy the stream. Default: true.

      Returns AsyncIterator<any, any, any>

      v16.3.0

      -
    • Returns the number of listeners listening for the event named eventName. +

    • Returns the number of listeners listening for the event named eventName. If listener is provided, it will return how many times the listener is found in the list of the listeners of the event.

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol

        The name of the event being listened for

        @@ -323,7 +323,7 @@

        Parameters

        • fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => any)

          a function to map over every chunk in the stream. Async or not.

            • (data, options?): any
            • Parameters

              • data: any
              • Optionaloptions: Pick<ArrayOptions, "signal">

              Returns any

        • Optionaloptions: ArrayOptions

        Returns Readable

        a stream mapped with the function fn.

        v17.4.0, v16.14.0

        -
    • Alias for emitter.removeListener().

      +
    • Alias for emitter.removeListener().

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol
      • listener: ((...args: any[]) => void)
          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v10.0.0

    • Adds the listener function to the end of the listeners array for the event named eventName. No checks are made to see if the listener has already @@ -340,7 +340,7 @@

      Parameters

      • event: "close"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v0.1.101

      -
    • Adds the listener function to the end of the listeners array for the event +

    • Adds the listener function to the end of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -355,7 +355,7 @@

      Parameters

      • event: "data"
      • listener: ((chunk: any) => void)

        The callback function

          • (chunk): void
          • Parameters

            • chunk: any

            Returns void

      Returns this

      v0.1.101

      -
    • Adds the listener function to the end of the listeners array for the event +

    • Adds the listener function to the end of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -370,7 +370,7 @@

      Parameters

      • event: "end"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v0.1.101

      -
    • Adds the listener function to the end of the listeners array for the event +

    • Adds the listener function to the end of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -385,7 +385,7 @@

      Parameters

      • event: "error"
      • listener: ((err: Error) => void)

        The callback function

          • (err): void
          • Parameters

            • err: Error

            Returns void

      Returns this

      v0.1.101

      -
    • Adds the listener function to the end of the listeners array for the event +

    • Adds the listener function to the end of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -400,7 +400,7 @@

      Parameters

      • event: "pause"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v0.1.101

      -
    • Adds the listener function to the end of the listeners array for the event +

    • Adds the listener function to the end of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -415,7 +415,7 @@

      Parameters

      • event: "readable"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v0.1.101

      -
    • Adds the listener function to the end of the listeners array for the event +

    • Adds the listener function to the end of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -430,7 +430,7 @@

      Parameters

      • event: "resume"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v0.1.101

      -
    • Adds the listener function to the end of the listeners array for the event +

    • Adds the listener function to the end of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -445,7 +445,7 @@

      Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)

        The callback function

          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v0.1.101

      -
    • Adds a one-time listener function for the event named eventName. The +

    • Adds a one-time listener function for the event named eventName. The next time eventName is triggered, this listener is removed and then invoked.

      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -458,7 +458,7 @@

      Parameters

      • event: "close"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v0.3.0

      -
    • Adds a one-time listener function for the event named eventName. The +

    • Adds a one-time listener function for the event named eventName. The next time eventName is triggered, this listener is removed and then invoked.

      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -471,7 +471,7 @@

      Parameters

      • event: "data"
      • listener: ((chunk: any) => void)

        The callback function

          • (chunk): void
          • Parameters

            • chunk: any

            Returns void

      Returns this

      v0.3.0

      -
    • Adds a one-time listener function for the event named eventName. The +

    • Adds a one-time listener function for the event named eventName. The next time eventName is triggered, this listener is removed and then invoked.

      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -484,7 +484,7 @@

      Parameters

      • event: "end"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v0.3.0

      -
    • Adds a one-time listener function for the event named eventName. The +

    • Adds a one-time listener function for the event named eventName. The next time eventName is triggered, this listener is removed and then invoked.

      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -497,7 +497,7 @@

      Parameters

      • event: "error"
      • listener: ((err: Error) => void)

        The callback function

          • (err): void
          • Parameters

            • err: Error

            Returns void

      Returns this

      v0.3.0

      -
    • Adds a one-time listener function for the event named eventName. The +

    • Adds a one-time listener function for the event named eventName. The next time eventName is triggered, this listener is removed and then invoked.

      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -510,7 +510,7 @@

      Parameters

      • event: "pause"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v0.3.0

      -
    • Adds a one-time listener function for the event named eventName. The +

    • Adds a one-time listener function for the event named eventName. The next time eventName is triggered, this listener is removed and then invoked.

      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -523,7 +523,7 @@

      Parameters

      • event: "readable"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v0.3.0

      -
    • Adds a one-time listener function for the event named eventName. The +

    • Adds a one-time listener function for the event named eventName. The next time eventName is triggered, this listener is removed and then invoked.

      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -536,7 +536,7 @@

      Parameters

      • event: "resume"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v0.3.0

      -
    • Adds a one-time listener function for the event named eventName. The +

    • Adds a one-time listener function for the event named eventName. The next time eventName is triggered, this listener is removed and then invoked.

      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -549,7 +549,7 @@

      Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)

        The callback function

          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v0.3.0

      -
    • The readable.pause() method will cause a stream in flowing mode to stop +

    • The readable.pause() method will cause a stream in flowing mode to stop emitting 'data' events, switching out of flowing mode. Any data that becomes available will remain in the internal buffer.

      const readable = getReadableStreamSomehow();
      readable.on('data', (chunk) => {
      console.log(`Received ${chunk.length} bytes of data.`);
      readable.pause();
      console.log('There will be no additional data for 1 second.');
      setTimeout(() => {
      console.log('Now data will start flowing again.');
      readable.resume();
      }, 1000);
      }); @@ -557,7 +557,7 @@

      The readable.pause() method has no effect if there is a 'readable' event listener.

      Returns this

      v0.9.4

      -
    • Type Parameters

      • T extends WritableStream

      Parameters

      • destination: T
      • Optionaloptions: {
            end?: boolean;
        }
        • Optionalend?: boolean

      Returns T

    • Adds the listener function to the beginning of the listeners array for the +

    • Type Parameters

      • T extends WritableStream

      Parameters

      • destination: T
      • Optionaloptions: {
            end?: boolean;
        }
        • Optionalend?: boolean

      Returns T

    • Adds the listener function to the beginning of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -567,7 +567,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "close"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v6.0.0

      -
    • Adds the listener function to the beginning of the listeners array for the +

    • Adds the listener function to the beginning of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -577,7 +577,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "data"
      • listener: ((chunk: any) => void)

        The callback function

          • (chunk): void
          • Parameters

            • chunk: any

            Returns void

      Returns this

      v6.0.0

      -
    • Adds the listener function to the beginning of the listeners array for the +

    • Adds the listener function to the beginning of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -587,7 +587,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "end"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v6.0.0

      -
    • Adds the listener function to the beginning of the listeners array for the +

    • Adds the listener function to the beginning of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -597,7 +597,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "error"
      • listener: ((err: Error) => void)

        The callback function

          • (err): void
          • Parameters

            • err: Error

            Returns void

      Returns this

      v6.0.0

      -
    • Adds the listener function to the beginning of the listeners array for the +

    • Adds the listener function to the beginning of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -607,7 +607,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "pause"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v6.0.0

      -
    • Adds the listener function to the beginning of the listeners array for the +

    • Adds the listener function to the beginning of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -617,7 +617,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "readable"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v6.0.0

      -
    • Adds the listener function to the beginning of the listeners array for the +

    • Adds the listener function to the beginning of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -627,7 +627,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "resume"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v6.0.0

      -
    • Adds the listener function to the beginning of the listeners array for the +

    • Adds the listener function to the beginning of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -637,7 +637,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)

        The callback function

          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v6.0.0

      -
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +

    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this listener is removed, and then invoked.

      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -645,7 +645,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "close"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v6.0.0

      -
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +

    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this listener is removed, and then invoked.

      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -653,7 +653,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "data"
      • listener: ((chunk: any) => void)

        The callback function

          • (chunk): void
          • Parameters

            • chunk: any

            Returns void

      Returns this

      v6.0.0

      -
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +

    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this listener is removed, and then invoked.

      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -661,7 +661,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "end"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v6.0.0

      -
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +

    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this listener is removed, and then invoked.

      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -669,7 +669,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "error"
      • listener: ((err: Error) => void)

        The callback function

          • (err): void
          • Parameters

            • err: Error

            Returns void

      Returns this

      v6.0.0

      -
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +

    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this listener is removed, and then invoked.

      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -677,7 +677,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "pause"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v6.0.0

      -
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +

    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this listener is removed, and then invoked.

      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -685,7 +685,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "readable"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v6.0.0

      -
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +

    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this listener is removed, and then invoked.

      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -693,7 +693,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "resume"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v6.0.0

      -
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +

    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this listener is removed, and then invoked.

      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -701,7 +701,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)

        The callback function

          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v6.0.0

      -
    • Parameters

      • chunk: any
      • Optionalencoding: BufferEncoding

      Returns boolean

    • Returns a copy of the array of listeners for the event named eventName, +

    • Parameters

      • chunk: any
      • Optionalencoding: BufferEncoding

      Returns boolean

    • Returns a copy of the array of listeners for the event named eventName, including any wrappers (such as those created by .once()).

      import { EventEmitter } from 'node:events';
      const emitter = new EventEmitter();
      emitter.once('log', () => console.log('log once'));

      // Returns a new Array with a function `onceWrapper` which has a property
      // `listener` which contains the original listener bound above
      const listeners = emitter.rawListeners('log');
      const logFnWrapper = listeners[0];

      // Logs "log once" to the console and does not unbind the `once` event
      logFnWrapper.listener();

      // Logs "log once" to the console and removes the listener
      logFnWrapper();

      emitter.on('log', () => console.log('log persistently'));
      // Will return a new Array with a single function bound by `.on()` above
      const newListeners = emitter.rawListeners('log');

      // Logs "log persistently" twice
      newListeners[0]();
      emitter.emit('log');
      @@ -745,7 +745,7 @@ been emitted will return null. No runtime error will be raised.

      Parameters

      • Optionalsize: number

        Optional argument to specify how much data to read.

      Returns any

      v0.9.4

      -
    • This method calls fn on each chunk of the stream in order, passing it the result from the calculation +

    • This method calls fn on each chunk of the stream in order, passing it the result from the calculation on the previous element. It returns a promise for the final value of the reduction.

      If no initial value is supplied the first chunk of the stream is used as the initial value. If the stream is empty, the promise is rejected with a TypeError with the ERR_INVALID_ARGS code property.

      @@ -755,7 +755,7 @@
        • (previous, data, options?): T
        • Parameters

          • previous: any
          • data: any
          • Optionaloptions: Pick<ArrayOptions, "signal">

          Returns T

    • Optionalinitial: undefined

      the initial value to use in the reduction.

    • Optionaloptions: Pick<ArrayOptions, "signal">

    Returns Promise<T>

    a promise for the final value of the reduction.

    v17.5.0

    -
  • Type Parameters

    • T = any

    Parameters

    • fn: ((previous: T, data: any, options?: Pick<ArrayOptions, "signal">) => T)
        • (previous, data, options?): T
        • Parameters

          • previous: T
          • data: any
          • Optionaloptions: Pick<ArrayOptions, "signal">

          Returns T

    • initial: T
    • Optionaloptions: Pick<ArrayOptions, "signal">

    Returns Promise<T>

    • Removes all listeners, or those of the specified eventName.

      +
    • Type Parameters

      • T = any

      Parameters

      • fn: ((previous: T, data: any, options?: Pick<ArrayOptions, "signal">) => T)
          • (previous, data, options?): T
          • Parameters

            • previous: T
            • data: any
            • Optionaloptions: Pick<ArrayOptions, "signal">

            Returns T

      • initial: T
      • Optionaloptions: Pick<ArrayOptions, "signal">

      Returns Promise<T>

    • Removes all listeners, or those of the specified eventName.

      It is bad practice to remove listeners added elsewhere in the code, particularly when the EventEmitter instance was created by some other component or module (e.g. sockets or file streams).

      @@ -788,7 +788,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "close"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.1.26

      -
    • Removes the specified listener from the listener array for the event named eventName.

      +
    • Removes the specified listener from the listener array for the event named eventName.

      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback);
      @@ -815,7 +815,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "data"
      • listener: ((chunk: any) => void)
          • (chunk): void
          • Parameters

            • chunk: any

            Returns void

      Returns this

      v0.1.26

      -
    • Removes the specified listener from the listener array for the event named eventName.

      +
    • Removes the specified listener from the listener array for the event named eventName.

      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback);
      @@ -842,7 +842,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "end"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.1.26

      -
    • Removes the specified listener from the listener array for the event named eventName.

      +
    • Removes the specified listener from the listener array for the event named eventName.

      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback);
      @@ -869,7 +869,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "error"
      • listener: ((err: Error) => void)
          • (err): void
          • Parameters

            • err: Error

            Returns void

      Returns this

      v0.1.26

      -
    • Removes the specified listener from the listener array for the event named eventName.

      +
    • Removes the specified listener from the listener array for the event named eventName.

      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback);
      @@ -896,7 +896,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "pause"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.1.26

      -
    • Removes the specified listener from the listener array for the event named eventName.

      +
    • Removes the specified listener from the listener array for the event named eventName.

      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback);
      @@ -923,7 +923,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "readable"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.1.26

      -
    • Removes the specified listener from the listener array for the event named eventName.

      +
    • Removes the specified listener from the listener array for the event named eventName.

      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback);
      @@ -950,7 +950,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "resume"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.1.26

      -
    • Removes the specified listener from the listener array for the event named eventName.

      +
    • Removes the specified listener from the listener array for the event named eventName.

      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback);
      @@ -977,7 +977,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)
          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v0.1.26

      -
    • The readable.resume() method causes an explicitly paused Readable stream to +

    • The readable.resume() method causes an explicitly paused Readable stream to resume emitting 'data' events, switching the stream into flowing mode.

      The readable.resume() method can be used to fully consume the data from a stream without actually processing any of that data:

      @@ -986,7 +986,7 @@

      The readable.resume() method has no effect if there is a 'readable' event listener.

      Returns this

      v0.9.4

      -
    • The readable.setEncoding() method sets the character encoding for +

    • The readable.setEncoding() method sets the character encoding for data read from the Readable stream.

      By default, no encoding is assigned and stream data will be returned as Buffer objects. Setting an encoding causes the stream data to be returned as strings of the specified encoding rather than as Buffer objects. For instance, calling readable.setEncoding('utf8') will cause the @@ -1000,7 +1000,7 @@

      Parameters

      • encoding: BufferEncoding

        The encoding to use.

      Returns this

      v0.9.4

      -
    • By default EventEmitters will print a warning if more than 10 listeners are +

    • By default EventEmitters will print a warning if more than 10 listeners are added for a particular event. This is a useful default that helps finding memory leaks. The emitter.setMaxListeners() method allows the limit to be modified for this specific EventEmitter instance. The value can be set to Infinity (or 0) to indicate an unlimited number of listeners.

      @@ -1013,7 +1013,7 @@

      Parameters

      • fn: ((data: any, options?: Pick<ArrayOptions, "signal">) => boolean | Promise<boolean>)

        a function to call on each chunk of the stream. Async or not.

          • (data, options?): boolean | Promise<boolean>
          • Parameters

            • data: any
            • Optionaloptions: Pick<ArrayOptions, "signal">

            Returns boolean | Promise<boolean>

      • Optionaloptions: ArrayOptions

      Returns Promise<boolean>

      a promise evaluating to true if fn returned a truthy value for at least one of the chunks.

      v17.5.0

      -
    • Sets the 0-based offset in bytes to start streaming from. Throws +

    • Sets the 0-based offset in bytes to start streaming from. Throws an error if this stream has entered flowing mode (e.g. if you've already called on('data'))

      Parameters

      • start: number = 0

        0-based offset in bytes to start streaming from

        @@ -1021,12 +1021,12 @@

        Parameters

        • limit: number

          the number of chunks to take from the readable.

        • Optionaloptions: Pick<ArrayOptions, "signal">

        Returns Readable

        a stream with limit chunks taken.

        v17.5.0

        -
    • This method allows easily obtaining the contents of a stream.

      +
    • This method allows easily obtaining the contents of a stream.

      As this method reads the entire stream into memory, it negates the benefits of streams. It's intended for interoperability and convenience, not as the primary way to consume streams.

      Parameters

      • Optionaloptions: Pick<ArrayOptions, "signal">

      Returns Promise<any[]>

      a promise containing an array with the contents of the stream.

      v17.5.0

      -
    • The readable.unpipe() method detaches a Writable stream previously attached +

    • The readable.unpipe() method detaches a Writable stream previously attached using the pipe method.

      If the destination is not specified, then all pipes are detached.

      If the destination is specified, but no pipe is set up for it, then @@ -1036,7 +1036,7 @@

      Parameters

      • Optionaldestination: WritableStream

        Optional specific stream to unpipe

      Returns this

      v0.9.4

      -
    • Passing chunk as null signals the end of the stream (EOF) and behaves the +

    • Passing chunk as null signals the end of the stream (EOF) and behaves the same as readable.push(null), after which no more data can be written. The EOF signal is put at the end of the buffer and any buffered data will still be flushed.

      @@ -1062,7 +1062,7 @@ be a {string}, {Buffer}, {TypedArray}, {DataView} or null. For object mode streams, chunk may be any JavaScript value.

    • Optionalencoding: BufferEncoding

      Encoding of string chunks. Must be a valid Buffer encoding, such as 'utf8' or 'ascii'.

    Returns void

    v0.9.11

    -
    • Prior to Node.js 0.10, streams did not implement the entire node:stream module API as it is currently defined. (See Compatibility for more +

    • Prior to Node.js 0.10, streams did not implement the entire node:stream module API as it is currently defined. (See Compatibility for more information.)

      When using an older Node.js library that emits 'data' events and has a pause method that is advisory only, the readable.wrap() method can be used to create a Readable stream that uses @@ -1075,7 +1075,7 @@

      Parameters

      • stream: ReadableStream

        An "old style" readable stream

      Returns this

      v0.9.4

      -
    • Experimental

      Listens once to the abort event on the provided signal.

      +
    • Experimental

      Listens once to the abort event on the provided signal.

      Listening to the abort event on abort signals is unsafe and may lead to resource leaks since another third party with the signal can call e.stopImmediatePropagation(). Unfortunately Node.js cannot change @@ -1091,12 +1091,12 @@

      Parameters

      • signal: AbortSignal
      • resource: ((event: Event) => void)
          • (event): void
          • Parameters

            • event: Event

            Returns void

      Returns Disposable

      Disposable that removes the abort listener.

      v20.5.0

    • A utility method for creating Readable Streams out of iterators.

      -

      Parameters

      • iterable: Iterable<any> | AsyncIterable<any>

        Object implementing the Symbol.asyncIterator or Symbol.iterator iterable protocol. Emits an 'error' event if a null value is passed.

        -
      • Optionaloptions: ReadableOptions

        Options provided to new stream.Readable([options]). By default, Readable.from() will set options.objectMode to true, unless this is explicitly opted out by setting options.objectMode to false.

        +

        Parameters

        • iterable: Iterable<any, any, any> | AsyncIterable<any, any, any>

          Object implementing the Symbol.asyncIterator or Symbol.iterator iterable protocol. Emits an 'error' event if a null value is passed.

          +
        • Optionaloptions: ReadableOptions<Readable>

          Options provided to new stream.Readable([options]). By default, Readable.from() will set options.objectMode to true, unless this is explicitly opted out by setting options.objectMode to false.

        Returns Readable

        v12.3.0, v10.17.0

        -
    • Experimental

      A utility method for creating a Readable from a web ReadableStream.

      -

      Parameters

      • readableStream: ReadableStream<any>
      • Optionaloptions: Pick<ReadableOptions,
            | "signal"
            | "objectMode"
            | "highWaterMark"
            | "encoding">

      Returns Readable

      v17.0.0

      -
    • Returns a copy of the array of listeners for the event named eventName.

      +
    • Experimental

      A utility method for creating a Readable from a web ReadableStream.

      +

      Parameters

      • readableStream: ReadableStream<any>
      • Optionaloptions: Pick<ReadableOptions<Readable>,
            | "signal"
            | "objectMode"
            | "highWaterMark"
            | "encoding">

      Returns Readable

      v17.0.0

      +
    • Returns a copy of the array of listeners for the event named eventName.

      For EventEmitters this behaves exactly the same as calling .listeners on the emitter.

      For EventTargets this is the only way to get the event listeners for the @@ -1117,7 +1117,7 @@

      Parameters

      • emitter: EventEmitter<DefaultEventMap> | EventTarget

      Returns number

      v19.9.0

    • Returns whether the stream has been read from or cancelled.

      Parameters

      • stream: Readable | ReadableStream

      Returns boolean

      v16.8.0

      -
    • A class method that returns the number of listeners for the given eventName registered on the given emitter.

      +
    • A class method that returns the number of listeners for the given eventName registered on the given emitter.

      import { EventEmitter, listenerCount } from 'node:events';

      const myEmitter = new EventEmitter();
      myEmitter.on('event', () => {});
      myEmitter.on('event', () => {});
      console.log(listenerCount(myEmitter, 'event'));
      // Prints: 2
      @@ -1171,4 +1171,4 @@

    Returns void

    v15.4.0

    • Experimental

      A utility method for creating a web ReadableStream from a Readable.

      Parameters

      • streamReadable: Readable
      • Optionaloptions: {
            strategy?: QueuingStrategy<any>;
        }
        • Optionalstrategy?: QueuingStrategy<any>

      Returns ReadableStream<any>

      v17.0.0

      -
    +
    diff --git a/docs/Next/classes/GridFSBucketWriteStream.html b/docs/Next/classes/GridFSBucketWriteStream.html index 296cf071007..6a642f475d1 100644 --- a/docs/Next/classes/GridFSBucketWriteStream.html +++ b/docs/Next/classes/GridFSBucketWriteStream.html @@ -66,17 +66,17 @@ once setMaxListeners toWeb -

    Properties

    bucket: GridFSBucket
    bufToStore: Buffer

    Space used to store a chunk currently being inserted

    +

    Properties

    bucket: GridFSBucket
    bufToStore: Buffer<ArrayBufferLike>

    Space used to store a chunk currently being inserted

    A Collection instance where the file's chunks are stored

    chunkSizeBytes: number

    The number of bytes that each chunk will be limited to

    closed: boolean

    Is true after 'close' has been emitted.

    v18.0.0

    -
    destroyed: boolean

    Is true after writable.destroy() has been called.

    +
    destroyed: boolean

    Is true after writable.destroy() has been called.

    v8.0.0

    -
    done: boolean

    Indicates the stream is finished uploading

    +
    done: boolean

    Indicates the stream is finished uploading

    errored: null | Error

    Returns error if the stream has been destroyed with an error.

    v18.0.0

    -
    filename: string

    The name of the file

    +
    filename: string

    The name of the file

    A Collection instance where the file's GridFSFile document is stored

    gridFSFile: null | GridFSFile = null

    The document containing information about the inserted file. This property is defined after the finish event has been emitted. @@ -97,25 +97,25 @@

    writable: boolean

    Is true if it is safe to call writable.write(), which means the stream has not been destroyed, errored, or ended.

    v11.4.0

    -
    writableCorked: number

    Number of times writable.uncork() needs to be +

    writableCorked: number

    Number of times writable.uncork() needs to be called in order to fully uncork the stream.

    v13.2.0, v12.16.0

    -
    writableEnded: boolean

    Is true after writable.end() has been called. This property +

    writableEnded: boolean

    Is true after writable.end() has been called. This property does not indicate whether the data has been flushed, for this use writable.writableFinished instead.

    v12.9.0

    -
    writableFinished: boolean

    Is set to true immediately before the 'finish' event is emitted.

    +
    writableFinished: boolean

    Is set to true immediately before the 'finish' event is emitted.

    v12.6.0

    -
    writableHighWaterMark: number

    Return the value of highWaterMark passed when creating this Writable.

    +
    writableHighWaterMark: number

    Return the value of highWaterMark passed when creating this Writable.

    v9.3.0

    -
    writableLength: number

    This property contains the number of bytes (or objects) in the queue +

    writableLength: number

    This property contains the number of bytes (or objects) in the queue ready to be written. The value provides introspection data regarding the status of the highWaterMark.

    v9.4.0

    -
    writableNeedDrain: boolean

    Is true if the stream's buffer has been full and stream will emit 'drain'.

    +
    writableNeedDrain: boolean

    Is true if the stream's buffer has been full and stream will emit 'drain'.

    v15.2.0, v14.17.0

    -
    writableObjectMode: boolean

    Getter for the property objectMode of a given Writable stream.

    +
    writableObjectMode: boolean

    Getter for the property objectMode of a given Writable stream.

    v12.3.0

    -
    writeConcern?: WriteConcern

    The write concern setting to be used with every insert operation

    +
    writeConcern?: WriteConcern

    The write concern setting to be used with every insert operation

    captureRejections: boolean

    Value: boolean

    Change the default captureRejections option on all new EventEmitter objects.

    v13.4.0, v12.16.0

    @@ -151,7 +151,7 @@

    Installing a listener using this symbol does not change the behavior once an 'error' event is emitted. Therefore, the process will still crash if no regular 'error' listener is installed.

    v13.6.0, v12.17.0

    -

    Methods

    • Parameters

      • error: null | Error
      • callback: ((error?: null | Error) => void)
          • (error?): void
          • Parameters

            • Optionalerror: null | Error

            Returns void

      Returns void

    • Parameters

      • chunks: {
            chunk: any;
            encoding: BufferEncoding;
        }[]
      • callback: ((error?: null | Error) => void)
          • (error?): void
          • Parameters

            • Optionalerror: null | Error

            Returns void

      Returns void

    • Type Parameters

      • K

      Parameters

      • error: Error
      • event: string | symbol
      • Rest...args: AnyRest

      Returns void

    • Places this write stream into an aborted state (all future writes fail) +

    Methods

    • Parameters

      • error: null | Error
      • callback: ((error?: null | Error) => void)
          • (error?): void
          • Parameters

            • Optionalerror: null | Error

            Returns void

      Returns void

    • Parameters

      • chunks: {
            chunk: any;
            encoding: BufferEncoding;
        }[]
      • callback: ((error?: null | Error) => void)
          • (error?): void
          • Parameters

            • Optionalerror: null | Error

            Returns void

      Returns void

    • Type Parameters

      • K

      Parameters

      • error: Error
      • event: string | symbol
      • Rest...args: AnyRest

      Returns void

    • Places this write stream into an aborted state (all future writes fail) and deletes all chunks that have already been written.

      Returns Promise<void>

    • Event emitter The defined events on documents including:

      @@ -163,19 +163,19 @@
    • pipe
    • unpipe
    • -

      Parameters

      • event: "close"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

    • Alias for emitter.on(eventName, listener).

      +

      Parameters

      • event: "close"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

    • Alias for emitter.on(eventName, listener).

      Parameters

      • event: "drain"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.1.26

      -
    • Alias for emitter.on(eventName, listener).

      +
    • Alias for emitter.on(eventName, listener).

      Parameters

      • event: "error"
      • listener: ((err: Error) => void)
          • (err): void
          • Parameters

            • err: Error

            Returns void

      Returns this

      v0.1.26

      -
    • Alias for emitter.on(eventName, listener).

      +
    • Alias for emitter.on(eventName, listener).

      Parameters

      • event: "finish"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.1.26

      -
    • Alias for emitter.on(eventName, listener).

      +
    • Alias for emitter.on(eventName, listener).

      Parameters

      • event: "pipe"
      • listener: ((src: Readable) => void)
          • (src): void
          • Parameters

            • src: Readable

            Returns void

      Returns this

      v0.1.26

      -
    • Alias for emitter.on(eventName, listener).

      +
    • Alias for emitter.on(eventName, listener).

      Parameters

      • event: "unpipe"
      • listener: ((src: Readable) => void)
          • (src): void
          • Parameters

            • src: Readable

            Returns void

      Returns this

      v0.1.26

      -
    • Alias for emitter.on(eventName, listener).

      +
    • Alias for emitter.on(eventName, listener).

      Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)
          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v0.1.26

      -
    • Type Parameters

      • T extends ReadableStream

      Parameters

      • stream:
            | ComposeFnParam
            | T
            | Iterable<T>
            | AsyncIterable<T>
      • Optionaloptions: {
            signal: AbortSignal;
        }
        • signal: AbortSignal

      Returns T

    • The writable.cork() method forces all written data to be buffered in memory. +

    • Type Parameters

      • T extends ReadableStream

      Parameters

      • stream:
            | ComposeFnParam
            | T
            | Iterable<T, any, any>
            | AsyncIterable<T, any, any>
      • Optionaloptions: {
            signal: AbortSignal;
        }
        • signal: AbortSignal

      Returns T

    • The writable.cork() method forces all written data to be buffered in memory. The buffered data will be flushed when either the uncork or end methods are called.

      The primary intent of writable.cork() is to accommodate a situation in which several small chunks are written to the stream in rapid succession. Instead of @@ -185,7 +185,7 @@ to be processed. However, use of writable.cork() without implementing writable._writev() may have an adverse effect on throughput.

      See also: writable.uncork(), writable._writev().

      Returns void

      v0.11.2

      -
    • Destroy the stream. Optionally emit an 'error' event, and emit a 'close' event (unless emitClose is set to false). After this call, the writable +

    • Destroy the stream. Optionally emit an 'error' event, and emit a 'close' event (unless emitClose is set to false). After this call, the writable stream has ended and subsequent calls to write() or end() will result in an ERR_STREAM_DESTROYED error. This is a destructive and immediate way to destroy a stream. Previous calls to write() may not have drained, and may trigger an ERR_STREAM_DESTROYED error. @@ -197,56 +197,56 @@ but instead implement writable._destroy().

      Parameters

      • Optionalerror: Error

        Optional, an error to emit with 'error' event.

      Returns this

      v8.0.0

      -
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments to each.

      Returns true if the event had listeners, false otherwise.

      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener

      Parameters

      • event: "close"

      Returns boolean

      v0.1.26

      -
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments to each.

      Returns true if the event had listeners, false otherwise.

      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener

      Parameters

      • event: "drain"

      Returns boolean

      v0.1.26

      -
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments to each.

      Returns true if the event had listeners, false otherwise.

      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener

      Parameters

      • event: "error"
      • err: Error

      Returns boolean

      v0.1.26

      -
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments to each.

      Returns true if the event had listeners, false otherwise.

      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener

      Parameters

      • event: "finish"

      Returns boolean

      v0.1.26

      -
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments to each.

      Returns true if the event had listeners, false otherwise.

      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener

      Parameters

      • event: "pipe"
      • src: Readable

      Returns boolean

      v0.1.26

      -
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments to each.

      Returns true if the event had listeners, false otherwise.

      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener

      Parameters

      • event: "unpipe"
      • src: Readable

      Returns boolean

      v0.1.26

      -
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments to each.

      Returns true if the event had listeners, false otherwise.

      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener

      Parameters

      • event: string | symbol
      • Rest...args: any[]

      Returns boolean

      v0.1.26

      -
    • Calling the writable.end() method signals that no more data will be written +

    • Calling the writable.end() method signals that no more data will be written to the Writable. The optional chunk and encoding arguments allow one final additional chunk of data to be written immediately before closing the stream.

      @@ -255,7 +255,7 @@

      Parameters

      • Optionalcb: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.9.4

      -
    • Parameters

      • chunk: any
      • Optionalcb: (() => void)
          • (): void
          • Returns void

      Returns this

    • Parameters

      • chunk: any
      • encoding: BufferEncoding
      • Optionalcb: (() => void)
          • (): void
          • Returns void

      Returns this

    • Returns an array listing the events for which the emitter has registered +

    • Parameters

      • chunk: any
      • Optionalcb: (() => void)
          • (): void
          • Returns void

      Returns this

    • Parameters

      • chunk: any
      • encoding: BufferEncoding
      • Optionalcb: (() => void)
          • (): void
          • Returns void

      Returns this

    • Returns an array listing the events for which the emitter has registered listeners. The values in the array are strings or Symbols.

      import { EventEmitter } from 'node:events';

      const myEE = new EventEmitter();
      myEE.on('foo', () => {});
      myEE.on('bar', () => {});

      const sym = Symbol('symbol');
      myEE.on(sym, () => {});

      console.log(myEE.eventNames());
      // Prints: [ 'foo', 'bar', Symbol(symbol) ]
      @@ -292,7 +292,7 @@

      Parameters

      • event: "close"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v0.1.101

      -
    • Adds the listener function to the end of the listeners array for the event +

    • Adds the listener function to the end of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -307,7 +307,7 @@

      Parameters

      • event: "drain"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v0.1.101

      -
    • Adds the listener function to the end of the listeners array for the event +

    • Adds the listener function to the end of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -322,7 +322,7 @@

      Parameters

      • event: "error"
      • listener: ((err: Error) => void)

        The callback function

          • (err): void
          • Parameters

            • err: Error

            Returns void

      Returns this

      v0.1.101

      -
    • Adds the listener function to the end of the listeners array for the event +

    • Adds the listener function to the end of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -337,7 +337,7 @@

      Parameters

      • event: "finish"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v0.1.101

      -
    • Adds the listener function to the end of the listeners array for the event +

    • Adds the listener function to the end of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -352,7 +352,7 @@

      Parameters

      • event: "pipe"
      • listener: ((src: Readable) => void)

        The callback function

          • (src): void
          • Parameters

            • src: Readable

            Returns void

      Returns this

      v0.1.101

      -
    • Adds the listener function to the end of the listeners array for the event +

    • Adds the listener function to the end of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -367,7 +367,7 @@

      Parameters

      • event: "unpipe"
      • listener: ((src: Readable) => void)

        The callback function

          • (src): void
          • Parameters

            • src: Readable

            Returns void

      Returns this

      v0.1.101

      -
    • Adds the listener function to the end of the listeners array for the event +

    • Adds the listener function to the end of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -382,7 +382,7 @@

      Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)

        The callback function

          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v0.1.101

      -
    • Adds a one-time listener function for the event named eventName. The +

    • Adds a one-time listener function for the event named eventName. The next time eventName is triggered, this listener is removed and then invoked.

      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -395,7 +395,7 @@

      Parameters

      • event: "close"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v0.3.0

      -
    • Adds a one-time listener function for the event named eventName. The +

    • Adds a one-time listener function for the event named eventName. The next time eventName is triggered, this listener is removed and then invoked.

      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -408,7 +408,7 @@

      Parameters

      • event: "drain"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v0.3.0

      -
    • Adds a one-time listener function for the event named eventName. The +

    • Adds a one-time listener function for the event named eventName. The next time eventName is triggered, this listener is removed and then invoked.

      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -421,7 +421,7 @@

      Parameters

      • event: "error"
      • listener: ((err: Error) => void)

        The callback function

          • (err): void
          • Parameters

            • err: Error

            Returns void

      Returns this

      v0.3.0

      -
    • Adds a one-time listener function for the event named eventName. The +

    • Adds a one-time listener function for the event named eventName. The next time eventName is triggered, this listener is removed and then invoked.

      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -434,7 +434,7 @@

      Parameters

      • event: "finish"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v0.3.0

      -
    • Adds a one-time listener function for the event named eventName. The +

    • Adds a one-time listener function for the event named eventName. The next time eventName is triggered, this listener is removed and then invoked.

      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -447,7 +447,7 @@

      Parameters

      • event: "pipe"
      • listener: ((src: Readable) => void)

        The callback function

          • (src): void
          • Parameters

            • src: Readable

            Returns void

      Returns this

      v0.3.0

      -
    • Adds a one-time listener function for the event named eventName. The +

    • Adds a one-time listener function for the event named eventName. The next time eventName is triggered, this listener is removed and then invoked.

      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -460,7 +460,7 @@

      Parameters

      • event: "unpipe"
      • listener: ((src: Readable) => void)

        The callback function

          • (src): void
          • Parameters

            • src: Readable

            Returns void

      Returns this

      v0.3.0

      -
    • Adds a one-time listener function for the event named eventName. The +

    • Adds a one-time listener function for the event named eventName. The next time eventName is triggered, this listener is removed and then invoked.

      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -473,7 +473,7 @@

      Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)

        The callback function

          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v0.3.0

      -
    • Type Parameters

      • T extends WritableStream

      Parameters

      • destination: T
      • Optionaloptions: {
            end?: boolean;
        }
        • Optionalend?: boolean

      Returns T

    • Adds the listener function to the beginning of the listeners array for the +

    • Type Parameters

      • T extends WritableStream

      Parameters

      • destination: T
      • Optionaloptions: {
            end?: boolean;
        }
        • Optionalend?: boolean

      Returns T

    • Adds the listener function to the beginning of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -483,7 +483,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "close"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v6.0.0

      -
    • Adds the listener function to the beginning of the listeners array for the +

    • Adds the listener function to the beginning of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -493,7 +493,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "drain"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v6.0.0

      -
    • Adds the listener function to the beginning of the listeners array for the +

    • Adds the listener function to the beginning of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -503,7 +503,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "error"
      • listener: ((err: Error) => void)

        The callback function

          • (err): void
          • Parameters

            • err: Error

            Returns void

      Returns this

      v6.0.0

      -
    • Adds the listener function to the beginning of the listeners array for the +

    • Adds the listener function to the beginning of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -513,7 +513,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "finish"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v6.0.0

      -
    • Adds the listener function to the beginning of the listeners array for the +

    • Adds the listener function to the beginning of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -523,7 +523,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "pipe"
      • listener: ((src: Readable) => void)

        The callback function

          • (src): void
          • Parameters

            • src: Readable

            Returns void

      Returns this

      v6.0.0

      -
    • Adds the listener function to the beginning of the listeners array for the +

    • Adds the listener function to the beginning of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -533,7 +533,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "unpipe"
      • listener: ((src: Readable) => void)

        The callback function

          • (src): void
          • Parameters

            • src: Readable

            Returns void

      Returns this

      v6.0.0

      -
    • Adds the listener function to the beginning of the listeners array for the +

    • Adds the listener function to the beginning of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -543,7 +543,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)

        The callback function

          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v6.0.0

      -
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +

    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this listener is removed, and then invoked.

      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -551,7 +551,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "close"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v6.0.0

      -
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +

    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this listener is removed, and then invoked.

      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -559,7 +559,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "drain"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v6.0.0

      -
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +

    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this listener is removed, and then invoked.

      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -567,7 +567,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "error"
      • listener: ((err: Error) => void)

        The callback function

          • (err): void
          • Parameters

            • err: Error

            Returns void

      Returns this

      v6.0.0

      -
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +

    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this listener is removed, and then invoked.

      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -575,7 +575,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "finish"
      • listener: (() => void)

        The callback function

          • (): void
          • Returns void

      Returns this

      v6.0.0

      -
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +

    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this listener is removed, and then invoked.

      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -583,7 +583,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "pipe"
      • listener: ((src: Readable) => void)

        The callback function

          • (src): void
          • Parameters

            • src: Readable

            Returns void

      Returns this

      v6.0.0

      -
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +

    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this listener is removed, and then invoked.

      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -591,7 +591,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "unpipe"
      • listener: ((src: Readable) => void)

        The callback function

          • (src): void
          • Parameters

            • src: Readable

            Returns void

      Returns this

      v6.0.0

      -
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +

    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this listener is removed, and then invoked.

      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -599,7 +599,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)

        The callback function

          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v6.0.0

      -
    • Returns a copy of the array of listeners for the event named eventName, +

    • Returns a copy of the array of listeners for the event named eventName, including any wrappers (such as those created by .once()).

      import { EventEmitter } from 'node:events';
      const emitter = new EventEmitter();
      emitter.once('log', () => console.log('log once'));

      // Returns a new Array with a function `onceWrapper` which has a property
      // `listener` which contains the original listener bound above
      const listeners = emitter.rawListeners('log');
      const logFnWrapper = listeners[0];

      // Logs "log once" to the console and does not unbind the `once` event
      logFnWrapper.listener();

      // Logs "log once" to the console and removes the listener
      logFnWrapper();

      emitter.on('log', () => console.log('log persistently'));
      // Will return a new Array with a single function bound by `.on()` above
      const newListeners = emitter.rawListeners('log');

      // Logs "log persistently" twice
      newListeners[0]();
      emitter.emit('log');
      @@ -638,7 +638,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "close"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.1.26

      -
    • Removes the specified listener from the listener array for the event named eventName.

      +
    • Removes the specified listener from the listener array for the event named eventName.

      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback);
      @@ -665,7 +665,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "drain"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.1.26

      -
    • Removes the specified listener from the listener array for the event named eventName.

      +
    • Removes the specified listener from the listener array for the event named eventName.

      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback);
      @@ -692,7 +692,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "error"
      • listener: ((err: Error) => void)
          • (err): void
          • Parameters

            • err: Error

            Returns void

      Returns this

      v0.1.26

      -
    • Removes the specified listener from the listener array for the event named eventName.

      +
    • Removes the specified listener from the listener array for the event named eventName.

      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback);
      @@ -719,7 +719,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "finish"
      • listener: (() => void)
          • (): void
          • Returns void

      Returns this

      v0.1.26

      -
    • Removes the specified listener from the listener array for the event named eventName.

      +
    • Removes the specified listener from the listener array for the event named eventName.

      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback);
      @@ -746,7 +746,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "pipe"
      • listener: ((src: Readable) => void)
          • (src): void
          • Parameters

            • src: Readable

            Returns void

      Returns this

      v0.1.26

      -
    • Removes the specified listener from the listener array for the event named eventName.

      +
    • Removes the specified listener from the listener array for the event named eventName.

      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback);
      @@ -773,7 +773,7 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: "unpipe"
      • listener: ((src: Readable) => void)
          • (src): void
          • Parameters

            • src: Readable

            Returns void

      Returns this

      v0.1.26

      -
    • Removes the specified listener from the listener array for the event named eventName.

      +
    • Removes the specified listener from the listener array for the event named eventName.

      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback);
      @@ -800,10 +800,10 @@

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • event: string | symbol
      • listener: ((...args: any[]) => void)
          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v0.1.26

      -
    • The writable.setDefaultEncoding() method sets the default encoding for a Writable stream.

      +
    • The writable.setDefaultEncoding() method sets the default encoding for a Writable stream.

      Parameters

      • encoding: BufferEncoding

        The new default encoding

      Returns this

      v0.11.15

      -
    • By default EventEmitters will print a warning if more than 10 listeners are +

    • By default EventEmitters will print a warning if more than 10 listeners are added for a particular event. This is a useful default that helps finding memory leaks. The emitter.setMaxListeners() method allows the limit to be modified for this specific EventEmitter instance. The value can be set to Infinity (or 0) to indicate an unlimited number of listeners.

      @@ -824,7 +824,7 @@

      See also: writable.cork().

      Returns void

      v0.11.2

      -
    • The writable.write() method writes some data to the stream, and calls the +

    • The writable.write() method writes some data to the stream, and calls the supplied callback once the data has been fully handled. If an error occurs, the callback will be called with the error as its first argument. The callback is called asynchronously and before 'error' is @@ -860,7 +860,7 @@

    • Optionalcallback: ((error: undefined | null | Error) => void)

      Callback for when this chunk of data is flushed.

        • (error): void
        • Parameters

          • error: undefined | null | Error

          Returns void

    Returns boolean

    false if the stream wishes for the calling code to wait for the 'drain' event to be emitted before continuing to write additional data; otherwise true.

    v0.9.4

    -
  • Parameters

    • chunk: any
    • encoding: BufferEncoding
    • Optionalcallback: ((error: undefined | null | Error) => void)
        • (error): void
        • Parameters

          • error: undefined | null | Error

          Returns void

    Returns boolean

    • Experimental

      Listens once to the abort event on the provided signal.

      +
    • Parameters

      • chunk: any
      • encoding: BufferEncoding
      • Optionalcallback: ((error: undefined | null | Error) => void)
          • (error): void
          • Parameters

            • error: undefined | null | Error

            Returns void

      Returns boolean

    • Experimental

      Listens once to the abort event on the provided signal.

      Listening to the abort event on abort signals is unsafe and may lead to resource leaks since another third party with the signal can call e.stopImmediatePropagation(). Unfortunately Node.js cannot change @@ -876,8 +876,8 @@

      Parameters

      • signal: AbortSignal
      • resource: ((event: Event) => void)
          • (event): void
          • Parameters

            • event: Event

            Returns void

      Returns Disposable

      Disposable that removes the abort listener.

      v20.5.0

    • Experimental

      A utility method for creating a Writable from a web WritableStream.

      -

      Parameters

      • writableStream: WritableStream<any>
      • Optionaloptions: Pick<WritableOptions,
            | "signal"
            | "objectMode"
            | "highWaterMark"
            | "decodeStrings">

      Returns Writable

      v17.0.0

      -
    • Returns a copy of the array of listeners for the event named eventName.

      +

      Parameters

      • writableStream: WritableStream<any>
      • Optionaloptions: Pick<WritableOptions<Writable>,
            | "signal"
            | "objectMode"
            | "highWaterMark"
            | "decodeStrings">

      Returns Writable

      v17.0.0

      +
    • Returns a copy of the array of listeners for the event named eventName.

      For EventEmitters this behaves exactly the same as calling .listeners on the emitter.

      For EventTargets this is the only way to get the event listeners for the @@ -950,4 +950,4 @@

    Returns void

    v15.4.0

    • Experimental

      A utility method for creating a web WritableStream from a Writable.

      Parameters

      • streamWritable: Writable

      Returns WritableStream<any>

      v17.0.0

      -
    +
    diff --git a/docs/Next/classes/HostAddress.html b/docs/Next/classes/HostAddress.html index 7c4a62677e7..c6bc7539fc7 100644 --- a/docs/Next/classes/HostAddress.html +++ b/docs/Next/classes/HostAddress.html @@ -1,4 +1,4 @@ -HostAddress | mongodb

    Class HostAddress

    Constructors

    constructor +HostAddress | mongodb

    Class HostAddress

    Constructors

    Properties

    Constructors

    Properties

    host: undefined | string = undefined
    isIPv6: boolean = false
    port: undefined | number = undefined
    socketPath: undefined | string = undefined

    Methods

    • Returns {
          host: string;
          port: number;
      }

      • host: string
      • port: number
    +

    Constructors

    Properties

    host: undefined | string = undefined
    isIPv6: boolean = false
    port: undefined | number = undefined
    socketPath: undefined | string = undefined

    Methods

    • Returns {
          host: string;
          port: number;
      }

      • host: string
      • port: number
    diff --git a/docs/Next/classes/ListCollectionsCursor.html b/docs/Next/classes/ListCollectionsCursor.html index b8c12bda081..6ac274ca9a8 100644 --- a/docs/Next/classes/ListCollectionsCursor.html +++ b/docs/Next/classes/ListCollectionsCursor.html @@ -58,7 +58,7 @@ on once setMaxListeners -

    Constructors

    Properties

    [asyncDispose]: (() => Promise<void>)

    An alias for AbstractCursor.close|AbstractCursor.close().

    +

    Constructors

    Properties

    [asyncDispose]: (() => Promise<void>)

    An alias for AbstractCursor.close|AbstractCursor.close().

    filter: Document
    parent: Db
    signal: undefined | AbortSignal
    captureRejections: boolean

    Value: boolean

    Change the default captureRejections option on all new EventEmitter objects.

    Returns this

    v0.3.5

    -
    • Returns an array of documents. The caller is responsible for making sure that there is enough memory to store the results. Note that the array only contains partial results when this cursor had been previously accessed. In that case, cursor.rewind() can be used to reset the cursor.

      diff --git a/docs/Next/classes/ListSearchIndexesCursor.html b/docs/Next/classes/ListSearchIndexesCursor.html index a9eea0a2784..640306191fd 100644 --- a/docs/Next/classes/ListSearchIndexesCursor.html +++ b/docs/Next/classes/ListSearchIndexesCursor.html @@ -458,7 +458,7 @@
    • Returns an array of documents. The caller is responsible for making sure that there is enough memory to store the results. Note that the array only contains partial results when this cursor had been previously accessed. In that case, cursor.rewind() can be used to reset the cursor.

      diff --git a/docs/Next/classes/MongoAPIError.html b/docs/Next/classes/MongoAPIError.html index 4f7b9434c2e..3c340556d88 100644 --- a/docs/Next/classes/MongoAPIError.html +++ b/docs/Next/classes/MongoAPIError.html @@ -1,5 +1,5 @@ MongoAPIError | mongodb

      Class MongoAPIError

      An error generated when the driver API is used incorrectly

      -

      Hierarchy (view full)

      Constructors

      Hierarchy (view full)

      Constructors

      Properties

      cause? code? connectionGeneration? diff --git a/docs/Next/classes/MongoClient.html b/docs/Next/classes/MongoClient.html index 9add53fe999..daae32701ec 100644 --- a/docs/Next/classes/MongoClient.html +++ b/docs/Next/classes/MongoClient.html @@ -1,9 +1,23 @@ MongoClient | mongodb

      Class MongoClient

      The MongoClient class is a class that allows for making Connections to MongoDB.

      -

      The programmatically provided options take precedence over the URI options.

      -
      import { MongoClient } from 'mongodb';

      // Enable command monitoring for debugging
      const client = new MongoClient('mongodb://localhost:27017', { monitorCommands: true });

      client.on('commandStarted', started => console.log(started));
      client.db().collection('pets');
      await client.insertOne({ name: 'spot', kind: 'dog' }); +

      NOTE: The programmatically provided options take precedence over the URI options.

      +

      A MongoClient is the entry point to connecting to a MongoDB server.

      +

      It handles a multitude of features on your application's behalf:

      +
        +
      • Server Host Connection Configuration: A MongoClient is responsible for reading TLS cert, ca, and crl files if provided.
      • +
      • SRV Record Polling: A "mongodb+srv" style connection string is used to have the MongoClient resolve DNS SRV records of all server hostnames which the driver periodically monitors for changes and adjusts its current view of hosts correspondingly.
      • +
      • Server Monitoring: The MongoClient automatically keeps monitoring the health of server nodes in your cluster to reach out to the correct and lowest latency one available.
      • +
      • Connection Pooling: To avoid paying the cost of rebuilding a connection to the server on every operation the MongoClient keeps idle connections preserved for reuse.
      • +
      • Session Pooling: The MongoClient creates logical sessions that enable retryable writes, causal consistency, and transactions. It handles pooling these sessions for reuse in subsequent operations.
      • +
      • Cursor Operations: A MongoClient's cursors use the health monitoring system to send the request for more documents to the same server the query began on.
      • +
      • Mongocryptd process: When using auto encryption, a MongoClient will launch a mongocryptd instance for handling encryption if the mongocrypt shared library isn't in use.
      • +
      +

      There are many more features of a MongoClient that are not listed above.

      +

      In order to enable these features, a number of asynchronous Node.js resources are established by the driver: Timers, FS Requests, Sockets, etc. +For details on cleanup, please refer to the MongoClient close() documentation.

      +
      import { MongoClient } from 'mongodb';
      // Enable command monitoring for debugging
      const client = new MongoClient('mongodb://localhost:27017?appName=mflix', { monitorCommands: true });
      -

      Hierarchy (view full)

      Implements

      Constructors

      Hierarchy (view full)

      Implements

      Constructors

      Properties

      Constructors

      Properties

      [asyncDispose]: (() => Promise<void>)

      An alias for MongoClient.close().

      -
      options: Readonly<Omit<MongoOptions,
          | "ca"
          | "cert"
          | "crl"
          | "key"
          | "monitorCommands">> & Pick<MongoOptions,
          | "ca"
          | "cert"
          | "crl"
          | "key"
          | "monitorCommands">

      The consolidate, parsed, transformed and merged options.

      -
      captureRejections: boolean

      Value: boolean

      +

      Constructors

      Properties

      [asyncDispose]: (() => Promise<void>)

      An alias for MongoClient.close().

      +
      options: Readonly<Omit<MongoOptions,
          | "ca"
          | "cert"
          | "crl"
          | "key"
          | "monitorCommands">> & Pick<MongoOptions,
          | "ca"
          | "cert"
          | "crl"
          | "key"
          | "monitorCommands">

      The consolidate, parsed, transformed and merged options.

      +
      captureRejections: boolean

      Value: boolean

      Change the default captureRejections option on all new EventEmitter objects.

      v13.4.0, v12.16.0

      captureRejectionSymbol: typeof captureRejectionSymbol

      v13.6.0, v12.17.0

      -

      Accessors

      Methods

      • Type Parameters

        • K

        Parameters

        • error: Error
        • event: string | symbol
        • Rest...args: AnyRest

        Returns void

      Accessors

      Methods

      • Type Parameters

        • K

        Parameters

        • error: Error
        • event: string | symbol
        • Rest...args: AnyRest

        Returns void

      • Alias for emitter.on(eventName, listener).

        Type Parameters

        • EventKey extends
              | "error"
              | "timeout"
              | "close"
              | "open"
              | "serverOpening"
              | "serverClosed"
              | "serverDescriptionChanged"
              | "topologyOpening"
              | "topologyClosed"
              | "topologyDescriptionChanged"
              | "connectionPoolCreated"
              | "connectionPoolClosed"
              | "connectionPoolCleared"
              | "connectionPoolReady"
              | "connectionCreated"
              | "connectionReady"
              | "connectionClosed"
              | "connectionCheckOutStarted"
              | "connectionCheckOutFailed"
              | "connectionCheckedOut"
              | "connectionCheckedIn"
              | "commandStarted"
              | "commandSucceeded"
              | "commandFailed"
              | "serverHeartbeatStarted"
              | "serverHeartbeatSucceeded"
              | "serverHeartbeatFailed"

        Parameters

        Returns this

        v0.1.26

      • Alias for emitter.on(eventName, listener).

        Parameters

        Returns this

        v0.1.26

        @@ -95,27 +109,77 @@

        Returns Promise<ClientBulkWriteResult>

        A ClientBulkWriteResult for acknowledged writes and ok: 1 for unacknowledged writes.

        -
      • Cleans up client-side resources used by the MongoCLient and . This includes:

        +
      • Cleans up resources managed by the MongoClient.

        +

        The close method clears and closes all resources whose lifetimes are managed by the MongoClient. +Please refer to the MongoClient class documentation for a high level overview of the client's key features and responsibilities.

        +

        However, the close method does not handle the cleanup of resources explicitly created by the user. +Any user-created driver resource with its own close() method should be explicitly closed by the user before calling MongoClient.close(). +This method is written as a "best effort" attempt to leave behind the least amount of resources server-side when possible.

        +

        The following list defines ideal preconditions and consequent pitfalls if they are not met. +The MongoClient, ClientSession, Cursors and ChangeStreams all support explicit resource management. +By using explicit resource management to manage the lifetime of driver resources instead of manually managing their lifetimes, the pitfalls outlined below can be avoided.

        +

        The close method performs the following in the order listed:

        +
          +
        • Client-side: +
            +
          • Close in-use connections: Any connections that are currently waiting on a response from the server will be closed. +This is performed first to avoid reaching the next step (server-side clean up) and having no available connections to check out. +
              +
            • Ideal: All operations have been awaited or cancelled, and the outcomes, regardless of success or failure, have been processed before closing the client servicing the operation.
            • +
            • Pitfall: When client.close() is called and all connections are in use, after closing them, the client must create new connections for cleanup operations, which comes at the cost of new TLS/TCP handshakes and authentication steps.
            • +
            +
          • +
          +
        • +
        • Server-side: +
            +
          • Close active cursors: All cursors that haven't been completed will have a killCursor operation sent to the server they were initialized on, freeing the server-side resource. +
              +
            • Ideal: Cursors are explicitly closed or completed before client.close() is called.
            • +
            • Pitfall: killCursors may have to build a new connection if the in-use closure ended all pooled connections.
            • +
            +
          • +
          • End active sessions: In-use sessions created with client.startSession() or client.withSession() or implicitly by the driver will have their .endSession() method called. +Contrary to the name of the method, endSession() returns the session to the client's pool of sessions rather than end them on the server. +
              +
            • Ideal: Transaction outcomes are awaited and their corresponding explicit sessions are ended before client.close() is called.
            • +
            • Pitfall: This step aborts in-progress transactions. It is advisable to observe the outcome of a transaction before closing your client.
            • +
            +
          • +
          • End all pooled sessions: The endSessions command with all session IDs the client has pooled is sent to the server to inform the cluster it can clean them up.
              -
            • Closes all open, unused connections (see note).
            • -
            • Ends all in-use sessions with ClientSession.endSession().
            • -
            • Ends all unused sessions server-side.
            • -
            • Cleans up any resources being used for auto encryption if auto encryption is enabled.
            • +
            • Ideal: No user intervention is expected.
            • +
            • Pitfall: None.
            • +
            +
          • +
          +
        • +
        +

        The remaining shutdown is of the MongoClient resources that are intended to be entirely internal but is documented here as their existence relates to the JS event loop.

        +
          +
        • Client-side (again): +
            +
          • Stop all server monitoring: Connections kept live for detecting cluster changes and roundtrip time measurements are shutdown.
          • +
          • Close all pooled connections: Each server node in the cluster has a corresponding connection pool and all connections in the pool are closed. Any operations waiting to check out a connection will have an error thrown instead of a connection returned.
          • +
          • Clear out server selection queue: Any operations that are in the process of waiting for a server to be selected will have an error thrown instead of a server returned.
          • +
          • Close encryption-related resources: An internal MongoClient created for communicating with mongocryptd or other encryption purposes is closed. (Using this same method of course!)
          • +
          +
        -

        Parameters

        • force: boolean = false

          Force close, emitting no events

          -

        Returns Promise<void>

        Any in-progress operations are not killed and any connections used by in progress operations -will be cleaned up lazily as operations finish.

        -
      • Connect to MongoDB using a url

        -

        Returns Promise<MongoClient>

        Calling connect is optional since the first operation you perform will call connect if it's needed. +

        After the close method completes there should be no MongoClient related resources ref-ed in Node.js' event loop. +This should allow Node.js to exit gracefully if MongoClient resources were the only active handles in the event loop.

        +

        Parameters

        • _force: boolean = false

          currently an unused flag that has no effect. Defaults to false.

          +

        Returns Promise<void>

      • Connect to MongoDB using a url

        +

        Returns Promise<MongoClient>

        Calling connect is optional since the first operation you perform will call connect if it's needed. timeoutMS will bound the time any operation can take before throwing a timeout error. However, when the operation being run is automatically connecting your MongoClient the timeoutMS will not apply to the time taken to connect the MongoClient. This means the time to setup the MongoClient does not count against timeoutMS. If you are using timeoutMS we recommend connecting your client explicitly in advance of any operation to avoid this inconsistent execution time.

        docs.mongodb.org/manual/reference/connection-string/

        -
      • Create a new Db instance sharing the current socket connections.

        +
      • Create a new Db instance sharing the current socket connections.

        Parameters

        • OptionaldbName: string

          The name of the database we want to use. If not provided, use database name from connection string.

        • Optionaloptions: DbOptions

          Optional settings for Db construction

          -

        Returns Db

      • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +

      Returns Db

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments to each.

      Returns true if the event had listeners, false otherwise.

      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener @@ -385,16 +449,16 @@
    • Creates a new ClientSession. When using the returned session in an operation a corresponding ServerSession will be created.

      -

      Parameters

      Returns ClientSession

      A ClientSession instance may only be passed to operations being performed on the same +

      Parameters

      Returns ClientSession

      A ClientSession instance may only be passed to operations being performed on the same MongoClient it was started from.

      -
    • Create a new Change Stream, watching for new changes (insertions, updates, replacements, deletions, and invalidations) in this cluster. Will ignore all changes to system collections, as well as the local, admin, and config databases.

      Type Parameters

      Parameters

      • pipeline: Document[] = []

        An array of pipeline stages through which to pass change stream documents. This allows for filtering (using $match) and manipulating the change stream documents.

      • options: ChangeStreamOptions = {}

        Optional settings for the command

        -

      Returns ChangeStream<TSchema, TChange>

      watch() accepts two generic arguments for distinct use cases:

      +

    Returns ChangeStream<TSchema, TChange>

    watch() accepts two generic arguments for distinct use cases:

    • A convenience method for creating and handling the clean up of a ClientSession. +

    • A convenience method for creating and handling the clean up of a ClientSession. The session will always be ended when the executor finishes.

      Type Parameters

      • T = any

      Parameters

      • executor: WithSessionCallback<T>

        An executor function that all operations using the provided session must be invoked in

        -

      Returns Promise<T>

    • Type Parameters

      • T = any

      Parameters

      Returns Promise<T>

    • Experimental

      Listens once to the abort event on the provided signal.

      +

    Returns Promise<T>

  • Type Parameters

    • T = any

    Parameters

    Returns Promise<T>

    • Connect to MongoDB using a url

      -

      Parameters

      Returns Promise<MongoClient>

      Calling connect is optional since the first operation you perform will call connect if it's needed. +

      Parameters

      Returns Promise<MongoClient>

      Calling connect is optional since the first operation you perform will call connect if it's needed. timeoutMS will bound the time any operation can take before throwing a timeout error. However, when the operation being run is automatically connecting your MongoClient the timeoutMS will not apply to the time taken to connect the MongoClient. This means the time to setup the MongoClient does not count against timeoutMS. If you are using timeoutMS we recommend connecting your client explicitly in advance of any operation to avoid this inconsistent execution time.

      https://www.mongodb.com/docs/manual/reference/connection-string/

      -
    • Returns a copy of the array of listeners for the event named eventName.

      +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

    • Create .stack property on a target object

      diff --git a/docs/Next/classes/MongoDBCollectionNamespace.html b/docs/Next/classes/MongoDBCollectionNamespace.html index b7f7f04a517..3c4a0341be7 100644 --- a/docs/Next/classes/MongoDBCollectionNamespace.html +++ b/docs/Next/classes/MongoDBCollectionNamespace.html @@ -2,11 +2,9 @@ the collection portion of the namespace is defined and should only be used in scenarios where this can be guaranteed.

    Hierarchy (view full)

    Constructors

    Properties

    Properties

    Methods

    Constructors

    Properties

    collection: string

    collection name

    -
    db: string

    database name

    -

    Methods

    +

    Constructors

    Properties

    collection: string
    db: string

    Methods

    diff --git a/docs/Next/classes/MongoDBNamespace.html b/docs/Next/classes/MongoDBNamespace.html index 667bca5e6a5..547076b7b0f 100644 --- a/docs/Next/classes/MongoDBNamespace.html +++ b/docs/Next/classes/MongoDBNamespace.html @@ -7,6 +7,4 @@

    Constructors

    Properties

    collection?: string

    collection name

    -
    db: string

    database name

    -

    Methods

    +

    Returns MongoDBNamespace

    Properties

    collection?: string
    db: string

    Methods

    diff --git a/docs/Next/classes/MongoInvalidArgumentError.html b/docs/Next/classes/MongoInvalidArgumentError.html index 5871e17a9b4..0dc69a2662a 100644 --- a/docs/Next/classes/MongoInvalidArgumentError.html +++ b/docs/Next/classes/MongoInvalidArgumentError.html @@ -1,6 +1,6 @@ MongoInvalidArgumentError | mongodb

    Class MongoInvalidArgumentError

    An error generated when the user supplies malformed or unexpected arguments or when a required argument or field is not provided.

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    cause? code? connectionGeneration? @@ -19,11 +19,11 @@

    Meant for internal use only.

    Parameters

    • message: string
    • Optionaloptions: {
          cause?: Error;
      }
      • Optionalcause?: Error

    Returns MongoInvalidArgumentError

    This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

    -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

    • Create .stack property on a target object

      diff --git a/docs/Next/classes/MongoMissingCredentialsError.html b/docs/Next/classes/MongoMissingCredentialsError.html index 4673c6f70b9..919f8064fde 100644 --- a/docs/Next/classes/MongoMissingCredentialsError.html +++ b/docs/Next/classes/MongoMissingCredentialsError.html @@ -1,6 +1,6 @@ MongoMissingCredentialsError | mongodb

      Class MongoMissingCredentialsError

      An error generated when the user fails to provide authentication credentials before attempting to connect to a mongo server instance.

      -

      Hierarchy (view full)

      Constructors

      Hierarchy (view full)

      Constructors

      Properties

      cause? code? connectionGeneration? @@ -19,11 +19,11 @@

      Meant for internal use only.

      Parameters

      • message: string

      Returns MongoMissingCredentialsError

      This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

      -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

    • Create .stack property on a target object

      diff --git a/docs/Next/classes/MongoMissingDependencyError.html b/docs/Next/classes/MongoMissingDependencyError.html index 61e1c0cf855..33866487fa4 100644 --- a/docs/Next/classes/MongoMissingDependencyError.html +++ b/docs/Next/classes/MongoMissingDependencyError.html @@ -1,5 +1,5 @@ MongoMissingDependencyError | mongodb

      Class MongoMissingDependencyError

      An error generated when a required module or dependency is not present in the local environment

      -

      Hierarchy (view full)

      Constructors

      Hierarchy (view full)

      Constructors

      Properties

      cause code? connectionGeneration? @@ -19,12 +19,12 @@

      Meant for internal use only.

      Parameters

      • message: string
      • options: {
            cause: Error;
            dependencyName: string;
        }
        • cause: Error
        • dependencyName: string

      Returns MongoMissingDependencyError

      This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

      -

    Properties

    cause: Error

    This property is assigned in the Error constructor.

    -
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    -
    connectionGeneration?: number
    dependencyName: string
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +

    Properties

    cause: Error

    This property is assigned in the Error constructor.

    +
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +
    connectionGeneration?: number
    dependencyName: string
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

    • Create .stack property on a target object

      diff --git a/docs/Next/classes/MongoNetworkError.html b/docs/Next/classes/MongoNetworkError.html index bea806da4c5..1746318d85f 100644 --- a/docs/Next/classes/MongoNetworkError.html +++ b/docs/Next/classes/MongoNetworkError.html @@ -1,5 +1,5 @@ MongoNetworkError | mongodb

      Class MongoNetworkError

      An error indicating an issue with the network, including TCP errors and timeouts.

      -

      Hierarchy (view full)

      Constructors

      Hierarchy (view full)

      Constructors

      Properties

      cause? code? connectionGeneration? @@ -18,11 +18,11 @@

      Meant for internal use only.

      Parameters

      Returns MongoNetworkError

      This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

      -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

    • Create .stack property on a target object

      diff --git a/docs/Next/classes/MongoNetworkTimeoutError.html b/docs/Next/classes/MongoNetworkTimeoutError.html index 008bd2fe34d..90b1b131eda 100644 --- a/docs/Next/classes/MongoNetworkTimeoutError.html +++ b/docs/Next/classes/MongoNetworkTimeoutError.html @@ -1,5 +1,5 @@ MongoNetworkTimeoutError | mongodb

      Class MongoNetworkTimeoutError

      An error indicating a network timeout occurred

      -

      Hierarchy (view full)

      Constructors

      Hierarchy (view full)

      Constructors

      Properties

      cause? code? connectionGeneration? @@ -18,11 +18,11 @@

      Meant for internal use only.

      Parameters

      Returns MongoNetworkTimeoutError

      This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

      -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

    • Create .stack property on a target object

      diff --git a/docs/Next/classes/MongoParseError.html b/docs/Next/classes/MongoParseError.html index efbd1052f86..eb18fabf120 100644 --- a/docs/Next/classes/MongoParseError.html +++ b/docs/Next/classes/MongoParseError.html @@ -1,5 +1,5 @@ MongoParseError | mongodb

      Class MongoParseError

      An error used when attempting to parse a value (like a connection string)

      -

      Hierarchy (view full)

      Constructors

      Hierarchy (view full)

      Constructors

      Properties

      cause? code? connectionGeneration? @@ -18,11 +18,11 @@

      Meant for internal use only.

      Parameters

      • message: string

      Returns MongoParseError

      This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

      -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    connectionGeneration?: number
    message: string
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

    • Create .stack property on a target object

      diff --git a/docs/Next/classes/MongoServerSelectionError.html b/docs/Next/classes/MongoServerSelectionError.html index eda084f4123..46a89af772f 100644 --- a/docs/Next/classes/MongoServerSelectionError.html +++ b/docs/Next/classes/MongoServerSelectionError.html @@ -1,5 +1,5 @@ MongoServerSelectionError | mongodb

      Class MongoServerSelectionError

      An error signifying a client-side server selection error

      -

      Hierarchy (view full)

      Constructors

      Hierarchy (view full)

      Constructors

      Properties

      cause? code? connectionGeneration? @@ -19,12 +19,12 @@

      Meant for internal use only.

      Parameters

      Returns MongoServerSelectionError

      This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

      -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    connectionGeneration?: number
    message: string

    An optional reason context, such as an error saved during flow of monitoring and selecting servers

    -
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    connectionGeneration?: number
    message: string

    An optional reason context, such as an error saved during flow of monitoring and selecting servers

    -
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stack?: string
    topologyVersion?: TopologyVersion
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

    • Create .stack property on a target object

      diff --git a/docs/Next/classes/MongoWriteConcernError.html b/docs/Next/classes/MongoWriteConcernError.html index 33f90954824..399cdf5340a 100644 --- a/docs/Next/classes/MongoWriteConcernError.html +++ b/docs/Next/classes/MongoWriteConcernError.html @@ -1,5 +1,5 @@ MongoWriteConcernError | mongodb

      Class MongoWriteConcernError

      An error thrown when the server reports a writeConcernError

      -

      Hierarchy (view full)

      Constructors

      Hierarchy (view full)

      Constructors

      Properties

      cause? code? codeName? @@ -24,13 +24,13 @@

      Meant for internal use only.

      Parameters

      Returns MongoWriteConcernError

      This class is only meant to be constructed within the driver. This constructor is not subject to semantic versioning compatibility guarantees and may change at any time.

      -

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    +

    Properties

    cause?: Error
    code?: string | number

    This is a number in MongoServerError and a string in MongoDriverError

    codeName?: string
    connectionGeneration?: number
    errInfo?: Document
    errorResponse: ErrorDescription

    Raw error result document returned by server.

    message: string
    ok?: number
    result: Document

    The result document

    -
    stack?: string
    topologyVersion?: TopologyVersion
    writeConcernError?: Document
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    +
    stack?: string
    topologyVersion?: TopologyVersion
    writeConcernError?: Document
    prepareStackTrace?: ((err: Error, stackTraces: CallSite[]) => any)

    Optional override for formatting stack traces

    stackTraceLimit: number

    Accessors

    • get errmsg(): string
    • Legacy name for server error responses

      -

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      +

      Returns string

    • get errorLabels(): string[]
    • Returns string[]

    • get name(): string
    • Returns string

    Methods

    • Checks the error to see if it has an error label

      Parameters

      • label: string

        The error label to check for

      Returns boolean

      returns true if the error has the provided error label

    • Create .stack property on a target object

      diff --git a/docs/Next/classes/OrderedBulkOperation.html b/docs/Next/classes/OrderedBulkOperation.html index c52db54ba3f..e02d9e8ef96 100644 --- a/docs/Next/classes/OrderedBulkOperation.html +++ b/docs/Next/classes/OrderedBulkOperation.html @@ -9,14 +9,14 @@ find insert raw -

    Properties

    isOrdered: boolean
    operationId?: number

    Accessors

    Methods

    • Builds a find operation for an update/updateOne/delete/deleteOne/replaceOne. +

    Properties

    isOrdered: boolean
    operationId?: number

    Accessors

    Methods

    • Builds a find operation for an update/updateOne/delete/deleteOne/replaceOne. Returns a builder object used to complete the definition of the operation.

      Parameters

      Returns FindOperators

      const bulkOp = collection.initializeOrderedBulkOp();

      // Add an updateOne to the bulkOp
      bulkOp.find({ a: 1 }).updateOne({ $set: { b: 2 } });

      // Add an updateMany to the bulkOp
      bulkOp.find({ c: 3 }).update({ $set: { d: 4 } });

      // Add an upsert
      bulkOp.find({ e: 5 }).upsert().updateOne({ $set: { f: 6 } });

      // Add a deletion
      bulkOp.find({ g: 7 }).deleteOne();

      // Add a multi deletion
      bulkOp.find({ h: 8 }).delete();

      // Add a replaceOne
      bulkOp.find({ i: 9 }).replaceOne({writeConcern: { j: 10 }});

      // Update using a pipeline (requires Mongodb 4.2 or higher)
      bulk.find({ k: 11, y: { $exists: true }, z: { $exists: true } }).updateOne([
      { $set: { total: { $sum: [ '$y', '$z' ] } } }
      ]);

      // All of the ops will now be executed
      await bulkOp.execute();
      -
    +
    diff --git a/docs/Next/classes/RunCommandCursor.html b/docs/Next/classes/RunCommandCursor.html index 4a6d161f488..983455656d0 100644 --- a/docs/Next/classes/RunCommandCursor.html +++ b/docs/Next/classes/RunCommandCursor.html @@ -419,7 +419,7 @@

    Returns undefined | WriteConcern

    diff --git a/docs/Next/functions/BSON.deserialize.html b/docs/Next/functions/BSON.deserialize.html index d5af3037f64..04af1bb3818 100644 --- a/docs/Next/functions/BSON.deserialize.html +++ b/docs/Next/functions/BSON.deserialize.html @@ -1,4 +1,4 @@ deserialize | mongodb

    Function deserialize

    • Deserialize data as BSON.

      -

      Parameters

      • buffer: Uint8Array

        the buffer containing the serialized set of BSON documents.

        +

        Parameters

        • buffer: Uint8Array<ArrayBufferLike>

          the buffer containing the serialized set of BSON documents.

        • Optionaloptions: DeserializeOptions

        Returns Document

        returns the deserialized Javascript Object.

    diff --git a/docs/Next/functions/BSON.deserializeStream.html b/docs/Next/functions/BSON.deserializeStream.html index 678b8409809..6bc3b1d78ea 100644 --- a/docs/Next/functions/BSON.deserializeStream.html +++ b/docs/Next/functions/BSON.deserializeStream.html @@ -1,5 +1,5 @@ deserializeStream | mongodb

    Function deserializeStream

    key: string

    The Amazon Resource Name (ARN) to the AWS customer master key (CMK)

    +
    region: string

    The AWS region of the KMS

    +
    diff --git a/docs/Next/interfaces/AggregateOptions.html b/docs/Next/interfaces/AggregateOptions.html index 2d91bf418e5..f5705230602 100644 --- a/docs/Next/interfaces/AggregateOptions.html +++ b/docs/Next/interfaces/AggregateOptions.html @@ -1,4 +1,4 @@ -AggregateOptions | mongodb

    Interface AggregateOptions

    interface AggregateOptions {
        allowDiskUse?: boolean;
        authdb?: string;
        batchSize?: number;
        bsonRegExp?: boolean;
        bypassDocumentValidation?: boolean;
        checkKeys?: boolean;
        collation?: CollationOptions;
        comment?: unknown;
        cursor?: Document;
        dbName?: string;
        enableUtf8Validation?: boolean;
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
        fieldsAsRaw?: Document;
        hint?: Hint;
        ignoreUndefined?: boolean;
        let?: Document;
        maxAwaitTimeMS?: number;
        maxTimeMS?: number;
        noResponse?: boolean;
        omitReadPreference?: boolean;
        out?: string;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        retryWrites?: boolean;
        serializeFunctions?: boolean;
        session?: ClientSession;
        timeoutMS?: number;
        useBigInt64?: boolean;
        willRetryWrite?: boolean;
        writeConcern?: WriteConcern | WriteConcernSettings;
    }

    Hierarchy (view full)

    Properties

    allowDiskUse? +AggregateOptions | mongodb

    Interface AggregateOptions

    interface AggregateOptions {
        allowDiskUse?: boolean;
        authdb?: string;
        batchSize?: number;
        bsonRegExp?: boolean;
        bypassDocumentValidation?: boolean;
        checkKeys?: boolean;
        collation?: CollationOptions;
        comment?: unknown;
        cursor?: Document;
        dbName?: string;
        enableUtf8Validation?: boolean;
        explain?: ExplainVerbosityLike | ExplainCommandOptions;
        fieldsAsRaw?: Document;
        hint?: Hint;
        ignoreUndefined?: boolean;
        let?: Document;
        maxAwaitTimeMS?: number;
        maxTimeMS?: number;
        noResponse?: boolean;
        omitReadPreference?: boolean;
        out?: string;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readPreference?: ReadPreferenceLike;
        retryWrites?: boolean;
        serializeFunctions?: boolean;
        session?: ClientSession;
        timeoutMS?: number;
        useBigInt64?: boolean;
        willRetryWrite?: boolean;
        writeConcern?: WriteConcern | WriteConcernSettings;
    }

    Hierarchy (view full)

    Properties

    allowDiskUse?: boolean

    allowDiskUse lets the server know if it can use disk to store temporary results for the aggregation (requires mongodb 2.6 >).

    -
    authdb?: string
    batchSize?: number

    The number of documents to return per batch. See aggregation documentation.

    -
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +
    authdb?: string
    batchSize?: number

    The number of documents to return per batch. See aggregation documentation.

    +
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    false

    bypassDocumentValidation?: boolean

    Allow driver to bypass schema validation.

    -
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    false

    collation?: CollationOptions

    Specify collation.

    -
    comment?: unknown

    Comment to apply to the operation.

    +
    comment?: unknown

    Comment to apply to the operation.

    In server versions pre-4.4, 'comment' must be string. A server error will be thrown if any other type is provided.

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    cursor?: Document

    Return the query as cursor, on 2.6 > it returns as a real cursor on pre 2.6 it returns as an emulated cursor.

    -
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    Specifies the verbosity mode for the explain output.

    This API is deprecated in favor of collection.aggregate().explain() or db.aggregate().explain().

    -
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    null

    hint?: Hint

    Add an index selection hint to an aggregation command

    -
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +

    ignoreUndefined?: boolean

    serialize will not emit undefined fields note that the driver sets this to false

    true

    let?: Document

    Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0).

    -
    maxAwaitTimeMS?: number

    The maximum amount of time for the server to wait on new documents to satisfy a tailable cursor query.

    -
    maxTimeMS?: number

    Specifies a cumulative time limit in milliseconds for processing operations on the cursor. MongoDB interrupts the operation at the earliest following interrupt point.

    -
    noResponse?: boolean
    omitReadPreference?: boolean
    out?: string
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +
    maxAwaitTimeMS?: number

    The maximum amount of time for the server to wait on new documents to satisfy a tailable cursor query.

    +
    maxTimeMS?: number

    Specifies a cumulative time limit in milliseconds for processing operations on the cursor. MongoDB interrupts the operation at the earliest following interrupt point.

    +
    noResponse?: boolean
    omitReadPreference?: boolean
    out?: string
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    false

    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    true

    diff --git a/docs/Next/interfaces/AggregationCursorOptions.html b/docs/Next/interfaces/AggregationCursorOptions.html index eb9ea84d14c..465d2f6fed3 100644 --- a/docs/Next/interfaces/AggregationCursorOptions.html +++ b/docs/Next/interfaces/AggregationCursorOptions.html @@ -37,7 +37,7 @@ willRetryWrite? writeConcern?

    Properties

    allowDiskUse?: boolean

    allowDiskUse lets the server know if it can use disk to store temporary results for the aggregation (requires mongodb 2.6 >).

    -
    authdb?: string
    awaitData?: boolean

    If awaitData is set to true, when the cursor reaches the end of the capped collection, +

    authdb?: string
    awaitData?: boolean

    If awaitData is set to true, when the cursor reaches the end of the capped collection, MongoDB blocks the query thread for a period of time waiting for new data to arrive. When new data is inserted into the capped collection, the blocked thread is signaled to wake up and return the next batch to the client.

    @@ -45,30 +45,30 @@
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    false

    bypassDocumentValidation?: boolean

    Allow driver to bypass schema validation.

    -
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    false

    collation?: CollationOptions

    Specify collation.

    -
    comment?: unknown

    Comment to apply to the operation.

    +
    comment?: unknown

    Comment to apply to the operation.

    In server versions pre-4.4, 'comment' must be string. A server error will be thrown if any other type is provided.

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    cursor?: Document

    Return the query as cursor, on 2.6 > it returns as a real cursor on pre 2.6 it returns as an emulated cursor.

    -
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    Specifies the verbosity mode for the explain output.

    This API is deprecated in favor of collection.aggregate().explain() or db.aggregate().explain().

    -
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    null

    hint?: Hint

    Add an index selection hint to an aggregation command

    -
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +

    ignoreUndefined?: boolean

    serialize will not emit undefined fields note that the driver sets this to false

    true

    let?: Document

    Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0).

    -
    maxAwaitTimeMS?: number

    When applicable maxAwaitTimeMS controls the amount of time subsequent getMores +

    maxAwaitTimeMS?: number

    When applicable maxAwaitTimeMS controls the amount of time subsequent getMores that a cursor uses to fetch more data should take. (ex. cursor.next())

    maxTimeMS?: number

    When applicable maxTimeMS controls the amount of time the initial command that constructs a cursor should take. (ex. find, aggregate, listCollections)

    -
    noCursorTimeout?: boolean
    noResponse?: boolean
    omitReadPreference?: boolean
    out?: string
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +
    noCursorTimeout?: boolean
    noResponse?: boolean
    omitReadPreference?: boolean
    out?: string
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    false

    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    true

    diff --git a/docs/Next/interfaces/AuthMechanismProperties.html b/docs/Next/interfaces/AuthMechanismProperties.html index cd7283cc7e0..480659e8f8f 100644 --- a/docs/Next/interfaces/AuthMechanismProperties.html +++ b/docs/Next/interfaces/AuthMechanismProperties.html @@ -1,4 +1,4 @@ -AuthMechanismProperties | mongodb

    Interface AuthMechanismProperties

    interface AuthMechanismProperties {
        ALLOWED_HOSTS?: string[];
        AWS_CREDENTIAL_PROVIDER?: AWSCredentialProvider;
        AWS_SESSION_TOKEN?: string;
        CANONICALIZE_HOST_NAME?: GSSAPICanonicalizationValue;
        ENVIRONMENT?:
            | "azure"
            | "gcp"
            | "test"
            | "k8s";
        OIDC_CALLBACK?: OIDCCallbackFunction;
        OIDC_HUMAN_CALLBACK?: OIDCCallbackFunction;
        SERVICE_HOST?: string;
        SERVICE_NAME?: string;
        SERVICE_REALM?: string;
        TOKEN_RESOURCE?: string;
    }

    Hierarchy (view full)

    Properties

    ALLOWED_HOSTS? +AuthMechanismProperties | mongodb

    Interface AuthMechanismProperties

    interface AuthMechanismProperties {
        ALLOWED_HOSTS?: string[];
        AWS_CREDENTIAL_PROVIDER?: AWSCredentialProvider;
        AWS_SESSION_TOKEN?: string;
        CANONICALIZE_HOST_NAME?: GSSAPICanonicalizationValue;
        ENVIRONMENT?:
            | "test"
            | "azure"
            | "gcp"
            | "k8s";
        OIDC_CALLBACK?: OIDCCallbackFunction;
        OIDC_HUMAN_CALLBACK?: OIDCCallbackFunction;
        SERVICE_HOST?: string;
        SERVICE_NAME?: string;
        SERVICE_REALM?: string;
        TOKEN_RESOURCE?: string;
    }

    Hierarchy (view full)

    Properties

    ALLOWED_HOSTS? AWS_CREDENTIAL_PROVIDER? AWS_SESSION_TOKEN? CANONICALIZE_HOST_NAME? @@ -18,7 +18,7 @@
    const client = new MongoClient(process.env.MONGODB_URI, {
    authMechanismProperties: {
    AWS_CREDENTIAL_PROVIDER: async () => {
    return {
    accessKeyId: process.env.ACCESS_KEY_ID,
    secretAccessKey: process.env.SECRET_ACCESS_KEY
    }
    }
    }
    });
    -
    AWS_SESSION_TOKEN?: string
    CANONICALIZE_HOST_NAME?: GSSAPICanonicalizationValue
    ENVIRONMENT?:
        | "azure"
        | "gcp"
        | "test"
        | "k8s"

    The OIDC environment. Note that 'test' is for internal use only.

    +
    AWS_SESSION_TOKEN?: string
    CANONICALIZE_HOST_NAME?: GSSAPICanonicalizationValue
    ENVIRONMENT?:
        | "test"
        | "azure"
        | "gcp"
        | "k8s"

    The OIDC environment. Note that 'test' is for internal use only.

    OIDC_CALLBACK?: OIDCCallbackFunction

    A user provided OIDC machine callback function.

    OIDC_HUMAN_CALLBACK?: OIDCCallbackFunction

    A user provided OIDC human interacted callback function.

    SERVICE_HOST?: string
    SERVICE_NAME?: string
    SERVICE_REALM?: string
    TOKEN_RESOURCE?: string

    The resource token for OIDC auth in Azure and GCP.

    diff --git a/docs/Next/interfaces/AutoEncryptionOptions.html b/docs/Next/interfaces/AutoEncryptionOptions.html index 74705711dbb..7dc6233718b 100644 --- a/docs/Next/interfaces/AutoEncryptionOptions.html +++ b/docs/Next/interfaces/AutoEncryptionOptions.html @@ -1,8 +1,9 @@ -AutoEncryptionOptions | mongodb

    Interface AutoEncryptionOptions

    interface AutoEncryptionOptions {
        bypassAutoEncryption?: boolean;
        bypassQueryAnalysis?: boolean;
        credentialProviders?: CredentialProviders;
        encryptedFieldsMap?: Document;
        extraOptions?: {
            cryptSharedLibPath?: string;
            cryptSharedLibRequired?: boolean;
            mongocryptdBypassSpawn?: boolean;
            mongocryptdSpawnArgs?: string[];
            mongocryptdSpawnPath?: string;
            mongocryptdURI?: string;
        };
        keyVaultClient?: MongoClient;
        keyVaultNamespace?: string;
        kmsProviders?: KMSProviders;
        options?: {
            logger?: ((level: AutoEncryptionLoggerLevel, message: string) => void);
        };
        proxyOptions?: ProxyOptions;
        schemaMap?: Document;
        tlsOptions?: CSFLEKMSTlsOptions;
    }

    Properties

    bypassAutoEncryption? +AutoEncryptionOptions | mongodb

    Interface AutoEncryptionOptions

    interface AutoEncryptionOptions {
        bypassAutoEncryption?: boolean;
        bypassQueryAnalysis?: boolean;
        credentialProviders?: CredentialProviders;
        encryptedFieldsMap?: Document;
        extraOptions?: {
            cryptSharedLibPath?: string;
            cryptSharedLibRequired?: boolean;
            mongocryptdBypassSpawn?: boolean;
            mongocryptdSpawnArgs?: string[];
            mongocryptdSpawnPath?: string;
            mongocryptdURI?: string;
        };
        keyExpirationMS?: number;
        keyVaultClient?: MongoClient;
        keyVaultNamespace?: string;
        kmsProviders?: KMSProviders;
        options?: {
            logger?: ((level: AutoEncryptionLoggerLevel, message: string) => void);
        };
        proxyOptions?: ProxyOptions;
        schemaMap?: Document;
        tlsOptions?: CSFLEKMSTlsOptions;
    }

    Properties

  • OptionalmongocryptdSpawnPath?: string

    The path to the mongocryptd executable on the system

  • OptionalmongocryptdURI?: string

    A local process the driver communicates with to determine how to encrypt values in a command. Defaults to "mongodb://%2Fvar%2Fmongocryptd.sock" if domain sockets are available or "mongodb://localhost:27020" otherwise

    -
  • keyVaultClient?: MongoClient

    A MongoClient used to fetch keys from a key vault

    +
    keyExpirationMS?: number

    Sets the expiration time for the DEK in the cache in milliseconds. Defaults to 60000. 0 means no timeout.

    +
    keyVaultClient?: MongoClient

    A MongoClient used to fetch keys from a key vault

    keyVaultNamespace?: string

    The namespace where keys are stored in the key vault

    kmsProviders?: KMSProviders

    Configuration options that are used by specific KMS providers during key generation, encryption, and decryption.

    options?: {
        logger?: ((level: AutoEncryptionLoggerLevel, message: string) => void);
    }

    Type declaration

    • Optionallogger?: ((level: AutoEncryptionLoggerLevel, message: string) => void)

      An optional hook to catch logging messages from the underlying encryption engine

      -
    proxyOptions?: ProxyOptions
    schemaMap?: Document

    A map of namespaces to a local JSON schema for encryption

    +
    proxyOptions?: ProxyOptions
    schemaMap?: Document

    A map of namespaces to a local JSON schema for encryption

    NOTE: Supplying options.schemaMap provides more security than relying on JSON Schemas obtained from the server. It protects against a malicious server advertising a false JSON Schema, which could trick the client into sending decrypted data that should be encrypted. Schemas supplied in the schemaMap only apply to configuring automatic encryption for Client-Side Field Level Encryption. Other validation rules in the JSON schema will not be enforced by the driver and will result in an error.

    tlsOptions?: CSFLEKMSTlsOptions

    The TLS options to use connecting to the KMS provider

    -
    +
    diff --git a/docs/Next/interfaces/AzureEncryptionKeyOptions.html b/docs/Next/interfaces/AzureEncryptionKeyOptions.html index 000c3610a32..c30053078d1 100644 --- a/docs/Next/interfaces/AzureEncryptionKeyOptions.html +++ b/docs/Next/interfaces/AzureEncryptionKeyOptions.html @@ -1,8 +1,8 @@ AzureEncryptionKeyOptions | mongodb

    Interface AzureEncryptionKeyOptions

    Configuration options for making an Azure encryption key

    -
    interface AzureEncryptionKeyOptions {
        keyName: string;
        keyVaultEndpoint: string;
        keyVersion?: string;
    }

    Properties

    interface AzureEncryptionKeyOptions {
        keyName: string;
        keyVaultEndpoint: string;
        keyVersion?: string;
    }

    Properties

    keyName: string

    Key name

    -
    keyVaultEndpoint: string

    Key vault URL, typically <name>.vault.azure.net

    -
    keyVersion?: string

    Key version

    -
    +
    keyVaultEndpoint: string

    Key vault URL, typically <name>.vault.azure.net

    +
    keyVersion?: string

    Key version

    +
    diff --git a/docs/Next/interfaces/BSON.ObjectIdLike.html b/docs/Next/interfaces/BSON.ObjectIdLike.html index 9c1b80b5940..0915c694073 100644 --- a/docs/Next/interfaces/BSON.ObjectIdLike.html +++ b/docs/Next/interfaces/BSON.ObjectIdLike.html @@ -1,4 +1,4 @@ -ObjectIdLike | mongodb

    Interface ObjectIdLike

    interface ObjectIdLike {
        __id?: string;
        id: string | Uint8Array;
        toHexString(): string;
    }

    Properties

    __id? +ObjectIdLike | mongodb

    Interface ObjectIdLike

    interface ObjectIdLike {
        __id?: string;
        id: string | Uint8Array<ArrayBufferLike>;
        toHexString(): string;
    }

    Properties

    Methods

    Properties

    __id?: string
    id: string | Uint8Array

    Methods

    • Returns string

    +

    Properties

    __id?: string
    id: string | Uint8Array<ArrayBufferLike>

    Methods

    • Returns string

    diff --git a/docs/Next/interfaces/ChangeStreamCollModDocument.html b/docs/Next/interfaces/ChangeStreamCollModDocument.html index be9d274fc5f..78df64fc538 100644 --- a/docs/Next/interfaces/ChangeStreamCollModDocument.html +++ b/docs/Next/interfaces/ChangeStreamCollModDocument.html @@ -1,12 +1,13 @@ ChangeStreamCollModDocument | mongodb

    Interface ChangeStreamCollModDocument

    Only present when the showExpandedEvents flag is enabled.

    interface ChangeStreamCollModDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        lsid?: ServerSessionId;
        operationType: "modify";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Hierarchy (view full)

    Properties

    _id +
    interface ChangeStreamCollModDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        lsid?: ServerSessionId;
        operationType: "modify";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
        wallTime?: Date;
    }

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted change stream.

    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. @@ -20,13 +21,16 @@

    NOTE: collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers flag is enabled.

    6.1.0

    -

    The identifier for the session associated with the transaction. +

    The identifier for the session associated with the transaction. Only present if the operation is part of a multi-document transaction.

    operationType: "modify"

    Describes the type of operation represented in this change notification

    -

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent stage, events larger than 16MB will be split into multiple events and contain the following information about which fragment the current event is.

    txnNumber?: number

    The transaction number. Only present if the operation is part of a multi-document transaction.

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    -
    +
    wallTime?: Date

    The server date and time of the database operation. +wallTime differs from clusterTime in that clusterTime is a timestamp taken from the oplog entry associated with the database operation event.

    +

    6.0.0

    +
    diff --git a/docs/Next/interfaces/ChangeStreamCreateDocument.html b/docs/Next/interfaces/ChangeStreamCreateDocument.html index 5f7df9d5a00..81ab752e71f 100644 --- a/docs/Next/interfaces/ChangeStreamCreateDocument.html +++ b/docs/Next/interfaces/ChangeStreamCreateDocument.html @@ -1,5 +1,5 @@ ChangeStreamCreateDocument | mongodb

    Interface ChangeStreamCreateDocument

    interface ChangeStreamCreateDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        lsid?: ServerSessionId;
        nsType?: "timeseries" | "collection" | "view";
        operationType: "create";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Hierarchy (view full)

    Properties

    _id +
    interface ChangeStreamCreateDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        lsid?: ServerSessionId;
        nsType?: "timeseries" | "collection" | "view";
        operationType: "create";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
        wallTime?: Date;
    }

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted change stream.

    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. @@ -20,15 +21,18 @@

    NOTE: collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers flag is enabled.

    6.1.0

    -

    The identifier for the session associated with the transaction. +

    The identifier for the session associated with the transaction. Only present if the operation is part of a multi-document transaction.

    nsType?: "timeseries" | "collection" | "view"

    The type of the newly created object.

    8.1.0

    -
    operationType: "create"

    Describes the type of operation represented in this change notification

    -

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +

    operationType: "create"

    Describes the type of operation represented in this change notification

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent stage, events larger than 16MB will be split into multiple events and contain the following information about which fragment the current event is.

    txnNumber?: number

    The transaction number. Only present if the operation is part of a multi-document transaction.

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    -
    +
    wallTime?: Date

    The server date and time of the database operation. +wallTime differs from clusterTime in that clusterTime is a timestamp taken from the oplog entry associated with the database operation event.

    +

    6.0.0

    +
    diff --git a/docs/Next/interfaces/ChangeStreamCreateIndexDocument.html b/docs/Next/interfaces/ChangeStreamCreateIndexDocument.html index 441a2c27155..c61fda0e805 100644 --- a/docs/Next/interfaces/ChangeStreamCreateIndexDocument.html +++ b/docs/Next/interfaces/ChangeStreamCreateIndexDocument.html @@ -1,6 +1,6 @@ ChangeStreamCreateIndexDocument | mongodb

    Interface ChangeStreamCreateIndexDocument

    Only present when the showExpandedEvents flag is enabled.

    interface ChangeStreamCreateIndexDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        lsid?: ServerSessionId;
        operationDescription?: Document;
        operationType: "createIndexes";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Hierarchy (view full)

    Properties

    _id +
    interface ChangeStreamCreateIndexDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        lsid?: ServerSessionId;
        operationDescription?: Document;
        operationType: "createIndexes";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
        wallTime?: Date;
    }

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted change stream.

    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. @@ -21,16 +22,19 @@

    NOTE: collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers flag is enabled.

    6.1.0

    -

    The identifier for the session associated with the transaction. +

    The identifier for the session associated with the transaction. Only present if the operation is part of a multi-document transaction.

    operationDescription?: Document

    An description of the operation.

    Only present when the showExpandedEvents flag is enabled.

    6.1.0

    -
    operationType: "createIndexes"

    Describes the type of operation represented in this change notification

    -

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +

    operationType: "createIndexes"

    Describes the type of operation represented in this change notification

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent stage, events larger than 16MB will be split into multiple events and contain the following information about which fragment the current event is.

    txnNumber?: number

    The transaction number. Only present if the operation is part of a multi-document transaction.

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    -
    +
    wallTime?: Date

    The server date and time of the database operation. +wallTime differs from clusterTime in that clusterTime is a timestamp taken from the oplog entry associated with the database operation event.

    +

    6.0.0

    +
    diff --git a/docs/Next/interfaces/ChangeStreamDeleteDocument.html b/docs/Next/interfaces/ChangeStreamDeleteDocument.html index ded0355552c..a0a66e1d955 100644 --- a/docs/Next/interfaces/ChangeStreamDeleteDocument.html +++ b/docs/Next/interfaces/ChangeStreamDeleteDocument.html @@ -1,5 +1,5 @@ ChangeStreamDeleteDocument | mongodb

    Interface ChangeStreamDeleteDocument<TSchema>

    interface ChangeStreamDeleteDocument<TSchema> {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        documentKey: {
            _id: InferIdType<TSchema>;
            [shardKey: string]: any;
        };
        fullDocumentBeforeChange?: TSchema;
        lsid?: ServerSessionId;
        ns: ChangeStreamNameSpace;
        operationType: "delete";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Type Parameters

    Hierarchy (view full)

    Properties

    _id +
    interface ChangeStreamDeleteDocument<TSchema> {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        documentKey: {
            _id: InferIdType<TSchema>;
            [shardKey: string]: any;
        };
        fullDocumentBeforeChange?: TSchema;
        lsid?: ServerSessionId;
        ns: ChangeStreamNameSpace;
        operationType: "delete";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
        wallTime?: Date;
    }

    Type Parameters

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted change stream.

    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. @@ -22,21 +23,24 @@

    NOTE: collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers flag is enabled.

    6.1.0

    -
    documentKey: {
        _id: InferIdType<TSchema>;
        [shardKey: string]: any;
    }

    For unsharded collections this contains a single field _id. +

    documentKey: {
        _id: InferIdType<TSchema>;
        [shardKey: string]: any;
    }

    For unsharded collections this contains a single field _id. For sharded collections, this will contain all the components of the shard key

    fullDocumentBeforeChange?: TSchema

    Contains the pre-image of the modified or deleted document if the pre-image is available for the change event and either 'required' or 'whenAvailable' was specified for the 'fullDocumentBeforeChange' option when creating the change stream. If 'whenAvailable' was specified but the pre-image is unavailable, this will be explicitly set to null.

    -

    The identifier for the session associated with the transaction. +

    The identifier for the session associated with the transaction. Only present if the operation is part of a multi-document transaction.

    Namespace the delete event occurred on

    -
    operationType: "delete"

    Describes the type of operation represented in this change notification

    -

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +

    operationType: "delete"

    Describes the type of operation represented in this change notification

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent stage, events larger than 16MB will be split into multiple events and contain the following information about which fragment the current event is.

    txnNumber?: number

    The transaction number. Only present if the operation is part of a multi-document transaction.

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    -
    +
    wallTime?: Date

    The server date and time of the database operation. +wallTime differs from clusterTime in that clusterTime is a timestamp taken from the oplog entry associated with the database operation event.

    +

    6.0.0

    +
    diff --git a/docs/Next/interfaces/ChangeStreamDocumentCollectionUUID.html b/docs/Next/interfaces/ChangeStreamDocumentCollectionUUID.html index 8abf52eb298..4d44299a9b5 100644 --- a/docs/Next/interfaces/ChangeStreamDocumentCollectionUUID.html +++ b/docs/Next/interfaces/ChangeStreamDocumentCollectionUUID.html @@ -1,7 +1,7 @@ -ChangeStreamDocumentCollectionUUID | mongodb

    Interface ChangeStreamDocumentCollectionUUID

    interface ChangeStreamDocumentCollectionUUID {
        collectionUUID: Binary;
    }

    Hierarchy (view full)

    Properties

    collectionUUID +ChangeStreamDocumentCollectionUUID | mongodb

    Interface ChangeStreamDocumentCollectionUUID

    interface ChangeStreamDocumentCollectionUUID {
        collectionUUID: Binary;
    }

    Hierarchy (view full)

    Properties

    Properties

    collectionUUID: Binary

    The UUID (Binary subtype 4) of the collection that the operation was performed on.

    Only present when the showExpandedEvents flag is enabled.

    NOTE: collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers flag is enabled.

    6.1.0

    -
    +
    diff --git a/docs/Next/interfaces/ChangeStreamDocumentOperationDescription.html b/docs/Next/interfaces/ChangeStreamDocumentOperationDescription.html index 167780efcd9..de490fffc25 100644 --- a/docs/Next/interfaces/ChangeStreamDocumentOperationDescription.html +++ b/docs/Next/interfaces/ChangeStreamDocumentOperationDescription.html @@ -1,5 +1,5 @@ -ChangeStreamDocumentOperationDescription | mongodb

    Interface ChangeStreamDocumentOperationDescription

    interface ChangeStreamDocumentOperationDescription {
        operationDescription?: Document;
    }

    Hierarchy (view full)

    Properties

    operationDescription? +ChangeStreamDocumentOperationDescription | mongodb

    Interface ChangeStreamDocumentOperationDescription

    interface ChangeStreamDocumentOperationDescription {
        operationDescription?: Document;
    }

    Hierarchy (view full)

    Properties

    operationDescription?: Document

    An description of the operation.

    Only present when the showExpandedEvents flag is enabled.

    6.1.0

    -
    +
    diff --git a/docs/Next/interfaces/ChangeStreamDocumentWallTime.html b/docs/Next/interfaces/ChangeStreamDocumentWallTime.html new file mode 100644 index 00000000000..dd8f639dd89 --- /dev/null +++ b/docs/Next/interfaces/ChangeStreamDocumentWallTime.html @@ -0,0 +1,5 @@ +ChangeStreamDocumentWallTime | mongodb

    Interface ChangeStreamDocumentWallTime

    interface ChangeStreamDocumentWallTime {
        wallTime?: Date;
    }

    Hierarchy (view full)

    Properties

    Properties

    wallTime?: Date

    The server date and time of the database operation. +wallTime differs from clusterTime in that clusterTime is a timestamp taken from the oplog entry associated with the database operation event.

    +

    6.0.0

    +
    diff --git a/docs/Next/interfaces/ChangeStreamDropDatabaseDocument.html b/docs/Next/interfaces/ChangeStreamDropDatabaseDocument.html index 7c1afa57566..1c2f9a54ace 100644 --- a/docs/Next/interfaces/ChangeStreamDropDatabaseDocument.html +++ b/docs/Next/interfaces/ChangeStreamDropDatabaseDocument.html @@ -1,11 +1,12 @@ ChangeStreamDropDatabaseDocument | mongodb

    Interface ChangeStreamDropDatabaseDocument

    interface ChangeStreamDropDatabaseDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        lsid?: ServerSessionId;
        ns: {
            db: string;
        };
        operationType: "dropDatabase";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Hierarchy (view full)

    Properties

    _id +
    interface ChangeStreamDropDatabaseDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        lsid?: ServerSessionId;
        ns: {
            db: string;
        };
        operationType: "dropDatabase";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
        wallTime?: Date;
    }

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted change stream.

    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. @@ -17,11 +18,14 @@

    The identifier for the session associated with the transaction. Only present if the operation is part of a multi-document transaction.

    ns: {
        db: string;
    }

    The database dropped

    -
    operationType: "dropDatabase"

    Describes the type of operation represented in this change notification

    -

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +

    operationType: "dropDatabase"

    Describes the type of operation represented in this change notification

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent stage, events larger than 16MB will be split into multiple events and contain the following information about which fragment the current event is.

    txnNumber?: number

    The transaction number. Only present if the operation is part of a multi-document transaction.

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    -
    +
    wallTime?: Date

    The server date and time of the database operation. +wallTime differs from clusterTime in that clusterTime is a timestamp taken from the oplog entry associated with the database operation event.

    +

    6.0.0

    +
    diff --git a/docs/Next/interfaces/ChangeStreamDropDocument.html b/docs/Next/interfaces/ChangeStreamDropDocument.html index 0de36d0142c..718c07f7d22 100644 --- a/docs/Next/interfaces/ChangeStreamDropDocument.html +++ b/docs/Next/interfaces/ChangeStreamDropDocument.html @@ -1,5 +1,5 @@ ChangeStreamDropDocument | mongodb

    Interface ChangeStreamDropDocument

    interface ChangeStreamDropDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        lsid?: ServerSessionId;
        ns: ChangeStreamNameSpace;
        operationType: "drop";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Hierarchy (view full)

    Properties

    _id +
    interface ChangeStreamDropDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        lsid?: ServerSessionId;
        ns: ChangeStreamNameSpace;
        operationType: "drop";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
        wallTime?: Date;
    }

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted change stream.

    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. @@ -20,14 +21,17 @@

    NOTE: collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers flag is enabled.

    6.1.0

    -

    The identifier for the session associated with the transaction. +

    The identifier for the session associated with the transaction. Only present if the operation is part of a multi-document transaction.

    Namespace the drop event occurred on

    -
    operationType: "drop"

    Describes the type of operation represented in this change notification

    -

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +

    operationType: "drop"

    Describes the type of operation represented in this change notification

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent stage, events larger than 16MB will be split into multiple events and contain the following information about which fragment the current event is.

    txnNumber?: number

    The transaction number. Only present if the operation is part of a multi-document transaction.

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    -
    +
    wallTime?: Date

    The server date and time of the database operation. +wallTime differs from clusterTime in that clusterTime is a timestamp taken from the oplog entry associated with the database operation event.

    +

    6.0.0

    +
    diff --git a/docs/Next/interfaces/ChangeStreamDropIndexDocument.html b/docs/Next/interfaces/ChangeStreamDropIndexDocument.html index f3f439a63ea..e69c2781855 100644 --- a/docs/Next/interfaces/ChangeStreamDropIndexDocument.html +++ b/docs/Next/interfaces/ChangeStreamDropIndexDocument.html @@ -1,6 +1,6 @@ ChangeStreamDropIndexDocument | mongodb

    Interface ChangeStreamDropIndexDocument

    Only present when the showExpandedEvents flag is enabled.

    interface ChangeStreamDropIndexDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        lsid?: ServerSessionId;
        operationDescription?: Document;
        operationType: "dropIndexes";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Hierarchy (view full)

    Properties

    _id +
    interface ChangeStreamDropIndexDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        lsid?: ServerSessionId;
        operationDescription?: Document;
        operationType: "dropIndexes";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
        wallTime?: Date;
    }

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted change stream.

    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. @@ -21,16 +22,19 @@

    NOTE: collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers flag is enabled.

    6.1.0

    -

    The identifier for the session associated with the transaction. +

    The identifier for the session associated with the transaction. Only present if the operation is part of a multi-document transaction.

    operationDescription?: Document

    An description of the operation.

    Only present when the showExpandedEvents flag is enabled.

    6.1.0

    -
    operationType: "dropIndexes"

    Describes the type of operation represented in this change notification

    -

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +

    operationType: "dropIndexes"

    Describes the type of operation represented in this change notification

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent stage, events larger than 16MB will be split into multiple events and contain the following information about which fragment the current event is.

    txnNumber?: number

    The transaction number. Only present if the operation is part of a multi-document transaction.

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    -
    +
    wallTime?: Date

    The server date and time of the database operation. +wallTime differs from clusterTime in that clusterTime is a timestamp taken from the oplog entry associated with the database operation event.

    +

    6.0.0

    +
    diff --git a/docs/Next/interfaces/ChangeStreamInsertDocument.html b/docs/Next/interfaces/ChangeStreamInsertDocument.html index c4ab2e40146..d368d29e0e2 100644 --- a/docs/Next/interfaces/ChangeStreamInsertDocument.html +++ b/docs/Next/interfaces/ChangeStreamInsertDocument.html @@ -1,5 +1,5 @@ ChangeStreamInsertDocument | mongodb

    Interface ChangeStreamInsertDocument<TSchema>

    interface ChangeStreamInsertDocument<TSchema> {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        documentKey: {
            _id: InferIdType<TSchema>;
            [shardKey: string]: any;
        };
        fullDocument: TSchema;
        lsid?: ServerSessionId;
        ns: ChangeStreamNameSpace;
        operationType: "insert";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Type Parameters

    Hierarchy (view full)

    Properties

    _id +
    interface ChangeStreamInsertDocument<TSchema> {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        documentKey: {
            _id: InferIdType<TSchema>;
            [shardKey: string]: any;
        };
        fullDocument: TSchema;
        lsid?: ServerSessionId;
        ns: ChangeStreamNameSpace;
        operationType: "insert";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
        wallTime?: Date;
    }

    Type Parameters

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted change stream.

    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. @@ -22,17 +23,20 @@

    NOTE: collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers flag is enabled.

    6.1.0

    -
    documentKey: {
        _id: InferIdType<TSchema>;
        [shardKey: string]: any;
    }

    For unsharded collections this contains a single field _id. +

    documentKey: {
        _id: InferIdType<TSchema>;
        [shardKey: string]: any;
    }

    For unsharded collections this contains a single field _id. For sharded collections, this will contain all the components of the shard key

    fullDocument: TSchema

    This key will contain the document being inserted

    -

    The identifier for the session associated with the transaction. +

    The identifier for the session associated with the transaction. Only present if the operation is part of a multi-document transaction.

    Namespace the insert event occurred on

    -
    operationType: "insert"

    Describes the type of operation represented in this change notification

    -

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +

    operationType: "insert"

    Describes the type of operation represented in this change notification

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent stage, events larger than 16MB will be split into multiple events and contain the following information about which fragment the current event is.

    txnNumber?: number

    The transaction number. Only present if the operation is part of a multi-document transaction.

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    -
    +
    wallTime?: Date

    The server date and time of the database operation. +wallTime differs from clusterTime in that clusterTime is a timestamp taken from the oplog entry associated with the database operation event.

    +

    6.0.0

    +
    diff --git a/docs/Next/interfaces/ChangeStreamInvalidateDocument.html b/docs/Next/interfaces/ChangeStreamInvalidateDocument.html index 667927ea734..57e28c89cc3 100644 --- a/docs/Next/interfaces/ChangeStreamInvalidateDocument.html +++ b/docs/Next/interfaces/ChangeStreamInvalidateDocument.html @@ -1,10 +1,11 @@ ChangeStreamInvalidateDocument | mongodb

    Interface ChangeStreamInvalidateDocument

    interface ChangeStreamInvalidateDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        lsid?: ServerSessionId;
        operationType: "invalidate";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Hierarchy (view full)

    Properties

    _id +
    interface ChangeStreamInvalidateDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        lsid?: ServerSessionId;
        operationType: "invalidate";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
        wallTime?: Date;
    }

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted change stream.

    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. @@ -16,10 +17,13 @@

    The identifier for the session associated with the transaction. Only present if the operation is part of a multi-document transaction.

    operationType: "invalidate"

    Describes the type of operation represented in this change notification

    -

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent stage, events larger than 16MB will be split into multiple events and contain the following information about which fragment the current event is.

    txnNumber?: number

    The transaction number. Only present if the operation is part of a multi-document transaction.

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    -
    +
    wallTime?: Date

    The server date and time of the database operation. +wallTime differs from clusterTime in that clusterTime is a timestamp taken from the oplog entry associated with the database operation event.

    +

    6.0.0

    +
    diff --git a/docs/Next/interfaces/ChangeStreamOptions.html b/docs/Next/interfaces/ChangeStreamOptions.html index 8cb07ccc5ce..3c3a2327423 100644 --- a/docs/Next/interfaces/ChangeStreamOptions.html +++ b/docs/Next/interfaces/ChangeStreamOptions.html @@ -39,24 +39,24 @@ useBigInt64? willRetryWrite?

    Properties

    allowDiskUse?: boolean

    allowDiskUse lets the server know if it can use disk to store temporary results for the aggregation (requires mongodb 2.6 >).

    -
    authdb?: string
    batchSize?: number

    The number of documents to return per batch.

    +
    authdb?: string
    batchSize?: number

    The number of documents to return per batch.

    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    false

    bypassDocumentValidation?: boolean

    Allow driver to bypass schema validation.

    -
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    false

    collation?: CollationOptions

    Specify collation.

    -
    comment?: unknown

    Comment to apply to the operation.

    +
    comment?: unknown

    Comment to apply to the operation.

    In server versions pre-4.4, 'comment' must be string. A server error will be thrown if any other type is provided.

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    cursor?: Document

    Return the query as cursor, on 2.6 > it returns as a real cursor on pre 2.6 it returns as an emulated cursor.

    -
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    Specifies the verbosity mode for the explain output.

    This API is deprecated in favor of collection.aggregate().explain() or db.aggregate().explain().

    -
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    null

    fullDocument?: string

    Allowed values: 'updateLookup', 'whenAvailable', 'required'.

    When set to 'updateLookup', the change notification for partial updates @@ -76,13 +76,13 @@

    When set to 'required', the same behavior as 'whenAvailable' except that an error is raised if the pre-image is not available.

    hint?: Hint

    Add an index selection hint to an aggregation command

    -
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +

    ignoreUndefined?: boolean

    serialize will not emit undefined fields note that the driver sets this to false

    true

    let?: Document

    Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0).

    -
    maxAwaitTimeMS?: number

    The maximum amount of time for the server to wait on new documents to satisfy a change stream query.

    +
    maxAwaitTimeMS?: number

    The maximum amount of time for the server to wait on new documents to satisfy a change stream query.

    maxTimeMS?: number

    Specifies a cumulative time limit in milliseconds for processing operations on the cursor. MongoDB interrupts the operation at the earliest following interrupt point.

    -
    noResponse?: boolean
    omitReadPreference?: boolean
    out?: string
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +
    noResponse?: boolean
    omitReadPreference?: boolean
    out?: string
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    false

    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    true

    diff --git a/docs/Next/interfaces/ChangeStreamRefineCollectionShardKeyDocument.html b/docs/Next/interfaces/ChangeStreamRefineCollectionShardKeyDocument.html index 6b1b5825e52..75d1aa623fe 100644 --- a/docs/Next/interfaces/ChangeStreamRefineCollectionShardKeyDocument.html +++ b/docs/Next/interfaces/ChangeStreamRefineCollectionShardKeyDocument.html @@ -1,5 +1,5 @@ ChangeStreamRefineCollectionShardKeyDocument | mongodb

    Interface ChangeStreamRefineCollectionShardKeyDocument

    interface ChangeStreamRefineCollectionShardKeyDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        lsid?: ServerSessionId;
        operationDescription?: Document;
        operationType: "refineCollectionShardKey";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Hierarchy (view full)

    Properties

    _id +
    interface ChangeStreamRefineCollectionShardKeyDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        lsid?: ServerSessionId;
        operationDescription?: Document;
        operationType: "refineCollectionShardKey";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Hierarchy (view full)

    Properties

    _id clusterTime? collectionUUID lsid? @@ -20,13 +20,13 @@

    NOTE: collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers flag is enabled.

    6.1.0

    -

    The identifier for the session associated with the transaction. +

    The identifier for the session associated with the transaction. Only present if the operation is part of a multi-document transaction.

    operationDescription?: Document

    An description of the operation.

    Only present when the showExpandedEvents flag is enabled.

    6.1.0

    -
    operationType: "refineCollectionShardKey"

    Describes the type of operation represented in this change notification

    -

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +

    operationType: "refineCollectionShardKey"

    Describes the type of operation represented in this change notification

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent stage, events larger than 16MB will be split into multiple events and contain the following information about which fragment the current event is.

    txnNumber?: number

    The transaction number. diff --git a/docs/Next/interfaces/ChangeStreamRenameDocument.html b/docs/Next/interfaces/ChangeStreamRenameDocument.html index 63f8b44d2c9..2cbbcbfeaab 100644 --- a/docs/Next/interfaces/ChangeStreamRenameDocument.html +++ b/docs/Next/interfaces/ChangeStreamRenameDocument.html @@ -1,5 +1,5 @@ ChangeStreamRenameDocument | mongodb

    Interface ChangeStreamRenameDocument

    interface ChangeStreamRenameDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        lsid?: ServerSessionId;
        ns: ChangeStreamNameSpace;
        operationType: "rename";
        splitEvent?: ChangeStreamSplitEvent;
        to: {
            coll: string;
            db: string;
        };
        txnNumber?: number;
    }

    Hierarchy (view full)

    Properties

    _id +
    interface ChangeStreamRenameDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        lsid?: ServerSessionId;
        ns: ChangeStreamNameSpace;
        operationType: "rename";
        splitEvent?: ChangeStreamSplitEvent;
        to: {
            coll: string;
            db: string;
        };
        txnNumber?: number;
        wallTime?: Date;
    }

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted change stream.

    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. @@ -21,15 +22,18 @@

    NOTE: collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers flag is enabled.

    6.1.0

    -

    The identifier for the session associated with the transaction. +

    The identifier for the session associated with the transaction. Only present if the operation is part of a multi-document transaction.

    The "from" namespace that the rename occurred on

    -
    operationType: "rename"

    Describes the type of operation represented in this change notification

    -

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +

    operationType: "rename"

    Describes the type of operation represented in this change notification

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent stage, events larger than 16MB will be split into multiple events and contain the following information about which fragment the current event is.

    to: {
        coll: string;
        db: string;
    }

    The new name for the ns.coll collection

    -
    txnNumber?: number

    The transaction number. +

    txnNumber?: number

    The transaction number. Only present if the operation is part of a multi-document transaction.

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    -
    +
    wallTime?: Date

    The server date and time of the database operation. +wallTime differs from clusterTime in that clusterTime is a timestamp taken from the oplog entry associated with the database operation event.

    +

    6.0.0

    +
    diff --git a/docs/Next/interfaces/ChangeStreamReplaceDocument.html b/docs/Next/interfaces/ChangeStreamReplaceDocument.html index c6dfa43abed..fa76dc17954 100644 --- a/docs/Next/interfaces/ChangeStreamReplaceDocument.html +++ b/docs/Next/interfaces/ChangeStreamReplaceDocument.html @@ -1,5 +1,5 @@ ChangeStreamReplaceDocument | mongodb

    Interface ChangeStreamReplaceDocument<TSchema>

    interface ChangeStreamReplaceDocument<TSchema> {
        _id: unknown;
        clusterTime?: Timestamp;
        documentKey: {
            _id: InferIdType<TSchema>;
            [shardKey: string]: any;
        };
        fullDocument: TSchema;
        fullDocumentBeforeChange?: TSchema;
        lsid?: ServerSessionId;
        ns: ChangeStreamNameSpace;
        operationType: "replace";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Type Parameters

    Hierarchy (view full)

    Properties

    _id +
    interface ChangeStreamReplaceDocument<TSchema> {
        _id: unknown;
        clusterTime?: Timestamp;
        documentKey: {
            _id: InferIdType<TSchema>;
            [shardKey: string]: any;
        };
        fullDocument: TSchema;
        fullDocumentBeforeChange?: TSchema;
        lsid?: ServerSessionId;
        ns: ChangeStreamNameSpace;
        operationType: "replace";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
        wallTime?: Date;
    }

    Type Parameters

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted change stream.

    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. @@ -20,19 +21,22 @@

    documentKey: {
        _id: InferIdType<TSchema>;
        [shardKey: string]: any;
    }

    For unsharded collections this contains a single field _id. For sharded collections, this will contain all the components of the shard key

    fullDocument: TSchema

    The fullDocument of a replace event represents the document after the insert of the replacement document

    -
    fullDocumentBeforeChange?: TSchema

    Contains the pre-image of the modified or deleted document if the +

    fullDocumentBeforeChange?: TSchema

    Contains the pre-image of the modified or deleted document if the pre-image is available for the change event and either 'required' or 'whenAvailable' was specified for the 'fullDocumentBeforeChange' option when creating the change stream. If 'whenAvailable' was specified but the pre-image is unavailable, this will be explicitly set to null.

    -

    The identifier for the session associated with the transaction. +

    The identifier for the session associated with the transaction. Only present if the operation is part of a multi-document transaction.

    Namespace the replace event occurred on

    -
    operationType: "replace"

    Describes the type of operation represented in this change notification

    -

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +

    operationType: "replace"

    Describes the type of operation represented in this change notification

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent stage, events larger than 16MB will be split into multiple events and contain the following information about which fragment the current event is.

    txnNumber?: number

    The transaction number. Only present if the operation is part of a multi-document transaction.

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    -
    +
    wallTime?: Date

    The server date and time of the database operation. +wallTime differs from clusterTime in that clusterTime is a timestamp taken from the oplog entry associated with the database operation event.

    +

    6.0.0

    +
    diff --git a/docs/Next/interfaces/ChangeStreamReshardCollectionDocument.html b/docs/Next/interfaces/ChangeStreamReshardCollectionDocument.html index beac5040392..b6f5dfd5595 100644 --- a/docs/Next/interfaces/ChangeStreamReshardCollectionDocument.html +++ b/docs/Next/interfaces/ChangeStreamReshardCollectionDocument.html @@ -1,5 +1,5 @@ ChangeStreamReshardCollectionDocument | mongodb

    Interface ChangeStreamReshardCollectionDocument

    interface ChangeStreamReshardCollectionDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        lsid?: ServerSessionId;
        operationDescription?: Document;
        operationType: "reshardCollection";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Hierarchy (view full)

    Properties

    _id +
    interface ChangeStreamReshardCollectionDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        lsid?: ServerSessionId;
        operationDescription?: Document;
        operationType: "reshardCollection";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Hierarchy (view full)

    Properties

    _id clusterTime? collectionUUID lsid? @@ -20,13 +20,13 @@

    NOTE: collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers flag is enabled.

    6.1.0

    -

    The identifier for the session associated with the transaction. +

    The identifier for the session associated with the transaction. Only present if the operation is part of a multi-document transaction.

    operationDescription?: Document

    An description of the operation.

    Only present when the showExpandedEvents flag is enabled.

    6.1.0

    -
    operationType: "reshardCollection"

    Describes the type of operation represented in this change notification

    -

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +

    operationType: "reshardCollection"

    Describes the type of operation represented in this change notification

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent stage, events larger than 16MB will be split into multiple events and contain the following information about which fragment the current event is.

    txnNumber?: number

    The transaction number. diff --git a/docs/Next/interfaces/ChangeStreamShardCollectionDocument.html b/docs/Next/interfaces/ChangeStreamShardCollectionDocument.html index 7846f046915..4605c6e753a 100644 --- a/docs/Next/interfaces/ChangeStreamShardCollectionDocument.html +++ b/docs/Next/interfaces/ChangeStreamShardCollectionDocument.html @@ -1,5 +1,5 @@ ChangeStreamShardCollectionDocument | mongodb

    Interface ChangeStreamShardCollectionDocument

    interface ChangeStreamShardCollectionDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        lsid?: ServerSessionId;
        operationDescription?: Document;
        operationType: "shardCollection";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
    }

    Hierarchy (view full)

    Properties

    _id +
    interface ChangeStreamShardCollectionDocument {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        lsid?: ServerSessionId;
        operationDescription?: Document;
        operationType: "shardCollection";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
        wallTime?: Date;
    }

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted change stream.

    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. @@ -20,16 +21,19 @@

    NOTE: collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers flag is enabled.

    6.1.0

    -

    The identifier for the session associated with the transaction. +

    The identifier for the session associated with the transaction. Only present if the operation is part of a multi-document transaction.

    operationDescription?: Document

    An description of the operation.

    Only present when the showExpandedEvents flag is enabled.

    6.1.0

    -
    operationType: "shardCollection"

    Describes the type of operation represented in this change notification

    -

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +

    operationType: "shardCollection"

    Describes the type of operation represented in this change notification

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent stage, events larger than 16MB will be split into multiple events and contain the following information about which fragment the current event is.

    txnNumber?: number

    The transaction number. Only present if the operation is part of a multi-document transaction.

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    -
    +
    wallTime?: Date

    The server date and time of the database operation. +wallTime differs from clusterTime in that clusterTime is a timestamp taken from the oplog entry associated with the database operation event.

    +

    6.0.0

    +
    diff --git a/docs/Next/interfaces/ChangeStreamUpdateDocument.html b/docs/Next/interfaces/ChangeStreamUpdateDocument.html index 1205a5a8abe..d1e085fe7c8 100644 --- a/docs/Next/interfaces/ChangeStreamUpdateDocument.html +++ b/docs/Next/interfaces/ChangeStreamUpdateDocument.html @@ -1,5 +1,5 @@ ChangeStreamUpdateDocument | mongodb

    Interface ChangeStreamUpdateDocument<TSchema>

    interface ChangeStreamUpdateDocument<TSchema> {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        documentKey: {
            _id: InferIdType<TSchema>;
            [shardKey: string]: any;
        };
        fullDocument?: TSchema;
        fullDocumentBeforeChange?: TSchema;
        lsid?: ServerSessionId;
        ns: ChangeStreamNameSpace;
        operationType: "update";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
        updateDescription: UpdateDescription<TSchema>;
    }

    Type Parameters

    Hierarchy (view full)

    Properties

    _id +
    interface ChangeStreamUpdateDocument<TSchema> {
        _id: unknown;
        clusterTime?: Timestamp;
        collectionUUID: Binary;
        documentKey: {
            _id: InferIdType<TSchema>;
            [shardKey: string]: any;
        };
        fullDocument?: TSchema;
        fullDocumentBeforeChange?: TSchema;
        lsid?: ServerSessionId;
        ns: ChangeStreamNameSpace;
        operationType: "update";
        splitEvent?: ChangeStreamSplitEvent;
        txnNumber?: number;
        updateDescription: UpdateDescription<TSchema>;
        wallTime?: Date;
    }

    Type Parameters

    Hierarchy (view full)

    Properties

    _id: unknown

    The id functions as an opaque token for use when resuming an interrupted change stream.

    clusterTime?: Timestamp

    The timestamp from the oplog entry associated with the event. @@ -24,26 +25,29 @@

    NOTE: collectionUUID will be converted to a NodeJS Buffer if the promoteBuffers flag is enabled.

    6.1.0

    -
    documentKey: {
        _id: InferIdType<TSchema>;
        [shardKey: string]: any;
    }

    For unsharded collections this contains a single field _id. +

    documentKey: {
        _id: InferIdType<TSchema>;
        [shardKey: string]: any;
    }

    For unsharded collections this contains a single field _id. For sharded collections, this will contain all the components of the shard key

    fullDocument?: TSchema

    This is only set if fullDocument is set to 'updateLookup' Contains the point-in-time post-image of the modified document if the post-image is available and either 'required' or 'whenAvailable' was specified for the 'fullDocument' option when creating the change stream.

    -
    fullDocumentBeforeChange?: TSchema

    Contains the pre-image of the modified or deleted document if the +

    fullDocumentBeforeChange?: TSchema

    Contains the pre-image of the modified or deleted document if the pre-image is available for the change event and either 'required' or 'whenAvailable' was specified for the 'fullDocumentBeforeChange' option when creating the change stream. If 'whenAvailable' was specified but the pre-image is unavailable, this will be explicitly set to null.

    -

    The identifier for the session associated with the transaction. +

    The identifier for the session associated with the transaction. Only present if the operation is part of a multi-document transaction.

    Namespace the update event occurred on

    -
    operationType: "update"

    Describes the type of operation represented in this change notification

    -

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent +

    operationType: "update"

    Describes the type of operation represented in this change notification

    +

    When the change stream's backing aggregation pipeline contains the $changeStreamSplitLargeEvent stage, events larger than 16MB will be split into multiple events and contain the following information about which fragment the current event is.

    txnNumber?: number

    The transaction number. Only present if the operation is part of a multi-document transaction.

    NOTE: txnNumber can be a Long if promoteLongs is set to false

    updateDescription: UpdateDescription<TSchema>

    Contains a description of updated and removed fields in this operation

    -
    +
    wallTime?: Date

    The server date and time of the database operation. +wallTime differs from clusterTime in that clusterTime is a timestamp taken from the oplog entry associated with the database operation event.

    +

    6.0.0

    +
    diff --git a/docs/Next/interfaces/ClientEncryptionCreateDataKeyProviderOptions.html b/docs/Next/interfaces/ClientEncryptionCreateDataKeyProviderOptions.html index b04544f9557..20a280b033c 100644 --- a/docs/Next/interfaces/ClientEncryptionCreateDataKeyProviderOptions.html +++ b/docs/Next/interfaces/ClientEncryptionCreateDataKeyProviderOptions.html @@ -1,8 +1,8 @@ ClientEncryptionCreateDataKeyProviderOptions | mongodb

    Interface ClientEncryptionCreateDataKeyProviderOptions

    Options to provide when creating a new data key.

    -
    interface ClientEncryptionCreateDataKeyProviderOptions {
        keyAltNames?: string[];
        keyMaterial?: Buffer | Binary;
        masterKey?:
            | AWSEncryptionKeyOptions
            | AzureEncryptionKeyOptions
            | GCPEncryptionKeyOptions
            | KMIPEncryptionKeyOptions;
    }

    Properties

    interface ClientEncryptionCreateDataKeyProviderOptions {
        keyAltNames?: string[];
        keyMaterial?: Buffer<ArrayBufferLike> | Binary;
        masterKey?:
            | AWSEncryptionKeyOptions
            | AzureEncryptionKeyOptions
            | GCPEncryptionKeyOptions
            | KMIPEncryptionKeyOptions;
    }

    Properties

    keyAltNames?: string[]

    An optional list of string alternate names used to reference a key. If a key is created with alternate names, then encryption may refer to the key by the unique alternate name instead of by _id.

    -
    keyMaterial?: Buffer | Binary

    Identifies a new KMS-specific key used to encrypt the new data key

    -
    +
    keyMaterial?: Buffer<ArrayBufferLike> | Binary

    Identifies a new KMS-specific key used to encrypt the new data key

    +
    diff --git a/docs/Next/interfaces/ClientEncryptionOptions.html b/docs/Next/interfaces/ClientEncryptionOptions.html index c5f71cf8c3f..c0c69bd14a1 100644 --- a/docs/Next/interfaces/ClientEncryptionOptions.html +++ b/docs/Next/interfaces/ClientEncryptionOptions.html @@ -1,5 +1,6 @@ ClientEncryptionOptions | mongodb

    Interface ClientEncryptionOptions

    Additional settings to provide when creating a new ClientEncryption instance.

    -
    interface ClientEncryptionOptions {
        credentialProviders?: CredentialProviders;
        keyVaultClient?: MongoClient;
        keyVaultNamespace: string;
        kmsProviders?: KMSProviders;
        proxyOptions?: ProxyOptions;
        timeoutMS?: number;
        tlsOptions?: CSFLEKMSTlsOptions;
    }

    Properties

    interface ClientEncryptionOptions {
        credentialProviders?: CredentialProviders;
        keyExpirationMS?: number;
        keyVaultClient?: MongoClient;
        keyVaultNamespace: string;
        kmsProviders?: KMSProviders;
        proxyOptions?: ProxyOptions;
        timeoutMS?: number;
        tlsOptions?: CSFLEKMSTlsOptions;
    }

    Properties

    credentialProviders?: CredentialProviders

    Options for user provided custom credential providers.

    -
    keyVaultClient?: MongoClient

    A MongoClient used to fetch keys from a key vault. Defaults to client.

    +
    keyExpirationMS?: number

    Sets the expiration time for the DEK in the cache in milliseconds. Defaults to 60000. 0 means no timeout.

    +
    keyVaultClient?: MongoClient

    A MongoClient used to fetch keys from a key vault. Defaults to client.

    keyVaultNamespace: string

    The namespace of the key vault, used to store encryption keys

    kmsProviders?: KMSProviders

    Options for specific KMS providers to use

    proxyOptions?: ProxyOptions

    Options for specifying a Socks5 proxy to use for connecting to the KMS.

    @@ -22,5 +24,5 @@
    const client = new MongoClient('<uri>', { timeoutMS: 2_000 });

    // timeoutMS is set to 1_000 on clientEncryption
    const clientEncryption = new ClientEncryption(client, {
    timeoutMS: 1_000
    kmsProviders: { local: { key: '<KEY>' } }
    });
    -
    tlsOptions?: CSFLEKMSTlsOptions

    TLS options for kms providers to use.

    -
    +
    tlsOptions?: CSFLEKMSTlsOptions

    TLS options for kms providers to use.

    +
    diff --git a/docs/Next/interfaces/ClientEncryptionRewrapManyDataKeyResult.html b/docs/Next/interfaces/ClientEncryptionRewrapManyDataKeyResult.html index 7a58fdd6ba3..857ee997c3d 100644 --- a/docs/Next/interfaces/ClientEncryptionRewrapManyDataKeyResult.html +++ b/docs/Next/interfaces/ClientEncryptionRewrapManyDataKeyResult.html @@ -1,3 +1,3 @@ -ClientEncryptionRewrapManyDataKeyResult | mongodb

    Interface ClientEncryptionRewrapManyDataKeyResultExperimental

    interface ClientEncryptionRewrapManyDataKeyResult {
        bulkWriteResult?: BulkWriteResult;
    }

    Properties

    bulkWriteResult? +ClientEncryptionRewrapManyDataKeyResult | mongodb

    Interface ClientEncryptionRewrapManyDataKeyResultExperimental

    interface ClientEncryptionRewrapManyDataKeyResult {
        bulkWriteResult?: BulkWriteResult;
    }

    Properties

    Properties

    bulkWriteResult?: BulkWriteResult

    The result of rewrapping data keys. If unset, no keys matched the filter.

    -
    +
    diff --git a/docs/Next/interfaces/CloseOptions.html b/docs/Next/interfaces/CloseOptions.html index c285a6dc226..a125e46ddee 100644 --- a/docs/Next/interfaces/CloseOptions.html +++ b/docs/Next/interfaces/CloseOptions.html @@ -1,4 +1,4 @@ CloseOptions | mongodb

    Interface CloseOptions

    This interface is deprecated and will be removed in a future release as it is not used in the driver

    -
    interface CloseOptions {
        force?: boolean;
    }

    Properties

    Properties

    force?: boolean
    +
    interface CloseOptions {
        force?: boolean;
    }

    Properties

    Properties

    force?: boolean
    diff --git a/docs/Next/interfaces/ConnectionOptions.html b/docs/Next/interfaces/ConnectionOptions.html index 8e47eeaf471..d773d007d3b 100644 --- a/docs/Next/interfaces/ConnectionOptions.html +++ b/docs/Next/interfaces/ConnectionOptions.html @@ -1,4 +1,4 @@ -ConnectionOptions | mongodb

    Interface ConnectionOptions

    interface ConnectionOptions {
        allowPartialTrustChain?: boolean;
        ALPNProtocols?: Uint8Array | string[] | Uint8Array[];
        autoSelectFamily?: boolean;
        autoSelectFamilyAttemptTimeout?: number;
        ca?: string | Buffer | (string | Buffer)[];
        cancellationToken?: CancellationToken;
        cert?: string | Buffer | (string | Buffer)[];
        checkServerIdentity?: ((hostname: string, cert: PeerCertificate) => Error | undefined);
        ciphers?: string;
        compressors?: (
            | "none"
            | "snappy"
            | "zlib"
            | "zstd")[];
        connectTimeoutMS?: number;
        credentials?: MongoCredentials;
        crl?: string | Buffer | (string | Buffer)[];
        ecdhCurve?: string;
        family?: number;
        generation: number;
        hints?: number;
        hostAddress: HostAddress;
        id: number | "<monitor>";
        keepAliveInitialDelay?: number;
        key?: string | Buffer | (string | Buffer | KeyObject)[];
        loadBalanced: boolean;
        localAddress?: string;
        localPort?: number;
        logicalSessionTimeoutMinutes?: number;
        lookup?: LookupFunction;
        metadata: ClientMetadata;
        minDHSize?: number;
        monitorCommands: boolean;
        noDelay?: boolean;
        passphrase?: string;
        pfx?: string | Buffer | (string | Buffer | PxfObject)[];
        proxyHost?: string;
        proxyPassword?: string;
        proxyPort?: number;
        proxyUsername?: string;
        rejectUnauthorized?: boolean;
        secureContext?: SecureContext;
        secureProtocol?: string;
        serverApi?: ServerApi;
        servername?: string;
        session?: Buffer;
        socketTimeoutMS?: number;
        tls: boolean;
    }

    Hierarchy (view full)

    Properties

    allowPartialTrustChain? +ConnectionOptions | mongodb

    Interface ConnectionOptions

    interface ConnectionOptions {
        allowPartialTrustChain?: boolean;
        ALPNProtocols?: Uint8Array<ArrayBufferLike> | string[] | Uint8Array<ArrayBufferLike>[];
        autoSelectFamily?: boolean;
        autoSelectFamilyAttemptTimeout?: number;
        ca?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike>)[];
        cancellationToken?: CancellationToken;
        cert?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike>)[];
        checkServerIdentity?: ((hostname: string, cert: PeerCertificate) => Error | undefined);
        ciphers?: string;
        compressors?: (
            | "none"
            | "snappy"
            | "zlib"
            | "zstd")[];
        connectTimeoutMS?: number;
        credentials?: MongoCredentials;
        crl?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike>)[];
        ecdhCurve?: string;
        family?: number;
        generation: number;
        hints?: number;
        hostAddress: HostAddress;
        id: number | "<monitor>";
        keepAliveInitialDelay?: number;
        key?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike> | KeyObject)[];
        loadBalanced: boolean;
        localAddress?: string;
        localPort?: number;
        logicalSessionTimeoutMinutes?: number;
        lookup?: LookupFunction;
        metadata: ClientMetadata;
        minDHSize?: number;
        monitorCommands: boolean;
        noDelay?: boolean;
        passphrase?: string;
        pfx?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike> | PxfObject)[];
        proxyHost?: string;
        proxyPassword?: string;
        proxyPort?: number;
        proxyUsername?: string;
        rejectUnauthorized?: boolean;
        secureContext?: SecureContext;
        secureProtocol?: string;
        serverApi?: ServerApi;
        servername?: string;
        session?: Buffer<ArrayBufferLike>;
        socketTimeoutMS?: number;
        tls: boolean;
    }

    Hierarchy (view full)

    Properties

    allowPartialTrustChain?: boolean

    Treat intermediate (non-self-signed) certificates in the trust CA certificate list as trusted.

    v22.9.0, v20.18.0

    -
    ALPNProtocols?: Uint8Array | string[] | Uint8Array[]

    An array of strings or a Buffer naming possible ALPN protocols. +

    ALPNProtocols?: Uint8Array<ArrayBufferLike> | string[] | Uint8Array<ArrayBufferLike>[]

    An array of strings or a Buffer naming possible ALPN protocols. (Protocols should be ordered by their priority.)

    -
    autoSelectFamily?: boolean

    v18.13.0

    +
    autoSelectFamily?: boolean

    v18.13.0

    autoSelectFamilyAttemptTimeout?: number

    v18.13.0

    -
    ca?: string | Buffer | (string | Buffer)[]

    Optionally override the trusted CA certificates. Default is to trust +

    ca?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike>)[]

    Optionally override the trusted CA certificates. Default is to trust the well-known CAs curated by Mozilla. Mozilla's CAs are completely replaced when CAs are explicitly specified using this option.

    -
    cancellationToken?: CancellationToken
    cert?: string | Buffer | (string | Buffer)[]

    Cert chains in PEM format. One cert chain should be provided per +

    cancellationToken?: CancellationToken
    cert?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike>)[]

    Cert chains in PEM format. One cert chain should be provided per private key. Each cert chain should consist of the PEM formatted certificate for a provided private key, followed by the PEM formatted intermediate certificates (if any), in order, and not @@ -61,7 +61,7 @@ be in the same order as their private keys in key. If the intermediate certificates are not provided, the peer will not be able to validate the certificate, and the handshake will fail.

    -
    checkServerIdentity?: ((hostname: string, cert: PeerCertificate) => Error | undefined)

    Type declaration

      • (hostname, cert): Error | undefined
      • Verifies the certificate cert is issued to hostname.

        +
    checkServerIdentity?: ((hostname: string, cert: PeerCertificate) => Error | undefined)

    Type declaration

      • (hostname, cert): Error | undefined
      • Verifies the certificate cert is issued to hostname.

        Returns Error object, populating it with reason, host, and cert on failure. On success, returns undefined.

        This function is intended to be used in combination with thecheckServerIdentity option that can be passed to connect and as @@ -77,20 +77,20 @@

        Parameters

        • hostname: string

          The host name or IP address to verify the certificate against.

        • cert: PeerCertificate

          A certificate object representing the peer's certificate.

        Returns Error | undefined

        v0.8.4

        -
    ciphers?: string

    Cipher suite specification, replacing the default. For more +

    ciphers?: string

    Cipher suite specification, replacing the default. For more information, see modifying the default cipher suite. Permitted ciphers can be obtained via tls.getCiphers(). Cipher names must be uppercased in order for OpenSSL to accept them.

    -
    compressors?: (
        | "none"
        | "snappy"
        | "zlib"
        | "zstd")[]
    connectTimeoutMS?: number
    credentials?: MongoCredentials
    crl?: string | Buffer | (string | Buffer)[]

    PEM formatted CRLs (Certificate Revocation Lists).

    -
    ecdhCurve?: string

    A string describing a named curve or a colon separated list of curve +

    compressors?: (
        | "none"
        | "snappy"
        | "zlib"
        | "zstd")[]
    connectTimeoutMS?: number
    credentials?: MongoCredentials
    crl?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike>)[]

    PEM formatted CRLs (Certificate Revocation Lists).

    +
    ecdhCurve?: string

    A string describing a named curve or a colon separated list of curve NIDs or names, for example P-521:P-384:P-256, to use for ECDH key agreement. Set to auto to select the curve automatically. Use crypto.getCurves() to obtain a list of available curve names. On recent releases, openssl ecparam -list_curves will also display the name and description of each available elliptic curve. Default: tls.DEFAULT_ECDH_CURVE.

    -
    family?: number
    generation: number
    hints?: number
    hostAddress: HostAddress
    id: number | "<monitor>"
    keepAliveInitialDelay?: number

    Node.JS socket option to set the time the first keepalive probe is sent on an idle socket. Defaults to 120000ms

    -
    key?: string | Buffer | (string | Buffer | KeyObject)[]

    Private keys in PEM format. PEM allows the option of private keys +

    family?: number
    generation: number
    hints?: number
    hostAddress: HostAddress
    id: number | "<monitor>"
    keepAliveInitialDelay?: number

    Node.JS socket option to set the time the first keepalive probe is sent on an idle socket. Defaults to 120000ms

    +
    key?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike> | KeyObject)[]

    Private keys in PEM format. PEM allows the option of private keys being encrypted. Encrypted keys will be decrypted with options.passphrase. Multiple keys using different algorithms can be provided either as an array of unencrypted key strings or buffers, @@ -98,8 +98,8 @@ passphrase: ]}. The object form can only occur in an array. object.passphrase is optional. Encrypted keys will be decrypted with object.passphrase if provided, or options.passphrase if it is not.

    -
    loadBalanced: boolean
    localAddress?: string
    localPort?: number
    logicalSessionTimeoutMinutes?: number
    lookup?: LookupFunction
    metadata: ClientMetadata
    minDHSize?: number
    monitorCommands: boolean
    noDelay?: boolean
    passphrase?: string

    Shared passphrase used for a single private key and/or a PFX.

    -
    pfx?: string | Buffer | (string | Buffer | PxfObject)[]

    PFX or PKCS12 encoded private key and certificate chain. pfx is an +

    loadBalanced: boolean
    localAddress?: string
    localPort?: number
    logicalSessionTimeoutMinutes?: number
    lookup?: LookupFunction
    metadata: ClientMetadata
    minDHSize?: number
    monitorCommands: boolean
    noDelay?: boolean
    passphrase?: string

    Shared passphrase used for a single private key and/or a PFX.

    +
    pfx?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike> | PxfObject)[]

    PFX or PKCS12 encoded private key and certificate chain. pfx is an alternative to providing key and cert individually. PFX is usually encrypted, if it is, passphrase will be used to decrypt it. Multiple PFX can be provided either as an array of unencrypted PFX buffers, @@ -107,14 +107,14 @@ passphrase: ]}. The object form can only occur in an array. object.passphrase is optional. Encrypted PFX will be decrypted with object.passphrase if provided, or options.passphrase if it is not.

    -
    proxyHost?: string
    proxyPassword?: string
    proxyPort?: number
    proxyUsername?: string
    rejectUnauthorized?: boolean

    If true the server will reject any connection which is not +

    proxyHost?: string
    proxyPassword?: string
    proxyPort?: number
    proxyUsername?: string
    rejectUnauthorized?: boolean

    If true the server will reject any connection which is not authorized with the list of supplied CAs. This option only has an effect if requestCert is true.

    true
     
    -
    secureContext?: SecureContext

    An optional TLS context object from tls.createSecureContext()

    -
    secureProtocol?: string

    Legacy mechanism to select the TLS protocol version to use, it does +

    secureContext?: SecureContext

    An optional TLS context object from tls.createSecureContext()

    +
    secureProtocol?: string

    Legacy mechanism to select the TLS protocol version to use, it does not support independent control of the minimum and maximum version, and does not support limiting the protocol to TLSv1.3. Use minVersion and maxVersion instead. The possible values are listed as @@ -123,5 +123,5 @@ any TLS protocol version up to TLSv1.3. It is not recommended to use TLS versions less than 1.2, but it may be required for interoperability. Default: none, see minVersion.

    -
    serverApi?: ServerApi
    servername?: string
    session?: Buffer

    An optional Buffer instance containing a TLS session.

    -
    socketTimeoutMS?: number
    tls: boolean
    +
    serverApi?: ServerApi
    servername?: string
    session?: Buffer<ArrayBufferLike>

    An optional Buffer instance containing a TLS session.

    +
    socketTimeoutMS?: number
    tls: boolean
    diff --git a/docs/Next/interfaces/ConnectionPoolOptions.html b/docs/Next/interfaces/ConnectionPoolOptions.html index 15b2f12a029..333b0aa4cad 100644 --- a/docs/Next/interfaces/ConnectionPoolOptions.html +++ b/docs/Next/interfaces/ConnectionPoolOptions.html @@ -1,4 +1,4 @@ -ConnectionPoolOptions | mongodb

    Interface ConnectionPoolOptions

    interface ConnectionPoolOptions {
        allowPartialTrustChain?: boolean;
        ALPNProtocols?: Uint8Array | string[] | Uint8Array[];
        autoSelectFamily?: boolean;
        autoSelectFamilyAttemptTimeout?: number;
        ca?: string | Buffer | (string | Buffer)[];
        cancellationToken?: CancellationToken;
        cert?: string | Buffer | (string | Buffer)[];
        checkServerIdentity?: ((hostname: string, cert: PeerCertificate) => Error | undefined);
        ciphers?: string;
        compressors?: (
            | "none"
            | "snappy"
            | "zlib"
            | "zstd")[];
        connectTimeoutMS?: number;
        credentials?: MongoCredentials;
        crl?: string | Buffer | (string | Buffer)[];
        ecdhCurve?: string;
        family?: number;
        hints?: number;
        hostAddress: HostAddress;
        keepAliveInitialDelay?: number;
        key?: string | Buffer | (string | Buffer | KeyObject)[];
        loadBalanced: boolean;
        localAddress?: string;
        localPort?: number;
        logicalSessionTimeoutMinutes?: number;
        lookup?: LookupFunction;
        maxConnecting: number;
        maxIdleTimeMS: number;
        maxPoolSize: number;
        metadata: ClientMetadata;
        minDHSize?: number;
        minPoolSize: number;
        monitorCommands: boolean;
        noDelay?: boolean;
        passphrase?: string;
        pfx?: string | Buffer | (string | Buffer | PxfObject)[];
        proxyHost?: string;
        proxyPassword?: string;
        proxyPort?: number;
        proxyUsername?: string;
        rejectUnauthorized?: boolean;
        secureContext?: SecureContext;
        secureProtocol?: string;
        serverApi?: ServerApi;
        servername?: string;
        session?: Buffer;
        socketTimeoutMS?: number;
        tls: boolean;
        waitQueueTimeoutMS: number;
    }

    Hierarchy

    Properties

    allowPartialTrustChain? +ConnectionPoolOptions | mongodb

    Interface ConnectionPoolOptions

    interface ConnectionPoolOptions {
        allowPartialTrustChain?: boolean;
        ALPNProtocols?: Uint8Array<ArrayBufferLike> | string[] | Uint8Array<ArrayBufferLike>[];
        autoSelectFamily?: boolean;
        autoSelectFamilyAttemptTimeout?: number;
        ca?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike>)[];
        cancellationToken?: CancellationToken;
        cert?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike>)[];
        checkServerIdentity?: ((hostname: string, cert: PeerCertificate) => Error | undefined);
        ciphers?: string;
        compressors?: (
            | "none"
            | "snappy"
            | "zlib"
            | "zstd")[];
        connectTimeoutMS?: number;
        credentials?: MongoCredentials;
        crl?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike>)[];
        ecdhCurve?: string;
        family?: number;
        hints?: number;
        hostAddress: HostAddress;
        keepAliveInitialDelay?: number;
        key?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike> | KeyObject)[];
        loadBalanced: boolean;
        localAddress?: string;
        localPort?: number;
        logicalSessionTimeoutMinutes?: number;
        lookup?: LookupFunction;
        maxConnecting: number;
        maxIdleTimeMS: number;
        maxPoolSize: number;
        metadata: ClientMetadata;
        minDHSize?: number;
        minPoolSize: number;
        monitorCommands: boolean;
        noDelay?: boolean;
        passphrase?: string;
        pfx?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike> | PxfObject)[];
        proxyHost?: string;
        proxyPassword?: string;
        proxyPort?: number;
        proxyUsername?: string;
        rejectUnauthorized?: boolean;
        secureContext?: SecureContext;
        secureProtocol?: string;
        serverApi?: ServerApi;
        servername?: string;
        session?: Buffer<ArrayBufferLike>;
        socketTimeoutMS?: number;
        tls: boolean;
        waitQueueTimeoutMS: number;
    }

    Hierarchy

    Properties

    allowPartialTrustChain?: boolean

    Treat intermediate (non-self-signed) certificates in the trust CA certificate list as trusted.

    v22.9.0, v20.18.0

    -
    ALPNProtocols?: Uint8Array | string[] | Uint8Array[]

    An array of strings or a Buffer naming possible ALPN protocols. +

    ALPNProtocols?: Uint8Array<ArrayBufferLike> | string[] | Uint8Array<ArrayBufferLike>[]

    An array of strings or a Buffer naming possible ALPN protocols. (Protocols should be ordered by their priority.)

    -
    autoSelectFamily?: boolean

    v18.13.0

    +
    autoSelectFamily?: boolean

    v18.13.0

    autoSelectFamilyAttemptTimeout?: number

    v18.13.0

    -
    ca?: string | Buffer | (string | Buffer)[]

    Optionally override the trusted CA certificates. Default is to trust +

    ca?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike>)[]

    Optionally override the trusted CA certificates. Default is to trust the well-known CAs curated by Mozilla. Mozilla's CAs are completely replaced when CAs are explicitly specified using this option.

    -
    cancellationToken?: CancellationToken
    cert?: string | Buffer | (string | Buffer)[]

    Cert chains in PEM format. One cert chain should be provided per +

    cancellationToken?: CancellationToken
    cert?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike>)[]

    Cert chains in PEM format. One cert chain should be provided per private key. Each cert chain should consist of the PEM formatted certificate for a provided private key, followed by the PEM formatted intermediate certificates (if any), in order, and not @@ -64,7 +64,7 @@ be in the same order as their private keys in key. If the intermediate certificates are not provided, the peer will not be able to validate the certificate, and the handshake will fail.

    -
    checkServerIdentity?: ((hostname: string, cert: PeerCertificate) => Error | undefined)

    Type declaration

      • (hostname, cert): Error | undefined
      • Verifies the certificate cert is issued to hostname.

        +
    checkServerIdentity?: ((hostname: string, cert: PeerCertificate) => Error | undefined)

    Type declaration

      • (hostname, cert): Error | undefined
      • Verifies the certificate cert is issued to hostname.

        Returns Error object, populating it with reason, host, and cert on failure. On success, returns undefined.

        This function is intended to be used in combination with thecheckServerIdentity option that can be passed to connect and as @@ -80,20 +80,20 @@

        Parameters

        • hostname: string

          The host name or IP address to verify the certificate against.

        • cert: PeerCertificate

          A certificate object representing the peer's certificate.

        Returns Error | undefined

        v0.8.4

        -
    ciphers?: string

    Cipher suite specification, replacing the default. For more +

    ciphers?: string

    Cipher suite specification, replacing the default. For more information, see modifying the default cipher suite. Permitted ciphers can be obtained via tls.getCiphers(). Cipher names must be uppercased in order for OpenSSL to accept them.

    -
    compressors?: (
        | "none"
        | "snappy"
        | "zlib"
        | "zstd")[]
    connectTimeoutMS?: number
    credentials?: MongoCredentials
    crl?: string | Buffer | (string | Buffer)[]

    PEM formatted CRLs (Certificate Revocation Lists).

    -
    ecdhCurve?: string

    A string describing a named curve or a colon separated list of curve +

    compressors?: (
        | "none"
        | "snappy"
        | "zlib"
        | "zstd")[]
    connectTimeoutMS?: number
    credentials?: MongoCredentials
    crl?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike>)[]

    PEM formatted CRLs (Certificate Revocation Lists).

    +
    ecdhCurve?: string

    A string describing a named curve or a colon separated list of curve NIDs or names, for example P-521:P-384:P-256, to use for ECDH key agreement. Set to auto to select the curve automatically. Use crypto.getCurves() to obtain a list of available curve names. On recent releases, openssl ecparam -list_curves will also display the name and description of each available elliptic curve. Default: tls.DEFAULT_ECDH_CURVE.

    -
    family?: number
    hints?: number
    hostAddress: HostAddress
    keepAliveInitialDelay?: number

    Node.JS socket option to set the time the first keepalive probe is sent on an idle socket. Defaults to 120000ms

    -
    key?: string | Buffer | (string | Buffer | KeyObject)[]

    Private keys in PEM format. PEM allows the option of private keys +

    family?: number
    hints?: number
    hostAddress: HostAddress
    keepAliveInitialDelay?: number

    Node.JS socket option to set the time the first keepalive probe is sent on an idle socket. Defaults to 120000ms

    +
    key?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike> | KeyObject)[]

    Private keys in PEM format. PEM allows the option of private keys being encrypted. Encrypted keys will be decrypted with options.passphrase. Multiple keys using different algorithms can be provided either as an array of unencrypted key strings or buffers, @@ -101,13 +101,13 @@ passphrase: ]}. The object form can only occur in an array. object.passphrase is optional. Encrypted keys will be decrypted with object.passphrase if provided, or options.passphrase if it is not.

    -
    loadBalanced: boolean

    If we are in load balancer mode.

    -
    localAddress?: string
    localPort?: number
    logicalSessionTimeoutMinutes?: number
    lookup?: LookupFunction
    maxConnecting: number

    The maximum number of connections that may be in the process of being established concurrently by the connection pool.

    -
    maxIdleTimeMS: number

    The maximum amount of time a connection should remain idle in the connection pool before being marked idle.

    -
    maxPoolSize: number

    The maximum number of connections that may be associated with a pool at a given time. This includes in use and available connections.

    -
    metadata: ClientMetadata
    minDHSize?: number
    minPoolSize: number

    The minimum number of connections that MUST exist at any moment in a single connection pool.

    -
    monitorCommands: boolean
    noDelay?: boolean
    passphrase?: string

    Shared passphrase used for a single private key and/or a PFX.

    -
    pfx?: string | Buffer | (string | Buffer | PxfObject)[]

    PFX or PKCS12 encoded private key and certificate chain. pfx is an +

    loadBalanced: boolean

    If we are in load balancer mode.

    +
    localAddress?: string
    localPort?: number
    logicalSessionTimeoutMinutes?: number
    lookup?: LookupFunction
    maxConnecting: number

    The maximum number of connections that may be in the process of being established concurrently by the connection pool.

    +
    maxIdleTimeMS: number

    The maximum amount of time a connection should remain idle in the connection pool before being marked idle.

    +
    maxPoolSize: number

    The maximum number of connections that may be associated with a pool at a given time. This includes in use and available connections.

    +
    metadata: ClientMetadata
    minDHSize?: number
    minPoolSize: number

    The minimum number of connections that MUST exist at any moment in a single connection pool.

    +
    monitorCommands: boolean
    noDelay?: boolean
    passphrase?: string

    Shared passphrase used for a single private key and/or a PFX.

    +
    pfx?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike> | PxfObject)[]

    PFX or PKCS12 encoded private key and certificate chain. pfx is an alternative to providing key and cert individually. PFX is usually encrypted, if it is, passphrase will be used to decrypt it. Multiple PFX can be provided either as an array of unencrypted PFX buffers, @@ -115,14 +115,14 @@ passphrase: ]}. The object form can only occur in an array. object.passphrase is optional. Encrypted PFX will be decrypted with object.passphrase if provided, or options.passphrase if it is not.

    -
    proxyHost?: string
    proxyPassword?: string
    proxyPort?: number
    proxyUsername?: string
    rejectUnauthorized?: boolean

    If true the server will reject any connection which is not +

    proxyHost?: string
    proxyPassword?: string
    proxyPort?: number
    proxyUsername?: string
    rejectUnauthorized?: boolean

    If true the server will reject any connection which is not authorized with the list of supplied CAs. This option only has an effect if requestCert is true.

    true
     
    -
    secureContext?: SecureContext

    An optional TLS context object from tls.createSecureContext()

    -
    secureProtocol?: string

    Legacy mechanism to select the TLS protocol version to use, it does +

    secureContext?: SecureContext

    An optional TLS context object from tls.createSecureContext()

    +
    secureProtocol?: string

    Legacy mechanism to select the TLS protocol version to use, it does not support independent control of the minimum and maximum version, and does not support limiting the protocol to TLSv1.3. Use minVersion and maxVersion instead. The possible values are listed as @@ -131,6 +131,6 @@ any TLS protocol version up to TLSv1.3. It is not recommended to use TLS versions less than 1.2, but it may be required for interoperability. Default: none, see minVersion.

    -
    serverApi?: ServerApi
    servername?: string
    session?: Buffer

    An optional Buffer instance containing a TLS session.

    -
    socketTimeoutMS?: number
    tls: boolean
    waitQueueTimeoutMS: number

    The maximum amount of time operation execution should wait for a connection to become available. The default is 0 which means there is no limit.

    -
    +
    serverApi?: ServerApi
    servername?: string
    session?: Buffer<ArrayBufferLike>

    An optional Buffer instance containing a TLS session.

    +
    socketTimeoutMS?: number
    tls: boolean
    waitQueueTimeoutMS: number

    The maximum amount of time operation execution should wait for a connection to become available. The default is 0 which means there is no limit.

    +
    diff --git a/docs/Next/interfaces/CountDocumentsOptions.html b/docs/Next/interfaces/CountDocumentsOptions.html index 7f6e3d7ef51..ffe7aee46f4 100644 --- a/docs/Next/interfaces/CountDocumentsOptions.html +++ b/docs/Next/interfaces/CountDocumentsOptions.html @@ -35,33 +35,33 @@ willRetryWrite? writeConcern?

    Properties

    allowDiskUse?: boolean

    allowDiskUse lets the server know if it can use disk to store temporary results for the aggregation (requires mongodb 2.6 >).

    -
    authdb?: string
    batchSize?: number

    The number of documents to return per batch. See aggregation documentation.

    -
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    +
    authdb?: string
    batchSize?: number

    The number of documents to return per batch. See aggregation documentation.

    +
    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    false

    bypassDocumentValidation?: boolean

    Allow driver to bypass schema validation.

    -
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    false

    collation?: CollationOptions

    Specify collation.

    -
    comment?: unknown

    Comment to apply to the operation.

    +
    comment?: unknown

    Comment to apply to the operation.

    In server versions pre-4.4, 'comment' must be string. A server error will be thrown if any other type is provided.

    In server versions 4.4 and above, 'comment' can be any valid BSON type.

    cursor?: Document

    Return the query as cursor, on 2.6 > it returns as a real cursor on pre 2.6 it returns as an emulated cursor.

    -
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +
    dbName?: string
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    Specifies the verbosity mode for the explain output.

    This API is deprecated in favor of collection.aggregate().explain() or db.aggregate().explain().

    -
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    +
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    null

    hint?: Hint

    Add an index selection hint to an aggregation command

    -
    ignoreUndefined?: boolean

    serialize will not emit undefined fields +

    ignoreUndefined?: boolean

    serialize will not emit undefined fields note that the driver sets this to false

    true

    let?: Document

    Map of parameter names and values that can be accessed using $$var (requires MongoDB 5.0).

    -
    limit?: number

    The maximum amount of documents to consider.

    +
    limit?: number

    The maximum amount of documents to consider.

    maxAwaitTimeMS?: number

    The maximum amount of time for the server to wait on new documents to satisfy a tailable cursor query.

    -
    maxTimeMS?: number

    Specifies a cumulative time limit in milliseconds for processing operations on the cursor. MongoDB interrupts the operation at the earliest following interrupt point.

    -
    noResponse?: boolean
    omitReadPreference?: boolean
    out?: string
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    +
    maxTimeMS?: number

    Specifies a cumulative time limit in milliseconds for processing operations on the cursor. MongoDB interrupts the operation at the earliest following interrupt point.

    +
    noResponse?: boolean
    omitReadPreference?: boolean
    out?: string
    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    false

    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    true

    diff --git a/docs/Next/interfaces/FilterOperators.html b/docs/Next/interfaces/FilterOperators.html index 0406d282125..299d024bf23 100644 --- a/docs/Next/interfaces/FilterOperators.html +++ b/docs/Next/interfaces/FilterOperators.html @@ -1,4 +1,4 @@ -FilterOperators | mongodb

    Interface FilterOperators<TValue>

    interface FilterOperators<TValue> {
        __id?: undefined;
        $all?: readonly any[];
        $bitsAllClear?: BitwiseFilter;
        $bitsAllSet?: BitwiseFilter;
        $bitsAnyClear?: BitwiseFilter;
        $bitsAnySet?: BitwiseFilter;
        $elemMatch?: Document;
        $eq?: TValue;
        $exists?: boolean;
        $expr?: Record<string, any>;
        $geoIntersects?: {
            $geometry: Document;
        };
        $geoWithin?: Document;
        $gt?: TValue;
        $gte?: TValue;
        $in?: readonly TValue[];
        $jsonSchema?: Record<string, any>;
        $lt?: TValue;
        $lte?: TValue;
        $maxDistance?: number;
        $mod?: TValue extends number
            ? [number, number]
            : never;
        $ne?: TValue;
        $near?: Document;
        $nearSphere?: Document;
        $nin?: readonly TValue[];
        $not?: TValue extends string
            ? RegExp | FilterOperators<TValue<TValue>>
            : FilterOperators<TValue>;
        $options?: TValue extends string
            ? string
            : never;
        $rand?: Record<string, never>;
        $regex?: TValue extends string
            ? string | RegExp | BSONRegExp
            : never;
        $size?: TValue extends readonly any[]
            ? number
            : never;
        $type?:
            | "string"
            | "symbol"
            | "undefined"
            | "object"
            | "double"
            | "array"
            | "binData"
            | "objectId"
            | "bool"
            | "date"
            | "null"
            | "regex"
            | "dbPointer"
            | "javascript"
            | "javascriptWithScope"
            | "int"
            | "timestamp"
            | "long"
            | "decimal"
            | "minKey"
            | "maxKey"
            | BSON.BSONType;
        id?: undefined;
        toHexString?: any;
    }

    Type Parameters

    • TValue

    Hierarchy (view full)

    Properties

    __id? +FilterOperators | mongodb

    Interface FilterOperators<TValue>

    interface FilterOperators<TValue> {
        __id?: undefined;
        $all?: readonly any[];
        $bitsAllClear?: BitwiseFilter;
        $bitsAllSet?: BitwiseFilter;
        $bitsAnyClear?: BitwiseFilter;
        $bitsAnySet?: BitwiseFilter;
        $elemMatch?: Document;
        $eq?: TValue;
        $exists?: boolean;
        $expr?: Record<string, any>;
        $geoIntersects?: {
            $geometry: Document;
        };
        $geoWithin?: Document;
        $gt?: TValue;
        $gte?: TValue;
        $in?: readonly TValue[];
        $jsonSchema?: Record<string, any>;
        $lt?: TValue;
        $lte?: TValue;
        $maxDistance?: number;
        $mod?: TValue extends number
            ? [number, number]
            : never;
        $ne?: TValue;
        $near?: Document;
        $nearSphere?: Document;
        $nin?: readonly TValue[];
        $not?: TValue extends string
            ? RegExp | FilterOperators<TValue<TValue>>
            : FilterOperators<TValue>;
        $options?: TValue extends string
            ? string
            : never;
        $rand?: Record<string, never>;
        $regex?: TValue extends string
            ? string | RegExp | BSONRegExp
            : never;
        $size?: TValue extends readonly any[]
            ? number
            : never;
        $type?:
            | "string"
            | "symbol"
            | "undefined"
            | "object"
            | "int"
            | "double"
            | "array"
            | "binData"
            | "objectId"
            | "bool"
            | "date"
            | "null"
            | "regex"
            | "dbPointer"
            | "javascript"
            | "javascriptWithScope"
            | "timestamp"
            | "long"
            | "decimal"
            | "minKey"
            | "maxKey"
            | BSON.BSONType;
        id?: undefined;
        toHexString?: any;
    }

    Type Parameters

    • TValue

    Hierarchy (view full)

    Properties

    Methods

    Properties

    __id?: undefined
    $all?: readonly any[]
    $bitsAllClear?: BitwiseFilter
    $bitsAllSet?: BitwiseFilter
    $bitsAnyClear?: BitwiseFilter
    $bitsAnySet?: BitwiseFilter
    $elemMatch?: Document
    $eq?: TValue
    $exists?: boolean

    When true, $exists matches the documents that contain the field, including documents where the field value is null.

    -
    $expr?: Record<string, any>
    $geoIntersects?: {
        $geometry: Document;
    }
    $geoWithin?: Document
    $gt?: TValue
    $gte?: TValue
    $in?: readonly TValue[]
    $jsonSchema?: Record<string, any>
    $lt?: TValue
    $lte?: TValue
    $maxDistance?: number
    $mod?: TValue extends number
        ? [number, number]
        : never
    $ne?: TValue
    $near?: Document
    $nearSphere?: Document
    $nin?: readonly TValue[]
    $not?: TValue extends string
        ? RegExp | FilterOperators<TValue<TValue>>
        : FilterOperators<TValue>
    $options?: TValue extends string
        ? string
        : never
    $rand?: Record<string, never>
    $regex?: TValue extends string
        ? string | RegExp | BSONRegExp
        : never
    $size?: TValue extends readonly any[]
        ? number
        : never
    $type?:
        | "string"
        | "symbol"
        | "undefined"
        | "object"
        | "double"
        | "array"
        | "binData"
        | "objectId"
        | "bool"
        | "date"
        | "null"
        | "regex"
        | "dbPointer"
        | "javascript"
        | "javascriptWithScope"
        | "int"
        | "timestamp"
        | "long"
        | "decimal"
        | "minKey"
        | "maxKey"
        | BSON.BSONType
    id?: undefined

    Methods

    toHexString
    +
    $expr?: Record<string, any>
    $geoIntersects?: {
        $geometry: Document;
    }
    $geoWithin?: Document
    $gt?: TValue
    $gte?: TValue
    $in?: readonly TValue[]
    $jsonSchema?: Record<string, any>
    $lt?: TValue
    $lte?: TValue
    $maxDistance?: number
    $mod?: TValue extends number
        ? [number, number]
        : never
    $ne?: TValue
    $near?: Document
    $nearSphere?: Document
    $nin?: readonly TValue[]
    $not?: TValue extends string
        ? RegExp | FilterOperators<TValue<TValue>>
        : FilterOperators<TValue>
    $options?: TValue extends string
        ? string
        : never
    $rand?: Record<string, never>
    $regex?: TValue extends string
        ? string | RegExp | BSONRegExp
        : never
    $size?: TValue extends readonly any[]
        ? number
        : never
    $type?:
        | "string"
        | "symbol"
        | "undefined"
        | "object"
        | "int"
        | "double"
        | "array"
        | "binData"
        | "objectId"
        | "bool"
        | "date"
        | "null"
        | "regex"
        | "dbPointer"
        | "javascript"
        | "javascriptWithScope"
        | "timestamp"
        | "long"
        | "decimal"
        | "minKey"
        | "maxKey"
        | BSON.BSONType
    id?: undefined

    Methods

    toHexString
    diff --git a/docs/Next/interfaces/GCPEncryptionKeyOptions.html b/docs/Next/interfaces/GCPEncryptionKeyOptions.html index 8bc47660012..d023375ed98 100644 --- a/docs/Next/interfaces/GCPEncryptionKeyOptions.html +++ b/docs/Next/interfaces/GCPEncryptionKeyOptions.html @@ -1,14 +1,14 @@ GCPEncryptionKeyOptions | mongodb

    Interface GCPEncryptionKeyOptions

    Configuration options for making an AWS encryption key

    -
    interface GCPEncryptionKeyOptions {
        endpoint?: string;
        keyName: string;
        keyRing: string;
        keyVersion?: string;
        location: string;
        projectId: string;
    }

    Properties

    interface GCPEncryptionKeyOptions {
        endpoint?: string;
        keyName: string;
        keyRing: string;
        keyVersion?: string;
        location: string;
        projectId: string;
    }

    Properties

    endpoint?: string

    KMS URL, defaults to https://www.googleapis.com/auth/cloudkms

    -
    keyName: string

    Key name

    -
    keyRing: string

    Key ring name

    -
    keyVersion?: string

    Key version

    -
    location: string

    Location name (e.g. "global")

    -
    projectId: string

    GCP project ID

    -
    +
    keyName: string

    Key name

    +
    keyRing: string

    Key ring name

    +
    keyVersion?: string

    Key version

    +
    location: string

    Location name (e.g. "global")

    +
    projectId: string

    GCP project ID

    +
    diff --git a/docs/Next/interfaces/GridFSChunk.html b/docs/Next/interfaces/GridFSChunk.html index 3d6ab9d7f1e..a66bff3c9ff 100644 --- a/docs/Next/interfaces/GridFSChunk.html +++ b/docs/Next/interfaces/GridFSChunk.html @@ -1,5 +1,5 @@ -GridFSChunk | mongodb

    Interface GridFSChunk

    interface GridFSChunk {
        _id: ObjectId;
        data: Uint8Array | Buffer;
        files_id: ObjectId;
        n: number;
    }

    Properties

    _id +GridFSChunk | mongodb

    Interface GridFSChunk

    interface GridFSChunk {
        _id: ObjectId;
        data: Uint8Array<ArrayBufferLike> | Buffer<ArrayBufferLike>;
        files_id: ObjectId;
        n: number;
    }

    Properties

    Properties

    data: Uint8Array | Buffer
    files_id: ObjectId
    n: number
    +

    Properties

    data: Uint8Array<ArrayBufferLike> | Buffer<ArrayBufferLike>
    files_id: ObjectId
    n: number
    diff --git a/docs/Next/interfaces/IdPInfo.html b/docs/Next/interfaces/IdPInfo.html index f27bcf05437..e918d639432 100644 --- a/docs/Next/interfaces/IdPInfo.html +++ b/docs/Next/interfaces/IdPInfo.html @@ -1,10 +1,10 @@ IdPInfo | mongodb

    Interface IdPInfo

    The information returned by the server on the IDP server.

    -
    interface IdPInfo {
        clientId: string;
        issuer: string;
        requestScopes?: string[];
    }

    Properties

    interface IdPInfo {
        clientId: string;
        issuer: string;
        requestScopes?: string[];
    }

    Properties

    clientId: string

    A unique client ID for this OIDC client.

    -
    issuer: string

    A URL which describes the Authentication Server. This identifier should +

    issuer: string

    A URL which describes the Authentication Server. This identifier should be the iss of provided access tokens, and be viable for RFC8414 metadata discovery and RFC9207 identification.

    -
    requestScopes?: string[]

    A list of additional scopes to request from IdP.

    -
    +
    requestScopes?: string[]

    A list of additional scopes to request from IdP.

    +
    diff --git a/docs/Next/interfaces/IdPServerResponse.html b/docs/Next/interfaces/IdPServerResponse.html index 8c25cb35570..875fb9ec02f 100644 --- a/docs/Next/interfaces/IdPServerResponse.html +++ b/docs/Next/interfaces/IdPServerResponse.html @@ -1,9 +1,9 @@ IdPServerResponse | mongodb

    Interface IdPServerResponse

    The response from the IdP server with the access token and optional expiration time and refresh token.

    -
    interface IdPServerResponse {
        accessToken: string;
        expiresInSeconds?: number;
        refreshToken?: string;
    }

    Properties

    interface IdPServerResponse {
        accessToken: string;
        expiresInSeconds?: number;
        refreshToken?: string;
    }

    Properties

    accessToken: string

    The OIDC access token.

    -
    expiresInSeconds?: number

    The time when the access token expires. For future use.

    -
    refreshToken?: string

    The refresh token, if applicable, to be used by the callback to request a new token from the issuer.

    -
    +
    expiresInSeconds?: number

    The time when the access token expires. For future use.

    +
    refreshToken?: string

    The refresh token, if applicable, to be used by the callback to request a new token from the issuer.

    +
    diff --git a/docs/Next/interfaces/KMIPEncryptionKeyOptions.html b/docs/Next/interfaces/KMIPEncryptionKeyOptions.html index 7c1f351c018..1b0ee3fa810 100644 --- a/docs/Next/interfaces/KMIPEncryptionKeyOptions.html +++ b/docs/Next/interfaces/KMIPEncryptionKeyOptions.html @@ -1,10 +1,10 @@ KMIPEncryptionKeyOptions | mongodb

    Interface KMIPEncryptionKeyOptions

    Configuration options for making a KMIP encryption key

    -
    interface KMIPEncryptionKeyOptions {
        delegated?: boolean;
        endpoint?: string;
        keyId?: string;
    }

    Properties

    interface KMIPEncryptionKeyOptions {
        delegated?: boolean;
        endpoint?: string;
        keyId?: string;
    }

    Properties

    delegated?: boolean

    If true, this key should be decrypted by the KMIP server.

    Requires mongodb-client-encryption>=6.0.1.

    -
    endpoint?: string

    Host with optional port.

    -
    keyId?: string

    keyId is the KMIP Unique Identifier to a 96 byte KMIP Secret Data managed object.

    +
    endpoint?: string

    Host with optional port.

    +
    keyId?: string

    keyId is the KMIP Unique Identifier to a 96 byte KMIP Secret Data managed object.

    If keyId is omitted, a random 96 byte KMIP Secret Data managed object will be created.

    -
    +
    diff --git a/docs/Next/interfaces/LocalKMSProviderConfiguration.html b/docs/Next/interfaces/LocalKMSProviderConfiguration.html index 59d2ec809f9..78f5bc83137 100644 --- a/docs/Next/interfaces/LocalKMSProviderConfiguration.html +++ b/docs/Next/interfaces/LocalKMSProviderConfiguration.html @@ -1,4 +1,4 @@ -LocalKMSProviderConfiguration | mongodb

    Interface LocalKMSProviderConfiguration

    interface LocalKMSProviderConfiguration {
        key: string | Uint8Array | Binary;
    }

    Properties

    key -

    Properties

    key: string | Uint8Array | Binary

    The master key used to encrypt/decrypt data keys. +LocalKMSProviderConfiguration | mongodb

    Interface LocalKMSProviderConfiguration

    interface LocalKMSProviderConfiguration {
        key: string | Uint8Array<ArrayBufferLike> | Binary;
    }

    Properties

    key +

    Properties

    key: string | Uint8Array<ArrayBufferLike> | Binary

    The master key used to encrypt/decrypt data keys. A 96-byte long Buffer or base64 encoded string.

    diff --git a/docs/Next/interfaces/MongoClientOptions.html b/docs/Next/interfaces/MongoClientOptions.html index 2a4c20e0946..f679c48e7be 100644 --- a/docs/Next/interfaces/MongoClientOptions.html +++ b/docs/Next/interfaces/MongoClientOptions.html @@ -1,6 +1,6 @@ MongoClientOptions | mongodb

    Interface MongoClientOptions

    Describes all possible URI query options for the mongo client

    interface MongoClientOptions {
        allowPartialTrustChain?: boolean;
        ALPNProtocols?: Uint8Array | string[] | Uint8Array[];
        appName?: string;
        auth?: Auth;
        authMechanism?: AuthMechanism;
        authMechanismProperties?: AuthMechanismProperties;
        authSource?: string;
        autoEncryption?: AutoEncryptionOptions;
        autoSelectFamily?: boolean;
        autoSelectFamilyAttemptTimeout?: number;
        bsonRegExp?: boolean;
        ca?: string | Buffer | (string | Buffer)[];
        cert?: string | Buffer | (string | Buffer)[];
        checkKeys?: boolean;
        checkServerIdentity?: ((hostname: string, cert: PeerCertificate) => Error | undefined);
        ciphers?: string;
        compressors?: string | (
            | "none"
            | "snappy"
            | "zlib"
            | "zstd")[];
        connectTimeoutMS?: number;
        crl?: string | Buffer | (string | Buffer)[];
        directConnection?: boolean;
        driverInfo?: DriverInfo;
        ecdhCurve?: string;
        enableUtf8Validation?: boolean;
        family?: number;
        fieldsAsRaw?: Document;
        forceServerObjectId?: boolean;
        heartbeatFrequencyMS?: number;
        hints?: number;
        ignoreUndefined?: boolean;
        journal?: boolean;
        keepAliveInitialDelay?: number;
        key?: string | Buffer | (string | Buffer | KeyObject)[];
        loadBalanced?: boolean;
        localAddress?: string;
        localPort?: number;
        localThresholdMS?: number;
        lookup?: LookupFunction;
        maxConnecting?: number;
        maxIdleTimeMS?: number;
        maxPoolSize?: number;
        maxStalenessSeconds?: number;
        minDHSize?: number;
        minHeartbeatFrequencyMS?: number;
        minPoolSize?: number;
        mongodbLogComponentSeverities?: LogComponentSeveritiesClientOptions;
        mongodbLogMaxDocumentLength?: number;
        mongodbLogPath?: MongoDBLogWritable | "stdout" | "stderr";
        monitorCommands?: boolean;
        noDelay?: boolean;
        passphrase?: string;
        pfx?: string | Buffer | (string | Buffer | PxfObject)[];
        pkFactory?: PkFactory;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        proxyHost?: string;
        proxyPassword?: string;
        proxyPort?: number;
        proxyUsername?: string;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readConcernLevel?: ReadConcernLevel;
        readPreference?: ReadPreference | ReadPreferenceMode;
        readPreferenceTags?: TagSet[];
        rejectUnauthorized?: boolean;
        replicaSet?: string;
        retryReads?: boolean;
        retryWrites?: boolean;
        secureContext?: SecureContext;
        secureProtocol?: string;
        serializeFunctions?: boolean;
        serverApi?: "1" | ServerApi;
        serverMonitoringMode?: ServerMonitoringMode;
        servername?: string;
        serverSelectionTimeoutMS?: number;
        session?: Buffer;
        socketTimeoutMS?: number;
        srvMaxHosts?: number;
        srvServiceName?: string;
        ssl?: boolean;
        timeoutMS?: number;
        tls?: boolean;
        tlsAllowInvalidCertificates?: boolean;
        tlsAllowInvalidHostnames?: boolean;
        tlsCAFile?: string;
        tlsCertificateKeyFile?: string;
        tlsCertificateKeyFilePassword?: string;
        tlsCRLFile?: string;
        tlsInsecure?: boolean;
        useBigInt64?: boolean;
        w?: W;
        waitQueueTimeoutMS?: number;
        writeConcern?: WriteConcern | WriteConcernSettings;
        wtimeoutMS?: number;
        zlibCompressionLevel?:
            | 0
            | 5
            | 1
            | 3
            | 9
            | 4
            | 2
            | 8
            | 7
            | 6;
    }

    Hierarchy (view full)

    Properties

    interface MongoClientOptions {
        allowPartialTrustChain?: boolean;
        ALPNProtocols?: Uint8Array<ArrayBufferLike> | string[] | Uint8Array<ArrayBufferLike>[];
        appName?: string;
        auth?: Auth;
        authMechanism?: AuthMechanism;
        authMechanismProperties?: AuthMechanismProperties;
        authSource?: string;
        autoEncryption?: AutoEncryptionOptions;
        autoSelectFamily?: boolean;
        autoSelectFamilyAttemptTimeout?: number;
        bsonRegExp?: boolean;
        ca?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike>)[];
        cert?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike>)[];
        checkKeys?: boolean;
        checkServerIdentity?: ((hostname: string, cert: PeerCertificate) => Error | undefined);
        ciphers?: string;
        compressors?: string | (
            | "none"
            | "snappy"
            | "zlib"
            | "zstd")[];
        connectTimeoutMS?: number;
        crl?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike>)[];
        directConnection?: boolean;
        driverInfo?: DriverInfo;
        ecdhCurve?: string;
        enableUtf8Validation?: boolean;
        family?: number;
        fieldsAsRaw?: Document;
        forceServerObjectId?: boolean;
        heartbeatFrequencyMS?: number;
        hints?: number;
        ignoreUndefined?: boolean;
        journal?: boolean;
        keepAliveInitialDelay?: number;
        key?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike> | KeyObject)[];
        loadBalanced?: boolean;
        localAddress?: string;
        localPort?: number;
        localThresholdMS?: number;
        lookup?: LookupFunction;
        maxConnecting?: number;
        maxIdleTimeMS?: number;
        maxPoolSize?: number;
        maxStalenessSeconds?: number;
        minDHSize?: number;
        minHeartbeatFrequencyMS?: number;
        minPoolSize?: number;
        mongodbLogComponentSeverities?: LogComponentSeveritiesClientOptions;
        mongodbLogMaxDocumentLength?: number;
        mongodbLogPath?: MongoDBLogWritable | "stdout" | "stderr";
        monitorCommands?: boolean;
        noDelay?: boolean;
        passphrase?: string;
        pfx?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike> | PxfObject)[];
        pkFactory?: PkFactory;
        promoteBuffers?: boolean;
        promoteLongs?: boolean;
        promoteValues?: boolean;
        proxyHost?: string;
        proxyPassword?: string;
        proxyPort?: number;
        proxyUsername?: string;
        raw?: boolean;
        readConcern?: ReadConcernLike;
        readConcernLevel?: ReadConcernLevel;
        readPreference?: ReadPreference | ReadPreferenceMode;
        readPreferenceTags?: TagSet[];
        rejectUnauthorized?: boolean;
        replicaSet?: string;
        retryReads?: boolean;
        retryWrites?: boolean;
        secureContext?: SecureContext;
        secureProtocol?: string;
        serializeFunctions?: boolean;
        serverApi?: "1" | ServerApi;
        serverMonitoringMode?: ServerMonitoringMode;
        servername?: string;
        serverSelectionTimeoutMS?: number;
        session?: Buffer<ArrayBufferLike>;
        socketTimeoutMS?: number;
        srvMaxHosts?: number;
        srvServiceName?: string;
        ssl?: boolean;
        timeoutMS?: number;
        tls?: boolean;
        tlsAllowInvalidCertificates?: boolean;
        tlsAllowInvalidHostnames?: boolean;
        tlsCAFile?: string;
        tlsCertificateKeyFile?: string;
        tlsCertificateKeyFilePassword?: string;
        tlsCRLFile?: string;
        tlsInsecure?: boolean;
        useBigInt64?: boolean;
        w?: W;
        waitQueueTimeoutMS?: number;
        writeConcern?: WriteConcern | WriteConcernSettings;
        wtimeoutMS?: number;
        zlibCompressionLevel?:
            | 0
            | 5
            | 1
            | 3
            | 9
            | 4
            | 2
            | 8
            | 6
            | 7;
    }

    Hierarchy (view full)

    Properties

    allowPartialTrustChain?: boolean

    Treat intermediate (non-self-signed) certificates in the trust CA certificate list as trusted.

    v22.9.0, v20.18.0

    -
    ALPNProtocols?: Uint8Array | string[] | Uint8Array[]

    An array of strings or a Buffer naming possible ALPN protocols. +

    ALPNProtocols?: Uint8Array<ArrayBufferLike> | string[] | Uint8Array<ArrayBufferLike>[]

    An array of strings or a Buffer naming possible ALPN protocols. (Protocols should be ordered by their priority.)

    -
    appName?: string

    The name of the application that created this MongoClient instance. MongoDB 3.4 and newer will print this value in the server log upon establishing each connection. It is also recorded in the slow query log and profile collections

    +
    appName?: string

    The name of the application that created this MongoClient instance. MongoDB 3.4 and newer will print this value in the server log upon establishing each connection. It is also recorded in the slow query log and profile collections

    auth?: Auth

    The auth settings for when connection to server.

    authMechanism?: AuthMechanism

    Specify the authentication mechanism that MongoDB will use to authenticate the connection.

    authMechanismProperties?: AuthMechanismProperties

    Specify properties for the specified authMechanism as a comma-separated list of colon-separated key-value pairs.

    @@ -119,10 +119,10 @@
    autoSelectFamilyAttemptTimeout?: number

    v18.13.0

    bsonRegExp?: boolean

    return BSON regular expressions as BSONRegExp instances.

    false

    -
    ca?: string | Buffer | (string | Buffer)[]

    Optionally override the trusted CA certificates. Default is to trust +

    ca?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike>)[]

    Optionally override the trusted CA certificates. Default is to trust the well-known CAs curated by Mozilla. Mozilla's CAs are completely replaced when CAs are explicitly specified using this option.

    -
    cert?: string | Buffer | (string | Buffer)[]

    Cert chains in PEM format. One cert chain should be provided per +

    cert?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike>)[]

    Cert chains in PEM format. One cert chain should be provided per private key. Each cert chain should consist of the PEM formatted certificate for a provided private key, followed by the PEM formatted intermediate certificates (if any), in order, and not @@ -131,7 +131,7 @@ be in the same order as their private keys in key. If the intermediate certificates are not provided, the peer will not be able to validate the certificate, and the handshake will fail.

    -
    checkKeys?: boolean

    the serializer will check if keys are valid.

    +
    checkKeys?: boolean

    the serializer will check if keys are valid.

    false

    checkServerIdentity?: ((hostname: string, cert: PeerCertificate) => Error | undefined)

    Type declaration

      • (hostname, cert): Error | undefined
      • Verifies the certificate cert is issued to hostname.

        Returns Error object, populating it with reason, host, and cert on @@ -149,14 +149,14 @@

        Parameters

        • hostname: string

          The host name or IP address to verify the certificate against.

        • cert: PeerCertificate

          A certificate object representing the peer's certificate.

        Returns Error | undefined

        v0.8.4

        -
    ciphers?: string

    Cipher suite specification, replacing the default. For more +

    ciphers?: string

    Cipher suite specification, replacing the default. For more information, see modifying the default cipher suite. Permitted ciphers can be obtained via tls.getCiphers(). Cipher names must be uppercased in order for OpenSSL to accept them.

    -
    compressors?: string | (
        | "none"
        | "snappy"
        | "zlib"
        | "zstd")[]

    An array or comma-delimited string of compressors to enable network compression for communication between this client and a mongod/mongos instance.

    +
    compressors?: string | (
        | "none"
        | "snappy"
        | "zlib"
        | "zstd")[]

    An array or comma-delimited string of compressors to enable network compression for communication between this client and a mongod/mongos instance.

    connectTimeoutMS?: number

    The time in milliseconds to attempt a connection before timing out.

    -
    crl?: string | Buffer | (string | Buffer)[]

    PEM formatted CRLs (Certificate Revocation Lists).

    -
    directConnection?: boolean

    Allow a driver to force a Single topology type with a connection string containing one host

    +
    crl?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike>)[]

    PEM formatted CRLs (Certificate Revocation Lists).

    +
    directConnection?: boolean

    Allow a driver to force a Single topology type with a connection string containing one host

    driverInfo?: DriverInfo

    Allows a wrapping driver to amend the client metadata generated by the driver to include information about the wrapping driver

    ecdhCurve?: string

    A string describing a named curve or a colon separated list of curve NIDs or names, for example P-521:P-384:P-256, to use for ECDH key @@ -165,7 +165,7 @@ recent releases, openssl ecparam -list_curves will also display the name and description of each available elliptic curve. Default: tls.DEFAULT_ECDH_CURVE.

    -
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    +
    enableUtf8Validation?: boolean

    Enable utf8 validation when deserializing BSON documents. Defaults to true.

    family?: number
    fieldsAsRaw?: Document

    allow to specify if there what fields we wish to return as unserialized raw buffer.

    null

    forceServerObjectId?: boolean

    Force server to assign _id values instead of driver

    @@ -176,7 +176,7 @@
    journal?: boolean

    The journal write concern

    Please use the writeConcern option instead

    keepAliveInitialDelay?: number

    Node.JS socket option to set the time the first keepalive probe is sent on an idle socket. Defaults to 120000ms

    -
    key?: string | Buffer | (string | Buffer | KeyObject)[]

    Private keys in PEM format. PEM allows the option of private keys +

    key?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike> | KeyObject)[]

    Private keys in PEM format. PEM allows the option of private keys being encrypted. Encrypted keys will be decrypted with options.passphrase. Multiple keys using different algorithms can be provided either as an array of unencrypted key strings or buffers, @@ -184,13 +184,13 @@ passphrase: ]}. The object form can only occur in an array. object.passphrase is optional. Encrypted keys will be decrypted with object.passphrase if provided, or options.passphrase if it is not.

    -
    loadBalanced?: boolean

    Instruct the driver it is connecting to a load balancer fronting a mongos like service

    +
    loadBalanced?: boolean

    Instruct the driver it is connecting to a load balancer fronting a mongos like service

    localAddress?: string
    localPort?: number
    localThresholdMS?: number

    The size (in milliseconds) of the latency window for selecting among multiple suitable MongoDB instances.

    lookup?: LookupFunction
    maxConnecting?: number

    The maximum number of connections that may be in the process of being established concurrently by the connection pool.

    maxIdleTimeMS?: number

    The maximum number of milliseconds that a connection can remain idle in the pool before being removed and closed.

    maxPoolSize?: number

    The maximum number of connections in the connection pool.

    maxStalenessSeconds?: number

    Specifies, in seconds, how stale a secondary can be before the client stops using it for read operations.

    -
    minDHSize?: number
    minHeartbeatFrequencyMS?: number

    Sets the minimum heartbeat frequency. In the event that the driver has to frequently re-check a server's availability, it will wait at least this long since the previous check to avoid wasted effort.

    +
    minDHSize?: number
    minHeartbeatFrequencyMS?: number

    Sets the minimum heartbeat frequency. In the event that the driver has to frequently re-check a server's availability, it will wait at least this long since the previous check to avoid wasted effort.

    minPoolSize?: number

    The minimum number of connections in the connection pool.

    mongodbLogComponentSeverities?: LogComponentSeveritiesClientOptions

    Enable logging level per component or use default to control any unset components.

    mongodbLogMaxDocumentLength?: number

    All BSON documents are stringified to EJSON. This controls the maximum length of those strings. @@ -199,7 +199,7 @@

    monitorCommands?: boolean

    Enable command monitoring for this client

    noDelay?: boolean

    TCP Connection no delay

    passphrase?: string

    Shared passphrase used for a single private key and/or a PFX.

    -
    pfx?: string | Buffer | (string | Buffer | PxfObject)[]

    PFX or PKCS12 encoded private key and certificate chain. pfx is an +

    pfx?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike> | PxfObject)[]

    PFX or PKCS12 encoded private key and certificate chain. pfx is an alternative to providing key and cert individually. PFX is usually encrypted, if it is, passphrase will be used to decrypt it. Multiple PFX can be provided either as an array of unencrypted PFX buffers, @@ -207,7 +207,7 @@ passphrase: ]}. The object form can only occur in an array. object.passphrase is optional. Encrypted PFX will be decrypted with object.passphrase if provided, or options.passphrase if it is not.

    -
    pkFactory?: PkFactory

    A primary key factory function for generation of custom _id keys

    +
    pkFactory?: PkFactory

    A primary key factory function for generation of custom _id keys

    promoteBuffers?: boolean

    when deserializing a Binary will return it as a node.js Buffer instance.

    false

    promoteLongs?: boolean

    when deserializing a Long will fit it into a Number if it's smaller than 53 bits.

    @@ -239,11 +239,11 @@
    replicaSet?: string

    Specifies the name of the replica set, if the mongod is a member of a replica set.

    +
    replicaSet?: string

    Specifies the name of the replica set, if the mongod is a member of a replica set.

    retryReads?: boolean

    Enables retryable reads.

    retryWrites?: boolean

    Enable retryable writes.

    secureContext?: SecureContext

    An optional TLS context object from tls.createSecureContext()

    -
    secureProtocol?: string

    Legacy mechanism to select the TLS protocol version to use, it does +

    secureProtocol?: string

    Legacy mechanism to select the TLS protocol version to use, it does not support independent control of the minimum and maximum version, and does not support limiting the protocol to TLSv1.3. Use minVersion and maxVersion instead. The possible values are listed as @@ -252,13 +252,13 @@

    serializeFunctions?: boolean

    serialize the javascript functions

    +
    serializeFunctions?: boolean

    serialize the javascript functions

    false

    serverApi?: "1" | ServerApi

    Server API version

    serverMonitoringMode?: ServerMonitoringMode

    Instructs the driver monitors to use a specific monitoring mode

    -
    servername?: string
    serverSelectionTimeoutMS?: number

    Specifies how long (in milliseconds) to block for server selection before throwing an exception.

    -
    session?: Buffer

    An optional Buffer instance containing a TLS session.

    -
    socketTimeoutMS?: number

    The time in milliseconds to attempt a send or receive on a socket before the attempt times out.

    +
    servername?: string
    serverSelectionTimeoutMS?: number

    Specifies how long (in milliseconds) to block for server selection before throwing an exception.

    +
    session?: Buffer<ArrayBufferLike>

    An optional Buffer instance containing a TLS session.

    +
    socketTimeoutMS?: number

    The time in milliseconds to attempt a send or receive on a socket before the attempt times out.

    srvMaxHosts?: number

    The maximum number of hosts to connect to when using an srv connection string, a setting of 0 means unlimited hosts

    srvServiceName?: string

    Modifies the srv URI to look like:

    _{srvServiceName}._tcp.{hostname}.{domainname}

    @@ -283,5 +283,5 @@
    wtimeoutMS?: number

    The write concern timeout

    Please use the writeConcern option instead

    -
    zlibCompressionLevel?:
        | 0
        | 5
        | 1
        | 3
        | 9
        | 4
        | 2
        | 8
        | 7
        | 6

    An integer that specifies the compression level if using zlib for network compression.

    +
    zlibCompressionLevel?:
        | 0
        | 5
        | 1
        | 3
        | 9
        | 4
        | 2
        | 8
        | 6
        | 7

    An integer that specifies the compression level if using zlib for network compression.

    diff --git a/docs/Next/interfaces/MongoNetworkErrorOptions.html b/docs/Next/interfaces/MongoNetworkErrorOptions.html index 7373abfc252..b688bc725c3 100644 --- a/docs/Next/interfaces/MongoNetworkErrorOptions.html +++ b/docs/Next/interfaces/MongoNetworkErrorOptions.html @@ -1,4 +1,4 @@ -MongoNetworkErrorOptions | mongodb

    Interface MongoNetworkErrorOptions

    interface MongoNetworkErrorOptions {
        beforeHandshake?: boolean;
        cause?: Error;
    }

    Properties

    beforeHandshake? +MongoNetworkErrorOptions | mongodb

    Interface MongoNetworkErrorOptions

    interface MongoNetworkErrorOptions {
        beforeHandshake?: boolean;
        cause?: Error;
    }

    Properties

    beforeHandshake?: boolean

    Indicates the timeout happened before a connection handshake completed

    -
    cause?: Error
    +
    cause?: Error
    diff --git a/docs/Next/interfaces/MongoOptions.html b/docs/Next/interfaces/MongoOptions.html index 82c5b3ee108..6168cab695a 100644 --- a/docs/Next/interfaces/MongoOptions.html +++ b/docs/Next/interfaces/MongoOptions.html @@ -11,7 +11,7 @@
  • DNS SRV records and TXT records
  • Not all options may be present after client construction as some are obtained from asynchronous operations.

    -
    interface MongoOptions {
        allowPartialTrustChain?: boolean;
        ALPNProtocols?: Uint8Array | string[] | Uint8Array[];
        appName?: string;
        autoEncryption: AutoEncryptionOptions;
        autoSelectFamily?: boolean;
        autoSelectFamilyAttemptTimeout?: number;
        ca?: string | Buffer | (string | Buffer)[];
        cert?: string | Buffer | (string | Buffer)[];
        checkServerIdentity?: ((hostname: string, cert: PeerCertificate) => Error | undefined);
        ciphers?: string;
        compressors: (
            | "none"
            | "snappy"
            | "zlib"
            | "zstd")[];
        connectTimeoutMS: number;
        credentials?: MongoCredentials;
        crl?: string | Buffer | (string | Buffer)[];
        dbName: string;
        directConnection: boolean;
        driverInfo: DriverInfo;
        ecdhCurve?: string;
        family?: number;
        forceServerObjectId: boolean;
        heartbeatFrequencyMS: number;
        hints?: number;
        hosts: HostAddress[];
        keepAliveInitialDelay?: number;
        key?: string | Buffer | (string | Buffer | KeyObject)[];
        loadBalanced: boolean;
        localAddress?: string;
        localPort?: number;
        localThresholdMS: number;
        lookup?: LookupFunction;
        maxConnecting: number;
        maxIdleTimeMS: number;
        maxPoolSize: number;
        metadata: ClientMetadata;
        minDHSize?: number;
        minHeartbeatFrequencyMS: number;
        minPoolSize: number;
        monitorCommands: boolean;
        noDelay: boolean;
        passphrase?: string;
        pfx?: string | Buffer | (string | Buffer | PxfObject)[];
        pkFactory: PkFactory;
        proxyHost?: string;
        proxyPassword?: string;
        proxyPort?: number;
        proxyUsername?: string;
        raw: boolean;
        readConcern: ReadConcern;
        readPreference: ReadPreference;
        rejectUnauthorized?: boolean;
        replicaSet: string;
        retryReads: boolean;
        retryWrites: boolean;
        secureContext?: SecureContext;
        secureProtocol?: string;
        serverApi: ServerApi;
        serverMonitoringMode: ServerMonitoringMode;
        servername?: string;
        serverSelectionTimeoutMS: number;
        session?: Buffer;
        socketTimeoutMS: number;
        srvHost?: string;
        srvMaxHosts: number;
        srvServiceName: string;
        timeoutMS?: number;
        tls: boolean;
        tlsAllowInvalidCertificates: boolean;
        tlsAllowInvalidHostnames: boolean;
        tlsCAFile?: string;
        tlsCertificateKeyFile?: string;
        tlsCRLFile?: string;
        tlsInsecure: boolean;
        waitQueueTimeoutMS: number;
        writeConcern: WriteConcern;
        zlibCompressionLevel:
            | 0
            | 1
            | 2
            | 3
            | 4
            | 5
            | 6
            | 7
            | 8
            | 9;
    }

    Hierarchy (view full)

    • Required<Pick<MongoClientOptions,
          | "autoEncryption"
          | "connectTimeoutMS"
          | "directConnection"
          | "driverInfo"
          | "forceServerObjectId"
          | "minHeartbeatFrequencyMS"
          | "heartbeatFrequencyMS"
          | "localThresholdMS"
          | "maxConnecting"
          | "maxIdleTimeMS"
          | "maxPoolSize"
          | "minPoolSize"
          | "monitorCommands"
          | "noDelay"
          | "pkFactory"
          | "raw"
          | "replicaSet"
          | "retryReads"
          | "retryWrites"
          | "serverSelectionTimeoutMS"
          | "socketTimeoutMS"
          | "srvMaxHosts"
          | "srvServiceName"
          | "tlsAllowInvalidCertificates"
          | "tlsAllowInvalidHostnames"
          | "tlsInsecure"
          | "waitQueueTimeoutMS"
          | "zlibCompressionLevel">>
    • SupportedNodeConnectionOptions
      • MongoOptions

    Properties

    interface MongoOptions {
        allowPartialTrustChain?: boolean;
        ALPNProtocols?: Uint8Array<ArrayBufferLike> | string[] | Uint8Array<ArrayBufferLike>[];
        appName?: string;
        autoEncryption: AutoEncryptionOptions;
        autoSelectFamily?: boolean;
        autoSelectFamilyAttemptTimeout?: number;
        ca?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike>)[];
        cert?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike>)[];
        checkServerIdentity?: ((hostname: string, cert: PeerCertificate) => Error | undefined);
        ciphers?: string;
        compressors: (
            | "none"
            | "snappy"
            | "zlib"
            | "zstd")[];
        connectTimeoutMS: number;
        credentials?: MongoCredentials;
        crl?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike>)[];
        dbName: string;
        directConnection: boolean;
        driverInfo: DriverInfo;
        ecdhCurve?: string;
        family?: number;
        forceServerObjectId: boolean;
        heartbeatFrequencyMS: number;
        hints?: number;
        hosts: HostAddress[];
        keepAliveInitialDelay?: number;
        key?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike> | KeyObject)[];
        loadBalanced: boolean;
        localAddress?: string;
        localPort?: number;
        localThresholdMS: number;
        lookup?: LookupFunction;
        maxConnecting: number;
        maxIdleTimeMS: number;
        maxPoolSize: number;
        metadata: ClientMetadata;
        minDHSize?: number;
        minHeartbeatFrequencyMS: number;
        minPoolSize: number;
        monitorCommands: boolean;
        noDelay: boolean;
        passphrase?: string;
        pfx?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike> | PxfObject)[];
        pkFactory: PkFactory;
        proxyHost?: string;
        proxyPassword?: string;
        proxyPort?: number;
        proxyUsername?: string;
        raw: boolean;
        readConcern: ReadConcern;
        readPreference: ReadPreference;
        rejectUnauthorized?: boolean;
        replicaSet: string;
        retryReads: boolean;
        retryWrites: boolean;
        secureContext?: SecureContext;
        secureProtocol?: string;
        serverApi: ServerApi;
        serverMonitoringMode: ServerMonitoringMode;
        servername?: string;
        serverSelectionTimeoutMS: number;
        session?: Buffer<ArrayBufferLike>;
        socketTimeoutMS: number;
        srvHost?: string;
        srvMaxHosts: number;
        srvServiceName: string;
        timeoutMS?: number;
        tls: boolean;
        tlsAllowInvalidCertificates: boolean;
        tlsAllowInvalidHostnames: boolean;
        tlsCAFile?: string;
        tlsCertificateKeyFile?: string;
        tlsCRLFile?: string;
        tlsInsecure: boolean;
        waitQueueTimeoutMS: number;
        writeConcern: WriteConcern;
        zlibCompressionLevel:
            | 0
            | 1
            | 2
            | 3
            | 4
            | 5
            | 6
            | 7
            | 8
            | 9;
    }

    Hierarchy (view full)

    • Required<Pick<MongoClientOptions,
          | "autoEncryption"
          | "connectTimeoutMS"
          | "directConnection"
          | "driverInfo"
          | "forceServerObjectId"
          | "minHeartbeatFrequencyMS"
          | "heartbeatFrequencyMS"
          | "localThresholdMS"
          | "maxConnecting"
          | "maxIdleTimeMS"
          | "maxPoolSize"
          | "minPoolSize"
          | "monitorCommands"
          | "noDelay"
          | "pkFactory"
          | "raw"
          | "replicaSet"
          | "retryReads"
          | "retryWrites"
          | "serverSelectionTimeoutMS"
          | "socketTimeoutMS"
          | "srvMaxHosts"
          | "srvServiceName"
          | "tlsAllowInvalidCertificates"
          | "tlsAllowInvalidHostnames"
          | "tlsInsecure"
          | "waitQueueTimeoutMS"
          | "zlibCompressionLevel">>
    • SupportedNodeConnectionOptions
      • MongoOptions

    Properties

    allowPartialTrustChain?: boolean

    Treat intermediate (non-self-signed) certificates in the trust CA certificate list as trusted.

    v22.9.0, v20.18.0

    -
    ALPNProtocols?: Uint8Array | string[] | Uint8Array[]

    An array of strings or a Buffer naming possible ALPN protocols. +

    ALPNProtocols?: Uint8Array<ArrayBufferLike> | string[] | Uint8Array<ArrayBufferLike>[]

    An array of strings or a Buffer naming possible ALPN protocols. (Protocols should be ordered by their priority.)

    -
    appName?: string
    autoEncryption: AutoEncryptionOptions

    Optionally enable in-use auto encryption

    +
    appName?: string
    autoEncryption: AutoEncryptionOptions

    Optionally enable in-use auto encryption

    Automatic encryption is an enterprise only feature that only applies to operations on a collection. Automatic encryption is not supported for operations on a database or view, and operations that are not bypassed will result in error (see libmongocrypt: Auto Encryption Allow-List). To bypass automatic encryption for all operations, set bypassAutoEncryption=true in AutoEncryptionOpts.

    Automatic encryption requires the authenticated user to have the listCollections privilege action.

    @@ -103,10 +103,10 @@

    If an internal MongoClient is created, it is configured with the same options as the parent MongoClient except minPoolSize is set to 0 and AutoEncryptionOptions is omitted.

    autoSelectFamily?: boolean

    v18.13.0

    autoSelectFamilyAttemptTimeout?: number

    v18.13.0

    -
    ca?: string | Buffer | (string | Buffer)[]

    Optionally override the trusted CA certificates. Default is to trust +

    ca?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike>)[]

    Optionally override the trusted CA certificates. Default is to trust the well-known CAs curated by Mozilla. Mozilla's CAs are completely replaced when CAs are explicitly specified using this option.

    -
    cert?: string | Buffer | (string | Buffer)[]

    Cert chains in PEM format. One cert chain should be provided per +

    cert?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike>)[]

    Cert chains in PEM format. One cert chain should be provided per private key. Each cert chain should consist of the PEM formatted certificate for a provided private key, followed by the PEM formatted intermediate certificates (if any), in order, and not @@ -115,7 +115,7 @@ be in the same order as their private keys in key. If the intermediate certificates are not provided, the peer will not be able to validate the certificate, and the handshake will fail.

    -
    checkServerIdentity?: ((hostname: string, cert: PeerCertificate) => Error | undefined)

    Type declaration

      • (hostname, cert): Error | undefined
      • Verifies the certificate cert is issued to hostname.

        +
    checkServerIdentity?: ((hostname: string, cert: PeerCertificate) => Error | undefined)

    Type declaration

      • (hostname, cert): Error | undefined
      • Verifies the certificate cert is issued to hostname.

        Returns Error object, populating it with reason, host, and cert on failure. On success, returns undefined.

        This function is intended to be used in combination with thecheckServerIdentity option that can be passed to connect and as @@ -131,14 +131,14 @@

        Parameters

        • hostname: string

          The host name or IP address to verify the certificate against.

        • cert: PeerCertificate

          A certificate object representing the peer's certificate.

        Returns Error | undefined

        v0.8.4

        -
    ciphers?: string

    Cipher suite specification, replacing the default. For more +

    ciphers?: string

    Cipher suite specification, replacing the default. For more information, see modifying the default cipher suite. Permitted ciphers can be obtained via tls.getCiphers(). Cipher names must be uppercased in order for OpenSSL to accept them.

    -
    compressors: (
        | "none"
        | "snappy"
        | "zlib"
        | "zstd")[]
    connectTimeoutMS: number

    The time in milliseconds to attempt a connection before timing out.

    -
    credentials?: MongoCredentials
    crl?: string | Buffer | (string | Buffer)[]

    PEM formatted CRLs (Certificate Revocation Lists).

    -
    dbName: string
    directConnection: boolean

    Allow a driver to force a Single topology type with a connection string containing one host

    -
    driverInfo: DriverInfo

    Allows a wrapping driver to amend the client metadata generated by the driver to include information about the wrapping driver

    +
    compressors: (
        | "none"
        | "snappy"
        | "zlib"
        | "zstd")[]
    connectTimeoutMS: number

    The time in milliseconds to attempt a connection before timing out.

    +
    credentials?: MongoCredentials
    crl?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike>)[]

    PEM formatted CRLs (Certificate Revocation Lists).

    +
    dbName: string
    directConnection: boolean

    Allow a driver to force a Single topology type with a connection string containing one host

    +
    driverInfo: DriverInfo

    Allows a wrapping driver to amend the client metadata generated by the driver to include information about the wrapping driver

    ecdhCurve?: string

    A string describing a named curve or a colon separated list of curve NIDs or names, for example P-521:P-384:P-256, to use for ECDH key agreement. Set to auto to select the curve automatically. Use @@ -146,10 +146,10 @@ recent releases, openssl ecparam -list_curves will also display the name and description of each available elliptic curve. Default: tls.DEFAULT_ECDH_CURVE.

    -
    family?: number
    forceServerObjectId: boolean

    Force server to assign _id values instead of driver

    +
    family?: number
    forceServerObjectId: boolean

    Force server to assign _id values instead of driver

    heartbeatFrequencyMS: number

    heartbeatFrequencyMS controls when the driver checks the state of the MongoDB deployment. Specify the interval (in milliseconds) between checks, counted from the end of the previous check until the beginning of the next one.

    -
    hints?: number
    hosts: HostAddress[]
    keepAliveInitialDelay?: number

    Node.JS socket option to set the time the first keepalive probe is sent on an idle socket. Defaults to 120000ms

    -
    key?: string | Buffer | (string | Buffer | KeyObject)[]

    Private keys in PEM format. PEM allows the option of private keys +

    hints?: number
    hosts: HostAddress[]
    keepAliveInitialDelay?: number

    Node.JS socket option to set the time the first keepalive probe is sent on an idle socket. Defaults to 120000ms

    +
    key?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike> | KeyObject)[]

    Private keys in PEM format. PEM allows the option of private keys being encrypted. Encrypted keys will be decrypted with options.passphrase. Multiple keys using different algorithms can be provided either as an array of unencrypted key strings or buffers, @@ -157,16 +157,16 @@ passphrase: ]}. The object form can only occur in an array. object.passphrase is optional. Encrypted keys will be decrypted with object.passphrase if provided, or options.passphrase if it is not.

    -
    loadBalanced: boolean
    localAddress?: string
    localPort?: number
    localThresholdMS: number

    The size (in milliseconds) of the latency window for selecting among multiple suitable MongoDB instances.

    +
    loadBalanced: boolean
    localAddress?: string
    localPort?: number
    localThresholdMS: number

    The size (in milliseconds) of the latency window for selecting among multiple suitable MongoDB instances.

    lookup?: LookupFunction
    maxConnecting: number

    The maximum number of connections that may be in the process of being established concurrently by the connection pool.

    maxIdleTimeMS: number

    The maximum number of milliseconds that a connection can remain idle in the pool before being removed and closed.

    maxPoolSize: number

    The maximum number of connections in the connection pool.

    -
    metadata: ClientMetadata
    minDHSize?: number
    minHeartbeatFrequencyMS: number

    Sets the minimum heartbeat frequency. In the event that the driver has to frequently re-check a server's availability, it will wait at least this long since the previous check to avoid wasted effort.

    +
    metadata: ClientMetadata
    minDHSize?: number
    minHeartbeatFrequencyMS: number

    Sets the minimum heartbeat frequency. In the event that the driver has to frequently re-check a server's availability, it will wait at least this long since the previous check to avoid wasted effort.

    minPoolSize: number

    The minimum number of connections in the connection pool.

    monitorCommands: boolean

    Enable command monitoring for this client

    noDelay: boolean

    TCP Connection no delay

    passphrase?: string

    Shared passphrase used for a single private key and/or a PFX.

    -
    pfx?: string | Buffer | (string | Buffer | PxfObject)[]

    PFX or PKCS12 encoded private key and certificate chain. pfx is an +

    pfx?: string | Buffer<ArrayBufferLike> | (string | Buffer<ArrayBufferLike> | PxfObject)[]

    PFX or PKCS12 encoded private key and certificate chain. pfx is an alternative to providing key and cert individually. PFX is usually encrypted, if it is, passphrase will be used to decrypt it. Multiple PFX can be provided either as an array of unencrypted PFX buffers, @@ -174,8 +174,8 @@ passphrase: ]}. The object form can only occur in an array. object.passphrase is optional. Encrypted PFX will be decrypted with object.passphrase if provided, or options.passphrase if it is not.

    -
    pkFactory: PkFactory

    A primary key factory function for generation of custom _id keys

    -
    proxyHost?: string
    proxyPassword?: string
    proxyPort?: number
    proxyUsername?: string
    raw: boolean

    Enabling the raw option will return a Node.js Buffer +

    pkFactory: PkFactory

    A primary key factory function for generation of custom _id keys

    +
    proxyHost?: string
    proxyPassword?: string
    proxyPort?: number
    proxyUsername?: string
    raw: boolean

    Enabling the raw option will return a Node.js Buffer which is allocated using allocUnsafe API. See this section from the Node.js Docs here for more detail about what "unsafe" refers to in this context. @@ -186,17 +186,17 @@

    Please note there is a known limitation where this option cannot be used at the MongoClient level (see NODE-3946). It does correctly work at Db, Collection, and per operation the same as other BSON options work.

    -
    readConcern: ReadConcern
    readPreference: ReadPreference
    rejectUnauthorized?: boolean

    If true the server will reject any connection which is not +

    readConcern: ReadConcern
    readPreference: ReadPreference
    rejectUnauthorized?: boolean

    If true the server will reject any connection which is not authorized with the list of supplied CAs. This option only has an effect if requestCert is true.

    true
     
    -
    replicaSet: string

    Specifies the name of the replica set, if the mongod is a member of a replica set.

    +
    replicaSet: string

    Specifies the name of the replica set, if the mongod is a member of a replica set.

    retryReads: boolean

    Enables retryable reads.

    retryWrites: boolean

    Enable retryable writes.

    secureContext?: SecureContext

    An optional TLS context object from tls.createSecureContext()

    -
    secureProtocol?: string

    Legacy mechanism to select the TLS protocol version to use, it does +

    secureProtocol?: string

    Legacy mechanism to select the TLS protocol version to use, it does not support independent control of the minimum and maximum version, and does not support limiting the protocol to TLSv1.3. Use minVersion and maxVersion instead. The possible values are listed as @@ -205,14 +205,14 @@

    serverApi: ServerApi
    serverMonitoringMode: ServerMonitoringMode
    servername?: string
    serverSelectionTimeoutMS: number

    Specifies how long (in milliseconds) to block for server selection before throwing an exception.

    -
    session?: Buffer

    An optional Buffer instance containing a TLS session.

    -
    socketTimeoutMS: number

    The time in milliseconds to attempt a send or receive on a socket before the attempt times out.

    -
    srvHost?: string
    srvMaxHosts: number

    The maximum number of hosts to connect to when using an srv connection string, a setting of 0 means unlimited hosts

    +
    serverApi: ServerApi
    serverMonitoringMode: ServerMonitoringMode
    servername?: string
    serverSelectionTimeoutMS: number

    Specifies how long (in milliseconds) to block for server selection before throwing an exception.

    +
    session?: Buffer<ArrayBufferLike>

    An optional Buffer instance containing a TLS session.

    +
    socketTimeoutMS: number

    The time in milliseconds to attempt a send or receive on a socket before the attempt times out.

    +
    srvHost?: string
    srvMaxHosts: number

    The maximum number of hosts to connect to when using an srv connection string, a setting of 0 means unlimited hosts

    srvServiceName: string

    Modifies the srv URI to look like:

    _{srvServiceName}._tcp.{hostname}.{domainname}

    Querying this DNS URI is expected to respond with SRV records

    -
    timeoutMS?: number
    tls: boolean

    NOTE ABOUT TLS Options

    If tls is provided as an option, it is equivalent to setting the ssl option.

    +
    timeoutMS?: number
    tls: boolean

    NOTE ABOUT TLS Options

    If tls is provided as an option, it is equivalent to setting the ssl option.

    NodeJS native TLS options are passed through to the socket and retain their original types.

    @@ -275,9 +275,9 @@
    -
    +
    diff --git a/docs/Next/types/ChangeStreamDocument.html b/docs/Next/types/ChangeStreamDocument.html index 235303ea941..962a4247c9a 100644 --- a/docs/Next/types/ChangeStreamDocument.html +++ b/docs/Next/types/ChangeStreamDocument.html @@ -1 +1 @@ -ChangeStreamDocument | mongodb
    +ChangeStreamDocument | mongodb
    diff --git a/docs/Next/types/ChangeStreamEvents.html b/docs/Next/types/ChangeStreamEvents.html index 618a15d6ee6..c9539a097fb 100644 --- a/docs/Next/types/ChangeStreamEvents.html +++ b/docs/Next/types/ChangeStreamEvents.html @@ -1,4 +1,4 @@ -ChangeStreamEvents | mongodb

    Type Alias ChangeStreamEvents<TSchema, TChange>

    ChangeStreamEvents<TSchema, TChange>: {
        change(change: TChange): void;
        close(): void;
        end(): void;
        error(error: Error): void;
        init(response: any): void;
        more(response?: any): void;
        response(): void;
        resumeTokenChanged(token: unknown): void;
    }

    Type Parameters

    Type declaration

    • change:function
    • close:function
      • Returns void

        Note that the close event is currently emitted whenever the internal ChangeStreamCursor +ChangeStreamEvents | mongodb

        Type Alias ChangeStreamEvents<TSchema, TChange>

        ChangeStreamEvents<TSchema, TChange>: {
            change(change: TChange): void;
            close(): void;
            end(): void;
            error(error: Error): void;
            init(response: any): void;
            more(response?: any): void;
            response(): void;
            resumeTokenChanged(token: unknown): void;
        }

        Type Parameters

        Type declaration

        • change:function
        • close:function
          • Returns void

            Note that the close event is currently emitted whenever the internal ChangeStreamCursor instance is closed, which can occur multiple times for a given ChangeStream instance.

            TODO(NODE-6434): address this issue in NODE-6434

            -
        • end:function
        • error:function
        • init:function
        • more:function
        • response:function
        • resumeTokenChanged:function
        +
    • end:function
    • error:function
    • init:function
    • more:function
    • response:function
    • resumeTokenChanged:function
    diff --git a/docs/Next/types/Compressor.html b/docs/Next/types/Compressor.html index 2a2ee90f66c..0851888dc72 100644 --- a/docs/Next/types/Compressor.html +++ b/docs/Next/types/Compressor.html @@ -1 +1 @@ -Compressor | mongodb
    +Compressor | mongodb
    diff --git a/docs/Next/types/CompressorName.html b/docs/Next/types/CompressorName.html index 7070b6ec840..e8993ad8af9 100644 --- a/docs/Next/types/CompressorName.html +++ b/docs/Next/types/CompressorName.html @@ -1 +1 @@ -CompressorName | mongodb

    Type Alias CompressorName

    CompressorName: keyof typeof Compressor
    +CompressorName | mongodb

    Type Alias CompressorName

    CompressorName: keyof typeof Compressor
    diff --git a/docs/Next/types/ConnectionPoolEvents.html b/docs/Next/types/ConnectionPoolEvents.html index 20f9ca9ba43..415a9949ff1 100644 --- a/docs/Next/types/ConnectionPoolEvents.html +++ b/docs/Next/types/ConnectionPoolEvents.html @@ -1 +1 @@ -ConnectionPoolEvents | mongodb

    Type Alias ConnectionPoolEvents

    ConnectionPoolEvents: {
        connectionCheckedIn(event: ConnectionCheckedInEvent): void;
        connectionCheckedOut(event: ConnectionCheckedOutEvent): void;
        connectionCheckOutFailed(event: ConnectionCheckOutFailedEvent): void;
        connectionCheckOutStarted(event: ConnectionCheckOutStartedEvent): void;
        connectionClosed(event: ConnectionClosedEvent): void;
        connectionCreated(event: ConnectionCreatedEvent): void;
        connectionPoolCleared(event: ConnectionPoolClearedEvent): void;
        connectionPoolClosed(event: ConnectionPoolClosedEvent): void;
        connectionPoolCreated(event: ConnectionPoolCreatedEvent): void;
        connectionPoolReady(event: ConnectionPoolReadyEvent): void;
        connectionReady(event: ConnectionReadyEvent): void;
    } & Omit<ConnectionEvents, "close" | "message">
    +ConnectionPoolEvents | mongodb

    Type Alias ConnectionPoolEvents

    ConnectionPoolEvents: {
        connectionCheckedIn(event: ConnectionCheckedInEvent): void;
        connectionCheckedOut(event: ConnectionCheckedOutEvent): void;
        connectionCheckOutFailed(event: ConnectionCheckOutFailedEvent): void;
        connectionCheckOutStarted(event: ConnectionCheckOutStartedEvent): void;
        connectionClosed(event: ConnectionClosedEvent): void;
        connectionCreated(event: ConnectionCreatedEvent): void;
        connectionPoolCleared(event: ConnectionPoolClearedEvent): void;
        connectionPoolClosed(event: ConnectionPoolClosedEvent): void;
        connectionPoolCreated(event: ConnectionPoolCreatedEvent): void;
        connectionPoolReady(event: ConnectionPoolReadyEvent): void;
        connectionReady(event: ConnectionReadyEvent): void;
    } & Omit<ConnectionEvents, "close" | "message">
    diff --git a/docs/Next/types/OIDCCallbackFunction.html b/docs/Next/types/OIDCCallbackFunction.html index 3af8bb34f80..e3fc35de71a 100644 --- a/docs/Next/types/OIDCCallbackFunction.html +++ b/docs/Next/types/OIDCCallbackFunction.html @@ -1,2 +1,2 @@ OIDCCallbackFunction | mongodb

    Type Alias OIDCCallbackFunction

    OIDCCallbackFunction: ((params: OIDCCallbackParams) => Promise<OIDCResponse>)

    The signature of the human or machine callback functions.

    -
    +
    diff --git a/docs/Next/variables/AutoEncryptionLoggerLevel-1.html b/docs/Next/variables/AutoEncryptionLoggerLevel-1.html index 28ccead4906..5d1573f7510 100644 --- a/docs/Next/variables/AutoEncryptionLoggerLevel-1.html +++ b/docs/Next/variables/AutoEncryptionLoggerLevel-1.html @@ -1 +1 @@ -AutoEncryptionLoggerLevel | mongodb

    Variable AutoEncryptionLoggerLevelConst

    AutoEncryptionLoggerLevel: Readonly<{
        Error: 1;
        FatalError: 0;
        Info: 3;
        Trace: 4;
        Warning: 2;
    }> = ...
    +AutoEncryptionLoggerLevel | mongodb

    Variable AutoEncryptionLoggerLevelConst

    AutoEncryptionLoggerLevel: Readonly<{
        Error: 1;
        FatalError: 0;
        Info: 3;
        Trace: 4;
        Warning: 2;
    }> = ...
    diff --git a/docs/Next/variables/Compressor-1.html b/docs/Next/variables/Compressor-1.html index 53d97b38606..0588cce59d9 100644 --- a/docs/Next/variables/Compressor-1.html +++ b/docs/Next/variables/Compressor-1.html @@ -1 +1 @@ -Compressor | mongodb

    Variable CompressorConst

    Compressor: Readonly<{
        none: 0;
        snappy: 1;
        zlib: 2;
        zstd: 3;
    }> = ...
    +Compressor | mongodb

    Variable CompressorConst

    Compressor: Readonly<{
        none: 0;
        snappy: 1;
        zlib: 2;
        zstd: 3;
    }> = ...
    diff --git a/docs/Next/variables/MONGO_CLIENT_EVENTS.html b/docs/Next/variables/MONGO_CLIENT_EVENTS.html index 52a3d491af3..39516c3555d 100644 --- a/docs/Next/variables/MONGO_CLIENT_EVENTS.html +++ b/docs/Next/variables/MONGO_CLIENT_EVENTS.html @@ -1 +1 @@ -MONGO_CLIENT_EVENTS | mongodb

    Variable MONGO_CLIENT_EVENTSConst

    MONGO_CLIENT_EVENTS: readonly ["connectionPoolCreated", "connectionPoolReady", "connectionPoolCleared", "connectionPoolClosed", "connectionCreated", "connectionReady", "connectionClosed", "connectionCheckOutStarted", "connectionCheckOutFailed", "connectionCheckedOut", "connectionCheckedIn", "commandStarted", "commandSucceeded", "commandFailed", "serverOpening", "serverClosed", "serverDescriptionChanged", "topologyOpening", "topologyClosed", "topologyDescriptionChanged", "error", "timeout", "close", "serverHeartbeatStarted", "serverHeartbeatSucceeded", "serverHeartbeatFailed"] = ...
    +MONGO_CLIENT_EVENTS | mongodb

    Variable MONGO_CLIENT_EVENTSConst

    MONGO_CLIENT_EVENTS: readonly ["connectionPoolCreated", "connectionPoolReady", "connectionPoolCleared", "connectionPoolClosed", "connectionCreated", "connectionReady", "connectionClosed", "connectionCheckOutStarted", "connectionCheckOutFailed", "connectionCheckedOut", "connectionCheckedIn", "commandStarted", "commandSucceeded", "commandFailed", "serverOpening", "serverClosed", "serverDescriptionChanged", "topologyOpening", "topologyClosed", "topologyDescriptionChanged", "error", "timeout", "close", "serverHeartbeatStarted", "serverHeartbeatSucceeded", "serverHeartbeatFailed"] = ...
    diff --git a/docs/categories/index.xml b/docs/categories/index.xml index e8d6887ccb7..3f54c6ee7c1 100644 --- a/docs/categories/index.xml +++ b/docs/categories/index.xml @@ -4,7 +4,7 @@ Categories on MongoDB Node.js Driver /node-mongodb-native/categories/ Recent content in Categories on MongoDB Node.js Driver - Hugo + Hugo -- gohugo.io en-us diff --git a/docs/index.html b/docs/index.html index 96da97976a8..8deb5d0ab57 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,7 +1,7 @@ - + diff --git a/docs/index.xml b/docs/index.xml index a7874ae5b97..12ceb7dcf4a 100644 --- a/docs/index.xml +++ b/docs/index.xml @@ -4,7 +4,7 @@ MongoDB Node.js Driver /node-mongodb-native/ Recent content on MongoDB Node.js Driver - Hugo + Hugo -- gohugo.io en-us diff --git a/docs/tags/index.xml b/docs/tags/index.xml index 666ebe0f57c..cfa1bc99ebb 100644 --- a/docs/tags/index.xml +++ b/docs/tags/index.xml @@ -4,7 +4,7 @@ Tags on MongoDB Node.js Driver /node-mongodb-native/tags/ Recent content in Tags on MongoDB Node.js Driver - Hugo + Hugo -- gohugo.io en-us