Skip to content

Commit 2911405

Browse files
committed
.
1 parent 08efcd9 commit 2911405

4 files changed

Lines changed: 31 additions & 33 deletions

File tree

packages/sv/src/addons/better-auth.ts

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ export default defineAddon({
4141
runsAfter('tailwindcss');
4242
},
4343
run: ({ sv, language, options, directory, dependencyVersion, file }) => {
44+
const svelte5 = !!dependencyVersion('svelte')?.startsWith('5');
45+
const [ts, s5] = createPrinter(language === 'ts', svelte5);
46+
4447
const demoPassword = options.demo.includes('password');
4548
const demoGithub = options.demo.includes('github');
4649
const hasDemo = demoPassword || demoGithub;
@@ -135,9 +138,9 @@ export default defineAddon({
135138
plugins: [
136139
sveltekitCookies(getRequestEvent) // make sure this is the last plugin in the array
137140
],
138-
}${language === 'ts' ? ' satisfies Omit<Parameters<typeof betterAuth>[0], "database">' : ''};
141+
}${ts(' satisfies Omit<Parameters<typeof betterAuth>[0], "database">')};
139142
140-
export const createAuth = (d1${language === 'ts' ? ': D1Database' : ''}) => betterAuth({
143+
export const createAuth = (d1${ts(': D1Database')}) => betterAuth({
141144
...authConfig,
142145
database: drizzleAdapter(getDb(d1), { provider: '${provider}' }),
143146
});
@@ -148,7 +151,7 @@ export default defineAddon({
148151
* This instance is used by the \`better-auth\` CLI for schema generation ONLY.
149152
* To access \`auth\` at runtime, use \`event.locals.auth\`.
150153
*/
151-
export const auth = createAuth(${language === 'ts' ? 'null!' : 'null'});`;
154+
export const auth = createAuth(null${ts('!')});`;
152155
} else {
153156
authConfig = dedent`
154157
export const auth = betterAuth({
@@ -297,8 +300,6 @@ export default defineAddon({
297300
return false;
298301
}
299302

300-
const [ts] = createPrinter(language === 'ts');
301-
302303
const d1AuthLine = d1 ? '\n\t\t\t\t\t\t\tconst { auth } = event.locals;\n' : '';
303304

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

412-
const svelte5 = !!dependencyVersion('svelte')?.startsWith('5');
413-
const [ts, s5] = createPrinter(language === 'ts', svelte5);
414-
415413
const passwordForm = demoPassword
416414
? `
417415
<form method="post" action="?/signInEmail" use:enhance>
@@ -465,7 +463,6 @@ export default defineAddon({
465463
return false;
466464
}
467465

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

505-
const svelte5 = !!dependencyVersion('svelte')?.startsWith('5');
506-
const [ts, s5] = createPrinter(language === 'ts', svelte5);
507502
return dedent`
508503
<script ${ts("lang='ts'")}>
509504
import { enhance } from '$app/forms';

packages/sv/src/addons/drizzle.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import {
44
type TransformFn,
55
transforms,
66
resolveCommand,
7-
fileExists
7+
fileExists,
8+
createPrinter
89
} from '@sveltejs/sv-utils';
910
import crypto from 'node:crypto';
1011
import fs from 'node:fs';
@@ -93,7 +94,7 @@ export default defineAddon({
9394
return cancel('Cloudflare D1 requires @sveltejs/adapter-cloudflare - add the adapter first');
9495
}
9596

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

351352
const getDbFn = js.common.parseStatement(
352-
`export const getDb = (d1${typescript ? ': D1Database' : ''}) => drizzle(d1, { schema });`
353+
`export const getDb = (d1${ts(': D1Database')} => drizzle(d1, { schema });`
353354
);
354355

355356
ast.body.push(getDbFn);

packages/sv/src/addons/sveltekit-adapter.ts

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ import {
55
transforms,
66
fileExists,
77
getPackageJson,
8-
sanitizeName,
9-
commonFilePaths
8+
sanitizeName
109
} from '@sveltejs/sv-utils';
1110
import { defineAddon, defineAddonOptions } from '../core/config.ts';
1211

@@ -47,7 +46,7 @@ export default defineAddon({
4746
setup: ({ isKit, unsupported }) => {
4847
if (!isKit) unsupported('Requires SvelteKit');
4948
},
50-
run: ({ sv, options, file, cwd, language }) => {
49+
run: ({ sv, options, file, cwd }) => {
5150
const adapter = adapters.find((a) => a.id === options.adapter)!;
5251

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

181-
const jsconfig = fileExists(cwd, commonFilePaths.jsconfig);
182-
const typeChecked = language === 'ts' || jsconfig;
183-
184-
if (typeChecked) {
180+
if (file.typeConfig) {
185181
sv.file(
186182
file.gitignore,
187183
transforms.text(({ content }) => {
@@ -201,14 +197,16 @@ export default defineAddon({
201197
);
202198

203199
// Add Cloudflare generated types to tsconfig
204-
sv.file(
205-
jsconfig ? commonFilePaths.jsconfig : commonFilePaths.tsconfig,
206-
transforms.json(({ data }) => {
207-
data.compilerOptions ??= {};
208-
data.compilerOptions.types ??= [];
209-
data.compilerOptions.types.push('./worker-configuration.d.ts');
210-
})
211-
);
200+
if (file.typeConfig) {
201+
sv.file(
202+
file.typeConfig,
203+
transforms.json(({ data }) => {
204+
data.compilerOptions ??= {};
205+
data.compilerOptions.types ??= [];
206+
data.compilerOptions.types.push('./worker-configuration.d.ts');
207+
})
208+
);
209+
}
212210

213211
sv.file(
214212
'src/app.d.ts',

packages/sv/src/core/workspace.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ export type Workspace = {
3131
file: {
3232
viteConfig: 'vite.config.js' | 'vite.config.ts';
3333
svelteConfig: 'svelte.config.js' | 'svelte.config.ts';
34+
typeConfig: 'jsconfig.json' | 'tsconfig.json' | undefined;
3435
/** `${directory.routes}/layout.css` or `src/app.css` */
3536
stylesheet: `${string}/layout.css` | 'src/app.css';
3637
package: 'package.json';
@@ -74,10 +75,6 @@ export async function createWorkspace({
7475
}: CreateWorkspaceOptions): Promise<Workspace> {
7576
const resolvedCwd = path.resolve(cwd);
7677

77-
// Will go up and prioritize jsconfig.json as it's first in the array
78-
const jtsConfigPath = find.any([commonFilePaths.jsconfig, commonFilePaths.tsconfig], { cwd });
79-
const typescript = jtsConfigPath?.endsWith(commonFilePaths.tsconfig) ?? false;
80-
8178
// This is not linked with typescript detection
8279
const viteConfigPath = path.join(resolvedCwd, commonFilePaths.viteConfigTS);
8380
const viteConfig = fs.existsSync(viteConfigPath)
@@ -87,6 +84,12 @@ export async function createWorkspace({
8784
const svelteConfig = fs.existsSync(svelteConfigPath)
8885
? commonFilePaths.svelteConfigTS
8986
: commonFilePaths.svelteConfig;
87+
const typeConfigOptions = [commonFilePaths.jsconfig, commonFilePaths.tsconfig];
88+
// Will go up and prioritize jsconfig.json as it's first in the array
89+
const typeConfig = find.any(typeConfigOptions, { cwd }) as
90+
| (typeof typeConfigOptions)[number]
91+
| undefined;
92+
const typescript = typeConfig?.endsWith(commonFilePaths.tsconfig) ?? false;
9093

9194
let dependencies: Record<string, string> = {};
9295
if (override?.dependencies) {
@@ -137,6 +140,7 @@ export async function createWorkspace({
137140
file: {
138141
viteConfig,
139142
svelteConfig,
143+
typeConfig,
140144
stylesheet,
141145
package: 'package.json',
142146
gitignore: '.gitignore',

0 commit comments

Comments
 (0)