From 4d5f159fee27d7d954f61ec0ed01daa2e8af2c27 Mon Sep 17 00:00:00 2001 From: Samuel Stroschein <35429197+samuelstroschein@users.noreply.github.com> Date: Sat, 18 Jan 2025 17:01:28 -0500 Subject: [PATCH 01/12] init paraligde sveltekit from old branch --- .../packages/paraglide-sveltekit/.gitignore | 6 + .../paraglide-sveltekit/.prettierrc.json | 15 + .../packages/paraglide-sveltekit/CHANGELOG.md | 900 ++++++++++++++ inlang/packages/paraglide-sveltekit/README.md | 85 ++ .../paraglide-sveltekit/assets/header.png | Bin 0 -> 287277 bytes .../paraglide-sveltekit/assets/icon.png | Bin 0 -> 4051 bytes .../paraglide-sveltekit/assets/no-param.png | Bin 0 -> 118053 bytes .../paraglide-sveltekit/assets/og.png | Bin 0 -> 204847 bytes .../packages/paraglide-sveltekit/bin/run.js | 4 + .../docs/advanced-usage.md | 66 ++ .../paraglide-sveltekit/docs/deployment.md | 38 + .../docs/localised-routing.md | 193 +++ .../paraglide-sveltekit/docs/manual-setup.md | 140 +++ .../paraglide-sveltekit/docs/roadmap.md | 40 + .../paraglide-sveltekit/docs/why-paraglide.md | 39 + .../paraglide-sveltekit/example/.gitignore | 6 + .../paraglide-sveltekit/example/CHANGELOG.md | 659 +++++++++++ .../paraglide-sveltekit/example/README.md | 16 + .../example/messages/de.json | 18 + .../example/messages/en.json | 18 + .../paraglide-sveltekit/example/package.json | 36 + .../example/project.inlang/.gitignore | 1 + .../example/project.inlang/project_id | 1 + .../example/project.inlang/settings.json | 17 + .../paraglide-sveltekit/example/src/app.d.ts | 18 + .../paraglide-sveltekit/example/src/app.html | 12 + .../paraglide-sveltekit/example/src/hooks.js | 4 + .../example/src/hooks.server.js | 3 + .../example/src/lib/i18n.js | 26 + .../example/src/lib/ui/Header.svelte | 34 + .../src/lib/ui/LanguageSwitcher.svelte | 33 + .../example/src/lib/ui/styles.css | 37 + .../example/src/params/int.js | 16 + .../example/src/routes/+error.svelte | 9 + .../example/src/routes/+layout.server.js | 16 + .../example/src/routes/+layout.svelte | 22 + .../example/src/routes/+page.svelte | 21 + .../example/src/routes/about/+page.svelte | 15 + .../example/src/routes/excluded/+page.svelte | 1 + .../src/routes/matchall/page/+page.svelte | 9 + .../routes/matchall/page/subpage/+page.svelte | 9 + .../src/routes/redirect/+page.server.ts | 9 + .../example/src/routes/redirect/+page.svelte | 3 + .../src/routes/users/[id]/+page.svelte | 23 + .../routes/users/[id]/edit/+page.server.ts | 10 + .../src/routes/users/[id]/edit/+page.svelte | 16 + .../example/svelte.config.js | 21 + .../paraglide-sveltekit/example/tsconfig.json | 17 + .../example/vite.config.ts | 18 + .../marketplace-manifest.json | 53 + .../paraglide-sveltekit/mocks/runtime.js | 143 +++ .../packages/paraglide-sveltekit/package.json | 75 ++ .../scripts/generate_meta.js | 31 + .../src/cli/commands/inits.ts | 73 ++ .../paraglide-sveltekit/src/cli/index.ts | 9 + .../src/cli/steps/addHandleHook.test.ts | 31 + .../src/cli/steps/addHandleHook.ts | 112 ++ .../src/cli/steps/addI18nFile.ts | 45 + .../cli/steps/addParaglideJSComponent.test.ts | 105 ++ .../src/cli/steps/addParaglideJSComponent.ts | 99 ++ .../src/cli/steps/addRerouteFile.ts | 42 + .../src/cli/steps/addVitePlugin.test.ts | 51 + .../src/cli/steps/addVitePlugin.ts | 90 ++ .../src/cli/steps/editAppHtmlFile.test.ts | 24 + .../src/cli/steps/editAppHtmlFile.ts | 77 ++ .../src/cli/steps/scanSvelteKitProject.ts | 68 ++ .../src/cli/steps/updateAppTypes.test.ts | 40 + .../src/cli/steps/updateAppTypes.ts | 86 ++ .../paraglide-sveltekit/src/cli/utils.ts | 89 ++ .../paraglide-sveltekit/src/constants.js | 8 + .../paraglide-sveltekit/src/constants.test.js | 22 + .../paraglide-sveltekit/src/meta.d.ts | 3 + .../src/runtime/AlternateLinks.svelte | 37 + .../src/runtime/ParaglideJS.svelte | 118 ++ .../src/runtime/adapter.client.ts | 214 ++++ .../src/runtime/adapter.server.ts | 316 +++++ .../src/runtime/adapter.test.ts | 98 ++ .../src/runtime/config/pathTranslations.ts | 26 + .../src/runtime/exclude.test.ts | 24 + .../src/runtime/exclude.ts | 11 + .../src/runtime/hooks/handle.server.ts | 189 +++ .../src/runtime/hooks/reroute.test.ts | 39 + .../src/runtime/hooks/reroute.ts | 25 + .../src/runtime/hooks/utils.ts | 34 + .../src/runtime/index.client.ts | 3 + .../src/runtime/index.server.ts | 3 + .../src/runtime/internal/index.js | 82 ++ .../paraglide-sveltekit/src/runtime/locals.ts | 30 + .../src/runtime/runtime.d.ts | 12 + .../src/runtime/strategy.test.ts | 39 + .../src/runtime/strategy.ts | 117 ++ .../src/runtime/utils/cookie.ts | 12 + .../src/runtime/utils/diff-urls.test.ts | 184 +++ .../src/runtime/utils/diff-urls.ts | 27 + .../src/runtime/utils/external.test.ts | 36 + .../src/runtime/utils/external.ts | 4 + .../src/runtime/utils/normaliseBase.test.ts | 20 + .../src/runtime/utils/normaliseBase.ts | 12 + .../src/runtime/utils/path.test.ts | 20 + .../src/runtime/utils/path.ts | 6 + .../src/runtime/utils/route.test.ts | 73 ++ .../src/runtime/utils/route.ts | 72 ++ .../src/runtime/utils/text-dir.test.ts | 21 + .../src/runtime/utils/text-dir.ts | 27 + .../paraglide-sveltekit/src/vite/config.ts | 39 + .../paraglide-sveltekit/src/vite/index.ts | 33 + .../src/vite/preprocessor/index.test.ts | 417 +++++++ .../src/vite/preprocessor/index.ts | 113 ++ .../src/vite/preprocessor/precheck.test.ts | 69 ++ .../src/vite/preprocessor/precheck.ts | 27 + .../src/vite/preprocessor/rewrite.ts | 237 ++++ .../src/vite/preprocessor/types.d.ts | 53 + .../src/vite/preprocessor/utils/ast.ts | 46 + .../utils/attributes-to-values.test.ts | 116 ++ .../utils/attributes-to-values.ts | 56 + .../src/vite/preprocessor/utils/codegen.ts | 50 + .../src/vite/preprocessor/utils/escape.ts | 12 + .../src/vite/preprocessor/utils/identifier.ts | 11 + .../paraglide-sveltekit/svelte.config.js | 8 + .../paraglide-sveltekit/tsconfig.json | 14 + .../paraglide-sveltekit/vitest.config.js | 76 ++ pnpm-lock.yaml | 1037 ++++++++++++++++- 122 files changed, 8386 insertions(+), 35 deletions(-) create mode 100644 inlang/packages/paraglide-sveltekit/.gitignore create mode 100644 inlang/packages/paraglide-sveltekit/.prettierrc.json create mode 100644 inlang/packages/paraglide-sveltekit/CHANGELOG.md create mode 100644 inlang/packages/paraglide-sveltekit/README.md create mode 100644 inlang/packages/paraglide-sveltekit/assets/header.png create mode 100644 inlang/packages/paraglide-sveltekit/assets/icon.png create mode 100644 inlang/packages/paraglide-sveltekit/assets/no-param.png create mode 100644 inlang/packages/paraglide-sveltekit/assets/og.png create mode 100755 inlang/packages/paraglide-sveltekit/bin/run.js create mode 100644 inlang/packages/paraglide-sveltekit/docs/advanced-usage.md create mode 100644 inlang/packages/paraglide-sveltekit/docs/deployment.md create mode 100644 inlang/packages/paraglide-sveltekit/docs/localised-routing.md create mode 100644 inlang/packages/paraglide-sveltekit/docs/manual-setup.md create mode 100644 inlang/packages/paraglide-sveltekit/docs/roadmap.md create mode 100644 inlang/packages/paraglide-sveltekit/docs/why-paraglide.md create mode 100644 inlang/packages/paraglide-sveltekit/example/.gitignore create mode 100644 inlang/packages/paraglide-sveltekit/example/CHANGELOG.md create mode 100644 inlang/packages/paraglide-sveltekit/example/README.md create mode 100644 inlang/packages/paraglide-sveltekit/example/messages/de.json create mode 100644 inlang/packages/paraglide-sveltekit/example/messages/en.json create mode 100644 inlang/packages/paraglide-sveltekit/example/package.json create mode 100644 inlang/packages/paraglide-sveltekit/example/project.inlang/.gitignore create mode 100644 inlang/packages/paraglide-sveltekit/example/project.inlang/project_id create mode 100644 inlang/packages/paraglide-sveltekit/example/project.inlang/settings.json create mode 100644 inlang/packages/paraglide-sveltekit/example/src/app.d.ts create mode 100644 inlang/packages/paraglide-sveltekit/example/src/app.html create mode 100644 inlang/packages/paraglide-sveltekit/example/src/hooks.js create mode 100644 inlang/packages/paraglide-sveltekit/example/src/hooks.server.js create mode 100644 inlang/packages/paraglide-sveltekit/example/src/lib/i18n.js create mode 100644 inlang/packages/paraglide-sveltekit/example/src/lib/ui/Header.svelte create mode 100644 inlang/packages/paraglide-sveltekit/example/src/lib/ui/LanguageSwitcher.svelte create mode 100644 inlang/packages/paraglide-sveltekit/example/src/lib/ui/styles.css create mode 100644 inlang/packages/paraglide-sveltekit/example/src/params/int.js create mode 100644 inlang/packages/paraglide-sveltekit/example/src/routes/+error.svelte create mode 100644 inlang/packages/paraglide-sveltekit/example/src/routes/+layout.server.js create mode 100644 inlang/packages/paraglide-sveltekit/example/src/routes/+layout.svelte create mode 100644 inlang/packages/paraglide-sveltekit/example/src/routes/+page.svelte create mode 100644 inlang/packages/paraglide-sveltekit/example/src/routes/about/+page.svelte create mode 100644 inlang/packages/paraglide-sveltekit/example/src/routes/excluded/+page.svelte create mode 100644 inlang/packages/paraglide-sveltekit/example/src/routes/matchall/page/+page.svelte create mode 100644 inlang/packages/paraglide-sveltekit/example/src/routes/matchall/page/subpage/+page.svelte create mode 100644 inlang/packages/paraglide-sveltekit/example/src/routes/redirect/+page.server.ts create mode 100644 inlang/packages/paraglide-sveltekit/example/src/routes/redirect/+page.svelte create mode 100644 inlang/packages/paraglide-sveltekit/example/src/routes/users/[id]/+page.svelte create mode 100644 inlang/packages/paraglide-sveltekit/example/src/routes/users/[id]/edit/+page.server.ts create mode 100644 inlang/packages/paraglide-sveltekit/example/src/routes/users/[id]/edit/+page.svelte create mode 100644 inlang/packages/paraglide-sveltekit/example/svelte.config.js create mode 100644 inlang/packages/paraglide-sveltekit/example/tsconfig.json create mode 100644 inlang/packages/paraglide-sveltekit/example/vite.config.ts create mode 100644 inlang/packages/paraglide-sveltekit/marketplace-manifest.json create mode 100644 inlang/packages/paraglide-sveltekit/mocks/runtime.js create mode 100644 inlang/packages/paraglide-sveltekit/package.json create mode 100644 inlang/packages/paraglide-sveltekit/scripts/generate_meta.js create mode 100644 inlang/packages/paraglide-sveltekit/src/cli/commands/inits.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/cli/index.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/cli/steps/addHandleHook.test.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/cli/steps/addHandleHook.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/cli/steps/addI18nFile.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/cli/steps/addParaglideJSComponent.test.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/cli/steps/addParaglideJSComponent.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/cli/steps/addRerouteFile.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/cli/steps/addVitePlugin.test.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/cli/steps/addVitePlugin.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/cli/steps/editAppHtmlFile.test.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/cli/steps/editAppHtmlFile.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/cli/steps/scanSvelteKitProject.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/cli/steps/updateAppTypes.test.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/cli/steps/updateAppTypes.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/cli/utils.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/constants.js create mode 100644 inlang/packages/paraglide-sveltekit/src/constants.test.js create mode 100644 inlang/packages/paraglide-sveltekit/src/meta.d.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/AlternateLinks.svelte create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/ParaglideJS.svelte create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/adapter.client.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/adapter.server.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/adapter.test.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/config/pathTranslations.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/exclude.test.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/exclude.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/hooks/handle.server.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/hooks/reroute.test.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/hooks/reroute.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/hooks/utils.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/index.client.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/index.server.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/internal/index.js create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/locals.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/runtime.d.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/strategy.test.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/strategy.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/utils/cookie.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/utils/diff-urls.test.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/utils/diff-urls.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/utils/external.test.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/utils/external.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/utils/normaliseBase.test.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/utils/normaliseBase.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/utils/path.test.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/utils/path.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/utils/route.test.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/utils/route.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/utils/text-dir.test.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/utils/text-dir.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/vite/config.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/vite/index.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/vite/preprocessor/index.test.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/vite/preprocessor/index.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/vite/preprocessor/precheck.test.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/vite/preprocessor/precheck.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/vite/preprocessor/rewrite.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/vite/preprocessor/types.d.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/ast.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/attributes-to-values.test.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/attributes-to-values.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/codegen.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/escape.ts create mode 100644 inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/identifier.ts create mode 100644 inlang/packages/paraglide-sveltekit/svelte.config.js create mode 100644 inlang/packages/paraglide-sveltekit/tsconfig.json create mode 100644 inlang/packages/paraglide-sveltekit/vitest.config.js diff --git a/inlang/packages/paraglide-sveltekit/.gitignore b/inlang/packages/paraglide-sveltekit/.gitignore new file mode 100644 index 0000000000..7ea79793d9 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/.gitignore @@ -0,0 +1,6 @@ +node_modules +.svelte-kit +dist +.vercel +src/meta.js +paraglide.d.ts \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/.prettierrc.json b/inlang/packages/paraglide-sveltekit/.prettierrc.json new file mode 100644 index 0000000000..aed7f76654 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/.prettierrc.json @@ -0,0 +1,15 @@ +{ + "semi": false, + "useTabs": true, + "printWidth": 100, + "trailingComma": "es5", + "plugins": ["prettier-plugin-svelte"], + "overrides": [ + { + "files": "*.svelte", + "options": { + "parser": "svelte" + } + } + ] +} diff --git a/inlang/packages/paraglide-sveltekit/CHANGELOG.md b/inlang/packages/paraglide-sveltekit/CHANGELOG.md new file mode 100644 index 0000000000..2f46149cf9 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/CHANGELOG.md @@ -0,0 +1,900 @@ +# @inlang/paraglide-sveltekit + +## 0.15.5 + +### Patch Changes + +- @inlang/paraglide-js@1.11.8 +- @inlang/paraglide-vite@1.3.5 + +## 0.15.4 + +### Patch Changes + +- @inlang/paraglide-vite@1.3.4 + +## 0.15.3 + +### Patch Changes + +- Updated dependencies + - @inlang/paraglide-js@1.11.7 + - @inlang/paraglide-vite@1.3.3 + +## 0.15.2 + +### Patch Changes + +- Updated dependencies [3123e85] + - @inlang/paraglide-js@1.11.6 + - @inlang/paraglide-vite@1.3.2 + +## 0.15.1 + +### Patch Changes + +- Updated dependencies + - @inlang/paraglide-js@1.11.5 + - @inlang/paraglide-vite@1.3.1 + +## 0.15.0 + +### Minor Changes + +- 88b87b9: Updates internal components to Svelte 5 rune syntax. Closes https://github.com/opral/inlang-paraglide-js/issues/262 and fixes https://github.com/opral/inlang-paraglide-js/issues/272. + +## 0.14.0 + +### Minor Changes + +- 80727ee: Add `experimentalUseVirtualModules` option to use the `$paraglide` virtual module instead of writing files to disk. Closes https://github.com/opral/inlang-paraglide-js/issues/264 + + - good for projects that can't have `allowJs: true` in their TypeScript config https://github.com/opral/inlang-paraglide-js/issues/238 + - less clutter in the compiled output directory https://github.com/opral/inlang-paraglide-js/issues/189 + + ```diff + import { paraglide } from "@inlang/paraglide-sveltekit/vite" + import { defineConfig } from "vite" + + export default defineConfig({ + plugins: [ + paraglide({ + project: "./project.inlang", + outdir: "./src/lib/paraglide", + + experimentalUseVirtualModules: true, + }), + // ... other vite plugins + ], + }) + ``` + + The compiled output will only emit the `runtime.d.ts` and `messages.d.ts` files. + + ```diff + . + └── src/ + └── paraglide/ + - ├── messages/ + - │ ├── de.js + - │ ├── en.js + - │ ├── fr.js + - │ └── ... + - ├── messages.js + + ├── messages.d.ts + - └── runtime.js + + ├── runtime.d.ts + ``` + +### Patch Changes + +- Updated dependencies [80727ee] + - @inlang/paraglide-vite@1.3.0 + +## 0.13.1 + +### Patch Changes + +- reverts 0.13.0 because it leads to a crash in production https://github.com/opral/inlang-paraglide-js/issues/272 + +## 0.13.0 + +### Minor Changes + +- 1ea4bd8: Svelte 5 runes are used in the Paraglide component. Closes https://github.com/opral/inlang-paraglide-js/issues/262 + +## 0.12.1 + +### Patch Changes + +- 7857f62: fixes "`a11y-missing-attribute` is no longer valid — please use `a11y_missing_attribute` instead" + + https://github.com/opral/inlang-paraglide-js/issues/259 + +## 0.12.0 + +### Minor Changes + +- ca227dd: Add Vary header to redirects that invalidate cache if the cookie or accept language header changes. + +### Patch Changes + +- @inlang/paraglide-vite@1.2.77 + +## 0.11.5 + +### Patch Changes + +- bc1e49e: Fixes a silent runtime bug for load functions that depent on paraglide. See https://github.com/opral/monorepo/pull/3184 and https://discord.com/channels/897438559458430986/1297558489182375978/1297645584210985021. + + It's a regression bug of `0.11.2` and `0.11.3`. + +## 0.11.4 + +### Patch Changes + +- https://github.com/opral/monorepo/pull/3183 + +## 0.11.3 + +### Patch Changes + +- 559bc44: Fixed https://github.com/opral/inlang-paraglide-js/issues/243. + + Regression bug after 0.11.1 release. The cookie has been renamed from `paraglide:lang` to `paraglide_lang` but the SvelteKit load function was not updated from the old cookie name. + +## 0.11.2 + +### Patch Changes + +- @inlang/paraglide-vite@1.2.76 + +## 0.11.1 + +### Patch Changes + +- f8565fa: Fixes https://github.com/opral/inlang-paraglide-js/issues/234. + + Paraglide SvelteKit used the cookie name `paraglide:lang` which is + not compliant with rfc6265 standards for cookie names. SvelteKit + recently introduced strict cookie parsing which caused + `paraglide:lang` to be rejected. + + The cookie name has been updated to `paraglide_lang` to be compliant. + + ```diff + -paraglide:lang + +paraglide_lang + ``` + +- Updated dependencies [e04d5fe] +- Updated dependencies [a1ea1ff] +- Updated dependencies [fa42a3a] + - @inlang/paraglide-js@1.11.3 + - @inlang/paraglide-vite@1.2.75 + +## 0.11.0 + +### Minor Changes + +- 82581f7: Adds a `disableAsyncLocalStorage` option to `i18n.handle`. This allows you to opt out of using the experimental `AsyncLocalStorage` API. + + **Warning** + Disabling `AsyncLocalStorage` removes the protection against concurrent requests overriding each other's language state. + + Only opt out if `AsyncLocalStorage` if you are certain your environment does not handle concurrent requests in the same process. For example in Vercel Edge functions or Cloudflare Workers. + + In environments where only one request is processed in a given process disabling `AsyncLocalStorage` can yield performance gains. + + **Example** + + ```ts + // src/hooks.server.js + import { i18n } from "$lib/i18n" + + export const handle = i18n.handle({ + disableAsyncLocalStorage: true, // @default = false + }) + ``` + +### Patch Changes + +- 72b2f34: fix: Preserve query parameters when redirecting ([inlang-paraglide-js#168](https://github.com/opral/inlang-paraglide-js/issues/168)) + + `i18n.handle` redirects requests if the pathname does not fit the detected language. Previously this would remove any query parameters from the URL. This is no longer the case. + + ```ts + redirect(303, "/login?from=/home") // will be redirected to //login?from=/home + ``` + +- Updated dependencies [59c8b11] + - @inlang/paraglide-js@1.11.2 + - @inlang/paraglide-vite@1.2.74 + +## 0.10.10 + +### Patch Changes + +- Updated dependencies [14d80b3] + - @inlang/paraglide-js@1.11.1 + - @inlang/paraglide-vite@1.2.73 + +## 0.10.9 + +### Patch Changes + +- cf4019d: remove `console.log` statement that managed to slip by linting + +## 0.10.8 + +### Patch Changes + +- 5ec62a4: Fixes a couple issues with the base-path during prerendering + - SSRd language during prerendering is now correct when using a base-path + - Alternate links are correctly generated during prerendering + +## 0.10.7 + +### Patch Changes + +- Updated dependencies [e37eabf] + - @inlang/paraglide-js@1.11.0 + - @lix-js/client@2.2.1 + - @inlang/paraglide-vite@1.2.72 + +## 0.10.6 + +### Patch Changes + +- bcd894f: `init` command now generates the `src/lib` directory if it does not exist. Previously it would just crash + - @inlang/paraglide-js@1.10.1 + - @inlang/paraglide-vite@1.2.71 + +## 0.10.5 + +### Patch Changes + +- Updated dependencies [c5d145d] + - @inlang/paraglide-js@1.10.1 + - @inlang/paraglide-vite@1.2.70 + +## 0.10.4 + +### Patch Changes + +- Updated dependencies [33662e6] + - @inlang/paraglide-js@1.10.0 + - @inlang/paraglide-vite@1.2.69 + +## 0.10.3 + +### Patch Changes + +- @inlang/paraglide-js@1.9.1 +- @inlang/paraglide-vite@1.2.68 + +## 0.10.2 + +### Patch Changes + +- b5d4a4c: fix regression with `exclude` option + +## 0.10.1 + +### Patch Changes + +- ecef103: fix how `AsyncLocalStorage` is handled accross requests + +## 0.10.0 + +### Minor Changes + +- 928742b: Make `languageTag()` and message functions available in server-side load function. + + This eliminates the need for + + - `event.locals.paraglide.lang` anywhere. + - Manually passing the language tag to message functions that are used in load functions / actions. + +## 0.9.7 + +### Patch Changes + +- @inlang/paraglide-js@1.9.1 +- @inlang/paraglide-vite@1.2.67 + +## 0.9.6 + +### Patch Changes + +- 1ea7b14: Explicitly mark `paraglide:lang` cookie as _not_ `HttpOnly`. + - @inlang/paraglide-js@1.9.1 + +## 0.9.5 + +### Patch Changes + +- 08a1e3f: Fix translation of hrefs that don't include a path. This is especially important with form actions. + +## 0.9.4 + +### Patch Changes + +- @inlang/paraglide-js@1.9.1 +- @inlang/paraglide-vite@1.2.66 + +## 0.9.3 + +### Patch Changes + +- def2d4e: fix: Also update the `paraglide:lang` cookie on the client to allow for better language negotiation + - @inlang/paraglide-js@1.9.1 + - @inlang/paraglide-vite@1.2.65 + +## 0.9.2 + +### Patch Changes + +- @inlang/paraglide-js@1.9.1 +- @inlang/paraglide-vite@1.2.64 + +## 0.9.1 + +### Patch Changes + +- f0192d2: Invalid `href`s in your app no longer cause errors to be thrown in ``. During development a warning is logged. +- 255fd41: The link preprocessor no longer crashes when encountering a file with a syntax error. Insetad it will log a warning & noop. Reporting the error is delegated to the main svelte parser. + +## 0.9.0 + +### Minor Changes + +- 76e7f20: Add the `ParaglideLocals` interface for properly typing paraglide's locals. It should be added in `app.d.ts` under `Locals.paraglide`. The `init` CLI will do this automatically +- 8db2224: Previously, if the default language was available on the root `/`, then it would still be available under `/[lang]`. This was never intended & no longer the case. + + If you still want this behavior set the `prefixDefaultLanguage` to `"always"` in your `i18n` config. + +### Patch Changes + +- 6319391: Fix: Excluded routes now use the default language instead of incorrecly attempting to detect the language form the URL + +## 0.8.7 + +### Patch Changes + +- @inlang/paraglide-js@1.9.1 +- @inlang/paraglide-vite@1.2.63 + +## 0.8.6 + +### Patch Changes + +- Updated dependencies [3b2e0a6] + - @lix-js/client@2.2.0 + - @inlang/paraglide-js@1.9.1 + - @inlang/paraglide-vite@1.2.62 + +## 0.8.5 + +### Patch Changes + +- Updated dependencies [548bc9e] + - @lix-js/client@2.1.0 + - @inlang/paraglide-js@1.9.1 + - @inlang/paraglide-vite@1.2.61 + +## 0.8.4 + +### Patch Changes + +- @inlang/paraglide-js@1.9.1 +- @lix-js/client@2.0.1 +- @inlang/paraglide-vite@1.2.60 + +## 0.8.3 + +### Patch Changes + +- Updated dependencies [00ad046] + - @lix-js/client@2.0.0 + - @inlang/paraglide-js@1.9.1 + - @inlang/paraglide-vite@1.2.59 + +## 0.8.2 + +### Patch Changes + +- @inlang/paraglide-vite@1.2.58 +- @inlang/paraglide-js@1.9.1 + +## 0.8.1 + +### Patch Changes + +- fbac297: Fix `bin` field in `package.json` + +## 0.8.0 + +### Minor Changes + +- 0bf4d74: Added an `@inlang/paraglide-sveltekit init` command to automatically add `paraglide-sveltekit` to your project + +### Patch Changes + +- 75cf8fd: Prompt about adding the VsCode extension and Github Action during `paraglide-sveltekit init` +- a27b7a4: This reintroduces reactivity to lint reports - see https://github.com/opral/monorepo/pull/2792 for more details +- Updated dependencies [b8573fa] + - @inlang/paraglide-js@1.9.1 + - @inlang/paraglide-vite@1.2.57 + +## 0.7.0 + +### Minor Changes + +- 3e9b863: Use Svelte 5 compiler in the preprocessor for rewriting links + +### Patch Changes + +- Updated dependencies [eb941fe] +- Updated dependencies [9566348] + - @inlang/paraglide-js@1.9.0 + - @inlang/paraglide-vite@1.2.56 + +## 0.6.23 + +### Patch Changes + +- @inlang/paraglide-js@1.8.0 +- @inlang/paraglide-vite@1.2.55 + +## 0.6.22 + +### Patch Changes + +- @inlang/paraglide-js@1.8.0 +- @inlang/paraglide-vite@1.2.54 + +## 0.6.21 + +### Patch Changes + +- @inlang/paraglide-js@1.8.0 +- @inlang/paraglide-vite@1.2.53 + +## 0.6.20 + +### Patch Changes + +- @inlang/paraglide-js@1.8.0 +- @inlang/paraglide-vite@1.2.52 + +## 0.6.19 + +### Patch Changes + +- 1e5320e: Protect against the preprocessor being applied twice + +## 0.6.18 + +### Patch Changes + +- @inlang/paraglide-js@1.8.0 +- @inlang/paraglide-vite@1.2.51 + +## 0.6.17 + +### Patch Changes + +- @inlang/paraglide-vite@1.2.50 + +## 0.6.16 + +### Patch Changes + +- @inlang/paraglide-js@1.8.0 +- @inlang/paraglide-vite@1.2.49 + +## 0.6.15 + +### Patch Changes + +- Updated dependencies [21ab0a0] +- Updated dependencies [21ab0a0] + - @inlang/paraglide-js@1.8.0 + - @inlang/paraglide-vite@1.2.48 + +## 0.6.14 + +### Patch Changes + +- 419d8b6: Fix issue where the localised routing didn't always use the most specific pathname as outlined in https://kit.svelte.dev/docs/advanced-routing#sorting +- Updated dependencies [32cbe48] + - @inlang/paraglide-js@1.7.3 + - @inlang/paraglide-vite@1.2.47 + +## 0.6.13 + +### Patch Changes + +- @inlang/paraglide-js@1.7.2 +- @inlang/paraglide-vite@1.2.46 + +## 0.6.12 + +### Patch Changes + +- @inlang/paraglide-js@1.7.2 +- @inlang/paraglide-vite@1.2.45 + +## 0.6.11 + +### Patch Changes + +- Updated dependencies [6105a50] + - @inlang/paraglide-js@1.7.2 + - @inlang/paraglide-vite@1.2.44 + +## 0.6.10 + +### Patch Changes + +- @inlang/paraglide-js@1.7.1 +- @inlang/paraglide-vite@1.2.43 + +## 0.6.9 + +### Patch Changes + +- Updated dependencies [4d24188] + - @inlang/paraglide-js@1.7.1 + - @inlang/paraglide-vite@1.2.42 + +## 0.6.8 + +### Patch Changes + +- @inlang/paraglide-js@1.7.0 +- @inlang/paraglide-vite@1.2.41 + +## 0.6.7 + +### Patch Changes + +- Updated dependencies [0774c1a] + - @inlang/paraglide-js@1.7.0 + - @inlang/paraglide-js-adapter-vite@1.2.40 + +## 0.6.6 + +### Patch Changes + +- cee4692: Use index accesses instead of `.at` function for better compatability with legacy browsers +- 4b631aa: Update invalid type-declarations +- Updated dependencies [cee4692] +- Updated dependencies [4b631aa] +- Updated dependencies [3c7a87c] +- Updated dependencies [ab1fe48] + - @inlang/paraglide-js@1.6.2 + - @inlang/paraglide-js-adapter-vite@1.2.39 + +## 0.6.5 + +### Patch Changes + +- Updated dependencies [fa6aa31] +- Updated dependencies [dee5aa6] + - @inlang/paraglide-js@1.6.1 + - @inlang/paraglide-js-adapter-vite@1.2.38 + +## 0.6.4 + +### Patch Changes + +- Updated dependencies [462325b] + - @inlang/paraglide-js@1.6.0 + - @inlang/paraglide-js-adapter-vite@1.2.37 + +## 0.6.3 + +### Patch Changes + +- @inlang/paraglide-js-adapter-vite@1.2.36 + +## 0.6.2 + +### Patch Changes + +- cdbb415: Fix crash when switching languages on a route tthat ends with a `[...rest]` parameter when there is a trailing slash + +## 0.6.1 + +### Patch Changes + +- a4d4e10: Fix crashe when navigating to `/{lang}/` with `trailingSlash="always"` + +## 0.6.0 + +### Minor Changes + +- 1642873: Param Matchers are now supported. They can be passed to `createI18n` alongside `pathnames` with the `matchers` option. +- ce0b961: Wildcard and optional parameters are now supported for translated pathnames + +### Patch Changes + +- 690656e: Trailing Slashes are now preserverd more reliably if present + - @inlang/paraglide-js-adapter-vite@1.2.35 + +## 0.5.22 + +### Patch Changes + +- @inlang/paraglide-js-adapter-vite@1.2.34 + +## 0.5.21 + +### Patch Changes + +- @inlang/paraglide-js-adapter-vite@1.2.33 + +## 0.5.20 + +### Patch Changes + +- @inlang/paraglide-js-adapter-vite@1.2.32 + +## 0.5.19 + +### Patch Changes + +- @inlang/paraglide-js-adapter-vite@1.2.31 + +## 0.5.18 + +### Patch Changes + +- @inlang/paraglide-js-adapter-vite@1.2.30 + +## 0.5.17 + +### Patch Changes + +- @inlang/paraglide-js-adapter-vite@1.2.29 + +## 0.5.16 + +### Patch Changes + +- @inlang/paraglide-js-adapter-vite@1.2.28 + +## 0.5.15 + +### Patch Changes + +- @inlang/paraglide-js-adapter-vite@1.2.27 + +## 0.5.14 + +### Patch Changes + +- d052495: fix: Log filename when warning about using `` tags in the same file as `` + - @inlang/paraglide-js-adapter-vite@1.2.26 + +## 0.5.13 + +### Patch Changes + +- @inlang/paraglide-js-adapter-vite@1.2.25 + +## 0.5.12 + +### Patch Changes + +- @inlang/paraglide-js-adapter-vite@1.2.24 + +## 0.5.11 + +### Patch Changes + +- ef4e0ab: fix: preserve trailing slash when translating hrefs + - @inlang/paraglide-js-adapter-vite@1.2.23 + +## 0.5.10 + +### Patch Changes + +- @inlang/paraglide-js-adapter-vite@1.2.22 + +## 0.5.9 + +### Patch Changes + +- @inlang/paraglide-js-adapter-vite@1.2.21 + +## 0.5.8 + +### Patch Changes + +- 62e4a5c: Add warning message if an `` tag is used in the same component as `` since they can't be translated + - @inlang/paraglide-js-adapter-vite@1.2.20 + +## 0.5.7 + +### Patch Changes + +- @inlang/paraglide-js-adapter-vite@1.2.19 + +## 0.5.6 + +### Patch Changes + +- bce060367: fix: make `svelte` a peer dependency + - @inlang/paraglide-js-adapter-vite@1.2.18 + +## 0.5.5 + +### Patch Changes + +- @inlang/paraglide-js-adapter-vite@1.2.17 + +## 0.5.4 + +### Patch Changes + +- 5d25b889a: log warning if the `lang` attribute isn't updated in `src/app.html` + +## 0.5.3 + +### Patch Changes + +- 726690acb: fix: Disable some lint errors when internally rewriting links with the spread syntax to avoid annoying logs (https://discord.com/channels/897438559458430986/1070750156644962434/1212320293578874880) + +## 0.5.2 + +### Patch Changes + +- @inlang/paraglide-js-adapter-vite@1.2.16 + +## 0.5.1 + +### Patch Changes + +- a7b593e9a: fix: double-execution of `load` on initial load + +## 0.5.0 + +### Minor Changes + +- e4e879c77: feat: Automatically call `invalidate("paraglide:lang")` when the language changes. You can now call `depends("paraglide:lang")` in your server-load functions to have them re-run on language changes. + +### Patch Changes + +- 7f566ae73: fix reactivity issue in Svelte 5 [#2270](https://github.com/opral/monorepo/issues/2270) +- 21a3890cc: fix: Corrected comments saying the default placeholder for the text-direction is `%paraglide.dir%` when it's `%paraglide.textDirection%` +- 37a247c0e: fix: `i18n.resolveRoute` now ignores paths that don't start with the base +- 37a247c0e: fix: Alternate links will not include the origin during prerendering, unless one is explicitly specified in `kit.prerender.origin` + +## 0.4.1 + +### Patch Changes + +- @inlang/paraglide-js-adapter-vite@1.2.15 + +## 0.4.0 + +### Minor Changes + +- 45f5d8256: Message function can now be used as pathname translations + +## 0.3.7 + +### Patch Changes + +- @inlang/paraglide-js-adapter-vite@1.2.14 + +## 0.3.6 + +### Patch Changes + +- @inlang/paraglide-js-adapter-vite@1.2.13 + +## 0.3.5 + +### Patch Changes + +- eaef718ee: Treeshake away `i18n.handle` on the client to reduce bundle size + +## 0.3.4 + +### Patch Changes + +- 3aa1b6ca3: fix [#2717](https://github.com/opral/monorepo/issues/2171) - Link rewrite reactivity issue when navigating between pages + - @inlang/paraglide-js-adapter-vite@1.2.12 + +## 0.3.3 + +### Patch Changes + +- 0efbc35c5: The `href` attribute on `` component to `seo` option on `createI18n` +- 021ae3e80: feat: Add `textDirection` option to `createI18n` for text-direction. If omitted, an automatically detected text-direction will be used. + +### Patch Changes + +- da9b91ff4: fix: Rewrite {...spreadAttributes} +- cfa1b0175: fix: Crawl `{:else}`, `{:then}` and `{:catch}` blocks for links to rewrite +- cfa1b0175: fix: Rewrite attributes on `` + +## 0.2.5 + +### Patch Changes + +- @inlang/paraglide-js-adapter-vite@1.2.10 + +## 0.2.4 + +### Patch Changes + +- @inlang/paraglide-js-adapter-vite@1.2.9 + +## 0.2.3 + +### Patch Changes + +- 0305ce54e: fix broken globbing for `exclude` option causing the wrong routes to be excluded + +## 0.2.2 + +### Patch Changes + +- 6ac6e3be9: fix: make `exclude` option optional + +## 0.2.1 + +### Patch Changes + +- 117c684d0: fix base resolution issue in `route` + +## 0.2.0 + +### Minor Changes + +- 87135ae38: Rename `route` to `resolveRoute` and `getCanonicalPath` to `route` - As to be more inline with SvelteKit's naming convention + +### Patch Changes + +- 87135ae38: fix base-path normalisation issue + +## 0.1.2 + +### Patch Changes + +- @inlang/paraglide-js-adapter-vite@1.2.8 + +## 0.1.1 + +hotfix: Build unbuilt TypeScript so that the package can be used in non-TypeScript projects. + +## 0.1.0 + +First public prerelease of the SvelteKit adapter for Paraglide. diff --git a/inlang/packages/paraglide-sveltekit/README.md b/inlang/packages/paraglide-sveltekit/README.md new file mode 100644 index 0000000000..0717cc5338 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/README.md @@ -0,0 +1,85 @@ +[![Inlang-ecosystem compatibility badge](https://cdn.jsdelivr.net/gh/opral/monorepo@main/inlang/assets/md-badges/inlang.svg)](https://inlang.com) + +## Getting Started + +Get started instantly with the Paraglide-SvelteKit CLI. + +```bash +npx @inlang/paraglide-sveltekit init +npm install +``` + +The CLI will ask you which languages you want to support. This can be changed later. + +- Create an [Inlang Project](https://inlang.com/documentation/concept/project) +- Create translation files for each of your languages +- Add necessary Provider Components and files +- Update your `vite.config.js` file to use the Paraglide-SvelteKit Plugin. + +You can now start your development server and visit `/de`, `/ar`, or whatever languages you've set up. + +## Creating Messages + +Your messages live in `messages/{languageTag}.json` files. You can add messages in these files as key-value pairs of the message ID and the translations. + +Use curly braces to add parameters. + +```json +// messages/en.json +{ + // The $schema key is automatically ignored + "$schema": "https://inlang.com/schema/inlang-message-format", + + "hello_world": "Hello World!", + "greetings": "Greetings {name}." +} +``` + +Learn more about the format in the [Inlang Message Format Documentation](https://inlang.com/m/reootnfj/plugin-inlang-messageFormat). + +Note: _All_ messages you use in your project must be added to these files. It is not possible to dynamically add more messages at runtime. + +## Using messages in Code + +The Paraglide compiler will generate a `src/lib/paraglide/messages.js` file that contains your messages. Import messages from there. By convention, a wildcard import is used. + +```svelte + + +

{m.homepage_title()}

+

{m.homepage_subtitle({ some: "param" })}

+``` + +Only messages used on the current page are sent to the client. Any messages that aren't used on the current page will be tree-shaken out. + +## Accessing Language in Code + +You can access the current language with the `languageTag()` function. + +```svelte + + +

{languageTag()}

+``` + +On the server `languageTag()` is scoped to the current request, there is no danger of multiple requests interfering. `languageTag()` can safely be called in server-load functions and form actions. + +## Language detection + +The language is determined based on the URL. If the first segment of the URL is a language tag, that language will be used. If no language tag is present, the default language will be used. + +- `/about` - English +- `/de/about` - German + +The `reroute` hook in `src/hooks.js` (added automatically) automatically rewrites requests that include the language in the URL to the correct page. There is **no need** to modify your routes to add a `[locale]` segment. + +```fs +src/ + routes/ + +layout.svelte + +page.svelte +``` \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/assets/header.png b/inlang/packages/paraglide-sveltekit/assets/header.png new file mode 100644 index 0000000000000000000000000000000000000000..167deb5873552b6dbc67fcdc0c4389d37c35ace3 GIT binary patch literal 287277 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

Y*p4tD4ZiZ^(#?UY#)O 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

*UsHv}|k3}*R7@wGLF21i%i+%(OADpBs$ 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ⓈL=qXL-hX5*~l_DSDul^ZdNHGX&Yi!5pq4>4_ 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 o8IHAX^ou`Xj;;=M(9j$I3lB!v;{X5v literal 0 HcmV?d00001 diff --git a/inlang/packages/paraglide-sveltekit/bin/run.js b/inlang/packages/paraglide-sveltekit/bin/run.js new file mode 100755 index 0000000000..d4f1a6f1cf --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/bin/run.js @@ -0,0 +1,4 @@ +#!/usr/bin/env node +import { cli } from "../dist/cli/index.js" + +cli.parse() diff --git a/inlang/packages/paraglide-sveltekit/docs/advanced-usage.md b/inlang/packages/paraglide-sveltekit/docs/advanced-usage.md new file mode 100644 index 0000000000..517cbf2012 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/docs/advanced-usage.md @@ -0,0 +1,66 @@ +# Advanced Setup + +## Excluding certain routes + +> ⚠️ The `exclude` option has been reported as buggy. +> +> If you encounter any issues with it, please open a PR that fixes/ +> improves the exlusion mechanism. A PR will be reviewed promptly. + +Exclude routes from being translated with the `exclude` option. + +```js +// src/lib/i18n.js +import { createI18n } from "@inlang/paraglide-sveltekit" +import * as runtime from "$lib/paraglide/runtime.js" + +export const i18n = createI18n(runtime, { + // don't include the /api/ routes + // this matches any route that starts with /api/ + exclude: [/^\/api\//], +}) +``` + +Excluded routes will: +- Not have any `rel="alternate"` links added to them +- Not have their Paths translated +- Not have links pointing to them translated + +Make sure excluded pages are still wrapped in the `` so that outgoing links are still translated. + +## Text direction + +Paraglide guesses the text direction using the `Intl.Locale` API. This is not supported in all runtimes. Use the `textDirection` option to provide the text direction yourself. + +```js +// src/lib/i18n.js +import { createI18n } from "@inlang/paraglide-sveltekit" +import * as runtime from "$lib/paraglide/runtime.js" + +export const i18n = createI18n(runtime, { + textDirection: { + en: "ltr", + ar: "rtl", + }, +}) +``` + +## Full URLs in `` tags + +According to the spec, alternate links for pages must be full URLs. Do this by setting the `prerender.origin` option in your svelte.config.js. + +```ts +// svelte.config.js + +/** @type {import('@sveltejs/kit').Config} */ +const config = { + kit: { + // ... + prerender: { + origin: "https://example.com", + }, + }, +} + +export default config +``` \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/docs/deployment.md b/inlang/packages/paraglide-sveltekit/docs/deployment.md new file mode 100644 index 0000000000..aa8cd319dd --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/docs/deployment.md @@ -0,0 +1,38 @@ +# Deployment + +Deploying a SvelteKit App using `Paraglide-Sveltekit` is usually no different than deploying a normal SvelteKit App. + +However, there are some considerations you may want to take with certain hosting providers. + +## Serverless Providers + +`Paraglide-SvelteKit` makes use of `AsyncLocalStorage` to keep track of the language on the server without introducing cross-talk between concurrent requests. + +Serverless providers usually spawn an instance of the server for _each_ request, so this isn't necessary. To improve performance you can disable it. + +```ts +// src/hooks.server.js +import { i18n } from "$lib/i18n" + +export const handle = i18n.handle({ + disableAsyncLocalStorage: true, // @default = false +}) +``` + +## Deployment on Cloudflare + +`Paraglide-SvelteKit` makes use of `AsyncLocalStorage`. `AsyncLocalStorage` is supported on Cloudflare, but you need to enable the `nodejs_als` feature flag in `wrangler.toml`. + +```toml +compatibility_flags = [ "nodejs_als" ] +``` + +## Issues on Vercel + +SvelteKit's `reroute` hook currently doens't play well with Vercel (see [sveltejs/kit#11879](https://github.com/sveltejs/kit/issues/11879)), which means that we need to slightly adapt the setup to make it work when deployed to Vercel. + +1. Remove the `reroute` hook from `src/hooks.js` +2. Move the routes you want to localize `routes` into a `[[locale]]` folder +3. Don't use translated `pathnames` + +We are working on contributing a fix for [sveltejs/kit#11879](https://github.com/sveltejs/kit/issues/11879), so this workaround will hopefully not be needed much longer. diff --git a/inlang/packages/paraglide-sveltekit/docs/localised-routing.md b/inlang/packages/paraglide-sveltekit/docs/localised-routing.md new file mode 100644 index 0000000000..4b9ac2a3bb --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/docs/localised-routing.md @@ -0,0 +1,193 @@ +--- +title: Localised Routing +description: Learn how the localised routing works in Paraglide-SvelteKit, how to use translated pathnames and how to do language negotiation. +--- + +# Localised Routing + +### Translated Paths + +You can have different paths for each language with the `pathnames` option. Don't include the language or the [base path](https://kit.svelte.dev/docs/configuration#paths). + +- `/about` for English (default language) +- `/de/uber-uns` for German +- `/fr/a-propos` for French + +```js +// src/lib/i18n.js +import { createI18n } from "@inlang/paraglide-sveltekit" +import * as runtime from "$lib/paraglide/runtime.js" +import * as m from "$lib/paraglide/messages.js" +import { match as int } from "../params/int.js" + +export const i18n = createI18n(runtime, { + pathnames: { + "/about" : { + en: "/about", + de: "/uber-uns", + fr: "/a-propos", + }, + + // You can use parameters + // All translations must use identical parameters and names + "/user/[id=int]/[...rest]" : { + en: "/user/[id=int]/[...rest]", + de: "/benutzer/[id=int]/[...rest]", + fr: "/utilisateur/[id=int]/[...rest]", + }, + // Instead of a map, you can also pass a message-function reference + "/admin" : m.admin_path + } + + // If you're using matchers in the pathnames, you need to pass them + matchers: { int } +}) +``` + +By default the default language is located on your base path. Usually `/`. Unlike the other languages it does not have a language prefix. + +This reflects the default `prefixDefaultLanguage: "never"` behavior. + +If you want to also have a prefix for the default language, use the `prefixDefaultLanguage: "always"` option. + +```ts +// src/lib/i18n.js +export const i18n = createI18n(runtime, { + prefixDefaultLanguage: "always", +}) +``` + +This does make it ambigous which language should be used on `/` so language negotiation will kick in. + +### Language Negotiation + +Whenever the language cannot be determined from the URL alone the language negotiation is triggered. This happens in the following steps: + +1. Check if the `paraglide_lang` cookie is set from previous visits, if so, use it +2. Negotiate the language from the `Accept-Language` header +3. Use the default language + +After language negotiation you will be redirected to include the language in the URL. + +### Changing the default Language + +Usually your default language is the same as the `sourceLanguageTag` of your Inlang Project, but it doesn't have to be. + +You can change it by passing a `defaultLanguageTag` option to `createI18n` + +```ts +// src/lib/i18n.js + +// sourceLanguageTag = "en" +export const i18n = createI18n(runtime, { + defaultLanguageTag: "de", +}) +``` + +## Automatic Link Localisation + +`Paraglide-Sveltekit` automatically translates links on your components using a preprocessor. This affects: + +- `href` attributes on `a` tags +- `formaction` attributes on `button` tags +- `action` attributes on `form`s + +> If you have other attributes that you want to be translated [open an issue](https://www.github.com/opral/inlang-paraglide-js/issues). + + +### Link Translations + +```svelte +{m.about()} + + + +{m.about()} +{m.about()} +{m.about()} +``` + +If you want a link to be translated into a _specific_ language set the `hreflang` attribute. + +```svelte +{m.about()} + + +{m.about()} +``` + +Opt-out of translation by adding a `data-no-translate` attribute. + +```svelte + +{m.about()} +``` + +### Programmatic Navigation with Translated Paths + +SvelteKit's `goto` and `redirect` cannot be translated automatically. Localize the URLs you pass to them with `i18n.resolveRoute()`. + +```js +import { i18n } from '$lib/i18n.js' +import { redirect } from '@sveltejs/kit' +import { goto } from '$app/navigation' + +redirect(i18n.resolveRoute("/about", "en")) + +//Omitting the language argument uses the current languageTag() +goto(i18n.resolveRoute("/about")) +``` + +### Language Switchers + +Language switchers are tricky because we need to dynamically translate the current URL path, which is itself translated. We need to get the untranslated version of the current path & translate it into the target language. + + + + +You can get the untranslated path using `i18n.route()` + +```ts +// $page.url.pathname = "/base/de/uber-uns" +const route = i18n.route($page.url.pathname) +// route = "/base/about" +``` + +Use this to create a language switcher. + +```svelte + + +{#each availableLanguageTags as lang} + + + {lang} + +{/each} +``` + +## Re-Loading Language-Dependent data + +If you have a `load` function that returns data that depends on the language you can tell it to re-run on language changes by calling `depends("paraglide:lang")`. + +```ts +// src/routes/+page.server.js +export async function load({ depends }) { + // Paraglide-SvelteKit automatically calls `invalidate("paraglide:lang")` whenever the langauge changes + // This tells SvelteKit to re-run this function whenever that happens + depends("paraglide:lang") + return await myLanguageSpecificData(); +} +``` + +Paraglide-SvelteKit automatically calls `invalidate("paraglide:lang")` when the language changes. diff --git a/inlang/packages/paraglide-sveltekit/docs/manual-setup.md b/inlang/packages/paraglide-sveltekit/docs/manual-setup.md new file mode 100644 index 0000000000..465cf120fc --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/docs/manual-setup.md @@ -0,0 +1,140 @@ +# Manual Setup + +The recommended way to set up `paraglide-sveltekit` is to use the `init` cli. However, we stil maintain a manual setup page in case the auotmated setup fails or cannot be used for some reason. + +### 1. Install dependencies + +Install [ParaglideJS](https://inlang.com/m/gerre34r/library-inlang-paraglideJs) and [Paraglide-SvelteKit](https://inlang.com/m/dxnzrydw/paraglide-sveltekit-i18n). + +```bash +npx @inlang/paraglide-js init +npm i -D @inlang/paraglide-sveltekit +``` + +This will generate a `messages/{lang}.json` file for each of your languages. This is where your translation files live. + +### 2. Add the Vite Plugin + +Add the vite-plugin to your `vite.config.js` file. This will make sure to rerun the paraglide compiler when needed and add the link preprocessor. + +```js +// vite.config.js +import { paraglide } from "@inlang/paraglide-sveltekit/vite" + +export default defineConfig({ + plugins: [ + paraglide({ + //recommended + project: "./project.inlang", + outdir: "./src/lib/paraglide", + }), + sveltekit(), + ], +}) +``` + +### 3. Initialise Paraglide-SvelteKit + +Create a `src/lib/i18n.js` file: + +```js +// src/lib/i18n.js +import { createI18n } from "@inlang/paraglide-sveltekit" +import * as runtime from "$lib/paraglide/runtime.js" + +export const i18n = createI18n(runtime); +``` + +`createI18n` will be your one-stop shop for configuring i18n routing. + + + + +### 4. Add the Language Provider to your Layout + +Add the `ParaglideJS` component to your layout and pass it the `i18n` instance. + +If you're using Svelte 4 do it like so: +```svelte + + + + + + +``` + +or if you're using Svelte 5: + +```svelte + + + + + {@render children} + +``` + +### 5. Add the Hooks + +In your `src/hooks.js` file, use the `i18n` instance to add the `reroute` hook: + +```js +// src/hooks.js +import { i18n } from '$lib/i18n.js' +export const reroute = i18n.reroute() +``` + +> The reroute hook was added in SvelteKit 2.3.0 + +In `src/hooks.server.js` add the handle hook. + +```js +// src/hooks.server.js +import { i18n } from '$lib/i18n.js' +export const handle = i18n.handle() +``` + +This will make the language and text-direction on `event.locals.paraglide`. +To set the `lang` and `dir` attributes on your `` tag add placeholders in `src/app.html`. These placeholders will be replaced by the `handle` hook. + +```html + + +``` + +### 6. Add Types for `event.locals.paraglide` + +In `src/app.d.ts` + +```ts +// src/app.d.ts +import type { AvailableLanguageTag } from "$lib/paraglide/runtime" +import type { ParaglideLocals } from "@inlang/paraglide-sveltekit" + +declare global { + namespace App { + interface Locals { + paraglide: ParaglideLocals + } + // ... + } +} + +export {} +``` + +## Go try it out! + +Visit `/` to see your default language, and `/{lang}` to see other languages. All links should be translated automatically. + diff --git a/inlang/packages/paraglide-sveltekit/docs/roadmap.md b/inlang/packages/paraglide-sveltekit/docs/roadmap.md new file mode 100644 index 0000000000..968442b655 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/docs/roadmap.md @@ -0,0 +1,40 @@ +# Roadmap & Caveats + +- Translated parameters +- Domain Based routing +- Fix the Caveats + +# Caveats + +1. Links in the same Layout Component as `` will not be translated. This will also log a warning in development. +2. Messages are not reactive. Don't use them in server-side module scope. +3. Side effects triggered by `data` will run on language changes even if the data didn't change. If the data is language-dependent the side effect will run twice. +4. The `languageTag` function cannot be used inside param matchers. + +## Using messages in `+layout.svelte` + +The language state gets set when the `` component is mounted. Since you usually place it inside `+layout.svelte` using messages in the layout's ` + + + + + +``` + +## Issues on Vercel + +SvelteKit's `reroute` hook currently doens't play well with Vercel (see [sveltejs/kit#11879](https://github.com/sveltejs/kit/issues/11879)), which means that we need to slightly adapt the setup to make it work when deployed to Vercel. + +1. Remove the `reroute` hook from `src/hooks.js` +2. Move the routes you want to localize `routes` into a `[[locale]]` folder +3. Don't use translated `pathnames` + +We are working on contributing a fix for [sveltejs/kit#11879](https://github.com/sveltejs/kit/issues/11879), so this workaround will hopefully not be needed much longer. diff --git a/inlang/packages/paraglide-sveltekit/docs/why-paraglide.md b/inlang/packages/paraglide-sveltekit/docs/why-paraglide.md new file mode 100644 index 0000000000..9be8171eb5 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/docs/why-paraglide.md @@ -0,0 +1,39 @@ +![Dead Simple i18n. Typesafe, Small Footprint, SEO-Friendly and, with an IDE Integration.](https://cdn.jsdelivr.net/gh/opral/monorepo@inlang-v1/inlang/source-code/paraglide/paraglide-sveltekit/assets/og.png) + + + + + + + +`@inlang/paraglide-sveltekit` is the easiest way to internationalize your SvelteKit Project. It handles string translations, i18n routing and more! + +Thanks to Paraglide's Treeshakeable messages only messages that are _used_ on the _current page_ are part of the JS bundle. This results in the smallest size with the exception that Paraglide JS loads all languages till [#88](https://github.com/opral/inlang-paraglide-js/issues/88) is solved. The inflection point of only bundling the used messages but for all languages is around 10-20 languages, dependent on the number of messages used. Read [scaling](https://inlang.com/m/gerre34r/library-inlang-paraglideJs/scaling) for more information. + +Paraglide-SvelteKit offers Localised routing with translated pathnames, without requiring a `[locale]` parameter in your routes. + +Links are automatically translated to the current language. Write ` + + + + + +# When is the SvelteKit adapter for Paraglide JS not the right choice? + +Warning: Progress on feature development for Paraglide SvelteKit in on hold until lix 1.0 is released. See [this post](https://opral.substack.com/p/focus-shift-from-inlang-to-lix). Pull requests for bugfixes will be reviewed and merged ASAP. + +- You don't want the route to contain the language tag (e.g. `/en/about`), see [Issue #217](https://github.com/opral/inlang-paraglide-js/issues/217). You can use [Paraglide JS](https://inlang.com/m/gerre34r/library-inlang-paraglideJs) (without an adapter) instead. +- Variant are not supported yet (pluralization, gendering) see [Issue #201](https://github.com/opral/inlang-paraglide-js/issues/201) +- You have more than 10 languages and care about minimum bundle sizes, see [Scaling](https://inlang.com/m/gerre34r/library-inlang-paraglideJs/scaling). A runtime based i18n library might be better for you until language splitting ships [issue #88](https://github.com/opral/inlang-paraglide-js/issues/88). + +## Playground + +Play around with it on [StackBlitz](https://stackblitz.com/~/github.com/lorissigrist/paraglide-sveltekit-example) + +[➡ Get started here](/m/dxnzrydw/paraglide-sveltekit-i18n/getting-started) \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/.gitignore b/inlang/packages/paraglide-sveltekit/example/.gitignore new file mode 100644 index 0000000000..d61b54c19a --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/.gitignore @@ -0,0 +1,6 @@ +.svelte-kit +build +node_modules +.vercel +dist +paraglide \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/CHANGELOG.md b/inlang/packages/paraglide-sveltekit/example/CHANGELOG.md new file mode 100644 index 0000000000..1725578c0b --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/CHANGELOG.md @@ -0,0 +1,659 @@ +# @inlang/paraglide-sveltekit-example + +## 0.1.86 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.15.5 + +## 0.1.85 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.15.4 + +## 0.1.84 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.15.3 + +## 0.1.83 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.15.2 + +## 0.1.82 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.15.1 + +## 0.1.81 + +### Patch Changes + +- Updated dependencies [88b87b9] + - @inlang/paraglide-sveltekit@0.15.0 + +## 0.1.80 + +### Patch Changes + +- Updated dependencies [80727ee] + - @inlang/paraglide-sveltekit@0.14.0 + +## 0.1.79 + +### Patch Changes + +- Updated dependencies [1ea4bd8] + - @inlang/paraglide-sveltekit@0.13.0 + +## 0.1.78 + +### Patch Changes + +- Updated dependencies [7857f62] + - @inlang/paraglide-sveltekit@0.12.1 + +## 0.1.77 + +### Patch Changes + +- Updated dependencies [ca227dd] + - @inlang/paraglide-sveltekit@0.12.0 + +## 0.1.76 + +### Patch Changes + +- Updated dependencies [bc1e49e] + - @inlang/paraglide-sveltekit@0.11.5 + +## 0.1.75 + +### Patch Changes + +- Updated dependencies + - @inlang/paraglide-sveltekit@0.11.4 + +## 0.1.74 + +### Patch Changes + +- Updated dependencies [559bc44] + - @inlang/paraglide-sveltekit@0.11.3 + +## 0.1.73 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.11.2 + +## 0.1.72 + +### Patch Changes + +- Updated dependencies [f8565fa] + - @inlang/paraglide-sveltekit@0.11.1 + +## 0.1.71 + +### Patch Changes + +- Updated dependencies [72b2f34] +- Updated dependencies [82581f7] + - @inlang/paraglide-sveltekit@0.11.0 + +## 0.1.70 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.10.10 + +## 0.1.69 + +### Patch Changes + +- Updated dependencies [cf4019d] + - @inlang/paraglide-sveltekit@0.10.9 + +## 0.1.68 + +### Patch Changes + +- Updated dependencies [5ec62a4] + - @inlang/paraglide-sveltekit@0.10.8 + +## 0.1.67 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.10.7 + +## 0.1.66 + +### Patch Changes + +- Updated dependencies [bcd894f] + - @inlang/paraglide-sveltekit@0.10.6 + +## 0.1.65 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.10.5 + +## 0.1.64 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.10.4 + +## 0.1.63 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.10.3 + +## 0.1.62 + +### Patch Changes + +- Updated dependencies [b5d4a4c] + - @inlang/paraglide-sveltekit@0.10.2 + +## 0.1.61 + +### Patch Changes + +- Updated dependencies [ecef103] + - @inlang/paraglide-sveltekit@0.10.1 + +## 0.1.60 + +### Patch Changes + +- Updated dependencies [928742b] + - @inlang/paraglide-sveltekit@0.10.0 + +## 0.1.59 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.9.7 + +## 0.1.58 + +### Patch Changes + +- Updated dependencies [1ea7b14] + - @inlang/paraglide-sveltekit@0.9.6 + +## 0.1.57 + +### Patch Changes + +- Updated dependencies [08a1e3f] + - @inlang/paraglide-sveltekit@0.9.5 + +## 0.1.56 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.9.4 + +## 0.1.55 + +### Patch Changes + +- Updated dependencies [def2d4e] + - @inlang/paraglide-sveltekit@0.9.3 + +## 0.1.54 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.9.2 + +## 0.1.53 + +### Patch Changes + +- Updated dependencies [f0192d2] +- Updated dependencies [255fd41] + - @inlang/paraglide-sveltekit@0.9.1 + +## 0.1.52 + +### Patch Changes + +- Updated dependencies [6319391] +- Updated dependencies [76e7f20] +- Updated dependencies [8db2224] + - @inlang/paraglide-sveltekit@0.9.0 + +## 0.1.51 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.8.7 + +## 0.1.50 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.8.6 + +## 0.1.49 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.8.5 + +## 0.1.48 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.8.4 + +## 0.1.47 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.8.3 + +## 0.1.46 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.8.2 + +## 0.1.45 + +### Patch Changes + +- Updated dependencies [fbac297] + - @inlang/paraglide-sveltekit@0.8.1 + +## 0.1.44 + +### Patch Changes + +- Updated dependencies [75cf8fd] +- Updated dependencies [0bf4d74] +- Updated dependencies [a27b7a4] + - @inlang/paraglide-sveltekit@0.8.0 + +## 0.1.43 + +### Patch Changes + +- Updated dependencies [3e9b863] + - @inlang/paraglide-sveltekit@0.7.0 + +## 0.1.42 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.6.23 + +## 0.1.41 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.6.22 + +## 0.1.40 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.6.21 + +## 0.1.39 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.6.20 + +## 0.1.38 + +### Patch Changes + +- Updated dependencies [1e5320e] + - @inlang/paraglide-sveltekit@0.6.19 + +## 0.1.37 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.6.18 + +## 0.1.36 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.6.17 + +## 0.1.35 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.6.16 + +## 0.1.34 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.6.15 + +## 0.1.33 + +### Patch Changes + +- Updated dependencies [419d8b6] + - @inlang/paraglide-sveltekit@0.6.14 + +## 0.1.32 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.6.13 + +## 0.1.31 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.6.12 + +## 0.1.30 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.6.11 + +## 0.1.29 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.6.10 + +## 0.1.28 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.6.9 + +## 0.1.27 + +### Patch Changes + +- @inlang/paraglide-sveltekit@0.6.8 + +## 0.1.26 + +### Patch Changes + +- @inlang/paraglide-js-adapter-sveltekit@0.6.7 + +## 0.1.25 + +### Patch Changes + +- Updated dependencies [cee4692] +- Updated dependencies [4b631aa] + - @inlang/paraglide-js-adapter-sveltekit@0.6.6 + +## 0.1.24 + +### Patch Changes + +- @inlang/paraglide-js-adapter-sveltekit@0.6.5 + +## 0.1.23 + +### Patch Changes + +- @inlang/paraglide-js-adapter-sveltekit@0.6.4 + +## 0.1.22 + +### Patch Changes + +- @inlang/paraglide-js-adapter-sveltekit@0.6.3 + +## 0.1.21 + +### Patch Changes + +- Updated dependencies [cdbb415] + - @inlang/paraglide-js-adapter-sveltekit@0.6.2 + +## 0.1.20 + +### Patch Changes + +- Updated dependencies [a4d4e10] + - @inlang/paraglide-js-adapter-sveltekit@0.6.1 + +## 0.1.19 + +### Patch Changes + +- Updated dependencies [1642873] +- Updated dependencies [690656e] +- Updated dependencies [ce0b961] + - @inlang/paraglide-js-adapter-sveltekit@0.6.0 + +## 0.1.18 + +### Patch Changes + +- @inlang/paraglide-js-adapter-sveltekit@0.5.22 + +## 0.1.17 + +### Patch Changes + +- @inlang/paraglide-js-adapter-sveltekit@0.5.21 + +## 0.1.16 + +### Patch Changes + +- @inlang/paraglide-js-adapter-sveltekit@0.5.20 + +## 0.1.15 + +### Patch Changes + +- @inlang/paraglide-js-adapter-sveltekit@0.5.19 + +## 0.1.14 + +### Patch Changes + +- @inlang/paraglide-js-adapter-sveltekit@0.5.18 + +## 0.1.13 + +### Patch Changes + +- @inlang/paraglide-js-adapter-sveltekit@0.5.17 + +## 0.1.12 + +### Patch Changes + +- @inlang/paraglide-js-adapter-sveltekit@0.5.16 + +## 0.1.11 + +### Patch Changes + +- @inlang/paraglide-js-adapter-sveltekit@0.5.15 + +## 0.1.10 + +### Patch Changes + +- Updated dependencies [d052495] + - @inlang/paraglide-js-adapter-sveltekit@0.5.14 + +## 0.1.9 + +### Patch Changes + +- @inlang/paraglide-js-adapter-sveltekit@0.5.13 + +## 0.1.8 + +### Patch Changes + +- @inlang/paraglide-js-adapter-sveltekit@0.5.12 + +## 0.1.7 + +### Patch Changes + +- Updated dependencies [ef4e0ab] + - @inlang/paraglide-js-adapter-sveltekit@0.5.11 + +## 0.1.6 + +### Patch Changes + +- @inlang/paraglide-js-adapter-sveltekit@0.5.10 + +## 0.1.5 + +### Patch Changes + +- @inlang/paraglide-js-adapter-sveltekit@0.5.9 + +## 0.1.4 + +### Patch Changes + +- Updated dependencies [62e4a5c] + - @inlang/paraglide-js-adapter-sveltekit@0.5.8 + +## 0.1.3 + +### Patch Changes + +- @inlang/paraglide-js-adapter-sveltekit@0.5.7 + +## 0.1.2 + +### Patch Changes + +- Updated dependencies [bce060367] + - @inlang/paraglide-js-adapter-sveltekit@0.5.6 + +## 0.1.1 + +### Patch Changes + +- @inlang/paraglide-js-adapter-sveltekit@0.5.5 + +## 0.1.0 + +### Minor Changes + +- dc42da6e6: redesign + +## 0.0.15 + +### Patch Changes + +- Updated dependencies [5d25b889a] + - @inlang/paraglide-js-adapter-sveltekit@0.5.4 + +## 0.0.14 + +### Patch Changes + +- Updated dependencies [726690acb] + - @inlang/paraglide-js-adapter-sveltekit@0.5.3 + +## 0.0.13 + +### Patch Changes + +- @inlang/paraglide-js-adapter-sveltekit@0.5.2 + +## 0.0.12 + +### Patch Changes + +- Updated dependencies [a7b593e9a] + - @inlang/paraglide-js-adapter-sveltekit@0.5.1 + +## 0.0.11 + +- Update Inlang Modules + +## 0.0.10 + +- Add `start` command for StackBlitz +- Remove `/base` path + +## 0.0.9 + +### Patch Changes + +- Updated dependencies [7f566ae73] +- Updated dependencies [e4e879c77] +- Updated dependencies [21a3890cc] +- Updated dependencies [37a247c0e] +- Updated dependencies [37a247c0e] + - @inlang/paraglide-js-adapter-sveltekit@0.5.0 + +## 0.0.8 + +### Patch Changes + +- @inlang/paraglide-js-adapter-sveltekit@0.4.1 + +## 0.0.7 + +### Patch Changes + +- Updated dependencies [45f5d8256] + - @inlang/paraglide-js-adapter-sveltekit@0.4.0 + +## 0.0.6 + +### Patch Changes + +- @inlang/paraglide-js-adapter-sveltekit@0.3.7 + +## 0.0.5 + +### Patch Changes + +- @inlang/paraglide-js-adapter-sveltekit@0.3.6 + +## 0.0.4 + +### Patch Changes + +- Updated dependencies [eaef718ee] + - @inlang/paraglide-js-adapter-sveltekit@0.3.5 + +## 0.0.3 + +### Patch Changes + +- Updated dependencies [3aa1b6ca3] + - @inlang/paraglide-js-adapter-sveltekit@0.3.4 + +## 0.0.2 + +### Patch Changes + +- Updated dependencies [0efbc35c5] + - @inlang/paraglide-js-adapter-sveltekit@0.3.3 diff --git a/inlang/packages/paraglide-sveltekit/example/README.md b/inlang/packages/paraglide-sveltekit/example/README.md new file mode 100644 index 0000000000..e9de4c4849 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/README.md @@ -0,0 +1,16 @@ +# Paraglide Example with SvelteKit + +This is an example Project for using Paraglide with SvelteKit. It implements i18n routing with translated routes and is ready for SSR, SSG and CSR. Everything you need to get started. + +Use this as a reference for your own project. + +## Links +- [Paraglide](https://inlang.com/m/gerre34r/library-inlang-paraglideJs) +- [Paraglide-SvelteKit](https://inlang.com/m/dxnzrydw/paraglide-sveltekit-i18n) + +## Interesting Files +- `vite.config.js` +- `src/lib/i18n.js` +- `src/routes/+layout.svelte` +- `src/hooks.js` +- `src/hooks.server.js` \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/messages/de.json b/inlang/packages/paraglide-sveltekit/example/messages/de.json new file mode 100644 index 0000000000..b09973c436 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/messages/de.json @@ -0,0 +1,18 @@ +{ + "$schema": "https://inlang.com/schema/inlang-message-format", + "about": "Über uns", + "home": "Startseite", + "users": "Benutzer", + "next_user": "Nächster Benutzer", + "previous_user": "Vorheriger Benutzer", + "about_path": "/ueber-uns", + + "edit_user": "Benutzer {userId} bearbeiten", + + "paraglide_and_next_app_router": "ParaglideJS + SvelteKit", + "this_app_was_localised_with_paraglide": "Dies ist eine SvelteKit App die mit Paraglide-Next lokalisiert wurde.", + "switch_languages_in_top_right": "Sie können die Sprache oben rechts ändern", + "learn_more_at_following_links": "Erfahren sie mehr über Paraglide und SvelteKit mit den folgenden Links:", + "paraglide_documentation": "Paraglide Dokumentation", + "source_code": "Quell-Code" +} \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/messages/en.json b/inlang/packages/paraglide-sveltekit/example/messages/en.json new file mode 100644 index 0000000000..3b0edd9fd2 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/messages/en.json @@ -0,0 +1,18 @@ +{ + "$schema": "https://inlang.com/schema/inlang-message-format", + "about": "About", + "home": "Home", + "users": "Users", + "next_user": "Next user", + "previous_user": "Previous user", + "about_path": "/about", + + "edit_user": "Edit user {userId}", + + "paraglide_and_next_app_router": "ParaglideJS + SvelteKit", + "this_app_was_localised_with_paraglide": "This is a SvelteKit App that was localised using Paraglide-Next.", + "switch_languages_in_top_right": "You can switch languages in the top right corner.", + "learn_more_at_following_links": "Learn more at the following links", + "paraglide_documentation": "Paraglide Documentation", + "source_code": "Source Code" +} \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/package.json b/inlang/packages/paraglide-sveltekit/example/package.json new file mode 100644 index 0000000000..d5d5430c4c --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/package.json @@ -0,0 +1,36 @@ +{ + "name": "@inlang/paraglide-sveltekit-example", + "version": "0.1.86", + "private": true, + "scripts": { + "_dev": "vite dev", + "start": "vite dev", + "build": "vite build && tsc --noEmit", + "test": "vite build", + "preview": "vite preview", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch" + }, + "dependencies": { + "@inlang/paraglide-sveltekit": "workspace:*" + }, + "peerDependencies": { + "typescript": "^4||^5" + }, + "devDependencies": { + "@inlang/paraglide-js": "workspace:*", + "@sveltejs/adapter-node": "^5.2.10", + "@sveltejs/adapter-static": "^3.0.0", + "@sveltejs/kit": "^2.12.1", + "@sveltejs/vite-plugin-svelte": "^4.0.3", + "rollup-plugin-visualizer": "^5.12.0", + "svelte": "^5.14.1", + "svelte-check": "^3.6.9", + "vite": "^5.4.11" + }, + "files": [ + "*", + ".gitignore" + ], + "type": "module" +} diff --git a/inlang/packages/paraglide-sveltekit/example/project.inlang/.gitignore b/inlang/packages/paraglide-sveltekit/example/project.inlang/.gitignore new file mode 100644 index 0000000000..5e46596759 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/project.inlang/.gitignore @@ -0,0 +1 @@ +cache \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/project.inlang/project_id b/inlang/packages/paraglide-sveltekit/example/project.inlang/project_id new file mode 100644 index 0000000000..a33be41bdd --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/project.inlang/project_id @@ -0,0 +1 @@ +8f4dfba4f8f727add96068fcf8c5a8983e9896fa4eb9680dfd5d60468b2670f5 diff --git a/inlang/packages/paraglide-sveltekit/example/project.inlang/settings.json b/inlang/packages/paraglide-sveltekit/example/project.inlang/settings.json new file mode 100644 index 0000000000..71cae765d6 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/project.inlang/settings.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://inlang.com/schema/project-settings", + "sourceLanguageTag": "en", + "languageTags": ["en", "de"], + "modules": [ + "https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-empty-pattern@latest/dist/index.js", + "https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-identical-pattern@latest/dist/index.js", + "https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-missing-translation@latest/dist/index.js", + "https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-without-source@latest/dist/index.js", + "https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-valid-js-identifier@latest/dist/index.js", + "https://cdn.jsdelivr.net/npm/@inlang/plugin-message-format@latest/dist/index.js", + "https://cdn.jsdelivr.net/npm/@inlang/plugin-m-function-matcher@latest/dist/index.js" + ], + "plugin.inlang.messageFormat": { + "pathPattern": "./messages/{languageTag}.json" + } +} diff --git a/inlang/packages/paraglide-sveltekit/example/src/app.d.ts b/inlang/packages/paraglide-sveltekit/example/src/app.d.ts new file mode 100644 index 0000000000..0955bef458 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/src/app.d.ts @@ -0,0 +1,18 @@ +/// +import type { AvailableLanguageTag } from "$lib/paraglide/runtime" +import type { ParaglideLocals } from "@inlang/paraglide-sveltekit" + +// See https://kit.svelte.dev/docs/types#app +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + interface Locals { + paraglide: ParaglideLocals + } + // interface PageData {} + // interface Platform {} + } +} + +export {} diff --git a/inlang/packages/paraglide-sveltekit/example/src/app.html b/inlang/packages/paraglide-sveltekit/example/src/app.html new file mode 100644 index 0000000000..e386ae413d --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/src/app.html @@ -0,0 +1,12 @@ + + + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/inlang/packages/paraglide-sveltekit/example/src/hooks.js b/inlang/packages/paraglide-sveltekit/example/src/hooks.js new file mode 100644 index 0000000000..07e01f53a5 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/src/hooks.js @@ -0,0 +1,4 @@ +import { i18n } from "$lib/i18n" + +/** @type {import("@sveltejs/kit").Reroute} */ +export const reroute = i18n.reroute() diff --git a/inlang/packages/paraglide-sveltekit/example/src/hooks.server.js b/inlang/packages/paraglide-sveltekit/example/src/hooks.server.js new file mode 100644 index 0000000000..88cd44ee29 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/src/hooks.server.js @@ -0,0 +1,3 @@ +import { i18n } from "$lib/i18n" + +export const handle = i18n.handle() diff --git a/inlang/packages/paraglide-sveltekit/example/src/lib/i18n.js b/inlang/packages/paraglide-sveltekit/example/src/lib/i18n.js new file mode 100644 index 0000000000..2219a61cc9 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/src/lib/i18n.js @@ -0,0 +1,26 @@ +import { createI18n } from "@inlang/paraglide-sveltekit" +import { match as int } from "../params/int" +import * as runtime from "$lib/paraglide/runtime.js" +import * as m from "$lib/paraglide/messages.js" +import { base } from "$app/paths" + +export const i18n = createI18n(runtime, { + pathnames: { + "/about": m.about_path, + "/users": { + en: "/users", + de: "/benutzer", + }, + "/users/[id=int]/[...rest]": { + en: "/users/[id=int]/[...rest]", + de: "/benutzer/[id=int]/[...rest]", + }, + }, + matchers: { int }, + prefixDefaultLanguage: "always", + exclude: [base + "/not-translated", base + "/excluded"], + textDirection: { + en: "ltr", + de: "ltr", + }, +}) diff --git a/inlang/packages/paraglide-sveltekit/example/src/lib/ui/Header.svelte b/inlang/packages/paraglide-sveltekit/example/src/lib/ui/Header.svelte new file mode 100644 index 0000000000..265f4b6b4f --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/src/lib/ui/Header.svelte @@ -0,0 +1,34 @@ + +
+ + {$page.url.pathname} + +
+ + + \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/src/lib/ui/LanguageSwitcher.svelte b/inlang/packages/paraglide-sveltekit/example/src/lib/ui/LanguageSwitcher.svelte new file mode 100644 index 0000000000..5f532266d1 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/src/lib/ui/LanguageSwitcher.svelte @@ -0,0 +1,33 @@ + + + \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/src/lib/ui/styles.css b/inlang/packages/paraglide-sveltekit/example/src/lib/ui/styles.css new file mode 100644 index 0000000000..bac67e87ae --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/src/lib/ui/styles.css @@ -0,0 +1,37 @@ +* { + box-sizing: border-box; + min-width: 0; +} + +:root { + font-size: 16px; +} + +html, body { + margin: 0; + padding: 0; + font-family: 'Roboto', sans-serif; + line-height: 1.5; + font-size: 1rem; + color: #111; + background-color: #fefefe; +} + +a { + text-decoration: none; + color: inherit; +} + +.container { + max-width: 800px; + margin-inline: auto; + margin-block-start: 5rem; + padding: 0 20px; +} + +.code-block { + display: block; + background-color: #f4f4f4; + padding: 20px; + border-radius: 5px; +} \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/src/params/int.js b/inlang/packages/paraglide-sveltekit/example/src/params/int.js new file mode 100644 index 0000000000..9c7849edd9 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/src/params/int.js @@ -0,0 +1,16 @@ +/** + * @param {string} param + * @returns {param is number} + */ +export function match(param) { + try { + const parsed = parseFloat(param) + if (isNaN(parsed)) return false + + + //if it's an integer + return parsed === Math.round(parsed) + } catch (e) { + return false + } +} diff --git a/inlang/packages/paraglide-sveltekit/example/src/routes/+error.svelte b/inlang/packages/paraglide-sveltekit/example/src/routes/+error.svelte new file mode 100644 index 0000000000..06bf0d8131 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/src/routes/+error.svelte @@ -0,0 +1,9 @@ + + + +

{$page.error?.message}

+
\ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/src/routes/+layout.server.js b/inlang/packages/paraglide-sveltekit/example/src/routes/+layout.server.js new file mode 100644 index 0000000000..7986cc6446 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/src/routes/+layout.server.js @@ -0,0 +1,16 @@ +import { languageTag } from "$lib/paraglide/runtime" + +export const prerender = true +export const trailingSlash = "always" + +/** + * @type { import("./$types").LayoutServerLoad} + */ +export function load({ depends }) { + // This tells SvelteKit to re-run this load function when the language changes + depends("paraglide_lang") + + return { + serverLang: `The language on the server is ${languageTag()}`, + } +} diff --git a/inlang/packages/paraglide-sveltekit/example/src/routes/+layout.svelte b/inlang/packages/paraglide-sveltekit/example/src/routes/+layout.svelte new file mode 100644 index 0000000000..eaf0f70cd1 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/src/routes/+layout.svelte @@ -0,0 +1,22 @@ + + + +
+ +
+ +
+ + + \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/src/routes/+page.svelte b/inlang/packages/paraglide-sveltekit/example/src/routes/+page.svelte new file mode 100644 index 0000000000..32e8a4d4ba --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/src/routes/+page.svelte @@ -0,0 +1,21 @@ + + + +

{m.paraglide_and_next_app_router()}

+

{m.this_app_was_localised_with_paraglide()}

+

{m.switch_languages_in_top_right()}

+

{m.learn_more_at_following_links()}

+ \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/src/routes/about/+page.svelte b/inlang/packages/paraglide-sveltekit/example/src/routes/about/+page.svelte new file mode 100644 index 0000000000..1cbde3393f --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/src/routes/about/+page.svelte @@ -0,0 +1,15 @@ + + +

{m.about()}

+ + +

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit sed do eiusmod tempor + incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis + nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore + eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt + in culpa qui officia deserunt mollit anim id est laborum. +

\ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/src/routes/excluded/+page.svelte b/inlang/packages/paraglide-sveltekit/example/src/routes/excluded/+page.svelte new file mode 100644 index 0000000000..64388e97c1 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/src/routes/excluded/+page.svelte @@ -0,0 +1 @@ +

This page should not be translated

\ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/src/routes/matchall/page/+page.svelte b/inlang/packages/paraglide-sveltekit/example/src/routes/matchall/page/+page.svelte new file mode 100644 index 0000000000..dade165229 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/src/routes/matchall/page/+page.svelte @@ -0,0 +1,9 @@ + +

Page

+ +Subpage +Home \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/src/routes/matchall/page/subpage/+page.svelte b/inlang/packages/paraglide-sveltekit/example/src/routes/matchall/page/subpage/+page.svelte new file mode 100644 index 0000000000..e4835eb86e --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/src/routes/matchall/page/subpage/+page.svelte @@ -0,0 +1,9 @@ + +

Subpage

+ +Admin Page +Home \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/src/routes/redirect/+page.server.ts b/inlang/packages/paraglide-sveltekit/example/src/routes/redirect/+page.server.ts new file mode 100644 index 0000000000..13d994b98d --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/src/routes/redirect/+page.server.ts @@ -0,0 +1,9 @@ +import { redirect } from "@sveltejs/kit" + +export const prerender = false + +export const actions = { + redirect: async () => { + redirect(303, "/?redirected=true") + }, +} diff --git a/inlang/packages/paraglide-sveltekit/example/src/routes/redirect/+page.svelte b/inlang/packages/paraglide-sveltekit/example/src/routes/redirect/+page.svelte new file mode 100644 index 0000000000..53589995a0 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/src/routes/redirect/+page.svelte @@ -0,0 +1,3 @@ +
+ +
\ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/src/routes/users/[id]/+page.svelte b/inlang/packages/paraglide-sveltekit/example/src/routes/users/[id]/+page.svelte new file mode 100644 index 0000000000..af47d0bd07 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/src/routes/users/[id]/+page.svelte @@ -0,0 +1,23 @@ + + +

{m.users()} {num_users}

+ +{m.previous_user()} +
+{m.next_user()} + +
+
+ +{m.edit_user({ userId: num_users })} \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/src/routes/users/[id]/edit/+page.server.ts b/inlang/packages/paraglide-sveltekit/example/src/routes/users/[id]/edit/+page.server.ts new file mode 100644 index 0000000000..a7dfb2f336 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/src/routes/users/[id]/edit/+page.server.ts @@ -0,0 +1,10 @@ +import { languageTag } from "$lib/paraglide/runtime" +import type { Actions } from "./$types" + +export const prerender = false + +export const actions: Actions = { + create: async () => { + console.info("create", languageTag()) + }, +} diff --git a/inlang/packages/paraglide-sveltekit/example/src/routes/users/[id]/edit/+page.svelte b/inlang/packages/paraglide-sveltekit/example/src/routes/users/[id]/edit/+page.svelte new file mode 100644 index 0000000000..fbfa097839 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/src/routes/users/[id]/edit/+page.svelte @@ -0,0 +1,16 @@ + + +

{m.edit_user({ userId })}

+{m.users()} + +
+ + +
\ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/svelte.config.js b/inlang/packages/paraglide-sveltekit/example/svelte.config.js new file mode 100644 index 0000000000..4deaad82a1 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/svelte.config.js @@ -0,0 +1,21 @@ +import adapter from "@sveltejs/adapter-node" +import { vitePreprocess } from "@sveltejs/vite-plugin-svelte" + +/** @type {import('@sveltejs/kit').Config} */ +const config = { + preprocess: [vitePreprocess()], + kit: { + adapter: adapter(), + prerender: { + //Needed for correctly prerendering + origin: "https://github.io", + }, + paths: { + base: "/paraglide-sveltekit/example", + }, + }, + + extensions: [".svelte", ".svx"], +} + +export default config diff --git a/inlang/packages/paraglide-sveltekit/example/tsconfig.json b/inlang/packages/paraglide-sveltekit/example/tsconfig.json new file mode 100644 index 0000000000..6ae0c8c44d --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true + } + // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias + // + // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes + // from the referenced tsconfig.json - TypeScript does not merge them in +} diff --git a/inlang/packages/paraglide-sveltekit/example/vite.config.ts b/inlang/packages/paraglide-sveltekit/example/vite.config.ts new file mode 100644 index 0000000000..656f2e205e --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/example/vite.config.ts @@ -0,0 +1,18 @@ +import { sveltekit } from "@sveltejs/kit/vite" +import { paraglide } from "@inlang/paraglide-sveltekit/vite" +import { visualizer } from "rollup-plugin-visualizer" +import { defineConfig } from "vite" + +export default defineConfig({ + plugins: [ + paraglide({ + project: "./project.inlang", + outdir: "./src/lib/paraglide", + }), + sveltekit(), + visualizer({ + filename: "stats.html", + emitFile: true, + }), + ], +}) diff --git a/inlang/packages/paraglide-sveltekit/marketplace-manifest.json b/inlang/packages/paraglide-sveltekit/marketplace-manifest.json new file mode 100644 index 0000000000..cf06dbd22d --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/marketplace-manifest.json @@ -0,0 +1,53 @@ +{ + "$schema": "https://inlang.com/schema/marketplace-manifest", + "id": "library.inlang.paraglideJsAdapterSvelteKit", + "slug": "paraglide-sveltekit-i18n", + "icon": "./assets/icon.png", + "gallery": [ + "./assets/og.png" + ], + "displayName": { + "en": "Paraglide-SvelteKit" + }, + "description": { + "en": "A SvelteKit integration for ParaglideJS, providing you with everything you need for i18n routing" + }, + "pages": { + "": { + "/": "./docs/why-paraglide.md", + "/getting-started": "./README.md", + "/localised-routing": "./docs/localised-routing.md", + "/advanced-usage": "./docs/advanced-usage.md", + "/deployment": "./docs/deployment.md" + }, + + "Appendix": { + "/manual-setup": "./docs/manual-setup.md", + "/roadmap-and-caveats": "./docs/roadmap.md", + "/changelog": "./CHANGELOG.md" + } + }, + "keywords": [ + "paraglide js", + "libraries", + "website", + "developer", + "paraglide", + "i18n", + "library", + "localization", + "sdk", + "sdk-js", + "svelte", + "sveltekit", + "vite", + "javascript", + "typescript", + "inlang" + ], + "recommends": ["m/reootnfj", "m/632iow21", "m/r7kp499g", "m/teldgniy"], + "publisherName": "inlang", + "publisherIcon": "https://inlang.com/favicon/safari-pinned-tab.svg", + "license": "Apache-2.0", + "pricing": "Free" +} \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/mocks/runtime.js b/inlang/packages/paraglide-sveltekit/mocks/runtime.js new file mode 100644 index 0000000000..c9f4e1bcdb --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/mocks/runtime.js @@ -0,0 +1,143 @@ +/* eslint-disable */ +/** @type {((tag: AvailableLanguageTag) => void) | undefined} */ +let _onSetLanguageTag + +/** + * The project's source language tag. + * + * @example + * if (newlySelectedLanguageTag === sourceLanguageTag){ + * // do nothing as the source language tag is the default language + * return + * } + */ +export const sourceLanguageTag = "en" + +/** + * The project's available language tags. + * + * @example + * if (availableLanguageTags.includes(userSelectedLanguageTag) === false){ + * throw new Error("Language tag not available") + * } + */ +export const availableLanguageTags = /** @type {const} */ (["de", "en"]) + +/** + * Get the current language tag. + * + * @example + * if (languageTag() === "de"){ + * console.log("Germany 🇩🇪") + * } else if (languageTag() === "nl"){ + * console.log("Netherlands 🇳🇱") + * } + * + * @type {() => AvailableLanguageTag} + */ +export let languageTag = () => sourceLanguageTag + +/** + * Set the language tag. + * + * @example + * + * // changing to language + * setLanguageTag("en") + * + * // passing a getter function also works. + * // + * // a getter function is useful for resolving a language tag + * // on the server where every request has a different language tag + * setLanguageTag(() => { + * return request.languageTag + * }) + * + * @param {AvailableLanguageTag | (() => AvailableLanguageTag)} tag + */ +export const setLanguageTag = (tag) => { + if (typeof tag === "function") { + languageTag = enforceLanguageTag(tag) + } else { + languageTag = enforceLanguageTag(() => tag) + } + // call the callback function if it has been defined + if (_onSetLanguageTag !== undefined) { + _onSetLanguageTag(languageTag()) + } +} + +/** + * Wraps an untrusted function and enforces that it returns a language tag. + * @param {() => AvailableLanguageTag} unsafeLanguageTag + * @returns {() => AvailableLanguageTag} + */ +function enforceLanguageTag(unsafeLanguageTag) { + return () => { + const tag = unsafeLanguageTag() + if (!isAvailableLanguageTag(tag)) { + throw new Error( + `languageTag() didn't return a valid language tag. Check your setLanguageTag call` + ) + } + return tag + } +} + +/** + * Set the `onSetLanguageTag()` callback function. + * + * The function can be used to trigger client-side side-effects such as + * making a new request to the server with the updated language tag, + * or re-rendering the UI on the client (SPA apps). + * + * - Don't use this function on the server (!). + * Triggering a side-effect is only useful on the client because a server-side + * environment doesn't need to re-render the UI. + * + * - The `onSetLanguageTag()` callback can only be defined once to avoid unexpected behavior. + * + * @example + * // if you use inlang paraglide on the server, make sure + * // to not call `onSetLanguageTag()` on the server + * if (isServer === false) { + * onSetLanguageTag((tag) => { + * // (for example) make a new request to the + * // server with the updated language tag + * window.location.href = `/${tag}/${window.location.pathname}` + * }) + * } + * + * @param {(languageTag: AvailableLanguageTag) => void} fn + */ +export const onSetLanguageTag = (fn) => { + _onSetLanguageTag = fn +} + +/** + * Check if something is an available language tag. + * + * @example + * if (isAvailableLanguageTag(params.locale)) { + * setLanguageTag(params.locale) + * } else { + * setLanguageTag("en") + * } + * + * @param {any} thing + * @returns {thing is AvailableLanguageTag} + */ +export function isAvailableLanguageTag(thing) { + return availableLanguageTags.includes(thing) +} + +// ------ TYPES ------ + +/** + * A language tag that is available in the project. + * + * @example + * setLanguageTag(request.languageTag as AvailableLanguageTag) + * + * @typedef {typeof availableLanguageTags[number]} AvailableLanguageTag + */ diff --git a/inlang/packages/paraglide-sveltekit/package.json b/inlang/packages/paraglide-sveltekit/package.json new file mode 100644 index 0000000000..9b3aeafc67 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/package.json @@ -0,0 +1,75 @@ +{ + "name": "@inlang/paraglide-sveltekit", + "version": "0.15.5", + "type": "module", + "main": "./dist/runtime/index.js", + "types": "./dist/runtime/index.d.ts", + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "https://github.com/opral/inlang-paraglide-js" + }, + "scripts": { + "test:with-base": "BASE_PATH=/base vitest run --test-timeout 90000 --dir src", + "test:without-base": "BASE_PATH=\"\" vitest run --test-timeout 90000 --dir src", + "test": "npm run generate-meta && npm run test:with-base && npm run test:without-base", + "build": "tsc --noEmit && npm run generate-meta && svelte-package -i src -o dist", + "dev": "npm run generate-meta && svelte-package -w -i src -o dist", + "lint": "eslint ./src --fix", + "format": "prettier ./src --write", + "generate-meta": "node scripts/generate_meta.js", + "clean": "rm -rf ./dist ./node_modules" + }, + "dependencies": { + "@inlang/paraglide-js": "1.11.8", + "@inlang/paraglide-vite": "1.3.5", + "@lix-js/client": "2.2.1", + "commander": "^12.0.0", + "dedent": "1.5.1", + "devalue": "^4.3.2", + "magic-string": "^0.30.5", + "svelte": "^5.0.0 || ^5.0.0-next.1 || ^5.0.0-rc.1" + }, + "peerDependencies": { + "@sveltejs/kit": "^2.4.3" + }, + "devDependencies": { + "@opral/tsconfig": "workspace:*", + "@rollup/plugin-alias": "^5.0.1", + "@rollup/plugin-node-resolve": "^15.2.3", + "@rollup/plugin-virtual": "3.0.1", + "@sveltejs/package": "^2.2.3", + "@sveltejs/vite-plugin-svelte": "^3.0.2", + "@types/node": "^20.12.12", + "prettier-plugin-svelte": "^3.1.2", + "rollup": "3.29.1", + "rollup-plugin-svelte": "^7.1.6", + "typescript": "^5.5.2", + "vite": "^5.0.4", + "vite-plugin-svelte": "^3.0.1", + "vitest": "^1.0.0" + }, + "files": [ + "dist" + ], + "bin": { + "paraglide-sveltekit": "./bin/run.js" + }, + "exports": { + ".": { + "types": "./dist/runtime/index.server.d.ts", + "browser": "./dist/runtime/index.client.js", + "default": "./dist/runtime/index.server.js" + }, + "./internal": { + "import": "./dist/runtime/internal/index.js", + "types": "./dist/runtime/internal/index.d.ts" + }, + "./vite": { + "import": "./dist/vite/index.js", + "types": "./dist/vite/index.d.ts" + } + } +} \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/scripts/generate_meta.js b/inlang/packages/paraglide-sveltekit/scripts/generate_meta.js new file mode 100644 index 0000000000..fe16efcf1e --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/scripts/generate_meta.js @@ -0,0 +1,31 @@ +// This script generates the meta.js file +// that provides any package & env information needed at runtime + +// meta.js is placed in src/meta.js +import fs from "node:fs/promises" +import path from "node:path" +import { fileURLToPath } from "node:url" + +const __file = fileURLToPath(import.meta.url) +const __dirname = path.dirname(__file) + +const packageJson = await fs.readFile(path.resolve(__dirname, "../package.json"), "utf-8") +const packageJsonData = JSON.parse(packageJson) +const { version } = packageJsonData +if (!version) throw new Error("package.json must have a version property") + +const marketplaceManifest = await fs.readFile( + path.resolve(__dirname, "../marketplace-manifest.json"), + "utf-8" +) +const marketplaceManifestData = JSON.parse(marketplaceManifest) +const { id: marketplaceID } = marketplaceManifestData + +const destination = path.resolve(__dirname, "../src/meta.js") + +const metaJs = `// file generated by build script - do not commit +export const PARAGLIDE_SVELTEKIT_VERSION = ${JSON.stringify(version)} +export const PARAGLIDE_SVELTEKIT_MARKETPLACE_ID = ${JSON.stringify(marketplaceID)} +` + +await fs.writeFile(destination, metaJs) diff --git a/inlang/packages/paraglide-sveltekit/src/cli/commands/inits.ts b/inlang/packages/paraglide-sveltekit/src/cli/commands/inits.ts new file mode 100644 index 0000000000..956900c1a0 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/cli/commands/inits.ts @@ -0,0 +1,73 @@ +import { findRepoRoot, openRepository } from "@lix-js/client" +import nodeishFs from "node:fs/promises" +import { Command } from "commander" +import { Logger } from "@inlang/paraglide-js/internal" +import { Steps, cli as ParaglideCli } from "@inlang/paraglide-js/internal/cli" +import { scanSvelteKitProject } from "../steps/scanSvelteKitProject.js" +import { addParaglideSvelteKitVitePlugin } from "../steps/addVitePlugin.js" +import { addI18nFile } from "../steps/addI18nFile.js" +import { addParaglideJSComponent } from "../steps/addParaglideJSComponent.js" +import { editAppHtmlFile } from "../steps/editAppHtmlFile.js" +import { addRerouteHook } from "../steps/addRerouteFile.js" +import { addHandleHook } from "../steps/addHandleHook.js" +import { PARAGLIDE_SVELTEKIT_VERSION, PARAGLIDE_SVELTEKIT_MARKETPLACE_ID } from "../../meta.js" +import { addTypesForLocals } from "../steps/updateAppTypes.js" + +export const initCommand = new Command() + .name("init") + .summary("Initializes Paraglide-SvelteKit in this SvelteKit Project") + .action(async () => { + const repoRoot = await findRepoRoot({ nodeishFs, path: process.cwd() }) + + // We are risking that there is no git repo. As long as we only use FS features and no Git features + // from the SDK we should be fine. + // Basic operations like `loadProject` should always work without a repo since it's used in CI. + const repo = await openRepository(repoRoot ?? "file://" + process.cwd(), { + nodeishFs, + }) + + const logger = new Logger({ prefix: false, silent: false }) + + const ctx0 = { + repo, + logger, + repoRoot: repoRoot?.replace("file://", "") ?? process.cwd(), + appId: PARAGLIDE_SVELTEKIT_MARKETPLACE_ID, + } + + const ctx1 = await scanSvelteKitProject(ctx0) + const ctx2 = await Steps.initializeInlangProject(ctx1) + const ctx3 = await Steps.updatePackageJson({ + dependencies: async (deps) => ({ + ...deps, + "@inlang/paraglide-sveltekit": PARAGLIDE_SVELTEKIT_VERSION, + }), + devDependencies: async (deps) => ({ + ...deps, + "@inlang/paraglide-js": ParaglideCli.version() as string, + }), + })(ctx2) + + const ctx4 = await Steps.maybeChangeTsConfig(ctx3) + const ctx5 = await addParaglideSvelteKitVitePlugin(ctx4) + const ctx6 = await addI18nFile(ctx5) + const ctx7 = await addParaglideJSComponent(ctx6) + const ctx8 = await editAppHtmlFile(ctx7) + const ctx9 = await addRerouteHook(ctx8) + const ctx10 = await addHandleHook(ctx9) + const ctx11 = await addTypesForLocals(ctx10) + const crx12 = await Steps.maybeAddSherlock(ctx11) + const crx13 = await Steps.maybeAddNinja(crx12) + + try { + await Steps.runCompiler({ ...crx13, outdir: "./src/lib/paraglide" }) + } catch (e) { + //silently ignore + } + + logger.success(`Successfully initialized Paraglide-SvelteKit in this SvelteKit Project. + +Learn more about Paraglide and Paraglide-Sveltekit at: +https://inlang.com/m/dxnzrydw/paraglide-sveltekit-i18n +`) + }) diff --git a/inlang/packages/paraglide-sveltekit/src/cli/index.ts b/inlang/packages/paraglide-sveltekit/src/cli/index.ts new file mode 100644 index 0000000000..1ef08295c3 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/cli/index.ts @@ -0,0 +1,9 @@ +import { Command } from "commander" +import { initCommand } from "./commands/inits.js" +import { PARAGLIDE_SVELTEKIT_VERSION } from "../meta.js" + +export const cli = new Command() + .name("paraglide-sveltekit") + .addCommand(initCommand) + .showHelpAfterError() + .version(PARAGLIDE_SVELTEKIT_VERSION) diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/addHandleHook.test.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/addHandleHook.test.ts new file mode 100644 index 0000000000..c9cd68e526 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/cli/steps/addHandleHook.test.ts @@ -0,0 +1,31 @@ +import { describe, it, expect } from "vitest" +import { updateServerHooks } from "./addHandleHook" + +describe("updateServerHooks", () => { + it("should add the handle hook if it's not present", () => { + const code = `export const handleErrorpermalink = () => console.log("damn")` + const result = updateServerHooks(code) + expect(result.ok).toBe(true) + expect(result.updated).toMatchInlineSnapshot(` + "import { i18n } from '${"$"}lib/i18n' + import { sequence } from '@sveltejs/kit/hooks' + export const handleErrorpermalink = () => console.log("damn") + + export const handle = sequence(i18n.handle())" + `) + }) + + it("should not reimport sequence if it's already imported", () => { + const code = `import { sequence } from '@sveltejs/kit/hooks' +export const handleErrorpermalink = () => console.log("damn")` + const result = updateServerHooks(code) + expect(result.ok).toBe(true) + expect(result.updated).toMatchInlineSnapshot(` + "import { i18n } from '${"$"}lib/i18n' + import { sequence } from '@sveltejs/kit/hooks' + export const handleErrorpermalink = () => console.log("damn") + + export const handle = sequence(i18n.handle())" + `) + }) +}) diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/addHandleHook.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/addHandleHook.ts new file mode 100644 index 0000000000..48fd061d59 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/cli/steps/addHandleHook.ts @@ -0,0 +1,112 @@ +import type { Repository } from "@lix-js/client" +import { findFile, type CliStep } from "../utils.js" +import path from "node:path" +import type { Logger } from "@inlang/paraglide-js/internal" + +const BOILERPLATE = `// file initialized by the Paraglide-SvelteKit CLI - Feel free to edit it +import { sequence } from "@sveltejs/kit/hooks" +import { i18n } from "${"$"}lib/i18n" + +// add your own hooks as part of the sequence here +export const handle = sequence(i18n.handle()) +` + +export const addHandleHook: CliStep< + { repo: Repository; logger: Logger; typescript: boolean }, + unknown +> = async (ctx) => { + const hooksFilePath = await findFile({ + candidates: ["./src/hooks.server.js", "./src/hooks.server.ts"], + base: process.cwd(), + fs: ctx.repo.nodeishFs, + }) + + if (hooksFilePath) { + // read the file + const content = await ctx.repo.nodeishFs.readFile(hooksFilePath, { encoding: "utf-8" }) + + const result = updateServerHooks(content) + if (!result.ok) { + const msg = [ + "Could not automatically add the i18n.handle hook in src/hooks.server.js", + "REASON: " + result.reason, + "", + "Please update it manually", + ].join("\n") + ctx.logger.warn(msg) + } else { + ctx.logger.success("Added handle hook") + await ctx.repo.nodeishFs.writeFile(hooksFilePath, result.updated) + } + } else { + const hooksFilePath = path.resolve( + process.cwd(), + "./src/hooks.server" + (ctx.typescript ? ".ts" : ".js") + ) + //wrte boilerplate + await ctx.repo.nodeishFs.writeFile(hooksFilePath, BOILERPLATE) + ctx.logger.success("Added handle hook") + } + + return ctx +} + +type UpdateResult = + | { + ok: true + updated: string + reason?: undefined + } + | { + ok: false + reason: string + updated?: undefined + } + +/** + * Tries to update an existing server hooks file + * @param code + */ +export function updateServerHooks(code: string): UpdateResult { + // if it already contains the hook, we don't need to do anything + if (code.includes("i18n.handle")) { + return { + ok: true, + updated: code, + } + } + + // if it does not yet export a handle hook we can just append it + const exportHandleRegexes = [ + /export\s+const\s+handle\s/g, + /export\s+function\s+handle\s/g, + /export\s+async\s+function\s+handle\s/g, + /export\s+{.*handle.*}/g, + ] + + const importsSequence = code.includes("sequence") && code.includes("@sveltejs/kit/hooks") + + const hasHandle = exportHandleRegexes.some((regex) => regex.test(code)) + if (hasHandle) { + //fail - we can't do this automatically yet + return { + ok: false, + reason: "Handle hook is already present", + } + } else { + const imports = [ + `import { i18n } from '${"$"}lib/i18n'`, + importsSequence ? "" : "import { sequence } from '@sveltejs/kit/hooks'", + ] + .filter(Boolean) + .join("\n") + + const updatedCode = + imports + "\n" + code + "\n\n" + "export const handle = sequence(i18n.handle())" + + return { + ok: true, + updated: updatedCode, + } + } +} diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/addI18nFile.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/addI18nFile.ts new file mode 100644 index 0000000000..5362b7c63d --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/cli/steps/addI18nFile.ts @@ -0,0 +1,45 @@ +import type { Repository } from "@lix-js/client" +import type { CliStep } from "../utils.js" +import path from "node:path" +import type { Logger } from "@inlang/paraglide-js/internal" + +export const addI18nFile: CliStep< + { + repo: Repository + logger: Logger + typescript: boolean + }, + unknown +> = async (ctx) => { + const filePath = path.resolve(process.cwd(), "./src/lib/i18n" + (ctx.typescript ? ".ts" : ".js")) + + const boilerplate = `// file initialized by the Paraglide-SvelteKit CLI - Feel free to edit it +import { createI18n } from "@inlang/paraglide-sveltekit" +import * as runtime from "${"$"}lib/paraglide/runtime.js" + +export const i18n = createI18n(runtime) +` + + const libDirExists = await directoryExists(path.dirname(filePath), ctx.repo.nodeishFs) + if (!libDirExists) { + await ctx.repo.nodeishFs.mkdir(path.dirname(filePath), { recursive: true }) + } + + try { + await ctx.repo.nodeishFs.writeFile(filePath, boilerplate) + ctx.logger.success("Added i18n file") + } catch (error) { + ctx.logger.error("Failed to add i18n file at src/lib/i18n.js") + } + + return ctx +} + +async function directoryExists(path: string, fs: Repository["nodeishFs"]) { + try { + const stat = await fs.stat(path) + return stat.isDirectory() + } catch { + return false + } +} diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/addParaglideJSComponent.test.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/addParaglideJSComponent.test.ts new file mode 100644 index 0000000000..734cdbc89a --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/cli/steps/addParaglideJSComponent.test.ts @@ -0,0 +1,105 @@ +import { describe, expect, it } from "vitest" +import { updateLayoutFile } from "./addParaglideJSComponent" + +describe("updateLayoutFile", () => { + it("should update an empty layout file", () => { + expect(updateLayoutFile("")).toMatchInlineSnapshot(` + " + + + + + " + `) + }) + + it("should update a layout file with just a slot", () => { + expect(updateLayoutFile("")).toMatchInlineSnapshot(` + " + + + + " + `) + }) + + it("should update a layout file with a script", () => { + expect(updateLayoutFile(``)).toMatchInlineSnapshot(` + " + + + + " + `) + }) + + it("should update a layout file with just a style", () => { + expect(updateLayoutFile(``)).toMatchInlineSnapshot(` + " + + + + + " + `) + }) + + it("should update a layout file that already contains a slot", () => { + const code = `

+ +

+ ` + + expect(updateLayoutFile(code)).toMatchInlineSnapshot(` + " + + +

+ +

+ +
" + `) + }) + + it("should upate a typescript script", () => { + const code = ` + + +

+ ` + + expect(updateLayoutFile(code)).toMatchInlineSnapshot(` + " + + + + +

+ +
" + `) + }) +}) diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/addParaglideJSComponent.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/addParaglideJSComponent.ts new file mode 100644 index 0000000000..0234cb1693 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/cli/steps/addParaglideJSComponent.ts @@ -0,0 +1,99 @@ +import type { Repository } from "@lix-js/client" +import { findFile, type CliStep } from "../utils.js" +import type { Logger } from "@inlang/paraglide-js/internal" +import path from "node:path" + +const BOILERPLATE_FILE = ` + + + + +` + +export const addParaglideJSComponent: CliStep< + { repo: Repository; logger: Logger }, + unknown +> = async (ctx) => { + const layoutFilePath = await findFile({ + base: process.cwd(), + candidates: ["./src/routes/+layout.svelte"], + fs: ctx.repo.nodeishFs, + }) + + if (!layoutFilePath) { + // create it + const layoutFilePath = path.resolve(process.cwd(), "./src/routes/+layout.svelte") + + await ctx.repo.nodeishFs.writeFile(layoutFilePath, BOILERPLATE_FILE) + ctx.logger.success("Added layout file with Language Provider at src/routes/+layout.svelte") + return ctx + } else { + // update it + const content = await ctx.repo.nodeishFs.readFile(layoutFilePath, { encoding: "utf-8" }) + const updatedContent = updateLayoutFile(content) + await ctx.repo.nodeishFs.writeFile(layoutFilePath, updatedContent) + + ctx.logger.success("Added Language Provider to src/routes/+layout.svelte") + return ctx + } +} + +// assumption: The \n" + code + } + + return code +} + +function addParaglideJSComponentToContent(code: string): string { + // find the start & the end of the content portion of the code + const scriptEnd = code.indexOf("") + const styleStart = code.indexOf("".length + const contentEnd = styleStart === -1 ? code.length : styleStart + + let content = code.slice(contentStart, contentEnd) + + const hasSlot = content.includes("\n` + + content + + (hasSlot ? "\n" : "\n\n") + + code = code.slice(0, contentStart) + content + code.slice(contentEnd) + + return code +} + +function insert(original: string, toInsert: string, index: number): string { + return original.slice(0, index) + toInsert + original.slice(index) +} diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/addRerouteFile.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/addRerouteFile.ts new file mode 100644 index 0000000000..20d0fa2138 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/cli/steps/addRerouteFile.ts @@ -0,0 +1,42 @@ +import type { Repository } from "@lix-js/client" +import type { Logger } from "@inlang/paraglide-js/internal" +import { findFile, type CliStep } from "../utils.js" +import path from "node:path" + +const BOILERPLATE = `// file initialized by the Paraglide-SvelteKit CLI - Feel free to edit it +import { i18n } from "${"$"}lib/i18n" + +export const reroute = i18n.reroute() +` + +export const addRerouteHook: CliStep< + { repo: Repository; logger: Logger; typescript: boolean }, + unknown +> = async (ctx) => { + const hooksFilePath = await findFile({ + candidates: ["./src/hooks.js", "./src/hooks.ts"], + base: process.cwd(), + fs: ctx.repo.nodeishFs, + }) + + // if there isn't yet a file there, create one + if (!hooksFilePath) { + const hooksFilePath = path.resolve( + process.cwd(), + "./src/hooks" + (ctx.typescript ? ".ts" : ".js") + ) + + await ctx.repo.nodeishFs.writeFile(hooksFilePath, BOILERPLATE) + ctx.logger.success("Added reroute hook") + } else { + ctx.logger.warn( + [ + "Could not add reroute hook because the hooks file already exists", + "Please add the reroute hook manually", + "`export const reroute = i18n.reroute()`", + ].join("\n") + ) + } + + return ctx +} diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/addVitePlugin.test.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/addVitePlugin.test.ts new file mode 100644 index 0000000000..2e46916cfe --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/cli/steps/addVitePlugin.test.ts @@ -0,0 +1,51 @@ +import { describe, it, expect } from "vitest" +import { maybeUpdateViteConfig } from "./addVitePlugin" + +describe("maybeUpdateViteConfig", () => { + it("updates sveltekit's default vite.config.ts", () => { + const config = `import { sveltekit } from "@sveltejs/kit/vite" +import { defineConfig } from "vite" + +export default defineConfig({ + plugins: [sveltekit()], +}) +` + const result = maybeUpdateViteConfig(config) + expect(result.ok).toBe(true) + expect(result.updated).toMatchInlineSnapshot(` + "import { paraglide } from '@inlang/paraglide-sveltekit/vite' + import { sveltekit } from "@sveltejs/kit/vite" + import { defineConfig } from "vite" + + export default defineConfig({ + plugins: [paraglide({ project: './project.inlang', outdir: './src/lib/paraglide' }),sveltekit()], + }) + " + `) + }) + + it("doesn't update configs where the paraglide plugin is already present", () => { + const config = ` + import { sveltekit } from "@sveltejs/kit/vite" + import { paraglide } from "@inlang/paraglide-sveltekit/vite" + import { visualizer } from "rollup-plugin-visualizer" + import { defineConfig } from "vite" + + export default defineConfig({ + plugins: [ + paraglide({ + project: "./project.inlang", + outdir: "./src/paraglide", + }), + sveltekit(), + visualizer({ + filename: "stats.html", + emitFile: true, + }), + ], + }) +` + const result = maybeUpdateViteConfig(config) + expect(result.ok).toBe(false) + }) +}) diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/addVitePlugin.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/addVitePlugin.ts new file mode 100644 index 0000000000..b379b36135 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/cli/steps/addVitePlugin.ts @@ -0,0 +1,90 @@ +import type { Repository } from "@lix-js/client" +import type { CliStep } from "../utils.js" +import type { Logger } from "@inlang/paraglide-js/internal" + +export const addParaglideSvelteKitVitePlugin: CliStep< + { + repo: Repository + logger: Logger + viteConfigPath: string + }, + unknown +> = async (ctx) => { + try { + const fileContent = await ctx.repo.nodeishFs.readFile(ctx.viteConfigPath, { + encoding: "utf-8", + }) + + const result = maybeUpdateViteConfig(fileContent) + if (result.ok) { + await ctx.repo.nodeishFs.writeFile(ctx.viteConfigPath, result.updated) + ctx.logger.success("Added @inlang/paraglide-sveltekit/vite vite-plugin to vite config") + } else { + const msg = [ + "Failed to add the `@inlang/paraglide-sveltekit/vite` vite-plugin in vite.config.js.", + "Reason: " + result.reason, + "", + "Please add the plugin manually.", + ].join("\n") + + ctx.logger.warn(msg) + return ctx + } + } catch (e) { + ctx.logger.error( + `Failed to add @inlang/paraglide-sveltekit/vite vite-plugin to ${ctx.viteConfigPath}.` + ) + process.exit(1) + } + + return ctx +} + +type UpdateResult = + | { + ok: true + updated: string + reason?: undefined + } + | { + ok: false + reason: string + updated?: undefined + } + +/** + * @private Only exported for testings + */ +export function maybeUpdateViteConfig(config: string): UpdateResult { + if (config.includes("@inlang/paraglide-sveltekit/vite")) { + return { + ok: false, + reason: "Already present", + } + } + + const PLUGINS_REGEX = /plugins\s*:\s*\[/g + const match = PLUGINS_REGEX.exec(config) + + if (!match) { + return { + ok: false, + reason: "Could not find the plugins array", + } + } + + const endIndex = match.index + match[0].length + const before = config.slice(0, endIndex) + const after = config.slice(endIndex) + + const updatedConfig = + "import { paraglide } from '@inlang/paraglide-sveltekit/vite'\n" + + before + + `paraglide({ project: './project.inlang', outdir: './src/lib/paraglide' }),` + + after + + return { + ok: true, + updated: updatedConfig, + } +} diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/editAppHtmlFile.test.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/editAppHtmlFile.test.ts new file mode 100644 index 0000000000..ad3a571c6a --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/cli/steps/editAppHtmlFile.test.ts @@ -0,0 +1,24 @@ +import { describe, it, expect } from "vitest" +import { updateAppHTMLFile } from "./editAppHtmlFile" + +describe("updateAppHTMLFile", () => { + it("updates the lang attribute if present", () => { + const html = `` + const result = updateAppHTMLFile(html) + + expect(result.ok).toBe(true) + expect(result.updated).toMatchInlineSnapshot( + '""' + ) + }) + + it("updates doesn't re-add the dir attribute if already present", () => { + const html = `` + const result = updateAppHTMLFile(html) + + expect(result.ok).toBe(true) + expect(result.updated).toMatchInlineSnapshot( + '""' + ) + }) +}) diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/editAppHtmlFile.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/editAppHtmlFile.ts new file mode 100644 index 0000000000..e9051dd433 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/cli/steps/editAppHtmlFile.ts @@ -0,0 +1,77 @@ +import type { Repository } from "@lix-js/client" +import type { CliStep } from "../utils.js" +import type { Logger } from "@inlang/paraglide-js/internal" +import path from "node:path" + +export const editAppHtmlFile: CliStep<{ repo: Repository; logger: Logger }, unknown> = async ( + ctx +) => { + try { + const appHtmlPath = path.resolve(process.cwd(), "./src/app.html") + const content = await ctx.repo.nodeishFs.readFile(appHtmlPath, { encoding: "utf-8" }) + + const result = updateAppHTMLFile(content) + if (result.ok) { + await ctx.repo.nodeishFs.writeFile(appHtmlPath, result.updated) + ctx.logger.success("Updated app.html so the lang attribute is always set correctly") + } else { + const msg = [ + "Could not automatically update src/app.html", + "REASON: " + result.reason, + "", + "Please update it manually", + ].join("\n") + ctx.logger.warn(msg) + } + + return ctx + } catch (e) { + ctx.logger.error("Failed to update app.html") + } + return ctx +} + +type UpdateResult = + | { + ok: true + updated: string + reason?: undefined + } + | { + ok: false + reason: string + updated?: undefined + } + +export function updateAppHTMLFile(html: string): UpdateResult { + const langAttributeRegex = /lang=["']?[a-zA-Z-0-9]+["']?/g + const langAttributeMatch = langAttributeRegex.exec(html) + + if (!langAttributeMatch) { + return { + ok: false, + reason: "Could not find an existing lang attribute", + } + } + + html = html.replace(langAttributeMatch[0], 'lang="%paraglide.lang%"') + + const dirAttributeRegex = /dir=["']?[a-zA-Z]+["']?/g + const dirAttributeMatch = dirAttributeRegex.exec(html) + + if (!dirAttributeMatch) { + // add it after the lang attribute + html = html.replace( + 'lang="%paraglide.lang%"', + 'lang="%paraglide.lang%" dir="%paraglide.textDirection%"' + ) + } else { + html = html.replace(dirAttributeMatch[0], 'dir="%paraglide.textDirection%"') + } + + return { + ok: true, + reason: undefined, + updated: html, + } +} diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/scanSvelteKitProject.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/scanSvelteKitProject.ts new file mode 100644 index 0000000000..df7aebfb88 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/cli/steps/scanSvelteKitProject.ts @@ -0,0 +1,68 @@ +import type { Repository } from "@lix-js/client" +import { findFile, type CliStep } from "../utils.js" +import type { Logger } from "@inlang/paraglide-js/internal" + +export const scanSvelteKitProject: CliStep< + { repo: Repository; logger: Logger }, + { + packageJsonPath: string + viteConfigPath: string + svelteConfigPath: string + typescript: boolean + } +> = async (ctx) => { + const packageJsonPath = await findFile({ + base: process.cwd(), + candidates: ["./package.json"], + fs: ctx.repo.nodeishFs, + }) + + const svelteConfigPath = await findFile({ + base: process.cwd(), + candidates: ["./svelte.config.js", "./svelte.config.mjs", "./svelte.config.ts"], + fs: ctx.repo.nodeishFs, + }) + + const viteConfigPath = await findFile({ + base: process.cwd(), + candidates: ["./vite.config.js", "./vite.config.mjs", "./vite.config.ts"], + fs: ctx.repo.nodeishFs, + }) + + const tsconfigPath = await findFile({ + base: process.cwd(), + candidates: ["./tsconfig.json"], + fs: ctx.repo.nodeishFs, + }) + + const typescript = tsconfigPath !== undefined + + if (!packageJsonPath) { + ctx.logger.error( + "Failed to find a package.json file in the current directory. Please rerun in a SvelteKit project." + ) + process.exit(1) + } + + if (!viteConfigPath) { + ctx.logger.error( + "Failed to find a Vite Config file in the current directory. Please rerun in a SvelteKit project." + ) + process.exit(1) + } + + if (!svelteConfigPath) { + ctx.logger.error( + "Failed to find a Svelte Config file in the current directory. Please rerun in a SvelteKit project." + ) + process.exit(1) + } + + return { + ...ctx, + packageJsonPath, + viteConfigPath, + svelteConfigPath, + typescript, + } +} diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/updateAppTypes.test.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/updateAppTypes.test.ts new file mode 100644 index 0000000000..ab1f429ab7 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/cli/steps/updateAppTypes.test.ts @@ -0,0 +1,40 @@ +import { updateAppDTsFile } from "./updateAppTypes" +import { describe, it, expect } from "vitest" + +describe("updateAppDTsFile", () => { + it("updates the default dts file", () => { + const file = `// See https://kit.svelte.dev/docs/types#app +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface Platform {} + } +} + +export {}` + + const result = updateAppDTsFile(file) + expect(result.ok).toBe(true) + expect(result.updated).toMatchInlineSnapshot(` + "import type { AvailableLanguageTag } from "$lib/paraglide/runtime" + import type { ParaglideLocals } from "@inlang/paraglide-sveltekit" + // See https://kit.svelte.dev/docs/types#app + // for information about these interfaces + declare global { + namespace App { + // interface Error {} + interface Locals { + paraglide: ParaglideLocals, + } + // interface PageData {} + // interface Platform {} + } + } + + export {}" + `) + }) +}) diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/updateAppTypes.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/updateAppTypes.ts new file mode 100644 index 0000000000..06d7d2d079 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/cli/steps/updateAppTypes.ts @@ -0,0 +1,86 @@ +import type { Repository } from "@lix-js/client" +import type { Logger } from "@inlang/paraglide-js/internal" +import { findFile, type CliStep } from "../utils.js" + +export const addTypesForLocals: CliStep< + { + repo: Repository + logger: Logger + }, + unknown +> = async (ctx) => { + const appDTsFilePath = await findFile({ + base: process.cwd(), + candidates: ["./src/app.d.ts"], + fs: ctx.repo.nodeishFs, + }) + + if (!appDTsFilePath) { + ctx.logger.warn("Could not find the app.d.ts file. Please add it manually.") + return ctx + } + + const content = await ctx.repo.nodeishFs.readFile(appDTsFilePath, { encoding: "utf-8" }) + const result = updateAppDTsFile(content) + if (result.ok) { + await ctx.repo.nodeishFs.writeFile(appDTsFilePath, result.updated) + + ctx.logger.success("Added Language Provider to src/routes/+layout.svelte") + } else { + ctx.logger.warn( + "Failed to add the ParaglideLocals type to the app.d.ts file. Please add it manually." + ) + } + + return ctx +} + +type UpdateResult = + | { + ok: true + updated: string + reason?: undefined + } + | { + ok: false + reason: string + updated?: undefined + } + +/** + * @private + */ +export function updateAppDTsFile(code: string): UpdateResult { + // add the type import + if (code.includes("AvailableLanguageTag") || code.includes("ParaglideLocals")) { + return { ok: false, reason: "Paraglide types already present" } + } + + code = [ + 'import type { AvailableLanguageTag } from "$lib/paraglide/runtime"', + 'import type { ParaglideLocals } from "@inlang/paraglide-sveltekit"', + code, + ].join("\n") + + const LocalsInterfaceRegex = /interface\s+Locals\s*\{/g + const match = LocalsInterfaceRegex.exec(code) + if (!match) { + return { ok: false, reason: "Could not find the Locals interface" } + } + + // add the type to the Locals interface + const endIndex = match.index + match[0].length + const before = code.slice(0, endIndex) + const after = code.slice(endIndex) + + const beforeLines = before.split("\n") + beforeLines[beforeLines.length - 1] = beforeLines.at(-1)?.replace("//", "") || "" + + code = + beforeLines.join("\n") + "\n paraglide: ParaglideLocals,\n" + after + + return { + ok: true, + updated: code, + } +} diff --git a/inlang/packages/paraglide-sveltekit/src/cli/utils.ts b/inlang/packages/paraglide-sveltekit/src/cli/utils.ts new file mode 100644 index 0000000000..f8520fb513 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/cli/utils.ts @@ -0,0 +1,89 @@ +import type { Repository } from "@lix-js/client" +import path from "node:path" + +/** + * One step in a CLI chain. + * Defines which types the context needs to extend and how it extends the context + * + * Cli Steps can be chained to slowly build up the context over time + * + * @example + * ```ts + * const step1: CliStep = async (ctx) => { + * return {...ctx, foo: "hello" } + * } + * + * const step2: CliStep<{ foo: string }, { bar: number }> = async (ctx) => { + * return { ...ctx, bar: 42 } + * } + * + * const initial = { baz: "baz" } as const; + * const ctx1 = await step1(initial); + * const ctx2 = await step2(ctx1); + * + * ctx2 // Has type { foo: string, bar: number, baz: "baz" } + * ``` + */ +export type CliStep = (ctx: Ctx) => Promise + +// get the "In" property of a CLiStep +type CliStepIn> = Step extends CliStep ? In : never +type CliStepOut> = Step extends CliStep ? Out : never + +type Pair, Step2 extends CliStep, any>> = CliStep< + CliStepIn, + CliStepOut & CliStepOut +> + +export function pair, Step2 extends CliStep, any>>( + step1: Step1, + step2: Step2 +): Pair { + return async (ctx) => await step2(await step1(ctx)) +} + +export async function succeedOrElse, U>( + promise: T, + orElse: U +): Promise { + try { + return await promise + } catch (err) { + return orElse + } +} + +const WINDOWS_SLASH_REGEX = /\\/g +function slash(p: string): string { + return p.replace(WINDOWS_SLASH_REGEX, "/") +} + +const isWindows = typeof process !== "undefined" && process.platform === "win32" + +export function normalizePath(id: string) { + return path.posix.normalize(isWindows ? slash(id) : id) +} + +export async function findFile(args: { + candidates: string[] + base: string + fs: Repository["nodeishFs"] +}): Promise { + const promises = args.candidates + .map((c) => path.resolve(args.base, c)) + .map(async (candidate) => ({ + exists: await fileExists(args.fs, candidate), + path: candidate, + })) + const results = await Promise.all(promises) + return results.find((result) => result.exists)?.path +} + +export async function fileExists(fs: Repository["nodeishFs"], path: string): Promise { + try { + const stat = await fs.stat(path) + return stat.isFile() + } catch { + return false + } +} diff --git a/inlang/packages/paraglide-sveltekit/src/constants.js b/inlang/packages/paraglide-sveltekit/src/constants.js new file mode 100644 index 0000000000..d2595cde15 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/constants.js @@ -0,0 +1,8 @@ +// this is a JS file to avoid transpiling in tests +export const NO_TRANSLATE_ATTRIBUTE = "data-no-translate" + +/** The key with which `invalidate` is called when the language changes */ +export const LANGUAGE_CHANGE_INVALIDATION_KEY = "paraglide:lang" + +/** The name of the cookie in which the language is stored */ +export const LANG_COOKIE_NAME = "paraglide_lang" diff --git a/inlang/packages/paraglide-sveltekit/src/constants.test.js b/inlang/packages/paraglide-sveltekit/src/constants.test.js new file mode 100644 index 0000000000..14c4cf9f03 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/constants.test.js @@ -0,0 +1,22 @@ +import { URL } from "node:url" +import { describe, expect, it } from "vitest" +import * as constants from "./constants" + +const DEPENDS_TYPE_REGEX = /^.*:.*$/ +// eslint-disable-next-line no-control-regex +const COOKIE_NAME_REGEX = /^((?![()<>@,;:"\\/[\]?={} \x09])[\x20-\x7E])+$/ + +describe("LANGUAGE_CHANGE_INVALIDATION_KEY", () => { + it("is a valid URL", () => { + expect(() => new URL(constants.LANGUAGE_CHANGE_INVALIDATION_KEY)).not.toThrowError() + }) + it("conforms to the type of LoadEvent#depends", () => { + expect(constants.LANGUAGE_CHANGE_INVALIDATION_KEY).toMatch(DEPENDS_TYPE_REGEX) + }) +}) + +describe("LANG_COOKIE_NAME", () => { + it("is a valid cookie name", () => { + expect(constants.LANG_COOKIE_NAME).toMatch(COOKIE_NAME_REGEX) + }) +}) diff --git a/inlang/packages/paraglide-sveltekit/src/meta.d.ts b/inlang/packages/paraglide-sveltekit/src/meta.d.ts new file mode 100644 index 0000000000..a3e47dddf3 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/meta.d.ts @@ -0,0 +1,3 @@ +// the Meta.js file is generated by the build script - run it if it's missing +export const PARAGLIDE_SVELTEKIT_VERSION: string +export const PARAGLIDE_SVELTEKIT_MARKETPLACE_ID: string diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/AlternateLinks.svelte b/inlang/packages/paraglide-sveltekit/src/runtime/AlternateLinks.svelte new file mode 100644 index 0000000000..6b427698e7 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/AlternateLinks.svelte @@ -0,0 +1,37 @@ + + + +{#if availableLanguageTags.length >= 1} + {#each alternateLinks as href, i} + + {/each} +{/if} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/ParaglideJS.svelte b/inlang/packages/paraglide-sveltekit/src/runtime/ParaglideJS.svelte new file mode 100644 index 0000000000..bb6872bd6b --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/ParaglideJS.svelte @@ -0,0 +1,118 @@ + + + + + {#if i18n.config.seo.noAlternateLinks !== true && !i18n.config.exclude($page.url.pathname)} + + {/if} + + + +{#key lang} + {@render children?.()} +{/key} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/adapter.client.ts b/inlang/packages/paraglide-sveltekit/src/runtime/adapter.client.ts new file mode 100644 index 0000000000..876d9b7b9a --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/adapter.client.ts @@ -0,0 +1,214 @@ +import { createReroute } from "./hooks/reroute.js" +import { base } from "$app/paths" +import { page } from "$app/stores" +import { get } from "svelte/store" +import { dev } from "$app/environment" +import { parseRoute, serializeRoute } from "./utils/route.js" +import { + normaliseBase as canonicalNormaliseBase, + type NormalizedBase, +} from "./utils/normaliseBase.js" +import { createExclude } from "./exclude.js" +import { guessTextDirMap } from "./utils/text-dir.js" +import { + prettyPrintPathDefinitionIssues, + resolveUserPathDefinitions, + validatePathTranslations, + type PathDefinitionTranslations, +} from "@inlang/paraglide-js/internal/adapter-utils" +import type { ParamMatcher } from "@sveltejs/kit" +import type { Paraglide } from "./runtime.js" +import { PrefixStrategy } from "./strategy.js" +import type { I18nUserConfig } from "./adapter.server.js" + +/** + * The _resolved_ configuration for the i18n instance. + */ +export type I18nConfig = { + runtime: Paraglide + translations: PathDefinitionTranslations + exclude: (path: string) => boolean + defaultLanguageTag: T + matchers: Record + prefixDefaultLanguage: "always" | "never" + textDirection: Record + seo: { + noAlternateLinks: boolean + } +} + +/** + * Creates an i18n instance that manages your internationalization. + * + * @param runtime The Paraglide runtime. + * @param options The options for the i18n instance. + * @returns An i18n instance. + * + * @example + * ```ts + * // src/lib/i18n.js + * import * as runtime from "../paraglide/runtime.js" + * import { createI18n } from "@inlang/paraglide-sveltekit" + * + * export const i18n = createI18n(runtime, { ...options }) + * ``` + */ +export function createI18n(runtime: Paraglide, options?: I18nUserConfig) { + const translations = options?.pathnames + ? resolveUserPathDefinitions(options.pathnames, runtime.availableLanguageTags) + : {} + + if (dev) { + const issues = validatePathTranslations( + translations, + runtime.availableLanguageTags, + options?.matchers ?? {} + ) + if (issues.length) prettyPrintPathDefinitionIssues(issues) + } + + const excludeConfig = options?.exclude ?? [] + const defaultLanguageTag = options?.defaultLanguageTag ?? runtime.sourceLanguageTag + + const config: I18nConfig = { + defaultLanguageTag, + runtime, + translations, + matchers: options?.matchers ?? {}, + exclude: createExclude(excludeConfig), + prefixDefaultLanguage: options?.prefixDefaultLanguage ?? "never", + textDirection: options?.textDirection ?? guessTextDirMap(runtime.availableLanguageTags), + seo: { + noAlternateLinks: options?.seo?.noAlternateLinks ?? false, + }, + } + + const strategy = PrefixStrategy( + runtime.availableLanguageTags, + defaultLanguageTag, + config.translations, + config.matchers, + config.prefixDefaultLanguage + ) + + // We don't want the translations to be mutable + Object.freeze(translations) + Object.freeze(config) + + return { + /** + * The configuration that was used to create this i18n instance. + */ + config, + + /** + * The routing strategy that's being used. + * + * @private Not part of the public API, may change in non-major versions + */ + strategy, + + /** + * Returns a `reroute` hook that applies the path translations to the paths. + * Register it in your `src/hooks.js` file to enable path translations. + * + * @example + * ```ts + * // src/hooks.js + * import { i18n } from "$lib/i18n.js" + * export const reroute = i18n.reroute() + * ``` + */ + reroute: () => createReroute(strategy), + + /** + * Returns a `handle` hook that set's the correct `lang` attribute + * on the `html` element + * + * SERVER ONLY + */ + handle: () => { + throw new Error(dev ? "`i18n.handle` hook should only be used on the server." : "") + }, + + /** + * Takes in a URL and returns the language that should be used for it. + * + * @param url + * @returns + */ + getLanguageFromUrl(url: URL): T { + const normalizedBase = normaliseBase(base) + const [localizedPath] = parseRoute(url.pathname, normalizedBase) + if (config.exclude(localizedPath)) return config.defaultLanguageTag + return strategy.getLanguageFromLocalisedPath(localizedPath) || config.defaultLanguageTag + }, + + /** + * Takes in a route and returns a translated version of it. + * This is useful for use in `goto` statements and `redirect` calls. + * + * The oposite of `i18n.route()`. + * + * @param canonicalPath The path to translate (eg _/base/about_) + * @param lang The language to translate to - Defaults to the current language + * @returns The translated path (eg _/base/de/ueber-uns_) + * + * @example + * ```ts + * redirect(i18n.resolveRoute("/base/about", "de")) + * ``` + */ + resolveRoute(path: string, lang: T | undefined = undefined) { + if (config.exclude(path)) return path + + const normalizedBase = normaliseBase(base) + const [canonicalPath, dataSuffix] = parseRoute(path as `/${string}`, normalizedBase) + + lang = lang ?? runtime.languageTag() + if (!path.startsWith(normalizedBase)) return path + + const localisedPath = strategy.getLocalisedPath(canonicalPath, lang) + return serializeRoute(localisedPath, normalizedBase, dataSuffix) + }, + + /** + * Takes in a path in one language and returns it's canonical version. + * The oposite of `i18n.resolveRoute()`. + * This is useful for use in: + * - Language Switchers + * - Navigation + * + * @param targetedPathSource The path to translate (eg _/base/de/ueber-uns_) + * @returns The canonical version path (eg _/base/about_) + * + * @example + * ```ts + * + * ``` + */ + route(translatedPath: string) { + const normalizedBase = normaliseBase(base) + + const [localisedPath, dataSuffix] = parseRoute(translatedPath as `/${string}`, normalizedBase) + + const lang = strategy.getLanguageFromLocalisedPath(localisedPath) + const languageTag = lang || config.defaultLanguageTag + const canonicalPath = strategy.getCanonicalPath(localisedPath, languageTag) + + return serializeRoute(canonicalPath, normalizedBase, dataSuffix) + }, + } +} + +function normaliseBase(base: string): NormalizedBase { + if (base === "") return "" + if (base.startsWith("/")) return base as `/${string}` + + // this should only be reachable during component initialization + // We can detect this, because base is only ever a relative path during component initialization + return canonicalNormaliseBase(base, new URL(get(page).url)) +} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/adapter.server.ts b/inlang/packages/paraglide-sveltekit/src/runtime/adapter.server.ts new file mode 100644 index 0000000000..6c7c7eddd7 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/adapter.server.ts @@ -0,0 +1,316 @@ +import { createHandle, type HandleOptions } from "./hooks/handle.server.js" +import { createReroute } from "./hooks/reroute.js" +import { base } from "$app/paths" +import { page } from "$app/stores" +import { get } from "svelte/store" +import { dev } from "$app/environment" +import { parseRoute, serializeRoute } from "./utils/route.js" +import { + normaliseBase as canonicalNormaliseBase, + type NormalizedBase, +} from "./utils/normaliseBase.js" +import { createExclude, type ExcludeConfig } from "./exclude.js" +import { guessTextDirMap } from "./utils/text-dir.js" +import { + prettyPrintPathDefinitionIssues, + resolveUserPathDefinitions, + validatePathTranslations, + type PathDefinitionTranslations, +} from "@inlang/paraglide-js/internal/adapter-utils" +import type { ParamMatcher } from "@sveltejs/kit" +import type { UserPathTranslations } from "./config/pathTranslations.js" +import type { Paraglide } from "./runtime.js" +import { PrefixStrategy } from "./strategy.js" + +export type I18nUserConfig = { + /** + * The default languageTag to use if no locale is specified. + * By default the sourceLanguageTag from the Paraglide runtime is used. + * + * @default runtime.sourceLanguageTag + */ + defaultLanguageTag?: T + + /** + * The translations for pathnames. + * They should **not** include the base path or the language tag. + * + * You can include parameters in the pathnames by using square brackets. + * If you are using a parameter, you must include it in all translations. + * + * If you are using translated pathnames, make sure you have the `i18n.reroute()` hook registered in your `src/hooks.js` file. + * + * @example + * ```ts + * pathnames: { + * "/about": { + * de: "/ueber-uns", + * en: "/about", + * fr: "/a-propos", + * }, + * "/users/[slug]": { + * en: "/users/[slug]", + * // parameters don't have to be their own path-segment + * de: "/benutzer-[slug]", + * // parameters don't have to be in the same position + * fr: "/[slug]/utilisateurs", + * }, + * } + * ``` + */ + pathnames?: UserPathTranslations + + /** + * The matchers for parameters in the pathnames. + * You only need to provide these if you are using the parameter-matchers in the pathnames. + */ + matchers?: Record + + /** + * A list of paths to exclude from translation. You can use strings or regular expressions. + * + * Any path that matches one of the strings or regular expressions will not be translated, + * meaning that it won't get the language tag in the path, any links to it won't be translated, + * and no alternate links will be generated for it. + * + * @default [] + * + * @example + * ```ts + * exclude: ["/base/admin", /^\/base\/admin\/.* /] + * ``` + */ + exclude?: ExcludeConfig + + /** + * Whether to prefix the language tag to the path even if it's the default language. + * + * - If set to `"always"`, the language tag will always be included in the path. (eg `/base/en/about`) + * - If set to `"never"`, the default language will not have a language tag in the path. (eg `/base/about`) + * + * @default "never" + */ + prefixDefaultLanguage?: "always" | "never" + + /** + * The associated text-direction for each language. It's recommended to set this to avoid + * any direction-detection differences between different browsers. + * + * @default Guesses the direction based on the language tag using `Intl.Locale` + * + * @example + * ```ts + * dir: { + * en: "ltr", + * de: "ltr", + * ar: "rtl", + * } + * ``` + */ + textDirection?: Record + + /** + * SEO related options. + */ + seo?: { + /** + * Whether to generate alternate links for each page & language and add them to the head. + * @default true + */ + noAlternateLinks?: boolean + } +} + +/** + * The _resolved_ configuration for the i18n instance. + */ +export type I18nConfig = { + runtime: Paraglide + translations: PathDefinitionTranslations + exclude: (path: string) => boolean + defaultLanguageTag: T + matchers: Record + prefixDefaultLanguage: "always" | "never" + textDirection: Record + seo: { + noAlternateLinks: boolean + } +} + +/** + * Creates an i18n instance that manages your internationalization. + * + * @param runtime The Paraglide runtime. + * @param options The options for the i18n instance. + * @returns An i18n instance. + * + * @example + * ```ts + * // src/lib/i18n.js + * import * as runtime from "../paraglide/runtime.js" + * import { createI18n } from "@inlang/paraglide-sveltekit" + * + * export const i18n = createI18n(runtime, { ...options }) + * ``` + */ +export function createI18n(runtime: Paraglide, options?: I18nUserConfig) { + const translations = options?.pathnames + ? resolveUserPathDefinitions(options.pathnames, runtime.availableLanguageTags) + : {} + + if (dev) { + const issues = validatePathTranslations( + translations, + runtime.availableLanguageTags, + options?.matchers ?? {} + ) + if (issues.length) prettyPrintPathDefinitionIssues(issues) + } + + const excludeConfig = options?.exclude ?? [] + const defaultLanguageTag = options?.defaultLanguageTag ?? runtime.sourceLanguageTag + + const config: I18nConfig = { + defaultLanguageTag, + runtime, + translations, + matchers: options?.matchers ?? {}, + exclude: createExclude(excludeConfig), + prefixDefaultLanguage: options?.prefixDefaultLanguage ?? "never", + textDirection: options?.textDirection ?? guessTextDirMap(runtime.availableLanguageTags), + seo: { + noAlternateLinks: options?.seo?.noAlternateLinks ?? false, + }, + } + + const strategy = PrefixStrategy( + runtime.availableLanguageTags, + defaultLanguageTag, + config.translations, + config.matchers, + config.prefixDefaultLanguage + ) + + // We don't want the translations to be mutable + Object.freeze(translations) + Object.freeze(config) + + return { + /** + * The configuration that was used to create this i18n instance. + */ + config, + + /** + * The routing strategy that's being used. + * + * @private Not part of the public API, may change in non-major versions + */ + strategy, + + /** + * Returns a `reroute` hook that applies the path translations to the paths. + * Register it in your `src/hooks.js` file to enable path translations. + * + * @example + * ```ts + * // src/hooks.js + * import { i18n } from "$lib/i18n.js" + * export const reroute = i18n.reroute() + * ``` + */ + reroute: () => createReroute(strategy), + + /** + * Returns a `handle` hook that set's the correct `lang` attribute + * on the `html` element + * + * SERVER ONLY + */ + handle: (options: HandleOptions = {}) => { + return createHandle(strategy, config, options) + }, + + /** + * Takes in a URL and returns the language that should be used for it. + * + * @param url + * @returns + */ + getLanguageFromUrl(url: URL): T { + const normalizedBase = normaliseBase(base) + const [localizedPath] = parseRoute(url.pathname, normalizedBase) + if (config.exclude(localizedPath)) return config.defaultLanguageTag + return strategy.getLanguageFromLocalisedPath(localizedPath) || config.defaultLanguageTag + }, + + /** + * Takes in a route and returns a translated version of it. + * This is useful for use in `goto` statements and `redirect` calls. + * + * The oposite of `i18n.route()`. + * + * @param canonicalPath The path to translate (eg _/base/about_) + * @param lang The language to translate to - Defaults to the current language + * @returns The translated path (eg _/base/de/ueber-uns_) + * + * @example + * ```ts + * redirect(i18n.resolveRoute("/base/about", "de")) + * ``` + */ + resolveRoute(path: string, lang: T | undefined = undefined) { + if (config.exclude(path)) return path + + const normalizedBase = normaliseBase(base) + const [canonicalPath, dataSuffix] = parseRoute(path as `/${string}`, normalizedBase) + + lang = lang ?? runtime.languageTag() + if (!path.startsWith(normalizedBase)) return path + + const localisedPath = strategy.getLocalisedPath(canonicalPath, lang) + return serializeRoute(localisedPath, normalizedBase, dataSuffix) + }, + + /** + * Takes in a path in one language and returns it's canonical version. + * The oposite of `i18n.resolveRoute()`. + * This is useful for use in: + * - Language Switchers + * - Navigation + * + * @param targetedPathSource The path to translate (eg _/base/de/ueber-uns_) + * @returns The canonical version path (eg _/base/about_) + * + * @example + * ```ts + * + * ``` + */ + route(translatedPath: string) { + const normalizedBase = normaliseBase(base) + + const [localisedPath, dataSuffix] = parseRoute(translatedPath as `/${string}`, normalizedBase) + + const lang = strategy.getLanguageFromLocalisedPath(localisedPath) + const languageTag = lang || config.defaultLanguageTag + const canonicalPath = strategy.getCanonicalPath(localisedPath, languageTag) + + return serializeRoute(canonicalPath, normalizedBase, dataSuffix) + }, + } +} + +function normaliseBase(base: string): NormalizedBase { + if (base === "") return "" + if (base.startsWith("/")) return base as `/${string}` + + // this should only be reachable during component initialization + // We can detect this, because base is only ever a relative path during component initialization + return canonicalNormaliseBase(base, new URL(get(page).url)) +} + +export type I18n = ReturnType> diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/adapter.test.ts b/inlang/packages/paraglide-sveltekit/src/runtime/adapter.test.ts new file mode 100644 index 0000000000..87b924f98a --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/adapter.test.ts @@ -0,0 +1,98 @@ +import { describe, it, expect } from "vitest" +import { createI18n } from "./adapter.server" +import { base } from "$app/paths" +//@ts-ignore +import * as runtime from "$paraglide/runtime.js" + +describe("createI18n", () => { + describe("resolveRoute", () => { + it("resolves routes", () => { + const i18n = createI18n(runtime) + + //don't prefix the default language + expect(i18n.resolveRoute(base + "/about", "en")).toBe(base + "/about") + expect(i18n.resolveRoute(base + "/about", "de")).toBe(base + "/de/about") + }) + + it("uses pathnames", () => { + const i18n = createI18n(runtime, { + pathnames: { + "/about": { + en: "/about", + de: "/ueber-uns", + }, + }, + }) + + expect(i18n.resolveRoute(base + "/about", "en")).toBe(base + "/about") + expect(i18n.resolveRoute(base + "/about", "de")).toBe(base + "/de/ueber-uns") + }) + + it.skipIf(base === "")("leaves the path as is if it doen't start with the base path", () => { + const i18n = createI18n(runtime) + + expect(i18n.resolveRoute("/about", "en")).toBe("/about") + expect(i18n.resolveRoute("/about", "de")).toBe("/about") + }) + + it("leaves the path as is if it's excluded", () => { + const i18n = createI18n(runtime, { + exclude: [base + "/about"], + }) + + expect(i18n.resolveRoute(base + "/about", "en")).toBe(base + "/about") + expect(i18n.resolveRoute(base + "/about", "de")).toBe(base + "/about") + }) + + it("keeps the trailing slash if present", () => { + const i18n = createI18n(runtime) + + expect(i18n.resolveRoute(base + "/about/", "en")).toBe(base + "/about/") + expect(i18n.resolveRoute(base + "/about/", "de")).toBe(base + "/de/about/") + }) + + it("doesn't add the trailing slash if not present", () => { + const i18n = createI18n(runtime) + + expect(i18n.resolveRoute(base + "/about", "en")).toBe(base + "/about") + expect(i18n.resolveRoute(base + "/about", "de")).toBe(base + "/de/about") + }) + }) + + describe("route", () => { + it("get's the canonical route from a localised path", () => { + const i18n = createI18n(runtime) + + expect(i18n.route(base + "/about")).toBe(base + "/about") + expect(i18n.route(base + "/de/about")).toBe(base + "/about") + }) + + it("uses pathnames", () => { + const i18n = createI18n(runtime, { + pathnames: { + "/about": { + en: "/about", + de: "/ueber-uns", + }, + }, + }) + + expect(i18n.route(base + "/about")).toBe(base + "/about") + expect(i18n.route(base + "/de/ueber-uns")).toBe(base + "/about") + }) + + it("keeps the trailing slash if present", () => { + const i18n = createI18n(runtime) + + expect(i18n.route(base + "/about/")).toBe(base + "/about/") + expect(i18n.route(base + "/de/about/")).toBe(base + "/about/") + }) + + it("doesn't add the trailing shalsh if not present", () => { + const i18n = createI18n(runtime) + + expect(i18n.route(base + "/about")).toBe(base + "/about") + expect(i18n.route(base + "/de/about")).toBe(base + "/about") + }) + }) +}) diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/config/pathTranslations.ts b/inlang/packages/paraglide-sveltekit/src/runtime/config/pathTranslations.ts new file mode 100644 index 0000000000..824e4731d6 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/config/pathTranslations.ts @@ -0,0 +1,26 @@ +import type { MessageIndexFunction } from "@inlang/paraglide-js/internal" + +/** + * Maps canonical paths to translations for each language. + * + * @example + * ```json + * { + * "/": { + * "en": "/", + * "de": "/de" + * }, + * "/about": { + * "en": "/about", + * "de": "/ueber-uns" + * }, + * "/admin/users/[id]": { + * "en": "/admin/users/[id]", + * "de": "/admin/benutzer/[id]" + * } + * } + * ``` + */ +export type UserPathTranslations = { + [canonicalPath: `/${string}`]: Record | MessageIndexFunction +} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/exclude.test.ts b/inlang/packages/paraglide-sveltekit/src/runtime/exclude.test.ts new file mode 100644 index 0000000000..6f7166f568 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/exclude.test.ts @@ -0,0 +1,24 @@ +import { describe, it, expect } from "vitest" +import { createExclude } from "./exclude" + +describe("createExclude", () => { + it("excludes paths", () => { + const exclude = createExclude(["/exclude"]) + expect(exclude("/exclude")).toBe(true) + expect(exclude("/exclude/")).toBe(true) + expect(exclude("/exclude/other")).toBe(false) + expect(exclude("/other")).toBe(false) + }) + + it("excludes paths with regex", () => { + const exclude = createExclude(["/exclude", /^\/other/]) + expect(exclude("/exclude")).toBe(true) + expect(exclude("/exclude/")).toBe(true) + expect(exclude("/exclude/other")).toBe(false) + expect(exclude("/other")).toBe(true) + expect(exclude("/other/")).toBe(true) + expect(exclude("/other/path")).toBe(true) + expect(exclude("/other/path/")).toBe(true) + expect(exclude("/other/path/other")).toBe(true) + }) +}) diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/exclude.ts b/inlang/packages/paraglide-sveltekit/src/runtime/exclude.ts new file mode 100644 index 0000000000..c8975971c0 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/exclude.ts @@ -0,0 +1,11 @@ +import { normalize } from "./utils/path.js" + +export type ExcludeConfig = (string | RegExp)[] + +export function createExclude(excludeConfig: ExcludeConfig): (path: string) => boolean { + const checks: ((path: string) => boolean)[] = excludeConfig.map((exclude) => + typeof exclude === "string" ? (path) => path === exclude : (path) => exclude.test(path) + ) + + return (path) => checks.some((check) => check(normalize(path))) +} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/hooks/handle.server.ts b/inlang/packages/paraglide-sveltekit/src/runtime/hooks/handle.server.ts new file mode 100644 index 0000000000..05a1a22e31 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/hooks/handle.server.ts @@ -0,0 +1,189 @@ +import { parseRoute, serializeRoute } from "../utils/route.js" +import { negotiateLanguagePreferences } from "@inlang/paraglide-js/internal/adapter-utils" +import { base } from "$app/paths" +import { dev } from "$app/environment" +import { LANG_COOKIE_NAME } from "../../constants.js" +import type { Handle } from "@sveltejs/kit" +import type { I18nConfig } from "../adapter.server.js" +import type { RoutingStrategy } from "../strategy.js" +import type { ParaglideLocals } from "../locals.js" +import { ALSContext, GlobalContext, type Context } from "./utils.js" +import { getHrefBetween } from "../utils/diff-urls.js" + +/** + * The default lang attribute string that's in SvelteKit's `src/app.html` file. + * If this is present on the `` attribute it most likely needs to be replaced. + */ +const SVELTEKIT_DEFAULT_LANG_ATTRIBUTE = 'lang="en"' +const VARY_HEADER = ["cookie", "accept-language"].join(", ") + +export type HandleOptions = { + /** + * Which placeholder to find and replace with the language tag. + * Use this placeholder as the lang atrribute in your `src/app.html` file. + * + * + * @default "%paraglide.lang%" + * + * @example + * ```html + * + * + * ``` + * ```ts + * { langPlaceholder: "%paraglide.lang%" } + * ``` + * + */ + langPlaceholder?: string + + /** + * Which placeholder to find and replace with the text-direction of the current language. + * + * @default "%paraglide.textDirection%" + * + * @example + * ```html + * + * + * ``` + * ```ts + * { textDirectionPlaceholder: "%paraglide.textDirection%" } + * ``` + */ + textDirectionPlaceholder?: string + + /** + * If `AsyncLocalStorage` should be used to scope the language state to the current request. + * This makes it impossible for requests to override each other's language. + * + * ONLY DISABLE THIS IF YOU ARE CERTAIN YOUR ENVIRONMENT DOES + * NOT ALLOW CONCURRENT REQUESTS. + * + * For example in Vercel Edge functions + * + * @default false + */ + disableAsyncLocalStorage?: boolean +} + +export const createHandle = ( + strategy: RoutingStrategy, + i18n: I18nConfig, + options: HandleOptions +): Handle => { + let languageContext: Context | undefined = undefined + function initializeLanguageContext( + AsyncLocalStorage: typeof import("node:async_hooks").AsyncLocalStorage | undefined + ) { + languageContext = AsyncLocalStorage ? new ALSContext(AsyncLocalStorage) : new GlobalContext() + i18n.runtime.setLanguageTag(() => { + if (!languageContext) + throw new Error( + "languageContext not initialized - This should never happen, please file an issue" + ) + const val = languageContext.get() + return i18n.runtime.isAvailableLanguageTag(val) ? val : i18n.defaultLanguageTag + }) + } + + const langPlaceholder = options.langPlaceholder ?? "%paraglide.lang%" + const dirPlaceholder = options.textDirectionPlaceholder ?? "%paraglide.textDirection%" + + return async ({ resolve, event }) => { + // if the langauge context is not yet initialized + if (!languageContext) { + const als = options.disableAsyncLocalStorage + ? undefined + : (await import("node:async_hooks")).AsyncLocalStorage + initializeLanguageContext(als) + } + + const [localisedPath, suffix] = parseRoute(event.url.pathname as `/${string}`, base) + const langFromUrl = strategy.getLanguageFromLocalisedPath(localisedPath) + + const langCookie = event.cookies.get(LANG_COOKIE_NAME) + const cookieLang = i18n.runtime.isAvailableLanguageTag(langCookie) ? langCookie : undefined + + const negotiatedLanguagePreferences = negotiateLanguagePreferences( + event.request.headers.get("accept-language"), + i18n.runtime.availableLanguageTags + ) + const negotiatedLanguage = negotiatedLanguagePreferences[0] + + const lang = langFromUrl ?? cookieLang ?? negotiatedLanguage ?? i18n.defaultLanguageTag + + if (lang !== langFromUrl && !i18n.exclude(localisedPath)) { + // redirect to the correct language + + const localisedPathname = strategy.getLocalisedPath(localisedPath, lang) + const fullPath = serializeRoute(localisedPathname, base, suffix) + + const to = new URL(event.url) + to.pathname = fullPath + + const href = getHrefBetween(event.url, to) + + return new Response(undefined, { + status: 302, + headers: { + Location: href, + Vary: VARY_HEADER, + }, + }) + } + + if (lang !== cookieLang && !i18n.exclude(event.url.pathname)) { + event.cookies.set(LANG_COOKIE_NAME, lang, { + maxAge: 31557600, //Math.round(60 * 60 * 24 * 365.25) = 1 year, + sameSite: "lax", + path: base || "/", + httpOnly: false, + }) + } + + const textDirection = i18n.textDirection[lang as T] ?? "ltr" + + const paraglideLocals: ParaglideLocals = { + lang, + textDirection, + } + + // The user needs to have the ParaglideLocals type in their app.d.ts file + // @ts-expect-error + event.locals.paraglide = paraglideLocals + + if (!languageContext) + throw new Error( + "languageContext not initialized - This should never happen, please file an issue" + ) + return languageContext.callAsync(paraglideLocals.lang, async () => { + return await resolve(event, { + transformPageChunk({ html, done }) { + if (!done) return html + + // in dev mode, check if the lang attribute hasn't been replaced + if ( + dev && + !html.includes(langPlaceholder) && + html.includes(SVELTEKIT_DEFAULT_LANG_ATTRIBUTE) + ) { + console.warn( + [ + "It seems like you haven't replaced the `lang` attribute in your `src/app.html` file.", + "Please replace the `lang` attribute with the correct placeholder:", + "", + ` - `, + ` + `, + "", + "This message will not be shown in production.", + ].join("\n") + ) + } + + return html.replace(langPlaceholder, lang).replace(dirPlaceholder, textDirection) + }, + }) + }) + } +} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/hooks/reroute.test.ts b/inlang/packages/paraglide-sveltekit/src/runtime/hooks/reroute.test.ts new file mode 100644 index 0000000000..0fd43913d3 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/hooks/reroute.test.ts @@ -0,0 +1,39 @@ +import { describe, it, expect } from "vitest" +import { base } from "$app/paths" +import { createReroute } from "./reroute" + +//@ts-ignore +import * as runtime from "$paraglide/runtime.js" +import { PrefixStrategy } from "../strategy" + +const reroute = createReroute<"en" | "de">( + PrefixStrategy(runtime.availableLanguageTags, runtime.sourceLanguageTag, {}, {}, "always") +) + +describe("reroute", () => { + it("keeps the trailing slash if present", () => { + const url = new URL("https://example.com" + base + "/some-page/") + const pathname = reroute({ url }) + expect(pathname).toBe(base + "/some-page/") + }) + + it("doesn't add a trailing slash", () => { + const url = new URL("https://example.com" + base + "/some-page") + const pathname = reroute({ url }) + expect(pathname).toBe(base + "/some-page") + }) + + /* + it("keeps the trailing slash on the language", () => { + const url = new URL("https://example.com" + base + "/de/") + const pathname = reroute({ url }) + expect(pathname).toBe(base ? base + "/" : "/") + }) + */ + + it("removes the languagePrefix", () => { + const url = new URL("https://example.com" + base + "/de") + const pathname = reroute({ url }) + expect(pathname).toBe(base ? base : "/") + }) +}) diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/hooks/reroute.ts b/inlang/packages/paraglide-sveltekit/src/runtime/hooks/reroute.ts new file mode 100644 index 0000000000..7e119b2924 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/hooks/reroute.ts @@ -0,0 +1,25 @@ +import { parseRoute, serializeRoute } from "../utils/route.js" +import { base } from "$app/paths" +import { dev } from "$app/environment" +import type { RoutingStrategy } from "../strategy.js" +import type { Reroute } from "@sveltejs/kit" + +/** + * Returns a reroute function that applies the given translations to the paths + * @param translations + */ +export const createReroute = (strategy: RoutingStrategy): Reroute => { + return ({ url }) => { + try { + const [localisedPath, dataSuffix] = parseRoute(url.pathname as `/${string}`, base) + const lang = strategy.getLanguageFromLocalisedPath(localisedPath) + if (!lang) return url.pathname + const canonicalPath = strategy.getCanonicalPath(localisedPath, lang) + + return serializeRoute(canonicalPath, base, dataSuffix) + } catch (e) { + if (dev) console.error("[@inlang/paraglide-sveltekit] Error thrown during reroute", e) + return url.pathname + } + } +} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/hooks/utils.ts b/inlang/packages/paraglide-sveltekit/src/runtime/hooks/utils.ts new file mode 100644 index 0000000000..0f67fbfbfe --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/hooks/utils.ts @@ -0,0 +1,34 @@ +export type ALS = import("node:async_hooks").AsyncLocalStorage +export type ALSPrototype = typeof import("node:async_hooks").AsyncLocalStorage + +export interface Context { + get(): T | undefined + callAsync: any>(val: T, cb: CB) => Promise>> +} + +export class ALSContext implements Context { + ctx: ALS + constructor(ALS: ALSPrototype) { + this.ctx = new ALS() + } + + get(): T | undefined { + return this.ctx.getStore() + } + + async callAsync(val: T, cb: () => any) { + return await this.ctx.run(val, cb) + } +} +export class GlobalContext implements Context { + value: T | undefined = undefined + + get(): T | undefined { + return this.value + } + + async callAsync(val: T, cb: () => any) { + this.value = val + return await cb() + } +} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/index.client.ts b/inlang/packages/paraglide-sveltekit/src/runtime/index.client.ts new file mode 100644 index 0000000000..8a5f7222e7 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/index.client.ts @@ -0,0 +1,3 @@ +export { default as ParaglideJS } from "./ParaglideJS.svelte" +export { createI18n } from "./adapter.client.js" +export type { ParaglideLocals } from "./locals.js" diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/index.server.ts b/inlang/packages/paraglide-sveltekit/src/runtime/index.server.ts new file mode 100644 index 0000000000..f9046f0e43 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/index.server.ts @@ -0,0 +1,3 @@ +export { default as ParaglideJS } from "./ParaglideJS.svelte" +export { createI18n } from "./adapter.server.js" +export type { ParaglideLocals } from "./locals.js" diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/internal/index.js b/inlang/packages/paraglide-sveltekit/src/runtime/internal/index.js new file mode 100644 index 0000000000..038bcf3db9 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/internal/index.js @@ -0,0 +1,82 @@ +// this is a JS file to avoid transpiling in tests +import { NO_TRANSLATE_ATTRIBUTE } from "../../constants.js" +import { getContext, setContext } from "svelte" + +const PARAGLIDE_CONTEXT_KEY = {} + +/** + * @template {string} T + * @typedef {{ translateHref: (href: string, hreflang?: T) => string }} ParaglideContext + */ + +/** + * @template {string} T + * @private + */ +export const getParaglideContext = () => { + return /** @type { ParaglideContext | undefined}*/ (getContext(PARAGLIDE_CONTEXT_KEY)) +} +/** + * @template {string} T + * @param {ParaglideContext} context + * @private + */ +export const setParaglideContext = (context) => { + setContext(PARAGLIDE_CONTEXT_KEY, context) +} + +/** + * Returns the functions necessary to translate a link component + * + * @private + */ +export function getTranslationFunctions() { + const ctx = getParaglideContext() + + /** + * @param {unknown} value + * @param { string | undefined} lang_value + * @returns + */ + function translateAttribute(value, lang_value) { + if (typeof value !== "string") return value + if (!ctx) return value + return ctx.translateHref(value, lang_value) + } + + /** + * @typedef {{ + * attribute_name: string + * lang_attribute_name?: string + *}} AttributeTranslation + */ + + /** + * Takes in an object of attributes, and an object of attribute translations + * & applies the translations to the attributes + * + * @param {Record} attrs + * @param {AttributeTranslation[]} attribute_translations + */ + function handleAttributes(attrs, attribute_translations) { + if (attrs[NO_TRANSLATE_ATTRIBUTE]) return attrs + + for (const { attribute_name, lang_attribute_name } of attribute_translations) { + if (attribute_name in attrs) { + const attr = attrs[attribute_name] + const lang_attr = lang_attribute_name ? attrs[lang_attribute_name] : undefined + + attrs[attribute_name] = translateAttribute( + attr, + typeof lang_attr === "string" ? lang_attr : undefined + ) + } + } + + return attrs + } + + // we use a tuple instead of an object because the names need to be mangled on the other side + // also this minifies better + return [translateAttribute, handleAttributes] +} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/locals.ts b/inlang/packages/paraglide-sveltekit/src/runtime/locals.ts new file mode 100644 index 0000000000..85400e0476 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/locals.ts @@ -0,0 +1,30 @@ +/** + * The interface for Paraglide's Locals, available under `event.locals.paraglide` + * + * @example + * ```ts + * // src/app.d.ts + * import type { AvailableLanguageTag } from "$lib/paraglide/runtime" + * import type { ParaglideLocals } from "@inlang/paraglide-sveltekit" + * + * declare global { + * namespace App { + * interface Locals { + * paraglide: ParaglideLocals + * } + * } + * } + * ``` + */ +export type ParaglideLocals = { + /** + * The language that's being used for the current request. + * @deprecated As of `v0.10` you can just call `languageTag()` on the server + */ + lang: T + + /** + * The text-direction present on the `` tag + */ + textDirection: "ltr" | "rtl" +} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/runtime.d.ts b/inlang/packages/paraglide-sveltekit/src/runtime/runtime.d.ts new file mode 100644 index 0000000000..47fba545ff --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/runtime.d.ts @@ -0,0 +1,12 @@ +/** + * The compiled paraglide runtime module. + * (e.g. "paraglide/runtime.js") + */ +export interface Paraglide { + readonly setLanguageTag: (language_tag: T | (() => T)) => void + readonly languageTag: () => T + readonly onSetLanguageTag: (callback: (language_tag: T) => void) => void + readonly isAvailableLanguageTag: (language_tag: unknown) => language_tag is T + readonly availableLanguageTags: readonly T[] + readonly sourceLanguageTag: T +} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/strategy.test.ts b/inlang/packages/paraglide-sveltekit/src/runtime/strategy.test.ts new file mode 100644 index 0000000000..3f12855a92 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/strategy.test.ts @@ -0,0 +1,39 @@ +import { describe, it, expect } from "vitest" +import { PrefixStrategy } from "./strategy" + +describe("PrefixStrategy", () => { + const strategy = PrefixStrategy( + ["en", "de"], + "en", + { + "/about": { + en: "/about", + de: "/ueber-uns", + }, + }, + {}, + "never" + ) + + it("detects the language", () => { + expect(strategy.getLanguageFromLocalisedPath("/about")).toBe("en") + expect(strategy.getLanguageFromLocalisedPath("/de/ueber-uns")).toBe("de") + }) + + it("gets the canonical path if no translation exists", () => { + expect(strategy.getCanonicalPath("/de/some-page", "de")).toBe("/some-page") + }) + + it("gets the canonical path of a path with just the language prefix", () => { + expect(strategy.getCanonicalPath("/de", "de")).toBe("/") + }) + + it("gets the canonical path with a translation", () => { + expect(strategy.getCanonicalPath("/de/ueber-uns", "de")).toBe("/about") + }) + + it("gets the localised path if no translation exists", () => { + expect(strategy.getLocalisedPath("/some-page", "de")).toBe("/de/some-page") + expect(strategy.getLocalisedPath("/some-page", "en")).toBe("/some-page") + }) +}) diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/strategy.ts b/inlang/packages/paraglide-sveltekit/src/runtime/strategy.ts new file mode 100644 index 0000000000..b65e8333db --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/strategy.ts @@ -0,0 +1,117 @@ +import { + bestMatch, + resolveRoute, + type PathDefinitionTranslations, +} from "@inlang/paraglide-js/internal/adapter-utils" +import type { ParamMatcher } from "@sveltejs/kit" + +export type RoutingStrategy = ReturnType> + +export function PrefixStrategy( + availableLanguageTags: readonly T[], + defaultLanguageTag: T, + translations: PathDefinitionTranslations, + matchers: Record, + prefixDefaultLanguage: "always" | "never" +) { + function getLanguageFromLocalisedPath(localisedPath: string): T | undefined { + const segments = localisedPath.split("/") + const maybeLang = segments[1] + if ( + availableLanguageTags.includes(maybeLang as any) && + (prefixDefaultLanguage === "always" || maybeLang !== defaultLanguageTag) + ) { + return maybeLang as T + } + + if (prefixDefaultLanguage === "never") return defaultLanguageTag + else return undefined + } + + function getLocalisedPath(canonicalPath: string, languageTag: T): string { + const trailingSlash = canonicalPath.endsWith("/") && canonicalPath !== "/" + canonicalPath = trailingSlash ? canonicalPath.slice(0, -1) : canonicalPath + + let translatedPath = turnIntoTranslatedPath(canonicalPath, languageTag, translations, matchers) + + if (trailingSlash) { + translatedPath += "/" + } + + if (prefixDefaultLanguage === "always" || languageTag !== defaultLanguageTag) { + translatedPath = `/${languageTag}${translatedPath}` + } + + return translatedPath + } + + function getCanonicalPath(localisedPath: string, languageTag: T): string { + const trailingSlahsBefore = localisedPath.endsWith("/") && localisedPath !== "/" + if (prefixDefaultLanguage === "always" || languageTag !== defaultLanguageTag) { + localisedPath = localisedPath.replace(`/${languageTag}`, "") || "/" + } + + const trailingSlash = trailingSlahsBefore + localisedPath = trailingSlash ? localisedPath.slice(0, -1) : localisedPath + + let canonicalPath = turnIntoCanonicalPath(localisedPath, languageTag, translations, matchers) + + if (trailingSlash) { + canonicalPath += "/" + } + + return canonicalPath + } + + return { + getLanguageFromLocalisedPath, + getLocalisedPath, + getCanonicalPath, + } +} + +/** + * Resolves the canonical path from a translated path + * @param translatedPath The translated path WITHOUT the language or base + */ +function turnIntoCanonicalPath( + translatedPath: string, + lang: string, + translations: PathDefinitionTranslations, + matchers: Record +): string { + for (const [canonicalPathDefinition, translationsForPath] of Object.entries(translations)) { + if (!(lang in translationsForPath)) continue + + const translatedPathDefinition = translationsForPath[lang] + if (!translatedPathDefinition) continue + + const match = bestMatch(translatedPath, [translatedPathDefinition], matchers) + if (!match) continue + + // return the resolved canonical path + return resolveRoute(canonicalPathDefinition, match.params) + } + + // fall back to translated path if no canonical path is found + return translatedPath +} + +function turnIntoTranslatedPath( + canonicalPath: string, + lang: string, + translations: PathDefinitionTranslations, + matchers: Record +) { + const match = bestMatch(canonicalPath, Object.keys(translations), matchers) + if (!match) return canonicalPath + + const translationsForPath = translations[match.id as `/${string}`] + if (!translationsForPath) return canonicalPath + + const translatedPath = translationsForPath[lang] + if (!translatedPath) return canonicalPath + + // return the translated path + return resolveRoute(translatedPath, match.params) +} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/utils/cookie.ts b/inlang/packages/paraglide-sveltekit/src/runtime/utils/cookie.ts new file mode 100644 index 0000000000..2f91fb2be7 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/utils/cookie.ts @@ -0,0 +1,12 @@ +import { LANG_COOKIE_NAME } from "../../constants.js" +import type { NormalizedBase } from "./normaliseBase.js" + +/** + * Returns a language cookie string that can be assigned to `document.cookie`. + * + * Use this to update the language cookie in the browser. + * + * The cookie lasts for 1 year. + */ +export const createLangCookie = (lang: string, path: NormalizedBase) => + `${LANG_COOKIE_NAME}=${lang};Path=${path};SameSite=lax;Max-Age=31557600` diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/utils/diff-urls.test.ts b/inlang/packages/paraglide-sveltekit/src/runtime/utils/diff-urls.test.ts new file mode 100644 index 0000000000..7a752084c0 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/utils/diff-urls.test.ts @@ -0,0 +1,184 @@ +import { describe, expect, test } from "vitest" +import { getHrefBetween } from "./diff-urls.js" + +describe("getHrefBetween", () => { + test.concurrent("two identical urls with different search query", () => { + const from = new URL("http://localhost:3000") + const to = new URL("http://localhost:3000?foo=bar") + + const href = getHrefBetween(from, to) + + expect(href).toBe("/?foo=bar") + expect(new URL(href, from).href).toBe(to.href) + }) + + test.concurrent("two identical urls with different fragment", () => { + const from = new URL("http://localhost:3000") + const to = new URL("http://localhost:3000#some-fragment") + + const href = getHrefBetween(from, to) + + expect(href).toBe("/#some-fragment") + expect(new URL(href, from).href).toBe(to.href) + }) + + test.concurrent("two identical urls with different search query and fragment", () => { + const from = new URL("http://localhost:3000") + const to = new URL("http://localhost:3000?foo=bar#some-fragment") + + const href = getHrefBetween(from, to) + + expect(href).toBe("/?foo=bar#some-fragment") + expect(new URL(href, from).href).toBe(to.href) + }) + + test.concurrent("two identical urls with different protocols", () => { + const from = new URL("http://localhost:3000") + const to = new URL("https://localhost:3000") + + const href = getHrefBetween(from, to) + + expect(href).toBe("https://localhost:3000/") + expect(new URL(href, from).href).toBe(to.href) + }) + + test("child page, no trailing slash", () => { + const from = new URL("http://localhost:5173/en") + const to = new URL("http://localhost:5173/en/about") + + const href = getHrefBetween(from, to) + + expect(href).toBe("/en/about") + expect(new URL(href, from).href).toBe(to.href) + }) + + test.concurrent("two identical urls with different hosts", () => { + const from = new URL("http://localhost:3000") + const to = new URL("http://localhost:3001") + + const href = getHrefBetween(from, to) + + expect(href).toBe("//localhost:3001/") + expect(new URL(href, from).href).toBe(to.href) + }) + + test.concurrent("two identical urls with different ports", () => { + const from = new URL("http://localhost:3000") + const to = new URL("http://localhost:3001") + + const href = getHrefBetween(from, to) + + expect(href).toBe("//localhost:3001/") + expect(new URL(href, from).href).toBe(to.href) + }) + + test.concurrent("get to parents-page", () => { + const from = new URL("https://example.com/foo/some-page") + const to = new URL("https://example.com/foo/") + + const href = getHrefBetween(from, to) + + expect(href).toBe("/foo/") + expect(new URL(href, from).href).toBe(to.href) + }) + + test.concurrent("get to grand-parents-page", () => { + const from = new URL("https://example.com/foo/bar/some-page") + const to = new URL("https://example.com/foo/") + + const href = getHrefBetween(from, to) + + expect(href).toBe("/foo/") + expect(new URL(href, from).href).toBe(to.href) + }) + + test.concurrent("get to child page", () => { + const from = new URL("https://example.com/foo/") + const to = new URL("https://example.com/foo/some-page/") + + const href = getHrefBetween(from, to) + + expect(href).toBe("/foo/some-page/") + expect(new URL(href, from).href).toBe(to.href) + }) + + test.concurrent("get to grand-child page", () => { + const from = new URL("https://example.com/foo/") + const to = new URL("https://example.com/foo/bar/some-page") + + const href = getHrefBetween(from, to) + + expect(href).toBe("/foo/bar/some-page") + expect(new URL(href, from).href).toBe(to.href) + }) + + test.concurrent("get to sibling page, with trailing slash", () => { + const from = new URL("https://example.com/foo/bar/some-page/") + const to = new URL("https://example.com/foo/bar/another-page/") + + const href = getHrefBetween(from, to) + + expect(href).toBe("/foo/bar/another-page/") + expect(new URL(href, from).href).toBe(to.href) + }) + + test.concurrent("absolute path is shorter than relative path", () => { + const from = new URL("https://example.com/foo/bar/some-page") + const to = new URL("https://example.com/") + + const href = getHrefBetween(from, to) + + expect(href).toBe("/") + expect(new URL(href, from).href).toBe(to.href) + }) + + test.concurrent("urls with different credentials", () => { + const from = new URL("https://user:pass1@example.com/some-page") + const to = new URL("https://user:pass2@example.com/some-page") + + const href = getHrefBetween(from, to) + + expect(href).toBe("//user:pass2@example.com/some-page") + expect(new URL(href, from).href).toBe(to.href) + }) + + test.concurrent("same credentials, different host", () => { + const from = new URL("https://user:pass@localhost:3000") + const to = new URL("https://user:pass@localhost:3001") + + const href = getHrefBetween(from, to) + + expect(href).toBe("//user:pass@localhost:3001/") + expect(new URL(href, from).href).toBe(to.href) + }) + + test.concurrent("same credentials, different path", () => { + const from = new URL("https://user:pass@localhost:3000/") + const to = new URL("https://user:pass@localhost:3000/about") + + const href = getHrefBetween(from, to) + + expect(href).toBe("//user:pass@localhost:3000/about") + expect(new URL(href, from).href).toBe(to.href) + }) + + test.concurrent("same credentials, different protocol", () => { + const from = new URL("https://user:pass@localhost:3000/") + const to = new URL("http://user:pass@localhost:3000/") + + const href = getHrefBetween(from, to) + + expect(href).toBe("http://user:pass@localhost:3000/") + expect(new URL(href, from).href).toBe(to.href) + }) + + test.concurrent("only username", () => { + const from = new URL("https://user@localhost:3000/") + const to = new URL("https://user@localhost:3001/") + + const href = getHrefBetween(from, to) + + expect(href).toBe("//user@localhost:3001/") + expect(new URL(href, from).href).toBe(to.href) + }) +}) diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/utils/diff-urls.ts b/inlang/packages/paraglide-sveltekit/src/runtime/utils/diff-urls.ts new file mode 100644 index 0000000000..fb85a560c3 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/utils/diff-urls.ts @@ -0,0 +1,27 @@ +export const metaUrl = import.meta.url + +/** + * Get's the shortest href that gets from `from` to `to` + * + * @returns An href that gets from `from` to `to` + */ +export function getHrefBetween(from: URL, to: URL): string { + //check if they use the same protocol - If not, we can't do anything + if (from.protocol !== to.protocol) { + return to.href + } + + //If the credentials are included, we always need to include them - so there is no point in diffing further + if (to.password || to.username) { + const credentials = [to.username, to.password].filter(Boolean).join(":") + return "//" + credentials + "@" + to.host + to.pathname + to.search + to.hash + } + + // host = hostname + port + if (from.host !== to.host) { + //since they have the same protocol, we can omit the protocol + return "//" + to.host + to.pathname + to.search + to.hash + } + + return to.pathname + to.search + to.hash +} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/utils/external.test.ts b/inlang/packages/paraglide-sveltekit/src/runtime/utils/external.test.ts new file mode 100644 index 0000000000..09e748ed19 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/utils/external.test.ts @@ -0,0 +1,36 @@ +import { describe, it, expect } from "vitest" +import { isExternal } from "./external" + +describe("isExternal", () => { + it("returns true if the origin is different", () => { + const url = new URL("https://example.com") + const currentUrl = new URL("https://example.org") + const base = "" + + expect(isExternal(url, currentUrl, base)).toBe(true) + }) + + it("returns true if the pathname does not start with the base", () => { + const url = new URL("https://example.com/foo") + const currentUrl = new URL("https://example.com") + const base = "/bar" + + expect(isExternal(url, currentUrl, base)).toBe(true) + }) + + it("returns false if the origin is the same and the pathname starts with the base", () => { + const url = new URL("https://example.com/foo") + const currentUrl = new URL("https://example.com") + const base = "/foo" + + expect(isExternal(url, currentUrl, base)).toBe(false) + }) + + it("can deal with a relative base", () => { + const url = new URL("https://example.com/foo") + const currentUrl = new URL("https://example.com") + const base = "." + + expect(isExternal(url, currentUrl, base)).toBe(false) + }) +}) diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/utils/external.ts b/inlang/packages/paraglide-sveltekit/src/runtime/utils/external.ts new file mode 100644 index 0000000000..0b61ab3821 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/utils/external.ts @@ -0,0 +1,4 @@ +export function isExternal(url: URL, currentUrl: URL, base: string) { + const absoluteBase = new URL(base ?? "/", currentUrl).pathname + return url.origin !== currentUrl.origin || !url.pathname.startsWith(absoluteBase) +} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/utils/normaliseBase.test.ts b/inlang/packages/paraglide-sveltekit/src/runtime/utils/normaliseBase.test.ts new file mode 100644 index 0000000000..ac24255e49 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/utils/normaliseBase.test.ts @@ -0,0 +1,20 @@ +import { describe, it, expect } from "vitest" +import { normaliseBase } from "./normaliseBase" + +describe("normaliseBase", () => { + it("should return '' if base is empty", () => { + expect(normaliseBase("", new URL("http://example.com/some-subpage"))).toBe("") + }) + + it("should return absolute path if base is relative", () => { + expect(normaliseBase("..", new URL("http://example.com/a/b/c/"))).toBe("/a/b") + }) + + it("should return '' if base is at the root", () => { + expect(normaliseBase("..", new URL("http://example.com/some-subpage"))).toBe("") + }) + + it("should return absolute path if base is absolute", () => { + expect(normaliseBase("/a/b/", new URL("http://example.com/a/b/c/"))).toBe("/a/b") + }) +}) diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/utils/normaliseBase.ts b/inlang/packages/paraglide-sveltekit/src/runtime/utils/normaliseBase.ts new file mode 100644 index 0000000000..3af3025ca9 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/utils/normaliseBase.ts @@ -0,0 +1,12 @@ +export type NormalizedBase = `/${string}` | "" +/** + * Normalises SvelteKit's base path value to always be an absolute path - or an empty string. + * + * @param baseValue - The { base } value exported from "$app/paths" + * @param currentUrl - The current URL of the page + */ +export function normaliseBase(baseValue: string, currentUrl: URL): NormalizedBase { + if (baseValue === "") return "" + const absoluteBase = new URL(baseValue, currentUrl).pathname as NormalizedBase + return (absoluteBase.endsWith("/") ? absoluteBase.slice(0, -1) : absoluteBase) as NormalizedBase +} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/utils/path.test.ts b/inlang/packages/paraglide-sveltekit/src/runtime/utils/path.test.ts new file mode 100644 index 0000000000..47c13c1fc2 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/utils/path.test.ts @@ -0,0 +1,20 @@ +import { describe, it, expect } from "vitest" +import * as path from "./path" + +describe("path.normalize", () => { + it("adds a leading slash", () => { + expect(path.normalize("foo")).toBe("/foo") + }) + + it("removes a trailing slash", () => { + expect(path.normalize("foo/")).toBe("/foo") + }) + + it("can deal with empty segments", () => { + expect(path.normalize("foo//bar")).toBe("/foo/bar") + }) + + it("can deal with an empty input", () => { + expect(path.normalize("")).toBe("/") + }) +}) diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/utils/path.ts b/inlang/packages/paraglide-sveltekit/src/runtime/utils/path.ts new file mode 100644 index 0000000000..b99c08b73e --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/utils/path.ts @@ -0,0 +1,6 @@ +/** + * Always starts with a slash and never ends with a slash. + */ +export function normalize(path: string): `/${string}` { + return `/${path.split("/").filter(Boolean).join("/")}` +} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/utils/route.test.ts b/inlang/packages/paraglide-sveltekit/src/runtime/utils/route.test.ts new file mode 100644 index 0000000000..d083aa3dd7 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/utils/route.test.ts @@ -0,0 +1,73 @@ +import { describe, it, expect } from "vitest" +import { parseRoute, serializeRoute } from "./route" + +describe("parsePath", () => { + it("correctly identifies the segments (with base path)", () => { + const [path] = parseRoute("/base/foo/bar", "/base") + expect(path).toBe("/foo/bar") + }) + + it("correctly identifies the segments (without base path)", () => { + const [path] = parseRoute("/foo/bar", "") + expect(path).toBe("/foo/bar") + }) + + it("deals with root inputs", () => { + const [path] = parseRoute("/", "") + expect(path).toBe("/") + }) + + it("deals with an input that is just the base inputs", () => { + const [path] = parseRoute("/base", "/base") + expect(path).toBe("/") + }) + + it("removes data-request suffixes as data requests", () => { + const [path, dataSuffix] = parseRoute("/foo/bar/__data.json", "") + expect(dataSuffix).toBe("/__data.json") + expect(path).toBe("/foo/bar") + }) + + it("identifies data-requests as html data requests", () => { + const [path, dataSuffix] = parseRoute("/foo/bar/.html__data.json", "") + expect(dataSuffix).toBe("/.html__data.json") + expect(path).toBe("/foo/bar") + }) + + it("preserves trailing slash", () => { + const [path] = parseRoute("/base/foo/bar/", "/base") + expect(path).toBe("/foo/bar/") + }) + + it("decodes encoded url segments", () => { + const [path] = parseRoute("/%20", "") + expect(path).toBe("/ ") + }) +}) + +describe("serializeRoute", () => { + it("correctly serializes the path (with base path)", () => { + const path = serializeRoute("/foo/bar", "/base", undefined) + expect(path).toBe("/base/foo/bar") + }) + + it("correctly serializes the path (without base path)", () => { + const path = serializeRoute("/foo/bar", "", undefined) + expect(path).toBe("/foo/bar") + }) + + it("correctly serializes the path (with data suffix)", () => { + const path = serializeRoute("/foo/bar", "", "/__data.json") + expect(path).toBe("/foo/bar/__data.json") + }) + + it("correctly serializes the path (with data suffix and base)", () => { + const path = serializeRoute("/foo/bar", "/base", "/__data.json") + expect(path).toBe("/base/foo/bar/__data.json") + }) + + it("preserves the trailing slash", () => { + const path = serializeRoute("/foo/bar/", "/base", undefined) + expect(path).toBe("/base/foo/bar/") + }) +}) diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/utils/route.ts b/inlang/packages/paraglide-sveltekit/src/runtime/utils/route.ts new file mode 100644 index 0000000000..8b418681db --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/utils/route.ts @@ -0,0 +1,72 @@ +import type { NormalizedBase } from "./normaliseBase.js" + +export type DataSuffix = `/${string}` +export type AbsolutePath = `/${string}` + +/** + * Takes a path and removes the base & data suffix + * + * @param fullPath The path to parse, including base & data suffix. Should be absolute + * @returns A tuple of the path and the data suffix + */ +export function parseRoute( + fullPath: string, + normalizedBase: NormalizedBase +): [AbsolutePath, DataSuffix | undefined] { + const decodedPath = safeDecode(fullPath) as AbsolutePath + + const pathWithoutBase = removeBase(decodedPath, normalizedBase) + const [path, dataSuffix] = removeDataSuffix(pathWithoutBase) + return [path, dataSuffix] +} + +/** + * Adds the base & data suffix back to a path + * + * @param path The path to serialize + * @param base The normalized base path + * @param dataSuffix The data suffix (if it exists) + */ +export const serializeRoute = ( + path: string, + normalizedBase: NormalizedBase, + dataSuffix: DataSuffix | undefined +) => [normalizedBase, path, dataSuffix ?? ""].filter((s) => s !== "/").join("") || "/" + +/** + * Removes the base from an absolute path + * @param absolutePath + * @param normalizedBase + * @returns + */ +function removeBase(absolutePath: AbsolutePath, normalizedBase: NormalizedBase): AbsolutePath { + const withoutBase = absolutePath.replace(normalizedBase, "") + return withoutBase.startsWith("/") ? (withoutBase as AbsolutePath) : `/${withoutBase}` +} + +/** + * Removes any known data suffix from the path + * + * @param absolutePath The absolute path + * @returns A tuple of the path and the data suffix + */ +function removeDataSuffix(absolutePath: AbsolutePath): [AbsolutePath, DataSuffix | undefined] { + /** The path suffix SvelteKit adds on Data requests */ + const KNOWN_SUFFIXES: DataSuffix[] = ["/.html__data.json", "/__data.json"] + + const dataSuffix = KNOWN_SUFFIXES.find((suffix) => absolutePath.endsWith(suffix)) + + if (dataSuffix) { + return [(absolutePath.slice(0, -dataSuffix.length) || "/") as AbsolutePath, dataSuffix] + } else { + return [absolutePath, undefined] + } +} + +function safeDecode(maybeEncoded: string): string { + try { + return decodeURI(maybeEncoded) + } catch { + return maybeEncoded + } +} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/utils/text-dir.test.ts b/inlang/packages/paraglide-sveltekit/src/runtime/utils/text-dir.test.ts new file mode 100644 index 0000000000..2bfb60372a --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/utils/text-dir.test.ts @@ -0,0 +1,21 @@ +import { describe, it, expect } from "vitest" +import { guessTextDir, guessTextDirMap } from "./text-dir" + +describe("guessTextDir", () => { + it("should guess the text direction in Node", () => { + expect(guessTextDir("ar")).toBe("rtl") + expect(guessTextDir("en")).toBe("ltr") + expect(guessTextDir("de")).toBe("ltr") + expect(guessTextDir("")).toBe("ltr") + }) +}) + +describe("guessTextDirMap", () => { + it("should guess the text direction for each language", () => { + expect(guessTextDirMap(["ar", "en", "de"])).toEqual({ + ar: "rtl", + en: "ltr", + de: "ltr", + }) + }) +}) diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/utils/text-dir.ts b/inlang/packages/paraglide-sveltekit/src/runtime/utils/text-dir.ts new file mode 100644 index 0000000000..8e413fb219 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/runtime/utils/text-dir.ts @@ -0,0 +1,27 @@ +const RTL = "rtl" +const LTR = "ltr" + +type TextDirection = "rtl" | "ltr" + +export function guessTextDir(lang: T): TextDirection { + // this is super unreliable across browsers, so we expect errors + try { + const locale = new Intl.Locale(lang) + + if ("textInfo" in locale) { + // @ts-ignore - Chrome & Node + return locale.textInfo.direction === RTL ? RTL : LTR + } + + // @ts-ignore - Safari only + return locale.getTextInfo().direction === RTL ? RTL : LTR + } catch (e) { + //Firefox lmao + return LTR + } +} + +export function guessTextDirMap(langs: readonly T[]): Record { + const entries: [T, TextDirection][] = langs.map((lang) => [lang, guessTextDir(lang)]) + return Object.fromEntries(entries) as Record +} diff --git a/inlang/packages/paraglide-sveltekit/src/vite/config.ts b/inlang/packages/paraglide-sveltekit/src/vite/config.ts new file mode 100644 index 0000000000..ce690e1402 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/vite/config.ts @@ -0,0 +1,39 @@ +import type { paraglide as vitePluginParaglide } from "@inlang/paraglide-vite" + +type VitePluginUserConfig = Parameters[0] + +export interface UserConfig extends VitePluginUserConfig { + /** + * The preprocessor rewrites any links in your markup + * and translates them according to the routing strategy. + * + * If you don't want this, you can disable it here. + * + * @default false + */ + disablePreprocessor?: boolean +} + +/** + * The full config for @inlang/paraglide-sveltekit. + * Any values not provided by the user are filled in with defaults. + */ +export interface Config extends VitePluginUserConfig { + disablePreprocessor: boolean +} + +/** + * Takes in the config provided by the user and returns the full config used internally. + * All values not provided by the user are filled in with defaults. + * + * @param userConfig The user config + * @returns The internal full config + */ +export function resolveConfig(userConfig: UserConfig): Config { + const fullConfig: Config = { + ...userConfig, + disablePreprocessor: userConfig.disablePreprocessor ?? false, + } + + return fullConfig +} diff --git a/inlang/packages/paraglide-sveltekit/src/vite/index.ts b/inlang/packages/paraglide-sveltekit/src/vite/index.ts new file mode 100644 index 0000000000..2bc6531192 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/vite/index.ts @@ -0,0 +1,33 @@ +import { paraglide as vitePluginParaglide } from "@inlang/paraglide-vite" +import { preprocessor, type PreprocessorConfig } from "./preprocessor/index.js" +import { type UserConfig, type Config, resolveConfig } from "./config.js" +import type { Plugin } from "vite" + +// Vite's Plugin type is often incompatible between vite versions, so we use any here +export function paraglide(userConfig: UserConfig): any { + const config = resolveConfig(userConfig) + const plugins: Plugin[] = [vitePluginParaglide(config)] + + if (!config.disablePreprocessor) { + plugins.push(registerPreprocessor(config)) + } + + return plugins +} + +/** + * This plugin registers the preprocessor with Svelte. + */ +function registerPreprocessor( + // eslint-disable-next-line @typescript-eslint/no-unused-vars + _config: Config +): Plugin { + const preprocessConfig: PreprocessorConfig = {} + return { + name: "@inlang/paraglide-sveltekit/vite/register-preprocessor", + api: { + //The Svelte vite-plugin looks for this and automatically adds it to the preprocess array + sveltePreprocess: preprocessor(preprocessConfig), + }, + } +} diff --git a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/index.test.ts b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/index.test.ts new file mode 100644 index 0000000000..46b1b483b9 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/index.test.ts @@ -0,0 +1,417 @@ +import { describe, it } from "vitest" +import { render as ssr } from "svelte/server" +import { CompileOptions, preprocess } from "svelte/compiler" +import { preprocessor as createPreprocessor } from "./index" +import { compile } from "svelte/compiler" +import { rollup } from "rollup" +import virtual from "@rollup/plugin-virtual" +import alias from "@rollup/plugin-alias" +import { nodeResolve } from "@rollup/plugin-node-resolve" +import path from "node:path" +import { fileURLToPath } from "node:url" + +const __filename = fileURLToPath(import.meta.url) +const __dirname = path.dirname(__filename) + +const preprocessor = createPreprocessor({}) + +//Make sure these tests are run concurrently - Otherwise they will take forever +describe.concurrent( + "preprocessor", + () => { + it("leaves non-translatable attributes alone", async ({ expect }) => { + const hardcodedElementCode = `Test` + const dynamicElementCode = `Test` + + const hardcodedElementHtml = await renderComponent(hardcodedElementCode) + const dynamicElementHtml = await renderComponent(dynamicElementCode) + + expect(hardcodedElementHtml).toMatchInlineSnapshot( + '"Test"' + ) + expect(dynamicElementHtml).toMatchInlineSnapshot( + '"Test"' + ) + }) + + it("translates hardcoded href attributes", async ({ expect }) => { + const code = `Test` + const html = await renderComponent(code) + expect(html).toMatchInlineSnapshot(`"Test"`) + }) + + it("translates parameterized href attributes", async ({ expect }) => { + const code = ` + + Test` + + const html = await renderComponent(code) + expect(html).toMatchInlineSnapshot(`"Test"`) + }) + + it("translates links inside {#if} blocks", async ({ expect }) => { + const code = ` + + {#if show} + Test + {/if} + ` + + const html = await renderComponent(code) + expect(html).toMatchInlineSnapshot('"Test"') + }) + + it("translates links inside {:else} blocks", async ({ expect }) => { + const ifCode = ` + {#if false} + If + {:else} + Test + {/if} + ` + + const eachCode = ` + {#each [] as item} + Each + {:else} + Test + {/each} + ` + + const elseIfCode = ` + {#if false} + If + {:else if true} + Test + {:else} + Else + {/if} + ` + + const ifHtml = await renderComponent(ifCode) + const eachHtml = await renderComponent(eachCode) + const elseIfHtml = await renderComponent(elseIfCode) + + expect(ifHtml).toMatchInlineSnapshot('"Test"') + expect(eachHtml).toMatchInlineSnapshot('"Test"') + expect(elseIfHtml).toMatchInlineSnapshot('"Test"') + }) + + it("translates links inside {:then} and {:catch} blocks", async ({ expect }) => { + const code = ` + + {#await promise} + Awaiting + {:then}Test{/await} + ` + + const html = await renderComponent(code) + expect(html).toMatchInlineSnapshot('"Test"') + }) + + it("translates shorthand href attributes", async ({ expect }) => { + const code = ` + + content` + + const html = await renderComponent(code) + expect(html).toMatchInlineSnapshot('"content"') + }) + + it("uses the hreflang attribute", async ({ expect }) => { + const code = `content` + + const html = await renderComponent(code) + expect(html).toMatchInlineSnapshot('"content"') + }) + + it("uses the hreflang attribute with shorthand", async ({ expect }) => { + const code = ` + + content` + + const html = await renderComponent(code) + expect(html).toMatchInlineSnapshot('"content"') + }) + + it("translates the spread operator - no hreflang", async ({ expect }) => { + const code = ` + + content` + + const html = await renderComponent(code) + expect(html).toMatchInlineSnapshot('"content"') + }) + + it("translates the spread operator - with hreflang", async ({ expect }) => { + const code = ` + + content` + + const html = await renderComponent(code) + expect(html).toMatchInlineSnapshot('"content"') + }) + + it("translates tags if they are links", async ({ expect }) => { + const hardcoded = `content` + const parameterized = ` + ` + + const hardcodedHtml = await renderComponent(hardcoded) + const parameterizedHtml = await renderComponent(parameterized) + + expect(hardcodedHtml).toMatchInlineSnapshot( + '"content"' + ) + expect(parameterizedHtml).toMatchInlineSnapshot( + '""' + ) + }) + + it("handles the spread operator on tags", async ({ expect }) => { + const formCode = ` + + ` + + const linkCode = ` + + content` + + const formHtml = await renderComponent(formCode) + const linkHtml = await renderComponent(linkCode) + + expect(formHtml).toMatchInlineSnapshot('"
"') + expect(linkHtml).toMatchInlineSnapshot('"content"') + }) + + it("ignore the href value if it isn't a string", async ({ expect }) => { + const attributeCode = ` + + + content + ` + + const shorthandCode = ` + + + content + ` + + const spreadCode = ` + + + content + ` + + expect(await renderComponent(attributeCode)).toMatchInlineSnapshot('"content"') + expect(await renderComponent(shorthandCode)).toMatchInlineSnapshot('"content"') + expect(await renderComponent(spreadCode)).toMatchInlineSnapshot('"content"') + }) + + it("translates the action attribute of forms", async ({ expect }) => { + const code = `
` + + const html = await renderComponent(code) + expect(html).toMatchInlineSnapshot('"
"') + }) + + it("translates the formaction attribute of buttons", async ({ expect }) => { + const code = `` + + const html = await renderComponent(code) + expect(html).toMatchInlineSnapshot('""') + }) + + it("translates the spread operator - with external hreflang", async ({ expect }) => { + const code = ` + + content` + + const html = await renderComponent(code) + expect(html).toMatchInlineSnapshot('"content"') + }) + + it("handles conflicting hreflang values (last one wins)", async ({ expect }) => { + const code = ` + + content` + + const html = await renderComponent(code) + expect(html).toMatchInlineSnapshot('"content"') + }) + + it("handles a language switcher", async ({ expect }) => { + const code = ` + + + + {#each availableLanguageTags as lang} + {lang} + {/each} + ` + + const html = await renderComponent(code) + expect(html).toMatchInlineSnapshot( + '"deen"' + ) + }) + + it("handles stores as hrefs", async ({ expect }) => { + const code = ` + + content` + const html = await renderComponent(code) + expect(html).toMatchInlineSnapshot('"content"') + }) + + it("rewrites hrefs in components with snippets", async ({ expect }) => { + const code = ` + {#snippet myLink(href)} + content + {/snippet} + + {@render myLink("/test")} + ` + const html = await renderComponent(code) + expect(html).toMatchInlineSnapshot('"content"') + }) + + it("handles rune syntax", async ({ expect }) => { + const code = ` + + test + ` + + const html = await renderComponent(code) + expect(html).toMatchInlineSnapshot('"test"') + }) + + it("handles rune with shorthand", async ({ expect }) => { + const code = ` + + test + ` + + const html = await renderComponent(code) + expect(html).toMatchInlineSnapshot('"test"') + }) + }, + { timeout: 60_000 } +) + +/** + * Takes in a svelte component -> preprocesses it -> SSRs it in context -> returns the html + * + * This truly is one of the test utilities of all time + */ +async function renderComponent(svelteCode: string) { + const EntrySvelteCode = ` + + + + ` + const compilerOptions: CompileOptions = { + generate: "server", + } + + const preprocessedEntry = await preprocess(EntrySvelteCode, preprocessor, { + filename: "src/Entry.svelte", + }) + const preprocessedComponent = await preprocess(svelteCode, preprocessor, { + filename: "src/Component.svelte", + }) + + const compiledEntry = compile(preprocessedEntry.code, compilerOptions) + const compiledComponent = compile(preprocessedComponent.code, compilerOptions) + + // if there are warnings, throw them + if (compiledComponent.warnings.length >= 1) { + const warnings = [...compiledComponent.warnings] + throw new Error("Got Warning while compiling: \n\n" + warnings.map((w) => w.code).join("\n\n")) + } + + const bundle = await rollup({ + input: "src/Entry.svelte", + plugins: [ + virtual({ + "src/Entry.svelte": compiledEntry.js.code, + "src/Component.svelte": compiledComponent.js.code, + }), + alias({ + entries: { + "@inlang/paraglide-sveltekit/internal": path.resolve( + __dirname, + "../../runtime/internal/index.js" + ), + }, + }), + nodeResolve(), + ], + onwarn: (w) => { + if (w.message.includes("Circular dependency")) return + console.warn(w) + }, + }) + + const compiledBundle = await bundle.generate({ format: "esm" }) + const base64Bundle = Buffer.from(compiledBundle.output[0].code).toString("base64") + const module = await import("data:text/javascript;base64," + base64Bundle) + const { html } = ssr(module.default, { context: new Map(), props: {} }) + + //remove all html comments + return html.replace(//g, "") +} diff --git a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/index.ts b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/index.ts new file mode 100644 index 0000000000..8fef8bdea6 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/index.ts @@ -0,0 +1,113 @@ +import { parse, type PreprocessorGroup, type LegacyRoot } from "svelte/compiler" +import MagicString from "magic-string" +import { shouldApply } from "./precheck.js" +import { rewrite } from "./rewrite.js" + +export type PreprocessorConfig = Record + +export type AttributeTranslation = { + attribute_name: string + lang_attribute_name?: string +} + +export type TranslationDefinition = Record + +const TRANSLATIONS: TranslationDefinition = { + a: [ + { + attribute_name: "href", + lang_attribute_name: "hreflang", + }, + ], + form: [ + { + attribute_name: "action", + }, + ], + button: [ + { + attribute_name: "formaction", + }, + ], +} + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +export function preprocessor(_config: PreprocessorConfig): PreprocessorGroup { + return { + name: "@inlang/paraglide-sveltekit", + markup: ({ filename, content }) => { + const NOOP = { code: content } + + //I dont' know when this would happen, but it's better to be safe than sorry + if (!filename) return NOOP + + //dont' process components owned by the framework + if (filename.includes(".svelte-kit")) return NOOP + + if ( + content.includes("]*>.*?<\/a\s*>|]*\/>/g) + ) { + console.warn( + "[paraglide] `` tags in the same file as `` won't be translated.\nConsider moving it into another component.\n" + + filename + ) + } + + //Run quick checks to see if preprocessing should be applied - skip parsing if not + if (!shouldApply(content, TRANSLATIONS)) return NOOP + + //Parse the file + let root: LegacyRoot + try { + root = parse(content) + } catch (error) { + console.error( + `[@inlang/paraglide-sveltekit] Failed to parse ${filename}. Link translations were NOT applied.`, + error + ) + + return NOOP + } + + const code = new MagicString(content) + + const passResult = rewrite({ + root, + code, + originalCode: content, + translations: TRANSLATIONS, + }) + + const before = new Set(passResult.scriptAdditions?.before) + const after = new Set(passResult.scriptAdditions?.after) + + //Inject any imports that were added by the passes + modifyScriptTag(root, code, { before, after }) + + //Generate the code and map + const map = code.generateMap({ hires: true }) + return { code: code.toString(), map } + }, + } +} + +function modifyScriptTag( + root: LegacyRoot, + code: MagicString, + additions: { before?: Iterable; after?: Iterable } +) { + const before = additions.before ? [...additions.before] : [] + const after = additions.after ? [...additions.after] : [] + + if (!root.instance) { + code.prepend("\n") + } else { + //@ts-ignore + const scriptStart = root.instance.content.start as number + //@ts-ignore + const scriptEnd = root.instance.content.end as number + code.appendLeft(scriptStart, "\n" + before.join("\n") + "\n") + code.appendRight(scriptEnd, "\n" + after.join("\n") + "\n") + } +} diff --git a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/precheck.test.ts b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/precheck.test.ts new file mode 100644 index 0000000000..6aa9e274c7 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/precheck.test.ts @@ -0,0 +1,69 @@ +import { it, expect } from "vitest" +import { shouldApply } from "./precheck" +import ParaglideJSComponentCode from "../../runtime/ParaglideJS.svelte?raw" + +it("should not apply on the ParaglideJS component", () => { + expect( + shouldApply(ParaglideJSComponentCode, { + a: [ + { + attribute_name: "href", + }, + ], + }) + ).toBe(false) +}) + +it("should apply on a component with ", () => { + const code = ` +

+ content +

+ ` + + expect( + shouldApply(code, { + a: [ + { + attribute_name: "href", + }, + ], + }) + ).toBe(true) +}) + +it("should apply on a component with and spread operator", () => { + const code = ` +

+ content +

+ ` + + expect( + shouldApply(code, { + a: [ + { + attribute_name: "href", + }, + ], + }) + ).toBe(true) +}) + +it("should apply on a component that matches the translation", () => { + const code = ` +

+ content +

+ ` + + expect( + shouldApply(code, { + a: [ + { + attribute_name: "href", + }, + ], + }) + ).toBe(true) +}) diff --git a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/precheck.ts b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/precheck.ts new file mode 100644 index 0000000000..9f6a38d741 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/precheck.ts @@ -0,0 +1,27 @@ +import type { TranslationDefinition } from "./index.js" + +/** + * Performs a quick and dirty check to see if the file should be processed. + * Will have false positives, but no false negatives. + * + * @param content - The source code of the .svelte file + * @param TRANSLATIONS - The translation definitions + * @returns true/false if the file should be processed + */ +export function shouldApply(content: string, TRANSLATIONS: TranslationDefinition) { + const includesSpread = content.includes("{...") + const includesSvelteElement = content.includes(" + content.includes(tr.attribute_name) + ) + + if ((includesSpread || includesAttribute) && (includesElement || includesSvelteElement)) { + return true + } + } + + return false +} diff --git a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/rewrite.ts b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/rewrite.ts new file mode 100644 index 0000000000..2e0554b553 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/rewrite.ts @@ -0,0 +1,237 @@ +import { NO_TRANSLATE_ATTRIBUTE } from "../../constants.js" +import type { TranslationDefinition } from "./index.js" +import { getAttributeByName, getElementsFromAst } from "./utils/ast.js" +import { attrubuteValuesToJSValue } from "./utils/attributes-to-values.js" +import { identifier } from "./utils/identifier.js" +import { uneval } from "devalue" +import * as c from "./utils/codegen.js" +import type { Attribute, ElementNode, SpreadAttribute } from "./types.js" +import type MagicString from "magic-string" +import type { LegacyRoot } from "svelte/compiler" + +const i = identifier(`translate_attribute_pass`) + +export const rewrite = ({ + root: ast, + code, + originalCode, + translations, +}: { + root: LegacyRoot + code: MagicString + originalCode: string + translations: TranslationDefinition +}) => { + if (hasAlreadyBeenRewritten(originalCode)) + return { + scriptAdditions: { + before: [], + after: [], + }, + } + + const svelteElements = getElementsFromAst(ast, "svelte:element") + + for (const [element_name, attribute_translations] of Object.entries(translations)) { + const elements = [...getElementsFromAst(ast, element_name)] + + for (const element of elements) { + if (hasSpreadAttribute(element)) { + const { attributeObjectSource, attributes } = getAttributesObject(element, originalCode) + if (attributes.size === 0) continue //fast path + + // add a new spread attribute at the end of the element + const newSpreadAttributeString = c.spreadAttr( + `${i("handle_attributes")}(${attributeObjectSource}, ${uneval(attribute_translations)})` + ) + + // remove all attributes that were replaced from the code + for (const attribute of attributes) { + code.remove(attribute.start, attribute.end) + } + + //Add the new spread attribute + code.appendRight(element.start + element.name.length + 1, " " + newSpreadAttributeString) + + //add just before the element + code.appendLeft(element.start, "") + } else { + for (const element_translations of Object.entries(translations)) { + const attribute_translations = element_translations[1] + for (const { attribute_name, lang_attribute_name } of attribute_translations) { + const attribute = getAttributeByName(element, attribute_name) + if (!attribute) continue + + if (getAttributeByName(element, NO_TRANSLATE_ATTRIBUTE)) continue + + const langAttribute = lang_attribute_name + ? getAttributeByName(element, lang_attribute_name) + : undefined + + const newAttributeCode = c.attribute( + attribute_name, + + `${i("translateAttribute")}( + ${attrubuteValuesToJSValue( + attribute.value, + originalCode + )}, + ${ + langAttribute + ? attrubuteValuesToJSValue( + langAttribute.value, + originalCode + ) + : "undefined" + } + )` + ) + + //replace the attribute with the new attribute + code.overwrite(attribute.start, attribute.end, newAttributeCode) + } + } + } + } + } + + for (const element of svelteElements) { + const thisAttribute = element.tag + if (!thisAttribute) continue + + const thisValue = + typeof thisAttribute === "string" + ? c.str(thisAttribute) + : "`${" + originalCode.slice(thisAttribute.start, thisAttribute.end) + "}`" + + if (hasSpreadAttribute(element)) { + const { attributeObjectSource, attributes } = getAttributesObject(element, originalCode) + if (attributes.size === 0) continue //fast path + + // builds a giant ternary expression that applies the translated attributes based on the thisAttribute + let value = attributeObjectSource + for (const [element_name, attribute_translations] of Object.entries(translations)) { + value = c.ternary( + c.eq(thisValue, c.str(element_name)), + `${i("handle_attributes")}(${attributeObjectSource}, ${uneval(attribute_translations)})`, + value + ) + } + + // remove the replaced attributes from the code + for (const attribute of attributes) { + code.remove(attribute.start, attribute.end) + } + + // add a new spread attribute at the end of the element + const newSpreadAttributeString = c.spreadAttr(value) + + code.appendRight(element.start + element.name.length + 1, " " + newSpreadAttributeString) + + //add just before the element + code.appendLeft(element.start, "") + } else { + for (const [element_name, attribute_translations] of Object.entries(translations)) { + for (const { attribute_name, lang_attribute_name } of attribute_translations) { + const attribute = getAttributeByName(element, attribute_name) + if (!attribute) continue + + if (getAttributeByName(element, NO_TRANSLATE_ATTRIBUTE)) continue + + const langAttribute = lang_attribute_name + ? getAttributeByName(element, lang_attribute_name) + : undefined + + const newAttributeCode = c.attribute( + attribute_name, + c.ternary( + c.eq(thisValue, c.str(element_name)), + `${i("translateAttribute")}(${attrubuteValuesToJSValue( + attribute.value, + originalCode + )},${ + langAttribute + ? attrubuteValuesToJSValue(langAttribute.value, originalCode) + : "undefined" + })`, + attrubuteValuesToJSValue(attribute.value, originalCode) + ) + ) + + //replace the attribute with the new attribute + code.overwrite(attribute.start, attribute.end, newAttributeCode) + } + } + } + } + + const before = [ + `import { getTranslationFunctions as ${i( + "getTranslationFunctions" + )} } from '@inlang/paraglide-sveltekit/internal';`, + ] + const after: string[] = [ + `const ${i("translationFunctions")} = ${i("getTranslationFunctions")}();\nconst [ ${i( + "translateAttribute" + )}, ${i("handle_attributes")} ] = ${i("translationFunctions")};`, + ] + + return { + scriptAdditions: { + before, + after, + }, + } +} + +function getAttributesObject( + element: ElementNode, + originalCode: string +): { + attributes: Set | SpreadAttribute> + attributeObjectSource: string +} { + const attributeEntries: string[] = [] + const replacedAttributes = new Set | SpreadAttribute>() + + for (const attribute of element.attributes) { + switch (attribute.type) { + case "Attribute": { + attributeEntries.push( + `${c.str(attribute.name)} : ${attrubuteValuesToJSValue(attribute.value, originalCode)}` + ) + replacedAttributes.add(attribute) + break + } + case "Spread": { + const code: string = originalCode.slice( + //@ts-ignore + attribute.expression.start, + //@ts-ignore + attribute.expression.end + ) + + attributeEntries.push(`...(${code})`) + replacedAttributes.add(attribute) + break + } + } + } + + return { + attributes: replacedAttributes, + attributeObjectSource: `{${attributeEntries.join(", ")}}`, + } +} + +function hasSpreadAttribute(element: ElementNode): boolean { + return element.attributes.some((attribute) => attribute.type === "Spread") +} + +/** + * Protection measure to make sure we don't rewrite the same code twice + * @param originalCode + */ +function hasAlreadyBeenRewritten(originalCode: string): boolean { + return originalCode.includes(i("getTranslationFunctions")) +} diff --git a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/types.d.ts b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/types.d.ts new file mode 100644 index 0000000000..8f900e0ed7 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/types.d.ts @@ -0,0 +1,53 @@ +import type { LegacyRoot } from "svelte/compiler" +import type { BaseDirective } from "svelte/types/compiler/interfaces" + +export type TemplateNode = LegacyRoot["html"] + +export type ElementNode = { + start: number + end: number + type: "Element" + attributes: (Attribute | SpreadAttribute | BaseDirective)[] +} & (Name extends "svelte:element" + ? { + name: "svelte:element" + tag: string | Expression + } + : { name: Name }) + +type Expression = { + start: number + end: number +} + +type SpreadAttribute = Extract +type Attribute = Extract & { + value: AttributeValue[] | boolean +} + +export type AttributeValue = + | { + start: number + end: number + type: "Text" + raw: string + data: string + } + | { + start: number + end: number + type: "MustacheTag" + expression: { + start: number + end: number + } + } + | { + start: number + end: number + type: "AttributeShorthand" + expression: { + start: number + end: number + } + } diff --git a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/ast.ts b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/ast.ts new file mode 100644 index 0000000000..4ad0970ed7 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/ast.ts @@ -0,0 +1,46 @@ +import type { LegacyRoot } from "svelte/compiler" +import type { Attribute, ElementNode, TemplateNode } from "../types.js" + +export function getElementsFromAst( + ast: LegacyRoot, + elementName: Name +): ElementNode[] { + const links: ElementNode[] = [] + + function walk(templateNode: TemplateNode) { + if ( + templateNode.type === "Element" && + "name" in templateNode && + templateNode.name === elementName + ) { + links.push(templateNode as ElementNode) + } + + for (const child of "children" in templateNode ? templateNode.children : []) { + walk(child) + } + + // @ts-ignore + if (templateNode.else) walk(templateNode.else) + // @ts-ignore + if (templateNode.then) walk(templateNode.then) + // @ts-ignore + if (templateNode.catch) walk(templateNode.catch) + } + + walk(ast.html) + return links +} + +export function hasSpreadAttribute(element: ElementNode): boolean { + return element.attributes.some((attribute) => attribute.type === "Spread") +} + +export function getAttributeByName( + element: ElementNode, + name: T +): Attribute | undefined { + return element.attributes.find( + (attribute) => attribute.type === "Attribute" && attribute.name === name + ) as Attribute | undefined +} diff --git a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/attributes-to-values.test.ts b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/attributes-to-values.test.ts new file mode 100644 index 0000000000..54f9692fcd --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/attributes-to-values.test.ts @@ -0,0 +1,116 @@ +import { describe, it, expect } from "vitest" +import { attrubuteValuesToJSValue } from "./attributes-to-values" +import type { AttributeValue } from "../types" + +describe("attributesToValues", () => { + it("stringifies a single text value", () => { + const originalCode = "hello" + + const attributeValues: AttributeValue[] = [ + { + start: 0, + end: 5, + type: "Text", + raw: "hello", + data: "hello", + }, + ] + + const result = attrubuteValuesToJSValue(attributeValues, originalCode) + expect(result).toBe("`hello`") + }) + + it("stringifies a single mustache tag", () => { + const originalCode = "{hello}" + const attributeValues: AttributeValue[] = [ + { + start: 0, + end: 7, + type: "MustacheTag", + expression: { + start: 1, + end: 6, + }, + }, + ] + + const result = attrubuteValuesToJSValue(attributeValues, originalCode) + expect(result).toBe("hello") + }) + + it("stringifies an interweaved text and mustache tag", () => { + const originalCode = "hello {world}" + const attributeValues: AttributeValue[] = [ + { + start: 0, + end: 5, + type: "Text", + raw: "hello ", + data: "hello ", + }, + { + start: 6, + end: 13, + type: "MustacheTag", + expression: { + start: 7, + end: 12, + }, + }, + ] + + const result = attrubuteValuesToJSValue(attributeValues, originalCode) + expect(result).toBe("`hello ${world}`") + }) + + it("escapes backticks in text", () => { + const originalCode = "hello `world`" + + const attributeValues: AttributeValue[] = [ + { + start: 0, + end: 13, + type: "Text", + raw: "hello `world`", + data: "hello `world`", + }, + ] + + const result = attrubuteValuesToJSValue(attributeValues, originalCode) + expect(result).toBe("`hello \\`world\\``") + }) + + it("escapes ${ in text", () => { + const originalCode = "hello ${world" + + const attributeValues: AttributeValue[] = [ + { + start: 0, + end: 13, + type: "Text", + raw: "hello ${world", + data: "hello ${world", + }, + ] + + const result = attrubuteValuesToJSValue(attributeValues, originalCode) + expect(result).toBe("`hello \\${world`") + }) + + it("doesn't escape $ in text", () => { + const originalCode = "hello $world" + + const attributeValues: AttributeValue[] = [ + { + start: 0, + end: 12, + type: "Text", + raw: "hello $world", + data: "hello $world", + }, + ] + + const result = attrubuteValuesToJSValue(attributeValues, originalCode) + expect(result).toBe("`hello $world`") + }) +}) diff --git a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/attributes-to-values.ts b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/attributes-to-values.ts new file mode 100644 index 0000000000..39fb6a8626 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/attributes-to-values.ts @@ -0,0 +1,56 @@ +import type { AttributeValue } from "../types.js" +import { escapeForTemplateString } from "./escape.js" + +/** + * Takes in an AST of an AttributeValue and returns JS code that evaluates to the same value. + * @param values - An array of AttributeValues + * @param originalCode - The original code that the AST was parsed from, neede to sample the expression code + * @returns A JS expression that evaluates to the same value as the AttributeValue + */ +export function attrubuteValuesToJSValue( + values: AttributeValue[] | boolean | string, + originalCode: string +): string { + if (typeof values === "boolean") return values.toString() + if (typeof values === "string") return "`" + escapeForTemplateString(values) + "`" + + let templateString = "`" + + if (!(Symbol.iterator in Object(values))) { + console.error(values) + } + + //If all values are AttributeShorthand or MustacheTag we don't need to stringify them + if (noTextNodes(values)) { + let code = "" + for (const value of values) { + code += originalCode.slice(value.expression.start, value.expression.end) + } + return code + } + + for (const value of values) { + switch (value.type) { + case "Text": + templateString += escapeForTemplateString(value.data) + break + case "AttributeShorthand": + case "MustacheTag": { + const expressionCode = originalCode.slice(value.expression.start, value.expression.end) + templateString += "${" + templateString += expressionCode + templateString += "}" + break + } + } + } + + templateString += "`" + return templateString +} + +function noTextNodes( + values: AttributeValue[] +): values is Exclude[] { + return !values.some((value) => value.type === "Text") as any +} diff --git a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/codegen.ts b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/codegen.ts new file mode 100644 index 0000000000..fc4f81f046 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/codegen.ts @@ -0,0 +1,50 @@ +import { escapeForDoubleQuotes } from "./escape.js" + +export function ternary(predicate: string, consequent: string, alternate: string) { + return `${predicate} ? ${consequent} : ${alternate}` +} + +/** + * Returns code for an equality check between two values. + * + * @example + * + * eq("a", "b") + * // -> '(a === b)' + */ +export function eq(first: string, second: string) { + return `(${first} === ${second})` +} + +export function neq(first: string, second: string) { + return `(${first} !== ${second})` +} + +export function and(first: string, second: string) { + return `(${first} && ${second})` +} + +export function or(first: string, second: string) { + return `(${first} || ${second})` +} + +export function str(value: string) { + return `"${escapeForDoubleQuotes(value)}"` +} + +/** + * Returns an attribute declaration for a given name and value. + * + * @example + * + * attribute("val", "a + b") + * // -> 'val={a + b}' + * + */ +export function attribute(name: string, value: string) { + return `${name}={${value}}` +} + +export function spreadAttr(value: string) { + return `{...(${value})}` +} diff --git a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/escape.ts b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/escape.ts new file mode 100644 index 0000000000..0421d5fb36 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/escape.ts @@ -0,0 +1,12 @@ +export const escapeForDoubleQuotes = (str: string) => str.replace(/"/g, '\\"') + +export const escapeForTemplateString = (str: string) => + str.replace(/`/g, "\\`").replace(/\${/g, "\\${") + +export const toJSIdentifier = (str: string) => { + //replace all non-alphanumeric characters with underscores + str = str.replace(/[^a-zA-Z0-9]/g, "_") + //If the first character is a number, prefix it with an underscore + if ((str[0] ?? "").match(/[0-9]/)) str = "_" + str + return str +} diff --git a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/identifier.ts b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/identifier.ts new file mode 100644 index 0000000000..f05a215d83 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/identifier.ts @@ -0,0 +1,11 @@ +import { toJSIdentifier } from "./escape.js" + +/** + * Returns a unique identifier for a given original name. + * Used to avoid name collisions when generating code. + * + * @param original_name The original name to create an identifier for + * @returns A unique identifier for the given original name + */ +export const identifier = (context: string) => (original_name: string) => + toJSIdentifier(`paraglide_sveltekit_${context}_${original_name}`) diff --git a/inlang/packages/paraglide-sveltekit/svelte.config.js b/inlang/packages/paraglide-sveltekit/svelte.config.js new file mode 100644 index 0000000000..e0944ef29d --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/svelte.config.js @@ -0,0 +1,8 @@ +import { vitePreprocess } from "@sveltejs/vite-plugin-svelte" + +/** @type {import('@sveltejs/kit').Config} */ +const config = { + preprocess: [vitePreprocess()], +} + +export default config diff --git a/inlang/packages/paraglide-sveltekit/tsconfig.json b/inlang/packages/paraglide-sveltekit/tsconfig.json new file mode 100644 index 0000000000..27e7dee62e --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "@opral/tsconfig/default", + "include": ["src/**/*.ts"], + "exclude": ["node_modules", "**/*.test.ts", "examples"], + "compilerOptions": { + "target": "ESNext", + "outDir": "./dist", + "rootDir": "./src", + "declaration": true, + "esModuleInterop": true, + "sourceMap": true, + "checkJs": true + } +} diff --git a/inlang/packages/paraglide-sveltekit/vitest.config.js b/inlang/packages/paraglide-sveltekit/vitest.config.js new file mode 100644 index 0000000000..9982e36fe6 --- /dev/null +++ b/inlang/packages/paraglide-sveltekit/vitest.config.js @@ -0,0 +1,76 @@ +import { dirname, resolve } from "node:path" +import { fileURLToPath } from "node:url" +import { defineConfig } from "vitest/config" + +const __filename = resolve(fileURLToPath(import.meta.url)) +const __dirname = dirname(__filename) + +const BASE_PATH = process.env.BASE_PATH ?? "" + +export default defineConfig((env) => { + return { + plugins: [ + virtualModules({ + "$app/paths": getPathsModule({ base: BASE_PATH }), + "$app/environment": getEnvironmentModule({ dev: false, browser: false }), + "$app/stores": getStoresModule({}), + }), + ], + test: { + alias: { + "$paraglide/runtime.js": resolve(__dirname, "./mocks/runtime.js"), + }, + }, + } +}) + +/** + * @param {Record} map + */ +function virtualModules(map) { + return { + name: "virtual-modules", + resolveId(id) { + if (id in map) { + return id + } + }, + + load(id) { + if (id in map) { + return map[id] + } + }, + } +} + +/** + * + * @param {{base: "" | `/${string}`}} options + */ +function getPathsModule(options) { + let code = "" + for (const [key, value] of Object.entries(options)) { + code += `export const ${key} = ${JSON.stringify(value)}\n` + } + return code +} + +/** + * @param {{dev: boolean, browser: boolean}} options + */ +function getEnvironmentModule(options) { + let code = "" + for (const [key, value] of Object.entries(options)) { + code += `export const ${key} = ${JSON.stringify(value)}\n` + } + return code +} + +/** + * @param {{}} options + */ +function getStoresModule(options) { + let code = `` + return code +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ec2d4f5e62..f64c298b35 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -56,7 +56,7 @@ importers: version: 2.4.9 '@vitest/coverage-v8': specifier: 2.1.8 - version: 2.1.8(@vitest/browser@2.1.8)(vitest@2.1.8) + version: 2.1.8(@vitest/browser@2.1.8(@types/node@20.5.9)(playwright@1.48.1)(typescript@5.2.2)(vite@5.4.11(@types/node@20.5.9)(lightningcss@1.27.0)(terser@5.36.0))(vitest@2.1.8)(webdriverio@9.2.1))(vitest@2.1.8(@types/node@20.5.9)(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@20.5.9)(typescript@5.2.2))(terser@5.36.0)) cli-progress: specifier: ^3.12.0 version: 3.12.0 @@ -304,7 +304,7 @@ importers: version: 22.10.6 '@vitest/coverage-v8': specifier: 2.1.8 - version: 2.1.8(@vitest/browser@2.1.8)(vitest@2.1.8) + version: 2.1.8(@vitest/browser@2.1.8(@types/node@22.10.6)(playwright@1.48.1)(typescript@5.7.3)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0))(vitest@2.1.8)(webdriverio@9.2.1))(vitest@2.1.8(@types/node@22.10.6)(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@22.10.6)(typescript@5.7.3))(terser@5.36.0)) eslint: specifier: ^9.18.0 version: 9.18.0(jiti@2.3.3) @@ -394,6 +394,116 @@ importers: specifier: ^6.0.7 version: 6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0) + inlang/packages/paraglide-sveltekit: + dependencies: + '@inlang/paraglide-js': + specifier: 1.11.8 + version: 1.11.8 + '@inlang/paraglide-vite': + specifier: 1.3.5 + version: 1.3.5 + '@lix-js/client': + specifier: 2.2.1 + version: 2.2.1 + '@sveltejs/kit': + specifier: ^2.4.3 + version: 2.16.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.18.0)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0)) + commander: + specifier: ^12.0.0 + version: 12.1.0 + dedent: + specifier: 1.5.1 + version: 1.5.1 + devalue: + specifier: ^4.3.2 + version: 4.3.3 + magic-string: + specifier: ^0.30.5 + version: 0.30.17 + svelte: + specifier: ^5.0.0 || ^5.0.0-next.1 || ^5.0.0-rc.1 + version: 5.18.0 + devDependencies: + '@opral/tsconfig': + specifier: workspace:* + version: link:../../../packages/tsconfig + '@rollup/plugin-alias': + specifier: ^5.0.1 + version: 5.1.1(rollup@3.29.1) + '@rollup/plugin-node-resolve': + specifier: ^15.2.3 + version: 15.3.1(rollup@3.29.1) + '@rollup/plugin-virtual': + specifier: 3.0.1 + version: 3.0.1(rollup@3.29.1) + '@sveltejs/package': + specifier: ^2.2.3 + version: 2.3.7(svelte@5.18.0)(typescript@5.7.3) + '@sveltejs/vite-plugin-svelte': + specifier: ^3.0.2 + version: 3.1.2(svelte@5.18.0)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0)) + '@types/node': + specifier: ^20.12.12 + version: 20.16.13 + prettier-plugin-svelte: + specifier: ^3.1.2 + version: 3.3.3(prettier@3.4.2)(svelte@5.18.0) + rollup: + specifier: 3.29.1 + version: 3.29.1 + rollup-plugin-svelte: + specifier: ^7.1.6 + version: 7.2.2(rollup@3.29.1)(svelte@5.18.0) + typescript: + specifier: ^5.5.2 + version: 5.7.3 + vite: + specifier: ^5.0.4 + version: 5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0) + vite-plugin-svelte: + specifier: ^3.0.1 + version: 3.0.1(rollup@3.29.1)(svelte@5.18.0)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0)) + vitest: + specifier: ^1.0.0 + version: 1.6.0(@types/node@20.16.13)(jsdom@25.0.1)(lightningcss@1.27.0)(terser@5.36.0) + + inlang/packages/paraglide-sveltekit/example: + dependencies: + '@inlang/paraglide-sveltekit': + specifier: workspace:* + version: link:.. + typescript: + specifier: ^4||^5 + version: 5.7.3 + devDependencies: + '@inlang/paraglide-js': + specifier: workspace:* + version: link:../../paraglide-js + '@sveltejs/adapter-node': + specifier: ^5.2.10 + version: 5.2.12(@sveltejs/kit@2.16.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0))) + '@sveltejs/adapter-static': + specifier: ^3.0.0 + version: 3.0.8(@sveltejs/kit@2.16.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0))) + '@sveltejs/kit': + specifier: ^2.12.1 + version: 2.16.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)) + '@sveltejs/vite-plugin-svelte': + specifier: ^4.0.3 + version: 4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)) + rollup-plugin-visualizer: + specifier: ^5.12.0 + version: 5.14.0(rollup@4.24.0) + svelte: + specifier: ^5.14.1 + version: 5.18.0 + svelte-check: + specifier: ^3.6.9 + version: 3.8.6(@babel/core@7.26.0)(postcss-load-config@4.0.2(postcss@8.4.49)(ts-node@10.9.2(@types/node@22.10.6)(typescript@5.7.3)))(postcss@8.4.49)(svelte@5.18.0) + vite: + specifier: ^5.4.11 + version: 5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0) + inlang/packages/plugins/i18next: dependencies: '@inlang/sdk': @@ -636,7 +746,7 @@ importers: version: 1.96.0 '@vitest/coverage-v8': specifier: 2.1.8 - version: 2.1.8(@vitest/browser@2.1.8)(vitest@2.1.8) + version: 2.1.8(@vitest/browser@2.1.8(@types/node@22.10.6)(playwright@1.48.1)(typescript@5.7.2)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0))(vitest@2.1.8)(webdriverio@9.2.1))(vitest@2.1.8(@types/node@22.10.6)(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@22.10.6)(typescript@5.7.2))(terser@5.36.0)) memfs: specifier: 4.6.0 version: 4.6.0(quill-delta@5.1.0)(rxjs@7.8.1)(tslib@2.8.0) @@ -731,7 +841,7 @@ importers: version: 10.0.0 '@vitest/coverage-v8': specifier: ^2.0.5 - version: 2.1.8(@vitest/browser@2.1.8)(vitest@2.1.8) + version: 2.1.8(@vitest/browser@2.1.8(@types/node@22.10.1)(playwright@1.48.1)(typescript@5.7.2)(vite@5.4.11(@types/node@22.10.1)(lightningcss@1.27.0)(terser@5.36.0))(vitest@2.1.8)(webdriverio@9.2.1))(vitest@2.1.8(@types/node@22.10.1)(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@22.10.1)(typescript@5.7.2))(terser@5.36.0)) eslint: specifier: ^9.12.0 version: 9.15.0(jiti@2.3.3) @@ -813,7 +923,7 @@ importers: version: link:../ui-components/settings-component '@vitest/coverage-v8': specifier: 2.1.8 - version: 2.1.8(@vitest/browser@2.1.8)(vitest@2.1.8) + version: 2.1.8(@vitest/browser@2.1.8(@types/node@20.16.13)(playwright@1.48.1)(typescript@5.3.2)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0))(vitest@2.1.8)(webdriverio@8.41.0))(vitest@2.1.8(@types/node@20.16.13)(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@20.16.13)(typescript@5.3.2))(terser@5.36.0)) comlink: specifier: ^4.4.1 version: 4.4.2 @@ -1293,7 +1403,7 @@ importers: version: link:../../../../packages/tsconfig '@vitest/coverage-v8': specifier: 0.34.3 - version: 0.34.3(vitest@0.34.3) + version: 0.34.3(vitest@0.34.3(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(playwright@1.48.1)(safaridriver@0.1.2)(terser@5.36.0)(webdriverio@9.2.1)) tailwindcss: specifier: ^3.3.3 version: 3.4.15(ts-node@10.9.2(@types/node@22.10.6)(typescript@5.2.2)) @@ -1578,7 +1688,7 @@ importers: version: link:../tsconfig '@vitest/coverage-v8': specifier: ^2.0.5 - version: 2.0.5(vitest@2.1.3) + version: 2.0.5(vitest@2.1.3(@types/node@22.10.6)(@vitest/browser@2.1.3)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@22.10.6)(typescript@5.7.2))(terser@5.36.0)) eslint: specifier: ^9.12.0 version: 9.15.0(jiti@2.3.3) @@ -1618,7 +1728,7 @@ importers: version: 5.3.15 '@vitest/coverage-v8': specifier: ^2.0.5 - version: 2.0.5(vitest@2.1.3) + version: 2.0.5(vitest@2.1.3(@types/node@22.10.6)(@vitest/browser@2.1.3)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@22.10.6)(typescript@5.6.3))(terser@5.36.0)) eslint: specifier: ^9.12.0 version: 9.13.0(jiti@2.3.3) @@ -4070,12 +4180,22 @@ packages: resolution: {integrity: sha512-KEZQvED+eLidJ/U7VSE60ux7M+ctfvvxlqQ3pkaSNbRPeEYRSt/9e8aWMv9cHgEtqS62x2s0n7Ej+BF7uNSJyA==} hasBin: true + '@inlang/paraglide-js@1.11.8': + resolution: {integrity: sha512-PxzrmDP63fbMNF4/AtiLFTnUodFxVbOkLpIrOzPZvNuLg0wCWnsaBfNT87/rNjL/A7ZPzEBmuDi0P2pn8iB0Fw==} + hasBin: true + '@inlang/paraglide-unplugin@1.9.4': resolution: {integrity: sha512-8UPXNJSdJx8c5p2R85ITqEv9crPgcIJ3W7CsJRWhLHOU3g6FibXbwz98+25jTJJnadmhiQ+P+nZKNYJOFjcEDw==} + '@inlang/paraglide-unplugin@1.9.5': + resolution: {integrity: sha512-5KklLBvl/y+R4SccWH74USTGQNFW5IwEyMLQ3WIHX9cHX2pnnA5wGqQxYg3EcgCyErHLc3+sm7EMNB5Z0dSeTg==} + '@inlang/paraglide-vite@1.3.4': resolution: {integrity: sha512-6LqDU7ed7QzV5qBGcOfFhuvGZZ3s5RFBSHyItyh9G8+8XrpGGYIQ5LZfvgd2DAFs2Bzjlk5gRGXcfwc5W+wfYQ==} + '@inlang/paraglide-vite@1.3.5': + resolution: {integrity: sha512-yLa+gxA8el6RXXneeiqTnV9Od4Yh389lA+wSfiS+jDXY5vV/2j7Lpk2yuATLmxwI9i2nMP6c6yu8L0X77PA9dg==} + '@inlang/plugin-message-format@2.2.0': resolution: {integrity: sha512-6MJLExr3OLqbR8gCP4UEgNMgdaJFFCug2GLmFwid7Ana4kObnbCA33YN3m3eN8p+lmnv7zpfW7oeyTZXZLoptg==} @@ -4106,6 +4226,10 @@ packages: resolution: {integrity: sha512-fTr0mkDx2ViZt/8lxaF9Mxj3m8LaqIhcjMJy+CdHREMc9UvpUhGLB7elMp061YysxnN1CFccAgLRug5VWK3yWw==} engines: {node: '>=18.0.0'} + '@inlang/sdk@0.37.0': + resolution: {integrity: sha512-/uG/9HrJU+v5jY/nWKZAlI3diD8WdT5bAYuIZ3rVsnphvqV4iWvQwAp3H/K8F5QDJ+GEY79mhKfFhHcKMSiWng==} + engines: {node: '>=18.0.0'} + '@inlang/translatable@1.3.1': resolution: {integrity: sha512-VAtle21vRpIrB+axtHFrFB0d1HtDaaNj+lV77eZQTJyOWbTFYTVIQJ8WAbyw9eu4F6h6QC2FutLyxjMomxfpcQ==} @@ -5624,6 +5748,15 @@ packages: cpu: [x64] os: [win32] + '@rollup/plugin-alias@5.1.1': + resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/plugin-commonjs@25.0.8': resolution: {integrity: sha512-ZEZWTK5n6Qde0to4vS9Mr5x/0UZoqCxPVR9KRUjU4kA2sO7GEUn1fop0DAwpO6z0Nw/kJON9bDmSxdWxO/TT1A==} engines: {node: '>=14.0.0'} @@ -5633,6 +5766,24 @@ packages: rollup: optional: true + '@rollup/plugin-commonjs@28.0.2': + resolution: {integrity: sha512-BEFI2EDqzl+vA1rl97IDRZ61AIwGH093d9nz8+dThxJNH8oSoB7MjWvPCX3dkaK1/RCJ/1v/R1XB15FuSs0fQw==} + engines: {node: '>=16.0.0 || 14 >= 14.17'} + peerDependencies: + rollup: ^2.68.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-json@6.1.0': + resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/plugin-node-resolve@15.3.1': resolution: {integrity: sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==} engines: {node: '>=14.0.0'} @@ -5642,6 +5793,15 @@ packages: rollup: optional: true + '@rollup/plugin-node-resolve@16.0.0': + resolution: {integrity: sha512-0FPvAeVUT/zdWoO0jnb/V5BlBsUSNfkIOtFHzMO4H9MOklrmQFY6FduVHKucNb/aTFxvnGhj4MNj/T1oNdDfNg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/plugin-replace@5.0.7': resolution: {integrity: sha512-PqxSfuorkHz/SPpyngLyg5GCEkOcee9M1bkxiVDr41Pd61mqP1PLOoDPbpl44SB2mQGKwV/In74gqQmGITOhEQ==} engines: {node: '>=14.0.0'} @@ -5651,6 +5811,15 @@ packages: rollup: optional: true + '@rollup/plugin-virtual@3.0.1': + resolution: {integrity: sha512-fK8O0IL5+q+GrsMLuACVNk2x21g3yaw+sG2qn16SnUd3IlBsQyvWxLMGHmCmXRMecPjGRSZ/1LmZB4rjQm68og==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/plugin-virtual@3.0.2': resolution: {integrity: sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A==} engines: {node: '>=14.0.0'} @@ -5660,6 +5829,10 @@ packages: rollup: optional: true + '@rollup/pluginutils@4.2.1': + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} + '@rollup/pluginutils@5.1.4': resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} engines: {node: '>=14.0.0'} @@ -6108,6 +6281,48 @@ packages: peerDependencies: lit: ^2.0.0 || ^3.0.0 + '@sveltejs/adapter-node@5.2.12': + resolution: {integrity: sha512-0bp4Yb3jKIEcZWVcJC/L1xXp9zzJS4hDwfb4VITAkfT4OVdkspSHsx7YhqJDbb2hgLl6R9Vs7VQR+fqIVOxPUQ==} + peerDependencies: + '@sveltejs/kit': ^2.4.0 + + '@sveltejs/adapter-static@3.0.8': + resolution: {integrity: sha512-YaDrquRpZwfcXbnlDsSrBQNCChVOT9MGuSg+dMAyfsAa1SmiAhrA5jUYUiIMC59G92kIbY/AaQOWcBdq+lh+zg==} + peerDependencies: + '@sveltejs/kit': ^2.0.0 + + '@sveltejs/kit@2.16.0': + resolution: {integrity: sha512-S9i1ZWKqluzoaJ6riYnEdbe+xJluMTMkhABouBa66GaWcAyCjW/jAc0NdJQJ/DXyK1CnP5quBW25e99MNyvLxA==} + engines: {node: '>=18.13'} + hasBin: true + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 || ^5.0.0 + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.3 || ^6.0.0 + + '@sveltejs/package@2.3.7': + resolution: {integrity: sha512-LYgUkde5GUYqOpXbcoCGUpEH4Ctl3Wj4u4CVZBl56dEeLW5fGHE037ZL1qlK0Ky+QD5uUfwONSeGwIOIighFMQ==} + engines: {node: ^16.14 || >=18} + hasBin: true + peerDependencies: + svelte: ^3.44.0 || ^4.0.0 || ^5.0.0-next.1 + + '@sveltejs/vite-plugin-svelte-inspector@2.1.0': + resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} + engines: {node: ^18.0.0 || >=20} + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^3.0.0 + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.0 + + '@sveltejs/vite-plugin-svelte-inspector@3.0.1': + resolution: {integrity: sha512-2CKypmj1sM4GE7HjllT7UKmo4Q6L5xFRd7VMGEWhYnZ+wc6AUVU01IBd7yUi6WnFndEwWoMNOd6e8UjoN0nbvQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22} + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^4.0.0-next.0||^4.0.0 + svelte: ^5.0.0-next.96 || ^5.0.0 + vite: ^5.0.0 + '@sveltejs/vite-plugin-svelte-inspector@4.0.1': resolution: {integrity: sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22} @@ -6116,6 +6331,20 @@ packages: svelte: ^5.0.0 vite: ^6.0.0 + '@sveltejs/vite-plugin-svelte@3.1.2': + resolution: {integrity: sha512-Txsm1tJvtiYeLUVRNqxZGKR/mI+CzuIQuc2gn+YCs9rMTowpNZ2Nqt53JdL8KF9bLhAf2ruR/dr9eZCwdTriRA==} + engines: {node: ^18.0.0 || >=20} + peerDependencies: + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.0 + + '@sveltejs/vite-plugin-svelte@4.0.4': + resolution: {integrity: sha512-0ba1RQ/PHen5FGpdSrW7Y3fAMQjrXantECALeOiOdBdzR5+5vPP6HVZRLmZaQL+W8m++o+haIAKq5qT+MiZ7VA==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22} + peerDependencies: + svelte: ^5.0.0-next.96 || ^5.0.0 + vite: ^5.0.0 + '@sveltejs/vite-plugin-svelte@5.0.3': resolution: {integrity: sha512-MCFS6CrQDu1yGwspm4qtli0e63vaPCehf6V7pIMP15AsWgMKrqDGCPFF/0kn4SP0ii4aySu4Pa62+fIRGFMjgw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22} @@ -6578,6 +6807,9 @@ packages: '@types/prop-types@15.7.13': resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} + '@types/pug@2.0.10': + resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} + '@types/qs@6.9.17': resolution: {integrity: sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==} @@ -7025,6 +7257,9 @@ packages: '@vitest/expect@0.34.3': resolution: {integrity: sha512-F8MTXZUYRBVsYL1uoIft1HHWhwDbSzwAU9Zgh8S6WFC3YgVb4AnFV2GXO3P5Em8FjEYaZtTnQYoNwwBrlOMXgg==} + '@vitest/expect@1.6.0': + resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} + '@vitest/expect@2.0.5': resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} @@ -7069,6 +7304,9 @@ packages: '@vitest/runner@0.34.3': resolution: {integrity: sha512-lYNq7N3vR57VMKMPLVvmJoiN4bqwzZ1euTW+XXYH5kzr3W/+xQG3b41xJn9ChJ3AhYOSoweu974S1V3qDcFESA==} + '@vitest/runner@1.6.0': + resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} + '@vitest/runner@2.0.5': resolution: {integrity: sha512-TfRfZa6Bkk9ky4tW0z20WKXFEwwvWhRY+84CnSEtq4+3ZvDlJyY32oNTJtM7AW9ihW90tX/1Q78cb6FjoAs+ig==} @@ -7081,6 +7319,9 @@ packages: '@vitest/snapshot@0.34.3': resolution: {integrity: sha512-QyPaE15DQwbnIBp/yNJ8lbvXTZxS00kRly0kfFgAD5EYmCbYcA+1EEyRalc93M0gosL/xHeg3lKAClIXYpmUiQ==} + '@vitest/snapshot@1.6.0': + resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} + '@vitest/snapshot@2.0.5': resolution: {integrity: sha512-SgCPUeDFLaM0mIUHfaArq8fD2WbaXG/zVXjRupthYfYGzc8ztbFbu6dUNOblBG7XLMR1kEhS/DNnfCZ2IhdDew==} @@ -7093,6 +7334,9 @@ packages: '@vitest/spy@0.34.3': resolution: {integrity: sha512-N1V0RFQ6AI7CPgzBq9kzjRdPIgThC340DGjdKdPSE8r86aUSmeliTUgkTqLSgtEwWWsGfBQ+UetZWhK0BgJmkQ==} + '@vitest/spy@1.6.0': + resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} + '@vitest/spy@2.0.5': resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} @@ -7105,6 +7349,9 @@ packages: '@vitest/utils@0.34.3': resolution: {integrity: sha512-kiSnzLG6m/tiT0XEl4U2H8JDBjFtwVlaE8I3QfGiMFR0QvnRDfYfdP3YvTBWM/6iJDAyaPY6yVQiCTUc7ZzTHA==} + '@vitest/utils@1.6.0': + resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} + '@vitest/utils@2.0.5': resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} @@ -8150,6 +8397,10 @@ packages: resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} engines: {node: '>=16'} + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -8746,6 +8997,9 @@ packages: resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==} engines: {node: '>=18'} + devalue@4.3.3: + resolution: {integrity: sha512-UH8EL6H2ifcY8TbD2QsxwCC/pr5xSwPvv85LrLXVihmHVC3T3YqTCIwnR5ak0yO1KYqlxrPVOA/JVZJYPy2ATg==} + devalue@5.1.1: resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==} @@ -8972,6 +9226,9 @@ packages: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} + es6-promise@3.3.1: + resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} + esbuild-plugin-alias@0.2.1: resolution: {integrity: sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==} @@ -9258,6 +9515,9 @@ packages: estree-util-visit@1.2.1: resolution: {integrity: sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==} + estree-walker@0.6.1: + resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} + estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} @@ -9423,6 +9683,14 @@ packages: fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + fdir@6.4.3: + resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} @@ -10572,6 +10840,9 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true @@ -11947,6 +12218,10 @@ packages: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} + p-limit@6.2.0: resolution: {integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==} engines: {node: '>=18'} @@ -12321,6 +12596,12 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} + prettier-plugin-svelte@3.3.3: + resolution: {integrity: sha512-yViK9zqQ+H2qZD1w/bH7W8i+bVfKrD8GIFjkFe4Thl6kCT9SlAsXVNmt3jCvQOCsnOhcvYgsoVlRV/Eu6x5nNw==} + peerDependencies: + prettier: ^3.0.0 + svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 + prettier@2.8.7: resolution: {integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==} engines: {node: '>=10.13.0'} @@ -12869,6 +13150,9 @@ packages: require-like@0.1.2: resolution: {integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==} + require-relative@0.8.7: + resolution: {integrity: sha512-AKGr4qvHiryxRb19m3PsLRGuKVAbJLUD7E6eOaHkfKhwc+vSgVOCY5xNvm9EkolBKTOf0GrQAZKLimOCz81Khg==} + requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} @@ -12970,6 +13254,35 @@ packages: '@babel/runtime': optional: true + rollup-plugin-svelte@6.1.1: + resolution: {integrity: sha512-ijnm0pH1ScrY4uxwaNXBpNVejVzpL2769hIEbAlnqNUWZrffLspu5/k9/l/Wsj3NrEHLQ6wCKGagVJonyfN7ow==} + peerDependencies: + rollup: '>=1.19.2' + svelte: '*' + + rollup-plugin-svelte@7.2.2: + resolution: {integrity: sha512-hgnIblTRewaBEVQD6N0Q43o+y6q1TmDRhBjaEzQCi50bs8TXqjc+d1zFZyE8tsfgcfNHZQzclh4RxlFUB85H8Q==} + engines: {node: '>=10'} + peerDependencies: + rollup: '>=2.0.0' + svelte: '>=3.5.0' + + rollup-plugin-visualizer@5.14.0: + resolution: {integrity: sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + rolldown: 1.x + rollup: 2.x || 3.x || 4.x + peerDependenciesMeta: + rolldown: + optional: true + rollup: + optional: true + + rollup-pluginutils@2.8.2: + resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} + rollup@3.29.1: resolution: {integrity: sha512-c+ebvQz0VIH4KhhCpDsI+Bik0eT8ZFEVZEYw0cGMVqIP8zc+gnwl7iXCamTw7vzv2MeuZFZfdx5JJIq+ehzDlg==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} @@ -13033,6 +13346,9 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + sander@0.5.1: + resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} + sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} @@ -13218,6 +13534,10 @@ packages: sonic-boom@4.2.0: resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==} + sorcery@0.11.1: + resolution: {integrity: sha512-o7npfeJE6wi6J9l0/5LKshFzZ2rMatRiCDwYeDQaOzqdzRJwALhX7mk/A/ecg6wjMu7wdZbmXfD2S/vpOg0bdQ==} + hasBin: true + sort-keys-length@1.0.1: resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==} engines: {node: '>=0.10.0'} @@ -13244,6 +13564,10 @@ packages: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} + sourcemap-codec@1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead + space-separated-tokens@1.1.5: resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} @@ -13421,6 +13745,9 @@ packages: strip-literal@1.3.0: resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + strip-literal@2.1.1: + resolution: {integrity: sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==} + strnum@1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} @@ -13464,6 +13791,60 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + svelte-check@3.8.6: + resolution: {integrity: sha512-ij0u4Lw/sOTREP13BdWZjiXD/BlHE6/e2e34XzmVmsp5IN4kVa3PWP65NM32JAgwjZlwBg/+JtiNV1MM8khu0Q==} + hasBin: true + peerDependencies: + svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 + + svelte-hmr@0.11.6: + resolution: {integrity: sha512-XUYcp7W26q/fF8tABZfCYGklwL4TDH48gc1KOjuBQNlTiMW63l/+rRqmfVOE/qKG5vns0J2NPo3zFjdahkwoHA==} + peerDependencies: + svelte: '>=3.19.0' + + svelte-hmr@0.16.0: + resolution: {integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==} + engines: {node: ^12.20 || ^14.13.1 || >= 16} + peerDependencies: + svelte: ^3.19.0 || ^4.0.0 + + svelte-preprocess@5.1.4: + resolution: {integrity: sha512-IvnbQ6D6Ao3Gg6ftiM5tdbR6aAETwjhHV+UKGf5bHGYR69RQvF1ho0JKPcbUON4vy4R7zom13jPjgdOWCQ5hDA==} + engines: {node: '>= 16.0.0'} + peerDependencies: + '@babel/core': ^7.10.2 + coffeescript: ^2.5.1 + less: ^3.11.3 || ^4.0.0 + postcss: ^7 || ^8 + postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + pug: ^3.0.0 + sass: ^1.26.8 + stylus: ^0.55.0 + sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 + svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 + typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' + peerDependenciesMeta: + '@babel/core': + optional: true + coffeescript: + optional: true + less: + optional: true + postcss: + optional: true + postcss-load-config: + optional: true + pug: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + typescript: + optional: true + svelte2tsx@0.7.34: resolution: {integrity: sha512-WTMhpNhFf8/h3SMtR5dkdSy2qfveomkhYei/QW9gSPccb0/b82tjHvLop6vT303ZkGswU/da1s6XvrLgthQPCw==} peerDependencies: @@ -13611,6 +13992,10 @@ packages: resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} engines: {node: '>=14.0.0'} + tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + engines: {node: '>=14.0.0'} + tinypool@1.0.1: resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -14382,6 +14767,13 @@ packages: solid-js: ^1.7.2 vite: ^3.0.0 || ^4.0.0 + vite-plugin-svelte@3.0.1: + resolution: {integrity: sha512-R4XFM4pmeJ9GwKs5mcDDDQs1e6xvCrBumGLnApPdYarS6+kfDqeC0U1WOLp6LLUx1sUdv7poywnr9eNKenQfkg==} + deprecated: use @sveltejs/vite-plugin-svelte for vite2.0+ support + peerDependencies: + svelte: ^3.0.0 + vite: '>=0.20.8 <2.0.0' + vite-tsconfig-paths@4.3.2: resolution: {integrity: sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==} peerDependencies: @@ -14575,6 +14967,31 @@ packages: webdriverio: optional: true + vitest@1.6.0: + resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.6.0 + '@vitest/ui': 1.6.0 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + vitest@2.0.5: resolution: {integrity: sha512-8GUxONfauuIdeSl5f9GTgVEpg5BTOlplET4WEDaeY2QBiN8wSm68vxN/tb5z405OwppfoCavnwXafiaYBC/xOA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -17304,6 +17721,26 @@ snapshots: - debug - supports-color + '@inlang/paraglide-js@1.11.8': + dependencies: + '@inlang/detect-json-formatting': 1.0.0 + '@inlang/language-tag': 1.5.1 + '@inlang/plugin-message-format': 2.2.0 + '@inlang/recommend-ninja': 0.1.1 + '@inlang/recommend-sherlock': 0.1.1 + '@inlang/sdk': 0.37.0 + '@lix-js/client': 2.2.1 + '@lix-js/fs': 2.2.0 + commander: 11.1.0 + consola: 3.2.3 + dedent: 1.5.1 + json5: 2.2.3 + posthog-node: 4.3.2 + transitivePeerDependencies: + - babel-plugin-macros + - debug + - supports-color + '@inlang/paraglide-unplugin@1.9.4': dependencies: '@inlang/paraglide-js': 1.11.7 @@ -17316,6 +17753,18 @@ snapshots: - debug - supports-color + '@inlang/paraglide-unplugin@1.9.5': + dependencies: + '@inlang/paraglide-js': 1.11.8 + '@inlang/sdk': 0.37.0 + '@lix-js/client': 2.2.1 + typescript: 5.7.3 + unplugin: 1.16.0 + transitivePeerDependencies: + - babel-plugin-macros + - debug + - supports-color + '@inlang/paraglide-vite@1.3.4': dependencies: '@inlang/paraglide-unplugin': 1.9.4 @@ -17324,6 +17773,14 @@ snapshots: - debug - supports-color + '@inlang/paraglide-vite@1.3.5': + dependencies: + '@inlang/paraglide-unplugin': 1.9.5 + transitivePeerDependencies: + - babel-plugin-macros + - debug + - supports-color + '@inlang/plugin-message-format@2.2.0': {} '@inlang/plugin@2.4.14(@sinclair/typebox@0.31.28)': @@ -17413,23 +17870,47 @@ snapshots: - babel-plugin-macros - supports-color - '@inlang/translatable@1.3.1': + '@inlang/sdk@0.37.0': dependencies: + '@inlang/json-types': 1.1.0(@sinclair/typebox@0.31.28) '@inlang/language-tag': 1.5.1 - - '@inquirer/confirm@5.1.1(@types/node@20.16.13)': - dependencies: - '@inquirer/core': 10.1.2(@types/node@20.16.13) - '@inquirer/type': 3.0.2(@types/node@20.16.13) - '@types/node': 20.16.13 - optional: true - - '@inquirer/confirm@5.1.1(@types/node@20.5.9)': - dependencies: - '@inquirer/core': 10.1.2(@types/node@20.5.9) - '@inquirer/type': 3.0.2(@types/node@20.5.9) - '@types/node': 20.5.9 - optional: true + '@inlang/message': 2.1.0(@sinclair/typebox@0.31.28) + '@inlang/message-lint-rule': 1.4.7(@sinclair/typebox@0.31.28) + '@inlang/module': 1.2.14(@sinclair/typebox@0.31.28) + '@inlang/plugin': 2.4.14(@sinclair/typebox@0.31.28) + '@inlang/project-settings': 2.4.2(@sinclair/typebox@0.31.28) + '@inlang/result': 1.1.0 + '@inlang/translatable': 1.3.1 + '@lix-js/client': 2.2.1 + '@lix-js/fs': 2.2.0 + '@sinclair/typebox': 0.31.28 + debug: 4.4.0(supports-color@9.4.0) + dedent: 1.5.1 + deepmerge-ts: 5.1.0 + murmurhash3js: 3.0.1 + solid-js: 1.6.12 + throttle-debounce: 5.0.2 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + '@inlang/translatable@1.3.1': + dependencies: + '@inlang/language-tag': 1.5.1 + + '@inquirer/confirm@5.1.1(@types/node@20.16.13)': + dependencies: + '@inquirer/core': 10.1.2(@types/node@20.16.13) + '@inquirer/type': 3.0.2(@types/node@20.16.13) + '@types/node': 20.16.13 + optional: true + + '@inquirer/confirm@5.1.1(@types/node@20.5.9)': + dependencies: + '@inquirer/core': 10.1.2(@types/node@20.5.9) + '@inquirer/type': 3.0.2(@types/node@20.5.9) + '@types/node': 20.5.9 + optional: true '@inquirer/confirm@5.1.1(@types/node@22.10.1)': dependencies: @@ -19570,6 +20051,10 @@ snapshots: '@rolldown/binding-win32-x64-msvc@1.0.0-beta.1': optional: true + '@rollup/plugin-alias@5.1.1(rollup@3.29.1)': + optionalDependencies: + rollup: 3.29.1 + '@rollup/plugin-commonjs@25.0.8(rollup@3.29.1)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@3.29.1) @@ -19581,6 +20066,24 @@ snapshots: optionalDependencies: rollup: 3.29.1 + '@rollup/plugin-commonjs@28.0.2(rollup@4.24.0)': + dependencies: + '@rollup/pluginutils': 5.1.4(rollup@4.24.0) + commondir: 1.0.1 + estree-walker: 2.0.2 + fdir: 6.4.3(picomatch@4.0.2) + is-reference: 1.2.1 + magic-string: 0.30.17 + picomatch: 4.0.2 + optionalDependencies: + rollup: 4.24.0 + + '@rollup/plugin-json@6.1.0(rollup@4.24.0)': + dependencies: + '@rollup/pluginutils': 5.1.4(rollup@4.24.0) + optionalDependencies: + rollup: 4.24.0 + '@rollup/plugin-node-resolve@15.3.1(rollup@3.29.1)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@3.29.1) @@ -19591,6 +20094,16 @@ snapshots: optionalDependencies: rollup: 3.29.1 + '@rollup/plugin-node-resolve@16.0.0(rollup@4.24.0)': + dependencies: + '@rollup/pluginutils': 5.1.4(rollup@4.24.0) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-module: 1.0.0 + resolve: 1.22.8 + optionalDependencies: + rollup: 4.24.0 + '@rollup/plugin-replace@5.0.7(rollup@3.29.1)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@3.29.1) @@ -19598,10 +20111,19 @@ snapshots: optionalDependencies: rollup: 3.29.1 + '@rollup/plugin-virtual@3.0.1(rollup@3.29.1)': + optionalDependencies: + rollup: 3.29.1 + '@rollup/plugin-virtual@3.0.2(rollup@4.24.0)': optionalDependencies: rollup: 4.24.0 + '@rollup/pluginutils@4.2.1': + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + '@rollup/pluginutils@5.1.4(rollup@3.29.1)': dependencies: '@types/estree': 1.0.6 @@ -20484,6 +21006,81 @@ snapshots: - react-dom - supports-color + '@sveltejs/adapter-node@5.2.12(@sveltejs/kit@2.16.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)))': + dependencies: + '@rollup/plugin-commonjs': 28.0.2(rollup@4.24.0) + '@rollup/plugin-json': 6.1.0(rollup@4.24.0) + '@rollup/plugin-node-resolve': 16.0.0(rollup@4.24.0) + '@sveltejs/kit': 2.16.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)) + rollup: 4.24.0 + + '@sveltejs/adapter-static@3.0.8(@sveltejs/kit@2.16.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)))': + dependencies: + '@sveltejs/kit': 2.16.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)) + + '@sveltejs/kit@2.16.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.18.0)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0))': + dependencies: + '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@5.18.0)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0)) + '@types/cookie': 0.6.0 + cookie: 0.6.0 + devalue: 5.1.1 + esm-env: 1.2.2 + import-meta-resolve: 4.1.0 + kleur: 4.1.5 + magic-string: 0.30.17 + mrmime: 2.0.0 + sade: 1.8.1 + set-cookie-parser: 2.7.1 + sirv: 3.0.0 + svelte: 5.18.0 + vite: 5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0) + + '@sveltejs/kit@2.16.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0))': + dependencies: + '@sveltejs/vite-plugin-svelte': 4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)) + '@types/cookie': 0.6.0 + cookie: 0.6.0 + devalue: 5.1.1 + esm-env: 1.2.2 + import-meta-resolve: 4.1.0 + kleur: 4.1.5 + magic-string: 0.30.17 + mrmime: 2.0.0 + sade: 1.8.1 + set-cookie-parser: 2.7.1 + sirv: 3.0.0 + svelte: 5.18.0 + vite: 5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0) + + '@sveltejs/package@2.3.7(svelte@5.18.0)(typescript@5.7.3)': + dependencies: + chokidar: 4.0.3 + kleur: 4.1.5 + sade: 1.8.1 + semver: 7.6.3 + svelte: 5.18.0 + svelte2tsx: 0.7.34(svelte@5.18.0)(typescript@5.7.3) + transitivePeerDependencies: + - typescript + + '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.18.0)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0))': + dependencies: + '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@5.18.0)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0)) + debug: 4.4.0(supports-color@9.4.0) + svelte: 5.18.0 + vite: 5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0) + transitivePeerDependencies: + - supports-color + + '@sveltejs/vite-plugin-svelte-inspector@3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0))': + dependencies: + '@sveltejs/vite-plugin-svelte': 4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)) + debug: 4.4.0(supports-color@9.4.0) + svelte: 5.18.0 + vite: 5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0) + transitivePeerDependencies: + - supports-color + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.18.0)(vite@6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0)))(svelte@5.18.0)(vite@6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0))': dependencies: '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.18.0)(vite@6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0)) @@ -20493,6 +21090,33 @@ snapshots: transitivePeerDependencies: - supports-color + '@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.18.0)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0))': + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.18.0)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0)) + debug: 4.4.0(supports-color@9.4.0) + deepmerge: 4.3.1 + kleur: 4.1.5 + magic-string: 0.30.17 + svelte: 5.18.0 + svelte-hmr: 0.16.0(svelte@5.18.0) + vite: 5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0) + vitefu: 0.2.5(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0)) + transitivePeerDependencies: + - supports-color + + '@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0))': + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': 3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)) + debug: 4.4.0(supports-color@9.4.0) + deepmerge: 4.3.1 + kleur: 4.1.5 + magic-string: 0.30.17 + svelte: 5.18.0 + vite: 5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0) + vitefu: 1.0.5(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)) + transitivePeerDependencies: + - supports-color + '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.18.0)(vite@6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0))': dependencies: '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.18.0)(vite@6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0)))(svelte@5.18.0)(vite@6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0)) @@ -21010,6 +21634,8 @@ snapshots: '@types/prop-types@15.7.13': {} + '@types/pug@2.0.10': {} + '@types/qs@6.9.17': {} '@types/range-parser@1.2.7': {} @@ -21936,7 +22562,7 @@ snapshots: - vite optional: true - '@vitest/coverage-v8@0.34.3(vitest@0.34.3)': + '@vitest/coverage-v8@0.34.3(vitest@0.34.3(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(playwright@1.48.1)(safaridriver@0.1.2)(terser@5.36.0)(webdriverio@9.2.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -21971,7 +22597,25 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@2.0.5(vitest@2.1.3)': + '@vitest/coverage-v8@2.0.5(vitest@2.1.3(@types/node@22.10.6)(@vitest/browser@2.1.3)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@22.10.6)(typescript@5.6.3))(terser@5.36.0))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@bcoe/v8-coverage': 0.2.3 + debug: 4.4.0(supports-color@9.4.0) + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.1.7 + magic-string: 0.30.17 + magicast: 0.3.5 + std-env: 3.8.0 + test-exclude: 7.0.1 + tinyrainbow: 1.2.0 + vitest: 2.1.3(@types/node@22.10.6)(@vitest/browser@2.1.3)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@22.10.6)(typescript@5.6.3))(terser@5.36.0) + transitivePeerDependencies: + - supports-color + + '@vitest/coverage-v8@2.0.5(vitest@2.1.3(@types/node@22.10.6)(@vitest/browser@2.1.3)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@22.10.6)(typescript@5.7.2))(terser@5.36.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -22007,7 +22651,87 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@2.1.8(@vitest/browser@2.1.8)(vitest@2.1.8)': + '@vitest/coverage-v8@2.1.8(@vitest/browser@2.1.8(@types/node@20.16.13)(playwright@1.48.1)(typescript@5.3.2)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0))(vitest@2.1.8)(webdriverio@8.41.0))(vitest@2.1.8(@types/node@20.16.13)(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@20.16.13)(typescript@5.3.2))(terser@5.36.0))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@bcoe/v8-coverage': 0.2.3 + debug: 4.4.0(supports-color@9.4.0) + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.1.7 + magic-string: 0.30.17 + magicast: 0.3.5 + std-env: 3.8.0 + test-exclude: 7.0.1 + tinyrainbow: 1.2.0 + vitest: 2.1.8(@types/node@20.16.13)(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@20.16.13)(typescript@5.3.2))(terser@5.36.0) + optionalDependencies: + '@vitest/browser': 2.1.8(@types/node@20.16.13)(playwright@1.48.1)(typescript@5.3.2)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0))(vitest@2.1.8)(webdriverio@8.41.0) + transitivePeerDependencies: + - supports-color + + '@vitest/coverage-v8@2.1.8(@vitest/browser@2.1.8(@types/node@20.5.9)(playwright@1.48.1)(typescript@5.2.2)(vite@5.4.11(@types/node@20.5.9)(lightningcss@1.27.0)(terser@5.36.0))(vitest@2.1.8)(webdriverio@9.2.1))(vitest@2.1.8(@types/node@20.5.9)(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@20.5.9)(typescript@5.2.2))(terser@5.36.0))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@bcoe/v8-coverage': 0.2.3 + debug: 4.4.0(supports-color@9.4.0) + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.1.7 + magic-string: 0.30.17 + magicast: 0.3.5 + std-env: 3.8.0 + test-exclude: 7.0.1 + tinyrainbow: 1.2.0 + vitest: 2.1.8(@types/node@20.5.9)(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@20.5.9)(typescript@5.2.2))(terser@5.36.0) + optionalDependencies: + '@vitest/browser': 2.1.8(@types/node@20.5.9)(playwright@1.48.1)(typescript@5.2.2)(vite@5.4.11(@types/node@20.5.9)(lightningcss@1.27.0)(terser@5.36.0))(vitest@2.1.8)(webdriverio@9.2.1) + transitivePeerDependencies: + - supports-color + + '@vitest/coverage-v8@2.1.8(@vitest/browser@2.1.8(@types/node@22.10.1)(playwright@1.48.1)(typescript@5.7.2)(vite@5.4.11(@types/node@22.10.1)(lightningcss@1.27.0)(terser@5.36.0))(vitest@2.1.8)(webdriverio@9.2.1))(vitest@2.1.8(@types/node@22.10.1)(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@22.10.1)(typescript@5.7.2))(terser@5.36.0))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@bcoe/v8-coverage': 0.2.3 + debug: 4.4.0(supports-color@9.4.0) + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.1.7 + magic-string: 0.30.17 + magicast: 0.3.5 + std-env: 3.8.0 + test-exclude: 7.0.1 + tinyrainbow: 1.2.0 + vitest: 2.1.8(@types/node@22.10.1)(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@22.10.1)(typescript@5.7.2))(terser@5.36.0) + optionalDependencies: + '@vitest/browser': 2.1.8(@types/node@22.10.1)(playwright@1.48.1)(typescript@5.7.2)(vite@5.4.11(@types/node@22.10.1)(lightningcss@1.27.0)(terser@5.36.0))(vitest@2.1.8)(webdriverio@9.2.1) + transitivePeerDependencies: + - supports-color + + '@vitest/coverage-v8@2.1.8(@vitest/browser@2.1.8(@types/node@22.10.6)(playwright@1.48.1)(typescript@5.7.2)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0))(vitest@2.1.8)(webdriverio@9.2.1))(vitest@2.1.8(@types/node@22.10.6)(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@22.10.6)(typescript@5.7.2))(terser@5.36.0))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@bcoe/v8-coverage': 0.2.3 + debug: 4.4.0(supports-color@9.4.0) + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.1.7 + magic-string: 0.30.17 + magicast: 0.3.5 + std-env: 3.8.0 + test-exclude: 7.0.1 + tinyrainbow: 1.2.0 + vitest: 2.1.8(@types/node@22.10.6)(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@22.10.6)(typescript@5.7.2))(terser@5.36.0) + optionalDependencies: + '@vitest/browser': 2.1.8(@types/node@22.10.6)(playwright@1.48.1)(typescript@5.7.2)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0))(vitest@2.1.8)(webdriverio@9.2.1) + transitivePeerDependencies: + - supports-color + + '@vitest/coverage-v8@2.1.8(@vitest/browser@2.1.8(@types/node@22.10.6)(playwright@1.48.1)(typescript@5.7.3)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0))(vitest@2.1.8)(webdriverio@9.2.1))(vitest@2.1.8(@types/node@22.10.6)(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@22.10.6)(typescript@5.7.3))(terser@5.36.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -22033,6 +22757,12 @@ snapshots: '@vitest/utils': 0.34.3 chai: 4.5.0 + '@vitest/expect@1.6.0': + dependencies: + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 + chai: 4.5.0 + '@vitest/expect@2.0.5': dependencies: '@vitest/spy': 2.0.5 @@ -22221,6 +22951,12 @@ snapshots: p-limit: 4.0.0 pathe: 1.1.2 + '@vitest/runner@1.6.0': + dependencies: + '@vitest/utils': 1.6.0 + p-limit: 5.0.0 + pathe: 1.1.2 + '@vitest/runner@2.0.5': dependencies: '@vitest/utils': 2.0.5 @@ -22242,6 +22978,12 @@ snapshots: pathe: 1.1.2 pretty-format: 29.7.0 + '@vitest/snapshot@1.6.0': + dependencies: + magic-string: 0.30.17 + pathe: 1.1.2 + pretty-format: 29.7.0 + '@vitest/snapshot@2.0.5': dependencies: '@vitest/pretty-format': 2.0.5 @@ -22264,6 +23006,10 @@ snapshots: dependencies: tinyspy: 2.2.1 + '@vitest/spy@1.6.0': + dependencies: + tinyspy: 2.2.1 + '@vitest/spy@2.0.5': dependencies: tinyspy: 3.0.2 @@ -22282,6 +23028,13 @@ snapshots: loupe: 2.3.7 pretty-format: 29.7.0 + '@vitest/utils@1.6.0': + dependencies: + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + '@vitest/utils@2.0.5': dependencies: '@vitest/pretty-format': 2.0.5 @@ -23782,6 +24535,8 @@ snapshots: commander@11.1.0: {} + commander@12.1.0: {} + commander@2.20.3: optional: true @@ -24343,6 +25098,8 @@ snapshots: dependencies: base-64: 1.0.0 + devalue@4.3.3: {} + devalue@5.1.1: {} devlop@1.1.0: @@ -24614,6 +25371,8 @@ snapshots: is-date-object: 1.0.5 is-symbol: 1.1.0 + es6-promise@3.3.1: {} + esbuild-plugin-alias@0.2.1: {} esbuild-plugins-node-modules-polyfill@1.6.8(esbuild@0.17.6): @@ -24833,7 +25592,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1): + eslint-module-utils@2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: @@ -24855,7 +25614,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -25248,6 +26007,8 @@ snapshots: '@types/estree-jsx': 1.0.5 '@types/unist': 2.0.11 + estree-walker@0.6.1: {} + estree-walker@2.0.2: {} estree-walker@3.0.3: @@ -25502,6 +26263,10 @@ snapshots: dependencies: pend: 1.2.0 + fdir@6.4.3(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + fetch-blob@3.2.0: dependencies: node-domexception: 1.0.0 @@ -26824,6 +27589,8 @@ snapshots: js-tokens@4.0.0: {} + js-tokens@9.0.1: {} + js-yaml@3.14.1: dependencies: argparse: 1.0.10 @@ -27070,7 +27837,7 @@ snapshots: light-my-request@5.14.0: dependencies: - cookie: 0.7.1 + cookie: 0.7.2 process-warning: 3.0.0 set-cookie-parser: 2.7.1 @@ -29051,6 +29818,10 @@ snapshots: dependencies: yocto-queue: 1.1.1 + p-limit@5.0.0: + dependencies: + yocto-queue: 1.1.1 + p-limit@6.2.0: dependencies: yocto-queue: 1.1.1 @@ -29364,6 +30135,15 @@ snapshots: postcss: 8.4.49 ts-node: 10.9.2(@types/node@22.10.6)(typescript@5.7.2) + postcss-load-config@4.0.2(postcss@8.4.49)(ts-node@10.9.2(@types/node@22.10.6)(typescript@5.7.3)): + dependencies: + lilconfig: 3.1.2 + yaml: 2.6.0 + optionalDependencies: + postcss: 8.4.49 + ts-node: 10.9.2(@types/node@22.10.6)(typescript@5.7.3) + optional: true + postcss-modules-extract-imports@3.1.0(postcss@8.4.49): dependencies: postcss: 8.4.49 @@ -29465,6 +30245,11 @@ snapshots: prelude-ls@1.2.1: {} + prettier-plugin-svelte@3.3.3(prettier@3.4.2)(svelte@5.18.0): + dependencies: + prettier: 3.4.2 + svelte: 5.18.0 + prettier@2.8.7: {} prettier@3.3.3: {} @@ -30192,6 +30977,8 @@ snapshots: require-like@0.1.2: {} + require-relative@0.8.7: {} + requires-port@1.0.0: {} resolve-alpn@1.2.1: {} @@ -30301,6 +31088,34 @@ snapshots: '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.1 '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.1 + rollup-plugin-svelte@6.1.1(rollup@3.29.1)(svelte@5.18.0): + dependencies: + require-relative: 0.8.7 + rollup: 3.29.1 + rollup-pluginutils: 2.8.2 + sourcemap-codec: 1.4.8 + svelte: 5.18.0 + + rollup-plugin-svelte@7.2.2(rollup@3.29.1)(svelte@5.18.0): + dependencies: + '@rollup/pluginutils': 4.2.1 + resolve.exports: 2.0.3 + rollup: 3.29.1 + svelte: 5.18.0 + + rollup-plugin-visualizer@5.14.0(rollup@4.24.0): + dependencies: + open: 8.4.2 + picomatch: 4.0.2 + source-map: 0.7.4 + yargs: 17.7.2 + optionalDependencies: + rollup: 4.24.0 + + rollup-pluginutils@2.8.2: + dependencies: + estree-walker: 0.6.1 + rollup@3.29.1: optionalDependencies: fsevents: 2.3.3 @@ -30382,6 +31197,13 @@ snapshots: safer-buffer@2.1.2: {} + sander@0.5.1: + dependencies: + es6-promise: 3.3.1 + graceful-fs: 4.2.11 + mkdirp: 0.5.6 + rimraf: 2.7.1 + sax@1.4.1: {} saxes@6.0.0: @@ -30577,7 +31399,6 @@ snapshots: '@polka/url': 1.0.0-next.28 mrmime: 2.0.0 totalist: 3.0.1 - optional: true sisteransi@1.0.5: {} @@ -30651,6 +31472,13 @@ snapshots: dependencies: atomic-sleep: 1.0.0 + sorcery@0.11.1: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + buffer-crc32: 1.0.0 + minimist: 1.2.8 + sander: 0.5.1 + sort-keys-length@1.0.1: dependencies: sort-keys: 1.1.2 @@ -30675,6 +31503,8 @@ snapshots: source-map@0.7.4: {} + sourcemap-codec@1.4.8: {} + space-separated-tokens@1.1.5: {} space-separated-tokens@2.0.2: {} @@ -30874,6 +31704,10 @@ snapshots: dependencies: acorn: 8.14.0 + strip-literal@2.1.1: + dependencies: + js-tokens: 9.0.1 + strnum@1.0.5: {} strong-log-transformer@2.1.0: @@ -30919,6 +31753,48 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + svelte-check@3.8.6(@babel/core@7.26.0)(postcss-load-config@4.0.2(postcss@8.4.49)(ts-node@10.9.2(@types/node@22.10.6)(typescript@5.7.3)))(postcss@8.4.49)(svelte@5.18.0): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + chokidar: 3.6.0 + picocolors: 1.1.1 + sade: 1.8.1 + svelte: 5.18.0 + svelte-preprocess: 5.1.4(@babel/core@7.26.0)(postcss-load-config@4.0.2(postcss@8.4.49)(ts-node@10.9.2(@types/node@22.10.6)(typescript@5.7.3)))(postcss@8.4.49)(svelte@5.18.0)(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - '@babel/core' + - coffeescript + - less + - postcss + - postcss-load-config + - pug + - sass + - stylus + - sugarss + + svelte-hmr@0.11.6(svelte@5.18.0): + dependencies: + svelte: 5.18.0 + + svelte-hmr@0.16.0(svelte@5.18.0): + dependencies: + svelte: 5.18.0 + + svelte-preprocess@5.1.4(@babel/core@7.26.0)(postcss-load-config@4.0.2(postcss@8.4.49)(ts-node@10.9.2(@types/node@22.10.6)(typescript@5.7.3)))(postcss@8.4.49)(svelte@5.18.0)(typescript@5.7.3): + dependencies: + '@types/pug': 2.0.10 + detect-indent: 6.1.0 + magic-string: 0.30.17 + sorcery: 0.11.1 + strip-indent: 3.0.0 + svelte: 5.18.0 + optionalDependencies: + '@babel/core': 7.26.0 + postcss: 8.4.49 + postcss-load-config: 4.0.2(postcss@8.4.49)(ts-node@10.9.2(@types/node@22.10.6)(typescript@5.7.3)) + typescript: 5.7.3 + svelte2tsx@0.7.34(svelte@5.18.0)(typescript@5.7.3): dependencies: dedent-js: 1.0.1 @@ -31207,6 +32083,8 @@ snapshots: tinypool@0.7.0: {} + tinypool@0.8.4: {} + tinypool@1.0.1: {} tinyrainbow@1.2.0: {} @@ -31432,6 +32310,25 @@ snapshots: yn: 3.1.1 optional: true + ts-node@10.9.2(@types/node@22.10.6)(typescript@5.7.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.10.6 + acorn: 8.14.0 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.7.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optional: true + tsconfck@3.1.4(typescript@5.7.2): optionalDependencies: typescript: 5.7.2 @@ -32055,6 +32952,24 @@ snapshots: - supports-color - terser + vite-node@1.6.0(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0): + dependencies: + cac: 6.7.14 + debug: 4.4.0(supports-color@9.4.0) + pathe: 1.1.2 + picocolors: 1.1.1 + vite: 5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + vite-node@1.6.0(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0): dependencies: cac: 6.7.14 @@ -32189,7 +33104,7 @@ snapshots: solid-js: 1.7.11 solid-refresh: 0.6.3(solid-js@1.7.11) vite: 4.5.5(@types/node@20.5.9)(lightningcss@1.27.0)(terser@5.36.0) - vitefu: 1.0.4(vite@4.5.5(@types/node@20.5.9)(lightningcss@1.27.0)(terser@5.36.0)) + vitefu: 1.0.5(vite@4.5.5(@types/node@20.5.9)(lightningcss@1.27.0)(terser@5.36.0)) transitivePeerDependencies: - supports-color @@ -32207,6 +33122,15 @@ snapshots: transitivePeerDependencies: - supports-color + vite-plugin-svelte@3.0.1(rollup@3.29.1)(svelte@5.18.0)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0)): + dependencies: + rollup-plugin-svelte: 6.1.1(rollup@3.29.1)(svelte@5.18.0) + svelte: 5.18.0 + svelte-hmr: 0.11.6(svelte@5.18.0) + vite: 5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0) + transitivePeerDependencies: + - rollup + vite-tsconfig-paths@4.3.2(typescript@5.7.2)(vite@5.4.9(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)): dependencies: debug: 4.3.7 @@ -32313,14 +33237,22 @@ snapshots: optionalDependencies: vite: 4.5.5(@types/node@20.5.9)(lightningcss@1.27.0)(terser@5.36.0) - vitefu@1.0.4(vite@4.5.5(@types/node@20.5.9)(lightningcss@1.27.0)(terser@5.36.0)): + vitefu@0.2.5(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0)): optionalDependencies: - vite: 4.5.5(@types/node@20.5.9)(lightningcss@1.27.0)(terser@5.36.0) + vite: 5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0) vitefu@1.0.4(vite@6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0)): optionalDependencies: vite: 6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0) + vitefu@1.0.5(vite@4.5.5(@types/node@20.5.9)(lightningcss@1.27.0)(terser@5.36.0)): + optionalDependencies: + vite: 4.5.5(@types/node@20.5.9)(lightningcss@1.27.0)(terser@5.36.0) + + vitefu@1.0.5(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)): + optionalDependencies: + vite: 5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0) + vitefu@1.0.5(vite@6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0)): optionalDependencies: vite: 6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0) @@ -32366,6 +33298,41 @@ snapshots: - supports-color - terser + vitest@1.6.0(@types/node@20.16.13)(jsdom@25.0.1)(lightningcss@1.27.0)(terser@5.36.0): + dependencies: + '@vitest/expect': 1.6.0 + '@vitest/runner': 1.6.0 + '@vitest/snapshot': 1.6.0 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 + acorn-walk: 8.3.4 + chai: 4.5.0 + debug: 4.4.0(supports-color@9.4.0) + execa: 8.0.1 + local-pkg: 0.5.1 + magic-string: 0.30.17 + pathe: 1.1.2 + picocolors: 1.1.1 + std-env: 3.8.0 + strip-literal: 2.1.1 + tinybench: 2.9.0 + tinypool: 0.8.4 + vite: 5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0) + vite-node: 1.6.0(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 20.16.13 + jsdom: 25.0.1 + transitivePeerDependencies: + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + vitest@2.0.5(@types/node@22.10.6)(jsdom@25.0.1)(lightningcss@1.27.0)(terser@5.36.0): dependencies: '@ampproject/remapping': 2.3.0 @@ -32411,7 +33378,7 @@ snapshots: '@vitest/utils': 2.1.3 chai: 5.1.1 debug: 4.3.7 - magic-string: 0.30.12 + magic-string: 0.30.17 pathe: 1.1.2 std-env: 3.8.0 tinybench: 2.9.0 @@ -32447,7 +33414,7 @@ snapshots: '@vitest/utils': 2.1.3 chai: 5.1.1 debug: 4.3.7 - magic-string: 0.30.12 + magic-string: 0.30.17 pathe: 1.1.2 std-env: 3.8.0 tinybench: 2.9.0 From 3e68fc557880aa52dea5010231fc28ec50fc1420 Mon Sep 17 00:00:00 2001 From: Samuel Stroschein <35429197+samuelstroschein@users.noreply.github.com> Date: Sat, 18 Jan 2025 17:04:43 -0500 Subject: [PATCH 02/12] fix types --- inlang/packages/paraglide-sveltekit/package.json | 4 ++-- .../paraglide-sveltekit/src/vite/preprocessor/index.ts | 6 +++--- .../paraglide-sveltekit/src/vite/preprocessor/rewrite.ts | 3 +-- .../paraglide-sveltekit/src/vite/preprocessor/utils/ast.ts | 6 +----- 4 files changed, 7 insertions(+), 12 deletions(-) diff --git a/inlang/packages/paraglide-sveltekit/package.json b/inlang/packages/paraglide-sveltekit/package.json index 9b3aeafc67..0e30e9f7b3 100644 --- a/inlang/packages/paraglide-sveltekit/package.json +++ b/inlang/packages/paraglide-sveltekit/package.json @@ -14,8 +14,8 @@ "scripts": { "test:with-base": "BASE_PATH=/base vitest run --test-timeout 90000 --dir src", "test:without-base": "BASE_PATH=\"\" vitest run --test-timeout 90000 --dir src", - "test": "npm run generate-meta && npm run test:with-base && npm run test:without-base", - "build": "tsc --noEmit && npm run generate-meta && svelte-package -i src -o dist", + "test": "npm run generate-meta && npm run test:with-base && npm run test:without-base && tsc --noEmit", + "build": "npm run generate-meta && svelte-package -i src -o dist", "dev": "npm run generate-meta && svelte-package -w -i src -o dist", "lint": "eslint ./src --fix", "format": "prettier ./src --write", diff --git a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/index.ts b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/index.ts index 8fef8bdea6..c4ae12347a 100644 --- a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/index.ts +++ b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/index.ts @@ -1,4 +1,4 @@ -import { parse, type PreprocessorGroup, type LegacyRoot } from "svelte/compiler" +import { parse, type PreprocessorGroup } from "svelte/compiler" import MagicString from "magic-string" import { shouldApply } from "./precheck.js" import { rewrite } from "./rewrite.js" @@ -58,7 +58,7 @@ export function preprocessor(_config: PreprocessorConfig): PreprocessorGroup { if (!shouldApply(content, TRANSLATIONS)) return NOOP //Parse the file - let root: LegacyRoot + let root: any try { root = parse(content) } catch (error) { @@ -93,7 +93,7 @@ export function preprocessor(_config: PreprocessorConfig): PreprocessorGroup { } function modifyScriptTag( - root: LegacyRoot, + root: any, code: MagicString, additions: { before?: Iterable; after?: Iterable } ) { diff --git a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/rewrite.ts b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/rewrite.ts index 2e0554b553..1d5a851afa 100644 --- a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/rewrite.ts +++ b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/rewrite.ts @@ -7,7 +7,6 @@ import { uneval } from "devalue" import * as c from "./utils/codegen.js" import type { Attribute, ElementNode, SpreadAttribute } from "./types.js" import type MagicString from "magic-string" -import type { LegacyRoot } from "svelte/compiler" const i = identifier(`translate_attribute_pass`) @@ -17,7 +16,7 @@ export const rewrite = ({ originalCode, translations, }: { - root: LegacyRoot + root: any code: MagicString originalCode: string translations: TranslationDefinition diff --git a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/ast.ts b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/ast.ts index 4ad0970ed7..d0d69140e8 100644 --- a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/ast.ts +++ b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/ast.ts @@ -1,10 +1,6 @@ -import type { LegacyRoot } from "svelte/compiler" import type { Attribute, ElementNode, TemplateNode } from "../types.js" -export function getElementsFromAst( - ast: LegacyRoot, - elementName: Name -): ElementNode[] { +export function getElementsFromAst(ast: any, elementName: Name): ElementNode[] { const links: ElementNode[] = [] function walk(templateNode: TemplateNode) { From 3ba6e24cb24a822cee77a8db3c5add48c46ed699 Mon Sep 17 00:00:00 2001 From: Samuel Stroschein <35429197+samuelstroschein@users.noreply.github.com> Date: Sat, 18 Jan 2025 17:06:47 -0500 Subject: [PATCH 03/12] normal dev script --- inlang/packages/paraglide-sveltekit/example/package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/inlang/packages/paraglide-sveltekit/example/package.json b/inlang/packages/paraglide-sveltekit/example/package.json index d5d5430c4c..26c32000fc 100644 --- a/inlang/packages/paraglide-sveltekit/example/package.json +++ b/inlang/packages/paraglide-sveltekit/example/package.json @@ -3,10 +3,10 @@ "version": "0.1.86", "private": true, "scripts": { - "_dev": "vite dev", + "dev": "vite dev", "start": "vite dev", - "build": "vite build && tsc --noEmit", - "test": "vite build", + "build": "vite build", + "test": "tsc --noEmit && vite build", "preview": "vite preview", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch" @@ -33,4 +33,4 @@ ".gitignore" ], "type": "module" -} +} \ No newline at end of file From 34f8512033e1fa08521751c8dbcdf57bb4285f4a Mon Sep 17 00:00:00 2001 From: Samuel Stroschein <35429197+samuelstroschein@users.noreply.github.com> Date: Sat, 18 Jan 2025 18:05:56 -0500 Subject: [PATCH 04/12] consistent file functio name --- .../paraglide-js/src/cli/commands/init/command.ts | 4 ++-- inlang/packages/paraglide-js/src/cli/index.ts | 10 ++-------- inlang/packages/paraglide-js/src/cli/steps/index.ts | 9 +++++++++ .../paraglide-js/src/cli/steps/update-ts-config.ts | 10 +++++----- 4 files changed, 18 insertions(+), 15 deletions(-) create mode 100644 inlang/packages/paraglide-js/src/cli/steps/index.ts diff --git a/inlang/packages/paraglide-js/src/cli/commands/init/command.ts b/inlang/packages/paraglide-js/src/cli/commands/init/command.ts index aa858374df..138e4c3630 100644 --- a/inlang/packages/paraglide-js/src/cli/commands/init/command.ts +++ b/inlang/packages/paraglide-js/src/cli/commands/init/command.ts @@ -6,7 +6,7 @@ import { findPackageJson } from "../../../services/environment/package.js"; import { checkForUncommittedChanges } from "../../steps/check-for-uncomitted-changes.js"; import { initializeInlangProject } from "../../steps/initialize-inlang-project.js"; import { maybeAddSherlock } from "../../steps/maybe-add-sherlock.js"; -import { maybeChangeTsConfig } from "../../steps/update-ts-config.js"; +import { maybeUpdateTsConfig } from "../../steps/update-ts-config.js"; import { promptForOutdir } from "../../steps/prompt-for-outdir.js"; import { updatePackageJson } from "../../steps/update-package-json.js"; import { runCompiler } from "../../steps/run-compiler.js"; @@ -44,7 +44,7 @@ export const initCommand = new Command() await addCompileStepToPackageJSON(ctx6); } - const ctx7 = await maybeChangeTsConfig(ctx6); + const ctx7 = await maybeUpdateTsConfig(ctx6); const ctx8 = await maybeAddSherlock(ctx7); try { diff --git a/inlang/packages/paraglide-js/src/cli/index.ts b/inlang/packages/paraglide-js/src/cli/index.ts index 74bd2d2b2b..4ff99953f1 100644 --- a/inlang/packages/paraglide-js/src/cli/index.ts +++ b/inlang/packages/paraglide-js/src/cli/index.ts @@ -3,14 +3,6 @@ import { compileCommand } from "./commands/compile/command.js"; import { ENV_VARIABLES } from "../services/env-variables/index.js"; import { initCommand } from "./commands/init/command.js"; -export { checkForUncommittedChanges } from "./steps/check-for-uncomitted-changes.js"; -export { initializeInlangProject } from "./steps/initialize-inlang-project.js"; -export { maybeAddSherlock } from "./steps/maybe-add-sherlock.js"; -export { maybeChangeTsConfig } from "./steps/update-ts-config.js"; -export { promptForOutdir } from "./steps/prompt-for-outdir.js"; -export { updatePackageJson } from "./steps/update-package-json.js"; -export { runCompiler } from "./steps/run-compiler.js"; - export const cli = new Command() .name("paraglide-js") .addCommand(compileCommand) @@ -20,3 +12,5 @@ export const cli = new Command() export * as Utils from "./utils.js"; export * as Defaults from "./defaults.js"; +export * as Steps from "./steps/index.js"; +export { Logger } from "../services/logger/index.js"; \ No newline at end of file diff --git a/inlang/packages/paraglide-js/src/cli/steps/index.ts b/inlang/packages/paraglide-js/src/cli/steps/index.ts new file mode 100644 index 0000000000..2522ad7130 --- /dev/null +++ b/inlang/packages/paraglide-js/src/cli/steps/index.ts @@ -0,0 +1,9 @@ +export { addVitePlugin } from "./add-vite-plugin.js"; +export { checkForUncommittedChanges } from "./check-for-uncomitted-changes.js"; +export { detectBundler } from "./detect-bundler.js"; +export { initializeInlangProject } from "./initialize-inlang-project.js"; +export { maybeAddSherlock } from "./maybe-add-sherlock.js"; +export { promptForOutdir } from "./prompt-for-outdir.js"; +export { runCompiler } from "./run-compiler.js"; +export { updatePackageJson } from "./update-package-json.js"; +export { maybeUpdateTsConfig } from "./update-ts-config.js"; diff --git a/inlang/packages/paraglide-js/src/cli/steps/update-ts-config.ts b/inlang/packages/paraglide-js/src/cli/steps/update-ts-config.ts index 7195bc4d12..05bf3c58e6 100644 --- a/inlang/packages/paraglide-js/src/cli/steps/update-ts-config.ts +++ b/inlang/packages/paraglide-js/src/cli/steps/update-ts-config.ts @@ -5,18 +5,18 @@ import JSON5 from "json5"; import { pathExists } from "../../services/file-handling/exists.js"; import nodePath from "node:path"; -export const maybeChangeTsConfig: CliStep< +export const maybeUpdateTsConfig: CliStep< { fs: typeof import("node:fs/promises"); logger: Logger }, unknown > = async (ctx) => { - const ctx1 = await maybeChangeTsConfigAllowJs(ctx); - return await maybeChangeTsConfigModuleResolution(ctx1); + const ctx1 = await maybeUpdateTsConfigAllowJs(ctx); + return await maybeUpdateTsConfigModuleResolution(ctx1); }; /** * Paraligde JS compiles to JS with JSDoc comments. TypeScript doesn't allow JS files by default. */ -export const maybeChangeTsConfigAllowJs: CliStep< +export const maybeUpdateTsConfigAllowJs: CliStep< { fs: typeof import("node:fs/promises"); logger: Logger }, unknown > = async (ctx) => { @@ -86,7 +86,7 @@ export const maybeChangeTsConfigAllowJs: CliStep< * Otherwise, types defined in `package.exports` are not resolved by TypeScript. Leading to type * errors with Paraglide-JS. */ -const maybeChangeTsConfigModuleResolution: CliStep< +const maybeUpdateTsConfigModuleResolution: CliStep< { fs: typeof import("node:fs/promises"); logger: Logger }, unknown > = async (ctx) => { From 68c67516d618bbf6184813de366ab3f5f4b3764c Mon Sep 17 00:00:00 2001 From: Samuel Stroschein <35429197+samuelstroschein@users.noreply.github.com> Date: Sat, 18 Jan 2025 18:06:16 -0500 Subject: [PATCH 05/12] remove old exports --- inlang/packages/paraglide-js/package.json | 8 -------- 1 file changed, 8 deletions(-) diff --git a/inlang/packages/paraglide-js/package.json b/inlang/packages/paraglide-js/package.json index f6ce560457..5111a3eb8c 100644 --- a/inlang/packages/paraglide-js/package.json +++ b/inlang/packages/paraglide-js/package.json @@ -61,14 +61,6 @@ ".": "./dist/index.js", "./cli": "./dist/cli/index.js", "./compiler": "./dist/compiler/index.js", - "./internal": { - "import": "./dist/index.js", - "types": "./dist/index.d.ts" - }, - "./internal/cli": { - "import": "./dist/cli/index.js", - "types": "./dist/cli/index.d.ts" - }, "./internal/adapter-utils": { "import": "./dist/adapter-utils/index.js", "types": "./dist/adapter-utils/index.d.ts" From f3c27ad89e55b3169990abd76c482757991c1dad Mon Sep 17 00:00:00 2001 From: Samuel Stroschein <35429197+samuelstroschein@users.noreply.github.com> Date: Sat, 18 Jan 2025 18:08:11 -0500 Subject: [PATCH 06/12] remove old exports --- inlang/packages/paraglide-js/package.json | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/inlang/packages/paraglide-js/package.json b/inlang/packages/paraglide-js/package.json index 5111a3eb8c..1304613d5a 100644 --- a/inlang/packages/paraglide-js/package.json +++ b/inlang/packages/paraglide-js/package.json @@ -60,11 +60,7 @@ "exports": { ".": "./dist/index.js", "./cli": "./dist/cli/index.js", - "./compiler": "./dist/compiler/index.js", - "./internal/adapter-utils": { - "import": "./dist/adapter-utils/index.js", - "types": "./dist/adapter-utils/index.d.ts" - } + "./compiler": "./dist/compiler/index.js" }, "keywords": [ "inlang", From 4f497497737bab1af25842aaa0b47b92a9f85bc1 Mon Sep 17 00:00:00 2001 From: Samuel Stroschein <35429197+samuelstroschein@users.noreply.github.com> Date: Sat, 18 Jan 2025 18:08:31 -0500 Subject: [PATCH 07/12] partially update sveltekit adapter --- .../paraglide-sveltekit/example/package.json | 7 +++---- .../example/src/lib/ui/LanguageSwitcher.svelte | 14 +++++++------- inlang/packages/paraglide-sveltekit/package.json | 5 ++--- .../paraglide-sveltekit/src/cli/commands/inits.ts | 15 +++++---------- .../src/cli/steps/addHandleHook.ts | 2 +- .../src/cli/steps/addI18nFile.ts | 2 +- .../src/cli/steps/addParaglideJSComponent.ts | 2 +- .../src/cli/steps/addRerouteFile.ts | 2 +- .../src/cli/steps/addVitePlugin.ts | 2 +- .../src/cli/steps/editAppHtmlFile.ts | 2 +- .../src/cli/steps/scanSvelteKitProject.ts | 2 +- .../src/cli/steps/updateAppTypes.ts | 2 +- .../src/runtime/adapter.client.ts | 6 +++--- .../src/runtime/adapter.server.ts | 6 +++--- .../src/runtime/config/pathTranslations.ts | 4 ++-- .../paraglide-sveltekit/src/runtime/runtime.d.ts | 12 ------------ .../paraglide-sveltekit/src/vite/config.ts | 8 ++++---- .../paraglide-sveltekit/src/vite/index.ts | 4 ++-- 18 files changed, 39 insertions(+), 58 deletions(-) delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/runtime.d.ts diff --git a/inlang/packages/paraglide-sveltekit/example/package.json b/inlang/packages/paraglide-sveltekit/example/package.json index 26c32000fc..f595a8e0e4 100644 --- a/inlang/packages/paraglide-sveltekit/example/package.json +++ b/inlang/packages/paraglide-sveltekit/example/package.json @@ -11,14 +11,13 @@ "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch" }, - "dependencies": { - "@inlang/paraglide-sveltekit": "workspace:*" - }, + "dependencies": {}, "peerDependencies": { - "typescript": "^4||^5" + "typescript": "^5" }, "devDependencies": { "@inlang/paraglide-js": "workspace:*", + "@inlang/paraglide-sveltekit": "workspace:*", "@sveltejs/adapter-node": "^5.2.10", "@sveltejs/adapter-static": "^3.0.0", "@sveltejs/kit": "^2.12.1", diff --git a/inlang/packages/paraglide-sveltekit/example/src/lib/ui/LanguageSwitcher.svelte b/inlang/packages/paraglide-sveltekit/example/src/lib/ui/LanguageSwitcher.svelte index 5f532266d1..577cb7cc0a 100644 --- a/inlang/packages/paraglide-sveltekit/example/src/lib/ui/LanguageSwitcher.svelte +++ b/inlang/packages/paraglide-sveltekit/example/src/lib/ui/LanguageSwitcher.svelte @@ -1,12 +1,12 @@ \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/package.json b/inlang/packages/paraglide-sveltekit/package.json index 0e30e9f7b3..abfa1db075 100644 --- a/inlang/packages/paraglide-sveltekit/package.json +++ b/inlang/packages/paraglide-sveltekit/package.json @@ -14,7 +14,7 @@ "scripts": { "test:with-base": "BASE_PATH=/base vitest run --test-timeout 90000 --dir src", "test:without-base": "BASE_PATH=\"\" vitest run --test-timeout 90000 --dir src", - "test": "npm run generate-meta && npm run test:with-base && npm run test:without-base && tsc --noEmit", + "test": "tsc --noEmit && npm run generate-meta && npm run test:with-base && npm run test:without-base", "build": "npm run generate-meta && svelte-package -i src -o dist", "dev": "npm run generate-meta && svelte-package -w -i src -o dist", "lint": "eslint ./src --fix", @@ -23,8 +23,7 @@ "clean": "rm -rf ./dist ./node_modules" }, "dependencies": { - "@inlang/paraglide-js": "1.11.8", - "@inlang/paraglide-vite": "1.3.5", + "@inlang/paraglide-js": "workspace:*", "@lix-js/client": "2.2.1", "commander": "^12.0.0", "dedent": "1.5.1", diff --git a/inlang/packages/paraglide-sveltekit/src/cli/commands/inits.ts b/inlang/packages/paraglide-sveltekit/src/cli/commands/inits.ts index 956900c1a0..9b62abd6e7 100644 --- a/inlang/packages/paraglide-sveltekit/src/cli/commands/inits.ts +++ b/inlang/packages/paraglide-sveltekit/src/cli/commands/inits.ts @@ -1,8 +1,7 @@ import { findRepoRoot, openRepository } from "@lix-js/client" import nodeishFs from "node:fs/promises" import { Command } from "commander" -import { Logger } from "@inlang/paraglide-js/internal" -import { Steps, cli as ParaglideCli } from "@inlang/paraglide-js/internal/cli" +import { Steps, cli as ParaglideCli, Logger } from "@inlang/paraglide-js/cli" import { scanSvelteKitProject } from "../steps/scanSvelteKitProject.js" import { addParaglideSvelteKitVitePlugin } from "../steps/addVitePlugin.js" import { addI18nFile } from "../steps/addI18nFile.js" @@ -35,20 +34,17 @@ export const initCommand = new Command() appId: PARAGLIDE_SVELTEKIT_MARKETPLACE_ID, } - const ctx1 = await scanSvelteKitProject(ctx0) + const ctx1 = (await scanSvelteKitProject(ctx0)) as any const ctx2 = await Steps.initializeInlangProject(ctx1) const ctx3 = await Steps.updatePackageJson({ dependencies: async (deps) => ({ - ...deps, - "@inlang/paraglide-sveltekit": PARAGLIDE_SVELTEKIT_VERSION, - }), - devDependencies: async (deps) => ({ ...deps, "@inlang/paraglide-js": ParaglideCli.version() as string, + "@inlang/paraglide-sveltekit": PARAGLIDE_SVELTEKIT_VERSION, }), })(ctx2) - const ctx4 = await Steps.maybeChangeTsConfig(ctx3) + const ctx4 = await Steps.maybeUpdateTsConfig(ctx3) const ctx5 = await addParaglideSvelteKitVitePlugin(ctx4) const ctx6 = await addI18nFile(ctx5) const ctx7 = await addParaglideJSComponent(ctx6) @@ -57,10 +53,9 @@ export const initCommand = new Command() const ctx10 = await addHandleHook(ctx9) const ctx11 = await addTypesForLocals(ctx10) const crx12 = await Steps.maybeAddSherlock(ctx11) - const crx13 = await Steps.maybeAddNinja(crx12) try { - await Steps.runCompiler({ ...crx13, outdir: "./src/lib/paraglide" }) + await Steps.runCompiler({ ...crx12, outdir: "./src/lib/paraglide" }) } catch (e) { //silently ignore } diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/addHandleHook.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/addHandleHook.ts index 48fd061d59..186ecc01d9 100644 --- a/inlang/packages/paraglide-sveltekit/src/cli/steps/addHandleHook.ts +++ b/inlang/packages/paraglide-sveltekit/src/cli/steps/addHandleHook.ts @@ -1,7 +1,7 @@ import type { Repository } from "@lix-js/client" import { findFile, type CliStep } from "../utils.js" import path from "node:path" -import type { Logger } from "@inlang/paraglide-js/internal" +import type { Logger } from "@inlang/paraglide-js/cli" const BOILERPLATE = `// file initialized by the Paraglide-SvelteKit CLI - Feel free to edit it import { sequence } from "@sveltejs/kit/hooks" diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/addI18nFile.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/addI18nFile.ts index 5362b7c63d..4c63829002 100644 --- a/inlang/packages/paraglide-sveltekit/src/cli/steps/addI18nFile.ts +++ b/inlang/packages/paraglide-sveltekit/src/cli/steps/addI18nFile.ts @@ -1,7 +1,7 @@ import type { Repository } from "@lix-js/client" import type { CliStep } from "../utils.js" import path from "node:path" -import type { Logger } from "@inlang/paraglide-js/internal" +import type { Logger } from "@inlang/paraglide-js/cli" export const addI18nFile: CliStep< { diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/addParaglideJSComponent.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/addParaglideJSComponent.ts index 0234cb1693..0892cefec6 100644 --- a/inlang/packages/paraglide-sveltekit/src/cli/steps/addParaglideJSComponent.ts +++ b/inlang/packages/paraglide-sveltekit/src/cli/steps/addParaglideJSComponent.ts @@ -1,6 +1,6 @@ import type { Repository } from "@lix-js/client" import { findFile, type CliStep } from "../utils.js" -import type { Logger } from "@inlang/paraglide-js/internal" +import type { Logger } from "@inlang/paraglide-js/cli" import path from "node:path" const BOILERPLATE_FILE = ` diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/addRerouteFile.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/addRerouteFile.ts index 20d0fa2138..7bf6d9c231 100644 --- a/inlang/packages/paraglide-sveltekit/src/cli/steps/addRerouteFile.ts +++ b/inlang/packages/paraglide-sveltekit/src/cli/steps/addRerouteFile.ts @@ -1,5 +1,5 @@ import type { Repository } from "@lix-js/client" -import type { Logger } from "@inlang/paraglide-js/internal" +import type { Logger } from "@inlang/paraglide-js/cli" import { findFile, type CliStep } from "../utils.js" import path from "node:path" diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/addVitePlugin.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/addVitePlugin.ts index b379b36135..9bc0d27d26 100644 --- a/inlang/packages/paraglide-sveltekit/src/cli/steps/addVitePlugin.ts +++ b/inlang/packages/paraglide-sveltekit/src/cli/steps/addVitePlugin.ts @@ -1,6 +1,6 @@ import type { Repository } from "@lix-js/client" import type { CliStep } from "../utils.js" -import type { Logger } from "@inlang/paraglide-js/internal" +import type { Logger } from "@inlang/paraglide-js/cli" export const addParaglideSvelteKitVitePlugin: CliStep< { diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/editAppHtmlFile.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/editAppHtmlFile.ts index e9051dd433..9cca9cf3e5 100644 --- a/inlang/packages/paraglide-sveltekit/src/cli/steps/editAppHtmlFile.ts +++ b/inlang/packages/paraglide-sveltekit/src/cli/steps/editAppHtmlFile.ts @@ -1,6 +1,6 @@ import type { Repository } from "@lix-js/client" import type { CliStep } from "../utils.js" -import type { Logger } from "@inlang/paraglide-js/internal" +import type { Logger } from "@inlang/paraglide-js/cli" import path from "node:path" export const editAppHtmlFile: CliStep<{ repo: Repository; logger: Logger }, unknown> = async ( diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/scanSvelteKitProject.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/scanSvelteKitProject.ts index df7aebfb88..13ca8ee183 100644 --- a/inlang/packages/paraglide-sveltekit/src/cli/steps/scanSvelteKitProject.ts +++ b/inlang/packages/paraglide-sveltekit/src/cli/steps/scanSvelteKitProject.ts @@ -1,6 +1,6 @@ import type { Repository } from "@lix-js/client" import { findFile, type CliStep } from "../utils.js" -import type { Logger } from "@inlang/paraglide-js/internal" +import type { Logger } from "@inlang/paraglide-js/cli" export const scanSvelteKitProject: CliStep< { repo: Repository; logger: Logger }, diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/updateAppTypes.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/updateAppTypes.ts index 06d7d2d079..032f6ca390 100644 --- a/inlang/packages/paraglide-sveltekit/src/cli/steps/updateAppTypes.ts +++ b/inlang/packages/paraglide-sveltekit/src/cli/steps/updateAppTypes.ts @@ -1,5 +1,5 @@ import type { Repository } from "@lix-js/client" -import type { Logger } from "@inlang/paraglide-js/internal" +import type { Logger } from "@inlang/paraglide-js/cli" import { findFile, type CliStep } from "../utils.js" export const addTypesForLocals: CliStep< diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/adapter.client.ts b/inlang/packages/paraglide-sveltekit/src/runtime/adapter.client.ts index 876d9b7b9a..274e89b970 100644 --- a/inlang/packages/paraglide-sveltekit/src/runtime/adapter.client.ts +++ b/inlang/packages/paraglide-sveltekit/src/runtime/adapter.client.ts @@ -17,15 +17,15 @@ import { type PathDefinitionTranslations, } from "@inlang/paraglide-js/internal/adapter-utils" import type { ParamMatcher } from "@sveltejs/kit" -import type { Paraglide } from "./runtime.js" import { PrefixStrategy } from "./strategy.js" import type { I18nUserConfig } from "./adapter.server.js" +import type { Runtime } from "@inlang/paraglide-js" /** * The _resolved_ configuration for the i18n instance. */ export type I18nConfig = { - runtime: Paraglide + runtime: Runtime translations: PathDefinitionTranslations exclude: (path: string) => boolean defaultLanguageTag: T @@ -53,7 +53,7 @@ export type I18nConfig = { * export const i18n = createI18n(runtime, { ...options }) * ``` */ -export function createI18n(runtime: Paraglide, options?: I18nUserConfig) { +export function createI18n(runtime: Runtime, options?: I18nUserConfig) { const translations = options?.pathnames ? resolveUserPathDefinitions(options.pathnames, runtime.availableLanguageTags) : {} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/adapter.server.ts b/inlang/packages/paraglide-sveltekit/src/runtime/adapter.server.ts index 6c7c7eddd7..ed7ed0fbf7 100644 --- a/inlang/packages/paraglide-sveltekit/src/runtime/adapter.server.ts +++ b/inlang/packages/paraglide-sveltekit/src/runtime/adapter.server.ts @@ -19,8 +19,8 @@ import { } from "@inlang/paraglide-js/internal/adapter-utils" import type { ParamMatcher } from "@sveltejs/kit" import type { UserPathTranslations } from "./config/pathTranslations.js" -import type { Paraglide } from "./runtime.js" import { PrefixStrategy } from "./strategy.js" +import type { Runtime } from "@inlang/paraglide-js" export type I18nUserConfig = { /** @@ -125,7 +125,7 @@ export type I18nUserConfig = { * The _resolved_ configuration for the i18n instance. */ export type I18nConfig = { - runtime: Paraglide + runtime: Runtime translations: PathDefinitionTranslations exclude: (path: string) => boolean defaultLanguageTag: T @@ -153,7 +153,7 @@ export type I18nConfig = { * export const i18n = createI18n(runtime, { ...options }) * ``` */ -export function createI18n(runtime: Paraglide, options?: I18nUserConfig) { +export function createI18n(runtime: Runtime, options?: I18nUserConfig) { const translations = options?.pathnames ? resolveUserPathDefinitions(options.pathnames, runtime.availableLanguageTags) : {} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/config/pathTranslations.ts b/inlang/packages/paraglide-sveltekit/src/runtime/config/pathTranslations.ts index 824e4731d6..ad0b1dd421 100644 --- a/inlang/packages/paraglide-sveltekit/src/runtime/config/pathTranslations.ts +++ b/inlang/packages/paraglide-sveltekit/src/runtime/config/pathTranslations.ts @@ -1,4 +1,4 @@ -import type { MessageIndexFunction } from "@inlang/paraglide-js/internal" +import type { MessageBundleFunction } from "@inlang/paraglide-js" /** * Maps canonical paths to translations for each language. @@ -22,5 +22,5 @@ import type { MessageIndexFunction } from "@inlang/paraglide-js/internal" * ``` */ export type UserPathTranslations = { - [canonicalPath: `/${string}`]: Record | MessageIndexFunction + [canonicalPath: `/${string}`]: Record | MessageBundleFunction } diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/runtime.d.ts b/inlang/packages/paraglide-sveltekit/src/runtime/runtime.d.ts deleted file mode 100644 index 47fba545ff..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/runtime.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * The compiled paraglide runtime module. - * (e.g. "paraglide/runtime.js") - */ -export interface Paraglide { - readonly setLanguageTag: (language_tag: T | (() => T)) => void - readonly languageTag: () => T - readonly onSetLanguageTag: (callback: (language_tag: T) => void) => void - readonly isAvailableLanguageTag: (language_tag: unknown) => language_tag is T - readonly availableLanguageTags: readonly T[] - readonly sourceLanguageTag: T -} diff --git a/inlang/packages/paraglide-sveltekit/src/vite/config.ts b/inlang/packages/paraglide-sveltekit/src/vite/config.ts index ce690e1402..3a46422ce5 100644 --- a/inlang/packages/paraglide-sveltekit/src/vite/config.ts +++ b/inlang/packages/paraglide-sveltekit/src/vite/config.ts @@ -1,8 +1,8 @@ -import type { paraglide as vitePluginParaglide } from "@inlang/paraglide-vite" +import type { paraglideVitePlugin } from "@inlang/paraglide-js" -type VitePluginUserConfig = Parameters[0] +type VitePluginUserConfig = Parameters[0] -export interface UserConfig extends VitePluginUserConfig { +export type UserConfig = VitePluginUserConfig & { /** * The preprocessor rewrites any links in your markup * and translates them according to the routing strategy. @@ -18,7 +18,7 @@ export interface UserConfig extends VitePluginUserConfig { * The full config for @inlang/paraglide-sveltekit. * Any values not provided by the user are filled in with defaults. */ -export interface Config extends VitePluginUserConfig { +export type Config = VitePluginUserConfig & { disablePreprocessor: boolean } diff --git a/inlang/packages/paraglide-sveltekit/src/vite/index.ts b/inlang/packages/paraglide-sveltekit/src/vite/index.ts index 2bc6531192..896401bf63 100644 --- a/inlang/packages/paraglide-sveltekit/src/vite/index.ts +++ b/inlang/packages/paraglide-sveltekit/src/vite/index.ts @@ -1,12 +1,12 @@ -import { paraglide as vitePluginParaglide } from "@inlang/paraglide-vite" import { preprocessor, type PreprocessorConfig } from "./preprocessor/index.js" import { type UserConfig, type Config, resolveConfig } from "./config.js" import type { Plugin } from "vite" +import { paraglideVitePlugin } from "@inlang/paraglide-js" // Vite's Plugin type is often incompatible between vite versions, so we use any here export function paraglide(userConfig: UserConfig): any { const config = resolveConfig(userConfig) - const plugins: Plugin[] = [vitePluginParaglide(config)] + const plugins: Plugin[] = [paraglideVitePlugin(config)] if (!config.disablePreprocessor) { plugins.push(registerPreprocessor(config)) From b103c3d5629ce19fb0a7dc92a7138ab7166839ed Mon Sep 17 00:00:00 2001 From: Samuel Stroschein <35429197+samuelstroschein@users.noreply.github.com> Date: Sat, 18 Jan 2025 18:08:41 -0500 Subject: [PATCH 08/12] export more types --- inlang/packages/paraglide-js/src/compiler/index.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/inlang/packages/paraglide-js/src/compiler/index.ts b/inlang/packages/paraglide-js/src/compiler/index.ts index a3149de109..9081c51fbe 100644 --- a/inlang/packages/paraglide-js/src/compiler/index.ts +++ b/inlang/packages/paraglide-js/src/compiler/index.ts @@ -1,5 +1,7 @@ export type { CompilerArgs } from "./compile.js"; export type { CompilerOptions } from "./compile-project.js"; +export type { MessageBundleFunction, MessageFunction } from "./types.js"; +export type { Runtime } from "./runtime/type.js"; export { compile } from "./compile.js"; export { compileProject } from "./compile-project.js"; export { compileBundle } from "./compile-bundle.js"; From 4ff246d8da04617bd24a11375e6d9564426a56d8 Mon Sep 17 00:00:00 2001 From: Samuel Stroschein <35429197+samuelstroschein@users.noreply.github.com> Date: Sat, 18 Jan 2025 18:33:43 -0500 Subject: [PATCH 09/12] add runtime export type --- .../src/compiler/runtime/type.test.ts | 54 +++++++++++ .../paraglide-js/src/compiler/runtime/type.ts | 17 ++++ pnpm-lock.yaml | 93 ++----------------- 3 files changed, 77 insertions(+), 87 deletions(-) create mode 100644 inlang/packages/paraglide-js/src/compiler/runtime/type.test.ts create mode 100644 inlang/packages/paraglide-js/src/compiler/runtime/type.ts diff --git a/inlang/packages/paraglide-js/src/compiler/runtime/type.test.ts b/inlang/packages/paraglide-js/src/compiler/runtime/type.test.ts new file mode 100644 index 0000000000..f9b8b17999 --- /dev/null +++ b/inlang/packages/paraglide-js/src/compiler/runtime/type.test.ts @@ -0,0 +1,54 @@ +import { expect, test } from "vitest"; +import { createProject as typescriptProject, ts } from "@ts-morph/bootstrap"; +import { createRuntime } from "./create-runtime.js"; +import fs from "node:fs/promises"; +import { dirname, resolve } from "node:path"; +import { fileURLToPath } from "url"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +test("runtime type", async () => { + const project = await typescriptProject({ + useInMemoryFileSystem: true, + compilerOptions: { + outDir: "./dist", + declaration: true, + allowJs: true, + checkJs: true, + module: ts.ModuleKind.Node16, + strict: true, + }, + }); + + const jsdocRuntime = createRuntime( + { baseLocale: "en", locales: ["en"] }, + false + ); + + const runtimeType = await fs.readFile( + resolve(__dirname, "./type.ts"), + "utf-8" + ); + + project.createSourceFile("./runtime.js", jsdocRuntime); + + project.createSourceFile("./runtime-type.ts", runtimeType); + + project.createSourceFile( + "./test.ts", + ` + import * as runtime from "./runtime.js" + import type { Runtime as RuntimeType } from "./runtime-type.js" + + const runtimeType: RuntimeType = runtime + ` + ); + + const program = project.createProgram(); + const diagnostics = ts.getPreEmitDiagnostics(program); + for (const diagnostic of diagnostics) { + console.error(diagnostic.messageText, diagnostic.file?.fileName); + } + expect(diagnostics.length).toEqual(0); +}); diff --git a/inlang/packages/paraglide-js/src/compiler/runtime/type.ts b/inlang/packages/paraglide-js/src/compiler/runtime/type.ts new file mode 100644 index 0000000000..b2a25604c7 --- /dev/null +++ b/inlang/packages/paraglide-js/src/compiler/runtime/type.ts @@ -0,0 +1,17 @@ +/** + * The Paraglide runtime API. + */ +export type Runtime = { + baseLocale: UnknownLocale; + locales: Readonly; + getLocale: () => string; + setLocale: (newLocale: UnknownLocale) => void; + defineGetLocale: (fn: () => UnknownLocale) => void; + defineSetLocale: (fn: (newLocale: UnknownLocale) => void) => void; + isLocale: (locale: UnknownLocale) => locale is UnknownLocale; +}; + +/** + * A locale that is unknown before compilation. + */ +export type UnknownLocale = any; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f64c298b35..2293ca3be7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -397,11 +397,8 @@ importers: inlang/packages/paraglide-sveltekit: dependencies: '@inlang/paraglide-js': - specifier: 1.11.8 - version: 1.11.8 - '@inlang/paraglide-vite': - specifier: 1.3.5 - version: 1.3.5 + specifier: workspace:* + version: link:../paraglide-js '@lix-js/client': specifier: 2.2.1 version: 2.2.1 @@ -469,16 +466,16 @@ importers: inlang/packages/paraglide-sveltekit/example: dependencies: - '@inlang/paraglide-sveltekit': - specifier: workspace:* - version: link:.. typescript: - specifier: ^4||^5 + specifier: ^5 version: 5.7.3 devDependencies: '@inlang/paraglide-js': specifier: workspace:* version: link:../../paraglide-js + '@inlang/paraglide-sveltekit': + specifier: workspace:* + version: link:.. '@sveltejs/adapter-node': specifier: ^5.2.10 version: 5.2.12(@sveltejs/kit@2.16.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0))) @@ -4180,22 +4177,12 @@ packages: resolution: {integrity: sha512-KEZQvED+eLidJ/U7VSE60ux7M+ctfvvxlqQ3pkaSNbRPeEYRSt/9e8aWMv9cHgEtqS62x2s0n7Ej+BF7uNSJyA==} hasBin: true - '@inlang/paraglide-js@1.11.8': - resolution: {integrity: sha512-PxzrmDP63fbMNF4/AtiLFTnUodFxVbOkLpIrOzPZvNuLg0wCWnsaBfNT87/rNjL/A7ZPzEBmuDi0P2pn8iB0Fw==} - hasBin: true - '@inlang/paraglide-unplugin@1.9.4': resolution: {integrity: sha512-8UPXNJSdJx8c5p2R85ITqEv9crPgcIJ3W7CsJRWhLHOU3g6FibXbwz98+25jTJJnadmhiQ+P+nZKNYJOFjcEDw==} - '@inlang/paraglide-unplugin@1.9.5': - resolution: {integrity: sha512-5KklLBvl/y+R4SccWH74USTGQNFW5IwEyMLQ3WIHX9cHX2pnnA5wGqQxYg3EcgCyErHLc3+sm7EMNB5Z0dSeTg==} - '@inlang/paraglide-vite@1.3.4': resolution: {integrity: sha512-6LqDU7ed7QzV5qBGcOfFhuvGZZ3s5RFBSHyItyh9G8+8XrpGGYIQ5LZfvgd2DAFs2Bzjlk5gRGXcfwc5W+wfYQ==} - '@inlang/paraglide-vite@1.3.5': - resolution: {integrity: sha512-yLa+gxA8el6RXXneeiqTnV9Od4Yh389lA+wSfiS+jDXY5vV/2j7Lpk2yuATLmxwI9i2nMP6c6yu8L0X77PA9dg==} - '@inlang/plugin-message-format@2.2.0': resolution: {integrity: sha512-6MJLExr3OLqbR8gCP4UEgNMgdaJFFCug2GLmFwid7Ana4kObnbCA33YN3m3eN8p+lmnv7zpfW7oeyTZXZLoptg==} @@ -4226,10 +4213,6 @@ packages: resolution: {integrity: sha512-fTr0mkDx2ViZt/8lxaF9Mxj3m8LaqIhcjMJy+CdHREMc9UvpUhGLB7elMp061YysxnN1CFccAgLRug5VWK3yWw==} engines: {node: '>=18.0.0'} - '@inlang/sdk@0.37.0': - resolution: {integrity: sha512-/uG/9HrJU+v5jY/nWKZAlI3diD8WdT5bAYuIZ3rVsnphvqV4iWvQwAp3H/K8F5QDJ+GEY79mhKfFhHcKMSiWng==} - engines: {node: '>=18.0.0'} - '@inlang/translatable@1.3.1': resolution: {integrity: sha512-VAtle21vRpIrB+axtHFrFB0d1HtDaaNj+lV77eZQTJyOWbTFYTVIQJ8WAbyw9eu4F6h6QC2FutLyxjMomxfpcQ==} @@ -17721,26 +17704,6 @@ snapshots: - debug - supports-color - '@inlang/paraglide-js@1.11.8': - dependencies: - '@inlang/detect-json-formatting': 1.0.0 - '@inlang/language-tag': 1.5.1 - '@inlang/plugin-message-format': 2.2.0 - '@inlang/recommend-ninja': 0.1.1 - '@inlang/recommend-sherlock': 0.1.1 - '@inlang/sdk': 0.37.0 - '@lix-js/client': 2.2.1 - '@lix-js/fs': 2.2.0 - commander: 11.1.0 - consola: 3.2.3 - dedent: 1.5.1 - json5: 2.2.3 - posthog-node: 4.3.2 - transitivePeerDependencies: - - babel-plugin-macros - - debug - - supports-color - '@inlang/paraglide-unplugin@1.9.4': dependencies: '@inlang/paraglide-js': 1.11.7 @@ -17753,18 +17716,6 @@ snapshots: - debug - supports-color - '@inlang/paraglide-unplugin@1.9.5': - dependencies: - '@inlang/paraglide-js': 1.11.8 - '@inlang/sdk': 0.37.0 - '@lix-js/client': 2.2.1 - typescript: 5.7.3 - unplugin: 1.16.0 - transitivePeerDependencies: - - babel-plugin-macros - - debug - - supports-color - '@inlang/paraglide-vite@1.3.4': dependencies: '@inlang/paraglide-unplugin': 1.9.4 @@ -17773,14 +17724,6 @@ snapshots: - debug - supports-color - '@inlang/paraglide-vite@1.3.5': - dependencies: - '@inlang/paraglide-unplugin': 1.9.5 - transitivePeerDependencies: - - babel-plugin-macros - - debug - - supports-color - '@inlang/plugin-message-format@2.2.0': {} '@inlang/plugin@2.4.14(@sinclair/typebox@0.31.28)': @@ -17870,30 +17813,6 @@ snapshots: - babel-plugin-macros - supports-color - '@inlang/sdk@0.37.0': - dependencies: - '@inlang/json-types': 1.1.0(@sinclair/typebox@0.31.28) - '@inlang/language-tag': 1.5.1 - '@inlang/message': 2.1.0(@sinclair/typebox@0.31.28) - '@inlang/message-lint-rule': 1.4.7(@sinclair/typebox@0.31.28) - '@inlang/module': 1.2.14(@sinclair/typebox@0.31.28) - '@inlang/plugin': 2.4.14(@sinclair/typebox@0.31.28) - '@inlang/project-settings': 2.4.2(@sinclair/typebox@0.31.28) - '@inlang/result': 1.1.0 - '@inlang/translatable': 1.3.1 - '@lix-js/client': 2.2.1 - '@lix-js/fs': 2.2.0 - '@sinclair/typebox': 0.31.28 - debug: 4.4.0(supports-color@9.4.0) - dedent: 1.5.1 - deepmerge-ts: 5.1.0 - murmurhash3js: 3.0.1 - solid-js: 1.6.12 - throttle-debounce: 5.0.2 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - '@inlang/translatable@1.3.1': dependencies: '@inlang/language-tag': 1.5.1 From 5f5b0e55386de2cadaba4c115a017fcaad2783d5 Mon Sep 17 00:00:00 2001 From: Samuel Stroschein <35429197+samuelstroschein@users.noreply.github.com> Date: Sat, 18 Jan 2025 18:37:16 -0500 Subject: [PATCH 10/12] remove sveltekit adapter --- .../packages/paraglide-sveltekit/.gitignore | 6 - .../paraglide-sveltekit/.prettierrc.json | 15 - .../packages/paraglide-sveltekit/CHANGELOG.md | 900 ------------------ inlang/packages/paraglide-sveltekit/README.md | 85 -- .../paraglide-sveltekit/assets/header.png | Bin 287277 -> 0 bytes .../paraglide-sveltekit/assets/icon.png | Bin 4051 -> 0 bytes .../paraglide-sveltekit/assets/no-param.png | Bin 118053 -> 0 bytes .../paraglide-sveltekit/assets/og.png | Bin 204847 -> 0 bytes .../packages/paraglide-sveltekit/bin/run.js | 4 - .../docs/advanced-usage.md | 66 -- .../paraglide-sveltekit/docs/deployment.md | 38 - .../docs/localised-routing.md | 193 ---- .../paraglide-sveltekit/docs/manual-setup.md | 140 --- .../paraglide-sveltekit/docs/roadmap.md | 40 - .../paraglide-sveltekit/docs/why-paraglide.md | 39 - .../paraglide-sveltekit/example/.gitignore | 6 - .../paraglide-sveltekit/example/CHANGELOG.md | 659 ------------- .../paraglide-sveltekit/example/README.md | 16 - .../example/messages/de.json | 18 - .../example/messages/en.json | 18 - .../paraglide-sveltekit/example/package.json | 35 - .../example/project.inlang/.gitignore | 1 - .../example/project.inlang/project_id | 1 - .../example/project.inlang/settings.json | 17 - .../paraglide-sveltekit/example/src/app.d.ts | 18 - .../paraglide-sveltekit/example/src/app.html | 12 - .../paraglide-sveltekit/example/src/hooks.js | 4 - .../example/src/hooks.server.js | 3 - .../example/src/lib/i18n.js | 26 - .../example/src/lib/ui/Header.svelte | 34 - .../src/lib/ui/LanguageSwitcher.svelte | 33 - .../example/src/lib/ui/styles.css | 37 - .../example/src/params/int.js | 16 - .../example/src/routes/+error.svelte | 9 - .../example/src/routes/+layout.server.js | 16 - .../example/src/routes/+layout.svelte | 22 - .../example/src/routes/+page.svelte | 21 - .../example/src/routes/about/+page.svelte | 15 - .../example/src/routes/excluded/+page.svelte | 1 - .../src/routes/matchall/page/+page.svelte | 9 - .../routes/matchall/page/subpage/+page.svelte | 9 - .../src/routes/redirect/+page.server.ts | 9 - .../example/src/routes/redirect/+page.svelte | 3 - .../src/routes/users/[id]/+page.svelte | 23 - .../routes/users/[id]/edit/+page.server.ts | 10 - .../src/routes/users/[id]/edit/+page.svelte | 16 - .../example/svelte.config.js | 21 - .../paraglide-sveltekit/example/tsconfig.json | 17 - .../example/vite.config.ts | 18 - .../marketplace-manifest.json | 53 -- .../paraglide-sveltekit/mocks/runtime.js | 143 --- .../packages/paraglide-sveltekit/package.json | 74 -- .../scripts/generate_meta.js | 31 - .../src/cli/commands/inits.ts | 68 -- .../paraglide-sveltekit/src/cli/index.ts | 9 - .../src/cli/steps/addHandleHook.test.ts | 31 - .../src/cli/steps/addHandleHook.ts | 112 --- .../src/cli/steps/addI18nFile.ts | 45 - .../cli/steps/addParaglideJSComponent.test.ts | 105 -- .../src/cli/steps/addParaglideJSComponent.ts | 99 -- .../src/cli/steps/addRerouteFile.ts | 42 - .../src/cli/steps/addVitePlugin.test.ts | 51 - .../src/cli/steps/addVitePlugin.ts | 90 -- .../src/cli/steps/editAppHtmlFile.test.ts | 24 - .../src/cli/steps/editAppHtmlFile.ts | 77 -- .../src/cli/steps/scanSvelteKitProject.ts | 68 -- .../src/cli/steps/updateAppTypes.test.ts | 40 - .../src/cli/steps/updateAppTypes.ts | 86 -- .../paraglide-sveltekit/src/cli/utils.ts | 89 -- .../paraglide-sveltekit/src/constants.js | 8 - .../paraglide-sveltekit/src/constants.test.js | 22 - .../paraglide-sveltekit/src/meta.d.ts | 3 - .../src/runtime/AlternateLinks.svelte | 37 - .../src/runtime/ParaglideJS.svelte | 118 --- .../src/runtime/adapter.client.ts | 214 ----- .../src/runtime/adapter.server.ts | 316 ------ .../src/runtime/adapter.test.ts | 98 -- .../src/runtime/config/pathTranslations.ts | 26 - .../src/runtime/exclude.test.ts | 24 - .../src/runtime/exclude.ts | 11 - .../src/runtime/hooks/handle.server.ts | 189 ---- .../src/runtime/hooks/reroute.test.ts | 39 - .../src/runtime/hooks/reroute.ts | 25 - .../src/runtime/hooks/utils.ts | 34 - .../src/runtime/index.client.ts | 3 - .../src/runtime/index.server.ts | 3 - .../src/runtime/internal/index.js | 82 -- .../paraglide-sveltekit/src/runtime/locals.ts | 30 - .../src/runtime/strategy.test.ts | 39 - .../src/runtime/strategy.ts | 117 --- .../src/runtime/utils/cookie.ts | 12 - .../src/runtime/utils/diff-urls.test.ts | 184 ---- .../src/runtime/utils/diff-urls.ts | 27 - .../src/runtime/utils/external.test.ts | 36 - .../src/runtime/utils/external.ts | 4 - .../src/runtime/utils/normaliseBase.test.ts | 20 - .../src/runtime/utils/normaliseBase.ts | 12 - .../src/runtime/utils/path.test.ts | 20 - .../src/runtime/utils/path.ts | 6 - .../src/runtime/utils/route.test.ts | 73 -- .../src/runtime/utils/route.ts | 72 -- .../src/runtime/utils/text-dir.test.ts | 21 - .../src/runtime/utils/text-dir.ts | 27 - .../paraglide-sveltekit/src/vite/config.ts | 39 - .../paraglide-sveltekit/src/vite/index.ts | 33 - .../src/vite/preprocessor/index.test.ts | 417 -------- .../src/vite/preprocessor/index.ts | 113 --- .../src/vite/preprocessor/precheck.test.ts | 69 -- .../src/vite/preprocessor/precheck.ts | 27 - .../src/vite/preprocessor/rewrite.ts | 236 ----- .../src/vite/preprocessor/types.d.ts | 53 -- .../src/vite/preprocessor/utils/ast.ts | 42 - .../utils/attributes-to-values.test.ts | 116 --- .../utils/attributes-to-values.ts | 56 -- .../src/vite/preprocessor/utils/codegen.ts | 50 - .../src/vite/preprocessor/utils/escape.ts | 12 - .../src/vite/preprocessor/utils/identifier.ts | 11 - .../paraglide-sveltekit/svelte.config.js | 8 - .../paraglide-sveltekit/tsconfig.json | 14 - .../paraglide-sveltekit/vitest.config.js | 76 -- 120 files changed, 7360 deletions(-) delete mode 100644 inlang/packages/paraglide-sveltekit/.gitignore delete mode 100644 inlang/packages/paraglide-sveltekit/.prettierrc.json delete mode 100644 inlang/packages/paraglide-sveltekit/CHANGELOG.md delete mode 100644 inlang/packages/paraglide-sveltekit/README.md delete mode 100644 inlang/packages/paraglide-sveltekit/assets/header.png delete mode 100644 inlang/packages/paraglide-sveltekit/assets/icon.png delete mode 100644 inlang/packages/paraglide-sveltekit/assets/no-param.png delete mode 100644 inlang/packages/paraglide-sveltekit/assets/og.png delete mode 100755 inlang/packages/paraglide-sveltekit/bin/run.js delete mode 100644 inlang/packages/paraglide-sveltekit/docs/advanced-usage.md delete mode 100644 inlang/packages/paraglide-sveltekit/docs/deployment.md delete mode 100644 inlang/packages/paraglide-sveltekit/docs/localised-routing.md delete mode 100644 inlang/packages/paraglide-sveltekit/docs/manual-setup.md delete mode 100644 inlang/packages/paraglide-sveltekit/docs/roadmap.md delete mode 100644 inlang/packages/paraglide-sveltekit/docs/why-paraglide.md delete mode 100644 inlang/packages/paraglide-sveltekit/example/.gitignore delete mode 100644 inlang/packages/paraglide-sveltekit/example/CHANGELOG.md delete mode 100644 inlang/packages/paraglide-sveltekit/example/README.md delete mode 100644 inlang/packages/paraglide-sveltekit/example/messages/de.json delete mode 100644 inlang/packages/paraglide-sveltekit/example/messages/en.json delete mode 100644 inlang/packages/paraglide-sveltekit/example/package.json delete mode 100644 inlang/packages/paraglide-sveltekit/example/project.inlang/.gitignore delete mode 100644 inlang/packages/paraglide-sveltekit/example/project.inlang/project_id delete mode 100644 inlang/packages/paraglide-sveltekit/example/project.inlang/settings.json delete mode 100644 inlang/packages/paraglide-sveltekit/example/src/app.d.ts delete mode 100644 inlang/packages/paraglide-sveltekit/example/src/app.html delete mode 100644 inlang/packages/paraglide-sveltekit/example/src/hooks.js delete mode 100644 inlang/packages/paraglide-sveltekit/example/src/hooks.server.js delete mode 100644 inlang/packages/paraglide-sveltekit/example/src/lib/i18n.js delete mode 100644 inlang/packages/paraglide-sveltekit/example/src/lib/ui/Header.svelte delete mode 100644 inlang/packages/paraglide-sveltekit/example/src/lib/ui/LanguageSwitcher.svelte delete mode 100644 inlang/packages/paraglide-sveltekit/example/src/lib/ui/styles.css delete mode 100644 inlang/packages/paraglide-sveltekit/example/src/params/int.js delete mode 100644 inlang/packages/paraglide-sveltekit/example/src/routes/+error.svelte delete mode 100644 inlang/packages/paraglide-sveltekit/example/src/routes/+layout.server.js delete mode 100644 inlang/packages/paraglide-sveltekit/example/src/routes/+layout.svelte delete mode 100644 inlang/packages/paraglide-sveltekit/example/src/routes/+page.svelte delete mode 100644 inlang/packages/paraglide-sveltekit/example/src/routes/about/+page.svelte delete mode 100644 inlang/packages/paraglide-sveltekit/example/src/routes/excluded/+page.svelte delete mode 100644 inlang/packages/paraglide-sveltekit/example/src/routes/matchall/page/+page.svelte delete mode 100644 inlang/packages/paraglide-sveltekit/example/src/routes/matchall/page/subpage/+page.svelte delete mode 100644 inlang/packages/paraglide-sveltekit/example/src/routes/redirect/+page.server.ts delete mode 100644 inlang/packages/paraglide-sveltekit/example/src/routes/redirect/+page.svelte delete mode 100644 inlang/packages/paraglide-sveltekit/example/src/routes/users/[id]/+page.svelte delete mode 100644 inlang/packages/paraglide-sveltekit/example/src/routes/users/[id]/edit/+page.server.ts delete mode 100644 inlang/packages/paraglide-sveltekit/example/src/routes/users/[id]/edit/+page.svelte delete mode 100644 inlang/packages/paraglide-sveltekit/example/svelte.config.js delete mode 100644 inlang/packages/paraglide-sveltekit/example/tsconfig.json delete mode 100644 inlang/packages/paraglide-sveltekit/example/vite.config.ts delete mode 100644 inlang/packages/paraglide-sveltekit/marketplace-manifest.json delete mode 100644 inlang/packages/paraglide-sveltekit/mocks/runtime.js delete mode 100644 inlang/packages/paraglide-sveltekit/package.json delete mode 100644 inlang/packages/paraglide-sveltekit/scripts/generate_meta.js delete mode 100644 inlang/packages/paraglide-sveltekit/src/cli/commands/inits.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/cli/index.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/cli/steps/addHandleHook.test.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/cli/steps/addHandleHook.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/cli/steps/addI18nFile.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/cli/steps/addParaglideJSComponent.test.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/cli/steps/addParaglideJSComponent.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/cli/steps/addRerouteFile.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/cli/steps/addVitePlugin.test.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/cli/steps/addVitePlugin.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/cli/steps/editAppHtmlFile.test.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/cli/steps/editAppHtmlFile.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/cli/steps/scanSvelteKitProject.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/cli/steps/updateAppTypes.test.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/cli/steps/updateAppTypes.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/cli/utils.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/constants.js delete mode 100644 inlang/packages/paraglide-sveltekit/src/constants.test.js delete mode 100644 inlang/packages/paraglide-sveltekit/src/meta.d.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/AlternateLinks.svelte delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/ParaglideJS.svelte delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/adapter.client.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/adapter.server.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/adapter.test.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/config/pathTranslations.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/exclude.test.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/exclude.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/hooks/handle.server.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/hooks/reroute.test.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/hooks/reroute.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/hooks/utils.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/index.client.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/index.server.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/internal/index.js delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/locals.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/strategy.test.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/strategy.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/utils/cookie.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/utils/diff-urls.test.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/utils/diff-urls.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/utils/external.test.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/utils/external.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/utils/normaliseBase.test.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/utils/normaliseBase.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/utils/path.test.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/utils/path.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/utils/route.test.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/utils/route.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/utils/text-dir.test.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/runtime/utils/text-dir.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/vite/config.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/vite/index.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/vite/preprocessor/index.test.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/vite/preprocessor/index.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/vite/preprocessor/precheck.test.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/vite/preprocessor/precheck.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/vite/preprocessor/rewrite.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/vite/preprocessor/types.d.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/ast.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/attributes-to-values.test.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/attributes-to-values.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/codegen.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/escape.ts delete mode 100644 inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/identifier.ts delete mode 100644 inlang/packages/paraglide-sveltekit/svelte.config.js delete mode 100644 inlang/packages/paraglide-sveltekit/tsconfig.json delete mode 100644 inlang/packages/paraglide-sveltekit/vitest.config.js diff --git a/inlang/packages/paraglide-sveltekit/.gitignore b/inlang/packages/paraglide-sveltekit/.gitignore deleted file mode 100644 index 7ea79793d9..0000000000 --- a/inlang/packages/paraglide-sveltekit/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -node_modules -.svelte-kit -dist -.vercel -src/meta.js -paraglide.d.ts \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/.prettierrc.json b/inlang/packages/paraglide-sveltekit/.prettierrc.json deleted file mode 100644 index aed7f76654..0000000000 --- a/inlang/packages/paraglide-sveltekit/.prettierrc.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "semi": false, - "useTabs": true, - "printWidth": 100, - "trailingComma": "es5", - "plugins": ["prettier-plugin-svelte"], - "overrides": [ - { - "files": "*.svelte", - "options": { - "parser": "svelte" - } - } - ] -} diff --git a/inlang/packages/paraglide-sveltekit/CHANGELOG.md b/inlang/packages/paraglide-sveltekit/CHANGELOG.md deleted file mode 100644 index 2f46149cf9..0000000000 --- a/inlang/packages/paraglide-sveltekit/CHANGELOG.md +++ /dev/null @@ -1,900 +0,0 @@ -# @inlang/paraglide-sveltekit - -## 0.15.5 - -### Patch Changes - -- @inlang/paraglide-js@1.11.8 -- @inlang/paraglide-vite@1.3.5 - -## 0.15.4 - -### Patch Changes - -- @inlang/paraglide-vite@1.3.4 - -## 0.15.3 - -### Patch Changes - -- Updated dependencies - - @inlang/paraglide-js@1.11.7 - - @inlang/paraglide-vite@1.3.3 - -## 0.15.2 - -### Patch Changes - -- Updated dependencies [3123e85] - - @inlang/paraglide-js@1.11.6 - - @inlang/paraglide-vite@1.3.2 - -## 0.15.1 - -### Patch Changes - -- Updated dependencies - - @inlang/paraglide-js@1.11.5 - - @inlang/paraglide-vite@1.3.1 - -## 0.15.0 - -### Minor Changes - -- 88b87b9: Updates internal components to Svelte 5 rune syntax. Closes https://github.com/opral/inlang-paraglide-js/issues/262 and fixes https://github.com/opral/inlang-paraglide-js/issues/272. - -## 0.14.0 - -### Minor Changes - -- 80727ee: Add `experimentalUseVirtualModules` option to use the `$paraglide` virtual module instead of writing files to disk. Closes https://github.com/opral/inlang-paraglide-js/issues/264 - - - good for projects that can't have `allowJs: true` in their TypeScript config https://github.com/opral/inlang-paraglide-js/issues/238 - - less clutter in the compiled output directory https://github.com/opral/inlang-paraglide-js/issues/189 - - ```diff - import { paraglide } from "@inlang/paraglide-sveltekit/vite" - import { defineConfig } from "vite" - - export default defineConfig({ - plugins: [ - paraglide({ - project: "./project.inlang", - outdir: "./src/lib/paraglide", - + experimentalUseVirtualModules: true, - }), - // ... other vite plugins - ], - }) - ``` - - The compiled output will only emit the `runtime.d.ts` and `messages.d.ts` files. - - ```diff - . - └── src/ - └── paraglide/ - - ├── messages/ - - │ ├── de.js - - │ ├── en.js - - │ ├── fr.js - - │ └── ... - - ├── messages.js - + ├── messages.d.ts - - └── runtime.js - + ├── runtime.d.ts - ``` - -### Patch Changes - -- Updated dependencies [80727ee] - - @inlang/paraglide-vite@1.3.0 - -## 0.13.1 - -### Patch Changes - -- reverts 0.13.0 because it leads to a crash in production https://github.com/opral/inlang-paraglide-js/issues/272 - -## 0.13.0 - -### Minor Changes - -- 1ea4bd8: Svelte 5 runes are used in the Paraglide component. Closes https://github.com/opral/inlang-paraglide-js/issues/262 - -## 0.12.1 - -### Patch Changes - -- 7857f62: fixes "`a11y-missing-attribute` is no longer valid — please use `a11y_missing_attribute` instead" - - https://github.com/opral/inlang-paraglide-js/issues/259 - -## 0.12.0 - -### Minor Changes - -- ca227dd: Add Vary header to redirects that invalidate cache if the cookie or accept language header changes. - -### Patch Changes - -- @inlang/paraglide-vite@1.2.77 - -## 0.11.5 - -### Patch Changes - -- bc1e49e: Fixes a silent runtime bug for load functions that depent on paraglide. See https://github.com/opral/monorepo/pull/3184 and https://discord.com/channels/897438559458430986/1297558489182375978/1297645584210985021. - - It's a regression bug of `0.11.2` and `0.11.3`. - -## 0.11.4 - -### Patch Changes - -- https://github.com/opral/monorepo/pull/3183 - -## 0.11.3 - -### Patch Changes - -- 559bc44: Fixed https://github.com/opral/inlang-paraglide-js/issues/243. - - Regression bug after 0.11.1 release. The cookie has been renamed from `paraglide:lang` to `paraglide_lang` but the SvelteKit load function was not updated from the old cookie name. - -## 0.11.2 - -### Patch Changes - -- @inlang/paraglide-vite@1.2.76 - -## 0.11.1 - -### Patch Changes - -- f8565fa: Fixes https://github.com/opral/inlang-paraglide-js/issues/234. - - Paraglide SvelteKit used the cookie name `paraglide:lang` which is - not compliant with rfc6265 standards for cookie names. SvelteKit - recently introduced strict cookie parsing which caused - `paraglide:lang` to be rejected. - - The cookie name has been updated to `paraglide_lang` to be compliant. - - ```diff - -paraglide:lang - +paraglide_lang - ``` - -- Updated dependencies [e04d5fe] -- Updated dependencies [a1ea1ff] -- Updated dependencies [fa42a3a] - - @inlang/paraglide-js@1.11.3 - - @inlang/paraglide-vite@1.2.75 - -## 0.11.0 - -### Minor Changes - -- 82581f7: Adds a `disableAsyncLocalStorage` option to `i18n.handle`. This allows you to opt out of using the experimental `AsyncLocalStorage` API. - - **Warning** - Disabling `AsyncLocalStorage` removes the protection against concurrent requests overriding each other's language state. - - Only opt out if `AsyncLocalStorage` if you are certain your environment does not handle concurrent requests in the same process. For example in Vercel Edge functions or Cloudflare Workers. - - In environments where only one request is processed in a given process disabling `AsyncLocalStorage` can yield performance gains. - - **Example** - - ```ts - // src/hooks.server.js - import { i18n } from "$lib/i18n" - - export const handle = i18n.handle({ - disableAsyncLocalStorage: true, // @default = false - }) - ``` - -### Patch Changes - -- 72b2f34: fix: Preserve query parameters when redirecting ([inlang-paraglide-js#168](https://github.com/opral/inlang-paraglide-js/issues/168)) - - `i18n.handle` redirects requests if the pathname does not fit the detected language. Previously this would remove any query parameters from the URL. This is no longer the case. - - ```ts - redirect(303, "/login?from=/home") // will be redirected to //login?from=/home - ``` - -- Updated dependencies [59c8b11] - - @inlang/paraglide-js@1.11.2 - - @inlang/paraglide-vite@1.2.74 - -## 0.10.10 - -### Patch Changes - -- Updated dependencies [14d80b3] - - @inlang/paraglide-js@1.11.1 - - @inlang/paraglide-vite@1.2.73 - -## 0.10.9 - -### Patch Changes - -- cf4019d: remove `console.log` statement that managed to slip by linting - -## 0.10.8 - -### Patch Changes - -- 5ec62a4: Fixes a couple issues with the base-path during prerendering - - SSRd language during prerendering is now correct when using a base-path - - Alternate links are correctly generated during prerendering - -## 0.10.7 - -### Patch Changes - -- Updated dependencies [e37eabf] - - @inlang/paraglide-js@1.11.0 - - @lix-js/client@2.2.1 - - @inlang/paraglide-vite@1.2.72 - -## 0.10.6 - -### Patch Changes - -- bcd894f: `init` command now generates the `src/lib` directory if it does not exist. Previously it would just crash - - @inlang/paraglide-js@1.10.1 - - @inlang/paraglide-vite@1.2.71 - -## 0.10.5 - -### Patch Changes - -- Updated dependencies [c5d145d] - - @inlang/paraglide-js@1.10.1 - - @inlang/paraglide-vite@1.2.70 - -## 0.10.4 - -### Patch Changes - -- Updated dependencies [33662e6] - - @inlang/paraglide-js@1.10.0 - - @inlang/paraglide-vite@1.2.69 - -## 0.10.3 - -### Patch Changes - -- @inlang/paraglide-js@1.9.1 -- @inlang/paraglide-vite@1.2.68 - -## 0.10.2 - -### Patch Changes - -- b5d4a4c: fix regression with `exclude` option - -## 0.10.1 - -### Patch Changes - -- ecef103: fix how `AsyncLocalStorage` is handled accross requests - -## 0.10.0 - -### Minor Changes - -- 928742b: Make `languageTag()` and message functions available in server-side load function. - - This eliminates the need for - - - `event.locals.paraglide.lang` anywhere. - - Manually passing the language tag to message functions that are used in load functions / actions. - -## 0.9.7 - -### Patch Changes - -- @inlang/paraglide-js@1.9.1 -- @inlang/paraglide-vite@1.2.67 - -## 0.9.6 - -### Patch Changes - -- 1ea7b14: Explicitly mark `paraglide:lang` cookie as _not_ `HttpOnly`. - - @inlang/paraglide-js@1.9.1 - -## 0.9.5 - -### Patch Changes - -- 08a1e3f: Fix translation of hrefs that don't include a path. This is especially important with form actions. - -## 0.9.4 - -### Patch Changes - -- @inlang/paraglide-js@1.9.1 -- @inlang/paraglide-vite@1.2.66 - -## 0.9.3 - -### Patch Changes - -- def2d4e: fix: Also update the `paraglide:lang` cookie on the client to allow for better language negotiation - - @inlang/paraglide-js@1.9.1 - - @inlang/paraglide-vite@1.2.65 - -## 0.9.2 - -### Patch Changes - -- @inlang/paraglide-js@1.9.1 -- @inlang/paraglide-vite@1.2.64 - -## 0.9.1 - -### Patch Changes - -- f0192d2: Invalid `href`s in your app no longer cause errors to be thrown in ``. During development a warning is logged. -- 255fd41: The link preprocessor no longer crashes when encountering a file with a syntax error. Insetad it will log a warning & noop. Reporting the error is delegated to the main svelte parser. - -## 0.9.0 - -### Minor Changes - -- 76e7f20: Add the `ParaglideLocals` interface for properly typing paraglide's locals. It should be added in `app.d.ts` under `Locals.paraglide`. The `init` CLI will do this automatically -- 8db2224: Previously, if the default language was available on the root `/`, then it would still be available under `/[lang]`. This was never intended & no longer the case. - - If you still want this behavior set the `prefixDefaultLanguage` to `"always"` in your `i18n` config. - -### Patch Changes - -- 6319391: Fix: Excluded routes now use the default language instead of incorrecly attempting to detect the language form the URL - -## 0.8.7 - -### Patch Changes - -- @inlang/paraglide-js@1.9.1 -- @inlang/paraglide-vite@1.2.63 - -## 0.8.6 - -### Patch Changes - -- Updated dependencies [3b2e0a6] - - @lix-js/client@2.2.0 - - @inlang/paraglide-js@1.9.1 - - @inlang/paraglide-vite@1.2.62 - -## 0.8.5 - -### Patch Changes - -- Updated dependencies [548bc9e] - - @lix-js/client@2.1.0 - - @inlang/paraglide-js@1.9.1 - - @inlang/paraglide-vite@1.2.61 - -## 0.8.4 - -### Patch Changes - -- @inlang/paraglide-js@1.9.1 -- @lix-js/client@2.0.1 -- @inlang/paraglide-vite@1.2.60 - -## 0.8.3 - -### Patch Changes - -- Updated dependencies [00ad046] - - @lix-js/client@2.0.0 - - @inlang/paraglide-js@1.9.1 - - @inlang/paraglide-vite@1.2.59 - -## 0.8.2 - -### Patch Changes - -- @inlang/paraglide-vite@1.2.58 -- @inlang/paraglide-js@1.9.1 - -## 0.8.1 - -### Patch Changes - -- fbac297: Fix `bin` field in `package.json` - -## 0.8.0 - -### Minor Changes - -- 0bf4d74: Added an `@inlang/paraglide-sveltekit init` command to automatically add `paraglide-sveltekit` to your project - -### Patch Changes - -- 75cf8fd: Prompt about adding the VsCode extension and Github Action during `paraglide-sveltekit init` -- a27b7a4: This reintroduces reactivity to lint reports - see https://github.com/opral/monorepo/pull/2792 for more details -- Updated dependencies [b8573fa] - - @inlang/paraglide-js@1.9.1 - - @inlang/paraglide-vite@1.2.57 - -## 0.7.0 - -### Minor Changes - -- 3e9b863: Use Svelte 5 compiler in the preprocessor for rewriting links - -### Patch Changes - -- Updated dependencies [eb941fe] -- Updated dependencies [9566348] - - @inlang/paraglide-js@1.9.0 - - @inlang/paraglide-vite@1.2.56 - -## 0.6.23 - -### Patch Changes - -- @inlang/paraglide-js@1.8.0 -- @inlang/paraglide-vite@1.2.55 - -## 0.6.22 - -### Patch Changes - -- @inlang/paraglide-js@1.8.0 -- @inlang/paraglide-vite@1.2.54 - -## 0.6.21 - -### Patch Changes - -- @inlang/paraglide-js@1.8.0 -- @inlang/paraglide-vite@1.2.53 - -## 0.6.20 - -### Patch Changes - -- @inlang/paraglide-js@1.8.0 -- @inlang/paraglide-vite@1.2.52 - -## 0.6.19 - -### Patch Changes - -- 1e5320e: Protect against the preprocessor being applied twice - -## 0.6.18 - -### Patch Changes - -- @inlang/paraglide-js@1.8.0 -- @inlang/paraglide-vite@1.2.51 - -## 0.6.17 - -### Patch Changes - -- @inlang/paraglide-vite@1.2.50 - -## 0.6.16 - -### Patch Changes - -- @inlang/paraglide-js@1.8.0 -- @inlang/paraglide-vite@1.2.49 - -## 0.6.15 - -### Patch Changes - -- Updated dependencies [21ab0a0] -- Updated dependencies [21ab0a0] - - @inlang/paraglide-js@1.8.0 - - @inlang/paraglide-vite@1.2.48 - -## 0.6.14 - -### Patch Changes - -- 419d8b6: Fix issue where the localised routing didn't always use the most specific pathname as outlined in https://kit.svelte.dev/docs/advanced-routing#sorting -- Updated dependencies [32cbe48] - - @inlang/paraglide-js@1.7.3 - - @inlang/paraglide-vite@1.2.47 - -## 0.6.13 - -### Patch Changes - -- @inlang/paraglide-js@1.7.2 -- @inlang/paraglide-vite@1.2.46 - -## 0.6.12 - -### Patch Changes - -- @inlang/paraglide-js@1.7.2 -- @inlang/paraglide-vite@1.2.45 - -## 0.6.11 - -### Patch Changes - -- Updated dependencies [6105a50] - - @inlang/paraglide-js@1.7.2 - - @inlang/paraglide-vite@1.2.44 - -## 0.6.10 - -### Patch Changes - -- @inlang/paraglide-js@1.7.1 -- @inlang/paraglide-vite@1.2.43 - -## 0.6.9 - -### Patch Changes - -- Updated dependencies [4d24188] - - @inlang/paraglide-js@1.7.1 - - @inlang/paraglide-vite@1.2.42 - -## 0.6.8 - -### Patch Changes - -- @inlang/paraglide-js@1.7.0 -- @inlang/paraglide-vite@1.2.41 - -## 0.6.7 - -### Patch Changes - -- Updated dependencies [0774c1a] - - @inlang/paraglide-js@1.7.0 - - @inlang/paraglide-js-adapter-vite@1.2.40 - -## 0.6.6 - -### Patch Changes - -- cee4692: Use index accesses instead of `.at` function for better compatability with legacy browsers -- 4b631aa: Update invalid type-declarations -- Updated dependencies [cee4692] -- Updated dependencies [4b631aa] -- Updated dependencies [3c7a87c] -- Updated dependencies [ab1fe48] - - @inlang/paraglide-js@1.6.2 - - @inlang/paraglide-js-adapter-vite@1.2.39 - -## 0.6.5 - -### Patch Changes - -- Updated dependencies [fa6aa31] -- Updated dependencies [dee5aa6] - - @inlang/paraglide-js@1.6.1 - - @inlang/paraglide-js-adapter-vite@1.2.38 - -## 0.6.4 - -### Patch Changes - -- Updated dependencies [462325b] - - @inlang/paraglide-js@1.6.0 - - @inlang/paraglide-js-adapter-vite@1.2.37 - -## 0.6.3 - -### Patch Changes - -- @inlang/paraglide-js-adapter-vite@1.2.36 - -## 0.6.2 - -### Patch Changes - -- cdbb415: Fix crash when switching languages on a route tthat ends with a `[...rest]` parameter when there is a trailing slash - -## 0.6.1 - -### Patch Changes - -- a4d4e10: Fix crashe when navigating to `/{lang}/` with `trailingSlash="always"` - -## 0.6.0 - -### Minor Changes - -- 1642873: Param Matchers are now supported. They can be passed to `createI18n` alongside `pathnames` with the `matchers` option. -- ce0b961: Wildcard and optional parameters are now supported for translated pathnames - -### Patch Changes - -- 690656e: Trailing Slashes are now preserverd more reliably if present - - @inlang/paraglide-js-adapter-vite@1.2.35 - -## 0.5.22 - -### Patch Changes - -- @inlang/paraglide-js-adapter-vite@1.2.34 - -## 0.5.21 - -### Patch Changes - -- @inlang/paraglide-js-adapter-vite@1.2.33 - -## 0.5.20 - -### Patch Changes - -- @inlang/paraglide-js-adapter-vite@1.2.32 - -## 0.5.19 - -### Patch Changes - -- @inlang/paraglide-js-adapter-vite@1.2.31 - -## 0.5.18 - -### Patch Changes - -- @inlang/paraglide-js-adapter-vite@1.2.30 - -## 0.5.17 - -### Patch Changes - -- @inlang/paraglide-js-adapter-vite@1.2.29 - -## 0.5.16 - -### Patch Changes - -- @inlang/paraglide-js-adapter-vite@1.2.28 - -## 0.5.15 - -### Patch Changes - -- @inlang/paraglide-js-adapter-vite@1.2.27 - -## 0.5.14 - -### Patch Changes - -- d052495: fix: Log filename when warning about using `` tags in the same file as `` - - @inlang/paraglide-js-adapter-vite@1.2.26 - -## 0.5.13 - -### Patch Changes - -- @inlang/paraglide-js-adapter-vite@1.2.25 - -## 0.5.12 - -### Patch Changes - -- @inlang/paraglide-js-adapter-vite@1.2.24 - -## 0.5.11 - -### Patch Changes - -- ef4e0ab: fix: preserve trailing slash when translating hrefs - - @inlang/paraglide-js-adapter-vite@1.2.23 - -## 0.5.10 - -### Patch Changes - -- @inlang/paraglide-js-adapter-vite@1.2.22 - -## 0.5.9 - -### Patch Changes - -- @inlang/paraglide-js-adapter-vite@1.2.21 - -## 0.5.8 - -### Patch Changes - -- 62e4a5c: Add warning message if an `` tag is used in the same component as `` since they can't be translated - - @inlang/paraglide-js-adapter-vite@1.2.20 - -## 0.5.7 - -### Patch Changes - -- @inlang/paraglide-js-adapter-vite@1.2.19 - -## 0.5.6 - -### Patch Changes - -- bce060367: fix: make `svelte` a peer dependency - - @inlang/paraglide-js-adapter-vite@1.2.18 - -## 0.5.5 - -### Patch Changes - -- @inlang/paraglide-js-adapter-vite@1.2.17 - -## 0.5.4 - -### Patch Changes - -- 5d25b889a: log warning if the `lang` attribute isn't updated in `src/app.html` - -## 0.5.3 - -### Patch Changes - -- 726690acb: fix: Disable some lint errors when internally rewriting links with the spread syntax to avoid annoying logs (https://discord.com/channels/897438559458430986/1070750156644962434/1212320293578874880) - -## 0.5.2 - -### Patch Changes - -- @inlang/paraglide-js-adapter-vite@1.2.16 - -## 0.5.1 - -### Patch Changes - -- a7b593e9a: fix: double-execution of `load` on initial load - -## 0.5.0 - -### Minor Changes - -- e4e879c77: feat: Automatically call `invalidate("paraglide:lang")` when the language changes. You can now call `depends("paraglide:lang")` in your server-load functions to have them re-run on language changes. - -### Patch Changes - -- 7f566ae73: fix reactivity issue in Svelte 5 [#2270](https://github.com/opral/monorepo/issues/2270) -- 21a3890cc: fix: Corrected comments saying the default placeholder for the text-direction is `%paraglide.dir%` when it's `%paraglide.textDirection%` -- 37a247c0e: fix: `i18n.resolveRoute` now ignores paths that don't start with the base -- 37a247c0e: fix: Alternate links will not include the origin during prerendering, unless one is explicitly specified in `kit.prerender.origin` - -## 0.4.1 - -### Patch Changes - -- @inlang/paraglide-js-adapter-vite@1.2.15 - -## 0.4.0 - -### Minor Changes - -- 45f5d8256: Message function can now be used as pathname translations - -## 0.3.7 - -### Patch Changes - -- @inlang/paraglide-js-adapter-vite@1.2.14 - -## 0.3.6 - -### Patch Changes - -- @inlang/paraglide-js-adapter-vite@1.2.13 - -## 0.3.5 - -### Patch Changes - -- eaef718ee: Treeshake away `i18n.handle` on the client to reduce bundle size - -## 0.3.4 - -### Patch Changes - -- 3aa1b6ca3: fix [#2717](https://github.com/opral/monorepo/issues/2171) - Link rewrite reactivity issue when navigating between pages - - @inlang/paraglide-js-adapter-vite@1.2.12 - -## 0.3.3 - -### Patch Changes - -- 0efbc35c5: The `href` attribute on `` component to `seo` option on `createI18n` -- 021ae3e80: feat: Add `textDirection` option to `createI18n` for text-direction. If omitted, an automatically detected text-direction will be used. - -### Patch Changes - -- da9b91ff4: fix: Rewrite {...spreadAttributes} -- cfa1b0175: fix: Crawl `{:else}`, `{:then}` and `{:catch}` blocks for links to rewrite -- cfa1b0175: fix: Rewrite attributes on `` - -## 0.2.5 - -### Patch Changes - -- @inlang/paraglide-js-adapter-vite@1.2.10 - -## 0.2.4 - -### Patch Changes - -- @inlang/paraglide-js-adapter-vite@1.2.9 - -## 0.2.3 - -### Patch Changes - -- 0305ce54e: fix broken globbing for `exclude` option causing the wrong routes to be excluded - -## 0.2.2 - -### Patch Changes - -- 6ac6e3be9: fix: make `exclude` option optional - -## 0.2.1 - -### Patch Changes - -- 117c684d0: fix base resolution issue in `route` - -## 0.2.0 - -### Minor Changes - -- 87135ae38: Rename `route` to `resolveRoute` and `getCanonicalPath` to `route` - As to be more inline with SvelteKit's naming convention - -### Patch Changes - -- 87135ae38: fix base-path normalisation issue - -## 0.1.2 - -### Patch Changes - -- @inlang/paraglide-js-adapter-vite@1.2.8 - -## 0.1.1 - -hotfix: Build unbuilt TypeScript so that the package can be used in non-TypeScript projects. - -## 0.1.0 - -First public prerelease of the SvelteKit adapter for Paraglide. diff --git a/inlang/packages/paraglide-sveltekit/README.md b/inlang/packages/paraglide-sveltekit/README.md deleted file mode 100644 index 0717cc5338..0000000000 --- a/inlang/packages/paraglide-sveltekit/README.md +++ /dev/null @@ -1,85 +0,0 @@ -[![Inlang-ecosystem compatibility badge](https://cdn.jsdelivr.net/gh/opral/monorepo@main/inlang/assets/md-badges/inlang.svg)](https://inlang.com) - -## Getting Started - -Get started instantly with the Paraglide-SvelteKit CLI. - -```bash -npx @inlang/paraglide-sveltekit init -npm install -``` - -The CLI will ask you which languages you want to support. This can be changed later. - -- Create an [Inlang Project](https://inlang.com/documentation/concept/project) -- Create translation files for each of your languages -- Add necessary Provider Components and files -- Update your `vite.config.js` file to use the Paraglide-SvelteKit Plugin. - -You can now start your development server and visit `/de`, `/ar`, or whatever languages you've set up. - -## Creating Messages - -Your messages live in `messages/{languageTag}.json` files. You can add messages in these files as key-value pairs of the message ID and the translations. - -Use curly braces to add parameters. - -```json -// messages/en.json -{ - // The $schema key is automatically ignored - "$schema": "https://inlang.com/schema/inlang-message-format", - - "hello_world": "Hello World!", - "greetings": "Greetings {name}." -} -``` - -Learn more about the format in the [Inlang Message Format Documentation](https://inlang.com/m/reootnfj/plugin-inlang-messageFormat). - -Note: _All_ messages you use in your project must be added to these files. It is not possible to dynamically add more messages at runtime. - -## Using messages in Code - -The Paraglide compiler will generate a `src/lib/paraglide/messages.js` file that contains your messages. Import messages from there. By convention, a wildcard import is used. - -```svelte - - -

{m.homepage_title()}

-

{m.homepage_subtitle({ some: "param" })}

-``` - -Only messages used on the current page are sent to the client. Any messages that aren't used on the current page will be tree-shaken out. - -## Accessing Language in Code - -You can access the current language with the `languageTag()` function. - -```svelte - - -

{languageTag()}

-``` - -On the server `languageTag()` is scoped to the current request, there is no danger of multiple requests interfering. `languageTag()` can safely be called in server-load functions and form actions. - -## Language detection - -The language is determined based on the URL. If the first segment of the URL is a language tag, that language will be used. If no language tag is present, the default language will be used. - -- `/about` - English -- `/de/about` - German - -The `reroute` hook in `src/hooks.js` (added automatically) automatically rewrites requests that include the language in the URL to the correct page. There is **no need** to modify your routes to add a `[locale]` segment. - -```fs -src/ - routes/ - +layout.svelte - +page.svelte -``` \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/assets/header.png b/inlang/packages/paraglide-sveltekit/assets/header.png deleted file mode 100644 index 167deb5873552b6dbc67fcdc0c4389d37c35ace3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 287277 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

Y*p4tD4ZiZ^(#?UY#)O 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

*UsHv}|k3}*R7@wGLF21i%i+%(OADpBs$ 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ⓈL=qXL-hX5*~l_DSDul^ZdNHGX&Yi!5pq4>4_ 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 o8IHAX^ou`Xj;;=M(9j$I3lB!v;{X5v diff --git a/inlang/packages/paraglide-sveltekit/bin/run.js b/inlang/packages/paraglide-sveltekit/bin/run.js deleted file mode 100755 index d4f1a6f1cf..0000000000 --- a/inlang/packages/paraglide-sveltekit/bin/run.js +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env node -import { cli } from "../dist/cli/index.js" - -cli.parse() diff --git a/inlang/packages/paraglide-sveltekit/docs/advanced-usage.md b/inlang/packages/paraglide-sveltekit/docs/advanced-usage.md deleted file mode 100644 index 517cbf2012..0000000000 --- a/inlang/packages/paraglide-sveltekit/docs/advanced-usage.md +++ /dev/null @@ -1,66 +0,0 @@ -# Advanced Setup - -## Excluding certain routes - -> ⚠️ The `exclude` option has been reported as buggy. -> -> If you encounter any issues with it, please open a PR that fixes/ -> improves the exlusion mechanism. A PR will be reviewed promptly. - -Exclude routes from being translated with the `exclude` option. - -```js -// src/lib/i18n.js -import { createI18n } from "@inlang/paraglide-sveltekit" -import * as runtime from "$lib/paraglide/runtime.js" - -export const i18n = createI18n(runtime, { - // don't include the /api/ routes - // this matches any route that starts with /api/ - exclude: [/^\/api\//], -}) -``` - -Excluded routes will: -- Not have any `rel="alternate"` links added to them -- Not have their Paths translated -- Not have links pointing to them translated - -Make sure excluded pages are still wrapped in the `` so that outgoing links are still translated. - -## Text direction - -Paraglide guesses the text direction using the `Intl.Locale` API. This is not supported in all runtimes. Use the `textDirection` option to provide the text direction yourself. - -```js -// src/lib/i18n.js -import { createI18n } from "@inlang/paraglide-sveltekit" -import * as runtime from "$lib/paraglide/runtime.js" - -export const i18n = createI18n(runtime, { - textDirection: { - en: "ltr", - ar: "rtl", - }, -}) -``` - -## Full URLs in `` tags - -According to the spec, alternate links for pages must be full URLs. Do this by setting the `prerender.origin` option in your svelte.config.js. - -```ts -// svelte.config.js - -/** @type {import('@sveltejs/kit').Config} */ -const config = { - kit: { - // ... - prerender: { - origin: "https://example.com", - }, - }, -} - -export default config -``` \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/docs/deployment.md b/inlang/packages/paraglide-sveltekit/docs/deployment.md deleted file mode 100644 index aa8cd319dd..0000000000 --- a/inlang/packages/paraglide-sveltekit/docs/deployment.md +++ /dev/null @@ -1,38 +0,0 @@ -# Deployment - -Deploying a SvelteKit App using `Paraglide-Sveltekit` is usually no different than deploying a normal SvelteKit App. - -However, there are some considerations you may want to take with certain hosting providers. - -## Serverless Providers - -`Paraglide-SvelteKit` makes use of `AsyncLocalStorage` to keep track of the language on the server without introducing cross-talk between concurrent requests. - -Serverless providers usually spawn an instance of the server for _each_ request, so this isn't necessary. To improve performance you can disable it. - -```ts -// src/hooks.server.js -import { i18n } from "$lib/i18n" - -export const handle = i18n.handle({ - disableAsyncLocalStorage: true, // @default = false -}) -``` - -## Deployment on Cloudflare - -`Paraglide-SvelteKit` makes use of `AsyncLocalStorage`. `AsyncLocalStorage` is supported on Cloudflare, but you need to enable the `nodejs_als` feature flag in `wrangler.toml`. - -```toml -compatibility_flags = [ "nodejs_als" ] -``` - -## Issues on Vercel - -SvelteKit's `reroute` hook currently doens't play well with Vercel (see [sveltejs/kit#11879](https://github.com/sveltejs/kit/issues/11879)), which means that we need to slightly adapt the setup to make it work when deployed to Vercel. - -1. Remove the `reroute` hook from `src/hooks.js` -2. Move the routes you want to localize `routes` into a `[[locale]]` folder -3. Don't use translated `pathnames` - -We are working on contributing a fix for [sveltejs/kit#11879](https://github.com/sveltejs/kit/issues/11879), so this workaround will hopefully not be needed much longer. diff --git a/inlang/packages/paraglide-sveltekit/docs/localised-routing.md b/inlang/packages/paraglide-sveltekit/docs/localised-routing.md deleted file mode 100644 index 4b9ac2a3bb..0000000000 --- a/inlang/packages/paraglide-sveltekit/docs/localised-routing.md +++ /dev/null @@ -1,193 +0,0 @@ ---- -title: Localised Routing -description: Learn how the localised routing works in Paraglide-SvelteKit, how to use translated pathnames and how to do language negotiation. ---- - -# Localised Routing - -### Translated Paths - -You can have different paths for each language with the `pathnames` option. Don't include the language or the [base path](https://kit.svelte.dev/docs/configuration#paths). - -- `/about` for English (default language) -- `/de/uber-uns` for German -- `/fr/a-propos` for French - -```js -// src/lib/i18n.js -import { createI18n } from "@inlang/paraglide-sveltekit" -import * as runtime from "$lib/paraglide/runtime.js" -import * as m from "$lib/paraglide/messages.js" -import { match as int } from "../params/int.js" - -export const i18n = createI18n(runtime, { - pathnames: { - "/about" : { - en: "/about", - de: "/uber-uns", - fr: "/a-propos", - }, - - // You can use parameters - // All translations must use identical parameters and names - "/user/[id=int]/[...rest]" : { - en: "/user/[id=int]/[...rest]", - de: "/benutzer/[id=int]/[...rest]", - fr: "/utilisateur/[id=int]/[...rest]", - }, - // Instead of a map, you can also pass a message-function reference - "/admin" : m.admin_path - } - - // If you're using matchers in the pathnames, you need to pass them - matchers: { int } -}) -``` - -By default the default language is located on your base path. Usually `/`. Unlike the other languages it does not have a language prefix. - -This reflects the default `prefixDefaultLanguage: "never"` behavior. - -If you want to also have a prefix for the default language, use the `prefixDefaultLanguage: "always"` option. - -```ts -// src/lib/i18n.js -export const i18n = createI18n(runtime, { - prefixDefaultLanguage: "always", -}) -``` - -This does make it ambigous which language should be used on `/` so language negotiation will kick in. - -### Language Negotiation - -Whenever the language cannot be determined from the URL alone the language negotiation is triggered. This happens in the following steps: - -1. Check if the `paraglide_lang` cookie is set from previous visits, if so, use it -2. Negotiate the language from the `Accept-Language` header -3. Use the default language - -After language negotiation you will be redirected to include the language in the URL. - -### Changing the default Language - -Usually your default language is the same as the `sourceLanguageTag` of your Inlang Project, but it doesn't have to be. - -You can change it by passing a `defaultLanguageTag` option to `createI18n` - -```ts -// src/lib/i18n.js - -// sourceLanguageTag = "en" -export const i18n = createI18n(runtime, { - defaultLanguageTag: "de", -}) -``` - -## Automatic Link Localisation - -`Paraglide-Sveltekit` automatically translates links on your components using a preprocessor. This affects: - -- `href` attributes on `a` tags -- `formaction` attributes on `button` tags -- `action` attributes on `form`s - -> If you have other attributes that you want to be translated [open an issue](https://www.github.com/opral/inlang-paraglide-js/issues). - - -### Link Translations - -```svelte -{m.about()} - - - -{m.about()} -{m.about()} -{m.about()} -``` - -If you want a link to be translated into a _specific_ language set the `hreflang` attribute. - -```svelte -{m.about()} - - -{m.about()} -``` - -Opt-out of translation by adding a `data-no-translate` attribute. - -```svelte - -{m.about()} -``` - -### Programmatic Navigation with Translated Paths - -SvelteKit's `goto` and `redirect` cannot be translated automatically. Localize the URLs you pass to them with `i18n.resolveRoute()`. - -```js -import { i18n } from '$lib/i18n.js' -import { redirect } from '@sveltejs/kit' -import { goto } from '$app/navigation' - -redirect(i18n.resolveRoute("/about", "en")) - -//Omitting the language argument uses the current languageTag() -goto(i18n.resolveRoute("/about")) -``` - -### Language Switchers - -Language switchers are tricky because we need to dynamically translate the current URL path, which is itself translated. We need to get the untranslated version of the current path & translate it into the target language. - - - - -You can get the untranslated path using `i18n.route()` - -```ts -// $page.url.pathname = "/base/de/uber-uns" -const route = i18n.route($page.url.pathname) -// route = "/base/about" -``` - -Use this to create a language switcher. - -```svelte - - -{#each availableLanguageTags as lang} - - - {lang} - -{/each} -``` - -## Re-Loading Language-Dependent data - -If you have a `load` function that returns data that depends on the language you can tell it to re-run on language changes by calling `depends("paraglide:lang")`. - -```ts -// src/routes/+page.server.js -export async function load({ depends }) { - // Paraglide-SvelteKit automatically calls `invalidate("paraglide:lang")` whenever the langauge changes - // This tells SvelteKit to re-run this function whenever that happens - depends("paraglide:lang") - return await myLanguageSpecificData(); -} -``` - -Paraglide-SvelteKit automatically calls `invalidate("paraglide:lang")` when the language changes. diff --git a/inlang/packages/paraglide-sveltekit/docs/manual-setup.md b/inlang/packages/paraglide-sveltekit/docs/manual-setup.md deleted file mode 100644 index 465cf120fc..0000000000 --- a/inlang/packages/paraglide-sveltekit/docs/manual-setup.md +++ /dev/null @@ -1,140 +0,0 @@ -# Manual Setup - -The recommended way to set up `paraglide-sveltekit` is to use the `init` cli. However, we stil maintain a manual setup page in case the auotmated setup fails or cannot be used for some reason. - -### 1. Install dependencies - -Install [ParaglideJS](https://inlang.com/m/gerre34r/library-inlang-paraglideJs) and [Paraglide-SvelteKit](https://inlang.com/m/dxnzrydw/paraglide-sveltekit-i18n). - -```bash -npx @inlang/paraglide-js init -npm i -D @inlang/paraglide-sveltekit -``` - -This will generate a `messages/{lang}.json` file for each of your languages. This is where your translation files live. - -### 2. Add the Vite Plugin - -Add the vite-plugin to your `vite.config.js` file. This will make sure to rerun the paraglide compiler when needed and add the link preprocessor. - -```js -// vite.config.js -import { paraglide } from "@inlang/paraglide-sveltekit/vite" - -export default defineConfig({ - plugins: [ - paraglide({ - //recommended - project: "./project.inlang", - outdir: "./src/lib/paraglide", - }), - sveltekit(), - ], -}) -``` - -### 3. Initialise Paraglide-SvelteKit - -Create a `src/lib/i18n.js` file: - -```js -// src/lib/i18n.js -import { createI18n } from "@inlang/paraglide-sveltekit" -import * as runtime from "$lib/paraglide/runtime.js" - -export const i18n = createI18n(runtime); -``` - -`createI18n` will be your one-stop shop for configuring i18n routing. - - - - -### 4. Add the Language Provider to your Layout - -Add the `ParaglideJS` component to your layout and pass it the `i18n` instance. - -If you're using Svelte 4 do it like so: -```svelte - - - - - - -``` - -or if you're using Svelte 5: - -```svelte - - - - - {@render children} - -``` - -### 5. Add the Hooks - -In your `src/hooks.js` file, use the `i18n` instance to add the `reroute` hook: - -```js -// src/hooks.js -import { i18n } from '$lib/i18n.js' -export const reroute = i18n.reroute() -``` - -> The reroute hook was added in SvelteKit 2.3.0 - -In `src/hooks.server.js` add the handle hook. - -```js -// src/hooks.server.js -import { i18n } from '$lib/i18n.js' -export const handle = i18n.handle() -``` - -This will make the language and text-direction on `event.locals.paraglide`. -To set the `lang` and `dir` attributes on your `` tag add placeholders in `src/app.html`. These placeholders will be replaced by the `handle` hook. - -```html - - -``` - -### 6. Add Types for `event.locals.paraglide` - -In `src/app.d.ts` - -```ts -// src/app.d.ts -import type { AvailableLanguageTag } from "$lib/paraglide/runtime" -import type { ParaglideLocals } from "@inlang/paraglide-sveltekit" - -declare global { - namespace App { - interface Locals { - paraglide: ParaglideLocals - } - // ... - } -} - -export {} -``` - -## Go try it out! - -Visit `/` to see your default language, and `/{lang}` to see other languages. All links should be translated automatically. - diff --git a/inlang/packages/paraglide-sveltekit/docs/roadmap.md b/inlang/packages/paraglide-sveltekit/docs/roadmap.md deleted file mode 100644 index 968442b655..0000000000 --- a/inlang/packages/paraglide-sveltekit/docs/roadmap.md +++ /dev/null @@ -1,40 +0,0 @@ -# Roadmap & Caveats - -- Translated parameters -- Domain Based routing -- Fix the Caveats - -# Caveats - -1. Links in the same Layout Component as `` will not be translated. This will also log a warning in development. -2. Messages are not reactive. Don't use them in server-side module scope. -3. Side effects triggered by `data` will run on language changes even if the data didn't change. If the data is language-dependent the side effect will run twice. -4. The `languageTag` function cannot be used inside param matchers. - -## Using messages in `+layout.svelte` - -The language state gets set when the `` component is mounted. Since you usually place it inside `+layout.svelte` using messages in the layout's ` - - - - - -``` - -## Issues on Vercel - -SvelteKit's `reroute` hook currently doens't play well with Vercel (see [sveltejs/kit#11879](https://github.com/sveltejs/kit/issues/11879)), which means that we need to slightly adapt the setup to make it work when deployed to Vercel. - -1. Remove the `reroute` hook from `src/hooks.js` -2. Move the routes you want to localize `routes` into a `[[locale]]` folder -3. Don't use translated `pathnames` - -We are working on contributing a fix for [sveltejs/kit#11879](https://github.com/sveltejs/kit/issues/11879), so this workaround will hopefully not be needed much longer. diff --git a/inlang/packages/paraglide-sveltekit/docs/why-paraglide.md b/inlang/packages/paraglide-sveltekit/docs/why-paraglide.md deleted file mode 100644 index 9be8171eb5..0000000000 --- a/inlang/packages/paraglide-sveltekit/docs/why-paraglide.md +++ /dev/null @@ -1,39 +0,0 @@ -![Dead Simple i18n. Typesafe, Small Footprint, SEO-Friendly and, with an IDE Integration.](https://cdn.jsdelivr.net/gh/opral/monorepo@inlang-v1/inlang/source-code/paraglide/paraglide-sveltekit/assets/og.png) - - - - - - - -`@inlang/paraglide-sveltekit` is the easiest way to internationalize your SvelteKit Project. It handles string translations, i18n routing and more! - -Thanks to Paraglide's Treeshakeable messages only messages that are _used_ on the _current page_ are part of the JS bundle. This results in the smallest size with the exception that Paraglide JS loads all languages till [#88](https://github.com/opral/inlang-paraglide-js/issues/88) is solved. The inflection point of only bundling the used messages but for all languages is around 10-20 languages, dependent on the number of messages used. Read [scaling](https://inlang.com/m/gerre34r/library-inlang-paraglideJs/scaling) for more information. - -Paraglide-SvelteKit offers Localised routing with translated pathnames, without requiring a `[locale]` parameter in your routes. - -Links are automatically translated to the current language. Write ` - - - - - -# When is the SvelteKit adapter for Paraglide JS not the right choice? - -Warning: Progress on feature development for Paraglide SvelteKit in on hold until lix 1.0 is released. See [this post](https://opral.substack.com/p/focus-shift-from-inlang-to-lix). Pull requests for bugfixes will be reviewed and merged ASAP. - -- You don't want the route to contain the language tag (e.g. `/en/about`), see [Issue #217](https://github.com/opral/inlang-paraglide-js/issues/217). You can use [Paraglide JS](https://inlang.com/m/gerre34r/library-inlang-paraglideJs) (without an adapter) instead. -- Variant are not supported yet (pluralization, gendering) see [Issue #201](https://github.com/opral/inlang-paraglide-js/issues/201) -- You have more than 10 languages and care about minimum bundle sizes, see [Scaling](https://inlang.com/m/gerre34r/library-inlang-paraglideJs/scaling). A runtime based i18n library might be better for you until language splitting ships [issue #88](https://github.com/opral/inlang-paraglide-js/issues/88). - -## Playground - -Play around with it on [StackBlitz](https://stackblitz.com/~/github.com/lorissigrist/paraglide-sveltekit-example) - -[➡ Get started here](/m/dxnzrydw/paraglide-sveltekit-i18n/getting-started) \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/.gitignore b/inlang/packages/paraglide-sveltekit/example/.gitignore deleted file mode 100644 index d61b54c19a..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -.svelte-kit -build -node_modules -.vercel -dist -paraglide \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/CHANGELOG.md b/inlang/packages/paraglide-sveltekit/example/CHANGELOG.md deleted file mode 100644 index 1725578c0b..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/CHANGELOG.md +++ /dev/null @@ -1,659 +0,0 @@ -# @inlang/paraglide-sveltekit-example - -## 0.1.86 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.15.5 - -## 0.1.85 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.15.4 - -## 0.1.84 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.15.3 - -## 0.1.83 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.15.2 - -## 0.1.82 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.15.1 - -## 0.1.81 - -### Patch Changes - -- Updated dependencies [88b87b9] - - @inlang/paraglide-sveltekit@0.15.0 - -## 0.1.80 - -### Patch Changes - -- Updated dependencies [80727ee] - - @inlang/paraglide-sveltekit@0.14.0 - -## 0.1.79 - -### Patch Changes - -- Updated dependencies [1ea4bd8] - - @inlang/paraglide-sveltekit@0.13.0 - -## 0.1.78 - -### Patch Changes - -- Updated dependencies [7857f62] - - @inlang/paraglide-sveltekit@0.12.1 - -## 0.1.77 - -### Patch Changes - -- Updated dependencies [ca227dd] - - @inlang/paraglide-sveltekit@0.12.0 - -## 0.1.76 - -### Patch Changes - -- Updated dependencies [bc1e49e] - - @inlang/paraglide-sveltekit@0.11.5 - -## 0.1.75 - -### Patch Changes - -- Updated dependencies - - @inlang/paraglide-sveltekit@0.11.4 - -## 0.1.74 - -### Patch Changes - -- Updated dependencies [559bc44] - - @inlang/paraglide-sveltekit@0.11.3 - -## 0.1.73 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.11.2 - -## 0.1.72 - -### Patch Changes - -- Updated dependencies [f8565fa] - - @inlang/paraglide-sveltekit@0.11.1 - -## 0.1.71 - -### Patch Changes - -- Updated dependencies [72b2f34] -- Updated dependencies [82581f7] - - @inlang/paraglide-sveltekit@0.11.0 - -## 0.1.70 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.10.10 - -## 0.1.69 - -### Patch Changes - -- Updated dependencies [cf4019d] - - @inlang/paraglide-sveltekit@0.10.9 - -## 0.1.68 - -### Patch Changes - -- Updated dependencies [5ec62a4] - - @inlang/paraglide-sveltekit@0.10.8 - -## 0.1.67 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.10.7 - -## 0.1.66 - -### Patch Changes - -- Updated dependencies [bcd894f] - - @inlang/paraglide-sveltekit@0.10.6 - -## 0.1.65 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.10.5 - -## 0.1.64 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.10.4 - -## 0.1.63 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.10.3 - -## 0.1.62 - -### Patch Changes - -- Updated dependencies [b5d4a4c] - - @inlang/paraglide-sveltekit@0.10.2 - -## 0.1.61 - -### Patch Changes - -- Updated dependencies [ecef103] - - @inlang/paraglide-sveltekit@0.10.1 - -## 0.1.60 - -### Patch Changes - -- Updated dependencies [928742b] - - @inlang/paraglide-sveltekit@0.10.0 - -## 0.1.59 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.9.7 - -## 0.1.58 - -### Patch Changes - -- Updated dependencies [1ea7b14] - - @inlang/paraglide-sveltekit@0.9.6 - -## 0.1.57 - -### Patch Changes - -- Updated dependencies [08a1e3f] - - @inlang/paraglide-sveltekit@0.9.5 - -## 0.1.56 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.9.4 - -## 0.1.55 - -### Patch Changes - -- Updated dependencies [def2d4e] - - @inlang/paraglide-sveltekit@0.9.3 - -## 0.1.54 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.9.2 - -## 0.1.53 - -### Patch Changes - -- Updated dependencies [f0192d2] -- Updated dependencies [255fd41] - - @inlang/paraglide-sveltekit@0.9.1 - -## 0.1.52 - -### Patch Changes - -- Updated dependencies [6319391] -- Updated dependencies [76e7f20] -- Updated dependencies [8db2224] - - @inlang/paraglide-sveltekit@0.9.0 - -## 0.1.51 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.8.7 - -## 0.1.50 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.8.6 - -## 0.1.49 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.8.5 - -## 0.1.48 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.8.4 - -## 0.1.47 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.8.3 - -## 0.1.46 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.8.2 - -## 0.1.45 - -### Patch Changes - -- Updated dependencies [fbac297] - - @inlang/paraglide-sveltekit@0.8.1 - -## 0.1.44 - -### Patch Changes - -- Updated dependencies [75cf8fd] -- Updated dependencies [0bf4d74] -- Updated dependencies [a27b7a4] - - @inlang/paraglide-sveltekit@0.8.0 - -## 0.1.43 - -### Patch Changes - -- Updated dependencies [3e9b863] - - @inlang/paraglide-sveltekit@0.7.0 - -## 0.1.42 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.6.23 - -## 0.1.41 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.6.22 - -## 0.1.40 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.6.21 - -## 0.1.39 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.6.20 - -## 0.1.38 - -### Patch Changes - -- Updated dependencies [1e5320e] - - @inlang/paraglide-sveltekit@0.6.19 - -## 0.1.37 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.6.18 - -## 0.1.36 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.6.17 - -## 0.1.35 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.6.16 - -## 0.1.34 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.6.15 - -## 0.1.33 - -### Patch Changes - -- Updated dependencies [419d8b6] - - @inlang/paraglide-sveltekit@0.6.14 - -## 0.1.32 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.6.13 - -## 0.1.31 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.6.12 - -## 0.1.30 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.6.11 - -## 0.1.29 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.6.10 - -## 0.1.28 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.6.9 - -## 0.1.27 - -### Patch Changes - -- @inlang/paraglide-sveltekit@0.6.8 - -## 0.1.26 - -### Patch Changes - -- @inlang/paraglide-js-adapter-sveltekit@0.6.7 - -## 0.1.25 - -### Patch Changes - -- Updated dependencies [cee4692] -- Updated dependencies [4b631aa] - - @inlang/paraglide-js-adapter-sveltekit@0.6.6 - -## 0.1.24 - -### Patch Changes - -- @inlang/paraglide-js-adapter-sveltekit@0.6.5 - -## 0.1.23 - -### Patch Changes - -- @inlang/paraglide-js-adapter-sveltekit@0.6.4 - -## 0.1.22 - -### Patch Changes - -- @inlang/paraglide-js-adapter-sveltekit@0.6.3 - -## 0.1.21 - -### Patch Changes - -- Updated dependencies [cdbb415] - - @inlang/paraglide-js-adapter-sveltekit@0.6.2 - -## 0.1.20 - -### Patch Changes - -- Updated dependencies [a4d4e10] - - @inlang/paraglide-js-adapter-sveltekit@0.6.1 - -## 0.1.19 - -### Patch Changes - -- Updated dependencies [1642873] -- Updated dependencies [690656e] -- Updated dependencies [ce0b961] - - @inlang/paraglide-js-adapter-sveltekit@0.6.0 - -## 0.1.18 - -### Patch Changes - -- @inlang/paraglide-js-adapter-sveltekit@0.5.22 - -## 0.1.17 - -### Patch Changes - -- @inlang/paraglide-js-adapter-sveltekit@0.5.21 - -## 0.1.16 - -### Patch Changes - -- @inlang/paraglide-js-adapter-sveltekit@0.5.20 - -## 0.1.15 - -### Patch Changes - -- @inlang/paraglide-js-adapter-sveltekit@0.5.19 - -## 0.1.14 - -### Patch Changes - -- @inlang/paraglide-js-adapter-sveltekit@0.5.18 - -## 0.1.13 - -### Patch Changes - -- @inlang/paraglide-js-adapter-sveltekit@0.5.17 - -## 0.1.12 - -### Patch Changes - -- @inlang/paraglide-js-adapter-sveltekit@0.5.16 - -## 0.1.11 - -### Patch Changes - -- @inlang/paraglide-js-adapter-sveltekit@0.5.15 - -## 0.1.10 - -### Patch Changes - -- Updated dependencies [d052495] - - @inlang/paraglide-js-adapter-sveltekit@0.5.14 - -## 0.1.9 - -### Patch Changes - -- @inlang/paraglide-js-adapter-sveltekit@0.5.13 - -## 0.1.8 - -### Patch Changes - -- @inlang/paraglide-js-adapter-sveltekit@0.5.12 - -## 0.1.7 - -### Patch Changes - -- Updated dependencies [ef4e0ab] - - @inlang/paraglide-js-adapter-sveltekit@0.5.11 - -## 0.1.6 - -### Patch Changes - -- @inlang/paraglide-js-adapter-sveltekit@0.5.10 - -## 0.1.5 - -### Patch Changes - -- @inlang/paraglide-js-adapter-sveltekit@0.5.9 - -## 0.1.4 - -### Patch Changes - -- Updated dependencies [62e4a5c] - - @inlang/paraglide-js-adapter-sveltekit@0.5.8 - -## 0.1.3 - -### Patch Changes - -- @inlang/paraglide-js-adapter-sveltekit@0.5.7 - -## 0.1.2 - -### Patch Changes - -- Updated dependencies [bce060367] - - @inlang/paraglide-js-adapter-sveltekit@0.5.6 - -## 0.1.1 - -### Patch Changes - -- @inlang/paraglide-js-adapter-sveltekit@0.5.5 - -## 0.1.0 - -### Minor Changes - -- dc42da6e6: redesign - -## 0.0.15 - -### Patch Changes - -- Updated dependencies [5d25b889a] - - @inlang/paraglide-js-adapter-sveltekit@0.5.4 - -## 0.0.14 - -### Patch Changes - -- Updated dependencies [726690acb] - - @inlang/paraglide-js-adapter-sveltekit@0.5.3 - -## 0.0.13 - -### Patch Changes - -- @inlang/paraglide-js-adapter-sveltekit@0.5.2 - -## 0.0.12 - -### Patch Changes - -- Updated dependencies [a7b593e9a] - - @inlang/paraglide-js-adapter-sveltekit@0.5.1 - -## 0.0.11 - -- Update Inlang Modules - -## 0.0.10 - -- Add `start` command for StackBlitz -- Remove `/base` path - -## 0.0.9 - -### Patch Changes - -- Updated dependencies [7f566ae73] -- Updated dependencies [e4e879c77] -- Updated dependencies [21a3890cc] -- Updated dependencies [37a247c0e] -- Updated dependencies [37a247c0e] - - @inlang/paraglide-js-adapter-sveltekit@0.5.0 - -## 0.0.8 - -### Patch Changes - -- @inlang/paraglide-js-adapter-sveltekit@0.4.1 - -## 0.0.7 - -### Patch Changes - -- Updated dependencies [45f5d8256] - - @inlang/paraglide-js-adapter-sveltekit@0.4.0 - -## 0.0.6 - -### Patch Changes - -- @inlang/paraglide-js-adapter-sveltekit@0.3.7 - -## 0.0.5 - -### Patch Changes - -- @inlang/paraglide-js-adapter-sveltekit@0.3.6 - -## 0.0.4 - -### Patch Changes - -- Updated dependencies [eaef718ee] - - @inlang/paraglide-js-adapter-sveltekit@0.3.5 - -## 0.0.3 - -### Patch Changes - -- Updated dependencies [3aa1b6ca3] - - @inlang/paraglide-js-adapter-sveltekit@0.3.4 - -## 0.0.2 - -### Patch Changes - -- Updated dependencies [0efbc35c5] - - @inlang/paraglide-js-adapter-sveltekit@0.3.3 diff --git a/inlang/packages/paraglide-sveltekit/example/README.md b/inlang/packages/paraglide-sveltekit/example/README.md deleted file mode 100644 index e9de4c4849..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Paraglide Example with SvelteKit - -This is an example Project for using Paraglide with SvelteKit. It implements i18n routing with translated routes and is ready for SSR, SSG and CSR. Everything you need to get started. - -Use this as a reference for your own project. - -## Links -- [Paraglide](https://inlang.com/m/gerre34r/library-inlang-paraglideJs) -- [Paraglide-SvelteKit](https://inlang.com/m/dxnzrydw/paraglide-sveltekit-i18n) - -## Interesting Files -- `vite.config.js` -- `src/lib/i18n.js` -- `src/routes/+layout.svelte` -- `src/hooks.js` -- `src/hooks.server.js` \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/messages/de.json b/inlang/packages/paraglide-sveltekit/example/messages/de.json deleted file mode 100644 index b09973c436..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/messages/de.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "$schema": "https://inlang.com/schema/inlang-message-format", - "about": "Über uns", - "home": "Startseite", - "users": "Benutzer", - "next_user": "Nächster Benutzer", - "previous_user": "Vorheriger Benutzer", - "about_path": "/ueber-uns", - - "edit_user": "Benutzer {userId} bearbeiten", - - "paraglide_and_next_app_router": "ParaglideJS + SvelteKit", - "this_app_was_localised_with_paraglide": "Dies ist eine SvelteKit App die mit Paraglide-Next lokalisiert wurde.", - "switch_languages_in_top_right": "Sie können die Sprache oben rechts ändern", - "learn_more_at_following_links": "Erfahren sie mehr über Paraglide und SvelteKit mit den folgenden Links:", - "paraglide_documentation": "Paraglide Dokumentation", - "source_code": "Quell-Code" -} \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/messages/en.json b/inlang/packages/paraglide-sveltekit/example/messages/en.json deleted file mode 100644 index 3b0edd9fd2..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/messages/en.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "$schema": "https://inlang.com/schema/inlang-message-format", - "about": "About", - "home": "Home", - "users": "Users", - "next_user": "Next user", - "previous_user": "Previous user", - "about_path": "/about", - - "edit_user": "Edit user {userId}", - - "paraglide_and_next_app_router": "ParaglideJS + SvelteKit", - "this_app_was_localised_with_paraglide": "This is a SvelteKit App that was localised using Paraglide-Next.", - "switch_languages_in_top_right": "You can switch languages in the top right corner.", - "learn_more_at_following_links": "Learn more at the following links", - "paraglide_documentation": "Paraglide Documentation", - "source_code": "Source Code" -} \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/package.json b/inlang/packages/paraglide-sveltekit/example/package.json deleted file mode 100644 index f595a8e0e4..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/package.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "@inlang/paraglide-sveltekit-example", - "version": "0.1.86", - "private": true, - "scripts": { - "dev": "vite dev", - "start": "vite dev", - "build": "vite build", - "test": "tsc --noEmit && vite build", - "preview": "vite preview", - "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", - "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch" - }, - "dependencies": {}, - "peerDependencies": { - "typescript": "^5" - }, - "devDependencies": { - "@inlang/paraglide-js": "workspace:*", - "@inlang/paraglide-sveltekit": "workspace:*", - "@sveltejs/adapter-node": "^5.2.10", - "@sveltejs/adapter-static": "^3.0.0", - "@sveltejs/kit": "^2.12.1", - "@sveltejs/vite-plugin-svelte": "^4.0.3", - "rollup-plugin-visualizer": "^5.12.0", - "svelte": "^5.14.1", - "svelte-check": "^3.6.9", - "vite": "^5.4.11" - }, - "files": [ - "*", - ".gitignore" - ], - "type": "module" -} \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/project.inlang/.gitignore b/inlang/packages/paraglide-sveltekit/example/project.inlang/.gitignore deleted file mode 100644 index 5e46596759..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/project.inlang/.gitignore +++ /dev/null @@ -1 +0,0 @@ -cache \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/project.inlang/project_id b/inlang/packages/paraglide-sveltekit/example/project.inlang/project_id deleted file mode 100644 index a33be41bdd..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/project.inlang/project_id +++ /dev/null @@ -1 +0,0 @@ -8f4dfba4f8f727add96068fcf8c5a8983e9896fa4eb9680dfd5d60468b2670f5 diff --git a/inlang/packages/paraglide-sveltekit/example/project.inlang/settings.json b/inlang/packages/paraglide-sveltekit/example/project.inlang/settings.json deleted file mode 100644 index 71cae765d6..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/project.inlang/settings.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "$schema": "https://inlang.com/schema/project-settings", - "sourceLanguageTag": "en", - "languageTags": ["en", "de"], - "modules": [ - "https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-empty-pattern@latest/dist/index.js", - "https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-identical-pattern@latest/dist/index.js", - "https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-missing-translation@latest/dist/index.js", - "https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-without-source@latest/dist/index.js", - "https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-valid-js-identifier@latest/dist/index.js", - "https://cdn.jsdelivr.net/npm/@inlang/plugin-message-format@latest/dist/index.js", - "https://cdn.jsdelivr.net/npm/@inlang/plugin-m-function-matcher@latest/dist/index.js" - ], - "plugin.inlang.messageFormat": { - "pathPattern": "./messages/{languageTag}.json" - } -} diff --git a/inlang/packages/paraglide-sveltekit/example/src/app.d.ts b/inlang/packages/paraglide-sveltekit/example/src/app.d.ts deleted file mode 100644 index 0955bef458..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/src/app.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/// -import type { AvailableLanguageTag } from "$lib/paraglide/runtime" -import type { ParaglideLocals } from "@inlang/paraglide-sveltekit" - -// See https://kit.svelte.dev/docs/types#app -// for information about these interfaces -declare global { - namespace App { - // interface Error {} - interface Locals { - paraglide: ParaglideLocals - } - // interface PageData {} - // interface Platform {} - } -} - -export {} diff --git a/inlang/packages/paraglide-sveltekit/example/src/app.html b/inlang/packages/paraglide-sveltekit/example/src/app.html deleted file mode 100644 index e386ae413d..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/src/app.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - %sveltekit.head% - - -
%sveltekit.body%
- - diff --git a/inlang/packages/paraglide-sveltekit/example/src/hooks.js b/inlang/packages/paraglide-sveltekit/example/src/hooks.js deleted file mode 100644 index 07e01f53a5..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/src/hooks.js +++ /dev/null @@ -1,4 +0,0 @@ -import { i18n } from "$lib/i18n" - -/** @type {import("@sveltejs/kit").Reroute} */ -export const reroute = i18n.reroute() diff --git a/inlang/packages/paraglide-sveltekit/example/src/hooks.server.js b/inlang/packages/paraglide-sveltekit/example/src/hooks.server.js deleted file mode 100644 index 88cd44ee29..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/src/hooks.server.js +++ /dev/null @@ -1,3 +0,0 @@ -import { i18n } from "$lib/i18n" - -export const handle = i18n.handle() diff --git a/inlang/packages/paraglide-sveltekit/example/src/lib/i18n.js b/inlang/packages/paraglide-sveltekit/example/src/lib/i18n.js deleted file mode 100644 index 2219a61cc9..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/src/lib/i18n.js +++ /dev/null @@ -1,26 +0,0 @@ -import { createI18n } from "@inlang/paraglide-sveltekit" -import { match as int } from "../params/int" -import * as runtime from "$lib/paraglide/runtime.js" -import * as m from "$lib/paraglide/messages.js" -import { base } from "$app/paths" - -export const i18n = createI18n(runtime, { - pathnames: { - "/about": m.about_path, - "/users": { - en: "/users", - de: "/benutzer", - }, - "/users/[id=int]/[...rest]": { - en: "/users/[id=int]/[...rest]", - de: "/benutzer/[id=int]/[...rest]", - }, - }, - matchers: { int }, - prefixDefaultLanguage: "always", - exclude: [base + "/not-translated", base + "/excluded"], - textDirection: { - en: "ltr", - de: "ltr", - }, -}) diff --git a/inlang/packages/paraglide-sveltekit/example/src/lib/ui/Header.svelte b/inlang/packages/paraglide-sveltekit/example/src/lib/ui/Header.svelte deleted file mode 100644 index 265f4b6b4f..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/src/lib/ui/Header.svelte +++ /dev/null @@ -1,34 +0,0 @@ - -
- - {$page.url.pathname} - -
- - - \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/src/lib/ui/LanguageSwitcher.svelte b/inlang/packages/paraglide-sveltekit/example/src/lib/ui/LanguageSwitcher.svelte deleted file mode 100644 index 577cb7cc0a..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/src/lib/ui/LanguageSwitcher.svelte +++ /dev/null @@ -1,33 +0,0 @@ - - - \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/src/lib/ui/styles.css b/inlang/packages/paraglide-sveltekit/example/src/lib/ui/styles.css deleted file mode 100644 index bac67e87ae..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/src/lib/ui/styles.css +++ /dev/null @@ -1,37 +0,0 @@ -* { - box-sizing: border-box; - min-width: 0; -} - -:root { - font-size: 16px; -} - -html, body { - margin: 0; - padding: 0; - font-family: 'Roboto', sans-serif; - line-height: 1.5; - font-size: 1rem; - color: #111; - background-color: #fefefe; -} - -a { - text-decoration: none; - color: inherit; -} - -.container { - max-width: 800px; - margin-inline: auto; - margin-block-start: 5rem; - padding: 0 20px; -} - -.code-block { - display: block; - background-color: #f4f4f4; - padding: 20px; - border-radius: 5px; -} \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/src/params/int.js b/inlang/packages/paraglide-sveltekit/example/src/params/int.js deleted file mode 100644 index 9c7849edd9..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/src/params/int.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * @param {string} param - * @returns {param is number} - */ -export function match(param) { - try { - const parsed = parseFloat(param) - if (isNaN(parsed)) return false - - - //if it's an integer - return parsed === Math.round(parsed) - } catch (e) { - return false - } -} diff --git a/inlang/packages/paraglide-sveltekit/example/src/routes/+error.svelte b/inlang/packages/paraglide-sveltekit/example/src/routes/+error.svelte deleted file mode 100644 index 06bf0d8131..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/src/routes/+error.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - - -

{$page.error?.message}

-
\ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/src/routes/+layout.server.js b/inlang/packages/paraglide-sveltekit/example/src/routes/+layout.server.js deleted file mode 100644 index 7986cc6446..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/src/routes/+layout.server.js +++ /dev/null @@ -1,16 +0,0 @@ -import { languageTag } from "$lib/paraglide/runtime" - -export const prerender = true -export const trailingSlash = "always" - -/** - * @type { import("./$types").LayoutServerLoad} - */ -export function load({ depends }) { - // This tells SvelteKit to re-run this load function when the language changes - depends("paraglide_lang") - - return { - serverLang: `The language on the server is ${languageTag()}`, - } -} diff --git a/inlang/packages/paraglide-sveltekit/example/src/routes/+layout.svelte b/inlang/packages/paraglide-sveltekit/example/src/routes/+layout.svelte deleted file mode 100644 index eaf0f70cd1..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/src/routes/+layout.svelte +++ /dev/null @@ -1,22 +0,0 @@ - - - -
- -
- -
- - - \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/src/routes/+page.svelte b/inlang/packages/paraglide-sveltekit/example/src/routes/+page.svelte deleted file mode 100644 index 32e8a4d4ba..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/src/routes/+page.svelte +++ /dev/null @@ -1,21 +0,0 @@ - - - -

{m.paraglide_and_next_app_router()}

-

{m.this_app_was_localised_with_paraglide()}

-

{m.switch_languages_in_top_right()}

-

{m.learn_more_at_following_links()}

- \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/src/routes/about/+page.svelte b/inlang/packages/paraglide-sveltekit/example/src/routes/about/+page.svelte deleted file mode 100644 index 1cbde3393f..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/src/routes/about/+page.svelte +++ /dev/null @@ -1,15 +0,0 @@ - - -

{m.about()}

- - -

- Lorem ipsum dolor sit amet, consectetur adipiscing elit sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis - nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore - eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt - in culpa qui officia deserunt mollit anim id est laborum. -

\ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/src/routes/excluded/+page.svelte b/inlang/packages/paraglide-sveltekit/example/src/routes/excluded/+page.svelte deleted file mode 100644 index 64388e97c1..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/src/routes/excluded/+page.svelte +++ /dev/null @@ -1 +0,0 @@ -

This page should not be translated

\ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/src/routes/matchall/page/+page.svelte b/inlang/packages/paraglide-sveltekit/example/src/routes/matchall/page/+page.svelte deleted file mode 100644 index dade165229..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/src/routes/matchall/page/+page.svelte +++ /dev/null @@ -1,9 +0,0 @@ - -

Page

- -Subpage -Home \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/src/routes/matchall/page/subpage/+page.svelte b/inlang/packages/paraglide-sveltekit/example/src/routes/matchall/page/subpage/+page.svelte deleted file mode 100644 index e4835eb86e..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/src/routes/matchall/page/subpage/+page.svelte +++ /dev/null @@ -1,9 +0,0 @@ - -

Subpage

- -Admin Page -Home \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/src/routes/redirect/+page.server.ts b/inlang/packages/paraglide-sveltekit/example/src/routes/redirect/+page.server.ts deleted file mode 100644 index 13d994b98d..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/src/routes/redirect/+page.server.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { redirect } from "@sveltejs/kit" - -export const prerender = false - -export const actions = { - redirect: async () => { - redirect(303, "/?redirected=true") - }, -} diff --git a/inlang/packages/paraglide-sveltekit/example/src/routes/redirect/+page.svelte b/inlang/packages/paraglide-sveltekit/example/src/routes/redirect/+page.svelte deleted file mode 100644 index 53589995a0..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/src/routes/redirect/+page.svelte +++ /dev/null @@ -1,3 +0,0 @@ -
- -
\ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/src/routes/users/[id]/+page.svelte b/inlang/packages/paraglide-sveltekit/example/src/routes/users/[id]/+page.svelte deleted file mode 100644 index af47d0bd07..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/src/routes/users/[id]/+page.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - -

{m.users()} {num_users}

- -{m.previous_user()} -
-{m.next_user()} - -
-
- -{m.edit_user({ userId: num_users })} \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/src/routes/users/[id]/edit/+page.server.ts b/inlang/packages/paraglide-sveltekit/example/src/routes/users/[id]/edit/+page.server.ts deleted file mode 100644 index a7dfb2f336..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/src/routes/users/[id]/edit/+page.server.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { languageTag } from "$lib/paraglide/runtime" -import type { Actions } from "./$types" - -export const prerender = false - -export const actions: Actions = { - create: async () => { - console.info("create", languageTag()) - }, -} diff --git a/inlang/packages/paraglide-sveltekit/example/src/routes/users/[id]/edit/+page.svelte b/inlang/packages/paraglide-sveltekit/example/src/routes/users/[id]/edit/+page.svelte deleted file mode 100644 index fbfa097839..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/src/routes/users/[id]/edit/+page.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - -

{m.edit_user({ userId })}

-{m.users()} - -
- - -
\ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/example/svelte.config.js b/inlang/packages/paraglide-sveltekit/example/svelte.config.js deleted file mode 100644 index 4deaad82a1..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/svelte.config.js +++ /dev/null @@ -1,21 +0,0 @@ -import adapter from "@sveltejs/adapter-node" -import { vitePreprocess } from "@sveltejs/vite-plugin-svelte" - -/** @type {import('@sveltejs/kit').Config} */ -const config = { - preprocess: [vitePreprocess()], - kit: { - adapter: adapter(), - prerender: { - //Needed for correctly prerendering - origin: "https://github.io", - }, - paths: { - base: "/paraglide-sveltekit/example", - }, - }, - - extensions: [".svelte", ".svx"], -} - -export default config diff --git a/inlang/packages/paraglide-sveltekit/example/tsconfig.json b/inlang/packages/paraglide-sveltekit/example/tsconfig.json deleted file mode 100644 index 6ae0c8c44d..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": "./.svelte-kit/tsconfig.json", - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "sourceMap": true, - "strict": true - } - // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias - // - // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes - // from the referenced tsconfig.json - TypeScript does not merge them in -} diff --git a/inlang/packages/paraglide-sveltekit/example/vite.config.ts b/inlang/packages/paraglide-sveltekit/example/vite.config.ts deleted file mode 100644 index 656f2e205e..0000000000 --- a/inlang/packages/paraglide-sveltekit/example/vite.config.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { sveltekit } from "@sveltejs/kit/vite" -import { paraglide } from "@inlang/paraglide-sveltekit/vite" -import { visualizer } from "rollup-plugin-visualizer" -import { defineConfig } from "vite" - -export default defineConfig({ - plugins: [ - paraglide({ - project: "./project.inlang", - outdir: "./src/lib/paraglide", - }), - sveltekit(), - visualizer({ - filename: "stats.html", - emitFile: true, - }), - ], -}) diff --git a/inlang/packages/paraglide-sveltekit/marketplace-manifest.json b/inlang/packages/paraglide-sveltekit/marketplace-manifest.json deleted file mode 100644 index cf06dbd22d..0000000000 --- a/inlang/packages/paraglide-sveltekit/marketplace-manifest.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "$schema": "https://inlang.com/schema/marketplace-manifest", - "id": "library.inlang.paraglideJsAdapterSvelteKit", - "slug": "paraglide-sveltekit-i18n", - "icon": "./assets/icon.png", - "gallery": [ - "./assets/og.png" - ], - "displayName": { - "en": "Paraglide-SvelteKit" - }, - "description": { - "en": "A SvelteKit integration for ParaglideJS, providing you with everything you need for i18n routing" - }, - "pages": { - "": { - "/": "./docs/why-paraglide.md", - "/getting-started": "./README.md", - "/localised-routing": "./docs/localised-routing.md", - "/advanced-usage": "./docs/advanced-usage.md", - "/deployment": "./docs/deployment.md" - }, - - "Appendix": { - "/manual-setup": "./docs/manual-setup.md", - "/roadmap-and-caveats": "./docs/roadmap.md", - "/changelog": "./CHANGELOG.md" - } - }, - "keywords": [ - "paraglide js", - "libraries", - "website", - "developer", - "paraglide", - "i18n", - "library", - "localization", - "sdk", - "sdk-js", - "svelte", - "sveltekit", - "vite", - "javascript", - "typescript", - "inlang" - ], - "recommends": ["m/reootnfj", "m/632iow21", "m/r7kp499g", "m/teldgniy"], - "publisherName": "inlang", - "publisherIcon": "https://inlang.com/favicon/safari-pinned-tab.svg", - "license": "Apache-2.0", - "pricing": "Free" -} \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/mocks/runtime.js b/inlang/packages/paraglide-sveltekit/mocks/runtime.js deleted file mode 100644 index c9f4e1bcdb..0000000000 --- a/inlang/packages/paraglide-sveltekit/mocks/runtime.js +++ /dev/null @@ -1,143 +0,0 @@ -/* eslint-disable */ -/** @type {((tag: AvailableLanguageTag) => void) | undefined} */ -let _onSetLanguageTag - -/** - * The project's source language tag. - * - * @example - * if (newlySelectedLanguageTag === sourceLanguageTag){ - * // do nothing as the source language tag is the default language - * return - * } - */ -export const sourceLanguageTag = "en" - -/** - * The project's available language tags. - * - * @example - * if (availableLanguageTags.includes(userSelectedLanguageTag) === false){ - * throw new Error("Language tag not available") - * } - */ -export const availableLanguageTags = /** @type {const} */ (["de", "en"]) - -/** - * Get the current language tag. - * - * @example - * if (languageTag() === "de"){ - * console.log("Germany 🇩🇪") - * } else if (languageTag() === "nl"){ - * console.log("Netherlands 🇳🇱") - * } - * - * @type {() => AvailableLanguageTag} - */ -export let languageTag = () => sourceLanguageTag - -/** - * Set the language tag. - * - * @example - * - * // changing to language - * setLanguageTag("en") - * - * // passing a getter function also works. - * // - * // a getter function is useful for resolving a language tag - * // on the server where every request has a different language tag - * setLanguageTag(() => { - * return request.languageTag - * }) - * - * @param {AvailableLanguageTag | (() => AvailableLanguageTag)} tag - */ -export const setLanguageTag = (tag) => { - if (typeof tag === "function") { - languageTag = enforceLanguageTag(tag) - } else { - languageTag = enforceLanguageTag(() => tag) - } - // call the callback function if it has been defined - if (_onSetLanguageTag !== undefined) { - _onSetLanguageTag(languageTag()) - } -} - -/** - * Wraps an untrusted function and enforces that it returns a language tag. - * @param {() => AvailableLanguageTag} unsafeLanguageTag - * @returns {() => AvailableLanguageTag} - */ -function enforceLanguageTag(unsafeLanguageTag) { - return () => { - const tag = unsafeLanguageTag() - if (!isAvailableLanguageTag(tag)) { - throw new Error( - `languageTag() didn't return a valid language tag. Check your setLanguageTag call` - ) - } - return tag - } -} - -/** - * Set the `onSetLanguageTag()` callback function. - * - * The function can be used to trigger client-side side-effects such as - * making a new request to the server with the updated language tag, - * or re-rendering the UI on the client (SPA apps). - * - * - Don't use this function on the server (!). - * Triggering a side-effect is only useful on the client because a server-side - * environment doesn't need to re-render the UI. - * - * - The `onSetLanguageTag()` callback can only be defined once to avoid unexpected behavior. - * - * @example - * // if you use inlang paraglide on the server, make sure - * // to not call `onSetLanguageTag()` on the server - * if (isServer === false) { - * onSetLanguageTag((tag) => { - * // (for example) make a new request to the - * // server with the updated language tag - * window.location.href = `/${tag}/${window.location.pathname}` - * }) - * } - * - * @param {(languageTag: AvailableLanguageTag) => void} fn - */ -export const onSetLanguageTag = (fn) => { - _onSetLanguageTag = fn -} - -/** - * Check if something is an available language tag. - * - * @example - * if (isAvailableLanguageTag(params.locale)) { - * setLanguageTag(params.locale) - * } else { - * setLanguageTag("en") - * } - * - * @param {any} thing - * @returns {thing is AvailableLanguageTag} - */ -export function isAvailableLanguageTag(thing) { - return availableLanguageTags.includes(thing) -} - -// ------ TYPES ------ - -/** - * A language tag that is available in the project. - * - * @example - * setLanguageTag(request.languageTag as AvailableLanguageTag) - * - * @typedef {typeof availableLanguageTags[number]} AvailableLanguageTag - */ diff --git a/inlang/packages/paraglide-sveltekit/package.json b/inlang/packages/paraglide-sveltekit/package.json deleted file mode 100644 index abfa1db075..0000000000 --- a/inlang/packages/paraglide-sveltekit/package.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "name": "@inlang/paraglide-sveltekit", - "version": "0.15.5", - "type": "module", - "main": "./dist/runtime/index.js", - "types": "./dist/runtime/index.d.ts", - "publishConfig": { - "access": "public" - }, - "repository": { - "type": "git", - "url": "https://github.com/opral/inlang-paraglide-js" - }, - "scripts": { - "test:with-base": "BASE_PATH=/base vitest run --test-timeout 90000 --dir src", - "test:without-base": "BASE_PATH=\"\" vitest run --test-timeout 90000 --dir src", - "test": "tsc --noEmit && npm run generate-meta && npm run test:with-base && npm run test:without-base", - "build": "npm run generate-meta && svelte-package -i src -o dist", - "dev": "npm run generate-meta && svelte-package -w -i src -o dist", - "lint": "eslint ./src --fix", - "format": "prettier ./src --write", - "generate-meta": "node scripts/generate_meta.js", - "clean": "rm -rf ./dist ./node_modules" - }, - "dependencies": { - "@inlang/paraglide-js": "workspace:*", - "@lix-js/client": "2.2.1", - "commander": "^12.0.0", - "dedent": "1.5.1", - "devalue": "^4.3.2", - "magic-string": "^0.30.5", - "svelte": "^5.0.0 || ^5.0.0-next.1 || ^5.0.0-rc.1" - }, - "peerDependencies": { - "@sveltejs/kit": "^2.4.3" - }, - "devDependencies": { - "@opral/tsconfig": "workspace:*", - "@rollup/plugin-alias": "^5.0.1", - "@rollup/plugin-node-resolve": "^15.2.3", - "@rollup/plugin-virtual": "3.0.1", - "@sveltejs/package": "^2.2.3", - "@sveltejs/vite-plugin-svelte": "^3.0.2", - "@types/node": "^20.12.12", - "prettier-plugin-svelte": "^3.1.2", - "rollup": "3.29.1", - "rollup-plugin-svelte": "^7.1.6", - "typescript": "^5.5.2", - "vite": "^5.0.4", - "vite-plugin-svelte": "^3.0.1", - "vitest": "^1.0.0" - }, - "files": [ - "dist" - ], - "bin": { - "paraglide-sveltekit": "./bin/run.js" - }, - "exports": { - ".": { - "types": "./dist/runtime/index.server.d.ts", - "browser": "./dist/runtime/index.client.js", - "default": "./dist/runtime/index.server.js" - }, - "./internal": { - "import": "./dist/runtime/internal/index.js", - "types": "./dist/runtime/internal/index.d.ts" - }, - "./vite": { - "import": "./dist/vite/index.js", - "types": "./dist/vite/index.d.ts" - } - } -} \ No newline at end of file diff --git a/inlang/packages/paraglide-sveltekit/scripts/generate_meta.js b/inlang/packages/paraglide-sveltekit/scripts/generate_meta.js deleted file mode 100644 index fe16efcf1e..0000000000 --- a/inlang/packages/paraglide-sveltekit/scripts/generate_meta.js +++ /dev/null @@ -1,31 +0,0 @@ -// This script generates the meta.js file -// that provides any package & env information needed at runtime - -// meta.js is placed in src/meta.js -import fs from "node:fs/promises" -import path from "node:path" -import { fileURLToPath } from "node:url" - -const __file = fileURLToPath(import.meta.url) -const __dirname = path.dirname(__file) - -const packageJson = await fs.readFile(path.resolve(__dirname, "../package.json"), "utf-8") -const packageJsonData = JSON.parse(packageJson) -const { version } = packageJsonData -if (!version) throw new Error("package.json must have a version property") - -const marketplaceManifest = await fs.readFile( - path.resolve(__dirname, "../marketplace-manifest.json"), - "utf-8" -) -const marketplaceManifestData = JSON.parse(marketplaceManifest) -const { id: marketplaceID } = marketplaceManifestData - -const destination = path.resolve(__dirname, "../src/meta.js") - -const metaJs = `// file generated by build script - do not commit -export const PARAGLIDE_SVELTEKIT_VERSION = ${JSON.stringify(version)} -export const PARAGLIDE_SVELTEKIT_MARKETPLACE_ID = ${JSON.stringify(marketplaceID)} -` - -await fs.writeFile(destination, metaJs) diff --git a/inlang/packages/paraglide-sveltekit/src/cli/commands/inits.ts b/inlang/packages/paraglide-sveltekit/src/cli/commands/inits.ts deleted file mode 100644 index 9b62abd6e7..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/cli/commands/inits.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { findRepoRoot, openRepository } from "@lix-js/client" -import nodeishFs from "node:fs/promises" -import { Command } from "commander" -import { Steps, cli as ParaglideCli, Logger } from "@inlang/paraglide-js/cli" -import { scanSvelteKitProject } from "../steps/scanSvelteKitProject.js" -import { addParaglideSvelteKitVitePlugin } from "../steps/addVitePlugin.js" -import { addI18nFile } from "../steps/addI18nFile.js" -import { addParaglideJSComponent } from "../steps/addParaglideJSComponent.js" -import { editAppHtmlFile } from "../steps/editAppHtmlFile.js" -import { addRerouteHook } from "../steps/addRerouteFile.js" -import { addHandleHook } from "../steps/addHandleHook.js" -import { PARAGLIDE_SVELTEKIT_VERSION, PARAGLIDE_SVELTEKIT_MARKETPLACE_ID } from "../../meta.js" -import { addTypesForLocals } from "../steps/updateAppTypes.js" - -export const initCommand = new Command() - .name("init") - .summary("Initializes Paraglide-SvelteKit in this SvelteKit Project") - .action(async () => { - const repoRoot = await findRepoRoot({ nodeishFs, path: process.cwd() }) - - // We are risking that there is no git repo. As long as we only use FS features and no Git features - // from the SDK we should be fine. - // Basic operations like `loadProject` should always work without a repo since it's used in CI. - const repo = await openRepository(repoRoot ?? "file://" + process.cwd(), { - nodeishFs, - }) - - const logger = new Logger({ prefix: false, silent: false }) - - const ctx0 = { - repo, - logger, - repoRoot: repoRoot?.replace("file://", "") ?? process.cwd(), - appId: PARAGLIDE_SVELTEKIT_MARKETPLACE_ID, - } - - const ctx1 = (await scanSvelteKitProject(ctx0)) as any - const ctx2 = await Steps.initializeInlangProject(ctx1) - const ctx3 = await Steps.updatePackageJson({ - dependencies: async (deps) => ({ - ...deps, - "@inlang/paraglide-js": ParaglideCli.version() as string, - "@inlang/paraglide-sveltekit": PARAGLIDE_SVELTEKIT_VERSION, - }), - })(ctx2) - - const ctx4 = await Steps.maybeUpdateTsConfig(ctx3) - const ctx5 = await addParaglideSvelteKitVitePlugin(ctx4) - const ctx6 = await addI18nFile(ctx5) - const ctx7 = await addParaglideJSComponent(ctx6) - const ctx8 = await editAppHtmlFile(ctx7) - const ctx9 = await addRerouteHook(ctx8) - const ctx10 = await addHandleHook(ctx9) - const ctx11 = await addTypesForLocals(ctx10) - const crx12 = await Steps.maybeAddSherlock(ctx11) - - try { - await Steps.runCompiler({ ...crx12, outdir: "./src/lib/paraglide" }) - } catch (e) { - //silently ignore - } - - logger.success(`Successfully initialized Paraglide-SvelteKit in this SvelteKit Project. - -Learn more about Paraglide and Paraglide-Sveltekit at: -https://inlang.com/m/dxnzrydw/paraglide-sveltekit-i18n -`) - }) diff --git a/inlang/packages/paraglide-sveltekit/src/cli/index.ts b/inlang/packages/paraglide-sveltekit/src/cli/index.ts deleted file mode 100644 index 1ef08295c3..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/cli/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Command } from "commander" -import { initCommand } from "./commands/inits.js" -import { PARAGLIDE_SVELTEKIT_VERSION } from "../meta.js" - -export const cli = new Command() - .name("paraglide-sveltekit") - .addCommand(initCommand) - .showHelpAfterError() - .version(PARAGLIDE_SVELTEKIT_VERSION) diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/addHandleHook.test.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/addHandleHook.test.ts deleted file mode 100644 index c9cd68e526..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/cli/steps/addHandleHook.test.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { describe, it, expect } from "vitest" -import { updateServerHooks } from "./addHandleHook" - -describe("updateServerHooks", () => { - it("should add the handle hook if it's not present", () => { - const code = `export const handleErrorpermalink = () => console.log("damn")` - const result = updateServerHooks(code) - expect(result.ok).toBe(true) - expect(result.updated).toMatchInlineSnapshot(` - "import { i18n } from '${"$"}lib/i18n' - import { sequence } from '@sveltejs/kit/hooks' - export const handleErrorpermalink = () => console.log("damn") - - export const handle = sequence(i18n.handle())" - `) - }) - - it("should not reimport sequence if it's already imported", () => { - const code = `import { sequence } from '@sveltejs/kit/hooks' -export const handleErrorpermalink = () => console.log("damn")` - const result = updateServerHooks(code) - expect(result.ok).toBe(true) - expect(result.updated).toMatchInlineSnapshot(` - "import { i18n } from '${"$"}lib/i18n' - import { sequence } from '@sveltejs/kit/hooks' - export const handleErrorpermalink = () => console.log("damn") - - export const handle = sequence(i18n.handle())" - `) - }) -}) diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/addHandleHook.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/addHandleHook.ts deleted file mode 100644 index 186ecc01d9..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/cli/steps/addHandleHook.ts +++ /dev/null @@ -1,112 +0,0 @@ -import type { Repository } from "@lix-js/client" -import { findFile, type CliStep } from "../utils.js" -import path from "node:path" -import type { Logger } from "@inlang/paraglide-js/cli" - -const BOILERPLATE = `// file initialized by the Paraglide-SvelteKit CLI - Feel free to edit it -import { sequence } from "@sveltejs/kit/hooks" -import { i18n } from "${"$"}lib/i18n" - -// add your own hooks as part of the sequence here -export const handle = sequence(i18n.handle()) -` - -export const addHandleHook: CliStep< - { repo: Repository; logger: Logger; typescript: boolean }, - unknown -> = async (ctx) => { - const hooksFilePath = await findFile({ - candidates: ["./src/hooks.server.js", "./src/hooks.server.ts"], - base: process.cwd(), - fs: ctx.repo.nodeishFs, - }) - - if (hooksFilePath) { - // read the file - const content = await ctx.repo.nodeishFs.readFile(hooksFilePath, { encoding: "utf-8" }) - - const result = updateServerHooks(content) - if (!result.ok) { - const msg = [ - "Could not automatically add the i18n.handle hook in src/hooks.server.js", - "REASON: " + result.reason, - "", - "Please update it manually", - ].join("\n") - ctx.logger.warn(msg) - } else { - ctx.logger.success("Added handle hook") - await ctx.repo.nodeishFs.writeFile(hooksFilePath, result.updated) - } - } else { - const hooksFilePath = path.resolve( - process.cwd(), - "./src/hooks.server" + (ctx.typescript ? ".ts" : ".js") - ) - //wrte boilerplate - await ctx.repo.nodeishFs.writeFile(hooksFilePath, BOILERPLATE) - ctx.logger.success("Added handle hook") - } - - return ctx -} - -type UpdateResult = - | { - ok: true - updated: string - reason?: undefined - } - | { - ok: false - reason: string - updated?: undefined - } - -/** - * Tries to update an existing server hooks file - * @param code - */ -export function updateServerHooks(code: string): UpdateResult { - // if it already contains the hook, we don't need to do anything - if (code.includes("i18n.handle")) { - return { - ok: true, - updated: code, - } - } - - // if it does not yet export a handle hook we can just append it - const exportHandleRegexes = [ - /export\s+const\s+handle\s/g, - /export\s+function\s+handle\s/g, - /export\s+async\s+function\s+handle\s/g, - /export\s+{.*handle.*}/g, - ] - - const importsSequence = code.includes("sequence") && code.includes("@sveltejs/kit/hooks") - - const hasHandle = exportHandleRegexes.some((regex) => regex.test(code)) - if (hasHandle) { - //fail - we can't do this automatically yet - return { - ok: false, - reason: "Handle hook is already present", - } - } else { - const imports = [ - `import { i18n } from '${"$"}lib/i18n'`, - importsSequence ? "" : "import { sequence } from '@sveltejs/kit/hooks'", - ] - .filter(Boolean) - .join("\n") - - const updatedCode = - imports + "\n" + code + "\n\n" + "export const handle = sequence(i18n.handle())" - - return { - ok: true, - updated: updatedCode, - } - } -} diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/addI18nFile.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/addI18nFile.ts deleted file mode 100644 index 4c63829002..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/cli/steps/addI18nFile.ts +++ /dev/null @@ -1,45 +0,0 @@ -import type { Repository } from "@lix-js/client" -import type { CliStep } from "../utils.js" -import path from "node:path" -import type { Logger } from "@inlang/paraglide-js/cli" - -export const addI18nFile: CliStep< - { - repo: Repository - logger: Logger - typescript: boolean - }, - unknown -> = async (ctx) => { - const filePath = path.resolve(process.cwd(), "./src/lib/i18n" + (ctx.typescript ? ".ts" : ".js")) - - const boilerplate = `// file initialized by the Paraglide-SvelteKit CLI - Feel free to edit it -import { createI18n } from "@inlang/paraglide-sveltekit" -import * as runtime from "${"$"}lib/paraglide/runtime.js" - -export const i18n = createI18n(runtime) -` - - const libDirExists = await directoryExists(path.dirname(filePath), ctx.repo.nodeishFs) - if (!libDirExists) { - await ctx.repo.nodeishFs.mkdir(path.dirname(filePath), { recursive: true }) - } - - try { - await ctx.repo.nodeishFs.writeFile(filePath, boilerplate) - ctx.logger.success("Added i18n file") - } catch (error) { - ctx.logger.error("Failed to add i18n file at src/lib/i18n.js") - } - - return ctx -} - -async function directoryExists(path: string, fs: Repository["nodeishFs"]) { - try { - const stat = await fs.stat(path) - return stat.isDirectory() - } catch { - return false - } -} diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/addParaglideJSComponent.test.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/addParaglideJSComponent.test.ts deleted file mode 100644 index 734cdbc89a..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/cli/steps/addParaglideJSComponent.test.ts +++ /dev/null @@ -1,105 +0,0 @@ -import { describe, expect, it } from "vitest" -import { updateLayoutFile } from "./addParaglideJSComponent" - -describe("updateLayoutFile", () => { - it("should update an empty layout file", () => { - expect(updateLayoutFile("")).toMatchInlineSnapshot(` - " - - - - - " - `) - }) - - it("should update a layout file with just a slot", () => { - expect(updateLayoutFile("")).toMatchInlineSnapshot(` - " - - - - " - `) - }) - - it("should update a layout file with a script", () => { - expect(updateLayoutFile(``)).toMatchInlineSnapshot(` - " - - - - " - `) - }) - - it("should update a layout file with just a style", () => { - expect(updateLayoutFile(``)).toMatchInlineSnapshot(` - " - - - - - " - `) - }) - - it("should update a layout file that already contains a slot", () => { - const code = `

- -

- ` - - expect(updateLayoutFile(code)).toMatchInlineSnapshot(` - " - - -

- -

- -
" - `) - }) - - it("should upate a typescript script", () => { - const code = ` - - -

- ` - - expect(updateLayoutFile(code)).toMatchInlineSnapshot(` - " - - - - -

- -
" - `) - }) -}) diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/addParaglideJSComponent.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/addParaglideJSComponent.ts deleted file mode 100644 index 0892cefec6..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/cli/steps/addParaglideJSComponent.ts +++ /dev/null @@ -1,99 +0,0 @@ -import type { Repository } from "@lix-js/client" -import { findFile, type CliStep } from "../utils.js" -import type { Logger } from "@inlang/paraglide-js/cli" -import path from "node:path" - -const BOILERPLATE_FILE = ` - - - - -` - -export const addParaglideJSComponent: CliStep< - { repo: Repository; logger: Logger }, - unknown -> = async (ctx) => { - const layoutFilePath = await findFile({ - base: process.cwd(), - candidates: ["./src/routes/+layout.svelte"], - fs: ctx.repo.nodeishFs, - }) - - if (!layoutFilePath) { - // create it - const layoutFilePath = path.resolve(process.cwd(), "./src/routes/+layout.svelte") - - await ctx.repo.nodeishFs.writeFile(layoutFilePath, BOILERPLATE_FILE) - ctx.logger.success("Added layout file with Language Provider at src/routes/+layout.svelte") - return ctx - } else { - // update it - const content = await ctx.repo.nodeishFs.readFile(layoutFilePath, { encoding: "utf-8" }) - const updatedContent = updateLayoutFile(content) - await ctx.repo.nodeishFs.writeFile(layoutFilePath, updatedContent) - - ctx.logger.success("Added Language Provider to src/routes/+layout.svelte") - return ctx - } -} - -// assumption: The \n" + code - } - - return code -} - -function addParaglideJSComponentToContent(code: string): string { - // find the start & the end of the content portion of the code - const scriptEnd = code.indexOf("") - const styleStart = code.indexOf("".length - const contentEnd = styleStart === -1 ? code.length : styleStart - - let content = code.slice(contentStart, contentEnd) - - const hasSlot = content.includes("\n` + - content + - (hasSlot ? "\n" : "\n\n") - - code = code.slice(0, contentStart) + content + code.slice(contentEnd) - - return code -} - -function insert(original: string, toInsert: string, index: number): string { - return original.slice(0, index) + toInsert + original.slice(index) -} diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/addRerouteFile.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/addRerouteFile.ts deleted file mode 100644 index 7bf6d9c231..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/cli/steps/addRerouteFile.ts +++ /dev/null @@ -1,42 +0,0 @@ -import type { Repository } from "@lix-js/client" -import type { Logger } from "@inlang/paraglide-js/cli" -import { findFile, type CliStep } from "../utils.js" -import path from "node:path" - -const BOILERPLATE = `// file initialized by the Paraglide-SvelteKit CLI - Feel free to edit it -import { i18n } from "${"$"}lib/i18n" - -export const reroute = i18n.reroute() -` - -export const addRerouteHook: CliStep< - { repo: Repository; logger: Logger; typescript: boolean }, - unknown -> = async (ctx) => { - const hooksFilePath = await findFile({ - candidates: ["./src/hooks.js", "./src/hooks.ts"], - base: process.cwd(), - fs: ctx.repo.nodeishFs, - }) - - // if there isn't yet a file there, create one - if (!hooksFilePath) { - const hooksFilePath = path.resolve( - process.cwd(), - "./src/hooks" + (ctx.typescript ? ".ts" : ".js") - ) - - await ctx.repo.nodeishFs.writeFile(hooksFilePath, BOILERPLATE) - ctx.logger.success("Added reroute hook") - } else { - ctx.logger.warn( - [ - "Could not add reroute hook because the hooks file already exists", - "Please add the reroute hook manually", - "`export const reroute = i18n.reroute()`", - ].join("\n") - ) - } - - return ctx -} diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/addVitePlugin.test.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/addVitePlugin.test.ts deleted file mode 100644 index 2e46916cfe..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/cli/steps/addVitePlugin.test.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { describe, it, expect } from "vitest" -import { maybeUpdateViteConfig } from "./addVitePlugin" - -describe("maybeUpdateViteConfig", () => { - it("updates sveltekit's default vite.config.ts", () => { - const config = `import { sveltekit } from "@sveltejs/kit/vite" -import { defineConfig } from "vite" - -export default defineConfig({ - plugins: [sveltekit()], -}) -` - const result = maybeUpdateViteConfig(config) - expect(result.ok).toBe(true) - expect(result.updated).toMatchInlineSnapshot(` - "import { paraglide } from '@inlang/paraglide-sveltekit/vite' - import { sveltekit } from "@sveltejs/kit/vite" - import { defineConfig } from "vite" - - export default defineConfig({ - plugins: [paraglide({ project: './project.inlang', outdir: './src/lib/paraglide' }),sveltekit()], - }) - " - `) - }) - - it("doesn't update configs where the paraglide plugin is already present", () => { - const config = ` - import { sveltekit } from "@sveltejs/kit/vite" - import { paraglide } from "@inlang/paraglide-sveltekit/vite" - import { visualizer } from "rollup-plugin-visualizer" - import { defineConfig } from "vite" - - export default defineConfig({ - plugins: [ - paraglide({ - project: "./project.inlang", - outdir: "./src/paraglide", - }), - sveltekit(), - visualizer({ - filename: "stats.html", - emitFile: true, - }), - ], - }) -` - const result = maybeUpdateViteConfig(config) - expect(result.ok).toBe(false) - }) -}) diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/addVitePlugin.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/addVitePlugin.ts deleted file mode 100644 index 9bc0d27d26..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/cli/steps/addVitePlugin.ts +++ /dev/null @@ -1,90 +0,0 @@ -import type { Repository } from "@lix-js/client" -import type { CliStep } from "../utils.js" -import type { Logger } from "@inlang/paraglide-js/cli" - -export const addParaglideSvelteKitVitePlugin: CliStep< - { - repo: Repository - logger: Logger - viteConfigPath: string - }, - unknown -> = async (ctx) => { - try { - const fileContent = await ctx.repo.nodeishFs.readFile(ctx.viteConfigPath, { - encoding: "utf-8", - }) - - const result = maybeUpdateViteConfig(fileContent) - if (result.ok) { - await ctx.repo.nodeishFs.writeFile(ctx.viteConfigPath, result.updated) - ctx.logger.success("Added @inlang/paraglide-sveltekit/vite vite-plugin to vite config") - } else { - const msg = [ - "Failed to add the `@inlang/paraglide-sveltekit/vite` vite-plugin in vite.config.js.", - "Reason: " + result.reason, - "", - "Please add the plugin manually.", - ].join("\n") - - ctx.logger.warn(msg) - return ctx - } - } catch (e) { - ctx.logger.error( - `Failed to add @inlang/paraglide-sveltekit/vite vite-plugin to ${ctx.viteConfigPath}.` - ) - process.exit(1) - } - - return ctx -} - -type UpdateResult = - | { - ok: true - updated: string - reason?: undefined - } - | { - ok: false - reason: string - updated?: undefined - } - -/** - * @private Only exported for testings - */ -export function maybeUpdateViteConfig(config: string): UpdateResult { - if (config.includes("@inlang/paraglide-sveltekit/vite")) { - return { - ok: false, - reason: "Already present", - } - } - - const PLUGINS_REGEX = /plugins\s*:\s*\[/g - const match = PLUGINS_REGEX.exec(config) - - if (!match) { - return { - ok: false, - reason: "Could not find the plugins array", - } - } - - const endIndex = match.index + match[0].length - const before = config.slice(0, endIndex) - const after = config.slice(endIndex) - - const updatedConfig = - "import { paraglide } from '@inlang/paraglide-sveltekit/vite'\n" + - before + - `paraglide({ project: './project.inlang', outdir: './src/lib/paraglide' }),` + - after - - return { - ok: true, - updated: updatedConfig, - } -} diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/editAppHtmlFile.test.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/editAppHtmlFile.test.ts deleted file mode 100644 index ad3a571c6a..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/cli/steps/editAppHtmlFile.test.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { describe, it, expect } from "vitest" -import { updateAppHTMLFile } from "./editAppHtmlFile" - -describe("updateAppHTMLFile", () => { - it("updates the lang attribute if present", () => { - const html = `` - const result = updateAppHTMLFile(html) - - expect(result.ok).toBe(true) - expect(result.updated).toMatchInlineSnapshot( - '""' - ) - }) - - it("updates doesn't re-add the dir attribute if already present", () => { - const html = `` - const result = updateAppHTMLFile(html) - - expect(result.ok).toBe(true) - expect(result.updated).toMatchInlineSnapshot( - '""' - ) - }) -}) diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/editAppHtmlFile.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/editAppHtmlFile.ts deleted file mode 100644 index 9cca9cf3e5..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/cli/steps/editAppHtmlFile.ts +++ /dev/null @@ -1,77 +0,0 @@ -import type { Repository } from "@lix-js/client" -import type { CliStep } from "../utils.js" -import type { Logger } from "@inlang/paraglide-js/cli" -import path from "node:path" - -export const editAppHtmlFile: CliStep<{ repo: Repository; logger: Logger }, unknown> = async ( - ctx -) => { - try { - const appHtmlPath = path.resolve(process.cwd(), "./src/app.html") - const content = await ctx.repo.nodeishFs.readFile(appHtmlPath, { encoding: "utf-8" }) - - const result = updateAppHTMLFile(content) - if (result.ok) { - await ctx.repo.nodeishFs.writeFile(appHtmlPath, result.updated) - ctx.logger.success("Updated app.html so the lang attribute is always set correctly") - } else { - const msg = [ - "Could not automatically update src/app.html", - "REASON: " + result.reason, - "", - "Please update it manually", - ].join("\n") - ctx.logger.warn(msg) - } - - return ctx - } catch (e) { - ctx.logger.error("Failed to update app.html") - } - return ctx -} - -type UpdateResult = - | { - ok: true - updated: string - reason?: undefined - } - | { - ok: false - reason: string - updated?: undefined - } - -export function updateAppHTMLFile(html: string): UpdateResult { - const langAttributeRegex = /lang=["']?[a-zA-Z-0-9]+["']?/g - const langAttributeMatch = langAttributeRegex.exec(html) - - if (!langAttributeMatch) { - return { - ok: false, - reason: "Could not find an existing lang attribute", - } - } - - html = html.replace(langAttributeMatch[0], 'lang="%paraglide.lang%"') - - const dirAttributeRegex = /dir=["']?[a-zA-Z]+["']?/g - const dirAttributeMatch = dirAttributeRegex.exec(html) - - if (!dirAttributeMatch) { - // add it after the lang attribute - html = html.replace( - 'lang="%paraglide.lang%"', - 'lang="%paraglide.lang%" dir="%paraglide.textDirection%"' - ) - } else { - html = html.replace(dirAttributeMatch[0], 'dir="%paraglide.textDirection%"') - } - - return { - ok: true, - reason: undefined, - updated: html, - } -} diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/scanSvelteKitProject.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/scanSvelteKitProject.ts deleted file mode 100644 index 13ca8ee183..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/cli/steps/scanSvelteKitProject.ts +++ /dev/null @@ -1,68 +0,0 @@ -import type { Repository } from "@lix-js/client" -import { findFile, type CliStep } from "../utils.js" -import type { Logger } from "@inlang/paraglide-js/cli" - -export const scanSvelteKitProject: CliStep< - { repo: Repository; logger: Logger }, - { - packageJsonPath: string - viteConfigPath: string - svelteConfigPath: string - typescript: boolean - } -> = async (ctx) => { - const packageJsonPath = await findFile({ - base: process.cwd(), - candidates: ["./package.json"], - fs: ctx.repo.nodeishFs, - }) - - const svelteConfigPath = await findFile({ - base: process.cwd(), - candidates: ["./svelte.config.js", "./svelte.config.mjs", "./svelte.config.ts"], - fs: ctx.repo.nodeishFs, - }) - - const viteConfigPath = await findFile({ - base: process.cwd(), - candidates: ["./vite.config.js", "./vite.config.mjs", "./vite.config.ts"], - fs: ctx.repo.nodeishFs, - }) - - const tsconfigPath = await findFile({ - base: process.cwd(), - candidates: ["./tsconfig.json"], - fs: ctx.repo.nodeishFs, - }) - - const typescript = tsconfigPath !== undefined - - if (!packageJsonPath) { - ctx.logger.error( - "Failed to find a package.json file in the current directory. Please rerun in a SvelteKit project." - ) - process.exit(1) - } - - if (!viteConfigPath) { - ctx.logger.error( - "Failed to find a Vite Config file in the current directory. Please rerun in a SvelteKit project." - ) - process.exit(1) - } - - if (!svelteConfigPath) { - ctx.logger.error( - "Failed to find a Svelte Config file in the current directory. Please rerun in a SvelteKit project." - ) - process.exit(1) - } - - return { - ...ctx, - packageJsonPath, - viteConfigPath, - svelteConfigPath, - typescript, - } -} diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/updateAppTypes.test.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/updateAppTypes.test.ts deleted file mode 100644 index ab1f429ab7..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/cli/steps/updateAppTypes.test.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { updateAppDTsFile } from "./updateAppTypes" -import { describe, it, expect } from "vitest" - -describe("updateAppDTsFile", () => { - it("updates the default dts file", () => { - const file = `// See https://kit.svelte.dev/docs/types#app -// for information about these interfaces -declare global { - namespace App { - // interface Error {} - // interface Locals {} - // interface PageData {} - // interface Platform {} - } -} - -export {}` - - const result = updateAppDTsFile(file) - expect(result.ok).toBe(true) - expect(result.updated).toMatchInlineSnapshot(` - "import type { AvailableLanguageTag } from "$lib/paraglide/runtime" - import type { ParaglideLocals } from "@inlang/paraglide-sveltekit" - // See https://kit.svelte.dev/docs/types#app - // for information about these interfaces - declare global { - namespace App { - // interface Error {} - interface Locals { - paraglide: ParaglideLocals, - } - // interface PageData {} - // interface Platform {} - } - } - - export {}" - `) - }) -}) diff --git a/inlang/packages/paraglide-sveltekit/src/cli/steps/updateAppTypes.ts b/inlang/packages/paraglide-sveltekit/src/cli/steps/updateAppTypes.ts deleted file mode 100644 index 032f6ca390..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/cli/steps/updateAppTypes.ts +++ /dev/null @@ -1,86 +0,0 @@ -import type { Repository } from "@lix-js/client" -import type { Logger } from "@inlang/paraglide-js/cli" -import { findFile, type CliStep } from "../utils.js" - -export const addTypesForLocals: CliStep< - { - repo: Repository - logger: Logger - }, - unknown -> = async (ctx) => { - const appDTsFilePath = await findFile({ - base: process.cwd(), - candidates: ["./src/app.d.ts"], - fs: ctx.repo.nodeishFs, - }) - - if (!appDTsFilePath) { - ctx.logger.warn("Could not find the app.d.ts file. Please add it manually.") - return ctx - } - - const content = await ctx.repo.nodeishFs.readFile(appDTsFilePath, { encoding: "utf-8" }) - const result = updateAppDTsFile(content) - if (result.ok) { - await ctx.repo.nodeishFs.writeFile(appDTsFilePath, result.updated) - - ctx.logger.success("Added Language Provider to src/routes/+layout.svelte") - } else { - ctx.logger.warn( - "Failed to add the ParaglideLocals type to the app.d.ts file. Please add it manually." - ) - } - - return ctx -} - -type UpdateResult = - | { - ok: true - updated: string - reason?: undefined - } - | { - ok: false - reason: string - updated?: undefined - } - -/** - * @private - */ -export function updateAppDTsFile(code: string): UpdateResult { - // add the type import - if (code.includes("AvailableLanguageTag") || code.includes("ParaglideLocals")) { - return { ok: false, reason: "Paraglide types already present" } - } - - code = [ - 'import type { AvailableLanguageTag } from "$lib/paraglide/runtime"', - 'import type { ParaglideLocals } from "@inlang/paraglide-sveltekit"', - code, - ].join("\n") - - const LocalsInterfaceRegex = /interface\s+Locals\s*\{/g - const match = LocalsInterfaceRegex.exec(code) - if (!match) { - return { ok: false, reason: "Could not find the Locals interface" } - } - - // add the type to the Locals interface - const endIndex = match.index + match[0].length - const before = code.slice(0, endIndex) - const after = code.slice(endIndex) - - const beforeLines = before.split("\n") - beforeLines[beforeLines.length - 1] = beforeLines.at(-1)?.replace("//", "") || "" - - code = - beforeLines.join("\n") + "\n paraglide: ParaglideLocals,\n" + after - - return { - ok: true, - updated: code, - } -} diff --git a/inlang/packages/paraglide-sveltekit/src/cli/utils.ts b/inlang/packages/paraglide-sveltekit/src/cli/utils.ts deleted file mode 100644 index f8520fb513..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/cli/utils.ts +++ /dev/null @@ -1,89 +0,0 @@ -import type { Repository } from "@lix-js/client" -import path from "node:path" - -/** - * One step in a CLI chain. - * Defines which types the context needs to extend and how it extends the context - * - * Cli Steps can be chained to slowly build up the context over time - * - * @example - * ```ts - * const step1: CliStep = async (ctx) => { - * return {...ctx, foo: "hello" } - * } - * - * const step2: CliStep<{ foo: string }, { bar: number }> = async (ctx) => { - * return { ...ctx, bar: 42 } - * } - * - * const initial = { baz: "baz" } as const; - * const ctx1 = await step1(initial); - * const ctx2 = await step2(ctx1); - * - * ctx2 // Has type { foo: string, bar: number, baz: "baz" } - * ``` - */ -export type CliStep = (ctx: Ctx) => Promise - -// get the "In" property of a CLiStep -type CliStepIn> = Step extends CliStep ? In : never -type CliStepOut> = Step extends CliStep ? Out : never - -type Pair, Step2 extends CliStep, any>> = CliStep< - CliStepIn, - CliStepOut & CliStepOut -> - -export function pair, Step2 extends CliStep, any>>( - step1: Step1, - step2: Step2 -): Pair { - return async (ctx) => await step2(await step1(ctx)) -} - -export async function succeedOrElse, U>( - promise: T, - orElse: U -): Promise { - try { - return await promise - } catch (err) { - return orElse - } -} - -const WINDOWS_SLASH_REGEX = /\\/g -function slash(p: string): string { - return p.replace(WINDOWS_SLASH_REGEX, "/") -} - -const isWindows = typeof process !== "undefined" && process.platform === "win32" - -export function normalizePath(id: string) { - return path.posix.normalize(isWindows ? slash(id) : id) -} - -export async function findFile(args: { - candidates: string[] - base: string - fs: Repository["nodeishFs"] -}): Promise { - const promises = args.candidates - .map((c) => path.resolve(args.base, c)) - .map(async (candidate) => ({ - exists: await fileExists(args.fs, candidate), - path: candidate, - })) - const results = await Promise.all(promises) - return results.find((result) => result.exists)?.path -} - -export async function fileExists(fs: Repository["nodeishFs"], path: string): Promise { - try { - const stat = await fs.stat(path) - return stat.isFile() - } catch { - return false - } -} diff --git a/inlang/packages/paraglide-sveltekit/src/constants.js b/inlang/packages/paraglide-sveltekit/src/constants.js deleted file mode 100644 index d2595cde15..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/constants.js +++ /dev/null @@ -1,8 +0,0 @@ -// this is a JS file to avoid transpiling in tests -export const NO_TRANSLATE_ATTRIBUTE = "data-no-translate" - -/** The key with which `invalidate` is called when the language changes */ -export const LANGUAGE_CHANGE_INVALIDATION_KEY = "paraglide:lang" - -/** The name of the cookie in which the language is stored */ -export const LANG_COOKIE_NAME = "paraglide_lang" diff --git a/inlang/packages/paraglide-sveltekit/src/constants.test.js b/inlang/packages/paraglide-sveltekit/src/constants.test.js deleted file mode 100644 index 14c4cf9f03..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/constants.test.js +++ /dev/null @@ -1,22 +0,0 @@ -import { URL } from "node:url" -import { describe, expect, it } from "vitest" -import * as constants from "./constants" - -const DEPENDS_TYPE_REGEX = /^.*:.*$/ -// eslint-disable-next-line no-control-regex -const COOKIE_NAME_REGEX = /^((?![()<>@,;:"\\/[\]?={} \x09])[\x20-\x7E])+$/ - -describe("LANGUAGE_CHANGE_INVALIDATION_KEY", () => { - it("is a valid URL", () => { - expect(() => new URL(constants.LANGUAGE_CHANGE_INVALIDATION_KEY)).not.toThrowError() - }) - it("conforms to the type of LoadEvent#depends", () => { - expect(constants.LANGUAGE_CHANGE_INVALIDATION_KEY).toMatch(DEPENDS_TYPE_REGEX) - }) -}) - -describe("LANG_COOKIE_NAME", () => { - it("is a valid cookie name", () => { - expect(constants.LANG_COOKIE_NAME).toMatch(COOKIE_NAME_REGEX) - }) -}) diff --git a/inlang/packages/paraglide-sveltekit/src/meta.d.ts b/inlang/packages/paraglide-sveltekit/src/meta.d.ts deleted file mode 100644 index a3e47dddf3..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/meta.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -// the Meta.js file is generated by the build script - run it if it's missing -export const PARAGLIDE_SVELTEKIT_VERSION: string -export const PARAGLIDE_SVELTEKIT_MARKETPLACE_ID: string diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/AlternateLinks.svelte b/inlang/packages/paraglide-sveltekit/src/runtime/AlternateLinks.svelte deleted file mode 100644 index 6b427698e7..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/AlternateLinks.svelte +++ /dev/null @@ -1,37 +0,0 @@ - - - -{#if availableLanguageTags.length >= 1} - {#each alternateLinks as href, i} - - {/each} -{/if} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/ParaglideJS.svelte b/inlang/packages/paraglide-sveltekit/src/runtime/ParaglideJS.svelte deleted file mode 100644 index bb6872bd6b..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/ParaglideJS.svelte +++ /dev/null @@ -1,118 +0,0 @@ - - - - - {#if i18n.config.seo.noAlternateLinks !== true && !i18n.config.exclude($page.url.pathname)} - - {/if} - - - -{#key lang} - {@render children?.()} -{/key} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/adapter.client.ts b/inlang/packages/paraglide-sveltekit/src/runtime/adapter.client.ts deleted file mode 100644 index 274e89b970..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/adapter.client.ts +++ /dev/null @@ -1,214 +0,0 @@ -import { createReroute } from "./hooks/reroute.js" -import { base } from "$app/paths" -import { page } from "$app/stores" -import { get } from "svelte/store" -import { dev } from "$app/environment" -import { parseRoute, serializeRoute } from "./utils/route.js" -import { - normaliseBase as canonicalNormaliseBase, - type NormalizedBase, -} from "./utils/normaliseBase.js" -import { createExclude } from "./exclude.js" -import { guessTextDirMap } from "./utils/text-dir.js" -import { - prettyPrintPathDefinitionIssues, - resolveUserPathDefinitions, - validatePathTranslations, - type PathDefinitionTranslations, -} from "@inlang/paraglide-js/internal/adapter-utils" -import type { ParamMatcher } from "@sveltejs/kit" -import { PrefixStrategy } from "./strategy.js" -import type { I18nUserConfig } from "./adapter.server.js" -import type { Runtime } from "@inlang/paraglide-js" - -/** - * The _resolved_ configuration for the i18n instance. - */ -export type I18nConfig = { - runtime: Runtime - translations: PathDefinitionTranslations - exclude: (path: string) => boolean - defaultLanguageTag: T - matchers: Record - prefixDefaultLanguage: "always" | "never" - textDirection: Record - seo: { - noAlternateLinks: boolean - } -} - -/** - * Creates an i18n instance that manages your internationalization. - * - * @param runtime The Paraglide runtime. - * @param options The options for the i18n instance. - * @returns An i18n instance. - * - * @example - * ```ts - * // src/lib/i18n.js - * import * as runtime from "../paraglide/runtime.js" - * import { createI18n } from "@inlang/paraglide-sveltekit" - * - * export const i18n = createI18n(runtime, { ...options }) - * ``` - */ -export function createI18n(runtime: Runtime, options?: I18nUserConfig) { - const translations = options?.pathnames - ? resolveUserPathDefinitions(options.pathnames, runtime.availableLanguageTags) - : {} - - if (dev) { - const issues = validatePathTranslations( - translations, - runtime.availableLanguageTags, - options?.matchers ?? {} - ) - if (issues.length) prettyPrintPathDefinitionIssues(issues) - } - - const excludeConfig = options?.exclude ?? [] - const defaultLanguageTag = options?.defaultLanguageTag ?? runtime.sourceLanguageTag - - const config: I18nConfig = { - defaultLanguageTag, - runtime, - translations, - matchers: options?.matchers ?? {}, - exclude: createExclude(excludeConfig), - prefixDefaultLanguage: options?.prefixDefaultLanguage ?? "never", - textDirection: options?.textDirection ?? guessTextDirMap(runtime.availableLanguageTags), - seo: { - noAlternateLinks: options?.seo?.noAlternateLinks ?? false, - }, - } - - const strategy = PrefixStrategy( - runtime.availableLanguageTags, - defaultLanguageTag, - config.translations, - config.matchers, - config.prefixDefaultLanguage - ) - - // We don't want the translations to be mutable - Object.freeze(translations) - Object.freeze(config) - - return { - /** - * The configuration that was used to create this i18n instance. - */ - config, - - /** - * The routing strategy that's being used. - * - * @private Not part of the public API, may change in non-major versions - */ - strategy, - - /** - * Returns a `reroute` hook that applies the path translations to the paths. - * Register it in your `src/hooks.js` file to enable path translations. - * - * @example - * ```ts - * // src/hooks.js - * import { i18n } from "$lib/i18n.js" - * export const reroute = i18n.reroute() - * ``` - */ - reroute: () => createReroute(strategy), - - /** - * Returns a `handle` hook that set's the correct `lang` attribute - * on the `html` element - * - * SERVER ONLY - */ - handle: () => { - throw new Error(dev ? "`i18n.handle` hook should only be used on the server." : "") - }, - - /** - * Takes in a URL and returns the language that should be used for it. - * - * @param url - * @returns - */ - getLanguageFromUrl(url: URL): T { - const normalizedBase = normaliseBase(base) - const [localizedPath] = parseRoute(url.pathname, normalizedBase) - if (config.exclude(localizedPath)) return config.defaultLanguageTag - return strategy.getLanguageFromLocalisedPath(localizedPath) || config.defaultLanguageTag - }, - - /** - * Takes in a route and returns a translated version of it. - * This is useful for use in `goto` statements and `redirect` calls. - * - * The oposite of `i18n.route()`. - * - * @param canonicalPath The path to translate (eg _/base/about_) - * @param lang The language to translate to - Defaults to the current language - * @returns The translated path (eg _/base/de/ueber-uns_) - * - * @example - * ```ts - * redirect(i18n.resolveRoute("/base/about", "de")) - * ``` - */ - resolveRoute(path: string, lang: T | undefined = undefined) { - if (config.exclude(path)) return path - - const normalizedBase = normaliseBase(base) - const [canonicalPath, dataSuffix] = parseRoute(path as `/${string}`, normalizedBase) - - lang = lang ?? runtime.languageTag() - if (!path.startsWith(normalizedBase)) return path - - const localisedPath = strategy.getLocalisedPath(canonicalPath, lang) - return serializeRoute(localisedPath, normalizedBase, dataSuffix) - }, - - /** - * Takes in a path in one language and returns it's canonical version. - * The oposite of `i18n.resolveRoute()`. - * This is useful for use in: - * - Language Switchers - * - Navigation - * - * @param targetedPathSource The path to translate (eg _/base/de/ueber-uns_) - * @returns The canonical version path (eg _/base/about_) - * - * @example - * ```ts - * - * ``` - */ - route(translatedPath: string) { - const normalizedBase = normaliseBase(base) - - const [localisedPath, dataSuffix] = parseRoute(translatedPath as `/${string}`, normalizedBase) - - const lang = strategy.getLanguageFromLocalisedPath(localisedPath) - const languageTag = lang || config.defaultLanguageTag - const canonicalPath = strategy.getCanonicalPath(localisedPath, languageTag) - - return serializeRoute(canonicalPath, normalizedBase, dataSuffix) - }, - } -} - -function normaliseBase(base: string): NormalizedBase { - if (base === "") return "" - if (base.startsWith("/")) return base as `/${string}` - - // this should only be reachable during component initialization - // We can detect this, because base is only ever a relative path during component initialization - return canonicalNormaliseBase(base, new URL(get(page).url)) -} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/adapter.server.ts b/inlang/packages/paraglide-sveltekit/src/runtime/adapter.server.ts deleted file mode 100644 index ed7ed0fbf7..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/adapter.server.ts +++ /dev/null @@ -1,316 +0,0 @@ -import { createHandle, type HandleOptions } from "./hooks/handle.server.js" -import { createReroute } from "./hooks/reroute.js" -import { base } from "$app/paths" -import { page } from "$app/stores" -import { get } from "svelte/store" -import { dev } from "$app/environment" -import { parseRoute, serializeRoute } from "./utils/route.js" -import { - normaliseBase as canonicalNormaliseBase, - type NormalizedBase, -} from "./utils/normaliseBase.js" -import { createExclude, type ExcludeConfig } from "./exclude.js" -import { guessTextDirMap } from "./utils/text-dir.js" -import { - prettyPrintPathDefinitionIssues, - resolveUserPathDefinitions, - validatePathTranslations, - type PathDefinitionTranslations, -} from "@inlang/paraglide-js/internal/adapter-utils" -import type { ParamMatcher } from "@sveltejs/kit" -import type { UserPathTranslations } from "./config/pathTranslations.js" -import { PrefixStrategy } from "./strategy.js" -import type { Runtime } from "@inlang/paraglide-js" - -export type I18nUserConfig = { - /** - * The default languageTag to use if no locale is specified. - * By default the sourceLanguageTag from the Paraglide runtime is used. - * - * @default runtime.sourceLanguageTag - */ - defaultLanguageTag?: T - - /** - * The translations for pathnames. - * They should **not** include the base path or the language tag. - * - * You can include parameters in the pathnames by using square brackets. - * If you are using a parameter, you must include it in all translations. - * - * If you are using translated pathnames, make sure you have the `i18n.reroute()` hook registered in your `src/hooks.js` file. - * - * @example - * ```ts - * pathnames: { - * "/about": { - * de: "/ueber-uns", - * en: "/about", - * fr: "/a-propos", - * }, - * "/users/[slug]": { - * en: "/users/[slug]", - * // parameters don't have to be their own path-segment - * de: "/benutzer-[slug]", - * // parameters don't have to be in the same position - * fr: "/[slug]/utilisateurs", - * }, - * } - * ``` - */ - pathnames?: UserPathTranslations - - /** - * The matchers for parameters in the pathnames. - * You only need to provide these if you are using the parameter-matchers in the pathnames. - */ - matchers?: Record - - /** - * A list of paths to exclude from translation. You can use strings or regular expressions. - * - * Any path that matches one of the strings or regular expressions will not be translated, - * meaning that it won't get the language tag in the path, any links to it won't be translated, - * and no alternate links will be generated for it. - * - * @default [] - * - * @example - * ```ts - * exclude: ["/base/admin", /^\/base\/admin\/.* /] - * ``` - */ - exclude?: ExcludeConfig - - /** - * Whether to prefix the language tag to the path even if it's the default language. - * - * - If set to `"always"`, the language tag will always be included in the path. (eg `/base/en/about`) - * - If set to `"never"`, the default language will not have a language tag in the path. (eg `/base/about`) - * - * @default "never" - */ - prefixDefaultLanguage?: "always" | "never" - - /** - * The associated text-direction for each language. It's recommended to set this to avoid - * any direction-detection differences between different browsers. - * - * @default Guesses the direction based on the language tag using `Intl.Locale` - * - * @example - * ```ts - * dir: { - * en: "ltr", - * de: "ltr", - * ar: "rtl", - * } - * ``` - */ - textDirection?: Record - - /** - * SEO related options. - */ - seo?: { - /** - * Whether to generate alternate links for each page & language and add them to the head. - * @default true - */ - noAlternateLinks?: boolean - } -} - -/** - * The _resolved_ configuration for the i18n instance. - */ -export type I18nConfig = { - runtime: Runtime - translations: PathDefinitionTranslations - exclude: (path: string) => boolean - defaultLanguageTag: T - matchers: Record - prefixDefaultLanguage: "always" | "never" - textDirection: Record - seo: { - noAlternateLinks: boolean - } -} - -/** - * Creates an i18n instance that manages your internationalization. - * - * @param runtime The Paraglide runtime. - * @param options The options for the i18n instance. - * @returns An i18n instance. - * - * @example - * ```ts - * // src/lib/i18n.js - * import * as runtime from "../paraglide/runtime.js" - * import { createI18n } from "@inlang/paraglide-sveltekit" - * - * export const i18n = createI18n(runtime, { ...options }) - * ``` - */ -export function createI18n(runtime: Runtime, options?: I18nUserConfig) { - const translations = options?.pathnames - ? resolveUserPathDefinitions(options.pathnames, runtime.availableLanguageTags) - : {} - - if (dev) { - const issues = validatePathTranslations( - translations, - runtime.availableLanguageTags, - options?.matchers ?? {} - ) - if (issues.length) prettyPrintPathDefinitionIssues(issues) - } - - const excludeConfig = options?.exclude ?? [] - const defaultLanguageTag = options?.defaultLanguageTag ?? runtime.sourceLanguageTag - - const config: I18nConfig = { - defaultLanguageTag, - runtime, - translations, - matchers: options?.matchers ?? {}, - exclude: createExclude(excludeConfig), - prefixDefaultLanguage: options?.prefixDefaultLanguage ?? "never", - textDirection: options?.textDirection ?? guessTextDirMap(runtime.availableLanguageTags), - seo: { - noAlternateLinks: options?.seo?.noAlternateLinks ?? false, - }, - } - - const strategy = PrefixStrategy( - runtime.availableLanguageTags, - defaultLanguageTag, - config.translations, - config.matchers, - config.prefixDefaultLanguage - ) - - // We don't want the translations to be mutable - Object.freeze(translations) - Object.freeze(config) - - return { - /** - * The configuration that was used to create this i18n instance. - */ - config, - - /** - * The routing strategy that's being used. - * - * @private Not part of the public API, may change in non-major versions - */ - strategy, - - /** - * Returns a `reroute` hook that applies the path translations to the paths. - * Register it in your `src/hooks.js` file to enable path translations. - * - * @example - * ```ts - * // src/hooks.js - * import { i18n } from "$lib/i18n.js" - * export const reroute = i18n.reroute() - * ``` - */ - reroute: () => createReroute(strategy), - - /** - * Returns a `handle` hook that set's the correct `lang` attribute - * on the `html` element - * - * SERVER ONLY - */ - handle: (options: HandleOptions = {}) => { - return createHandle(strategy, config, options) - }, - - /** - * Takes in a URL and returns the language that should be used for it. - * - * @param url - * @returns - */ - getLanguageFromUrl(url: URL): T { - const normalizedBase = normaliseBase(base) - const [localizedPath] = parseRoute(url.pathname, normalizedBase) - if (config.exclude(localizedPath)) return config.defaultLanguageTag - return strategy.getLanguageFromLocalisedPath(localizedPath) || config.defaultLanguageTag - }, - - /** - * Takes in a route and returns a translated version of it. - * This is useful for use in `goto` statements and `redirect` calls. - * - * The oposite of `i18n.route()`. - * - * @param canonicalPath The path to translate (eg _/base/about_) - * @param lang The language to translate to - Defaults to the current language - * @returns The translated path (eg _/base/de/ueber-uns_) - * - * @example - * ```ts - * redirect(i18n.resolveRoute("/base/about", "de")) - * ``` - */ - resolveRoute(path: string, lang: T | undefined = undefined) { - if (config.exclude(path)) return path - - const normalizedBase = normaliseBase(base) - const [canonicalPath, dataSuffix] = parseRoute(path as `/${string}`, normalizedBase) - - lang = lang ?? runtime.languageTag() - if (!path.startsWith(normalizedBase)) return path - - const localisedPath = strategy.getLocalisedPath(canonicalPath, lang) - return serializeRoute(localisedPath, normalizedBase, dataSuffix) - }, - - /** - * Takes in a path in one language and returns it's canonical version. - * The oposite of `i18n.resolveRoute()`. - * This is useful for use in: - * - Language Switchers - * - Navigation - * - * @param targetedPathSource The path to translate (eg _/base/de/ueber-uns_) - * @returns The canonical version path (eg _/base/about_) - * - * @example - * ```ts - * - * ``` - */ - route(translatedPath: string) { - const normalizedBase = normaliseBase(base) - - const [localisedPath, dataSuffix] = parseRoute(translatedPath as `/${string}`, normalizedBase) - - const lang = strategy.getLanguageFromLocalisedPath(localisedPath) - const languageTag = lang || config.defaultLanguageTag - const canonicalPath = strategy.getCanonicalPath(localisedPath, languageTag) - - return serializeRoute(canonicalPath, normalizedBase, dataSuffix) - }, - } -} - -function normaliseBase(base: string): NormalizedBase { - if (base === "") return "" - if (base.startsWith("/")) return base as `/${string}` - - // this should only be reachable during component initialization - // We can detect this, because base is only ever a relative path during component initialization - return canonicalNormaliseBase(base, new URL(get(page).url)) -} - -export type I18n = ReturnType> diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/adapter.test.ts b/inlang/packages/paraglide-sveltekit/src/runtime/adapter.test.ts deleted file mode 100644 index 87b924f98a..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/adapter.test.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { describe, it, expect } from "vitest" -import { createI18n } from "./adapter.server" -import { base } from "$app/paths" -//@ts-ignore -import * as runtime from "$paraglide/runtime.js" - -describe("createI18n", () => { - describe("resolveRoute", () => { - it("resolves routes", () => { - const i18n = createI18n(runtime) - - //don't prefix the default language - expect(i18n.resolveRoute(base + "/about", "en")).toBe(base + "/about") - expect(i18n.resolveRoute(base + "/about", "de")).toBe(base + "/de/about") - }) - - it("uses pathnames", () => { - const i18n = createI18n(runtime, { - pathnames: { - "/about": { - en: "/about", - de: "/ueber-uns", - }, - }, - }) - - expect(i18n.resolveRoute(base + "/about", "en")).toBe(base + "/about") - expect(i18n.resolveRoute(base + "/about", "de")).toBe(base + "/de/ueber-uns") - }) - - it.skipIf(base === "")("leaves the path as is if it doen't start with the base path", () => { - const i18n = createI18n(runtime) - - expect(i18n.resolveRoute("/about", "en")).toBe("/about") - expect(i18n.resolveRoute("/about", "de")).toBe("/about") - }) - - it("leaves the path as is if it's excluded", () => { - const i18n = createI18n(runtime, { - exclude: [base + "/about"], - }) - - expect(i18n.resolveRoute(base + "/about", "en")).toBe(base + "/about") - expect(i18n.resolveRoute(base + "/about", "de")).toBe(base + "/about") - }) - - it("keeps the trailing slash if present", () => { - const i18n = createI18n(runtime) - - expect(i18n.resolveRoute(base + "/about/", "en")).toBe(base + "/about/") - expect(i18n.resolveRoute(base + "/about/", "de")).toBe(base + "/de/about/") - }) - - it("doesn't add the trailing slash if not present", () => { - const i18n = createI18n(runtime) - - expect(i18n.resolveRoute(base + "/about", "en")).toBe(base + "/about") - expect(i18n.resolveRoute(base + "/about", "de")).toBe(base + "/de/about") - }) - }) - - describe("route", () => { - it("get's the canonical route from a localised path", () => { - const i18n = createI18n(runtime) - - expect(i18n.route(base + "/about")).toBe(base + "/about") - expect(i18n.route(base + "/de/about")).toBe(base + "/about") - }) - - it("uses pathnames", () => { - const i18n = createI18n(runtime, { - pathnames: { - "/about": { - en: "/about", - de: "/ueber-uns", - }, - }, - }) - - expect(i18n.route(base + "/about")).toBe(base + "/about") - expect(i18n.route(base + "/de/ueber-uns")).toBe(base + "/about") - }) - - it("keeps the trailing slash if present", () => { - const i18n = createI18n(runtime) - - expect(i18n.route(base + "/about/")).toBe(base + "/about/") - expect(i18n.route(base + "/de/about/")).toBe(base + "/about/") - }) - - it("doesn't add the trailing shalsh if not present", () => { - const i18n = createI18n(runtime) - - expect(i18n.route(base + "/about")).toBe(base + "/about") - expect(i18n.route(base + "/de/about")).toBe(base + "/about") - }) - }) -}) diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/config/pathTranslations.ts b/inlang/packages/paraglide-sveltekit/src/runtime/config/pathTranslations.ts deleted file mode 100644 index ad0b1dd421..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/config/pathTranslations.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { MessageBundleFunction } from "@inlang/paraglide-js" - -/** - * Maps canonical paths to translations for each language. - * - * @example - * ```json - * { - * "/": { - * "en": "/", - * "de": "/de" - * }, - * "/about": { - * "en": "/about", - * "de": "/ueber-uns" - * }, - * "/admin/users/[id]": { - * "en": "/admin/users/[id]", - * "de": "/admin/benutzer/[id]" - * } - * } - * ``` - */ -export type UserPathTranslations = { - [canonicalPath: `/${string}`]: Record | MessageBundleFunction -} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/exclude.test.ts b/inlang/packages/paraglide-sveltekit/src/runtime/exclude.test.ts deleted file mode 100644 index 6f7166f568..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/exclude.test.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { describe, it, expect } from "vitest" -import { createExclude } from "./exclude" - -describe("createExclude", () => { - it("excludes paths", () => { - const exclude = createExclude(["/exclude"]) - expect(exclude("/exclude")).toBe(true) - expect(exclude("/exclude/")).toBe(true) - expect(exclude("/exclude/other")).toBe(false) - expect(exclude("/other")).toBe(false) - }) - - it("excludes paths with regex", () => { - const exclude = createExclude(["/exclude", /^\/other/]) - expect(exclude("/exclude")).toBe(true) - expect(exclude("/exclude/")).toBe(true) - expect(exclude("/exclude/other")).toBe(false) - expect(exclude("/other")).toBe(true) - expect(exclude("/other/")).toBe(true) - expect(exclude("/other/path")).toBe(true) - expect(exclude("/other/path/")).toBe(true) - expect(exclude("/other/path/other")).toBe(true) - }) -}) diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/exclude.ts b/inlang/packages/paraglide-sveltekit/src/runtime/exclude.ts deleted file mode 100644 index c8975971c0..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/exclude.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { normalize } from "./utils/path.js" - -export type ExcludeConfig = (string | RegExp)[] - -export function createExclude(excludeConfig: ExcludeConfig): (path: string) => boolean { - const checks: ((path: string) => boolean)[] = excludeConfig.map((exclude) => - typeof exclude === "string" ? (path) => path === exclude : (path) => exclude.test(path) - ) - - return (path) => checks.some((check) => check(normalize(path))) -} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/hooks/handle.server.ts b/inlang/packages/paraglide-sveltekit/src/runtime/hooks/handle.server.ts deleted file mode 100644 index 05a1a22e31..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/hooks/handle.server.ts +++ /dev/null @@ -1,189 +0,0 @@ -import { parseRoute, serializeRoute } from "../utils/route.js" -import { negotiateLanguagePreferences } from "@inlang/paraglide-js/internal/adapter-utils" -import { base } from "$app/paths" -import { dev } from "$app/environment" -import { LANG_COOKIE_NAME } from "../../constants.js" -import type { Handle } from "@sveltejs/kit" -import type { I18nConfig } from "../adapter.server.js" -import type { RoutingStrategy } from "../strategy.js" -import type { ParaglideLocals } from "../locals.js" -import { ALSContext, GlobalContext, type Context } from "./utils.js" -import { getHrefBetween } from "../utils/diff-urls.js" - -/** - * The default lang attribute string that's in SvelteKit's `src/app.html` file. - * If this is present on the `` attribute it most likely needs to be replaced. - */ -const SVELTEKIT_DEFAULT_LANG_ATTRIBUTE = 'lang="en"' -const VARY_HEADER = ["cookie", "accept-language"].join(", ") - -export type HandleOptions = { - /** - * Which placeholder to find and replace with the language tag. - * Use this placeholder as the lang atrribute in your `src/app.html` file. - * - * - * @default "%paraglide.lang%" - * - * @example - * ```html - * - * - * ``` - * ```ts - * { langPlaceholder: "%paraglide.lang%" } - * ``` - * - */ - langPlaceholder?: string - - /** - * Which placeholder to find and replace with the text-direction of the current language. - * - * @default "%paraglide.textDirection%" - * - * @example - * ```html - * - * - * ``` - * ```ts - * { textDirectionPlaceholder: "%paraglide.textDirection%" } - * ``` - */ - textDirectionPlaceholder?: string - - /** - * If `AsyncLocalStorage` should be used to scope the language state to the current request. - * This makes it impossible for requests to override each other's language. - * - * ONLY DISABLE THIS IF YOU ARE CERTAIN YOUR ENVIRONMENT DOES - * NOT ALLOW CONCURRENT REQUESTS. - * - * For example in Vercel Edge functions - * - * @default false - */ - disableAsyncLocalStorage?: boolean -} - -export const createHandle = ( - strategy: RoutingStrategy, - i18n: I18nConfig, - options: HandleOptions -): Handle => { - let languageContext: Context | undefined = undefined - function initializeLanguageContext( - AsyncLocalStorage: typeof import("node:async_hooks").AsyncLocalStorage | undefined - ) { - languageContext = AsyncLocalStorage ? new ALSContext(AsyncLocalStorage) : new GlobalContext() - i18n.runtime.setLanguageTag(() => { - if (!languageContext) - throw new Error( - "languageContext not initialized - This should never happen, please file an issue" - ) - const val = languageContext.get() - return i18n.runtime.isAvailableLanguageTag(val) ? val : i18n.defaultLanguageTag - }) - } - - const langPlaceholder = options.langPlaceholder ?? "%paraglide.lang%" - const dirPlaceholder = options.textDirectionPlaceholder ?? "%paraglide.textDirection%" - - return async ({ resolve, event }) => { - // if the langauge context is not yet initialized - if (!languageContext) { - const als = options.disableAsyncLocalStorage - ? undefined - : (await import("node:async_hooks")).AsyncLocalStorage - initializeLanguageContext(als) - } - - const [localisedPath, suffix] = parseRoute(event.url.pathname as `/${string}`, base) - const langFromUrl = strategy.getLanguageFromLocalisedPath(localisedPath) - - const langCookie = event.cookies.get(LANG_COOKIE_NAME) - const cookieLang = i18n.runtime.isAvailableLanguageTag(langCookie) ? langCookie : undefined - - const negotiatedLanguagePreferences = negotiateLanguagePreferences( - event.request.headers.get("accept-language"), - i18n.runtime.availableLanguageTags - ) - const negotiatedLanguage = negotiatedLanguagePreferences[0] - - const lang = langFromUrl ?? cookieLang ?? negotiatedLanguage ?? i18n.defaultLanguageTag - - if (lang !== langFromUrl && !i18n.exclude(localisedPath)) { - // redirect to the correct language - - const localisedPathname = strategy.getLocalisedPath(localisedPath, lang) - const fullPath = serializeRoute(localisedPathname, base, suffix) - - const to = new URL(event.url) - to.pathname = fullPath - - const href = getHrefBetween(event.url, to) - - return new Response(undefined, { - status: 302, - headers: { - Location: href, - Vary: VARY_HEADER, - }, - }) - } - - if (lang !== cookieLang && !i18n.exclude(event.url.pathname)) { - event.cookies.set(LANG_COOKIE_NAME, lang, { - maxAge: 31557600, //Math.round(60 * 60 * 24 * 365.25) = 1 year, - sameSite: "lax", - path: base || "/", - httpOnly: false, - }) - } - - const textDirection = i18n.textDirection[lang as T] ?? "ltr" - - const paraglideLocals: ParaglideLocals = { - lang, - textDirection, - } - - // The user needs to have the ParaglideLocals type in their app.d.ts file - // @ts-expect-error - event.locals.paraglide = paraglideLocals - - if (!languageContext) - throw new Error( - "languageContext not initialized - This should never happen, please file an issue" - ) - return languageContext.callAsync(paraglideLocals.lang, async () => { - return await resolve(event, { - transformPageChunk({ html, done }) { - if (!done) return html - - // in dev mode, check if the lang attribute hasn't been replaced - if ( - dev && - !html.includes(langPlaceholder) && - html.includes(SVELTEKIT_DEFAULT_LANG_ATTRIBUTE) - ) { - console.warn( - [ - "It seems like you haven't replaced the `lang` attribute in your `src/app.html` file.", - "Please replace the `lang` attribute with the correct placeholder:", - "", - ` - `, - ` + `, - "", - "This message will not be shown in production.", - ].join("\n") - ) - } - - return html.replace(langPlaceholder, lang).replace(dirPlaceholder, textDirection) - }, - }) - }) - } -} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/hooks/reroute.test.ts b/inlang/packages/paraglide-sveltekit/src/runtime/hooks/reroute.test.ts deleted file mode 100644 index 0fd43913d3..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/hooks/reroute.test.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { describe, it, expect } from "vitest" -import { base } from "$app/paths" -import { createReroute } from "./reroute" - -//@ts-ignore -import * as runtime from "$paraglide/runtime.js" -import { PrefixStrategy } from "../strategy" - -const reroute = createReroute<"en" | "de">( - PrefixStrategy(runtime.availableLanguageTags, runtime.sourceLanguageTag, {}, {}, "always") -) - -describe("reroute", () => { - it("keeps the trailing slash if present", () => { - const url = new URL("https://example.com" + base + "/some-page/") - const pathname = reroute({ url }) - expect(pathname).toBe(base + "/some-page/") - }) - - it("doesn't add a trailing slash", () => { - const url = new URL("https://example.com" + base + "/some-page") - const pathname = reroute({ url }) - expect(pathname).toBe(base + "/some-page") - }) - - /* - it("keeps the trailing slash on the language", () => { - const url = new URL("https://example.com" + base + "/de/") - const pathname = reroute({ url }) - expect(pathname).toBe(base ? base + "/" : "/") - }) - */ - - it("removes the languagePrefix", () => { - const url = new URL("https://example.com" + base + "/de") - const pathname = reroute({ url }) - expect(pathname).toBe(base ? base : "/") - }) -}) diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/hooks/reroute.ts b/inlang/packages/paraglide-sveltekit/src/runtime/hooks/reroute.ts deleted file mode 100644 index 7e119b2924..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/hooks/reroute.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { parseRoute, serializeRoute } from "../utils/route.js" -import { base } from "$app/paths" -import { dev } from "$app/environment" -import type { RoutingStrategy } from "../strategy.js" -import type { Reroute } from "@sveltejs/kit" - -/** - * Returns a reroute function that applies the given translations to the paths - * @param translations - */ -export const createReroute = (strategy: RoutingStrategy): Reroute => { - return ({ url }) => { - try { - const [localisedPath, dataSuffix] = parseRoute(url.pathname as `/${string}`, base) - const lang = strategy.getLanguageFromLocalisedPath(localisedPath) - if (!lang) return url.pathname - const canonicalPath = strategy.getCanonicalPath(localisedPath, lang) - - return serializeRoute(canonicalPath, base, dataSuffix) - } catch (e) { - if (dev) console.error("[@inlang/paraglide-sveltekit] Error thrown during reroute", e) - return url.pathname - } - } -} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/hooks/utils.ts b/inlang/packages/paraglide-sveltekit/src/runtime/hooks/utils.ts deleted file mode 100644 index 0f67fbfbfe..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/hooks/utils.ts +++ /dev/null @@ -1,34 +0,0 @@ -export type ALS = import("node:async_hooks").AsyncLocalStorage -export type ALSPrototype = typeof import("node:async_hooks").AsyncLocalStorage - -export interface Context { - get(): T | undefined - callAsync: any>(val: T, cb: CB) => Promise>> -} - -export class ALSContext implements Context { - ctx: ALS - constructor(ALS: ALSPrototype) { - this.ctx = new ALS() - } - - get(): T | undefined { - return this.ctx.getStore() - } - - async callAsync(val: T, cb: () => any) { - return await this.ctx.run(val, cb) - } -} -export class GlobalContext implements Context { - value: T | undefined = undefined - - get(): T | undefined { - return this.value - } - - async callAsync(val: T, cb: () => any) { - this.value = val - return await cb() - } -} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/index.client.ts b/inlang/packages/paraglide-sveltekit/src/runtime/index.client.ts deleted file mode 100644 index 8a5f7222e7..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/index.client.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { default as ParaglideJS } from "./ParaglideJS.svelte" -export { createI18n } from "./adapter.client.js" -export type { ParaglideLocals } from "./locals.js" diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/index.server.ts b/inlang/packages/paraglide-sveltekit/src/runtime/index.server.ts deleted file mode 100644 index f9046f0e43..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/index.server.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { default as ParaglideJS } from "./ParaglideJS.svelte" -export { createI18n } from "./adapter.server.js" -export type { ParaglideLocals } from "./locals.js" diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/internal/index.js b/inlang/packages/paraglide-sveltekit/src/runtime/internal/index.js deleted file mode 100644 index 038bcf3db9..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/internal/index.js +++ /dev/null @@ -1,82 +0,0 @@ -// this is a JS file to avoid transpiling in tests -import { NO_TRANSLATE_ATTRIBUTE } from "../../constants.js" -import { getContext, setContext } from "svelte" - -const PARAGLIDE_CONTEXT_KEY = {} - -/** - * @template {string} T - * @typedef {{ translateHref: (href: string, hreflang?: T) => string }} ParaglideContext - */ - -/** - * @template {string} T - * @private - */ -export const getParaglideContext = () => { - return /** @type { ParaglideContext | undefined}*/ (getContext(PARAGLIDE_CONTEXT_KEY)) -} -/** - * @template {string} T - * @param {ParaglideContext} context - * @private - */ -export const setParaglideContext = (context) => { - setContext(PARAGLIDE_CONTEXT_KEY, context) -} - -/** - * Returns the functions necessary to translate a link component - * - * @private - */ -export function getTranslationFunctions() { - const ctx = getParaglideContext() - - /** - * @param {unknown} value - * @param { string | undefined} lang_value - * @returns - */ - function translateAttribute(value, lang_value) { - if (typeof value !== "string") return value - if (!ctx) return value - return ctx.translateHref(value, lang_value) - } - - /** - * @typedef {{ - * attribute_name: string - * lang_attribute_name?: string - *}} AttributeTranslation - */ - - /** - * Takes in an object of attributes, and an object of attribute translations - * & applies the translations to the attributes - * - * @param {Record} attrs - * @param {AttributeTranslation[]} attribute_translations - */ - function handleAttributes(attrs, attribute_translations) { - if (attrs[NO_TRANSLATE_ATTRIBUTE]) return attrs - - for (const { attribute_name, lang_attribute_name } of attribute_translations) { - if (attribute_name in attrs) { - const attr = attrs[attribute_name] - const lang_attr = lang_attribute_name ? attrs[lang_attribute_name] : undefined - - attrs[attribute_name] = translateAttribute( - attr, - typeof lang_attr === "string" ? lang_attr : undefined - ) - } - } - - return attrs - } - - // we use a tuple instead of an object because the names need to be mangled on the other side - // also this minifies better - return [translateAttribute, handleAttributes] -} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/locals.ts b/inlang/packages/paraglide-sveltekit/src/runtime/locals.ts deleted file mode 100644 index 85400e0476..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/locals.ts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * The interface for Paraglide's Locals, available under `event.locals.paraglide` - * - * @example - * ```ts - * // src/app.d.ts - * import type { AvailableLanguageTag } from "$lib/paraglide/runtime" - * import type { ParaglideLocals } from "@inlang/paraglide-sveltekit" - * - * declare global { - * namespace App { - * interface Locals { - * paraglide: ParaglideLocals - * } - * } - * } - * ``` - */ -export type ParaglideLocals = { - /** - * The language that's being used for the current request. - * @deprecated As of `v0.10` you can just call `languageTag()` on the server - */ - lang: T - - /** - * The text-direction present on the `` tag - */ - textDirection: "ltr" | "rtl" -} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/strategy.test.ts b/inlang/packages/paraglide-sveltekit/src/runtime/strategy.test.ts deleted file mode 100644 index 3f12855a92..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/strategy.test.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { describe, it, expect } from "vitest" -import { PrefixStrategy } from "./strategy" - -describe("PrefixStrategy", () => { - const strategy = PrefixStrategy( - ["en", "de"], - "en", - { - "/about": { - en: "/about", - de: "/ueber-uns", - }, - }, - {}, - "never" - ) - - it("detects the language", () => { - expect(strategy.getLanguageFromLocalisedPath("/about")).toBe("en") - expect(strategy.getLanguageFromLocalisedPath("/de/ueber-uns")).toBe("de") - }) - - it("gets the canonical path if no translation exists", () => { - expect(strategy.getCanonicalPath("/de/some-page", "de")).toBe("/some-page") - }) - - it("gets the canonical path of a path with just the language prefix", () => { - expect(strategy.getCanonicalPath("/de", "de")).toBe("/") - }) - - it("gets the canonical path with a translation", () => { - expect(strategy.getCanonicalPath("/de/ueber-uns", "de")).toBe("/about") - }) - - it("gets the localised path if no translation exists", () => { - expect(strategy.getLocalisedPath("/some-page", "de")).toBe("/de/some-page") - expect(strategy.getLocalisedPath("/some-page", "en")).toBe("/some-page") - }) -}) diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/strategy.ts b/inlang/packages/paraglide-sveltekit/src/runtime/strategy.ts deleted file mode 100644 index b65e8333db..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/strategy.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { - bestMatch, - resolveRoute, - type PathDefinitionTranslations, -} from "@inlang/paraglide-js/internal/adapter-utils" -import type { ParamMatcher } from "@sveltejs/kit" - -export type RoutingStrategy = ReturnType> - -export function PrefixStrategy( - availableLanguageTags: readonly T[], - defaultLanguageTag: T, - translations: PathDefinitionTranslations, - matchers: Record, - prefixDefaultLanguage: "always" | "never" -) { - function getLanguageFromLocalisedPath(localisedPath: string): T | undefined { - const segments = localisedPath.split("/") - const maybeLang = segments[1] - if ( - availableLanguageTags.includes(maybeLang as any) && - (prefixDefaultLanguage === "always" || maybeLang !== defaultLanguageTag) - ) { - return maybeLang as T - } - - if (prefixDefaultLanguage === "never") return defaultLanguageTag - else return undefined - } - - function getLocalisedPath(canonicalPath: string, languageTag: T): string { - const trailingSlash = canonicalPath.endsWith("/") && canonicalPath !== "/" - canonicalPath = trailingSlash ? canonicalPath.slice(0, -1) : canonicalPath - - let translatedPath = turnIntoTranslatedPath(canonicalPath, languageTag, translations, matchers) - - if (trailingSlash) { - translatedPath += "/" - } - - if (prefixDefaultLanguage === "always" || languageTag !== defaultLanguageTag) { - translatedPath = `/${languageTag}${translatedPath}` - } - - return translatedPath - } - - function getCanonicalPath(localisedPath: string, languageTag: T): string { - const trailingSlahsBefore = localisedPath.endsWith("/") && localisedPath !== "/" - if (prefixDefaultLanguage === "always" || languageTag !== defaultLanguageTag) { - localisedPath = localisedPath.replace(`/${languageTag}`, "") || "/" - } - - const trailingSlash = trailingSlahsBefore - localisedPath = trailingSlash ? localisedPath.slice(0, -1) : localisedPath - - let canonicalPath = turnIntoCanonicalPath(localisedPath, languageTag, translations, matchers) - - if (trailingSlash) { - canonicalPath += "/" - } - - return canonicalPath - } - - return { - getLanguageFromLocalisedPath, - getLocalisedPath, - getCanonicalPath, - } -} - -/** - * Resolves the canonical path from a translated path - * @param translatedPath The translated path WITHOUT the language or base - */ -function turnIntoCanonicalPath( - translatedPath: string, - lang: string, - translations: PathDefinitionTranslations, - matchers: Record -): string { - for (const [canonicalPathDefinition, translationsForPath] of Object.entries(translations)) { - if (!(lang in translationsForPath)) continue - - const translatedPathDefinition = translationsForPath[lang] - if (!translatedPathDefinition) continue - - const match = bestMatch(translatedPath, [translatedPathDefinition], matchers) - if (!match) continue - - // return the resolved canonical path - return resolveRoute(canonicalPathDefinition, match.params) - } - - // fall back to translated path if no canonical path is found - return translatedPath -} - -function turnIntoTranslatedPath( - canonicalPath: string, - lang: string, - translations: PathDefinitionTranslations, - matchers: Record -) { - const match = bestMatch(canonicalPath, Object.keys(translations), matchers) - if (!match) return canonicalPath - - const translationsForPath = translations[match.id as `/${string}`] - if (!translationsForPath) return canonicalPath - - const translatedPath = translationsForPath[lang] - if (!translatedPath) return canonicalPath - - // return the translated path - return resolveRoute(translatedPath, match.params) -} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/utils/cookie.ts b/inlang/packages/paraglide-sveltekit/src/runtime/utils/cookie.ts deleted file mode 100644 index 2f91fb2be7..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/utils/cookie.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { LANG_COOKIE_NAME } from "../../constants.js" -import type { NormalizedBase } from "./normaliseBase.js" - -/** - * Returns a language cookie string that can be assigned to `document.cookie`. - * - * Use this to update the language cookie in the browser. - * - * The cookie lasts for 1 year. - */ -export const createLangCookie = (lang: string, path: NormalizedBase) => - `${LANG_COOKIE_NAME}=${lang};Path=${path};SameSite=lax;Max-Age=31557600` diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/utils/diff-urls.test.ts b/inlang/packages/paraglide-sveltekit/src/runtime/utils/diff-urls.test.ts deleted file mode 100644 index 7a752084c0..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/utils/diff-urls.test.ts +++ /dev/null @@ -1,184 +0,0 @@ -import { describe, expect, test } from "vitest" -import { getHrefBetween } from "./diff-urls.js" - -describe("getHrefBetween", () => { - test.concurrent("two identical urls with different search query", () => { - const from = new URL("http://localhost:3000") - const to = new URL("http://localhost:3000?foo=bar") - - const href = getHrefBetween(from, to) - - expect(href).toBe("/?foo=bar") - expect(new URL(href, from).href).toBe(to.href) - }) - - test.concurrent("two identical urls with different fragment", () => { - const from = new URL("http://localhost:3000") - const to = new URL("http://localhost:3000#some-fragment") - - const href = getHrefBetween(from, to) - - expect(href).toBe("/#some-fragment") - expect(new URL(href, from).href).toBe(to.href) - }) - - test.concurrent("two identical urls with different search query and fragment", () => { - const from = new URL("http://localhost:3000") - const to = new URL("http://localhost:3000?foo=bar#some-fragment") - - const href = getHrefBetween(from, to) - - expect(href).toBe("/?foo=bar#some-fragment") - expect(new URL(href, from).href).toBe(to.href) - }) - - test.concurrent("two identical urls with different protocols", () => { - const from = new URL("http://localhost:3000") - const to = new URL("https://localhost:3000") - - const href = getHrefBetween(from, to) - - expect(href).toBe("https://localhost:3000/") - expect(new URL(href, from).href).toBe(to.href) - }) - - test("child page, no trailing slash", () => { - const from = new URL("http://localhost:5173/en") - const to = new URL("http://localhost:5173/en/about") - - const href = getHrefBetween(from, to) - - expect(href).toBe("/en/about") - expect(new URL(href, from).href).toBe(to.href) - }) - - test.concurrent("two identical urls with different hosts", () => { - const from = new URL("http://localhost:3000") - const to = new URL("http://localhost:3001") - - const href = getHrefBetween(from, to) - - expect(href).toBe("//localhost:3001/") - expect(new URL(href, from).href).toBe(to.href) - }) - - test.concurrent("two identical urls with different ports", () => { - const from = new URL("http://localhost:3000") - const to = new URL("http://localhost:3001") - - const href = getHrefBetween(from, to) - - expect(href).toBe("//localhost:3001/") - expect(new URL(href, from).href).toBe(to.href) - }) - - test.concurrent("get to parents-page", () => { - const from = new URL("https://example.com/foo/some-page") - const to = new URL("https://example.com/foo/") - - const href = getHrefBetween(from, to) - - expect(href).toBe("/foo/") - expect(new URL(href, from).href).toBe(to.href) - }) - - test.concurrent("get to grand-parents-page", () => { - const from = new URL("https://example.com/foo/bar/some-page") - const to = new URL("https://example.com/foo/") - - const href = getHrefBetween(from, to) - - expect(href).toBe("/foo/") - expect(new URL(href, from).href).toBe(to.href) - }) - - test.concurrent("get to child page", () => { - const from = new URL("https://example.com/foo/") - const to = new URL("https://example.com/foo/some-page/") - - const href = getHrefBetween(from, to) - - expect(href).toBe("/foo/some-page/") - expect(new URL(href, from).href).toBe(to.href) - }) - - test.concurrent("get to grand-child page", () => { - const from = new URL("https://example.com/foo/") - const to = new URL("https://example.com/foo/bar/some-page") - - const href = getHrefBetween(from, to) - - expect(href).toBe("/foo/bar/some-page") - expect(new URL(href, from).href).toBe(to.href) - }) - - test.concurrent("get to sibling page, with trailing slash", () => { - const from = new URL("https://example.com/foo/bar/some-page/") - const to = new URL("https://example.com/foo/bar/another-page/") - - const href = getHrefBetween(from, to) - - expect(href).toBe("/foo/bar/another-page/") - expect(new URL(href, from).href).toBe(to.href) - }) - - test.concurrent("absolute path is shorter than relative path", () => { - const from = new URL("https://example.com/foo/bar/some-page") - const to = new URL("https://example.com/") - - const href = getHrefBetween(from, to) - - expect(href).toBe("/") - expect(new URL(href, from).href).toBe(to.href) - }) - - test.concurrent("urls with different credentials", () => { - const from = new URL("https://user:pass1@example.com/some-page") - const to = new URL("https://user:pass2@example.com/some-page") - - const href = getHrefBetween(from, to) - - expect(href).toBe("//user:pass2@example.com/some-page") - expect(new URL(href, from).href).toBe(to.href) - }) - - test.concurrent("same credentials, different host", () => { - const from = new URL("https://user:pass@localhost:3000") - const to = new URL("https://user:pass@localhost:3001") - - const href = getHrefBetween(from, to) - - expect(href).toBe("//user:pass@localhost:3001/") - expect(new URL(href, from).href).toBe(to.href) - }) - - test.concurrent("same credentials, different path", () => { - const from = new URL("https://user:pass@localhost:3000/") - const to = new URL("https://user:pass@localhost:3000/about") - - const href = getHrefBetween(from, to) - - expect(href).toBe("//user:pass@localhost:3000/about") - expect(new URL(href, from).href).toBe(to.href) - }) - - test.concurrent("same credentials, different protocol", () => { - const from = new URL("https://user:pass@localhost:3000/") - const to = new URL("http://user:pass@localhost:3000/") - - const href = getHrefBetween(from, to) - - expect(href).toBe("http://user:pass@localhost:3000/") - expect(new URL(href, from).href).toBe(to.href) - }) - - test.concurrent("only username", () => { - const from = new URL("https://user@localhost:3000/") - const to = new URL("https://user@localhost:3001/") - - const href = getHrefBetween(from, to) - - expect(href).toBe("//user@localhost:3001/") - expect(new URL(href, from).href).toBe(to.href) - }) -}) diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/utils/diff-urls.ts b/inlang/packages/paraglide-sveltekit/src/runtime/utils/diff-urls.ts deleted file mode 100644 index fb85a560c3..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/utils/diff-urls.ts +++ /dev/null @@ -1,27 +0,0 @@ -export const metaUrl = import.meta.url - -/** - * Get's the shortest href that gets from `from` to `to` - * - * @returns An href that gets from `from` to `to` - */ -export function getHrefBetween(from: URL, to: URL): string { - //check if they use the same protocol - If not, we can't do anything - if (from.protocol !== to.protocol) { - return to.href - } - - //If the credentials are included, we always need to include them - so there is no point in diffing further - if (to.password || to.username) { - const credentials = [to.username, to.password].filter(Boolean).join(":") - return "//" + credentials + "@" + to.host + to.pathname + to.search + to.hash - } - - // host = hostname + port - if (from.host !== to.host) { - //since they have the same protocol, we can omit the protocol - return "//" + to.host + to.pathname + to.search + to.hash - } - - return to.pathname + to.search + to.hash -} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/utils/external.test.ts b/inlang/packages/paraglide-sveltekit/src/runtime/utils/external.test.ts deleted file mode 100644 index 09e748ed19..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/utils/external.test.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { describe, it, expect } from "vitest" -import { isExternal } from "./external" - -describe("isExternal", () => { - it("returns true if the origin is different", () => { - const url = new URL("https://example.com") - const currentUrl = new URL("https://example.org") - const base = "" - - expect(isExternal(url, currentUrl, base)).toBe(true) - }) - - it("returns true if the pathname does not start with the base", () => { - const url = new URL("https://example.com/foo") - const currentUrl = new URL("https://example.com") - const base = "/bar" - - expect(isExternal(url, currentUrl, base)).toBe(true) - }) - - it("returns false if the origin is the same and the pathname starts with the base", () => { - const url = new URL("https://example.com/foo") - const currentUrl = new URL("https://example.com") - const base = "/foo" - - expect(isExternal(url, currentUrl, base)).toBe(false) - }) - - it("can deal with a relative base", () => { - const url = new URL("https://example.com/foo") - const currentUrl = new URL("https://example.com") - const base = "." - - expect(isExternal(url, currentUrl, base)).toBe(false) - }) -}) diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/utils/external.ts b/inlang/packages/paraglide-sveltekit/src/runtime/utils/external.ts deleted file mode 100644 index 0b61ab3821..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/utils/external.ts +++ /dev/null @@ -1,4 +0,0 @@ -export function isExternal(url: URL, currentUrl: URL, base: string) { - const absoluteBase = new URL(base ?? "/", currentUrl).pathname - return url.origin !== currentUrl.origin || !url.pathname.startsWith(absoluteBase) -} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/utils/normaliseBase.test.ts b/inlang/packages/paraglide-sveltekit/src/runtime/utils/normaliseBase.test.ts deleted file mode 100644 index ac24255e49..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/utils/normaliseBase.test.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { describe, it, expect } from "vitest" -import { normaliseBase } from "./normaliseBase" - -describe("normaliseBase", () => { - it("should return '' if base is empty", () => { - expect(normaliseBase("", new URL("http://example.com/some-subpage"))).toBe("") - }) - - it("should return absolute path if base is relative", () => { - expect(normaliseBase("..", new URL("http://example.com/a/b/c/"))).toBe("/a/b") - }) - - it("should return '' if base is at the root", () => { - expect(normaliseBase("..", new URL("http://example.com/some-subpage"))).toBe("") - }) - - it("should return absolute path if base is absolute", () => { - expect(normaliseBase("/a/b/", new URL("http://example.com/a/b/c/"))).toBe("/a/b") - }) -}) diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/utils/normaliseBase.ts b/inlang/packages/paraglide-sveltekit/src/runtime/utils/normaliseBase.ts deleted file mode 100644 index 3af3025ca9..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/utils/normaliseBase.ts +++ /dev/null @@ -1,12 +0,0 @@ -export type NormalizedBase = `/${string}` | "" -/** - * Normalises SvelteKit's base path value to always be an absolute path - or an empty string. - * - * @param baseValue - The { base } value exported from "$app/paths" - * @param currentUrl - The current URL of the page - */ -export function normaliseBase(baseValue: string, currentUrl: URL): NormalizedBase { - if (baseValue === "") return "" - const absoluteBase = new URL(baseValue, currentUrl).pathname as NormalizedBase - return (absoluteBase.endsWith("/") ? absoluteBase.slice(0, -1) : absoluteBase) as NormalizedBase -} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/utils/path.test.ts b/inlang/packages/paraglide-sveltekit/src/runtime/utils/path.test.ts deleted file mode 100644 index 47c13c1fc2..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/utils/path.test.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { describe, it, expect } from "vitest" -import * as path from "./path" - -describe("path.normalize", () => { - it("adds a leading slash", () => { - expect(path.normalize("foo")).toBe("/foo") - }) - - it("removes a trailing slash", () => { - expect(path.normalize("foo/")).toBe("/foo") - }) - - it("can deal with empty segments", () => { - expect(path.normalize("foo//bar")).toBe("/foo/bar") - }) - - it("can deal with an empty input", () => { - expect(path.normalize("")).toBe("/") - }) -}) diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/utils/path.ts b/inlang/packages/paraglide-sveltekit/src/runtime/utils/path.ts deleted file mode 100644 index b99c08b73e..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/utils/path.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * Always starts with a slash and never ends with a slash. - */ -export function normalize(path: string): `/${string}` { - return `/${path.split("/").filter(Boolean).join("/")}` -} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/utils/route.test.ts b/inlang/packages/paraglide-sveltekit/src/runtime/utils/route.test.ts deleted file mode 100644 index d083aa3dd7..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/utils/route.test.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { describe, it, expect } from "vitest" -import { parseRoute, serializeRoute } from "./route" - -describe("parsePath", () => { - it("correctly identifies the segments (with base path)", () => { - const [path] = parseRoute("/base/foo/bar", "/base") - expect(path).toBe("/foo/bar") - }) - - it("correctly identifies the segments (without base path)", () => { - const [path] = parseRoute("/foo/bar", "") - expect(path).toBe("/foo/bar") - }) - - it("deals with root inputs", () => { - const [path] = parseRoute("/", "") - expect(path).toBe("/") - }) - - it("deals with an input that is just the base inputs", () => { - const [path] = parseRoute("/base", "/base") - expect(path).toBe("/") - }) - - it("removes data-request suffixes as data requests", () => { - const [path, dataSuffix] = parseRoute("/foo/bar/__data.json", "") - expect(dataSuffix).toBe("/__data.json") - expect(path).toBe("/foo/bar") - }) - - it("identifies data-requests as html data requests", () => { - const [path, dataSuffix] = parseRoute("/foo/bar/.html__data.json", "") - expect(dataSuffix).toBe("/.html__data.json") - expect(path).toBe("/foo/bar") - }) - - it("preserves trailing slash", () => { - const [path] = parseRoute("/base/foo/bar/", "/base") - expect(path).toBe("/foo/bar/") - }) - - it("decodes encoded url segments", () => { - const [path] = parseRoute("/%20", "") - expect(path).toBe("/ ") - }) -}) - -describe("serializeRoute", () => { - it("correctly serializes the path (with base path)", () => { - const path = serializeRoute("/foo/bar", "/base", undefined) - expect(path).toBe("/base/foo/bar") - }) - - it("correctly serializes the path (without base path)", () => { - const path = serializeRoute("/foo/bar", "", undefined) - expect(path).toBe("/foo/bar") - }) - - it("correctly serializes the path (with data suffix)", () => { - const path = serializeRoute("/foo/bar", "", "/__data.json") - expect(path).toBe("/foo/bar/__data.json") - }) - - it("correctly serializes the path (with data suffix and base)", () => { - const path = serializeRoute("/foo/bar", "/base", "/__data.json") - expect(path).toBe("/base/foo/bar/__data.json") - }) - - it("preserves the trailing slash", () => { - const path = serializeRoute("/foo/bar/", "/base", undefined) - expect(path).toBe("/base/foo/bar/") - }) -}) diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/utils/route.ts b/inlang/packages/paraglide-sveltekit/src/runtime/utils/route.ts deleted file mode 100644 index 8b418681db..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/utils/route.ts +++ /dev/null @@ -1,72 +0,0 @@ -import type { NormalizedBase } from "./normaliseBase.js" - -export type DataSuffix = `/${string}` -export type AbsolutePath = `/${string}` - -/** - * Takes a path and removes the base & data suffix - * - * @param fullPath The path to parse, including base & data suffix. Should be absolute - * @returns A tuple of the path and the data suffix - */ -export function parseRoute( - fullPath: string, - normalizedBase: NormalizedBase -): [AbsolutePath, DataSuffix | undefined] { - const decodedPath = safeDecode(fullPath) as AbsolutePath - - const pathWithoutBase = removeBase(decodedPath, normalizedBase) - const [path, dataSuffix] = removeDataSuffix(pathWithoutBase) - return [path, dataSuffix] -} - -/** - * Adds the base & data suffix back to a path - * - * @param path The path to serialize - * @param base The normalized base path - * @param dataSuffix The data suffix (if it exists) - */ -export const serializeRoute = ( - path: string, - normalizedBase: NormalizedBase, - dataSuffix: DataSuffix | undefined -) => [normalizedBase, path, dataSuffix ?? ""].filter((s) => s !== "/").join("") || "/" - -/** - * Removes the base from an absolute path - * @param absolutePath - * @param normalizedBase - * @returns - */ -function removeBase(absolutePath: AbsolutePath, normalizedBase: NormalizedBase): AbsolutePath { - const withoutBase = absolutePath.replace(normalizedBase, "") - return withoutBase.startsWith("/") ? (withoutBase as AbsolutePath) : `/${withoutBase}` -} - -/** - * Removes any known data suffix from the path - * - * @param absolutePath The absolute path - * @returns A tuple of the path and the data suffix - */ -function removeDataSuffix(absolutePath: AbsolutePath): [AbsolutePath, DataSuffix | undefined] { - /** The path suffix SvelteKit adds on Data requests */ - const KNOWN_SUFFIXES: DataSuffix[] = ["/.html__data.json", "/__data.json"] - - const dataSuffix = KNOWN_SUFFIXES.find((suffix) => absolutePath.endsWith(suffix)) - - if (dataSuffix) { - return [(absolutePath.slice(0, -dataSuffix.length) || "/") as AbsolutePath, dataSuffix] - } else { - return [absolutePath, undefined] - } -} - -function safeDecode(maybeEncoded: string): string { - try { - return decodeURI(maybeEncoded) - } catch { - return maybeEncoded - } -} diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/utils/text-dir.test.ts b/inlang/packages/paraglide-sveltekit/src/runtime/utils/text-dir.test.ts deleted file mode 100644 index 2bfb60372a..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/utils/text-dir.test.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { describe, it, expect } from "vitest" -import { guessTextDir, guessTextDirMap } from "./text-dir" - -describe("guessTextDir", () => { - it("should guess the text direction in Node", () => { - expect(guessTextDir("ar")).toBe("rtl") - expect(guessTextDir("en")).toBe("ltr") - expect(guessTextDir("de")).toBe("ltr") - expect(guessTextDir("")).toBe("ltr") - }) -}) - -describe("guessTextDirMap", () => { - it("should guess the text direction for each language", () => { - expect(guessTextDirMap(["ar", "en", "de"])).toEqual({ - ar: "rtl", - en: "ltr", - de: "ltr", - }) - }) -}) diff --git a/inlang/packages/paraglide-sveltekit/src/runtime/utils/text-dir.ts b/inlang/packages/paraglide-sveltekit/src/runtime/utils/text-dir.ts deleted file mode 100644 index 8e413fb219..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/runtime/utils/text-dir.ts +++ /dev/null @@ -1,27 +0,0 @@ -const RTL = "rtl" -const LTR = "ltr" - -type TextDirection = "rtl" | "ltr" - -export function guessTextDir(lang: T): TextDirection { - // this is super unreliable across browsers, so we expect errors - try { - const locale = new Intl.Locale(lang) - - if ("textInfo" in locale) { - // @ts-ignore - Chrome & Node - return locale.textInfo.direction === RTL ? RTL : LTR - } - - // @ts-ignore - Safari only - return locale.getTextInfo().direction === RTL ? RTL : LTR - } catch (e) { - //Firefox lmao - return LTR - } -} - -export function guessTextDirMap(langs: readonly T[]): Record { - const entries: [T, TextDirection][] = langs.map((lang) => [lang, guessTextDir(lang)]) - return Object.fromEntries(entries) as Record -} diff --git a/inlang/packages/paraglide-sveltekit/src/vite/config.ts b/inlang/packages/paraglide-sveltekit/src/vite/config.ts deleted file mode 100644 index 3a46422ce5..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/vite/config.ts +++ /dev/null @@ -1,39 +0,0 @@ -import type { paraglideVitePlugin } from "@inlang/paraglide-js" - -type VitePluginUserConfig = Parameters[0] - -export type UserConfig = VitePluginUserConfig & { - /** - * The preprocessor rewrites any links in your markup - * and translates them according to the routing strategy. - * - * If you don't want this, you can disable it here. - * - * @default false - */ - disablePreprocessor?: boolean -} - -/** - * The full config for @inlang/paraglide-sveltekit. - * Any values not provided by the user are filled in with defaults. - */ -export type Config = VitePluginUserConfig & { - disablePreprocessor: boolean -} - -/** - * Takes in the config provided by the user and returns the full config used internally. - * All values not provided by the user are filled in with defaults. - * - * @param userConfig The user config - * @returns The internal full config - */ -export function resolveConfig(userConfig: UserConfig): Config { - const fullConfig: Config = { - ...userConfig, - disablePreprocessor: userConfig.disablePreprocessor ?? false, - } - - return fullConfig -} diff --git a/inlang/packages/paraglide-sveltekit/src/vite/index.ts b/inlang/packages/paraglide-sveltekit/src/vite/index.ts deleted file mode 100644 index 896401bf63..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/vite/index.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { preprocessor, type PreprocessorConfig } from "./preprocessor/index.js" -import { type UserConfig, type Config, resolveConfig } from "./config.js" -import type { Plugin } from "vite" -import { paraglideVitePlugin } from "@inlang/paraglide-js" - -// Vite's Plugin type is often incompatible between vite versions, so we use any here -export function paraglide(userConfig: UserConfig): any { - const config = resolveConfig(userConfig) - const plugins: Plugin[] = [paraglideVitePlugin(config)] - - if (!config.disablePreprocessor) { - plugins.push(registerPreprocessor(config)) - } - - return plugins -} - -/** - * This plugin registers the preprocessor with Svelte. - */ -function registerPreprocessor( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - _config: Config -): Plugin { - const preprocessConfig: PreprocessorConfig = {} - return { - name: "@inlang/paraglide-sveltekit/vite/register-preprocessor", - api: { - //The Svelte vite-plugin looks for this and automatically adds it to the preprocess array - sveltePreprocess: preprocessor(preprocessConfig), - }, - } -} diff --git a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/index.test.ts b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/index.test.ts deleted file mode 100644 index 46b1b483b9..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/index.test.ts +++ /dev/null @@ -1,417 +0,0 @@ -import { describe, it } from "vitest" -import { render as ssr } from "svelte/server" -import { CompileOptions, preprocess } from "svelte/compiler" -import { preprocessor as createPreprocessor } from "./index" -import { compile } from "svelte/compiler" -import { rollup } from "rollup" -import virtual from "@rollup/plugin-virtual" -import alias from "@rollup/plugin-alias" -import { nodeResolve } from "@rollup/plugin-node-resolve" -import path from "node:path" -import { fileURLToPath } from "node:url" - -const __filename = fileURLToPath(import.meta.url) -const __dirname = path.dirname(__filename) - -const preprocessor = createPreprocessor({}) - -//Make sure these tests are run concurrently - Otherwise they will take forever -describe.concurrent( - "preprocessor", - () => { - it("leaves non-translatable attributes alone", async ({ expect }) => { - const hardcodedElementCode = `Test` - const dynamicElementCode = `Test` - - const hardcodedElementHtml = await renderComponent(hardcodedElementCode) - const dynamicElementHtml = await renderComponent(dynamicElementCode) - - expect(hardcodedElementHtml).toMatchInlineSnapshot( - '"Test"' - ) - expect(dynamicElementHtml).toMatchInlineSnapshot( - '"Test"' - ) - }) - - it("translates hardcoded href attributes", async ({ expect }) => { - const code = `Test` - const html = await renderComponent(code) - expect(html).toMatchInlineSnapshot(`"Test"`) - }) - - it("translates parameterized href attributes", async ({ expect }) => { - const code = ` - - Test` - - const html = await renderComponent(code) - expect(html).toMatchInlineSnapshot(`"Test"`) - }) - - it("translates links inside {#if} blocks", async ({ expect }) => { - const code = ` - - {#if show} - Test - {/if} - ` - - const html = await renderComponent(code) - expect(html).toMatchInlineSnapshot('"Test"') - }) - - it("translates links inside {:else} blocks", async ({ expect }) => { - const ifCode = ` - {#if false} - If - {:else} - Test - {/if} - ` - - const eachCode = ` - {#each [] as item} - Each - {:else} - Test - {/each} - ` - - const elseIfCode = ` - {#if false} - If - {:else if true} - Test - {:else} - Else - {/if} - ` - - const ifHtml = await renderComponent(ifCode) - const eachHtml = await renderComponent(eachCode) - const elseIfHtml = await renderComponent(elseIfCode) - - expect(ifHtml).toMatchInlineSnapshot('"Test"') - expect(eachHtml).toMatchInlineSnapshot('"Test"') - expect(elseIfHtml).toMatchInlineSnapshot('"Test"') - }) - - it("translates links inside {:then} and {:catch} blocks", async ({ expect }) => { - const code = ` - - {#await promise} - Awaiting - {:then}Test{/await} - ` - - const html = await renderComponent(code) - expect(html).toMatchInlineSnapshot('"Test"') - }) - - it("translates shorthand href attributes", async ({ expect }) => { - const code = ` - - content` - - const html = await renderComponent(code) - expect(html).toMatchInlineSnapshot('"content"') - }) - - it("uses the hreflang attribute", async ({ expect }) => { - const code = `content` - - const html = await renderComponent(code) - expect(html).toMatchInlineSnapshot('"content"') - }) - - it("uses the hreflang attribute with shorthand", async ({ expect }) => { - const code = ` - - content` - - const html = await renderComponent(code) - expect(html).toMatchInlineSnapshot('"content"') - }) - - it("translates the spread operator - no hreflang", async ({ expect }) => { - const code = ` - - content` - - const html = await renderComponent(code) - expect(html).toMatchInlineSnapshot('"content"') - }) - - it("translates the spread operator - with hreflang", async ({ expect }) => { - const code = ` - - content` - - const html = await renderComponent(code) - expect(html).toMatchInlineSnapshot('"content"') - }) - - it("translates tags if they are links", async ({ expect }) => { - const hardcoded = `content` - const parameterized = ` - ` - - const hardcodedHtml = await renderComponent(hardcoded) - const parameterizedHtml = await renderComponent(parameterized) - - expect(hardcodedHtml).toMatchInlineSnapshot( - '"content"' - ) - expect(parameterizedHtml).toMatchInlineSnapshot( - '""' - ) - }) - - it("handles the spread operator on tags", async ({ expect }) => { - const formCode = ` - - ` - - const linkCode = ` - - content` - - const formHtml = await renderComponent(formCode) - const linkHtml = await renderComponent(linkCode) - - expect(formHtml).toMatchInlineSnapshot('"
"') - expect(linkHtml).toMatchInlineSnapshot('"content"') - }) - - it("ignore the href value if it isn't a string", async ({ expect }) => { - const attributeCode = ` - - - content - ` - - const shorthandCode = ` - - - content - ` - - const spreadCode = ` - - - content - ` - - expect(await renderComponent(attributeCode)).toMatchInlineSnapshot('"content"') - expect(await renderComponent(shorthandCode)).toMatchInlineSnapshot('"content"') - expect(await renderComponent(spreadCode)).toMatchInlineSnapshot('"content"') - }) - - it("translates the action attribute of forms", async ({ expect }) => { - const code = `
` - - const html = await renderComponent(code) - expect(html).toMatchInlineSnapshot('"
"') - }) - - it("translates the formaction attribute of buttons", async ({ expect }) => { - const code = `` - - const html = await renderComponent(code) - expect(html).toMatchInlineSnapshot('""') - }) - - it("translates the spread operator - with external hreflang", async ({ expect }) => { - const code = ` - - content` - - const html = await renderComponent(code) - expect(html).toMatchInlineSnapshot('"content"') - }) - - it("handles conflicting hreflang values (last one wins)", async ({ expect }) => { - const code = ` - - content` - - const html = await renderComponent(code) - expect(html).toMatchInlineSnapshot('"content"') - }) - - it("handles a language switcher", async ({ expect }) => { - const code = ` - - - - {#each availableLanguageTags as lang} - {lang} - {/each} - ` - - const html = await renderComponent(code) - expect(html).toMatchInlineSnapshot( - '"deen"' - ) - }) - - it("handles stores as hrefs", async ({ expect }) => { - const code = ` - - content` - const html = await renderComponent(code) - expect(html).toMatchInlineSnapshot('"content"') - }) - - it("rewrites hrefs in components with snippets", async ({ expect }) => { - const code = ` - {#snippet myLink(href)} - content - {/snippet} - - {@render myLink("/test")} - ` - const html = await renderComponent(code) - expect(html).toMatchInlineSnapshot('"content"') - }) - - it("handles rune syntax", async ({ expect }) => { - const code = ` - - test - ` - - const html = await renderComponent(code) - expect(html).toMatchInlineSnapshot('"test"') - }) - - it("handles rune with shorthand", async ({ expect }) => { - const code = ` - - test - ` - - const html = await renderComponent(code) - expect(html).toMatchInlineSnapshot('"test"') - }) - }, - { timeout: 60_000 } -) - -/** - * Takes in a svelte component -> preprocesses it -> SSRs it in context -> returns the html - * - * This truly is one of the test utilities of all time - */ -async function renderComponent(svelteCode: string) { - const EntrySvelteCode = ` - - - - ` - const compilerOptions: CompileOptions = { - generate: "server", - } - - const preprocessedEntry = await preprocess(EntrySvelteCode, preprocessor, { - filename: "src/Entry.svelte", - }) - const preprocessedComponent = await preprocess(svelteCode, preprocessor, { - filename: "src/Component.svelte", - }) - - const compiledEntry = compile(preprocessedEntry.code, compilerOptions) - const compiledComponent = compile(preprocessedComponent.code, compilerOptions) - - // if there are warnings, throw them - if (compiledComponent.warnings.length >= 1) { - const warnings = [...compiledComponent.warnings] - throw new Error("Got Warning while compiling: \n\n" + warnings.map((w) => w.code).join("\n\n")) - } - - const bundle = await rollup({ - input: "src/Entry.svelte", - plugins: [ - virtual({ - "src/Entry.svelte": compiledEntry.js.code, - "src/Component.svelte": compiledComponent.js.code, - }), - alias({ - entries: { - "@inlang/paraglide-sveltekit/internal": path.resolve( - __dirname, - "../../runtime/internal/index.js" - ), - }, - }), - nodeResolve(), - ], - onwarn: (w) => { - if (w.message.includes("Circular dependency")) return - console.warn(w) - }, - }) - - const compiledBundle = await bundle.generate({ format: "esm" }) - const base64Bundle = Buffer.from(compiledBundle.output[0].code).toString("base64") - const module = await import("data:text/javascript;base64," + base64Bundle) - const { html } = ssr(module.default, { context: new Map(), props: {} }) - - //remove all html comments - return html.replace(//g, "") -} diff --git a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/index.ts b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/index.ts deleted file mode 100644 index c4ae12347a..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/index.ts +++ /dev/null @@ -1,113 +0,0 @@ -import { parse, type PreprocessorGroup } from "svelte/compiler" -import MagicString from "magic-string" -import { shouldApply } from "./precheck.js" -import { rewrite } from "./rewrite.js" - -export type PreprocessorConfig = Record - -export type AttributeTranslation = { - attribute_name: string - lang_attribute_name?: string -} - -export type TranslationDefinition = Record - -const TRANSLATIONS: TranslationDefinition = { - a: [ - { - attribute_name: "href", - lang_attribute_name: "hreflang", - }, - ], - form: [ - { - attribute_name: "action", - }, - ], - button: [ - { - attribute_name: "formaction", - }, - ], -} - -// eslint-disable-next-line @typescript-eslint/no-unused-vars -export function preprocessor(_config: PreprocessorConfig): PreprocessorGroup { - return { - name: "@inlang/paraglide-sveltekit", - markup: ({ filename, content }) => { - const NOOP = { code: content } - - //I dont' know when this would happen, but it's better to be safe than sorry - if (!filename) return NOOP - - //dont' process components owned by the framework - if (filename.includes(".svelte-kit")) return NOOP - - if ( - content.includes("]*>.*?<\/a\s*>|]*\/>/g) - ) { - console.warn( - "[paraglide] `` tags in the same file as `` won't be translated.\nConsider moving it into another component.\n" + - filename - ) - } - - //Run quick checks to see if preprocessing should be applied - skip parsing if not - if (!shouldApply(content, TRANSLATIONS)) return NOOP - - //Parse the file - let root: any - try { - root = parse(content) - } catch (error) { - console.error( - `[@inlang/paraglide-sveltekit] Failed to parse ${filename}. Link translations were NOT applied.`, - error - ) - - return NOOP - } - - const code = new MagicString(content) - - const passResult = rewrite({ - root, - code, - originalCode: content, - translations: TRANSLATIONS, - }) - - const before = new Set(passResult.scriptAdditions?.before) - const after = new Set(passResult.scriptAdditions?.after) - - //Inject any imports that were added by the passes - modifyScriptTag(root, code, { before, after }) - - //Generate the code and map - const map = code.generateMap({ hires: true }) - return { code: code.toString(), map } - }, - } -} - -function modifyScriptTag( - root: any, - code: MagicString, - additions: { before?: Iterable; after?: Iterable } -) { - const before = additions.before ? [...additions.before] : [] - const after = additions.after ? [...additions.after] : [] - - if (!root.instance) { - code.prepend("\n") - } else { - //@ts-ignore - const scriptStart = root.instance.content.start as number - //@ts-ignore - const scriptEnd = root.instance.content.end as number - code.appendLeft(scriptStart, "\n" + before.join("\n") + "\n") - code.appendRight(scriptEnd, "\n" + after.join("\n") + "\n") - } -} diff --git a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/precheck.test.ts b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/precheck.test.ts deleted file mode 100644 index 6aa9e274c7..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/precheck.test.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { it, expect } from "vitest" -import { shouldApply } from "./precheck" -import ParaglideJSComponentCode from "../../runtime/ParaglideJS.svelte?raw" - -it("should not apply on the ParaglideJS component", () => { - expect( - shouldApply(ParaglideJSComponentCode, { - a: [ - { - attribute_name: "href", - }, - ], - }) - ).toBe(false) -}) - -it("should apply on a component with ", () => { - const code = ` -

- content -

- ` - - expect( - shouldApply(code, { - a: [ - { - attribute_name: "href", - }, - ], - }) - ).toBe(true) -}) - -it("should apply on a component with and spread operator", () => { - const code = ` -

- content -

- ` - - expect( - shouldApply(code, { - a: [ - { - attribute_name: "href", - }, - ], - }) - ).toBe(true) -}) - -it("should apply on a component that matches the translation", () => { - const code = ` -

- content -

- ` - - expect( - shouldApply(code, { - a: [ - { - attribute_name: "href", - }, - ], - }) - ).toBe(true) -}) diff --git a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/precheck.ts b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/precheck.ts deleted file mode 100644 index 9f6a38d741..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/precheck.ts +++ /dev/null @@ -1,27 +0,0 @@ -import type { TranslationDefinition } from "./index.js" - -/** - * Performs a quick and dirty check to see if the file should be processed. - * Will have false positives, but no false negatives. - * - * @param content - The source code of the .svelte file - * @param TRANSLATIONS - The translation definitions - * @returns true/false if the file should be processed - */ -export function shouldApply(content: string, TRANSLATIONS: TranslationDefinition) { - const includesSpread = content.includes("{...") - const includesSvelteElement = content.includes(" - content.includes(tr.attribute_name) - ) - - if ((includesSpread || includesAttribute) && (includesElement || includesSvelteElement)) { - return true - } - } - - return false -} diff --git a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/rewrite.ts b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/rewrite.ts deleted file mode 100644 index 1d5a851afa..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/rewrite.ts +++ /dev/null @@ -1,236 +0,0 @@ -import { NO_TRANSLATE_ATTRIBUTE } from "../../constants.js" -import type { TranslationDefinition } from "./index.js" -import { getAttributeByName, getElementsFromAst } from "./utils/ast.js" -import { attrubuteValuesToJSValue } from "./utils/attributes-to-values.js" -import { identifier } from "./utils/identifier.js" -import { uneval } from "devalue" -import * as c from "./utils/codegen.js" -import type { Attribute, ElementNode, SpreadAttribute } from "./types.js" -import type MagicString from "magic-string" - -const i = identifier(`translate_attribute_pass`) - -export const rewrite = ({ - root: ast, - code, - originalCode, - translations, -}: { - root: any - code: MagicString - originalCode: string - translations: TranslationDefinition -}) => { - if (hasAlreadyBeenRewritten(originalCode)) - return { - scriptAdditions: { - before: [], - after: [], - }, - } - - const svelteElements = getElementsFromAst(ast, "svelte:element") - - for (const [element_name, attribute_translations] of Object.entries(translations)) { - const elements = [...getElementsFromAst(ast, element_name)] - - for (const element of elements) { - if (hasSpreadAttribute(element)) { - const { attributeObjectSource, attributes } = getAttributesObject(element, originalCode) - if (attributes.size === 0) continue //fast path - - // add a new spread attribute at the end of the element - const newSpreadAttributeString = c.spreadAttr( - `${i("handle_attributes")}(${attributeObjectSource}, ${uneval(attribute_translations)})` - ) - - // remove all attributes that were replaced from the code - for (const attribute of attributes) { - code.remove(attribute.start, attribute.end) - } - - //Add the new spread attribute - code.appendRight(element.start + element.name.length + 1, " " + newSpreadAttributeString) - - //add just before the element - code.appendLeft(element.start, "") - } else { - for (const element_translations of Object.entries(translations)) { - const attribute_translations = element_translations[1] - for (const { attribute_name, lang_attribute_name } of attribute_translations) { - const attribute = getAttributeByName(element, attribute_name) - if (!attribute) continue - - if (getAttributeByName(element, NO_TRANSLATE_ATTRIBUTE)) continue - - const langAttribute = lang_attribute_name - ? getAttributeByName(element, lang_attribute_name) - : undefined - - const newAttributeCode = c.attribute( - attribute_name, - - `${i("translateAttribute")}( - ${attrubuteValuesToJSValue( - attribute.value, - originalCode - )}, - ${ - langAttribute - ? attrubuteValuesToJSValue( - langAttribute.value, - originalCode - ) - : "undefined" - } - )` - ) - - //replace the attribute with the new attribute - code.overwrite(attribute.start, attribute.end, newAttributeCode) - } - } - } - } - } - - for (const element of svelteElements) { - const thisAttribute = element.tag - if (!thisAttribute) continue - - const thisValue = - typeof thisAttribute === "string" - ? c.str(thisAttribute) - : "`${" + originalCode.slice(thisAttribute.start, thisAttribute.end) + "}`" - - if (hasSpreadAttribute(element)) { - const { attributeObjectSource, attributes } = getAttributesObject(element, originalCode) - if (attributes.size === 0) continue //fast path - - // builds a giant ternary expression that applies the translated attributes based on the thisAttribute - let value = attributeObjectSource - for (const [element_name, attribute_translations] of Object.entries(translations)) { - value = c.ternary( - c.eq(thisValue, c.str(element_name)), - `${i("handle_attributes")}(${attributeObjectSource}, ${uneval(attribute_translations)})`, - value - ) - } - - // remove the replaced attributes from the code - for (const attribute of attributes) { - code.remove(attribute.start, attribute.end) - } - - // add a new spread attribute at the end of the element - const newSpreadAttributeString = c.spreadAttr(value) - - code.appendRight(element.start + element.name.length + 1, " " + newSpreadAttributeString) - - //add just before the element - code.appendLeft(element.start, "") - } else { - for (const [element_name, attribute_translations] of Object.entries(translations)) { - for (const { attribute_name, lang_attribute_name } of attribute_translations) { - const attribute = getAttributeByName(element, attribute_name) - if (!attribute) continue - - if (getAttributeByName(element, NO_TRANSLATE_ATTRIBUTE)) continue - - const langAttribute = lang_attribute_name - ? getAttributeByName(element, lang_attribute_name) - : undefined - - const newAttributeCode = c.attribute( - attribute_name, - c.ternary( - c.eq(thisValue, c.str(element_name)), - `${i("translateAttribute")}(${attrubuteValuesToJSValue( - attribute.value, - originalCode - )},${ - langAttribute - ? attrubuteValuesToJSValue(langAttribute.value, originalCode) - : "undefined" - })`, - attrubuteValuesToJSValue(attribute.value, originalCode) - ) - ) - - //replace the attribute with the new attribute - code.overwrite(attribute.start, attribute.end, newAttributeCode) - } - } - } - } - - const before = [ - `import { getTranslationFunctions as ${i( - "getTranslationFunctions" - )} } from '@inlang/paraglide-sveltekit/internal';`, - ] - const after: string[] = [ - `const ${i("translationFunctions")} = ${i("getTranslationFunctions")}();\nconst [ ${i( - "translateAttribute" - )}, ${i("handle_attributes")} ] = ${i("translationFunctions")};`, - ] - - return { - scriptAdditions: { - before, - after, - }, - } -} - -function getAttributesObject( - element: ElementNode, - originalCode: string -): { - attributes: Set | SpreadAttribute> - attributeObjectSource: string -} { - const attributeEntries: string[] = [] - const replacedAttributes = new Set | SpreadAttribute>() - - for (const attribute of element.attributes) { - switch (attribute.type) { - case "Attribute": { - attributeEntries.push( - `${c.str(attribute.name)} : ${attrubuteValuesToJSValue(attribute.value, originalCode)}` - ) - replacedAttributes.add(attribute) - break - } - case "Spread": { - const code: string = originalCode.slice( - //@ts-ignore - attribute.expression.start, - //@ts-ignore - attribute.expression.end - ) - - attributeEntries.push(`...(${code})`) - replacedAttributes.add(attribute) - break - } - } - } - - return { - attributes: replacedAttributes, - attributeObjectSource: `{${attributeEntries.join(", ")}}`, - } -} - -function hasSpreadAttribute(element: ElementNode): boolean { - return element.attributes.some((attribute) => attribute.type === "Spread") -} - -/** - * Protection measure to make sure we don't rewrite the same code twice - * @param originalCode - */ -function hasAlreadyBeenRewritten(originalCode: string): boolean { - return originalCode.includes(i("getTranslationFunctions")) -} diff --git a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/types.d.ts b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/types.d.ts deleted file mode 100644 index 8f900e0ed7..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/types.d.ts +++ /dev/null @@ -1,53 +0,0 @@ -import type { LegacyRoot } from "svelte/compiler" -import type { BaseDirective } from "svelte/types/compiler/interfaces" - -export type TemplateNode = LegacyRoot["html"] - -export type ElementNode = { - start: number - end: number - type: "Element" - attributes: (Attribute | SpreadAttribute | BaseDirective)[] -} & (Name extends "svelte:element" - ? { - name: "svelte:element" - tag: string | Expression - } - : { name: Name }) - -type Expression = { - start: number - end: number -} - -type SpreadAttribute = Extract -type Attribute = Extract & { - value: AttributeValue[] | boolean -} - -export type AttributeValue = - | { - start: number - end: number - type: "Text" - raw: string - data: string - } - | { - start: number - end: number - type: "MustacheTag" - expression: { - start: number - end: number - } - } - | { - start: number - end: number - type: "AttributeShorthand" - expression: { - start: number - end: number - } - } diff --git a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/ast.ts b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/ast.ts deleted file mode 100644 index d0d69140e8..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/ast.ts +++ /dev/null @@ -1,42 +0,0 @@ -import type { Attribute, ElementNode, TemplateNode } from "../types.js" - -export function getElementsFromAst(ast: any, elementName: Name): ElementNode[] { - const links: ElementNode[] = [] - - function walk(templateNode: TemplateNode) { - if ( - templateNode.type === "Element" && - "name" in templateNode && - templateNode.name === elementName - ) { - links.push(templateNode as ElementNode) - } - - for (const child of "children" in templateNode ? templateNode.children : []) { - walk(child) - } - - // @ts-ignore - if (templateNode.else) walk(templateNode.else) - // @ts-ignore - if (templateNode.then) walk(templateNode.then) - // @ts-ignore - if (templateNode.catch) walk(templateNode.catch) - } - - walk(ast.html) - return links -} - -export function hasSpreadAttribute(element: ElementNode): boolean { - return element.attributes.some((attribute) => attribute.type === "Spread") -} - -export function getAttributeByName( - element: ElementNode, - name: T -): Attribute | undefined { - return element.attributes.find( - (attribute) => attribute.type === "Attribute" && attribute.name === name - ) as Attribute | undefined -} diff --git a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/attributes-to-values.test.ts b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/attributes-to-values.test.ts deleted file mode 100644 index 54f9692fcd..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/attributes-to-values.test.ts +++ /dev/null @@ -1,116 +0,0 @@ -import { describe, it, expect } from "vitest" -import { attrubuteValuesToJSValue } from "./attributes-to-values" -import type { AttributeValue } from "../types" - -describe("attributesToValues", () => { - it("stringifies a single text value", () => { - const originalCode = "hello" - - const attributeValues: AttributeValue[] = [ - { - start: 0, - end: 5, - type: "Text", - raw: "hello", - data: "hello", - }, - ] - - const result = attrubuteValuesToJSValue(attributeValues, originalCode) - expect(result).toBe("`hello`") - }) - - it("stringifies a single mustache tag", () => { - const originalCode = "{hello}" - const attributeValues: AttributeValue[] = [ - { - start: 0, - end: 7, - type: "MustacheTag", - expression: { - start: 1, - end: 6, - }, - }, - ] - - const result = attrubuteValuesToJSValue(attributeValues, originalCode) - expect(result).toBe("hello") - }) - - it("stringifies an interweaved text and mustache tag", () => { - const originalCode = "hello {world}" - const attributeValues: AttributeValue[] = [ - { - start: 0, - end: 5, - type: "Text", - raw: "hello ", - data: "hello ", - }, - { - start: 6, - end: 13, - type: "MustacheTag", - expression: { - start: 7, - end: 12, - }, - }, - ] - - const result = attrubuteValuesToJSValue(attributeValues, originalCode) - expect(result).toBe("`hello ${world}`") - }) - - it("escapes backticks in text", () => { - const originalCode = "hello `world`" - - const attributeValues: AttributeValue[] = [ - { - start: 0, - end: 13, - type: "Text", - raw: "hello `world`", - data: "hello `world`", - }, - ] - - const result = attrubuteValuesToJSValue(attributeValues, originalCode) - expect(result).toBe("`hello \\`world\\``") - }) - - it("escapes ${ in text", () => { - const originalCode = "hello ${world" - - const attributeValues: AttributeValue[] = [ - { - start: 0, - end: 13, - type: "Text", - raw: "hello ${world", - data: "hello ${world", - }, - ] - - const result = attrubuteValuesToJSValue(attributeValues, originalCode) - expect(result).toBe("`hello \\${world`") - }) - - it("doesn't escape $ in text", () => { - const originalCode = "hello $world" - - const attributeValues: AttributeValue[] = [ - { - start: 0, - end: 12, - type: "Text", - raw: "hello $world", - data: "hello $world", - }, - ] - - const result = attrubuteValuesToJSValue(attributeValues, originalCode) - expect(result).toBe("`hello $world`") - }) -}) diff --git a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/attributes-to-values.ts b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/attributes-to-values.ts deleted file mode 100644 index 39fb6a8626..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/attributes-to-values.ts +++ /dev/null @@ -1,56 +0,0 @@ -import type { AttributeValue } from "../types.js" -import { escapeForTemplateString } from "./escape.js" - -/** - * Takes in an AST of an AttributeValue and returns JS code that evaluates to the same value. - * @param values - An array of AttributeValues - * @param originalCode - The original code that the AST was parsed from, neede to sample the expression code - * @returns A JS expression that evaluates to the same value as the AttributeValue - */ -export function attrubuteValuesToJSValue( - values: AttributeValue[] | boolean | string, - originalCode: string -): string { - if (typeof values === "boolean") return values.toString() - if (typeof values === "string") return "`" + escapeForTemplateString(values) + "`" - - let templateString = "`" - - if (!(Symbol.iterator in Object(values))) { - console.error(values) - } - - //If all values are AttributeShorthand or MustacheTag we don't need to stringify them - if (noTextNodes(values)) { - let code = "" - for (const value of values) { - code += originalCode.slice(value.expression.start, value.expression.end) - } - return code - } - - for (const value of values) { - switch (value.type) { - case "Text": - templateString += escapeForTemplateString(value.data) - break - case "AttributeShorthand": - case "MustacheTag": { - const expressionCode = originalCode.slice(value.expression.start, value.expression.end) - templateString += "${" - templateString += expressionCode - templateString += "}" - break - } - } - } - - templateString += "`" - return templateString -} - -function noTextNodes( - values: AttributeValue[] -): values is Exclude[] { - return !values.some((value) => value.type === "Text") as any -} diff --git a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/codegen.ts b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/codegen.ts deleted file mode 100644 index fc4f81f046..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/codegen.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { escapeForDoubleQuotes } from "./escape.js" - -export function ternary(predicate: string, consequent: string, alternate: string) { - return `${predicate} ? ${consequent} : ${alternate}` -} - -/** - * Returns code for an equality check between two values. - * - * @example - * - * eq("a", "b") - * // -> '(a === b)' - */ -export function eq(first: string, second: string) { - return `(${first} === ${second})` -} - -export function neq(first: string, second: string) { - return `(${first} !== ${second})` -} - -export function and(first: string, second: string) { - return `(${first} && ${second})` -} - -export function or(first: string, second: string) { - return `(${first} || ${second})` -} - -export function str(value: string) { - return `"${escapeForDoubleQuotes(value)}"` -} - -/** - * Returns an attribute declaration for a given name and value. - * - * @example - * - * attribute("val", "a + b") - * // -> 'val={a + b}' - * - */ -export function attribute(name: string, value: string) { - return `${name}={${value}}` -} - -export function spreadAttr(value: string) { - return `{...(${value})}` -} diff --git a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/escape.ts b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/escape.ts deleted file mode 100644 index 0421d5fb36..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/escape.ts +++ /dev/null @@ -1,12 +0,0 @@ -export const escapeForDoubleQuotes = (str: string) => str.replace(/"/g, '\\"') - -export const escapeForTemplateString = (str: string) => - str.replace(/`/g, "\\`").replace(/\${/g, "\\${") - -export const toJSIdentifier = (str: string) => { - //replace all non-alphanumeric characters with underscores - str = str.replace(/[^a-zA-Z0-9]/g, "_") - //If the first character is a number, prefix it with an underscore - if ((str[0] ?? "").match(/[0-9]/)) str = "_" + str - return str -} diff --git a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/identifier.ts b/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/identifier.ts deleted file mode 100644 index f05a215d83..0000000000 --- a/inlang/packages/paraglide-sveltekit/src/vite/preprocessor/utils/identifier.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { toJSIdentifier } from "./escape.js" - -/** - * Returns a unique identifier for a given original name. - * Used to avoid name collisions when generating code. - * - * @param original_name The original name to create an identifier for - * @returns A unique identifier for the given original name - */ -export const identifier = (context: string) => (original_name: string) => - toJSIdentifier(`paraglide_sveltekit_${context}_${original_name}`) diff --git a/inlang/packages/paraglide-sveltekit/svelte.config.js b/inlang/packages/paraglide-sveltekit/svelte.config.js deleted file mode 100644 index e0944ef29d..0000000000 --- a/inlang/packages/paraglide-sveltekit/svelte.config.js +++ /dev/null @@ -1,8 +0,0 @@ -import { vitePreprocess } from "@sveltejs/vite-plugin-svelte" - -/** @type {import('@sveltejs/kit').Config} */ -const config = { - preprocess: [vitePreprocess()], -} - -export default config diff --git a/inlang/packages/paraglide-sveltekit/tsconfig.json b/inlang/packages/paraglide-sveltekit/tsconfig.json deleted file mode 100644 index 27e7dee62e..0000000000 --- a/inlang/packages/paraglide-sveltekit/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "extends": "@opral/tsconfig/default", - "include": ["src/**/*.ts"], - "exclude": ["node_modules", "**/*.test.ts", "examples"], - "compilerOptions": { - "target": "ESNext", - "outDir": "./dist", - "rootDir": "./src", - "declaration": true, - "esModuleInterop": true, - "sourceMap": true, - "checkJs": true - } -} diff --git a/inlang/packages/paraglide-sveltekit/vitest.config.js b/inlang/packages/paraglide-sveltekit/vitest.config.js deleted file mode 100644 index 9982e36fe6..0000000000 --- a/inlang/packages/paraglide-sveltekit/vitest.config.js +++ /dev/null @@ -1,76 +0,0 @@ -import { dirname, resolve } from "node:path" -import { fileURLToPath } from "node:url" -import { defineConfig } from "vitest/config" - -const __filename = resolve(fileURLToPath(import.meta.url)) -const __dirname = dirname(__filename) - -const BASE_PATH = process.env.BASE_PATH ?? "" - -export default defineConfig((env) => { - return { - plugins: [ - virtualModules({ - "$app/paths": getPathsModule({ base: BASE_PATH }), - "$app/environment": getEnvironmentModule({ dev: false, browser: false }), - "$app/stores": getStoresModule({}), - }), - ], - test: { - alias: { - "$paraglide/runtime.js": resolve(__dirname, "./mocks/runtime.js"), - }, - }, - } -}) - -/** - * @param {Record} map - */ -function virtualModules(map) { - return { - name: "virtual-modules", - resolveId(id) { - if (id in map) { - return id - } - }, - - load(id) { - if (id in map) { - return map[id] - } - }, - } -} - -/** - * - * @param {{base: "" | `/${string}`}} options - */ -function getPathsModule(options) { - let code = "" - for (const [key, value] of Object.entries(options)) { - code += `export const ${key} = ${JSON.stringify(value)}\n` - } - return code -} - -/** - * @param {{dev: boolean, browser: boolean}} options - */ -function getEnvironmentModule(options) { - let code = "" - for (const [key, value] of Object.entries(options)) { - code += `export const ${key} = ${JSON.stringify(value)}\n` - } - return code -} - -/** - * @param {{}} options - */ -function getStoresModule(options) { - let code = `` - return code -} From 3e0d6516e07d850a1a4116f741f4fa5f6a143425 Mon Sep 17 00:00:00 2001 From: Samuel Stroschein <35429197+samuelstroschein@users.noreply.github.com> Date: Sat, 18 Jan 2025 18:44:33 -0500 Subject: [PATCH 11/12] chore: format --- inlang/packages/paraglide-js/src/cli/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inlang/packages/paraglide-js/src/cli/index.ts b/inlang/packages/paraglide-js/src/cli/index.ts index 4ff99953f1..003f9cc7dd 100644 --- a/inlang/packages/paraglide-js/src/cli/index.ts +++ b/inlang/packages/paraglide-js/src/cli/index.ts @@ -13,4 +13,4 @@ export const cli = new Command() export * as Utils from "./utils.js"; export * as Defaults from "./defaults.js"; export * as Steps from "./steps/index.js"; -export { Logger } from "../services/logger/index.js"; \ No newline at end of file +export { Logger } from "../services/logger/index.js"; From 88884c099be5c5e5194d3ed918411bb5fe7c7065 Mon Sep 17 00:00:00 2001 From: Samuel Stroschein <35429197+samuelstroschein@users.noreply.github.com> Date: Sat, 18 Jan 2025 18:45:00 -0500 Subject: [PATCH 12/12] align lockfile --- pnpm-lock.yaml | 948 ++----------------------------------------------- 1 file changed, 31 insertions(+), 917 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2293ca3be7..ec2d4f5e62 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -56,7 +56,7 @@ importers: version: 2.4.9 '@vitest/coverage-v8': specifier: 2.1.8 - version: 2.1.8(@vitest/browser@2.1.8(@types/node@20.5.9)(playwright@1.48.1)(typescript@5.2.2)(vite@5.4.11(@types/node@20.5.9)(lightningcss@1.27.0)(terser@5.36.0))(vitest@2.1.8)(webdriverio@9.2.1))(vitest@2.1.8(@types/node@20.5.9)(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@20.5.9)(typescript@5.2.2))(terser@5.36.0)) + version: 2.1.8(@vitest/browser@2.1.8)(vitest@2.1.8) cli-progress: specifier: ^3.12.0 version: 3.12.0 @@ -304,7 +304,7 @@ importers: version: 22.10.6 '@vitest/coverage-v8': specifier: 2.1.8 - version: 2.1.8(@vitest/browser@2.1.8(@types/node@22.10.6)(playwright@1.48.1)(typescript@5.7.3)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0))(vitest@2.1.8)(webdriverio@9.2.1))(vitest@2.1.8(@types/node@22.10.6)(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@22.10.6)(typescript@5.7.3))(terser@5.36.0)) + version: 2.1.8(@vitest/browser@2.1.8)(vitest@2.1.8) eslint: specifier: ^9.18.0 version: 9.18.0(jiti@2.3.3) @@ -394,113 +394,6 @@ importers: specifier: ^6.0.7 version: 6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0) - inlang/packages/paraglide-sveltekit: - dependencies: - '@inlang/paraglide-js': - specifier: workspace:* - version: link:../paraglide-js - '@lix-js/client': - specifier: 2.2.1 - version: 2.2.1 - '@sveltejs/kit': - specifier: ^2.4.3 - version: 2.16.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.18.0)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0)) - commander: - specifier: ^12.0.0 - version: 12.1.0 - dedent: - specifier: 1.5.1 - version: 1.5.1 - devalue: - specifier: ^4.3.2 - version: 4.3.3 - magic-string: - specifier: ^0.30.5 - version: 0.30.17 - svelte: - specifier: ^5.0.0 || ^5.0.0-next.1 || ^5.0.0-rc.1 - version: 5.18.0 - devDependencies: - '@opral/tsconfig': - specifier: workspace:* - version: link:../../../packages/tsconfig - '@rollup/plugin-alias': - specifier: ^5.0.1 - version: 5.1.1(rollup@3.29.1) - '@rollup/plugin-node-resolve': - specifier: ^15.2.3 - version: 15.3.1(rollup@3.29.1) - '@rollup/plugin-virtual': - specifier: 3.0.1 - version: 3.0.1(rollup@3.29.1) - '@sveltejs/package': - specifier: ^2.2.3 - version: 2.3.7(svelte@5.18.0)(typescript@5.7.3) - '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.2 - version: 3.1.2(svelte@5.18.0)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0)) - '@types/node': - specifier: ^20.12.12 - version: 20.16.13 - prettier-plugin-svelte: - specifier: ^3.1.2 - version: 3.3.3(prettier@3.4.2)(svelte@5.18.0) - rollup: - specifier: 3.29.1 - version: 3.29.1 - rollup-plugin-svelte: - specifier: ^7.1.6 - version: 7.2.2(rollup@3.29.1)(svelte@5.18.0) - typescript: - specifier: ^5.5.2 - version: 5.7.3 - vite: - specifier: ^5.0.4 - version: 5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0) - vite-plugin-svelte: - specifier: ^3.0.1 - version: 3.0.1(rollup@3.29.1)(svelte@5.18.0)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0)) - vitest: - specifier: ^1.0.0 - version: 1.6.0(@types/node@20.16.13)(jsdom@25.0.1)(lightningcss@1.27.0)(terser@5.36.0) - - inlang/packages/paraglide-sveltekit/example: - dependencies: - typescript: - specifier: ^5 - version: 5.7.3 - devDependencies: - '@inlang/paraglide-js': - specifier: workspace:* - version: link:../../paraglide-js - '@inlang/paraglide-sveltekit': - specifier: workspace:* - version: link:.. - '@sveltejs/adapter-node': - specifier: ^5.2.10 - version: 5.2.12(@sveltejs/kit@2.16.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0))) - '@sveltejs/adapter-static': - specifier: ^3.0.0 - version: 3.0.8(@sveltejs/kit@2.16.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0))) - '@sveltejs/kit': - specifier: ^2.12.1 - version: 2.16.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)) - '@sveltejs/vite-plugin-svelte': - specifier: ^4.0.3 - version: 4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)) - rollup-plugin-visualizer: - specifier: ^5.12.0 - version: 5.14.0(rollup@4.24.0) - svelte: - specifier: ^5.14.1 - version: 5.18.0 - svelte-check: - specifier: ^3.6.9 - version: 3.8.6(@babel/core@7.26.0)(postcss-load-config@4.0.2(postcss@8.4.49)(ts-node@10.9.2(@types/node@22.10.6)(typescript@5.7.3)))(postcss@8.4.49)(svelte@5.18.0) - vite: - specifier: ^5.4.11 - version: 5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0) - inlang/packages/plugins/i18next: dependencies: '@inlang/sdk': @@ -743,7 +636,7 @@ importers: version: 1.96.0 '@vitest/coverage-v8': specifier: 2.1.8 - version: 2.1.8(@vitest/browser@2.1.8(@types/node@22.10.6)(playwright@1.48.1)(typescript@5.7.2)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0))(vitest@2.1.8)(webdriverio@9.2.1))(vitest@2.1.8(@types/node@22.10.6)(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@22.10.6)(typescript@5.7.2))(terser@5.36.0)) + version: 2.1.8(@vitest/browser@2.1.8)(vitest@2.1.8) memfs: specifier: 4.6.0 version: 4.6.0(quill-delta@5.1.0)(rxjs@7.8.1)(tslib@2.8.0) @@ -838,7 +731,7 @@ importers: version: 10.0.0 '@vitest/coverage-v8': specifier: ^2.0.5 - version: 2.1.8(@vitest/browser@2.1.8(@types/node@22.10.1)(playwright@1.48.1)(typescript@5.7.2)(vite@5.4.11(@types/node@22.10.1)(lightningcss@1.27.0)(terser@5.36.0))(vitest@2.1.8)(webdriverio@9.2.1))(vitest@2.1.8(@types/node@22.10.1)(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@22.10.1)(typescript@5.7.2))(terser@5.36.0)) + version: 2.1.8(@vitest/browser@2.1.8)(vitest@2.1.8) eslint: specifier: ^9.12.0 version: 9.15.0(jiti@2.3.3) @@ -920,7 +813,7 @@ importers: version: link:../ui-components/settings-component '@vitest/coverage-v8': specifier: 2.1.8 - version: 2.1.8(@vitest/browser@2.1.8(@types/node@20.16.13)(playwright@1.48.1)(typescript@5.3.2)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0))(vitest@2.1.8)(webdriverio@8.41.0))(vitest@2.1.8(@types/node@20.16.13)(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@20.16.13)(typescript@5.3.2))(terser@5.36.0)) + version: 2.1.8(@vitest/browser@2.1.8)(vitest@2.1.8) comlink: specifier: ^4.4.1 version: 4.4.2 @@ -1400,7 +1293,7 @@ importers: version: link:../../../../packages/tsconfig '@vitest/coverage-v8': specifier: 0.34.3 - version: 0.34.3(vitest@0.34.3(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(playwright@1.48.1)(safaridriver@0.1.2)(terser@5.36.0)(webdriverio@9.2.1)) + version: 0.34.3(vitest@0.34.3) tailwindcss: specifier: ^3.3.3 version: 3.4.15(ts-node@10.9.2(@types/node@22.10.6)(typescript@5.2.2)) @@ -1685,7 +1578,7 @@ importers: version: link:../tsconfig '@vitest/coverage-v8': specifier: ^2.0.5 - version: 2.0.5(vitest@2.1.3(@types/node@22.10.6)(@vitest/browser@2.1.3)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@22.10.6)(typescript@5.7.2))(terser@5.36.0)) + version: 2.0.5(vitest@2.1.3) eslint: specifier: ^9.12.0 version: 9.15.0(jiti@2.3.3) @@ -1725,7 +1618,7 @@ importers: version: 5.3.15 '@vitest/coverage-v8': specifier: ^2.0.5 - version: 2.0.5(vitest@2.1.3(@types/node@22.10.6)(@vitest/browser@2.1.3)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@22.10.6)(typescript@5.6.3))(terser@5.36.0)) + version: 2.0.5(vitest@2.1.3) eslint: specifier: ^9.12.0 version: 9.13.0(jiti@2.3.3) @@ -5731,15 +5624,6 @@ packages: cpu: [x64] os: [win32] - '@rollup/plugin-alias@5.1.1': - resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@rollup/plugin-commonjs@25.0.8': resolution: {integrity: sha512-ZEZWTK5n6Qde0to4vS9Mr5x/0UZoqCxPVR9KRUjU4kA2sO7GEUn1fop0DAwpO6z0Nw/kJON9bDmSxdWxO/TT1A==} engines: {node: '>=14.0.0'} @@ -5749,24 +5633,6 @@ packages: rollup: optional: true - '@rollup/plugin-commonjs@28.0.2': - resolution: {integrity: sha512-BEFI2EDqzl+vA1rl97IDRZ61AIwGH093d9nz8+dThxJNH8oSoB7MjWvPCX3dkaK1/RCJ/1v/R1XB15FuSs0fQw==} - engines: {node: '>=16.0.0 || 14 >= 14.17'} - peerDependencies: - rollup: ^2.68.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-json@6.1.0': - resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@rollup/plugin-node-resolve@15.3.1': resolution: {integrity: sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==} engines: {node: '>=14.0.0'} @@ -5776,15 +5642,6 @@ packages: rollup: optional: true - '@rollup/plugin-node-resolve@16.0.0': - resolution: {integrity: sha512-0FPvAeVUT/zdWoO0jnb/V5BlBsUSNfkIOtFHzMO4H9MOklrmQFY6FduVHKucNb/aTFxvnGhj4MNj/T1oNdDfNg==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.78.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@rollup/plugin-replace@5.0.7': resolution: {integrity: sha512-PqxSfuorkHz/SPpyngLyg5GCEkOcee9M1bkxiVDr41Pd61mqP1PLOoDPbpl44SB2mQGKwV/In74gqQmGITOhEQ==} engines: {node: '>=14.0.0'} @@ -5794,15 +5651,6 @@ packages: rollup: optional: true - '@rollup/plugin-virtual@3.0.1': - resolution: {integrity: sha512-fK8O0IL5+q+GrsMLuACVNk2x21g3yaw+sG2qn16SnUd3IlBsQyvWxLMGHmCmXRMecPjGRSZ/1LmZB4rjQm68og==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@rollup/plugin-virtual@3.0.2': resolution: {integrity: sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A==} engines: {node: '>=14.0.0'} @@ -5812,10 +5660,6 @@ packages: rollup: optional: true - '@rollup/pluginutils@4.2.1': - resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} - engines: {node: '>= 8.0.0'} - '@rollup/pluginutils@5.1.4': resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} engines: {node: '>=14.0.0'} @@ -6264,48 +6108,6 @@ packages: peerDependencies: lit: ^2.0.0 || ^3.0.0 - '@sveltejs/adapter-node@5.2.12': - resolution: {integrity: sha512-0bp4Yb3jKIEcZWVcJC/L1xXp9zzJS4hDwfb4VITAkfT4OVdkspSHsx7YhqJDbb2hgLl6R9Vs7VQR+fqIVOxPUQ==} - peerDependencies: - '@sveltejs/kit': ^2.4.0 - - '@sveltejs/adapter-static@3.0.8': - resolution: {integrity: sha512-YaDrquRpZwfcXbnlDsSrBQNCChVOT9MGuSg+dMAyfsAa1SmiAhrA5jUYUiIMC59G92kIbY/AaQOWcBdq+lh+zg==} - peerDependencies: - '@sveltejs/kit': ^2.0.0 - - '@sveltejs/kit@2.16.0': - resolution: {integrity: sha512-S9i1ZWKqluzoaJ6riYnEdbe+xJluMTMkhABouBa66GaWcAyCjW/jAc0NdJQJ/DXyK1CnP5quBW25e99MNyvLxA==} - engines: {node: '>=18.13'} - hasBin: true - peerDependencies: - '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 || ^5.0.0 - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.3 || ^6.0.0 - - '@sveltejs/package@2.3.7': - resolution: {integrity: sha512-LYgUkde5GUYqOpXbcoCGUpEH4Ctl3Wj4u4CVZBl56dEeLW5fGHE037ZL1qlK0Ky+QD5uUfwONSeGwIOIighFMQ==} - engines: {node: ^16.14 || >=18} - hasBin: true - peerDependencies: - svelte: ^3.44.0 || ^4.0.0 || ^5.0.0-next.1 - - '@sveltejs/vite-plugin-svelte-inspector@2.1.0': - resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} - engines: {node: ^18.0.0 || >=20} - peerDependencies: - '@sveltejs/vite-plugin-svelte': ^3.0.0 - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.0 - - '@sveltejs/vite-plugin-svelte-inspector@3.0.1': - resolution: {integrity: sha512-2CKypmj1sM4GE7HjllT7UKmo4Q6L5xFRd7VMGEWhYnZ+wc6AUVU01IBd7yUi6WnFndEwWoMNOd6e8UjoN0nbvQ==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22} - peerDependencies: - '@sveltejs/vite-plugin-svelte': ^4.0.0-next.0||^4.0.0 - svelte: ^5.0.0-next.96 || ^5.0.0 - vite: ^5.0.0 - '@sveltejs/vite-plugin-svelte-inspector@4.0.1': resolution: {integrity: sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22} @@ -6314,20 +6116,6 @@ packages: svelte: ^5.0.0 vite: ^6.0.0 - '@sveltejs/vite-plugin-svelte@3.1.2': - resolution: {integrity: sha512-Txsm1tJvtiYeLUVRNqxZGKR/mI+CzuIQuc2gn+YCs9rMTowpNZ2Nqt53JdL8KF9bLhAf2ruR/dr9eZCwdTriRA==} - engines: {node: ^18.0.0 || >=20} - peerDependencies: - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.0 - - '@sveltejs/vite-plugin-svelte@4.0.4': - resolution: {integrity: sha512-0ba1RQ/PHen5FGpdSrW7Y3fAMQjrXantECALeOiOdBdzR5+5vPP6HVZRLmZaQL+W8m++o+haIAKq5qT+MiZ7VA==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22} - peerDependencies: - svelte: ^5.0.0-next.96 || ^5.0.0 - vite: ^5.0.0 - '@sveltejs/vite-plugin-svelte@5.0.3': resolution: {integrity: sha512-MCFS6CrQDu1yGwspm4qtli0e63vaPCehf6V7pIMP15AsWgMKrqDGCPFF/0kn4SP0ii4aySu4Pa62+fIRGFMjgw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22} @@ -6790,9 +6578,6 @@ packages: '@types/prop-types@15.7.13': resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} - '@types/pug@2.0.10': - resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} - '@types/qs@6.9.17': resolution: {integrity: sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==} @@ -7240,9 +7025,6 @@ packages: '@vitest/expect@0.34.3': resolution: {integrity: sha512-F8MTXZUYRBVsYL1uoIft1HHWhwDbSzwAU9Zgh8S6WFC3YgVb4AnFV2GXO3P5Em8FjEYaZtTnQYoNwwBrlOMXgg==} - '@vitest/expect@1.6.0': - resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} - '@vitest/expect@2.0.5': resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} @@ -7287,9 +7069,6 @@ packages: '@vitest/runner@0.34.3': resolution: {integrity: sha512-lYNq7N3vR57VMKMPLVvmJoiN4bqwzZ1euTW+XXYH5kzr3W/+xQG3b41xJn9ChJ3AhYOSoweu974S1V3qDcFESA==} - '@vitest/runner@1.6.0': - resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} - '@vitest/runner@2.0.5': resolution: {integrity: sha512-TfRfZa6Bkk9ky4tW0z20WKXFEwwvWhRY+84CnSEtq4+3ZvDlJyY32oNTJtM7AW9ihW90tX/1Q78cb6FjoAs+ig==} @@ -7302,9 +7081,6 @@ packages: '@vitest/snapshot@0.34.3': resolution: {integrity: sha512-QyPaE15DQwbnIBp/yNJ8lbvXTZxS00kRly0kfFgAD5EYmCbYcA+1EEyRalc93M0gosL/xHeg3lKAClIXYpmUiQ==} - '@vitest/snapshot@1.6.0': - resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} - '@vitest/snapshot@2.0.5': resolution: {integrity: sha512-SgCPUeDFLaM0mIUHfaArq8fD2WbaXG/zVXjRupthYfYGzc8ztbFbu6dUNOblBG7XLMR1kEhS/DNnfCZ2IhdDew==} @@ -7317,9 +7093,6 @@ packages: '@vitest/spy@0.34.3': resolution: {integrity: sha512-N1V0RFQ6AI7CPgzBq9kzjRdPIgThC340DGjdKdPSE8r86aUSmeliTUgkTqLSgtEwWWsGfBQ+UetZWhK0BgJmkQ==} - '@vitest/spy@1.6.0': - resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} - '@vitest/spy@2.0.5': resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} @@ -7332,9 +7105,6 @@ packages: '@vitest/utils@0.34.3': resolution: {integrity: sha512-kiSnzLG6m/tiT0XEl4U2H8JDBjFtwVlaE8I3QfGiMFR0QvnRDfYfdP3YvTBWM/6iJDAyaPY6yVQiCTUc7ZzTHA==} - '@vitest/utils@1.6.0': - resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} - '@vitest/utils@2.0.5': resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} @@ -8380,10 +8150,6 @@ packages: resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} engines: {node: '>=16'} - commander@12.1.0: - resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} - engines: {node: '>=18'} - commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -8980,9 +8746,6 @@ packages: resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==} engines: {node: '>=18'} - devalue@4.3.3: - resolution: {integrity: sha512-UH8EL6H2ifcY8TbD2QsxwCC/pr5xSwPvv85LrLXVihmHVC3T3YqTCIwnR5ak0yO1KYqlxrPVOA/JVZJYPy2ATg==} - devalue@5.1.1: resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==} @@ -9209,9 +8972,6 @@ packages: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} - es6-promise@3.3.1: - resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} - esbuild-plugin-alias@0.2.1: resolution: {integrity: sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==} @@ -9498,9 +9258,6 @@ packages: estree-util-visit@1.2.1: resolution: {integrity: sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==} - estree-walker@0.6.1: - resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} - estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} @@ -9666,14 +9423,6 @@ packages: fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} - fdir@6.4.3: - resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} @@ -10823,9 +10572,6 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-tokens@9.0.1: - resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} - js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true @@ -12201,10 +11947,6 @@ packages: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-limit@5.0.0: - resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} - engines: {node: '>=18'} - p-limit@6.2.0: resolution: {integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==} engines: {node: '>=18'} @@ -12579,12 +12321,6 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-plugin-svelte@3.3.3: - resolution: {integrity: sha512-yViK9zqQ+H2qZD1w/bH7W8i+bVfKrD8GIFjkFe4Thl6kCT9SlAsXVNmt3jCvQOCsnOhcvYgsoVlRV/Eu6x5nNw==} - peerDependencies: - prettier: ^3.0.0 - svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 - prettier@2.8.7: resolution: {integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==} engines: {node: '>=10.13.0'} @@ -13133,9 +12869,6 @@ packages: require-like@0.1.2: resolution: {integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==} - require-relative@0.8.7: - resolution: {integrity: sha512-AKGr4qvHiryxRb19m3PsLRGuKVAbJLUD7E6eOaHkfKhwc+vSgVOCY5xNvm9EkolBKTOf0GrQAZKLimOCz81Khg==} - requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} @@ -13237,35 +12970,6 @@ packages: '@babel/runtime': optional: true - rollup-plugin-svelte@6.1.1: - resolution: {integrity: sha512-ijnm0pH1ScrY4uxwaNXBpNVejVzpL2769hIEbAlnqNUWZrffLspu5/k9/l/Wsj3NrEHLQ6wCKGagVJonyfN7ow==} - peerDependencies: - rollup: '>=1.19.2' - svelte: '*' - - rollup-plugin-svelte@7.2.2: - resolution: {integrity: sha512-hgnIblTRewaBEVQD6N0Q43o+y6q1TmDRhBjaEzQCi50bs8TXqjc+d1zFZyE8tsfgcfNHZQzclh4RxlFUB85H8Q==} - engines: {node: '>=10'} - peerDependencies: - rollup: '>=2.0.0' - svelte: '>=3.5.0' - - rollup-plugin-visualizer@5.14.0: - resolution: {integrity: sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - rolldown: 1.x - rollup: 2.x || 3.x || 4.x - peerDependenciesMeta: - rolldown: - optional: true - rollup: - optional: true - - rollup-pluginutils@2.8.2: - resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} - rollup@3.29.1: resolution: {integrity: sha512-c+ebvQz0VIH4KhhCpDsI+Bik0eT8ZFEVZEYw0cGMVqIP8zc+gnwl7iXCamTw7vzv2MeuZFZfdx5JJIq+ehzDlg==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} @@ -13329,9 +13033,6 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sander@0.5.1: - resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} - sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} @@ -13517,10 +13218,6 @@ packages: sonic-boom@4.2.0: resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==} - sorcery@0.11.1: - resolution: {integrity: sha512-o7npfeJE6wi6J9l0/5LKshFzZ2rMatRiCDwYeDQaOzqdzRJwALhX7mk/A/ecg6wjMu7wdZbmXfD2S/vpOg0bdQ==} - hasBin: true - sort-keys-length@1.0.1: resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==} engines: {node: '>=0.10.0'} @@ -13547,10 +13244,6 @@ packages: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} - sourcemap-codec@1.4.8: - resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} - deprecated: Please use @jridgewell/sourcemap-codec instead - space-separated-tokens@1.1.5: resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} @@ -13728,9 +13421,6 @@ packages: strip-literal@1.3.0: resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} - strip-literal@2.1.1: - resolution: {integrity: sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==} - strnum@1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} @@ -13774,60 +13464,6 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svelte-check@3.8.6: - resolution: {integrity: sha512-ij0u4Lw/sOTREP13BdWZjiXD/BlHE6/e2e34XzmVmsp5IN4kVa3PWP65NM32JAgwjZlwBg/+JtiNV1MM8khu0Q==} - hasBin: true - peerDependencies: - svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 - - svelte-hmr@0.11.6: - resolution: {integrity: sha512-XUYcp7W26q/fF8tABZfCYGklwL4TDH48gc1KOjuBQNlTiMW63l/+rRqmfVOE/qKG5vns0J2NPo3zFjdahkwoHA==} - peerDependencies: - svelte: '>=3.19.0' - - svelte-hmr@0.16.0: - resolution: {integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==} - engines: {node: ^12.20 || ^14.13.1 || >= 16} - peerDependencies: - svelte: ^3.19.0 || ^4.0.0 - - svelte-preprocess@5.1.4: - resolution: {integrity: sha512-IvnbQ6D6Ao3Gg6ftiM5tdbR6aAETwjhHV+UKGf5bHGYR69RQvF1ho0JKPcbUON4vy4R7zom13jPjgdOWCQ5hDA==} - engines: {node: '>= 16.0.0'} - peerDependencies: - '@babel/core': ^7.10.2 - coffeescript: ^2.5.1 - less: ^3.11.3 || ^4.0.0 - postcss: ^7 || ^8 - postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 - pug: ^3.0.0 - sass: ^1.26.8 - stylus: ^0.55.0 - sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 - svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 - typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' - peerDependenciesMeta: - '@babel/core': - optional: true - coffeescript: - optional: true - less: - optional: true - postcss: - optional: true - postcss-load-config: - optional: true - pug: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - typescript: - optional: true - svelte2tsx@0.7.34: resolution: {integrity: sha512-WTMhpNhFf8/h3SMtR5dkdSy2qfveomkhYei/QW9gSPccb0/b82tjHvLop6vT303ZkGswU/da1s6XvrLgthQPCw==} peerDependencies: @@ -13975,10 +13611,6 @@ packages: resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} engines: {node: '>=14.0.0'} - tinypool@0.8.4: - resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} - engines: {node: '>=14.0.0'} - tinypool@1.0.1: resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -14750,13 +14382,6 @@ packages: solid-js: ^1.7.2 vite: ^3.0.0 || ^4.0.0 - vite-plugin-svelte@3.0.1: - resolution: {integrity: sha512-R4XFM4pmeJ9GwKs5mcDDDQs1e6xvCrBumGLnApPdYarS6+kfDqeC0U1WOLp6LLUx1sUdv7poywnr9eNKenQfkg==} - deprecated: use @sveltejs/vite-plugin-svelte for vite2.0+ support - peerDependencies: - svelte: ^3.0.0 - vite: '>=0.20.8 <2.0.0' - vite-tsconfig-paths@4.3.2: resolution: {integrity: sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==} peerDependencies: @@ -14950,31 +14575,6 @@ packages: webdriverio: optional: true - vitest@1.6.0: - resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.6.0 - '@vitest/ui': 1.6.0 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - vitest@2.0.5: resolution: {integrity: sha512-8GUxONfauuIdeSl5f9GTgVEpg5BTOlplET4WEDaeY2QBiN8wSm68vxN/tb5z405OwppfoCavnwXafiaYBC/xOA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -19970,10 +19570,6 @@ snapshots: '@rolldown/binding-win32-x64-msvc@1.0.0-beta.1': optional: true - '@rollup/plugin-alias@5.1.1(rollup@3.29.1)': - optionalDependencies: - rollup: 3.29.1 - '@rollup/plugin-commonjs@25.0.8(rollup@3.29.1)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@3.29.1) @@ -19985,24 +19581,6 @@ snapshots: optionalDependencies: rollup: 3.29.1 - '@rollup/plugin-commonjs@28.0.2(rollup@4.24.0)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.24.0) - commondir: 1.0.1 - estree-walker: 2.0.2 - fdir: 6.4.3(picomatch@4.0.2) - is-reference: 1.2.1 - magic-string: 0.30.17 - picomatch: 4.0.2 - optionalDependencies: - rollup: 4.24.0 - - '@rollup/plugin-json@6.1.0(rollup@4.24.0)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.24.0) - optionalDependencies: - rollup: 4.24.0 - '@rollup/plugin-node-resolve@15.3.1(rollup@3.29.1)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@3.29.1) @@ -20013,16 +19591,6 @@ snapshots: optionalDependencies: rollup: 3.29.1 - '@rollup/plugin-node-resolve@16.0.0(rollup@4.24.0)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.24.0) - '@types/resolve': 1.20.2 - deepmerge: 4.3.1 - is-module: 1.0.0 - resolve: 1.22.8 - optionalDependencies: - rollup: 4.24.0 - '@rollup/plugin-replace@5.0.7(rollup@3.29.1)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@3.29.1) @@ -20030,19 +19598,10 @@ snapshots: optionalDependencies: rollup: 3.29.1 - '@rollup/plugin-virtual@3.0.1(rollup@3.29.1)': - optionalDependencies: - rollup: 3.29.1 - '@rollup/plugin-virtual@3.0.2(rollup@4.24.0)': optionalDependencies: rollup: 4.24.0 - '@rollup/pluginutils@4.2.1': - dependencies: - estree-walker: 2.0.2 - picomatch: 2.3.1 - '@rollup/pluginutils@5.1.4(rollup@3.29.1)': dependencies: '@types/estree': 1.0.6 @@ -20925,122 +20484,20 @@ snapshots: - react-dom - supports-color - '@sveltejs/adapter-node@5.2.12(@sveltejs/kit@2.16.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)))': - dependencies: - '@rollup/plugin-commonjs': 28.0.2(rollup@4.24.0) - '@rollup/plugin-json': 6.1.0(rollup@4.24.0) - '@rollup/plugin-node-resolve': 16.0.0(rollup@4.24.0) - '@sveltejs/kit': 2.16.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)) - rollup: 4.24.0 - - '@sveltejs/adapter-static@3.0.8(@sveltejs/kit@2.16.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)))': + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.18.0)(vite@6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0)))(svelte@5.18.0)(vite@6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0))': dependencies: - '@sveltejs/kit': 2.16.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)) + '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.18.0)(vite@6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0)) + debug: 4.4.0(supports-color@9.4.0) + svelte: 5.18.0 + vite: 6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0) + transitivePeerDependencies: + - supports-color - '@sveltejs/kit@2.16.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.18.0)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0))': + '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.18.0)(vite@6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@5.18.0)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0)) - '@types/cookie': 0.6.0 - cookie: 0.6.0 - devalue: 5.1.1 - esm-env: 1.2.2 - import-meta-resolve: 4.1.0 - kleur: 4.1.5 - magic-string: 0.30.17 - mrmime: 2.0.0 - sade: 1.8.1 - set-cookie-parser: 2.7.1 - sirv: 3.0.0 - svelte: 5.18.0 - vite: 5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0) - - '@sveltejs/kit@2.16.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0))': - dependencies: - '@sveltejs/vite-plugin-svelte': 4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)) - '@types/cookie': 0.6.0 - cookie: 0.6.0 - devalue: 5.1.1 - esm-env: 1.2.2 - import-meta-resolve: 4.1.0 - kleur: 4.1.5 - magic-string: 0.30.17 - mrmime: 2.0.0 - sade: 1.8.1 - set-cookie-parser: 2.7.1 - sirv: 3.0.0 - svelte: 5.18.0 - vite: 5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0) - - '@sveltejs/package@2.3.7(svelte@5.18.0)(typescript@5.7.3)': - dependencies: - chokidar: 4.0.3 - kleur: 4.1.5 - sade: 1.8.1 - semver: 7.6.3 - svelte: 5.18.0 - svelte2tsx: 0.7.34(svelte@5.18.0)(typescript@5.7.3) - transitivePeerDependencies: - - typescript - - '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.18.0)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0))': - dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@5.18.0)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0)) - debug: 4.4.0(supports-color@9.4.0) - svelte: 5.18.0 - vite: 5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0) - transitivePeerDependencies: - - supports-color - - '@sveltejs/vite-plugin-svelte-inspector@3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0))': - dependencies: - '@sveltejs/vite-plugin-svelte': 4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)) - debug: 4.4.0(supports-color@9.4.0) - svelte: 5.18.0 - vite: 5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0) - transitivePeerDependencies: - - supports-color - - '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.18.0)(vite@6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0)))(svelte@5.18.0)(vite@6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0))': - dependencies: - '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.18.0)(vite@6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0)) - debug: 4.4.0(supports-color@9.4.0) - svelte: 5.18.0 - vite: 6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0) - transitivePeerDependencies: - - supports-color - - '@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.18.0)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0))': - dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.18.0)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0)) - debug: 4.4.0(supports-color@9.4.0) - deepmerge: 4.3.1 - kleur: 4.1.5 - magic-string: 0.30.17 - svelte: 5.18.0 - svelte-hmr: 0.16.0(svelte@5.18.0) - vite: 5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0) - vitefu: 0.2.5(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0)) - transitivePeerDependencies: - - supports-color - - '@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0))': - dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)))(svelte@5.18.0)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)) - debug: 4.4.0(supports-color@9.4.0) - deepmerge: 4.3.1 - kleur: 4.1.5 - magic-string: 0.30.17 - svelte: 5.18.0 - vite: 5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0) - vitefu: 1.0.5(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)) - transitivePeerDependencies: - - supports-color - - '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.18.0)(vite@6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0))': - dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.18.0)(vite@6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0)))(svelte@5.18.0)(vite@6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0)) - debug: 4.4.0(supports-color@9.4.0) - deepmerge: 4.3.1 + '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.18.0)(vite@6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0)))(svelte@5.18.0)(vite@6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0)) + debug: 4.4.0(supports-color@9.4.0) + deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.17 svelte: 5.18.0 @@ -21553,8 +21010,6 @@ snapshots: '@types/prop-types@15.7.13': {} - '@types/pug@2.0.10': {} - '@types/qs@6.9.17': {} '@types/range-parser@1.2.7': {} @@ -22481,7 +21936,7 @@ snapshots: - vite optional: true - '@vitest/coverage-v8@0.34.3(vitest@0.34.3(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(playwright@1.48.1)(safaridriver@0.1.2)(terser@5.36.0)(webdriverio@9.2.1))': + '@vitest/coverage-v8@0.34.3(vitest@0.34.3)': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -22516,25 +21971,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@2.0.5(vitest@2.1.3(@types/node@22.10.6)(@vitest/browser@2.1.3)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@22.10.6)(typescript@5.6.3))(terser@5.36.0))': - dependencies: - '@ampproject/remapping': 2.3.0 - '@bcoe/v8-coverage': 0.2.3 - debug: 4.4.0(supports-color@9.4.0) - istanbul-lib-coverage: 3.2.2 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.6 - istanbul-reports: 3.1.7 - magic-string: 0.30.17 - magicast: 0.3.5 - std-env: 3.8.0 - test-exclude: 7.0.1 - tinyrainbow: 1.2.0 - vitest: 2.1.3(@types/node@22.10.6)(@vitest/browser@2.1.3)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@22.10.6)(typescript@5.6.3))(terser@5.36.0) - transitivePeerDependencies: - - supports-color - - '@vitest/coverage-v8@2.0.5(vitest@2.1.3(@types/node@22.10.6)(@vitest/browser@2.1.3)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@22.10.6)(typescript@5.7.2))(terser@5.36.0))': + '@vitest/coverage-v8@2.0.5(vitest@2.1.3)': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -22570,87 +22007,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@2.1.8(@vitest/browser@2.1.8(@types/node@20.16.13)(playwright@1.48.1)(typescript@5.3.2)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0))(vitest@2.1.8)(webdriverio@8.41.0))(vitest@2.1.8(@types/node@20.16.13)(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@20.16.13)(typescript@5.3.2))(terser@5.36.0))': - dependencies: - '@ampproject/remapping': 2.3.0 - '@bcoe/v8-coverage': 0.2.3 - debug: 4.4.0(supports-color@9.4.0) - istanbul-lib-coverage: 3.2.2 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.6 - istanbul-reports: 3.1.7 - magic-string: 0.30.17 - magicast: 0.3.5 - std-env: 3.8.0 - test-exclude: 7.0.1 - tinyrainbow: 1.2.0 - vitest: 2.1.8(@types/node@20.16.13)(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@20.16.13)(typescript@5.3.2))(terser@5.36.0) - optionalDependencies: - '@vitest/browser': 2.1.8(@types/node@20.16.13)(playwright@1.48.1)(typescript@5.3.2)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0))(vitest@2.1.8)(webdriverio@8.41.0) - transitivePeerDependencies: - - supports-color - - '@vitest/coverage-v8@2.1.8(@vitest/browser@2.1.8(@types/node@20.5.9)(playwright@1.48.1)(typescript@5.2.2)(vite@5.4.11(@types/node@20.5.9)(lightningcss@1.27.0)(terser@5.36.0))(vitest@2.1.8)(webdriverio@9.2.1))(vitest@2.1.8(@types/node@20.5.9)(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@20.5.9)(typescript@5.2.2))(terser@5.36.0))': - dependencies: - '@ampproject/remapping': 2.3.0 - '@bcoe/v8-coverage': 0.2.3 - debug: 4.4.0(supports-color@9.4.0) - istanbul-lib-coverage: 3.2.2 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.6 - istanbul-reports: 3.1.7 - magic-string: 0.30.17 - magicast: 0.3.5 - std-env: 3.8.0 - test-exclude: 7.0.1 - tinyrainbow: 1.2.0 - vitest: 2.1.8(@types/node@20.5.9)(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@20.5.9)(typescript@5.2.2))(terser@5.36.0) - optionalDependencies: - '@vitest/browser': 2.1.8(@types/node@20.5.9)(playwright@1.48.1)(typescript@5.2.2)(vite@5.4.11(@types/node@20.5.9)(lightningcss@1.27.0)(terser@5.36.0))(vitest@2.1.8)(webdriverio@9.2.1) - transitivePeerDependencies: - - supports-color - - '@vitest/coverage-v8@2.1.8(@vitest/browser@2.1.8(@types/node@22.10.1)(playwright@1.48.1)(typescript@5.7.2)(vite@5.4.11(@types/node@22.10.1)(lightningcss@1.27.0)(terser@5.36.0))(vitest@2.1.8)(webdriverio@9.2.1))(vitest@2.1.8(@types/node@22.10.1)(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@22.10.1)(typescript@5.7.2))(terser@5.36.0))': - dependencies: - '@ampproject/remapping': 2.3.0 - '@bcoe/v8-coverage': 0.2.3 - debug: 4.4.0(supports-color@9.4.0) - istanbul-lib-coverage: 3.2.2 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.6 - istanbul-reports: 3.1.7 - magic-string: 0.30.17 - magicast: 0.3.5 - std-env: 3.8.0 - test-exclude: 7.0.1 - tinyrainbow: 1.2.0 - vitest: 2.1.8(@types/node@22.10.1)(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@22.10.1)(typescript@5.7.2))(terser@5.36.0) - optionalDependencies: - '@vitest/browser': 2.1.8(@types/node@22.10.1)(playwright@1.48.1)(typescript@5.7.2)(vite@5.4.11(@types/node@22.10.1)(lightningcss@1.27.0)(terser@5.36.0))(vitest@2.1.8)(webdriverio@9.2.1) - transitivePeerDependencies: - - supports-color - - '@vitest/coverage-v8@2.1.8(@vitest/browser@2.1.8(@types/node@22.10.6)(playwright@1.48.1)(typescript@5.7.2)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0))(vitest@2.1.8)(webdriverio@9.2.1))(vitest@2.1.8(@types/node@22.10.6)(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@22.10.6)(typescript@5.7.2))(terser@5.36.0))': - dependencies: - '@ampproject/remapping': 2.3.0 - '@bcoe/v8-coverage': 0.2.3 - debug: 4.4.0(supports-color@9.4.0) - istanbul-lib-coverage: 3.2.2 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.6 - istanbul-reports: 3.1.7 - magic-string: 0.30.17 - magicast: 0.3.5 - std-env: 3.8.0 - test-exclude: 7.0.1 - tinyrainbow: 1.2.0 - vitest: 2.1.8(@types/node@22.10.6)(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@22.10.6)(typescript@5.7.2))(terser@5.36.0) - optionalDependencies: - '@vitest/browser': 2.1.8(@types/node@22.10.6)(playwright@1.48.1)(typescript@5.7.2)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0))(vitest@2.1.8)(webdriverio@9.2.1) - transitivePeerDependencies: - - supports-color - - '@vitest/coverage-v8@2.1.8(@vitest/browser@2.1.8(@types/node@22.10.6)(playwright@1.48.1)(typescript@5.7.3)(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0))(vitest@2.1.8)(webdriverio@9.2.1))(vitest@2.1.8(@types/node@22.10.6)(@vitest/browser@2.1.8)(jsdom@25.0.1)(lightningcss@1.27.0)(msw@2.7.0(@types/node@22.10.6)(typescript@5.7.3))(terser@5.36.0))': + '@vitest/coverage-v8@2.1.8(@vitest/browser@2.1.8)(vitest@2.1.8)': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -22676,12 +22033,6 @@ snapshots: '@vitest/utils': 0.34.3 chai: 4.5.0 - '@vitest/expect@1.6.0': - dependencies: - '@vitest/spy': 1.6.0 - '@vitest/utils': 1.6.0 - chai: 4.5.0 - '@vitest/expect@2.0.5': dependencies: '@vitest/spy': 2.0.5 @@ -22870,12 +22221,6 @@ snapshots: p-limit: 4.0.0 pathe: 1.1.2 - '@vitest/runner@1.6.0': - dependencies: - '@vitest/utils': 1.6.0 - p-limit: 5.0.0 - pathe: 1.1.2 - '@vitest/runner@2.0.5': dependencies: '@vitest/utils': 2.0.5 @@ -22897,12 +22242,6 @@ snapshots: pathe: 1.1.2 pretty-format: 29.7.0 - '@vitest/snapshot@1.6.0': - dependencies: - magic-string: 0.30.17 - pathe: 1.1.2 - pretty-format: 29.7.0 - '@vitest/snapshot@2.0.5': dependencies: '@vitest/pretty-format': 2.0.5 @@ -22925,10 +22264,6 @@ snapshots: dependencies: tinyspy: 2.2.1 - '@vitest/spy@1.6.0': - dependencies: - tinyspy: 2.2.1 - '@vitest/spy@2.0.5': dependencies: tinyspy: 3.0.2 @@ -22947,13 +22282,6 @@ snapshots: loupe: 2.3.7 pretty-format: 29.7.0 - '@vitest/utils@1.6.0': - dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - '@vitest/utils@2.0.5': dependencies: '@vitest/pretty-format': 2.0.5 @@ -24454,8 +23782,6 @@ snapshots: commander@11.1.0: {} - commander@12.1.0: {} - commander@2.20.3: optional: true @@ -25017,8 +24343,6 @@ snapshots: dependencies: base-64: 1.0.0 - devalue@4.3.3: {} - devalue@5.1.1: {} devlop@1.1.0: @@ -25290,8 +24614,6 @@ snapshots: is-date-object: 1.0.5 is-symbol: 1.1.0 - es6-promise@3.3.1: {} - esbuild-plugin-alias@0.2.1: {} esbuild-plugins-node-modules-polyfill@1.6.8(esbuild@0.17.6): @@ -25511,7 +24833,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1): + eslint-module-utils@2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: @@ -25533,7 +24855,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -25926,8 +25248,6 @@ snapshots: '@types/estree-jsx': 1.0.5 '@types/unist': 2.0.11 - estree-walker@0.6.1: {} - estree-walker@2.0.2: {} estree-walker@3.0.3: @@ -26182,10 +25502,6 @@ snapshots: dependencies: pend: 1.2.0 - fdir@6.4.3(picomatch@4.0.2): - optionalDependencies: - picomatch: 4.0.2 - fetch-blob@3.2.0: dependencies: node-domexception: 1.0.0 @@ -27508,8 +26824,6 @@ snapshots: js-tokens@4.0.0: {} - js-tokens@9.0.1: {} - js-yaml@3.14.1: dependencies: argparse: 1.0.10 @@ -27756,7 +27070,7 @@ snapshots: light-my-request@5.14.0: dependencies: - cookie: 0.7.2 + cookie: 0.7.1 process-warning: 3.0.0 set-cookie-parser: 2.7.1 @@ -29737,10 +29051,6 @@ snapshots: dependencies: yocto-queue: 1.1.1 - p-limit@5.0.0: - dependencies: - yocto-queue: 1.1.1 - p-limit@6.2.0: dependencies: yocto-queue: 1.1.1 @@ -30054,15 +29364,6 @@ snapshots: postcss: 8.4.49 ts-node: 10.9.2(@types/node@22.10.6)(typescript@5.7.2) - postcss-load-config@4.0.2(postcss@8.4.49)(ts-node@10.9.2(@types/node@22.10.6)(typescript@5.7.3)): - dependencies: - lilconfig: 3.1.2 - yaml: 2.6.0 - optionalDependencies: - postcss: 8.4.49 - ts-node: 10.9.2(@types/node@22.10.6)(typescript@5.7.3) - optional: true - postcss-modules-extract-imports@3.1.0(postcss@8.4.49): dependencies: postcss: 8.4.49 @@ -30164,11 +29465,6 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-svelte@3.3.3(prettier@3.4.2)(svelte@5.18.0): - dependencies: - prettier: 3.4.2 - svelte: 5.18.0 - prettier@2.8.7: {} prettier@3.3.3: {} @@ -30896,8 +30192,6 @@ snapshots: require-like@0.1.2: {} - require-relative@0.8.7: {} - requires-port@1.0.0: {} resolve-alpn@1.2.1: {} @@ -31007,34 +30301,6 @@ snapshots: '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.1 '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.1 - rollup-plugin-svelte@6.1.1(rollup@3.29.1)(svelte@5.18.0): - dependencies: - require-relative: 0.8.7 - rollup: 3.29.1 - rollup-pluginutils: 2.8.2 - sourcemap-codec: 1.4.8 - svelte: 5.18.0 - - rollup-plugin-svelte@7.2.2(rollup@3.29.1)(svelte@5.18.0): - dependencies: - '@rollup/pluginutils': 4.2.1 - resolve.exports: 2.0.3 - rollup: 3.29.1 - svelte: 5.18.0 - - rollup-plugin-visualizer@5.14.0(rollup@4.24.0): - dependencies: - open: 8.4.2 - picomatch: 4.0.2 - source-map: 0.7.4 - yargs: 17.7.2 - optionalDependencies: - rollup: 4.24.0 - - rollup-pluginutils@2.8.2: - dependencies: - estree-walker: 0.6.1 - rollup@3.29.1: optionalDependencies: fsevents: 2.3.3 @@ -31116,13 +30382,6 @@ snapshots: safer-buffer@2.1.2: {} - sander@0.5.1: - dependencies: - es6-promise: 3.3.1 - graceful-fs: 4.2.11 - mkdirp: 0.5.6 - rimraf: 2.7.1 - sax@1.4.1: {} saxes@6.0.0: @@ -31318,6 +30577,7 @@ snapshots: '@polka/url': 1.0.0-next.28 mrmime: 2.0.0 totalist: 3.0.1 + optional: true sisteransi@1.0.5: {} @@ -31391,13 +30651,6 @@ snapshots: dependencies: atomic-sleep: 1.0.0 - sorcery@0.11.1: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - buffer-crc32: 1.0.0 - minimist: 1.2.8 - sander: 0.5.1 - sort-keys-length@1.0.1: dependencies: sort-keys: 1.1.2 @@ -31422,8 +30675,6 @@ snapshots: source-map@0.7.4: {} - sourcemap-codec@1.4.8: {} - space-separated-tokens@1.1.5: {} space-separated-tokens@2.0.2: {} @@ -31623,10 +30874,6 @@ snapshots: dependencies: acorn: 8.14.0 - strip-literal@2.1.1: - dependencies: - js-tokens: 9.0.1 - strnum@1.0.5: {} strong-log-transformer@2.1.0: @@ -31672,48 +30919,6 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@3.8.6(@babel/core@7.26.0)(postcss-load-config@4.0.2(postcss@8.4.49)(ts-node@10.9.2(@types/node@22.10.6)(typescript@5.7.3)))(postcss@8.4.49)(svelte@5.18.0): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - chokidar: 3.6.0 - picocolors: 1.1.1 - sade: 1.8.1 - svelte: 5.18.0 - svelte-preprocess: 5.1.4(@babel/core@7.26.0)(postcss-load-config@4.0.2(postcss@8.4.49)(ts-node@10.9.2(@types/node@22.10.6)(typescript@5.7.3)))(postcss@8.4.49)(svelte@5.18.0)(typescript@5.7.3) - typescript: 5.7.3 - transitivePeerDependencies: - - '@babel/core' - - coffeescript - - less - - postcss - - postcss-load-config - - pug - - sass - - stylus - - sugarss - - svelte-hmr@0.11.6(svelte@5.18.0): - dependencies: - svelte: 5.18.0 - - svelte-hmr@0.16.0(svelte@5.18.0): - dependencies: - svelte: 5.18.0 - - svelte-preprocess@5.1.4(@babel/core@7.26.0)(postcss-load-config@4.0.2(postcss@8.4.49)(ts-node@10.9.2(@types/node@22.10.6)(typescript@5.7.3)))(postcss@8.4.49)(svelte@5.18.0)(typescript@5.7.3): - dependencies: - '@types/pug': 2.0.10 - detect-indent: 6.1.0 - magic-string: 0.30.17 - sorcery: 0.11.1 - strip-indent: 3.0.0 - svelte: 5.18.0 - optionalDependencies: - '@babel/core': 7.26.0 - postcss: 8.4.49 - postcss-load-config: 4.0.2(postcss@8.4.49)(ts-node@10.9.2(@types/node@22.10.6)(typescript@5.7.3)) - typescript: 5.7.3 - svelte2tsx@0.7.34(svelte@5.18.0)(typescript@5.7.3): dependencies: dedent-js: 1.0.1 @@ -32002,8 +31207,6 @@ snapshots: tinypool@0.7.0: {} - tinypool@0.8.4: {} - tinypool@1.0.1: {} tinyrainbow@1.2.0: {} @@ -32229,25 +31432,6 @@ snapshots: yn: 3.1.1 optional: true - ts-node@10.9.2(@types/node@22.10.6)(typescript@5.7.3): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 22.10.6 - acorn: 8.14.0 - acorn-walk: 8.3.4 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.7.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optional: true - tsconfck@3.1.4(typescript@5.7.2): optionalDependencies: typescript: 5.7.2 @@ -32871,24 +32055,6 @@ snapshots: - supports-color - terser - vite-node@1.6.0(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0): - dependencies: - cac: 6.7.14 - debug: 4.4.0(supports-color@9.4.0) - pathe: 1.1.2 - picocolors: 1.1.1 - vite: 5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - vite-node@1.6.0(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0): dependencies: cac: 6.7.14 @@ -33023,7 +32189,7 @@ snapshots: solid-js: 1.7.11 solid-refresh: 0.6.3(solid-js@1.7.11) vite: 4.5.5(@types/node@20.5.9)(lightningcss@1.27.0)(terser@5.36.0) - vitefu: 1.0.5(vite@4.5.5(@types/node@20.5.9)(lightningcss@1.27.0)(terser@5.36.0)) + vitefu: 1.0.4(vite@4.5.5(@types/node@20.5.9)(lightningcss@1.27.0)(terser@5.36.0)) transitivePeerDependencies: - supports-color @@ -33041,15 +32207,6 @@ snapshots: transitivePeerDependencies: - supports-color - vite-plugin-svelte@3.0.1(rollup@3.29.1)(svelte@5.18.0)(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0)): - dependencies: - rollup-plugin-svelte: 6.1.1(rollup@3.29.1)(svelte@5.18.0) - svelte: 5.18.0 - svelte-hmr: 0.11.6(svelte@5.18.0) - vite: 5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0) - transitivePeerDependencies: - - rollup - vite-tsconfig-paths@4.3.2(typescript@5.7.2)(vite@5.4.9(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)): dependencies: debug: 4.3.7 @@ -33156,22 +32313,14 @@ snapshots: optionalDependencies: vite: 4.5.5(@types/node@20.5.9)(lightningcss@1.27.0)(terser@5.36.0) - vitefu@0.2.5(vite@5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0)): + vitefu@1.0.4(vite@4.5.5(@types/node@20.5.9)(lightningcss@1.27.0)(terser@5.36.0)): optionalDependencies: - vite: 5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0) + vite: 4.5.5(@types/node@20.5.9)(lightningcss@1.27.0)(terser@5.36.0) vitefu@1.0.4(vite@6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0)): optionalDependencies: vite: 6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0) - vitefu@1.0.5(vite@4.5.5(@types/node@20.5.9)(lightningcss@1.27.0)(terser@5.36.0)): - optionalDependencies: - vite: 4.5.5(@types/node@20.5.9)(lightningcss@1.27.0)(terser@5.36.0) - - vitefu@1.0.5(vite@5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0)): - optionalDependencies: - vite: 5.4.11(@types/node@22.10.6)(lightningcss@1.27.0)(terser@5.36.0) - vitefu@1.0.5(vite@6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0)): optionalDependencies: vite: 6.0.7(@types/node@22.10.6)(jiti@2.3.3)(lightningcss@1.27.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.6.0) @@ -33217,41 +32366,6 @@ snapshots: - supports-color - terser - vitest@1.6.0(@types/node@20.16.13)(jsdom@25.0.1)(lightningcss@1.27.0)(terser@5.36.0): - dependencies: - '@vitest/expect': 1.6.0 - '@vitest/runner': 1.6.0 - '@vitest/snapshot': 1.6.0 - '@vitest/spy': 1.6.0 - '@vitest/utils': 1.6.0 - acorn-walk: 8.3.4 - chai: 4.5.0 - debug: 4.4.0(supports-color@9.4.0) - execa: 8.0.1 - local-pkg: 0.5.1 - magic-string: 0.30.17 - pathe: 1.1.2 - picocolors: 1.1.1 - std-env: 3.8.0 - strip-literal: 2.1.1 - tinybench: 2.9.0 - tinypool: 0.8.4 - vite: 5.4.11(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0) - vite-node: 1.6.0(@types/node@20.16.13)(lightningcss@1.27.0)(terser@5.36.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/node': 20.16.13 - jsdom: 25.0.1 - transitivePeerDependencies: - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - vitest@2.0.5(@types/node@22.10.6)(jsdom@25.0.1)(lightningcss@1.27.0)(terser@5.36.0): dependencies: '@ampproject/remapping': 2.3.0 @@ -33297,7 +32411,7 @@ snapshots: '@vitest/utils': 2.1.3 chai: 5.1.1 debug: 4.3.7 - magic-string: 0.30.17 + magic-string: 0.30.12 pathe: 1.1.2 std-env: 3.8.0 tinybench: 2.9.0 @@ -33333,7 +32447,7 @@ snapshots: '@vitest/utils': 2.1.3 chai: 5.1.1 debug: 4.3.7 - magic-string: 0.30.17 + magic-string: 0.30.12 pathe: 1.1.2 std-env: 3.8.0 tinybench: 2.9.0

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 z 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 diff --git a/inlang/packages/paraglide-sveltekit/assets/no-param.png b/inlang/packages/paraglide-sveltekit/assets/no-param.png deleted file mode 100644 index a9842ad49d4f3ea4bf66db83c554257d72eec778..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118053 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%0DrIfMfEOjc%Pe8^8zz6nkQaMs>xjB8||S6&+l;E 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 diff --git a/inlang/packages/paraglide-sveltekit/assets/og.png b/inlang/packages/paraglide-sveltekit/assets/og.png deleted file mode 100644 index b3864ea03306b8525acc16bfa527436ea9173fd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204847 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 z 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 literal 0 HcmV?d00001 diff --git a/inlang/packages/paraglide-sveltekit/assets/no-param.png b/inlang/packages/paraglide-sveltekit/assets/no-param.png new file mode 100644 index 0000000000000000000000000000000000000000..a9842ad49d4f3ea4bf66db83c554257d72eec778 GIT binary patch literal 118053 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%0DrIfMfEOjc%Pe8^8zz6nkQaMs>xjB8||S6&+l;E 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 literal 0 HcmV?d00001 diff --git a/inlang/packages/paraglide-sveltekit/assets/og.png b/inlang/packages/paraglide-sveltekit/assets/og.png new file mode 100644 index 0000000000000000000000000000000000000000..b3864ea03306b8525acc16bfa527436ea9173fd8 GIT binary patch literal 204847 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