import type { TopLevelConfig } from '@wixc3/engine-core'; import type { IEngineRuntimeArguments } from '@wixc3/engine-runtime-node'; class RuntimeArgumentsHandler { private provider?: () => Promise; private registeredConfigs = new Set(); setProvider(provider: () => Promise) { this.provider = provider; } async getRuntimeArguments(): Promise { if (!this.provider) { throw new Error(`runtime arguments provider was not provided at runtime`); } const runtimeArguments = await this.provider(); const runtimeConfigs = [...this.registeredConfigs.values()].flat(); return { ...runtimeArguments, config: [...runtimeArguments.config, ...runtimeConfigs], }; } registerRuntimeConfig(config: TopLevelConfig) { this.registeredConfigs.add(config); } removeRuntimeConfig(config: TopLevelConfig) { this.registeredConfigs.delete(config); } } export default new RuntimeArgumentsHandler();