({
side = ['api', 'web'],
verbose = false,
prisma = true,
prerender,
})
| 16 | import { generatePrismaCommand } from '../lib/generatePrismaClient' |
| 17 | |
| 18 | export const handler = async ({ |
| 19 | side = ['api', 'web'], |
| 20 | verbose = false, |
| 21 | prisma = true, |
| 22 | prerender, |
| 23 | }) => { |
| 24 | recordTelemetryAttributes({ |
| 25 | command: 'build', |
| 26 | side: JSON.stringify(side), |
| 27 | verbose, |
| 28 | prisma, |
| 29 | prerender, |
| 30 | }) |
| 31 | |
| 32 | const rwjsPaths = getPaths() |
| 33 | const rwjsConfig = getConfig() |
| 34 | const useFragments = rwjsConfig.graphql?.fragments |
| 35 | const useTrustedDocuments = rwjsConfig.graphql?.trustedDocuments |
| 36 | |
| 37 | const prismaSchemaExists = fs.existsSync(rwjsPaths.api.dbSchema) |
| 38 | const prerenderRoutes = |
| 39 | prerender && side.includes('web') ? detectPrerenderRoutes() : [] |
| 40 | const shouldGeneratePrismaClient = |
| 41 | prisma && |
| 42 | prismaSchemaExists && |
| 43 | (side.includes('api') || prerenderRoutes.length > 0) |
| 44 | |
| 45 | const tasks = [ |
| 46 | shouldGeneratePrismaClient && { |
| 47 | title: 'Generating Prisma Client...', |
| 48 | task: () => { |
| 49 | const { cmd, args } = generatePrismaCommand(rwjsPaths.api.dbSchema) |
| 50 | return execa(cmd, args, { |
| 51 | stdio: verbose ? 'inherit' : 'pipe', |
| 52 | shell: true, |
| 53 | cwd: rwjsPaths.api.base, |
| 54 | }) |
| 55 | }, |
| 56 | }, |
| 57 | // If using GraphQL Fragments or Trusted Documents, then we need to use |
| 58 | // codegen to generate the types needed for possible types and the |
| 59 | // trusted document store hashes |
| 60 | (useFragments || useTrustedDocuments) && { |
| 61 | title: `Generating types needed for ${[ |
| 62 | useFragments && 'GraphQL Fragments', |
| 63 | useTrustedDocuments && 'Trusted Documents', |
| 64 | ] |
| 65 | .filter(Boolean) |
| 66 | .join(' and ')} support...`, |
| 67 | task: async () => { |
| 68 | await generate() |
| 69 | }, |
| 70 | }, |
| 71 | side.includes('api') && { |
| 72 | title: 'Verifying graphql schema...', |
| 73 | task: loadAndValidateSdls, |
| 74 | }, |
| 75 | side.includes('api') && { |
nothing calls this directly
no test coverage detected