diff --git a/packages/router-generator/src/config.ts b/packages/router-generator/src/config.ts index f9680d9d364..0dcb0db65f0 100644 --- a/packages/router-generator/src/config.ts +++ b/packages/router-generator/src/config.ts @@ -15,6 +15,10 @@ const tokenMatcherSchema = z.union([ tokenJsonRegexSchema, ]) +const stringArrayFactorySchema = z.custom<() => Array>( + (value) => typeof value === 'function', +) + export type TokenMatcherJson = string | z.infer export type TokenMatcher = z.infer @@ -61,7 +65,7 @@ export const configSchema = baseConfigSchema.extend({ routeTreeFileFooter: z .union([ z.array(z.string()).optional().default([]), - z.function().returns(z.array(z.string())), + stringArrayFactorySchema, ]) .optional(), autoCodeSplitting: z.boolean().optional(), diff --git a/packages/router-generator/tests/config.test.ts b/packages/router-generator/tests/config.test.ts index 1290920040a..36cedecea12 100644 --- a/packages/router-generator/tests/config.test.ts +++ b/packages/router-generator/tests/config.test.ts @@ -30,4 +30,18 @@ describe('load config tests', () => { ) }, ) + + it('accepts routeTreeFileFooter as a function', () => { + const routeTreeFileFooter = () => ['// append'] + const resolvedConfig = getConfig({ routeTreeFileFooter }) + + expect(resolvedConfig.routeTreeFileFooter).toBe(routeTreeFileFooter) + }) + + it('accepts routeTreeFileFooter as an array', () => { + const routeTreeFileFooter = ['// append'] + const resolvedConfig = getConfig({ routeTreeFileFooter }) + + expect(resolvedConfig.routeTreeFileFooter).toEqual(routeTreeFileFooter) + }) })