diff --git a/.changeset/brave-months-greet.md b/.changeset/brave-months-greet.md new file mode 100644 index 000000000..2f7c00476 --- /dev/null +++ b/.changeset/brave-months-greet.md @@ -0,0 +1,5 @@ +--- +'sv': patch +--- + +feat(paraglide): add a type annotation for the reroute hooks diff --git a/packages/sv/src/addons/paraglide.ts b/packages/sv/src/addons/paraglide.ts index 6bcde3224..bb0900cc8 100644 --- a/packages/sv/src/addons/paraglide.ts +++ b/packages/sv/src/addons/paraglide.ts @@ -67,9 +67,9 @@ export default defineAddon({ const vitePluginName = 'paraglideVitePlugin'; js.imports.addNamed(ast, { imports: [vitePluginName], from: '@inlang/paraglide-js' }); js.vite.addPlugin(ast, { - code: `${vitePluginName}({ - project: './project.inlang', - outdir: './${paraglideOutDir}' + code: `${vitePluginName}({ + project: './project.inlang', + outdir: './${paraglideOutDir}' })` }); @@ -78,7 +78,8 @@ export default defineAddon({ // reroute hook sv.file(`src/hooks.${language}`, (content) => { - const { ast, generateCode } = parse.script(content); + const { ast, generateCode, comments } = parse.script(content); + js.imports.addNamed(ast, { from: '$lib/paraglide/runtime', imports: ['deLocalizeUrl'] @@ -87,9 +88,10 @@ export default defineAddon({ const expression = js.common.parseExpression( '(request) => deLocalizeUrl(request.url).pathname' ); + const rerouteIdentifier = js.variables.declaration(ast, { kind: 'const', - name: 'reroute', + name: `reroute${language === 'ts' ? ': Reroute' : ''}`, value: expression }); @@ -101,6 +103,18 @@ export default defineAddon({ log.warn('Adding the reroute hook automatically failed. Add it manually'); } + if (language === 'ts') { + js.imports.addNamed(ast, { + from: '@sveltejs/kit', + imports: ['Reroute'], + isType: true + }); + } else { + js.common.addJsDocTypeComment(existingExport, comments, { + type: "import('@sveltejs/kit').Reroute" + }); + } + return generateCode(); }); diff --git a/packages/sv/src/cli/tests/snapshots/create-with-all-addons/src/hooks.ts b/packages/sv/src/cli/tests/snapshots/create-with-all-addons/src/hooks.ts index e75600b3e..392875d8b 100644 --- a/packages/sv/src/cli/tests/snapshots/create-with-all-addons/src/hooks.ts +++ b/packages/sv/src/cli/tests/snapshots/create-with-all-addons/src/hooks.ts @@ -1,3 +1,4 @@ +import type { Reroute } from '@sveltejs/kit'; import { deLocalizeUrl } from '$lib/paraglide/runtime'; -export const reroute = (request) => deLocalizeUrl(request.url).pathname; +export const reroute: Reroute = (request) => deLocalizeUrl(request.url).pathname;