UNPKG

@siren-js/client

Version:
31 lines (30 loc) 949 B
/** * Composes multiple {@linkcode SirenElementVisitor}s (from left to right) into a single Visitor. */ export class CompositeVisitor { visitors; constructor(visitors) { this.visitors = visitors; } async visitAction(action) { await this.apply((visitor) => visitor.visitAction(action)); } async visitEmbeddedEntity(entity) { await this.apply((visitor) => visitor.visitEmbeddedEntity(entity)); } async visitEmbeddedLink(link) { await this.apply((visitor) => visitor.visitEmbeddedLink(link)); } async visitEntity(entity) { await this.apply((visitor) => visitor.visitEntity(entity)); } async visitField(field) { await this.apply((visitor) => visitor.visitField(field)); } async visitLink(link) { await this.apply((visitor) => visitor.visitLink(link)); } async apply(fn) { return Promise.all(this.visitors.map(fn)); } }