import { NextConfig } from 'next' import { UnbodyConfig } from './types' import { createUnbodyDir } from './utils/createUnbodyDir' import { generateTransformerConfig } from './utils/generateTransformerConfig' import { loadConfig } from './utils/loadConfig' import { setupApi } from './utils/setupApi' import { extendWebpackConfig } from './webpack' export const withUnbody = (unbodyConfig: UnbodyConfig) => async (nextConfig: NextConfig): Promise => { if (nextConfig.output === 'export') { throw new Error("unbody-nextra-plugin doesn't support 'export' output.") } const loadedConfig = loadConfig({ conf: unbodyConfig, nextConfig, }) createUnbodyDir({ config: loadedConfig }) setupApi({ config: loadedConfig, nextConfig }) generateTransformerConfig({ config: loadedConfig, nextConfig }) return { ...nextConfig, webpack: await extendWebpackConfig({ config: loadedConfig, nextConfig }), transpilePackages: [ ...(nextConfig.transpilePackages || [], 'unbody-nextra-ui'), ], } }