UNPKG

utquidem

Version:

The meta-framework suite designed from scratch for frontend-focused modern web development.

57 lines (48 loc) 1.43 kB
import path from 'path'; import { Plugin as RollupPlugin } from 'rollup'; import { getAllAPIFiles, getLambdaDir, generateClient, } from '@modern-js/bff-utils'; import type { IAppContext, NormalizedConfig } from '@modern-js/core'; import { BFF_API_DIR } from '../constants'; export const lambdaApiPlugin = ( config: NormalizedConfig, appContext: IAppContext, ): RollupPlugin => { const { server: { port }, } = config; const { appDirectory } = appContext; const { prefix: apiPrefix = '/api' } = (config as any).bff || {}; const apiDir = path.resolve(appDirectory, BFF_API_DIR); const lambdaDir = getLambdaDir(apiDir); const apiFiles = getAllAPIFiles(lambdaDir); return { name: 'esm-lambda-api', async transform(code: string, importer: string) { if (apiFiles.includes(importer)) { const result = await generateClient({ apiDir, resourcePath: importer, source: code, prefix: apiPrefix, target: 'client', port: Number(port), requireResolve: require.resolve, }); if (result.isOk) { return { code: result.value.replace( /import { createRequest } from '.+';/, `import { createRequest } from '@modern-js/create-request';`, ), }; } else { throw new Error(result.value); } } }, }; };