diff --git a/v2/workflows/workflows/__tests__/registry.unique.test.ts b/v2/workflows/workflows/__tests__/registry.unique.test.ts new file mode 100644 index 000000000..4e71d96ae --- /dev/null +++ b/v2/workflows/workflows/__tests__/registry.unique.test.ts @@ -0,0 +1,7 @@ +import { getRegistry } from '../test-utils'; + +const registry = getRegistry(); + +it('registry', () => { + registry.validateUnique() +}); diff --git a/v2/workflows/workflows/src/registry.ts b/v2/workflows/workflows/src/registry.ts index 7483c7d68..409905860 100644 --- a/v2/workflows/workflows/src/registry.ts +++ b/v2/workflows/workflows/src/registry.ts @@ -214,6 +214,24 @@ export class Registry { }); } + public validateUnique() { + const seen = new Set(); // set to store unique chain_names + const duplicates = new Set(); // set to store duplicate chain_names + + this.chains.forEach(chain => { + let chainName = chain.chain_name + if (seen.has(chainName)) { + duplicates.add(chainName) + } else { + seen.add(chainName) + } + }) + const duplicatesArr = Array.from(duplicates) + if (duplicatesArr.length > 0) { + throw new Error(`duplicates found: ${duplicatesArr.join(', ')}`) + } + } + public get count() { return { chains: this.chains.length,