Skip to content

Commit a271878

Browse files
committed
fix: adjust parse return type
It returns the root which contains the Svelte nodes
1 parent c7cb90c commit a271878

File tree

5 files changed

+24
-5
lines changed

5 files changed

+24
-5
lines changed

.changeset/sour-weeks-fix.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'svelte': patch
3+
---
4+
5+
fix: adjust `parse` return type

packages/svelte/src/compiler/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ function handle_compile_error(error, filename, source) {
9191
* https://svelte.dev/docs/svelte-compiler#svelte-parse
9292
* @param {string} source
9393
* @param {{ filename?: string; modern?: boolean }} [options]
94-
* @returns {import('#compiler').SvelteNode | import('./types/legacy-nodes.js').LegacySvelteNode}
94+
* @returns {import('#compiler').Root | import('./types/legacy-nodes.js').LegacyRoot}
9595
*/
9696
export function parse(source, options = {}) {
9797
/** @type {import('#compiler').Root} */
@@ -108,7 +108,7 @@ export function parse(source, options = {}) {
108108

109109
if (options.modern) {
110110
// remove things that we don't want to treat as public API
111-
return walk(/** @type {import('#compiler').SvelteNode} */ (ast), null, {
111+
return walk(ast, null, {
112112
_(node, { next }) {
113113
// @ts-ignore
114114
delete node.parent;

packages/svelte/src/compiler/legacy.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,15 @@ function remove_surrounding_whitespace_nodes(nodes) {
3333
* Transform our nice modern AST into the monstrosity emitted by Svelte 4
3434
* @param {string} source
3535
* @param {import('#compiler').Root} ast
36-
* @returns {import('./types/legacy-nodes.js').LegacySvelteNode}
36+
* @returns {import('./types/legacy-nodes.js').LegacyRoot}
3737
*/
3838
export function convert(source, ast) {
3939
const root =
4040
/** @type {import('./types/template.js').SvelteNode | import('./types/legacy-nodes.js').LegacySvelteNode} */ (
4141
ast
4242
);
4343

44-
return /** @type {import('./types/legacy-nodes.js').LegacySvelteNode} */ (
44+
return /** @type {import('./types/legacy-nodes.js').LegacyRoot} */ (
4545
walk(root, null, {
4646
_(node, { next }) {
4747
// @ts-ignore

packages/svelte/src/compiler/types/legacy-nodes.d.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,13 @@ interface BaseElement extends BaseNode {
2121
children: Array<LegacyElementLike>;
2222
}
2323

24+
export interface LegacyRoot extends BaseNode {
25+
html: LegacySvelteNode;
26+
css?: any;
27+
instance?: any;
28+
module?: any;
29+
}
30+
2431
export interface LegacyAction extends BaseNode {
2532
type: 'Action';
2633
/** The 'x' in `use:x` */

packages/svelte/types/index.d.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -514,7 +514,7 @@ declare module 'svelte/compiler' {
514514
export function parse(source: string, options?: {
515515
filename?: string | undefined;
516516
modern?: boolean | undefined;
517-
} | undefined): SvelteNode | LegacySvelteNode;
517+
} | undefined): Root | LegacyRoot;
518518
/**
519519
* @deprecated Replace this with `import { walk } from 'estree-walker'`
520520
* */
@@ -779,6 +779,13 @@ declare module 'svelte/compiler' {
779779
children: Array<LegacyElementLike>;
780780
}
781781

782+
interface LegacyRoot extends BaseNode_1 {
783+
html: LegacySvelteNode;
784+
css?: any;
785+
instance?: any;
786+
module?: any;
787+
}
788+
782789
interface LegacyAction extends BaseNode_1 {
783790
type: 'Action';
784791
/** The 'x' in `use:x` */

0 commit comments

Comments
 (0)