diff --git a/src/platform/packages/shared/kbn-openapi-generator/src/openapi_generator.ts b/src/platform/packages/shared/kbn-openapi-generator/src/openapi_generator.ts index 3eb8a83482525..5224bfea21a12 100644 --- a/src/platform/packages/shared/kbn-openapi-generator/src/openapi_generator.ts +++ b/src/platform/packages/shared/kbn-openapi-generator/src/openapi_generator.ts @@ -43,6 +43,10 @@ export interface GeneratorConfig { * @default undefined */ schemaNameTransform?: 'pascalCase'; + /** + * This forces the generator to use the Zod v4 import. + */ + experimentallyImportZodV4?: boolean; } export const generate = async (config: GeneratorConfig) => { @@ -71,6 +75,7 @@ export const generate = async (config: GeneratorConfig) => { generatedPath: getGeneratedFilePath(sourcePath), generationContext: getGenerationContext(parsedSchema, { schemaNameTransform: config.schemaNameTransform, + experimentallyImportZodV4: config.experimentallyImportZodV4, }), }; }) @@ -117,6 +122,7 @@ export const generate = async (config: GeneratorConfig) => { }, config: { schemaNameTransform: config.schemaNameTransform, + experimentallyImportZodV4: config.experimentallyImportZodV4, }, }); diff --git a/src/platform/packages/shared/kbn-openapi-generator/src/parser/get_generation_context.ts b/src/platform/packages/shared/kbn-openapi-generator/src/parser/get_generation_context.ts index 72cd178fcb10d..b640e4dd9bb1c 100644 --- a/src/platform/packages/shared/kbn-openapi-generator/src/parser/get_generation_context.ts +++ b/src/platform/packages/shared/kbn-openapi-generator/src/parser/get_generation_context.ts @@ -24,14 +24,14 @@ export interface GenerationContext { info: OpenAPIV3.InfoObject; imports: ImportsMap; circularRefs: Set; - config: Pick; + config: Pick; } export interface BundleGenerationContext { operations: NormalizedOperation[]; sources: ParsedSource[]; info: OpenAPIV3.InfoObject; - config: Pick; + config: Pick; } export function getGenerationContext( diff --git a/src/platform/packages/shared/kbn-openapi-generator/src/template_service/templates/zod_operation_schema.handlebars b/src/platform/packages/shared/kbn-openapi-generator/src/template_service/templates/zod_operation_schema.handlebars index d78a99c32aa6b..83e199174203d 100644 --- a/src/platform/packages/shared/kbn-openapi-generator/src/template_service/templates/zod_operation_schema.handlebars +++ b/src/platform/packages/shared/kbn-openapi-generator/src/template_service/templates/zod_operation_schema.handlebars @@ -8,7 +8,11 @@ {{> disclaimer}} import type { ZodTypeDef } from '@kbn/zod'; +{{#if config.experimentallyImportZodV4}} +import { z } from '@kbn/zod/v4'; +{{else}} import { z } from '@kbn/zod'; +{{/if}} import { requiredOptional, isValidDateMath, isNonEmptyString, ArrayFromString, BooleanFromString } from '@kbn/zod-helpers'; {{#each imports}} diff --git a/x-pack/platform/plugins/shared/cases/docs/openapi/bundled-types.gen.ts b/x-pack/platform/plugins/shared/cases/docs/openapi/bundled-types.gen.ts index fa76c6c36964f..aa2868dd9b97a 100644 --- a/x-pack/platform/plugins/shared/cases/docs/openapi/bundled-types.gen.ts +++ b/x-pack/platform/plugins/shared/cases/docs/openapi/bundled-types.gen.ts @@ -14,7 +14,7 @@ * version: 0.1 */ -import { z } from '@kbn/zod'; +import { z } from '@kbn/zod/v4'; /** * An array containing users that are assigned to the case. diff --git a/x-pack/platform/plugins/shared/cases/scripts/openapi_generate.js b/x-pack/platform/plugins/shared/cases/scripts/openapi_generate.js index e1b97af1380d3..8d57878c81c80 100644 --- a/x-pack/platform/plugins/shared/cases/scripts/openapi_generate.js +++ b/x-pack/platform/plugins/shared/cases/scripts/openapi_generate.js @@ -22,5 +22,6 @@ const CASES_ROOT = resolve(__dirname, '..'); templateName: 'zod_operation_schema', skipLinting: true, schemaNameTransform: 'pascalCase', + experimentallyImportZodV4: true, }); })();