From fbeead51e27a2da9465200eefd121ee139d31043 Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Thu, 6 Feb 2025 09:00:44 +0000 Subject: [PATCH] wip --- .../svelte/src/internal/client/reactivity/resources.js | 9 +++++++-- packages/svelte/types/index.d.ts | 8 +++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/packages/svelte/src/internal/client/reactivity/resources.js b/packages/svelte/src/internal/client/reactivity/resources.js index 4f9cc5da52..34204979bf 100644 --- a/packages/svelte/src/internal/client/reactivity/resources.js +++ b/packages/svelte/src/internal/client/reactivity/resources.js @@ -85,12 +85,17 @@ export class Resource { } /** - * @param {(arg0: boolean) => void} onfulfilled + * @param {(arg0: { readonly current: T; }) => void} onfulfilled * @param {((reason: any) => PromiseLike) | null | undefined} onrejected */ then(onfulfilled, onrejected) { return this.#fn.v.then(() => { - onfulfilled(true); + var self = this; + onfulfilled({ + get current() { + return self.current; + } + }); }, onrejected); } diff --git a/packages/svelte/types/index.d.ts b/packages/svelte/types/index.d.ts index c4230a5110..8d1894ac4d 100644 --- a/packages/svelte/types/index.d.ts +++ b/packages/svelte/types/index.d.ts @@ -514,17 +514,19 @@ declare module 'svelte' { export function untrack(fn: () => T): T; export function createResourceContext(): [set_resource: (resource: Resource) => void, get_resource: () => Resource]; - export function deferPending(resources: Resource | Resource[], fn: () => V): V; - export class Resource { + static deferred(resources: Resource | Resource[], fn: () => V): { + readonly current: any; + }; + constructor(fn: () => Promise); get pending(): boolean; + get latest(): Promise; get current(): T; then(onfulfilled: (arg0: { readonly current: T; - readonly latest: T; }) => void, onrejected: ((reason: any) => PromiseLike) | null | undefined): Promise; #private; }