import { isString } from '@sindresorhus/is'; import { z } from 'zod/v4'; import { Toml } from '../../../util/schema-utils/index.ts'; /** * Known non-version sections in .prototools files. * These are structured TOML tables, not version pins. * @see https://moonrepo.dev/docs/proto/config */ export const nonVersionKeys = new Set([ 'settings', 'plugins', 'tools', 'env', 'shell', 'backends', ]); export const ProtoToolsFile = Toml.pipe( z.record(z.string(), z.unknown()).transform((data) => { const versions: Record = {}; for (const [key, value] of Object.entries(data)) { if (isString(value) && !nonVersionKeys.has(key)) { versions[key] = value; } } return { versions }; }), ); export type ProtoToolsFile = z.infer;