comic-vine-sdk
Version:
A JS/TS client for the Comic Vine API
16 lines • 2.63 kB
JavaScript
import * as resources from './resource-list.js';
export class ResourceFactory {
constructor(httpClient, urlBuilder) {
this.httpClient = httpClient;
this.urlBuilder = urlBuilder;
this._resources = { ...resources };
}
create(name) {
if (!this._resources[name]) {
throw new Error(`${name} resource not implemented`);
}
const ResourceClass = this._resources[name];
return new ResourceClass(this.httpClient, this.urlBuilder);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZXNvdXJjZXMvcmVzb3VyY2UtZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssU0FBUyxNQUFNLG9CQUFvQixDQUFDO0FBR2hELE1BQU0sT0FBTyxlQUFlO0lBRzFCLFlBQ1UsVUFBc0IsRUFDdEIsVUFBc0I7UUFEdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBSnhCLGVBQVUsR0FBRyxFQUFFLEdBQUcsU0FBUyxFQUFFLENBQUM7SUFLbkMsQ0FBQztJQUtHLE1BQU0sQ0FDWCxJQUFrQztRQUVsQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLDJCQUEyQixDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUNELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUcrQixDQUFDO1FBQzFFLE9BQU8sSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcmVzb3VyY2VzIGZyb20gJy4vcmVzb3VyY2UtbGlzdC5qcyc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBVcmxCdWlsZGVyIH0gZnJvbSAnLi4vdHlwZXMvaW5kZXguanMnO1xuXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VGYWN0b3J5IHtcbiAgcHJpdmF0ZSBfcmVzb3VyY2VzID0geyAuLi5yZXNvdXJjZXMgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSB1cmxCdWlsZGVyOiBVcmxCdWlsZGVyLFxuICApIHt9XG5cbiAgcHVibGljIGNyZWF0ZTxUIGV4dGVuZHMga2V5b2YgdHlwZW9mIHRoaXMuX3Jlc291cmNlcz4oXG4gICAgbmFtZTogVCxcbiAgKTogSW5zdGFuY2VUeXBlPCh0eXBlb2YgdGhpcy5fcmVzb3VyY2VzKVtUXT47XG4gIHB1YmxpYyBjcmVhdGUoXG4gICAgbmFtZToga2V5b2YgdHlwZW9mIHRoaXMuX3Jlc291cmNlcyxcbiAgKTogSW5zdGFuY2VUeXBlPCh0eXBlb2YgdGhpcy5fcmVzb3VyY2VzKVtrZXlvZiB0eXBlb2YgdGhpcy5fcmVzb3VyY2VzXT4ge1xuICAgIGlmICghdGhpcy5fcmVzb3VyY2VzW25hbWVdKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bmFtZX0gcmVzb3VyY2Ugbm90IGltcGxlbWVudGVkYCk7XG4gICAgfVxuICAgIGNvbnN0IFJlc291cmNlQ2xhc3MgPSB0aGlzLl9yZXNvdXJjZXNbbmFtZV0gYXMgbmV3IChcbiAgICAgIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gICAgICB1cmxCdWlsZGVyOiBVcmxCdWlsZGVyLFxuICAgICkgPT4gSW5zdGFuY2VUeXBlPCh0eXBlb2YgdGhpcy5fcmVzb3VyY2VzKVtrZXlvZiB0eXBlb2YgdGhpcy5fcmVzb3VyY2VzXT47XG4gICAgcmV0dXJuIG5ldyBSZXNvdXJjZUNsYXNzKHRoaXMuaHR0cENsaWVudCwgdGhpcy51cmxCdWlsZGVyKTtcbiAgfVxufVxuIl19