mirror of
https://github.com/renovatebot/renovate.git
synced 2026-10-26 07:20:39 +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
30 lines
966 B
TypeScript
30 lines
966 B
TypeScript
import { z } from 'zod/v4';
|
|
import { LooseArray } from '../../../util/schema-utils/index.ts';
|
|
import { asTimestamp } from '../../../util/timestamp.ts';
|
|
import type { ReleaseResult } from '../types.ts';
|
|
|
|
const ReleaseItem = z
|
|
.object({
|
|
name: z.string().min(1),
|
|
version: z.string().min(1),
|
|
repository: z.string().url(),
|
|
updatedAt: z.number(),
|
|
})
|
|
.transform(
|
|
({ name: packageName, version, repository: sourceUrl, updatedAt }) => {
|
|
const releaseTimestamp = asTimestamp(updatedAt);
|
|
return { packageName, version, sourceUrl, releaseTimestamp };
|
|
},
|
|
);
|
|
|
|
export const Registry = LooseArray(ReleaseItem).transform((items) => {
|
|
const result: Record<string, ReleaseResult> = {};
|
|
for (const item of items) {
|
|
const { packageName, sourceUrl, ...release } = item;
|
|
result[packageName] ??= { releases: [] };
|
|
result[packageName].releases.push(release);
|
|
result[packageName].sourceUrl = sourceUrl;
|
|
}
|
|
return result;
|
|
});
|