import { z } from 'zod'; import { createBuiltInParserDefinition } from '../../internals/createBuiltInParserDefinition.js'; import { applyTo } from '../../shared/definition.js'; export const changeCaseParserName = 'change-case'; const toCaseSchema = z.union( [ z.literal('camelCase'), z.literal('capitalCase'), z.literal('constantCase'), z.literal('kebabCase'), z.literal('noCase'), z.literal('pascalCase'), z.literal('pascalSnakeCase'), z.literal('pathCase'), z.literal('sentenceCase'), z.literal('snakeCase'), z.literal('trainCase'), ], { errorMap: (_, _ctx) => ({ message: 'toCase must be one of the following: "camelCase", "capitalCase", "constantCase", "kebabCase", "noCase", "pascalCase", "pascalSnakeCase", "pathCase", "sentenceCase", "snakeCase", "trainCase"', }), }, ); export const changeCaseParserOptionsSchema = z .object({ change: z .union([z.literal('names'), z.literal('modes')], { errorMap: () => ({ message: 'change must be either "names" or "modes"', }), }) .optional(), toCase: toCaseSchema, applyTo, }) .strict(); export const changeCaseParserDefinition = createBuiltInParserDefinition({ name: changeCaseParserName, kind: 'utility', hasOptionalOptions: false, optionsSchema: changeCaseParserOptionsSchema, hasOptionalOutput: true, outputTypes: undefined, inTypes: ['SDTF', 'SDTF Engine'], outType: 'SDTF Engine', }); export type ChangeCaseParserDefinition = typeof changeCaseParserDefinition; export type ChangeCaseParserOptions = z.infer;