@starship-ci/generator
Version:
Kubernetes manifest generator for Starship deployments
44 lines (43 loc) • 1.44 kB
JavaScript
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);
}
}