telefunc
Version:
Remote functions. Instead of API.
38 lines (37 loc) • 1.37 kB
JavaScript
export { pluginBuildEntry };
import { serverProductionEntryPlugin } from '@brillout/vite-plugin-server-entry/plugin';
import { projectInfo } from '../utils.js';
import { VIRTUAL_FILE_ENTRY_ID } from './pluginVirtualFileEntry/VIRTUAL_FILE_ENTRY_ID.js';
import { config } from '../../server/serverConfig.js';
import { assertManifest } from '../../server/runTelefunc/loadTelefuncFilesUsingVite/assertManifest.js';
function pluginBuildEntry() {
return [
...serverProductionEntryPlugin({
getServerProductionEntry: () => {
return getServerProductionEntryCode();
},
libraryName: projectInfo.projectName,
}),
];
}
function getServerProductionEntryCode() {
const telefuncManifest = getTelefuncManifest();
const importerCode = [
`import { setTelefuncLoaders } from 'telefunc/__internal/loadBuildEntry';`,
`import * as telefuncFiles from '${VIRTUAL_FILE_ENTRY_ID}';`,
'setTelefuncLoaders({',
` loadTelefuncFiles: () => telefuncFiles,`,
` loadManifest: () => (${JSON.stringify(telefuncManifest, null, 2)})`,
'});',
'',
].join('\n');
return importerCode;
}
function getTelefuncManifest() {
const manifest = {
version: projectInfo.projectVersion,
config,
};
assertManifest(manifest);
return manifest;
}