Files
evento/node_modules/kysely/dist/cjs/driver/single-connection-provider.js
2026-03-18 14:55:56 -03:00

30 lines
1011 B
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SingleConnectionProvider = void 0;
const ignoreError = () => { };
class SingleConnectionProvider {
#connection;
#runningPromise;
constructor(connection) {
this.#connection = connection;
}
async provideConnection(consumer) {
while (this.#runningPromise) {
await this.#runningPromise.catch(ignoreError);
}
// `#runningPromise` must be set to undefined before it's
// resolved or rejected. Otherwise the while loop above
// will misbehave.
this.#runningPromise = this.#run(consumer).finally(() => {
this.#runningPromise = undefined;
});
return this.#runningPromise;
}
// Run the runner in an async function to make sure it doesn't
// throw synchronous errors.
async #run(runner) {
return await runner(this.#connection);
}
}
exports.SingleConnectionProvider = SingleConnectionProvider;