const REGEXP_DIRECTORY_DUNDER = /[\\/]__[^\\/]+(? ): { eventName: string; payload: EventBuildCompleted } { return { eventName: EVENT_BUILD_DURATION, payload: { ...event, totalPageCount: pagePaths.length, hasDunderPages: pagePaths.some((path) => REGEXP_DIRECTORY_DUNDER.test(path) ), hasTestPages: pagePaths.some( (path) => REGEXP_DIRECTORY_TESTS.test(path) || REGEXP_FILE_TEST.test(path) ), }, } } const EVENT_BUILD_OPTIMIZE = 'NEXT_BUILD_OPTIMIZED' type EventBuildOptimized = { durationInSeconds: number totalPageCount: number staticPageCount: number staticPropsPageCount: number serverPropsPageCount: number ssrPageCount: number hasDunderPages: boolean hasTestPages: boolean hasStatic404: boolean hasReportWebVitals: boolean headersCount: number rewritesCount: number redirectsCount: number headersWithHasCount: number rewritesWithHasCount: number redirectsWithHasCount: number } export function eventBuildOptimize( pagePaths: string[], event: Omit< EventBuildOptimized, 'totalPageCount' | 'hasDunderPages' | 'hasTestPages' > ): { eventName: string; payload: EventBuildOptimized } { return { eventName: EVENT_BUILD_OPTIMIZE, payload: { ...event, totalPageCount: pagePaths.length, hasDunderPages: pagePaths.some((path) => REGEXP_DIRECTORY_DUNDER.test(path) ), hasTestPages: pagePaths.some( (path) => REGEXP_DIRECTORY_TESTS.test(path) || REGEXP_FILE_TEST.test(path) ), }, } }