mirror of
https://github.com/renovatebot/renovate.git
synced 2026-11-01 10:09:50 +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
37 lines
937 B
TypeScript
37 lines
937 B
TypeScript
import { DateTime } from 'luxon';
|
|
import { z } from 'zod/v4';
|
|
import { UtcDate } from '../../../util/schema-utils/index.ts';
|
|
import { MaybeTimestamp } from '../../../util/timestamp.ts';
|
|
import type { Release } from '../types.ts';
|
|
|
|
const ExpireableField = z.union([
|
|
UtcDate.transform((x) => {
|
|
const now = DateTime.now().toUTC();
|
|
return x <= now;
|
|
}),
|
|
z.boolean(),
|
|
]);
|
|
|
|
export const EndoflifeDateVersions = z
|
|
.object({
|
|
cycle: z.string(),
|
|
latest: z.optional(z.string()),
|
|
releaseDate: MaybeTimestamp,
|
|
eol: z.optional(ExpireableField),
|
|
discontinued: z.optional(ExpireableField),
|
|
})
|
|
.transform(
|
|
({
|
|
cycle,
|
|
latest,
|
|
releaseDate: releaseTimestamp,
|
|
eol,
|
|
discontinued,
|
|
}): Release => {
|
|
const version = latest ?? cycle;
|
|
const isDeprecated = eol === true || discontinued === true;
|
|
return { version, releaseTimestamp, isDeprecated };
|
|
},
|
|
)
|
|
.array();
|