Skip to content

util/logging.ts: Add support for logging #669

util/logging.ts: Add support for logging

util/logging.ts: Add support for logging #669

GitHub Actions / Jest Tests 22 succeeded Dec 4, 2024 in 0s

382 passed, 0 failed and 1 skipped

Tests passed successfully

βœ…Β reports/jest-junit.xml

383 tests were completed in 15s with 382 passed, 0 failed and 1 skipped.

Test suite Passed Failed Skipped Time
tests/functional/client-configuration.test.ts 25βœ… 479ms
tests/functional/feed-client-configuration.test.ts 15βœ… 128ms
tests/functional/feed-client.test.ts 7βœ… 182ms
tests/functional/stream-client-configuration.test.ts 9βœ… 102ms
tests/integration/client-last-txn-tracking.test.ts 3βœ… 510ms
tests/integration/doc.test.ts 8βœ… 417ms
tests/integration/existing-collection.test.ts 1βœ… 577ms
tests/integration/feed.test.ts 11βœ… 3s
tests/integration/query-limits.test.ts 1βšͺ 97ms
tests/integration/query-typings.test.ts 8βœ… 293ms
tests/integration/query.test.ts 32βœ… 9s
tests/integration/schema-version.test.ts 1βœ… 299ms
tests/integration/set.test.ts 12βœ… 786ms
tests/integration/stream.test.ts 16βœ… 14s
tests/integration/template-format.test.ts 32βœ… 516ms
tests/unit/client.test.ts 4βœ… 152ms
tests/unit/datetime.test.ts 28βœ… 88ms
tests/unit/doc.test.ts 10βœ… 133ms
tests/unit/error.test.ts 53βœ… 151ms
tests/unit/fetch-client.test.ts 6βœ… 293ms
tests/unit/node-http2-client.test.ts 3βœ… 86ms
tests/unit/package-verison.test.ts 1βœ… 134ms
tests/unit/query-builder.test.ts 12βœ… 126ms
tests/unit/query.test.ts 14βœ… 5s
tests/unit/retryable.test.ts 4βœ… 397ms
tests/unit/set.test.ts 11βœ… 118ms
tests/unit/tagged-format.test.ts 56βœ… 6s

βœ…Β tests/functional/client-configuration.test.ts

ClientConfiguration
  βœ… Client exposes a default client configuration
  βœ… can be initialized with an endpoint from the environment
  βœ… Client respects passed in client configuration over defaults
  βœ… A ClientConfiguration setting with no secret throws an error on driver construction
  βœ… endpoints is extensible
  βœ… client allows txn time to be set
  βœ… defaults performance_hints to not setting the x-performance-hints header
  βœ… Setting clientConfiguration linearized leads to it being sent in headers
  βœ… Setting clientConfiguration max_contention_retries leads to it being sent in headers
  βœ… Setting clientConfiguration query_tags leads to it being sent in headers
  βœ… Setting clientConfiguration traceparent leads to it being sent in headers
  βœ… Setting clientConfiguration typecheck leads to it being sent in headers
  βœ… Setting clientConfiguration performance_hints leads to it being sent in headers
  βœ… can accept endpoints with or without a trailing slash.
  βœ… throws if client_timeout_buffer_ms provided is undefined
  βœ… throws if endpoint provided is undefined
  βœ… throws if format provided is undefined
  βœ… throws if http2_session_idle_ms provided is undefined
  βœ… throws if query_timeout_ms provided is undefined
  βœ… throws if http2_max_streams provided is undefined
  βœ… throws if fetch_keepalive provided is undefined
  βœ… throws if long_type provided is undefined
  βœ… throws a RangeError if 'client_timeout_buffer_ms' is less than or equal to zero
  βœ… throws a RangeError if 'query_timeout_ms' is less than or equal to zero
  βœ… throws a RangeError if 'http2_max_streams' is less than or equal to zero

βœ…Β tests/functional/feed-client-configuration.test.ts

FeedClientConfiguration
  βœ… can be instantiated directly with a token
  βœ… can be instantiated directly with a lambda
  βœ… throws a RangeError if 'max_backoff' is less than or equal to zero
  βœ… throws a TypeError if long_type provided is undefined
  βœ… throws a TypeError if httpClient provided is undefined
  βœ… throws a TypeError if max_backoff provided is undefined
  βœ… throws a TypeError if max_attempts provided is undefined
  βœ… throws a TypeError if client_timeout_buffer_ms provided is undefined
  βœ… throws a TypeError if query_timeout_ms provided is undefined
  βœ… throws a TypeError if secret provided is undefined
  βœ… throws a RangeError if 'max_attempts' is less than or equal to zero
  βœ… throws a TypeError is start_ts and cursor are both provided
  βœ… throws a RangeError if 'query_timeout_ms' is less than or equal to zero
  βœ… throws a RangeError if 'client_timeout_buffer_ms' is less than or equal to zero
  βœ… throws a TypeError if 'cursor' is not a string

βœ…Β tests/functional/feed-client.test.ts

FeedClient
  βœ… returns a valid page of events
  βœ… uses a valid HTTPRequest
  βœ… uses page_size when set
  βœ… uses cursor when set
  βœ… uses start_ts when set
  βœ… retries throttling errors
  βœ… throws an error for an error response

βœ…Β tests/functional/stream-client-configuration.test.ts

StreamClientConfiguration
  βœ… can be instantiated directly with a token
  βœ… can be instantiated directly with a lambda
  βœ… throws a TypeError if long_type provided is undefined
  βœ… throws a TypeError if httpStreamClient provided is undefined
  βœ… throws a TypeError if max_backoff provided is undefined
  βœ… throws a TypeError if max_attempts provided is undefined
  βœ… throws a TypeError if secret provided is undefined
  βœ… throws a RangeError if 'max_backoff' is less than or equal to zero
  βœ… throws a RangeError if 'max_attempts' is less than or equal to zero

βœ…Β tests/integration/client-last-txn-tracking.test.ts

last_txn_ts tracking in client
  βœ… Tracks the last_txn_ts datetime and send in the headers
  βœ… Accepts an override of the last_txn_ts datetime and sends in the headers
  βœ… Ignores overrides  of the lastTxnTs that are less than the current value or undefined

βœ…Β tests/integration/doc.test.ts

querying for doc types
  βœ… can round-trip Module
  βœ… can round-trip DocumentReference to a non-existent doc
  βœ… can round-trip DocumentReference to an existent doc
  βœ… can round-trip Document
  βœ… can round-trip NamedDocumentReference
  βœ… can round-trip NamedDocument
  βœ… get doc types from FQL
  βœ… can set and read ttl

βœ…Β tests/integration/existing-collection.test.ts

querying for existing data
  βœ… Can query an existing index

βœ…Β tests/integration/feed.test.ts

Client
  βœ… should throw a ClientError if not using a stream token
  βœ… should return a iterable feed from a stream token
  βœ… should return an iterable feed with a lambda
  βœ… should pass configuration to the feed client
  βœ… can resume from a cursor using a query
FeedClient
  βœ… can be instantiated directly with a token and client configuration
  βœ… can pass an existing cursor
  βœ… throws an error on an error event within a page of events
  βœ… can return a flattened array of events
  βœ… throws a QueryTimeoutError if the query times out
  βœ… throws a NetworkError if the client times out

βœ…Β tests/integration/query-limits.test.ts

Query with limits enabled
  βšͺ succeeds on retry after getting throttled

βœ…Β tests/integration/query-typings.test.ts

query typings
  βœ… allows customers to use their own types in queries
  βœ… allows customers to use their own interfaces in queries
  βœ… allows customers to infer their own types in queries from fql statements
  βœ… allows customers to use subtyped queries
paginate typings
  βœ… allows customers to use their own types in queries
  βœ… allows customers to use their own interfaces in queries
  βœ… allows customers to infer their own types in queries from fql statements
  βœ… allows customers to use subtyped queries

βœ…Β tests/integration/query.test.ts

query
  βœ… Can query an FQL v10 endpoint
  βœ… Can query with arguments
  βœ… Can query with tags
  βœ… respects QueryRequest field format over ClientConfiguration format
  βœ… respects QueryRequest field linearized over ClientConfiguration linearized
  βœ… respects QueryRequest field query_timeout_ms over ClientConfiguration query_timeout_ms
  βœ… respects QueryRequest field max_contention_retries over ClientConfiguration max_contention_retries
  βœ… respects QueryRequest field query_tags over ClientConfiguration query_tags
  βœ… respects QueryRequest field traceparent over ClientConfiguration traceparent
  βœ… respects QueryRequest field typecheck over ClientConfiguration typecheck
  βœ… respects typechecked: undefined
  βœ… can send arguments directly
  βœ… throws a QueryCheckError if the query is invalid
  βœ… throws a QueryRuntimeError if the query hits a runtime error
  βœ… Includes constraint failures when present
  βœ… throws an InvalidRequestError when request is invalid
  βœ… throws a AbortError is the `abort` function is called
  βœ… throws a QueryTimeoutError if the query times out
  βœ… throws a AuthenticationError creds are invalid
  βœ… throws a AuthorizationError if creds are not permissioned.
  βœ… throws a NetworkError if the connection fails.
  βœ… throws a NetworkError on client timeout
  βœ… throws a ClientError if the client fails unexpectedly
  βœ… throws a ProtocolError if the http fails outside Fauna
  βœ… session is closed regardless of number of clients
  βœ… can be called after session idle timeout
query can encode / decode QueryValue correctly
  βœ… treats undefined as unprovided when in object
  βœ… undefined arguments throw a TypeError
  βœ… symbol arguments throw a TypeError
  βœ… function arguments throw a TypeError
  βœ… symbol arguments throw a TypeError in arguments
  βœ… function arguments throw a TypeError in arguments

βœ…Β tests/integration/schema-version.test.ts

schema version is returned by the client
  βœ… returns the schema version

βœ…Β tests/integration/set.test.ts

querying for set
  βœ… can round-trip Page
SetIterator
  βœ… can get single page using for..of when the set is small
  βœ… can get multiple pages using for..of when the set is large
  βœ… can get pages using next()
  βœ… can get pages using a loop with next()
  βœ… can can stop the iterator with the return method
  βœ… can can stop the iterator with the throw method
  βœ… can paginate a query that returns a set
  βœ… can paginate a query that does NOT return a set
  βœ… can be flattened
  βœ… each page respects QueryOptions using an existing Page
  βœ… each page respects QueryOptions using an a query

βœ…Β tests/integration/stream.test.ts

Client
  βœ… can initiate a stream from a Client
  βœ… can initiate a stream from a Client, providing a query
  βœ… can resume a stream from an event cursor
  βœ… rejects cursor when not using a stream token
StreamClient
  βœ… can initiate a stream
  βœ… can initiate a stream with a lambda
  βœ… can get events with async iterator
  βœ… can get events with callbacks
  βœ… catches InvalidRequestError when establishing a stream
  βœ… handles InvalidRequestError via callback when establishing a stream
  βœ… catches an AbortError if abort is called when processing an event
  βœ… catches a QueryRuntimeError when processing an event
  βœ… handles an AbortError via callback if abort is called when processing an event
  βœ… handles a QueryRuntimeError via callback when processing an event
  βœ… decodes values from streams correctly
  βœ… yields all events when Fauna sends them as a single chunk

βœ…Β tests/integration/template-format.test.ts

query using template format
  βœ… succeeds with no arguments
  βœ… succeeds with a string variable
  βœ… succeeds with an Int variable
  βœ… succeeds with a Long variable
  βœ… succeeds with a Double variable
  βœ… succeeds with a boolean variable
  βœ… succeeds with a null variable
  βœ… succeeds with an object variable
  βœ… succeeds with an array variable
  βœ… succeeds with multiple variables
  βœ… succeeds with nested expressions
  βœ… succeeds with deep nested expressions
  βœ… succeeds with deep nested expressions - example 2
  βœ… succeeds with expressions nested within objects
  βœ… succeeds with expressions nested within arrays
  βœ… succeeds with expressions nested within arrays and objects combined
  βœ… succeeds with multiple layers of nesting of arrays and objects
  βœ… succeeds with FQL string interpolation
  βœ… succeeds with a Date arg
  βœ… succeeds with an ArrayBuffer variable
  βœ… succeeds with Uint8Array variables
  βœ… fails with [Function Int8Array] variables
  βœ… fails with [Function Uint8ClampedArray] variables
  βœ… fails with [Function Int16Array] variables
  βœ… fails with [Function Uint16Array] variables
  βœ… fails with [Function Int32Array] variables
  βœ… fails with [Function Uint32Array] variables
  βœ… fails with [Function Float32Array] variables
  βœ… fails with [Function Float64Array] variables
  βœ… fails with [Function BigInt64Array] variables
  βœ… fails with [Function BigUint64Array] variables
  βœ… succeeds using Node Buffer to encode strings

βœ…Β tests/unit/client.test.ts

Client
  βœ… Allows setting a secret in query
  βœ… Refuses further requests after close
  βœ… Refuses calls to close after client is closed.
  βœ… Allows for creation and usage of a new client after first client closed.

βœ…Β tests/unit/datetime.test.ts

values
  βœ… can construct TimeStub from strings: Z
  βœ… can construct TimeStub from strings: - HH:MM
  βœ… can construct TimeStub from strings: - HHMM
  βœ… can construct TimeStub from strings: + HH:MM
  βœ… can construct TimeStub from strings: + HHMM
  βœ… can construct TimeStub from strings: +yyyyy
  βœ… can construct TimeStub from strings: -yyyy
  βœ… can construct DateStub from strings: some date
  βœ… can construct DateStub from strings: leap year
  βœ… can construct TimeStub from Date: Z
  βœ… can construct TimeStub from Date: - HH:MM
  βœ… can construct TimeStub from Date: + HH:MM
  βœ… can construct TimeStub from Date: no timezone
  βœ… can construct TimeStub from Date: no time
  βœ… can construct DateStub from Date: Z
  βœ… can construct DateStub from Date: - HH:MM
  βœ… can construct DateStub from Date: + HH:MM
  βœ… can construct DateStub from Date: no timezone
  βœ… can construct DateStub from Date: no time
  βœ… can deconstruct TimeStub into a Date: Z
  βœ… can deconstruct TimeStub into a Date: - HH:MM
  βœ… can deconstruct TimeStub into a Date: - HHMM
  βœ… can deconstruct TimeStub into a Date: + HH:MM
  βœ… can deconstruct TimeStub into a Date: + HHMM
  βœ… can deconstruct TimeStub into a Date: +yyyyy
  βœ… can deconstruct TimeStub into a Date: -yyyy
  βœ… can deconstruct DateStub into a Date: some date
  βœ… can deconstruct DateStub into a Date: leap year

βœ…Β tests/unit/doc.test.ts

Module
  βœ… can be constructed directly
DocumentReference
  βœ… can be constructed directly
Document
  βœ… can be constructed directly
  βœ… can access ttl
  βœ… can access user data
NamedDocumentReference
  βœ… can be constructed directly
NamedDocument
  βœ… can be constructed without data
  βœ… can be constructed without data
NullDocument
  βœ… can be constructed directly with a DocumentReference
  βœ… can be constructed directly with a NamedDocumentReference

βœ…Β tests/unit/error.test.ts

query
  βœ… QueryFailures with status '400' and code 'invalid_query' are correctly mapped to [Function QueryCheckError]
  βœ… QueryFailures with status '400' and code 'unbound_variable' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'index_out_of_bounds' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'type_mismatch' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'invalid_argument' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'invalid_bounds' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'invalid_regex' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'invalid_schema' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'invalid_document_id' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'document_id_exists' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'document_not_found' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'document_deleted' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'invalid_function_invocation' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'invalid_index_invocation' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'null_value' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'invalid_null_access' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'invalid_cursor' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'permission_denied' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'invalid_effect' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'invalid_write' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'internal_failure' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'divide_by_zero' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'invalid_id' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'invalid_secret' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'invalid_time' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'invalid_unit' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'invalid_date' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'limit_exceeded' are correctly mapped to [Function ThrottlingError]
  βœ… QueryFailures with status '400' and code 'stack_overflow' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'invalid_computed_field_access' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'disabled_feature' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'invalid_receiver' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'invalid_timestamp_field_access' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '400' and code 'invalid_request' are correctly mapped to [Function InvalidRequestError]
  βœ… QueryFailures with status '400' and code 'abort' are correctly mapped to [Function AbortError]
  βœ… QueryFailures with status '400' and code 'constraint_failure' are correctly mapped to [Function ConstraintFailureError]
  βœ… QueryFailures with status '401' and code 'unauthorized' are correctly mapped to [Function AuthenticationError]
  βœ… QueryFailures with status '403' and code 'forbidden' are correctly mapped to [Function AuthorizationError]
  βœ… QueryFailures with status '409' and code 'contended_transaction' are correctly mapped to [Function ContendedTransactionError]
  βœ… QueryFailures with status '429' and code 'limit_exceeded' are correctly mapped to [Function ThrottlingError]
  βœ… QueryFailures with status '440' and code 'time_out' are correctly mapped to [Function QueryTimeoutError]
  βœ… QueryFailures with status '503' and code 'time_out' are correctly mapped to [Function QueryTimeoutError]
  βœ… QueryFailures with status '500' and code 'internal_error' are correctly mapped to [Function ServiceInternalError]
  βœ… QueryFailures with status '400' and code 'some unhandled code' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '401' and code 'some unhandled code' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '403' and code 'some unhandled code' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '409' and code 'some unhandled code' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '429' and code 'some unhandled code' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '440' and code 'some unhandled code' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '500' and code 'some unhandled code' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '503' and code 'some unhandled code' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status '999' and code 'some unhandled code' are correctly mapped to [Function QueryRuntimeError]
  βœ… QueryFailures with status 'undefined' and code 'some unhandled code' are correctly mapped to [Function QueryRuntimeError]

βœ…Β tests/unit/fetch-client.test.ts

fetch client
  βœ… returns a valid query response on success
  βœ… returns a valid query response on failure
  βœ… returns a NetworkError if fetch rejects
  βœ… returns a NetworkError if client timeout causes an abort
  βœ… uses the default path if one is not provided in HttpRequest
  βœ… uses the path provided in the HttpRequest if provided

βœ…Β tests/unit/node-http2-client.test.ts

node http2 client
  βœ… default client for Node.js is the NodeHTTP2Client
  βœ… uses the default request path if none is provided
  βœ… uses the path provided in HttpRequest if provided

βœ…Β tests/unit/package-verison.test.ts

package version
  βœ… is correct

βœ…Β tests/unit/query-builder.test.ts

fql method producing Querys
  βœ… parses with no variables
  βœ… parses with a string variable
  βœ… parses with a number variable
  βœ… parses with a boolean variable
  βœ… parses with a null variable
  βœ… parses with an object variable
  βœ… parses with an object variable having a toQuery property
  βœ… parses with an array variable
  βœ… parses with multiple variables
  βœ… parses nested expressions
  βœ… parses deep nested expressions
  βœ… parses with FQL string interpolation

βœ…Β tests/unit/query.test.ts

query
  βœ… throws an [Function AuthorizationError] on a 403
  βœ… throws an [Function QueryTimeoutError] on a 440
  βœ… throws an [Function ServiceError] on a 999
  βœ… throws an [Function ThrottlingError] on a 429
  βœ… throws an [Function ServiceInternalError] on a 500
  βœ… throws an [Function QueryTimeoutError] on a 503
  βœ… Includes a summary when not present in error field but present at top-level
  βœ… Includes a summary when not present in error field but present at top-level
  βœ… Includes a summary when not present in error field but present at top-level
  βœ… Includes a summary when not present in error field but present at top-level
  βœ… Includes a summary when not present in error field but present at top-level
  βœ… Includes a summary when not present in error field but present at top-level
  βœ… retries throttling errors and then succeeds
  βœ… Includes a summary in a QueryResult when present at top-level

βœ…Β tests/unit/retryable.test.ts

retryable
  βœ… should retry
  βœ… should throw the last error if attempts are greater than or equal to maxAttempts
  βœ… should not retry if shouldRetry returns false
  βœ… should backoff

βœ…Β tests/unit/set.test.ts

Page
  βœ… can be constructed directly
  βœ… after is optional
Embedded Set
  βœ… can be constructed directly
SetIterator
  βœ… can be constructed from a Page
  βœ… can be constructed from an EmbeddedSet
  βœ… can be constructed with an initial thunk for a T
  βœ… can be constructed with an initial thunk for a Page<T>
  βœ… can be constructed with an initial thunk for an EmbeddedSet
  βœ… can be flattened
  βœ… can flatten a Page
  βœ… throws if data and after are both undefined

βœ…Β tests/unit/tagged-format.test.ts

tagged format with long_type number
  βœ… can be decoded
  βœ… can be encoded
  βœ… can be encoded as interpolation query
  βœ… handles conflicts
  βœ… handles conflicts in interpolation queries
  βœ… handles nested conflict types
  βœ… handles nested conflict types in interpolation queries
  βœ… wraps user-provided `@` fields
  βœ… Properly encodes and decodes number -(2**63)
  βœ… Properly encodes and decodes number -(2**53)
  βœ… Properly encodes and decodes number -(2**53 - 1)
  βœ… Properly encodes and decodes number -(2**31) - 1
  βœ… Properly encodes and decodes number -(2**31)
  βœ… Properly encodes and decodes number 0 (Int)
  βœ… Properly encodes and decodes number 1 (Int)
  βœ… Properly encodes and decodes number 0 (Long)
  βœ… Properly encodes and decodes number 2**31 - 1
  βœ… Properly encodes and decodes number 2**31
  βœ… Properly encodes and decodes number 2**53 - 1
  βœ… Properly encodes and decodes number 2**53
  βœ… Properly encodes and decodes number 2**64 - 1
  βœ… Properly encodes and decodes number 1.3**63
  βœ… Properly encodes and decodes number 1.3
  βœ… Properly encodes and decodes number 0.000000008
  βœ… Throws if BigInt value is lower than -(2**63) - 1
  βœ… Throws if BigInt value is greater than 2**63
  βœ… Throws if BigInt value is NEGATIVE_INFINITY
  βœ… Throws if BigInt value is POSITIVE_INFINITY
tagged format with long_type bigint
  βœ… can be decoded
  βœ… can be encoded
  βœ… can be encoded as interpolation query
  βœ… handles conflicts
  βœ… handles conflicts in interpolation queries
  βœ… handles nested conflict types
  βœ… handles nested conflict types in interpolation queries
  βœ… wraps user-provided `@` fields
  βœ… Properly encodes and decodes number -(2**63)
  βœ… Properly encodes and decodes number -(2**53)
  βœ… Properly encodes and decodes number -(2**53 - 1)
  βœ… Properly encodes and decodes number -(2**31) - 1
  βœ… Properly encodes and decodes number -(2**31)
  βœ… Properly encodes and decodes number 0 (Int)
  βœ… Properly encodes and decodes number 1 (Int)
  βœ… Properly encodes and decodes number 0 (Long)
  βœ… Properly encodes and decodes number 2**31 - 1
  βœ… Properly encodes and decodes number 2**31
  βœ… Properly encodes and decodes number 2**53 - 1
  βœ… Properly encodes and decodes number 2**53
  βœ… Properly encodes and decodes number 2**64 - 1
  βœ… Properly encodes and decodes number 1.3**63
  βœ… Properly encodes and decodes number 1.3
  βœ… Properly encodes and decodes number 0.000000008
  βœ… Throws if BigInt value is lower than -(2**63) - 1
  βœ… Throws if BigInt value is greater than 2**63
  βœ… Throws if BigInt value is NEGATIVE_INFINITY
  βœ… Throws if BigInt value is POSITIVE_INFINITY