Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion packages/void/src/plugin-routing.ts
Original file line number Diff line number Diff line change
Expand Up @@ -616,7 +616,12 @@ export function routingPlugin(root: string, options: RoutingPluginOptions): Plug
const betterAuthSubpaths = ['client', 'react', 'vue', 'svelte', 'solid'];
const resolvedAliases = betterAuthSubpaths.flatMap((sub) => {
try {
return [{ find: `better-auth/${sub}`, replacement: resolveFile(`better-auth/${sub}`) }];
return [
{
find: new RegExp(`^better-auth/${sub}$`),
replacement: resolveFile(`better-auth/${sub}`),
},
];
} catch {
return [];
}
Expand Down
27 changes: 27 additions & 0 deletions packages/void/test/unit/plugin-routing.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,33 @@ describe('routingPlugin', () => {
);
});

it('aliases only the exact better-auth client specifiers in dev', () => {
const root = createTempRoot();
const plugin = createRoutingPlugin(root, { isAuthEnabled: () => true });
const config = (
getHookHandler(plugin.config) as (config: UserConfig, env: ConfigEnv) => UserConfig
)({}, { command: 'serve', mode: 'development' });
const aliases = config.resolve?.alias as Array<{ find: string | RegExp; replacement: string }>;

// Mirrors Vite's alias matching: strings also match `find + '/'` prefixes.
const rewrite = (id: string) => {
for (const { find, replacement } of aliases) {
if (typeof find === 'string') {
if (id === find || id.startsWith(`${find}/`)) {
return id.replace(find, replacement);
}
} else if (find.test(id)) {
return id.replace(find, replacement);
}
}
return id;
};

expect(rewrite('better-auth/client')).toMatch(/client[/\\]index\.m?js$/);
// Other subpaths are left to normal resolution.
expect(rewrite('better-auth/client/plugins')).toBe('better-auth/client/plugins');
});

it('bakes explicit page opt-outs into the native ISR policy', async () => {
const root = createTempRoot();
mkdirSync(join(root, 'pages'), { recursive: true });
Expand Down