UNPKG

@starship-ci/generator

Version:

Kubernetes manifest generator for Starship deployments

44 lines (43 loc) 1.44 kB
import { GoRelayerBuilder } from './go-relayer'; import { HermesRelayerBuilder } from './hermes'; import { NeutronQueryRelayerBuilder } from './neutron-query'; import { TsRelayerBuilder } from './ts-relayer'; // Export all individual builders and components export * from './base'; export * from './go-relayer'; export * from './hermes'; export * from './neutron-query'; export * from './ts-relayer'; const relayerBuilderRegistry = { hermes: HermesRelayerBuilder, 'go-relayer': GoRelayerBuilder, 'ts-relayer': TsRelayerBuilder, 'neutron-query-relayer': NeutronQueryRelayerBuilder }; function createBuilder(relayer, config) { const builder = relayerBuilderRegistry[relayer.type]; if (!builder) { throw new Error(`Unsupported relayer type: ${relayer.type}`); } return new builder(relayer, config); } /** * Main RelayerBuilder that uses the factory pattern to create appropriate builders */ export class RelayerBuilder { config; relayers; generators = []; constructor(config) { this.config = config; // Process relayers with defaults this.relayers = config.relayers || []; this.generators = this.relayers.map((relayer) => createBuilder(relayer, this.config)); } generate() { return this.generators.flatMap((generator) => generator.generate()); } getSupportedTypes() { return Object.keys(relayerBuilderRegistry); } }