mirror of
https://github.com/renovatebot/renovate.git
synced 2026-10-24 22:48:06 +00:00
15f4bd8eff
* 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
40 lines
1.1 KiB
TypeScript
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;
|
|
});
|