@@ -58,13 +58,15 @@ function dimensionParam(name: string, min: number, max: number) {
5858 . transform ( toDimensionValue ) ;
5959}
6060
61+ const GITHUB_USERNAME_REGEX = / ^ [ a - z A - Z 0 - 9 ] (?: [ a - z A - Z 0 - 9 ] | - (? = [ a - z A - Z 0 - 9 ] ) ) * $ / ;
62+
6163export const streakParamsSchema = z . object ( {
6264 // Required — missing user surfaces as "Missing" to match existing tests
6365 user : z
6466 . string ( { error : 'Missing user parameter' } )
6567 . min ( 1 , { message : 'Missing user parameter' } )
6668 . max ( 39 , { message : 'GitHub username cannot exceed 39 characters' } )
67- . regex ( / ^ [ a - z A - Z 0 - 9 ] (?: [ a - z A - Z 0 - 9 ] | - (? = [ a - z A - Z 0 - 9 ] ) ) * $ / , {
69+ . regex ( GITHUB_USERNAME_REGEX , {
6870 message : 'Invalid GitHub username' ,
6971 } ) ,
7072
@@ -218,7 +220,11 @@ export const streakParamsSchema = z.object({
218220export const githubParamsSchema = z . object ( {
219221 username : z
220222 . string ( { error : 'Missing "username" parameter' } )
221- . min ( 1 , { message : 'Username is required' } ) ,
223+ . min ( 1 , { message : 'Username is required' } )
224+ . max ( 39 , { message : 'GitHub username cannot exceed 39 characters' } )
225+ . regex ( GITHUB_USERNAME_REGEX , {
226+ message : 'Invalid GitHub username' ,
227+ } ) ,
222228 refresh : z . string ( ) . optional ( ) . transform ( toRefreshFlag ) ,
223229} ) ;
224230
@@ -258,7 +264,13 @@ export const ogParamsSchema = z
258264 } ) ) ;
259265
260266export const statsParamsSchema = z . object ( {
261- user : z . string ( { error : 'Missing user parameter' } ) . min ( 1 , { message : 'Missing user parameter' } ) ,
267+ user : z
268+ . string ( { error : 'Missing user parameter' } )
269+ . min ( 1 , { message : 'Missing user parameter' } )
270+ . max ( 39 , { message : 'GitHub username cannot exceed 39 characters' } )
271+ . regex ( GITHUB_USERNAME_REGEX , {
272+ message : 'Invalid GitHub username' ,
273+ } ) ,
262274 refresh : z . string ( ) . optional ( ) . transform ( toRefreshFlag ) ,
263275 tz : z . string ( ) . optional ( ) ,
264276} ) ;
0 commit comments