Skip to content
Merged
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
17 changes: 6 additions & 11 deletions packages/sv/src/addons/better-auth.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ export default defineAddon({
runsAfter('tailwindcss');
},
run: ({ sv, language, options, directory, dependencyVersion, file }) => {
const svelte5 = !!dependencyVersion('svelte')?.startsWith('5');
const [ts, s5] = createPrinter(language === 'ts', svelte5);

const demoPassword = options.demo.includes('password');
const demoGithub = options.demo.includes('github');
const hasDemo = demoPassword || demoGithub;
Expand Down Expand Up @@ -135,9 +138,9 @@ export default defineAddon({
plugins: [
sveltekitCookies(getRequestEvent) // make sure this is the last plugin in the array
],
}${language === 'ts' ? ' satisfies Omit<Parameters<typeof betterAuth>[0], "database">' : ''};
}${ts(' satisfies Omit<Parameters<typeof betterAuth>[0], "database">')};

export const createAuth = (d1${language === 'ts' ? ': D1Database' : ''}) => betterAuth({
export const createAuth = (d1${ts(': D1Database')}) => betterAuth({
...authConfig,
database: drizzleAdapter(getDb(d1), { provider: '${provider}' }),
});
Expand All @@ -148,7 +151,7 @@ export default defineAddon({
* This instance is used by the \`better-auth\` CLI for schema generation ONLY.
* To access \`auth\` at runtime, use \`event.locals.auth\`.
*/
export const auth = createAuth(${language === 'ts' ? 'null!' : 'null'});`;
export const auth = createAuth(null${ts('!')});`;
} else {
authConfig = dedent`
export const auth = betterAuth({
Expand Down Expand Up @@ -297,8 +300,6 @@ export default defineAddon({
return false;
}

const [ts] = createPrinter(language === 'ts');

const d1AuthLine = d1 ? '\n\t\t\t\t\t\t\tconst { auth } = event.locals;\n' : '';

const signInEmailAction = demoPassword
Expand Down Expand Up @@ -409,9 +410,6 @@ export default defineAddon({
? ' class="bg-blue-600 text-white px-4 py-2 rounded-md hover:bg-blue-700 transition"'
: '';

const svelte5 = !!dependencyVersion('svelte')?.startsWith('5');
const [ts, s5] = createPrinter(language === 'ts', svelte5);

const passwordForm = demoPassword
? `
<form method="post" action="?/signInEmail" use:enhance>
Expand Down Expand Up @@ -465,7 +463,6 @@ export default defineAddon({
return false;
}

const [ts] = createPrinter(language === 'ts');
const d1AuthLine = d1 ? '\n\t\t\t\t\t\t\tconst { auth } = event.locals;\n' : '';
return dedent`
import { redirect } from '@sveltejs/kit';
Expand Down Expand Up @@ -502,8 +499,6 @@ export default defineAddon({
const twBtnClasses =
'class="bg-blue-600 text-white px-4 py-2 rounded-md hover:bg-blue-700 transition"';

const svelte5 = !!dependencyVersion('svelte')?.startsWith('5');
const [ts, s5] = createPrinter(language === 'ts', svelte5);
return dedent`
<script ${ts("lang='ts'")}>
import { enhance } from '$app/forms';
Expand Down
7 changes: 4 additions & 3 deletions packages/sv/src/addons/drizzle.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ import {
type TransformFn,
transforms,
resolveCommand,
fileExists
fileExists,
createPrinter
} from '@sveltejs/sv-utils';
import crypto from 'node:crypto';
import fs from 'node:fs';
Expand Down Expand Up @@ -93,7 +94,7 @@ export default defineAddon({
return cancel('Cloudflare D1 requires @sveltejs/adapter-cloudflare - add the adapter first');
}

const typescript = language === 'ts';
const [ts] = createPrinter(language === 'ts');
const baseDBPath = path.resolve(cwd, directory.lib, 'server', 'db');
const paths = {
'drizzle config': path.resolve(cwd, `drizzle.config.${language}`),
Expand Down Expand Up @@ -349,7 +350,7 @@ export default defineAddon({
js.imports.addNamed(ast, { from: 'drizzle-orm/d1', imports: ['drizzle'] });

const getDbFn = js.common.parseStatement(
`export const getDb = (d1${typescript ? ': D1Database' : ''}) => drizzle(d1, { schema });`
`export const getDb = (d1${ts(': D1Database')} => drizzle(d1, { schema });`
);

ast.body.push(getDbFn);
Expand Down
14 changes: 5 additions & 9 deletions packages/sv/src/addons/sveltekit-adapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ import {
transforms,
fileExists,
getPackageJson,
sanitizeName,
commonFilePaths
sanitizeName
} from '@sveltejs/sv-utils';
import { defineAddon, defineAddonOptions } from '../core/config.ts';

Expand Down Expand Up @@ -47,7 +46,7 @@ export default defineAddon({
setup: ({ isKit, unsupported }) => {
if (!isKit) unsupported('Requires SvelteKit');
},
run: ({ sv, options, file, cwd, language }) => {
run: ({ sv, options, file, cwd }) => {
const adapter = adapters.find((a) => a.id === options.adapter)!;

// removes previously installed adapters
Expand Down Expand Up @@ -178,10 +177,7 @@ export default defineAddon({
: transforms.json(({ data }) => applyWranglerConfig(data))
);

const jsconfig = fileExists(cwd, commonFilePaths.jsconfig);
const typeChecked = language === 'ts' || jsconfig;

if (typeChecked) {
if (file.typeConfig) {
sv.file(
file.gitignore,
transforms.text(({ content }) => {
Expand All @@ -200,9 +196,9 @@ export default defineAddon({
})
);

// Add Cloudflare generated types to tsconfig
// Add Cloudflare generated types to jsconfig/tsconfig
sv.file(
jsconfig ? commonFilePaths.jsconfig : commonFilePaths.tsconfig,
file.typeConfig,
transforms.json(({ data }) => {
data.compilerOptions ??= {};
data.compilerOptions.types ??= [];
Expand Down
8 changes: 5 additions & 3 deletions packages/sv/src/core/workspace.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ export type Workspace = {
file: {
viteConfig: 'vite.config.js' | 'vite.config.ts';
svelteConfig: 'svelte.config.js' | 'svelte.config.ts';
typeConfig: 'jsconfig.json' | 'tsconfig.json' | undefined;
/** `${directory.routes}/layout.css` or `src/app.css` */
stylesheet: `${string}/layout.css` | 'src/app.css';
package: 'package.json';
Expand Down Expand Up @@ -75,9 +76,9 @@ export async function createWorkspace({
const resolvedCwd = path.resolve(cwd);

// Will go up and prioritize jsconfig.json as it's first in the array
const jtsConfigPath = find.any([commonFilePaths.jsconfig, commonFilePaths.tsconfig], { cwd });
const typescript = jtsConfigPath?.endsWith(commonFilePaths.tsconfig) ?? false;

const typeConfigOptions = [commonFilePaths.jsconfig, commonFilePaths.tsconfig];
const typeConfig = find.any(typeConfigOptions, { cwd }) as Workspace['file']['typeConfig'];
const typescript = typeConfig?.endsWith(commonFilePaths.tsconfig) ?? false;
// This is not linked with typescript detection
const viteConfigPath = path.join(resolvedCwd, commonFilePaths.viteConfigTS);
const viteConfig = fs.existsSync(viteConfigPath)
Expand Down Expand Up @@ -137,6 +138,7 @@ export async function createWorkspace({
file: {
viteConfig,
svelteConfig,
typeConfig,
stylesheet,
package: 'package.json',
gitignore: '.gitignore',
Expand Down
Loading