@cerbos/core
Version:
Common types used by the Cerbos client libraries
43 lines • 1.18 kB
JavaScript
import { NotOK } from "./errors/external.js";
import { joinErrorMessage } from "./errors/internal.js";
import { Status } from "./types/external.js";
/** @internal */
export class AbortHandler {
signal;
constructor(signal) {
this.signal = signal;
}
throwIfAborted() {
if (this.signal?.aborted) {
throw this.error();
}
}
onAbort(listener) {
this.signal?.addEventListener("abort", () => {
listener(this.error());
}, { once: true });
}
error() {
const reason = this.signal?.reason;
return new NotOK(Status.CANCELLED, joinErrorMessage("Aborted", reason), {
cause: reason,
});
}
}
const instrumenters = new Set();
/** @internal */
export function addInstrumenter(instrumenter) {
instrumenters.add(instrumenter);
}
/** @internal */
export function removeInstrumenter(instrumenter) {
instrumenters.delete(instrumenter);
}
/** @internal */
export function instrument(transport) {
for (const instrumenter of instrumenters) {
transport = instrumenter(transport);
}
return transport;
}
//# sourceMappingURL=transport.js.map