UNPKG

mongodb

Version:
58 lines 2.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.configureResourceManagement = configureResourceManagement; exports.configureExplicitResourceManagement = configureExplicitResourceManagement; /** @internal */ function configureResourceManagement(target) { Symbol.asyncDispose && Object.defineProperty(target, Symbol.asyncDispose, { value: async function asyncDispose() { await this.asyncDispose(); }, enumerable: false, configurable: true, writable: true }); } /** * @beta * @experimental * * Attaches `Symbol.asyncDispose` methods to the MongoClient, Cursors, sessions and change streams * if Symbol.asyncDispose is defined. * * It's usually not necessary to call this method - the driver attempts to attach these methods * itself when its loaded. However, sometimes the driver may be loaded before `Symbol.asyncDispose` * is defined, in which case it is necessary to call this method directly. This can happen if the * application is polyfilling `Symbol.asyncDispose`. * * Example: * * ```typescript * import { configureExplicitResourceManagement, MongoClient } from 'mongodb/lib/beta'; * * Symbol.asyncDispose ??= Symbol('dispose'); * load(); * * await using client = new MongoClient(...); * ``` */ function configureExplicitResourceManagement() { // We must import lazily here, because there's a circular dependency between the resource management // file and each resources' file. We could move `configureResourceManagement` to a separate // function, but keeping all resource-management related code together seemed preferable and I chose // lazy requiring of resources instead. // eslint-disable-next-line @typescript-eslint/no-require-imports const { MongoClient } = require('./mongo_client'); // eslint-disable-next-line @typescript-eslint/no-require-imports const { ClientSession } = require('./sessions'); // eslint-disable-next-line @typescript-eslint/no-require-imports const { AbstractCursor } = require('./cursor/abstract_cursor'); // eslint-disable-next-line @typescript-eslint/no-require-imports const { ChangeStream } = require('./change_stream'); configureResourceManagement(MongoClient.prototype); configureResourceManagement(ClientSession.prototype); configureResourceManagement(AbstractCursor.prototype); configureResourceManagement(ChangeStream.prototype); } //# sourceMappingURL=resource_management.js.map