@contentgrid/fetch-hook-authentication
Version:
42 lines (38 loc) • 1.1 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
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);
}
}
exports.CompositeTokenSupplierBuilder = CompositeTokenSupplierBuilder;
exports.default = createCompositeTokenSupplier;
//# sourceMappingURL=composite.js.map