@baseplate-dev/react-generators
Version:
React Generators for Baseplate
50 lines • 1.97 kB
JavaScript
import { packageScope, tsCodeFragment } from '@baseplate-dev/core-generators';
import { createGenerator, createGeneratorTask, createProviderType, } from '@baseplate-dev/sync';
import { z } from 'zod';
import { reactConfigProvider } from '../react-config/index.js';
import { reactBaseConfigProvider } from '../react/index.js';
const descriptorSchema = z.object({
devBackendHost: z.string().min(1),
});
export const reactProxyProvider = createProviderType('react-proxy');
export const reactProxyGenerator = createGenerator({
name: 'core/react-proxy',
generatorFileUrl: import.meta.url,
descriptorSchema,
buildTasks: ({ devBackendHost }) => ({
main: createGeneratorTask({
dependencies: {
reactConfig: reactConfigProvider,
reactBaseConfig: reactBaseConfigProvider,
},
exports: {
reactProxy: reactProxyProvider.export(packageScope),
},
run({ reactBaseConfig, reactConfig }) {
reactConfig.additionalDevEnvVars.set('DEV_BACKEND_HOST', devBackendHost);
let enableWebsocket = false;
return {
providers: {
reactProxy: {
enableWebSocket: () => {
enableWebsocket = true;
},
},
},
build: () => {
reactBaseConfig.viteServerOptions.set('proxy', tsCodeFragment(`envVars.DEV_BACKEND_HOST
? {
'/api': {
target: envVars.DEV_BACKEND_HOST,
rewrite: (path) => path.replace(/^\\/api/, ''),
${enableWebsocket ? 'ws: true,' : ''}
},
}
: undefined`));
},
};
},
}),
}),
});
//# sourceMappingURL=react-proxy.generator.js.map