11/** @import { Derived, Effect, Source } from '#client' */
22
3- import { UNINITIALIZED } from '../../../constants' ;
4- import { EFFECT_PRESERVED , IS_PENDING } from '../constants' ;
5- import { active_effect , captured_signals , get , handle_error } from '../runtime' ;
6- import { derived } from './deriveds' ;
7- import { block } from './effects' ;
8- import { internal_set , source } from './sources' ;
3+ import { UNINITIALIZED } from '../../../constants.js ' ;
4+ import { EFFECT_PRESERVED } from '../constants.js ' ;
5+ import { active_effect , get , handle_error } from '../runtime.js ' ;
6+ import { derived } from './deriveds.js ' ;
7+ import { block } from './effects.js ' ;
8+ import { internal_set , source } from './sources.js ' ;
99
1010/**
1111 * @template T
@@ -29,33 +29,29 @@ export class Resource {
2929 /** @type {{} } */
3030 var current_token ;
3131
32- this . #current. f ^= IS_PENDING ;
3332 this . #fn = derived ( ( ) => Promise . resolve ( fn ( ) ) ) ;
3433
3534 block ( ( ) => {
36- var current = this . #current;
37- if ( ( current . f & IS_PENDING ) === 0 ) {
38- current . f ^= IS_PENDING ;
39- }
4035 var token = ( current_token = { } ) ;
4136 internal_set ( this . #pending, true ) ;
4237
43- get ( this . #fn) . then (
44- ( value ) => {
45- if ( current_token !== token ) return ;
46- internal_set ( this . #current, value ) ;
47- internal_set ( this . #pending, false ) ;
48- this . #current. f ^= IS_PENDING ;
49- return value ;
50- } ,
51- ( error ) => {
52- if ( current_token !== token ) return ;
53- internal_set ( this . #pending, false ) ;
54- throw error ;
55- }
56- ) . catch ( ( e ) => {
57- handle_error ( e , parent , null , parent . ctx ) ;
58- } ) ;
38+ get ( this . #fn)
39+ . then (
40+ ( value ) => {
41+ if ( current_token !== token ) return ;
42+ internal_set ( this . #current, value ) ;
43+ internal_set ( this . #pending, false ) ;
44+ return value ;
45+ } ,
46+ ( error ) => {
47+ if ( current_token !== token ) return ;
48+ internal_set ( this . #pending, false ) ;
49+ throw error ;
50+ }
51+ )
52+ . catch ( ( e ) => {
53+ handle_error ( e , parent , null , parent . ctx ) ;
54+ } ) ;
5955 } , EFFECT_PRESERVED ) ;
6056 }
6157
@@ -66,10 +62,6 @@ export class Resource {
6662 get current ( ) {
6763 var value = get ( this . #current) ;
6864
69- if ( captured_signals !== null ) {
70- get ( this . #fn) ;
71- }
72-
7365 if ( value === UNINITIALIZED ) {
7466 return this . #fn. v ;
7567 }
@@ -78,12 +70,10 @@ export class Resource {
7870 }
7971
8072 get latest ( ) {
81- var current = this . #current;
82- var value = get ( current ) ;
8373 var promise = get ( this . #fn) ;
8474
85- if ( ( current . f & IS_PENDING ) === 0 ) {
86- return value ;
75+ if ( ! this . #pending . v ) {
76+ return this . #current . v ;
8777 }
8878
8979 return promise ;
0 commit comments