UNPKG

telefunc

Version:

Remote functions. Instead of API.

67 lines (66 loc) 3.14 kB
export { devConfig }; import { apply, addTelefuncMiddleware } from '../helpers.js'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; import { createRequire } from 'node:module'; const __dirname_ = path.dirname(fileURLToPath(import.meta.url)); const require_ = createRequire(import.meta.url); function devConfig() { return [ { name: 'telefunc:devConfig', apply: apply('dev'), config: () => ({ optimizeDeps: { include: [ 'telefunc/client', // Vite bug workaround. I don't know why, but Vite somehow thinks it needs to pre-optimize the `telefunc` module: // ``` // 11:12:30 AM [vite] ✨ new dependencies optimized: telefunc // 11:12:30 AM [vite] ✨ optimized dependencies changed. reloading // ``` // (Vite correctly bundles `package.json#exports["."].browser` though.) 'telefunc', ], }, }), async configResolved(config) { fixOptimizeDeps(config.optimizeDeps); await determineFsAllowList(config); }, }, { name: 'telefunc:devConfig:serverMiddleware', apply: apply('dev', { skipMiddlewareMode: true, onlyViteCli: true }), // Ensure that SvelteKit's configureServer() has precedence, see https://github.com/brillout/telefunc/pull/54 enforce: 'post', configureServer(server) { return () => { addTelefuncMiddleware(server.middlewares); }; }, }, ]; } // - Vike adds @brillout/json-serializer to optimizeDeps.exclude // - We need to remove @brillout/json-serializer from optimizeDeps.exclude to avoid: // ``` // 10:41:35 AM [vite] Internal server error: Failed to resolve import "@brillout/json-serializer/parse" from "node_modules/.vite/deps/chunk-HMXEIHOJ.js?v=9404be11". Does the file exist? // ``` // - We can't add @brillout/json-serializer to optimizeDeps.include because Vite complains: // ``` // Failed to resolve dependency: @brillout/json-serializer/parse, present in 'optimizeDeps.include' // Failed to resolve dependency: @brillout/json-serializer/stringify, present in 'optimizeDeps.include' // ``` function fixOptimizeDeps(optimizeDeps) { var _a; optimizeDeps.exclude = (_a = optimizeDeps.exclude) === null || _a === void 0 ? void 0 : _a.filter((entry) => !entry.startsWith('@brillout/json-serializer')); } async function determineFsAllowList(config) { const fsAllow = config.server.fs.allow; // [RELATIVE_PATH_FROM_DIST] Current file: node_modules/telefunc/dist/node/vite/plugins/devConfig.js const telefuncRoot = path.join(__dirname_, '../../../../'); // Assert that `telefuncRoot` is indeed pointing to `node_modules/vike/` require_.resolve(`${telefuncRoot}/dist/node/vite/plugins/devConfig.js`); fsAllow.push(telefuncRoot); }