From 5804539d676d75bd95ab0161d56b9d706b19ff28 Mon Sep 17 00:00:00 2001 From: 7nik Date: Tue, 24 Jun 2025 23:53:03 +0300 Subject: [PATCH 1/3] chore: adjust linting --- .prettierignore | 4 ++-- eslint.config.js | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.prettierignore b/.prettierignore index d5c124353c37..72cd10aca8e7 100644 --- a/.prettierignore +++ b/.prettierignore @@ -7,6 +7,7 @@ packages/**/config/*.js # packages/svelte packages/svelte/messages/**/*.md +packages/svelte/scripts/_bundle.js packages/svelte/src/compiler/errors.js packages/svelte/src/compiler/warnings.js packages/svelte/src/internal/client/errors.js @@ -25,8 +26,7 @@ packages/svelte/tests/hydration/samples/*/_expected.html packages/svelte/tests/hydration/samples/*/_override.html packages/svelte/types packages/svelte/compiler/index.js -playgrounds/sandbox/input/**.svelte -playgrounds/sandbox/output +playgrounds/sandbox/src/* # sites/svelte.dev sites/svelte.dev/static/svelte-app.json diff --git a/eslint.config.js b/eslint.config.js index d6c977a36a59..d7044fc9f1ec 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -87,6 +87,7 @@ export default [ '**/*.d.ts', '**/tests', 'packages/svelte/scripts/process-messages/templates/*.js', + 'packages/svelte/scripts/_bundle.js', 'packages/svelte/src/compiler/errors.js', 'packages/svelte/src/internal/client/errors.js', 'packages/svelte/src/internal/client/warnings.js', From b4a7e4cd5e669a620fbdff41baf98c9149eebf95 Mon Sep 17 00:00:00 2001 From: 7nik Date: Wed, 25 Jun 2025 12:19:17 +0300 Subject: [PATCH 2/3] more nice treeshaking failure message --- .../svelte/scripts/check-treeshakeability.js | 49 ++++++++++--------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/packages/svelte/scripts/check-treeshakeability.js b/packages/svelte/scripts/check-treeshakeability.js index 1501ee69546d..6f177c69d8e3 100644 --- a/packages/svelte/scripts/check-treeshakeability.js +++ b/packages/svelte/scripts/check-treeshakeability.js @@ -118,36 +118,39 @@ const bundle = await bundle_code( ).js.code ); -if (!bundle.includes('hydrate_node') && !bundle.includes('hydrate_next')) { - // eslint-disable-next-line no-console - console.error(`✅ Hydration code treeshakeable`); -} else { - failed = true; - // eslint-disable-next-line no-console - console.error(`❌ Hydration code not treeshakeable`); -} +/** + * @param {string} case_name + * @param {string[]} strings + */ +function check_bundle(case_name, ...strings) { + for (const string of strings) { + const index = bundle.indexOf(string); + if (index >= 0) { + // eslint-disable-next-line no-console + console.error(`❌ ${case_name} not treeshakeable`); + failed = true; -if (!bundle.includes('component_context.l')) { - // eslint-disable-next-line no-console - console.error(`✅ Legacy code treeshakeable`); -} else { - failed = true; + let lines = bundle.slice(index - 500, index + 500).split('\n'); + const target_line = lines.findIndex(line => line.includes(string)); + // mark the failed line + lines = lines.map((line, i) => i === target_line ? `> ${line}` : `| ${line}`) + .slice(target_line - 5, target_line + 6); + // eslint-disable-next-line no-console + console.error('The first failed line:\n' + lines.join('\n')); + return; + } + } // eslint-disable-next-line no-console - console.error(`❌ Legacy code not treeshakeable`); + console.error(`✅ ${case_name} treeshakeable`); } -if (!bundle.includes(`'CreatedAt'`)) { - // eslint-disable-next-line no-console - console.error(`✅ $inspect.trace code treeshakeable`); -} else { - failed = true; - // eslint-disable-next-line no-console - console.error(`❌ $inspect.trace code not treeshakeable`); -} +check_bundle('Hydration code', 'hydrate_node', 'hydrate_next'); +check_bundle('Legacy code', 'component_context.l'); +check_bundle('$inspect.trace', `'CreatedAt'`); if (failed) { // eslint-disable-next-line no-console - console.error(bundle); + console.error('Full bundle at', path.resolve('scripts/_bundle.js')); fs.writeFileSync('scripts/_bundle.js', bundle); } From e1abdb642fd5500321ea45b7068365bfbff90790 Mon Sep 17 00:00:00 2001 From: 7nik Date: Wed, 25 Jun 2025 12:23:10 +0300 Subject: [PATCH 3/3] lint --- packages/svelte/scripts/check-treeshakeability.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/svelte/scripts/check-treeshakeability.js b/packages/svelte/scripts/check-treeshakeability.js index 6f177c69d8e3..e883496fe2a7 100644 --- a/packages/svelte/scripts/check-treeshakeability.js +++ b/packages/svelte/scripts/check-treeshakeability.js @@ -131,9 +131,10 @@ function check_bundle(case_name, ...strings) { failed = true; let lines = bundle.slice(index - 500, index + 500).split('\n'); - const target_line = lines.findIndex(line => line.includes(string)); + const target_line = lines.findIndex((line) => line.includes(string)); // mark the failed line - lines = lines.map((line, i) => i === target_line ? `> ${line}` : `| ${line}`) + lines = lines + .map((line, i) => (i === target_line ? `> ${line}` : `| ${line}`)) .slice(target_line - 5, target_line + 6); // eslint-disable-next-line no-console console.error('The first failed line:\n' + lines.join('\n'));