@contentgrid/fetch-hook-authentication
Version:
37 lines (35 loc) • 988 B
JavaScript
function createCompositeTokenSupplier(suppliers) {
return async (uri, opts) => {
for (const supplier of suppliers) {
if (supplier.predicate(uri)) {
return await supplier.supplier(uri, opts);
}
}
return null;
};
}
class CompositeTokenSupplierBuilder {
constructor() {
let suppliers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
this.suppliers = suppliers;
}
predicate(predicate, supplier) {
return new CompositeTokenSupplierBuilder(this.suppliers.concat([{
predicate,
supplier
}]));
}
origin(origin, supplier) {
return this.predicate(uri => {
return new URL(uri).origin === origin;
}, supplier);
}
default(supplier) {
return this.predicate(() => true, supplier);
}
build() {
return createCompositeTokenSupplier(this.suppliers);
}
}
export { CompositeTokenSupplierBuilder, createCompositeTokenSupplier as default };
//# sourceMappingURL=composite.mjs.map