From 13f7fbdb9b4d927059f5a7337451798dbc8f9a3e Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Mon, 30 Jun 2025 13:31:14 -0400 Subject: [PATCH] make runes globally available --- packages/svelte/src/compiler/phases/2-analyze/index.js | 6 ++++-- packages/svelte/src/compiler/phases/types.d.ts | 1 + packages/svelte/src/compiler/state.js | 10 +++++++++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/packages/svelte/src/compiler/phases/2-analyze/index.js b/packages/svelte/src/compiler/phases/2-analyze/index.js index 0737b47aea..fcfc6c15aa 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/index.js +++ b/packages/svelte/src/compiler/phases/2-analyze/index.js @@ -274,7 +274,8 @@ export function analyze_module(source, options) { state.reset({ dev: options.dev, filename: options.filename, - rootDir: options.rootDir + rootDir: options.rootDir, + runes: true }); walk( @@ -517,7 +518,8 @@ export function analyze_component(root, source, options) { state.reset({ dev: options.dev, filename: options.filename, - rootDir: options.rootDir + rootDir: options.rootDir, + runes: true }); if (!runes) { diff --git a/packages/svelte/src/compiler/phases/types.d.ts b/packages/svelte/src/compiler/phases/types.d.ts index 661f363991..876363bd16 100644 --- a/packages/svelte/src/compiler/phases/types.d.ts +++ b/packages/svelte/src/compiler/phases/types.d.ts @@ -35,6 +35,7 @@ export interface ReactiveStatement { export interface Analysis { module: Js; name: string; // TODO should this be filename? it's used in `compileModule` as well as `compile` + /** @deprecated use `runes` from `state.js` instead */ runes: boolean; immutable: boolean; tracing: boolean; diff --git a/packages/svelte/src/compiler/state.js b/packages/svelte/src/compiler/state.js index cfcd2ac480..633611e695 100644 --- a/packages/svelte/src/compiler/state.js +++ b/packages/svelte/src/compiler/state.js @@ -28,6 +28,8 @@ export let source; */ export let dev; +export let runes = false; + export let locator = getLocator('', { offsetLine: 1 }); /** @param {string} value */ @@ -92,13 +94,19 @@ export function is_ignored(node, code) { } /** - * @param {{ dev: boolean; filename: string; rootDir?: string }} state + * @param {{ + * dev: boolean; + * filename: string; + * rootDir?: string; + * runes: boolean; + * }} state */ export function reset(state) { const root_dir = state.rootDir?.replace(/\\/g, '/'); filename = state.filename.replace(/\\/g, '/'); dev = !!state.dev; + runes = !!state.runes; if (typeof root_dir === 'string' && filename.startsWith(root_dir)) { // make filename relative to rootDir