Files
renovate/lib/modules/versioning/schema.ts
Sebastian Poxhofer 15f4bd8eff chore: migrate from zod/v3 to zod/v4 (#43691)
* chore: migrate from zod/v3 to zod/v4

This commit contains the logic changes

* chore: migrate imports from zod/v3 to zod/v4

This contains import updates and adds explicit record keys as zod/v4 requires these now

* ci: enforce usage of zod/v4
2026-05-30 16:01:58 +00:00

40 lines
1.1 KiB
TypeScript

import { isFunction } from '@sindresorhus/is';
import { z } from 'zod/v4';
import { logger } from '../../logger/index.ts';
import versionings from './api.ts';
import * as defaultVersioning from './semver-coerced/index.ts';
import type { VersioningApi } from './types.ts';
export const Versioning = z
.string()
.transform((versioningSpec, ctx): VersioningApi => {
const [versioningName, ...versioningRest] = versioningSpec.split(':');
let versioning = versionings.get(versioningName);
if (!versioning) {
logger.debug(
`Versioning: '${versioningSpec}' not found, falling back to ${defaultVersioning.id}`,
);
return defaultVersioning.api;
}
if (isFunction(versioning)) {
const versioningConfig = versioningRest.length
? versioningRest.join(':')
: undefined;
try {
versioning = new versioning(versioningConfig);
} catch (error) {
ctx.addIssue({
code: 'custom',
message: `Versioning: '${versioningSpec}' failed to initialize`,
params: { error },
});
return z.NEVER;
}
}
return versioning;
});