From 3ff0d1f14b308ffd40921f6be5eeeb33ebf9264a Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Tue, 23 Jan 2024 23:17:15 +0000 Subject: [PATCH] fix bug --- .changeset/swift-fans-stare.md | 5 +++++ .../svelte/src/compiler/phases/2-analyze/index.js | 1 + packages/svelte/src/main/public.d.ts | 13 +++++++++---- packages/svelte/src/store/private.d.ts | 5 +++-- 4 files changed, 18 insertions(+), 6 deletions(-) create mode 100644 .changeset/swift-fans-stare.md diff --git a/.changeset/swift-fans-stare.md b/.changeset/swift-fans-stare.md new file mode 100644 index 0000000000..3477372663 --- /dev/null +++ b/.changeset/swift-fans-stare.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +chore: improve $state static reference warning heuristics diff --git a/packages/svelte/src/compiler/phases/2-analyze/index.js b/packages/svelte/src/compiler/phases/2-analyze/index.js index cff2ec03a8..471b432b05 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/index.js +++ b/packages/svelte/src/compiler/phases/2-analyze/index.js @@ -924,6 +924,7 @@ const common_visitors = { ((binding.kind === 'state' && (binding.reassigned || (binding.initial?.type === 'CallExpression' && + binding.initial.arguments.length === 1 && binding.initial.arguments[0].type !== 'SpreadElement' && !should_proxy_or_freeze(binding.initial.arguments[0], context.state.scope)))) || binding.kind === 'frozen_state' || diff --git a/packages/svelte/src/main/public.d.ts b/packages/svelte/src/main/public.d.ts index dce74ffcfc..1667770b62 100644 --- a/packages/svelte/src/main/public.d.ts +++ b/packages/svelte/src/main/public.d.ts @@ -136,8 +136,12 @@ export class SvelteComponentTyped< * * ``` */ -export type ComponentEvents = - Comp extends SvelteComponent ? Events : never; +export type ComponentEvents = Comp extends SvelteComponent< + any, + infer Events +> + ? Events + : never; /** * Convenience type to get the props the given component expects. Example: @@ -150,8 +154,9 @@ export type ComponentEvents = * * ``` */ -export type ComponentProps = - Comp extends SvelteComponent ? Props : never; +export type ComponentProps = Comp extends SvelteComponent + ? Props + : never; /** * Convenience type to get the type of a Svelte component. Useful for example in combination with diff --git a/packages/svelte/src/store/private.d.ts b/packages/svelte/src/store/private.d.ts index f59b584318..3fe08f8328 100644 --- a/packages/svelte/src/store/private.d.ts +++ b/packages/svelte/src/store/private.d.ts @@ -13,5 +13,6 @@ export type Stores = | Array>; /** One or more values from `Readable` stores. */ -export type StoresValues = - T extends Readable ? U : { [K in keyof T]: T[K] extends Readable ? U : never }; +export type StoresValues = T extends Readable + ? U + : { [K in keyof T]: T[K] extends Readable ? U : never };