rsnext/packages/next/build/generate-build-id.ts
2021-08-12 22:26:44 +00:00

22 lines
657 B
TypeScript

export async function generateBuildId(
generate: () => string | null | Promise<string | null>,
fallback: () => string
): Promise<string> {
let buildId = await generate()
// If there's no buildId defined we'll fall back
if (buildId === null) {
// We also create a new buildId if it contains the word `ad` to avoid false
// positives with ad blockers
while (!buildId || /ad/i.test(buildId)) {
buildId = fallback()
}
}
if (typeof buildId !== 'string') {
throw new Error(
'generateBuildId did not return a string. https://nextjs.org/docs/messages/generatebuildid-not-a-string'
)
}
return buildId.trim()
}