diff --git a/.changeset/rude-tables-grab.md b/.changeset/rude-tables-grab.md new file mode 100644 index 0000000000000..5eaae102a5603 --- /dev/null +++ b/.changeset/rude-tables-grab.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-common': minor +--- + +**BREAKING**: Removed the `templateEntityV1beta3Schema` export diff --git a/plugins/scaffolder-backend/src/processor/ScaffolderEntitiesProcessor.ts b/plugins/scaffolder-backend/src/processor/ScaffolderEntitiesProcessor.ts index 4f3c13f34254b..b90f3498c02ae 100644 --- a/plugins/scaffolder-backend/src/processor/ScaffolderEntitiesProcessor.ts +++ b/plugins/scaffolder-backend/src/processor/ScaffolderEntitiesProcessor.ts @@ -21,7 +21,6 @@ import { parseEntityRef, RELATION_OWNED_BY, RELATION_OWNER_OF, - entityKindSchemaValidator, } from '@backstage/catalog-model'; import { CatalogProcessor, @@ -30,18 +29,16 @@ import { } from '@backstage/plugin-catalog-backend'; import { TemplateEntityV1beta3, - templateEntityV1beta3Schema, + templateEntityV1beta3Validator, } from '@backstage/plugin-scaffolder-common'; /** @public */ export class ScaffolderEntitiesProcessor implements CatalogProcessor { - private readonly validators = [ - entityKindSchemaValidator(templateEntityV1beta3Schema), - ]; + private readonly validators = [templateEntityV1beta3Validator]; async validateEntityKind(entity: Entity): Promise { for (const validator of this.validators) { - if (validator(entity)) { + if (await validator.check(entity)) { return true; } } diff --git a/plugins/scaffolder-common/api-report.md b/plugins/scaffolder-common/api-report.md index 7292da3cef1cc..8d2324a2dd102 100644 --- a/plugins/scaffolder-common/api-report.md +++ b/plugins/scaffolder-common/api-report.md @@ -5,7 +5,6 @@ ```ts import { Entity } from '@backstage/catalog-model'; import { JsonObject } from '@backstage/types'; -import { JSONSchema } from '@backstage/catalog-model'; import { JsonValue } from '@backstage/types'; import { KindValidator } from '@backstage/catalog-model'; @@ -86,9 +85,6 @@ export interface TemplateEntityV1beta2 extends Entity { }; } -// @public @deprecated -export const templateEntityV1beta2Schema: JSONSchema; - // @public @deprecated export const templateEntityV1beta2Validator: KindValidator; @@ -117,7 +113,7 @@ export interface TemplateEntityV1beta3 extends Entity { } // @public -export const templateEntityV1beta3Schema: JSONSchema; +export const templateEntityV1beta3Validator: KindValidator; // @public export type TemplateMetadata = { diff --git a/plugins/scaffolder-common/src/TemplateEntityV1beta2.ts b/plugins/scaffolder-common/src/TemplateEntityV1beta2.ts index 060436dd5c252..280caec52ffb7 100644 --- a/plugins/scaffolder-common/src/TemplateEntityV1beta2.ts +++ b/plugins/scaffolder-common/src/TemplateEntityV1beta2.ts @@ -17,7 +17,6 @@ import { Entity, entityKindSchemaValidator, - JSONSchema, KindValidator, } from '@backstage/catalog-model'; import { JsonObject } from '@backstage/types'; @@ -51,18 +50,6 @@ export interface TemplateEntityV1beta2 extends Entity { const validator = entityKindSchemaValidator(schema); -/** - * JSON schema of the Template kind, apiVersion backstage.io/v1beta2. - * - * @public - * @deprecated Please convert your templates to apiVersion - * scaffolder.backstage.io/v1beta3 - */ -export const templateEntityV1beta2Schema: JSONSchema = schema as Omit< - JSONSchema, - 'examples' ->; - /** * Entity data validator for {@link TemplateEntityV1beta2}. * diff --git a/plugins/scaffolder-common/src/TemplateEntityV1beta3.ts b/plugins/scaffolder-common/src/TemplateEntityV1beta3.ts index 6c7b712ed5223..13b699de69397 100644 --- a/plugins/scaffolder-common/src/TemplateEntityV1beta3.ts +++ b/plugins/scaffolder-common/src/TemplateEntityV1beta3.ts @@ -14,9 +14,13 @@ * limitations under the License. */ -import { Entity, JSONSchema } from '@backstage/catalog-model'; +import { + Entity, + entityKindSchemaValidator, + KindValidator, +} from '@backstage/catalog-model'; import { JsonObject } from '@backstage/types'; -import v1beta3Schema from './Template.v1beta3.schema.json'; +import schema from './Template.v1beta3.schema.json'; /** * Backstage catalog Template kind Entity. Templates are used by the Scaffolder @@ -42,12 +46,16 @@ export interface TemplateEntityV1beta3 extends Entity { }; } +const validator = entityKindSchemaValidator(schema); + /** - * JSON schema of the Template kind, apiVersion scaffolder.backstage.io/v1beta3. + * Entity data validator for {@link TemplateEntityV1beta3}. * * @public */ -export const templateEntityV1beta3Schema: JSONSchema = v1beta3Schema as Omit< - JSONSchema, - 'examples' ->; +export const templateEntityV1beta3Validator: KindValidator = { + // TODO(freben): Emulate the old KindValidator until we fix that type + async check(data: Entity) { + return validator(data) === data; + }, +}; diff --git a/plugins/scaffolder-common/src/index.ts b/plugins/scaffolder-common/src/index.ts index fc6390207eb5a..e74a5f988fb94 100644 --- a/plugins/scaffolder-common/src/index.ts +++ b/plugins/scaffolder-common/src/index.ts @@ -21,10 +21,7 @@ */ export * from './TaskSpec'; -export { - templateEntityV1beta2Schema, - templateEntityV1beta2Validator, -} from './TemplateEntityV1beta2'; +export { templateEntityV1beta2Validator } from './TemplateEntityV1beta2'; export type { TemplateEntityV1beta2 } from './TemplateEntityV1beta2'; -export { templateEntityV1beta3Schema } from './TemplateEntityV1beta3'; +export { templateEntityV1beta3Validator } from './TemplateEntityV1beta3'; export type { TemplateEntityV1beta3 } from './TemplateEntityV1beta3';