1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import { BSON_MAJOR_VERSION } from './constants';
- /**
- * @public
- * @category Error
- *
- * `BSONError` objects are thrown when BSON ecounters an error.
- *
- * This is the parent class for all the other errors thrown by this library.
- */
- export class BSONError extends Error {
- /**
- * @internal
- * The underlying algorithm for isBSONError may change to improve how strict it is
- * about determining if an input is a BSONError. But it must remain backwards compatible
- * with previous minors & patches of the current major version.
- */
- protected get bsonError(): true {
- return true;
- }
- override get name(): string {
- return 'BSONError';
- }
- constructor(message: string) {
- super(message);
- }
- /**
- * @public
- *
- * All errors thrown from the BSON library inherit from `BSONError`.
- * This method can assist with determining if an error originates from the BSON library
- * even if it does not pass an `instanceof` check against this class' constructor.
- *
- * @param value - any javascript value that needs type checking
- */
- public static isBSONError(value: unknown): value is BSONError {
- return (
- value != null &&
- typeof value === 'object' &&
- 'bsonError' in value &&
- value.bsonError === true &&
- // Do not access the following properties, just check existence
- 'name' in value &&
- 'message' in value &&
- 'stack' in value
- );
- }
- }
- /**
- * @public
- * @category Error
- */
- export class BSONVersionError extends BSONError {
- get name(): 'BSONVersionError' {
- return 'BSONVersionError';
- }
- constructor() {
- super(`Unsupported BSON version, bson types must be from bson ${BSON_MAJOR_VERSION}.x.x`);
- }
- }
- /**
- * @public
- * @category Error
- *
- * An error generated when BSON functions encounter an unexpected input
- * or reaches an unexpected/invalid internal state
- *
- */
- export class BSONRuntimeError extends BSONError {
- get name(): 'BSONRuntimeError' {
- return 'BSONRuntimeError';
- }
- constructor(message: string) {
- super(message);
- }
- }
|