Skip to content

Commit 26ef24e

Browse files
committed
Update to latest svelte, which changed how loading works
1 parent b890d34 commit 26ef24e

File tree

22 files changed

+569
-284
lines changed

22 files changed

+569
-284
lines changed

package-lock.json

Lines changed: 491 additions & 173 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,29 +14,29 @@
1414
"@sveltejs/adapter-netlify": "next",
1515
"@sveltejs/kit": "next",
1616
"@testing-library/svelte": "^3.1.3",
17-
"@types/cookie": "^0.4.1",
18-
"autoprefixer": "^10.4.0",
17+
"@types/cookie": "^0.5.1",
18+
"autoprefixer": "^10.4.8",
1919
"chai-dom": "^1.11.0",
2020
"cssnano": "^5.0.14",
2121
"jsdom": "^20.0.0",
2222
"postcss": "^8.4.5",
23-
"postcss-load-config": "^3.1.0",
24-
"svelte": "^3.45.0",
25-
"svelte-check": "^2.2.11",
26-
"svelte-preprocess": "^4.10.1",
27-
"tailwindcss": "^3.0.11",
28-
"tslib": "^2.3.1",
29-
"typescript": "^4.5.4",
30-
"vite": "^3.0.5",
31-
"vitest": "^0.21.1"
23+
"postcss-load-config": "^4.0.0",
24+
"svelte": "^3.49.0",
25+
"svelte-check": "^2.8.0",
26+
"svelte-preprocess": "^4.10.7",
27+
"tailwindcss": "^3.1.8",
28+
"tslib": "^2.4.0",
29+
"typescript": "^4.7.0",
30+
"vite": "^3.0.2",
31+
"vitest": "^0.22.0"
3232
},
3333
"type": "module",
3434
"dependencies": {
3535
"@fontsource/fira-mono": "^4.5.0",
3636
"@lukeed/uuid": "^2.0.0",
37-
"cookie": "^0.4.1",
38-
"svelte-intl-precompile": "^0.11.1",
39-
"terser": "^5.10.0"
37+
"cookie": "^0.5.0",
38+
"svelte-intl-precompile": "^0.12.0",
39+
"terser": "^5.14.0"
4040
},
4141
"volta": {
4242
"node": "16.14.0",

src/lib/Playground.svelte

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
"header": "Svelte Intl Precompile is {adjective}",
44
"posted-on": "Posted on {postDate, date, long}",
55
"invite-friend": "{name} has joined Svelte! Give {gender, select, male {him} female {her} other {your friend}} a warm welcome!",
6-
"friends-msg": "You have {count, plural, zero {no friend} one {just # friend} other {# friends}}"
7-
});
6+
"friends-msg": "You have {count, plural, zero {no friend} one {just # friend} other {# friends}}",
7+
"show-friend-profile": "Click to show {gender, select, male {his profile} female {her profile} other {the profile}}"
8+
}, null, 2);
89
let transformedTranslations = "";
910
let minifiedTranslations = "";
1011
let showMinified = false;
@@ -32,6 +33,7 @@
3233
}
3334
3435
$: transformedTranslations === "" ? transform(translations) : debouncedTransform(translations)
36+
$: sizeChange = Math.round(output.length / translations.length * 100, 0) - 100;
3537
</script>
3638
<div>
3739
<label for="email" class="text-sm block mb-2">Translations</label>
@@ -57,5 +59,5 @@
5759
<pre class="p-4 mt-2 rounded bg-code overflow-x-auto text-sm">
5860
<code><div>{output}</div></code>
5961
</pre>
60-
{output.length} bytes
62+
{output.length} bytes ({Math.abs(sizeChange)}% {sizeChange > 0 ? 'bigger' : 'smaller' } than the source translations)
6163
</div>
File renamed without changes.

src/routes/[...lang]/__layout.svelte renamed to src/routes/[...lang]/+layout.svelte

Lines changed: 6 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,10 @@
1-
<script context="module" lang="ts">
2-
import { registerAll, availableLocales } from '$locales';
3-
import { waitLocale, init, locale } from 'svelte-intl-precompile';
4-
import { goto } from '$app/navigation';
5-
import { page } from '$app/stores';
6-
registerAll();
7-
let defaultLang = 'en';
8-
let localeRegex = new RegExp(`^/(${availableLocales.join('|')})(/|$)`);
9-
let initialized = false;
10-
function extractLanguageFromPath(path) {
11-
return (localeRegex.exec(path) || [null, defaultLang])[1];
12-
}
13-
export async function load({ url: { pathname } }) {
14-
if (!initialized) {
15-
const lang = extractLanguageFromPath(pathname);
16-
init({
17-
initialLocale: lang,
18-
fallbackLocale: defaultLang
19-
});
20-
initialized = true;
21-
await waitLocale()
22-
}
23-
return {};
24-
}
25-
</script>
261
<script lang="ts">
2+
import { goto } from '$app/navigation';
3+
import { page } from '$app/stores';
4+
import { locale } from 'svelte-intl-precompile';
5+
import { availableLocales } from '$locales';
6+
import { extractLanguageFromPath, localeRegex } from './+layout';
7+
278
$: lang = extractLanguageFromPath($page.url.pathname);
289
$: {
2910
if ($locale !== lang) {

src/routes/[...lang]/+layout.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { registerAll, availableLocales } from '$locales';
2+
import { waitLocale, init } from 'svelte-intl-precompile';
3+
import type { LayoutLoad } from './$types';
4+
5+
registerAll();
6+
let defaultLang = 'en';
7+
let initialized = false;
8+
9+
export const localeRegex = new RegExp(`^/(${availableLocales.join('|')})(/|$)`);
10+
export function extractLanguageFromPath(path) {
11+
return (localeRegex.exec(path) || [null, defaultLang])[1];
12+
}
13+
export const load: LayoutLoad = async function({ url: { pathname } }) {
14+
if (!initialized) {
15+
const lang = extractLanguageFromPath(pathname);
16+
init({
17+
initialLocale: lang,
18+
fallbackLocale: defaultLang
19+
});
20+
initialized = true;
21+
await waitLocale()
22+
}
23+
}

src/routes/[...lang]/index.svelte renamed to src/routes/[...lang]/+page.svelte

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
1-
<script context="module" lang="ts">
2-
import { t, locale } from 'svelte-intl-precompile';
3-
export const prerender = true;
4-
</script>
51
<script lang="ts">
2+
import { t, locale } from 'svelte-intl-precompile';
63
</script>
74

85
<svelte:head>

src/routes/[...lang]/+page.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export const prerender = true;

src/routes/[...lang]/docs/configuration.svelte renamed to src/routes/[...lang]/docs/configuration/+page.svelte

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
<script context="module" lang="ts">
2-
export const prerender = true;
3-
</script>
41
<script lang="ts">
52
import { t, locale } from 'svelte-intl-precompile';
63
import scrollToHash from '$lib/scroll-to-hash';;
@@ -21,18 +18,16 @@
2118
<p>{$t('configuration.paragraph.example-1')} <CodeInline>src/__layout.svelte</CodeInline> {$t('configuration.paragraph.example-2')}</p>
2219

2320
<Codeblock lang="html">
24-
{`<script context="module">
25-
import { addMessages, init } from 'svelte-intl-precompile';
21+
{`
22+
import { addMessages, init } from 'svelte-intl-precompile';
2623
import en from '$locales/en';
2724
import es from '$locales/es';
2825
addMessages('en', en);
2926
addMessages('es', es);
3027
init({
3128
initialLocale: 'en',
3229
fallbackLocale: 'en'
33-
});
34-
</script>
35-
<slot/>`}
30+
});`}
3631
</Codeblock>
3732

3833
<p>{$t('configuration.paragraph.example-3')}</p>
@@ -66,17 +61,14 @@ addMessages('es', es);
6661
</p>
6762

6863
<Codeblock lang="js">{`
69-
<script context="module">
7064
import { init, register, waitLocale } from 'svelte-intl-precompile';
7165
register('en', () => import('$locales/en'));
7266
register('es', () => import('$locales/es'));
7367
7468
export async function load() {
7569
init({ initialLocale: en });
7670
await waitLocale(); // awaits the default locale, "en" in this case.
77-
return {};
7871
}
79-
</script>
8072
`}</Codeblock>
8173

8274
<h2 class="text-2xl font-semibold" id="dynamic-locales">{$t('configuration.subsection.dynamic-locales-shorthand')}</h2>
@@ -92,7 +84,6 @@ addMessages('es', es);
9284
</p>
9385

9486
<Codeblock lang="js">{`
95-
<script context="module">
9687
import { init, waitLocale } from 'svelte-intl-precompile';
9788
import { registerAll, availableLocales } from '$locales';
9889
@@ -101,10 +92,8 @@ addMessages('es', es);
10192
export async function load() {
10293
init({ initialLocale: selectBestMatchingLocale(availableLocales) });
10394
await waitLocale();
104-
return {};
10595
}
106-
</script>
107-
`}</Codeblock>
96+
`}</Codeblock>
10897

10998
<h2 class="text-2xl font-semibold" id="init">{$t('configuration.subsection.init')}</h2>
11099

src/routes/[...lang]/docs/getting-started.svelte renamed to src/routes/[...lang]/docs/getting-started/+page.svelte

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
<script context="module" lang="ts">
2-
export const prerender = true;
3-
</script>
4-
51
<script lang="ts">
62
import { t } from 'svelte-intl-precompile';
73
import Codeblock from '$lib/Codeblock.svelte';
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export const prerender = true;

src/routes/[...lang]/docs/icu-crash-course.svelte renamed to src/routes/[...lang]/docs/icu-crash-course/+page.svelte

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
<script context="module" lang="ts">
2-
export const prerender = true;
3-
</script>
4-
51
<script lang="ts">
62
import { t } from 'svelte-intl-precompile';
73
let interpolation = 'orange';
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export const prerender = true;

src/routes/[...lang]/docs/introduction.svelte renamed to src/routes/[...lang]/docs/introduction/+page.svelte

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
<script context="module" lang="ts">
1+
<script lang="ts">
22
import Playground from "$lib/Playground.svelte";
33
import { t } from "precompile-intl-runtime";
4-
export const prerender = true;
54
</script>
65

76
<svelte:head>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export const prerender = true;

src/routes/[...lang]/docs/playground.svelte renamed to src/routes/[...lang]/docs/playground/+page.svelte

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
<script context="module" lang="ts">
2-
export const prerender = true;
3-
</script>
4-
51
<script lang="ts">
62
import { t } from "precompile-intl-runtime";
73
import Playground from "$lib/Playground.svelte";
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export const prerender = true;

src/routes/[...lang]/docs/usage.svelte renamed to src/routes/[...lang]/docs/usage/+page.svelte

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
<script context="module" lang="ts">
2-
export const prerender = true;
3-
</script>
41
<script>
52
import { t } from 'svelte-intl-precompile';
63
import Codeblock from '$lib/Codeblock.svelte';
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export const prerender = true;

src/routes/playground.ts

Lines changed: 0 additions & 33 deletions
This file was deleted.

src/routes/playground/+server.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { json } from '@sveltejs/kit';
2+
import * as babel from '@babel/core';
3+
import { minify } from "terser";
4+
import buildPlugin from 'babel-plugin-precompile-intl';
5+
6+
const intlPrecompiler = buildPlugin('svelte-intl-precompile');
7+
8+
// POST /playground.json
9+
export async function POST({ request, locals }) {
10+
try {
11+
const body = await request.text();
12+
let transformed = babel.transform('export default ' + body, { plugins: [intlPrecompiler] }).code;
13+
let { code: minified } = await minify(transformed, { mangle: { toplevel: true } });
14+
return json({ transformed, minified });
15+
} catch {
16+
return json({ error: "Syntax error" }, { status: 422 });
17+
}
18+
};

0 commit comments

Comments
 (0)