From 263a8f56fa1d2ae169a6aa8760308c508bd27d2e Mon Sep 17 00:00:00 2001 From: Ryan Turnquist Date: Tue, 4 Feb 2025 09:32:59 -0800 Subject: [PATCH 1/2] fix: reduce recursion in complex input types --- .changeset/famous-cherries-clap.md | 8 ++++++ packages/language-tools/marko.internal.d.ts | 29 +++++++++++---------- 2 files changed, 23 insertions(+), 14 deletions(-) create mode 100644 .changeset/famous-cherries-clap.md diff --git a/.changeset/famous-cherries-clap.md b/.changeset/famous-cherries-clap.md new file mode 100644 index 00000000..00197730 --- /dev/null +++ b/.changeset/famous-cherries-clap.md @@ -0,0 +1,8 @@ +--- +"@marko/language-tools": patch +"@marko/language-server": patch +"@marko/type-check": patch +"marko-vscode": patch +--- + +Reduce recursion in complex input types diff --git a/packages/language-tools/marko.internal.d.ts b/packages/language-tools/marko.internal.d.ts index 71cd940a..6a72a1ce 100644 --- a/packages/language-tools/marko.internal.d.ts +++ b/packages/language-tools/marko.internal.d.ts @@ -471,20 +471,21 @@ type ComponentEventHandlers = { >]: Component[K] extends (...args: any) => any ? Component[K] : never; }; -type FlatScopes = Input[keyof Input & - (string | number)] extends infer Prop - ? [0] extends [1 & Prop] - ? unknown - : Prop extends (...args: any) => { [Marko._.scope]: infer Scope } - ? unknown extends Scope - ? never - : Scope - : Prop extends object - ? Prop extends Extract - ? never - : FlatScopes - : never - : unknown; +type FlatScopes = [0] extends [1 & Input] + ? never + : + | (Input[("content" | "renderBody") & keyof Input] extends infer Prop + ? Prop extends (...args: any[]) => { [Marko._.scope]: infer Scope } + ? Scope + : never + : never) + | (Input[string & keyof Input] extends infer Prop + ? Prop extends { [Symbol.iterator]: any } + ? Prop extends readonly any[] + ? never + : FlatScopes + : never + : never); type MergeScopes = { [K in Scopes extends Scopes ? keyof Scopes : never]: Scopes extends Scopes From 830fddd8fcbbeb87745afab79899da795f7e16ad Mon Sep 17 00:00:00 2001 From: Ryan Turnquist Date: Tue, 4 Feb 2025 09:53:37 -0800 Subject: [PATCH 2/2] chore: bump changeset --- .changeset/famous-cherries-clap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/famous-cherries-clap.md b/.changeset/famous-cherries-clap.md index 00197730..120575f5 100644 --- a/.changeset/famous-cherries-clap.md +++ b/.changeset/famous-cherries-clap.md @@ -5,4 +5,4 @@ "marko-vscode": patch --- -Reduce recursion in complex input types +Reduce recursion in complex input types to prevent excessive depth errors