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
5 changes: 5 additions & 0 deletions .changeset/icy-mice-jump.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'sv': patch
---

api: rename `files` to `file`, `kit` to `isKit` & `directory`
38 changes: 18 additions & 20 deletions packages/sv/src/addons/better-auth.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,16 +35,14 @@ export default defineAddon({
shortDescription: 'auth library',
homepage: 'https://www.better-auth.com',
options,
setup: ({ kit, dependencyVersion, unsupported, dependsOn, runsAfter }) => {
if (!kit) unsupported('Requires SvelteKit');
setup: ({ isKit, dependencyVersion, unsupported, dependsOn, runsAfter }) => {
if (!isKit) unsupported('Requires SvelteKit');
if (!dependencyVersion('drizzle-orm')) dependsOn('drizzle');

runsAfter('sveltekitAdapter');
runsAfter('tailwindcss');
},
run: ({ sv, language, options, kit, dependencyVersion, files }) => {
if (!kit) throw new Error('SvelteKit is required');

run: ({ sv, language, options, directory, dependencyVersion, file }) => {
const demoPassword = options.demo.includes('password');
const demoGithub = options.demo.includes('github');
const hasDemo = demoPassword || demoGithub;
Expand Down Expand Up @@ -89,7 +87,7 @@ export default defineAddon({
sv.file('.env', (content) => generateEnvFileContent(content, demoGithub, false));
sv.file('.env.example', (content) => generateEnvFileContent(content, demoGithub, true));

sv.file(`${kit?.libDirectory}/server/auth.${language}`, (content) => {
sv.file(`${directory.lib}/server/auth.${language}`, (content) => {
const { ast, generateCode, comments } = parse.script(content);

js.imports.addNamed(ast, { from: '$lib/server/db', imports: [d1 ? 'getDb' : 'db'] });
Expand Down Expand Up @@ -165,10 +163,10 @@ export default defineAddon({
return generateCode();
});

const authConfigPath = `${kit?.libDirectory}/server/auth.${language}`;
const authSchemaPath = `${kit?.libDirectory}/server/db/auth.schema.${language}`;
const authConfigPath = `${directory.lib}/server/auth.${language}`;
const authSchemaPath = `${directory.lib}/server/db/auth.schema.${language}`;

sv.file(files.package, (content) => {
sv.file(file.package, (content) => {
const { data, generateCode } = parse.json(content);
json.packageScriptsUpsert(
data,
Expand All @@ -178,14 +176,14 @@ export default defineAddon({
return generateCode();
});

sv.file(`${kit?.libDirectory}/server/db/auth.schema.${language}`, (content) => {
sv.file(`${directory.lib}/server/db/auth.schema.${language}`, (content) => {
if (content) return content;
return dedent`
// If you see this file, you have not run the auth:schema script yet, but you should!
`;
});

sv.file(`${kit?.libDirectory}/server/db/schema.${language}`, (content) => {
sv.file(`${directory.lib}/server/db/schema.${language}`, (content) => {
const { ast, generateCode } = parse.script(content);

js.exports.addNamespace(ast, { from: './auth.schema' });
Expand Down Expand Up @@ -276,15 +274,15 @@ export default defineAddon({
});

if (hasDemo) {
sv.file(`${kit?.routesDirectory}/demo/+page.svelte`, (content) => {
sv.file(`${directory.kitRoutes}/demo/+page.svelte`, (content) => {
return addToDemoPage(content, 'better-auth', language);
});

sv.file(
`${kit!.routesDirectory}/demo/better-auth/login/+page.server.${language}`,
`${directory.kitRoutes}/demo/better-auth/login/+page.server.${language}`,
(content) => {
if (content) {
const filePath = `${kit!.routesDirectory}/demo/better-auth/login/+page.server.${language}`;
const filePath = `${directory.kitRoutes}/demo/better-auth/login/+page.server.${language}`;
log.warn(`Existing ${color.warning(filePath)} file. Could not update.`);
return content;
}
Expand Down Expand Up @@ -386,9 +384,9 @@ export default defineAddon({
}
);

sv.file(`${kit!.routesDirectory}/demo/better-auth/login/+page.svelte`, (content) => {
sv.file(`${directory.kitRoutes}/demo/better-auth/login/+page.svelte`, (content) => {
if (content) {
const filePath = `${kit!.routesDirectory}/demo/better-auth/login/+page.svelte`;
const filePath = `${directory.kitRoutes}/demo/better-auth/login/+page.svelte`;
log.warn(`Existing ${color.warning(filePath)} file. Could not update.`);
return content;
}
Expand Down Expand Up @@ -450,9 +448,9 @@ export default defineAddon({
`;
});

sv.file(`${kit!.routesDirectory}/demo/better-auth/+page.server.${language}`, (content) => {
sv.file(`${directory.kitRoutes}/demo/better-auth/+page.server.${language}`, (content) => {
if (content) {
const filePath = `${kit!.routesDirectory}/demo/better-auth/+page.server.${language}`;
const filePath = `${directory.kitRoutes}/demo/better-auth/+page.server.${language}`;
log.warn(`Existing ${color.warning(filePath)} file. Could not update.`);
return content;
}
Expand Down Expand Up @@ -483,9 +481,9 @@ export default defineAddon({
`;
});

sv.file(`${kit!.routesDirectory}/demo/better-auth/+page.svelte`, (content) => {
sv.file(`${directory.kitRoutes}/demo/better-auth/+page.svelte`, (content) => {
if (content) {
const filePath = `${kit!.routesDirectory}/demo/better-auth/+page.svelte`;
const filePath = `${directory.kitRoutes}/demo/better-auth/+page.svelte`;
log.warn(`Existing ${color.warning(filePath)} file. Could not update.`);
return content;
}
Expand Down
4 changes: 2 additions & 2 deletions packages/sv/src/addons/devtools-json.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ export default defineAddon({
homepage: 'https://github.com/ChromeDevTools/vite-plugin-devtools-json',
options: {},

run: ({ sv, files }) => {
run: ({ sv, file }) => {
sv.devDependency('vite-plugin-devtools-json', '^1.0.0');

// add the vite plugin
sv.file(files.viteConfig, (content) => {
sv.file(file.viteConfig, (content) => {
const { ast, generateCode } = parse.script(content);

const vitePluginName = 'devtoolsJson';
Expand Down
18 changes: 8 additions & 10 deletions packages/sv/src/addons/drizzle.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,21 +84,19 @@ export default defineAddon({
shortDescription: 'database orm',
homepage: 'https://orm.drizzle.team',
options,
setup: ({ kit, unsupported, runsAfter }) => {
setup: ({ isKit, unsupported, runsAfter }) => {
runsAfter('prettier');
runsAfter('sveltekitAdapter');

if (!kit) return unsupported('Requires SvelteKit');
if (!isKit) return unsupported('Requires SvelteKit');
},
run: ({ sv, language, options, kit, dependencyVersion, cwd, cancel, files }) => {
if (!kit) throw new Error('SvelteKit is required');

run: ({ sv, language, options, directory, dependencyVersion, cwd, cancel, file }) => {
if (options.database === 'd1' && !dependencyVersion('@sveltejs/adapter-cloudflare')) {
return cancel('Cloudflare D1 requires @sveltejs/adapter-cloudflare — add the adapter first');
}

const typescript = language === 'ts';
const baseDBPath = path.resolve(cwd, kit.libDirectory, 'server', 'db');
const baseDBPath = path.resolve(cwd, directory.lib, 'server', 'db');
const paths = {
'drizzle config': path.resolve(cwd, `drizzle.config.${language}`),
'database schema': path.resolve(baseDBPath, `schema.${language}`),
Expand Down Expand Up @@ -194,7 +192,7 @@ export default defineAddon({
});
}

sv.file(files.package, (content) => {
sv.file(file.package, (content) => {
const { data, generateCode } = parse.json(content);

if (options.docker) json.packageScriptsUpsert(data, 'db:start', 'docker compose up');
Expand All @@ -208,13 +206,13 @@ export default defineAddon({

const hasPrettier = Boolean(dependencyVersion('prettier'));
if (hasPrettier) {
sv.file(files.prettierignore, (content) => {
sv.file(file.prettierignore, (content) => {
return text.upsert(content, '/drizzle/');
});
}

if (options.database === 'sqlite') {
sv.file(files.gitignore, (content) => {
sv.file(file.gitignore, (content) => {
if (content.length === 0) return content;
return text.upsert(content, '*.db', { comment: 'SQLite' });
});
Expand Down Expand Up @@ -270,7 +268,7 @@ export default defineAddon({
js.exports.createDefault(ast, {
fallback: js.common.parseExpression(`
defineConfig({
schema: "./src/lib/server/db/schema.${language}",
schema: "./${directory.lib}/server/db/schema.${language}",
dialect: "${getDialect()}",
${d1 ? "driver: 'd1-http'," : ''}
dbCredentials: {
Expand Down
10 changes: 5 additions & 5 deletions packages/sv/src/addons/eslint.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ export default defineAddon({
shortDescription: 'linter',
homepage: 'https://eslint.org',
options: {},
run: ({ sv, language, dependencyVersion, files }) => {
run: ({ sv, language, dependencyVersion, file }) => {
const typescript = language === 'ts';
const prettierInstalled = Boolean(dependencyVersion('prettier'));

Expand All @@ -23,15 +23,15 @@ export default defineAddon({

if (prettierInstalled) sv.devDependency('eslint-config-prettier', '^10.1.8');

sv.file(files.package, (content) => {
sv.file(file.package, (content) => {
const { data, generateCode } = parse.json(content);

json.packageScriptsUpsert(data, 'lint', 'eslint .');

return generateCode();
});

sv.file(files.eslintConfig, (content) => {
sv.file(file.eslintConfig, (content) => {
const { ast, comments, generateCode } = parse.script(content);

const eslintConfigs: Array<AstTypes.Expression | AstTypes.SpreadElement> = [];
Expand Down Expand Up @@ -140,14 +140,14 @@ export default defineAddon({
return generateCode();
});

sv.file(files.vscodeExtensions, (content) => {
sv.file(file.vscodeExtensions, (content) => {
const { data, generateCode } = parse.json(content);
json.arrayUpsert(data, 'recommendations', 'dbaeumer.vscode-eslint');
return generateCode();
});

if (prettierInstalled) {
sv.file(files.eslintConfig, addEslintConfigPrettier);
sv.file(file.eslintConfig, addEslintConfigPrettier);
}
}
});
4 changes: 2 additions & 2 deletions packages/sv/src/addons/mdsvex.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ export default defineAddon({
shortDescription: 'svelte + markdown',
homepage: 'https://mdsvex.pngwn.io',
options: {},
run: ({ sv, files }) => {
run: ({ sv, file }) => {
sv.devDependency('mdsvex', '^0.12.6');

sv.file(files.svelteConfig, (content) => {
sv.file(file.svelteConfig, (content) => {
const { ast, generateCode } = parse.script(content);

js.imports.addNamed(ast, { from: 'mdsvex', imports: ['mdsvex'] });
Expand Down
20 changes: 9 additions & 11 deletions packages/sv/src/addons/paraglide.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,18 +50,16 @@ export default defineAddon({
shortDescription: 'i18n',
homepage: 'https://inlang.com/m/gerre34r/library-inlang-paraglideJs',
options,
setup: ({ kit, unsupported }) => {
if (!kit) unsupported('Requires SvelteKit');
setup: ({ isKit, unsupported }) => {
if (!isKit) unsupported('Requires SvelteKit');
},
run: ({ sv, options, files, language, kit }) => {
if (!kit) throw new Error('SvelteKit is required');

const paraglideOutDir = 'src/lib/paraglide';
run: ({ sv, options, file, language, directory }) => {
const paraglideOutDir = `${directory.lib}/paraglide`;

sv.devDependency('@inlang/paraglide-js', '^2.10.0');

// add the vite plugin
sv.file(files.viteConfig, (content) => {
sv.file(file.viteConfig, (content) => {
const { ast, generateCode } = parse.script(content);

const vitePluginName = 'paraglideVitePlugin';
Expand Down Expand Up @@ -152,7 +150,7 @@ export default defineAddon({
return generateCode();
});

sv.file(files.gitignore, (content) => {
sv.file(file.gitignore, (content) => {
if (!content) return content;

content = text.upsert(content, paraglideOutDir, { comment: 'Paraglide' });
Expand All @@ -178,7 +176,7 @@ export default defineAddon({
return generateCode();
});

sv.file(`${kit.routesDirectory}/+layout.svelte`, (content) => {
sv.file(`${directory.kitRoutes}/+layout.svelte`, (content) => {
const { ast, generateCode } = parse.svelte(content);
svelte.ensureScript(ast, { language });
js.imports.addNamed(ast.instance.content, {
Expand All @@ -198,12 +196,12 @@ export default defineAddon({
});

if (options.demo) {
sv.file(`${kit.routesDirectory}/demo/+page.svelte`, (content) => {
sv.file(`${directory.kitRoutes}/demo/+page.svelte`, (content) => {
return addToDemoPage(content, 'paraglide', language);
});

// add usage example
sv.file(`${kit.routesDirectory}/demo/paraglide/+page.svelte`, (content) => {
sv.file(`${directory.kitRoutes}/demo/paraglide/+page.svelte`, (content) => {
const { ast, generateCode } = parse.svelte(content);
svelte.ensureScript(ast, { language });

Expand Down
20 changes: 10 additions & 10 deletions packages/sv/src/addons/playwright.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ export default defineAddon({
shortDescription: 'browser testing',
homepage: 'https://playwright.dev',
options: {},
run: ({ sv, language, files, kit }) => {
run: ({ sv, language, file, isKit, directory }) => {
sv.devDependency('@playwright/test', '^1.58.2');

sv.file(files.package, (content) => {
sv.file(file.package, (content) => {
const { data, generateCode } = parse.json(content);

json.packageScriptsUpsert(data, 'test:e2e', 'playwright test');
Expand All @@ -20,16 +20,16 @@ export default defineAddon({
return generateCode();
});

sv.file(files.gitignore, (content) => {
sv.file(file.gitignore, (content) => {
if (!content) return content;
return text.upsert(content, 'test-results', { comment: 'Playwright' });
});

const testDir = kit ? `${kit.routesDirectory}/demo/playwright` : 'src';
const testRoute = kit ? '/demo/playwright' : '/';
const testDir = isKit ? `${directory.kitRoutes}/demo/playwright` : directory.src;
const testRoute = isKit ? '/demo/playwright' : '/';

if (kit) {
sv.file(`${kit.routesDirectory}/demo/+page.svelte`, (content) => {
if (isKit) {
sv.file(`${directory.kitRoutes}/demo/+page.svelte`, (content) => {
return addToDemoPage(content, 'playwright', language);
});

Expand All @@ -42,7 +42,7 @@ export default defineAddon({
});
}

sv.file(`${testDir}/${kit ? 'page' : 'app'}.svelte.e2e.${language}`, (content) => {
sv.file(`${testDir}/${isKit ? 'page' : 'app'}.svelte.e2e.${language}`, (content) => {
if (content) return content;

return dedent`
Expand Down Expand Up @@ -83,12 +83,12 @@ export default defineAddon({
});
},

nextSteps: ({ kit }) => {
nextSteps: ({ isKit }) => {
const steps: string[] = [];

steps.push(`Run ${color.command('npx playwright install')} to download browsers`);

if (kit) {
if (isKit) {
steps.push(`Visit ${color.route('/demo/playwright')} to see the demo page`);
}

Expand Down
Loading
Loading