diff --git a/.changeset/thick-squids-drive.md b/.changeset/thick-squids-drive.md index 07654da27d..0e798063c0 100644 --- a/.changeset/thick-squids-drive.md +++ b/.changeset/thick-squids-drive.md @@ -11,12 +11,15 @@ const TestCard = EntityCardBlueprint.make({ }); TestCard.override({ - attachTo: { id: 'something-else', input: 'overriden' }, + // override attachment points + attachTo: { id: 'something-else', input: 'overridden' }, + // extend the config schema config: { schema: { newConfig: z => z.string().optional(), } }, + // override factory *factory(originalFactory, { inputs, config }){ const originalOutput = originalFactory(); diff --git a/packages/frontend-plugin-api/src/wiring/createExtension.test.ts b/packages/frontend-plugin-api/src/wiring/createExtension.test.ts index 547ec2a160..f9e39e98de 100644 --- a/packages/frontend-plugin-api/src/wiring/createExtension.test.ts +++ b/packages/frontend-plugin-api/src/wiring/createExtension.test.ts @@ -686,26 +686,6 @@ describe('createExtension', () => { }, }); - const overridden = testExtension.override({ - output: [numberDataRef, stringDataRef], - *factory(originalFactory) { - const output = originalFactory(); - yield* output.omit(numberDataRef); - - yield numberDataRef(output.get(numberDataRef) + 1); - }, - }); - - const overridden = testExtension.override({ - output: [numberDataRef, stringDataRef], - *factory(originalFactory) { - const output = originalFactory(); - yield* output; - - yield numberDataRef(output.get(numberDataRef) + 1); - }, - }); - const tester = createExtensionTester(overridden); expect(tester.data(numberDataRef)).toBe(43); diff --git a/packages/frontend-plugin-api/src/wiring/createExtension.ts b/packages/frontend-plugin-api/src/wiring/createExtension.ts index 6e75fc76e5..600b96ebe0 100644 --- a/packages/frontend-plugin-api/src/wiring/createExtension.ts +++ b/packages/frontend-plugin-api/src/wiring/createExtension.ts @@ -581,7 +581,7 @@ export function createExtension< >, }); } - return overrideOptions.factory( + const parentResult = overrideOptions.factory( (innerContext?: { config?: { [key in keyof TConfigSchema]: z.infer< @@ -604,6 +604,13 @@ export function createExtension< inputs, }, ); + + const deduplicatedResult = new Map(); + for (const item of parentResult) { + deduplicatedResult.set(item.id, item); + } + + return deduplicatedResult.values() as Iterable; }, } as CreateExtensionOptions); },