From 703c9b203ad83d2cb5cb2013e1fd209b2919d847 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Fri, 15 Mar 2024 15:17:51 -0400 Subject: [PATCH 1/2] fix: add types for svelte/reactivity - closes #10816 --- .changeset/serious-needles-joke.md | 5 +++ packages/svelte/scripts/generate-types.js | 1 + packages/svelte/types/index.d.ts | 43 +++++++++++++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 .changeset/serious-needles-joke.md diff --git a/.changeset/serious-needles-joke.md b/.changeset/serious-needles-joke.md new file mode 100644 index 000000000000..1091bcf32971 --- /dev/null +++ b/.changeset/serious-needles-joke.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: add types for svelte/reactivity diff --git a/packages/svelte/scripts/generate-types.js b/packages/svelte/scripts/generate-types.js index 5c0b042cf6b0..703180a143ea 100644 --- a/packages/svelte/scripts/generate-types.js +++ b/packages/svelte/scripts/generate-types.js @@ -29,6 +29,7 @@ await createBundle({ [`${pkg.name}/easing`]: `${dir}/src/easing/index.js`, [`${pkg.name}/legacy`]: `${dir}/src/legacy/legacy-client.js`, [`${pkg.name}/motion`]: `${dir}/src/motion/public.d.ts`, + [`${pkg.name}/reactivity`]: `${dir}/src/reactivity/index.js`, [`${pkg.name}/server`]: `${dir}/src/server/index.js`, [`${pkg.name}/store`]: `${dir}/src/store/public.d.ts`, [`${pkg.name}/transition`]: `${dir}/src/transition/public.d.ts`, diff --git a/packages/svelte/types/index.d.ts b/packages/svelte/types/index.d.ts index f3325cfad0db..08af3e70bade 100644 --- a/packages/svelte/types/index.d.ts +++ b/packages/svelte/types/index.d.ts @@ -1806,6 +1806,49 @@ declare module 'svelte/motion' { export function tweened(value?: T | undefined, defaults?: TweenedOptions | undefined): Tweened; } +declare module 'svelte/reactivity' { + export class Date extends Date { + static "__#5@#inited": boolean; + + constructor(...values: any[]); + #private; + } + export class Set extends Set { + + constructor(value?: Iterable | null | undefined); + + has(value: T): boolean; + + add(value: T): this; + + delete(value: T): boolean; + keys(): IterableIterator; + values(): IterableIterator; + entries(): IterableIterator<[T, T]>; + [Symbol.iterator](): IterableIterator; + #private; + } + export class Map extends Map { + + constructor(value?: Iterable | null | undefined); + + has(key: K): boolean; + + forEach(callbackfn: (value: V, key: K, map: Map) => void, this_arg?: any): void; + + get(key: K): V | undefined; + + set(key: K, value: V): this; + + delete(key: K): boolean; + keys(): IterableIterator; + values(): IterableIterator; + entries(): IterableIterator<[K, V]>; + [Symbol.iterator](): IterableIterator<[K, V]>; + #private; + } +} + declare module 'svelte/server' { export function render(component: (...args: any[]) => void, options: { props: Record; From a629664b9917ad480ca3fa49db7f446ef7a244f8 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Fri, 15 Mar 2024 15:19:35 -0400 Subject: [PATCH 2/2] simplify --- packages/svelte/src/reactivity/date.js | 7 ++++--- packages/svelte/types/index.d.ts | 1 - 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/svelte/src/reactivity/date.js b/packages/svelte/src/reactivity/date.js index 8f55cf0ef8c7..cf43dfe4ab43 100644 --- a/packages/svelte/src/reactivity/date.js +++ b/packages/svelte/src/reactivity/date.js @@ -55,14 +55,15 @@ const write = [ 'setYear' ]; +var inited = false; + export class ReactiveDate extends Date { #raw_time = source(super.getTime()); - static #inited = false; // We init as part of the first instance so that we can treeshake this class #init() { - if (!ReactiveDate.#inited) { - ReactiveDate.#inited = true; + if (!inited) { + inited = true; const proto = ReactiveDate.prototype; const date_proto = Date.prototype; diff --git a/packages/svelte/types/index.d.ts b/packages/svelte/types/index.d.ts index 08af3e70bade..c2b1c1ad5baf 100644 --- a/packages/svelte/types/index.d.ts +++ b/packages/svelte/types/index.d.ts @@ -1808,7 +1808,6 @@ declare module 'svelte/motion' { declare module 'svelte/reactivity' { export class Date extends Date { - static "__#5@#inited": boolean; constructor(...values: any[]); #private;