diff --git a/src/Umbraco.Web.UI.Client/src/libs/extension-api/registry/extension.registry.ts b/src/Umbraco.Web.UI.Client/src/libs/extension-api/registry/extension.registry.ts index 109a1c9ddf..184ecca3a3 100644 --- a/src/Umbraco.Web.UI.Client/src/libs/extension-api/registry/extension.registry.ts +++ b/src/Umbraco.Web.UI.Client/src/libs/extension-api/registry/extension.registry.ts @@ -87,6 +87,16 @@ export class UmbExtensionRegistry< public readonly kinds = this._kinds.asObservable(); defineKind(kind: ManifestKind) { + const extensionsValues = this._extensions.getValue(); + const extension = extensionsValues.find( + (extension) => extension.alias === (kind as ManifestKind).alias + ); + + if (extension) { + console.error(`Extension Kind with alias ${(kind as ManifestKind).alias} is already registered`); + return; + } + const nextData = this._kinds .getValue() .filter( @@ -102,6 +112,15 @@ export class UmbExtensionRegistry< register(manifest: ManifestTypes | ManifestKind): void { // TODO: Consider if we need to implement some safety features here, like checking if the object has a 'type' and/or 'alias'? + if (!manifest.type) { + console.error(`Extension is missing type`, manifest); + return; + } + + if (!manifest.alias) { + console.error(`Extension is missing alias`, manifest); + return; + } if (manifest.type === 'kind') { this.defineKind(manifest as ManifestKind);