@sanity/codegen
Version:
Codegen toolkit for Sanity.io
38 lines (37 loc) • 1.33 kB
JavaScript
import { readFile } from 'node:fs/promises';
import json5 from 'json5';
import * as z from 'zod';
/**
* @internal
*/ export const configDefinition = z.object({
formatGeneratedCode: z.boolean().default(true),
generates: z.string().default('./sanity.types.ts'),
overloadClientMethods: z.boolean().default(true),
path: z.string().or(z.array(z.string())).default([
'./src/**/*.{ts,tsx,js,jsx,mjs,cjs,astro,vue,svelte}',
'./app/**/*.{ts,tsx,js,jsx,mjs,cjs,astro,vue,svelte}',
'./sanity/**/*.{ts,tsx,js,jsx,mjs,cjs}'
]),
schema: z.string().default('./schema.json')
});
/**
* Read, parse and process a config file
* @internal
*/ export async function readConfig(path) {
try {
const content = await readFile(path, 'utf8');
const json = json5.parse(content);
return configDefinition.parseAsync(json);
} catch (error) {
if (error instanceof z.ZodError) {
throw new Error(`Error in config file\n ${error.issues.map((err)=>err.message).join('\n')}`, {
cause: error
});
}
if (typeof error === 'object' && error !== null && 'code' in error && error.code === 'ENOENT') {
return configDefinition.parse({});
}
throw error;
}
}
//# sourceMappingURL=readConfig.js.map