44import { type Accessor , createResource , sharedConfig , type Setter , untrack } from "solid-js" ;
55import { createStore , reconcile , type ReconcileOptions , unwrap } from "solid-js/store" ;
66import { isServer } from "solid-js/web" ;
7+ import { setFunctionName } from "../utils" ;
78
89/**
910 * As `createAsync` and `createAsyncStore` are wrappers for `createResource`,
@@ -13,7 +14,7 @@ import { isServer } from "solid-js/web";
1314export type AccessorWithLatest < T > = {
1415 ( ) : T ;
1516 latest : T ;
16- }
17+ } ;
1718
1819export function createAsync < T > (
1920 fn : ( prev : T ) => Promise < T > ,
@@ -40,19 +41,21 @@ export function createAsync<T>(
4041 }
4142) : AccessorWithLatest < T | undefined > {
4243 let resource : ( ) => T ;
43- let prev = ( ) => ! resource || ( resource as any ) . state === "unresolved" ? undefined : ( resource as any ) . latest ;
44+ let prev = ( ) =>
45+ ! resource || ( resource as any ) . state === "unresolved" ? undefined : ( resource as any ) . latest ;
4446 [ resource ] = createResource (
4547 ( ) => subFetch ( fn , untrack ( prev ) ) ,
4648 v => v ,
4749 options as any
4850 ) ;
4951
5052 const resultAccessor : AccessorWithLatest < T > = ( ( ) => resource ( ) ) as any ;
51- Object . defineProperty ( resultAccessor , 'latest' , {
53+ if ( options ?. name ) setFunctionName ( resultAccessor , options . name ) ;
54+ Object . defineProperty ( resultAccessor , "latest" , {
5255 get ( ) {
5356 return ( resource as any ) . latest ;
5457 }
55- } )
58+ } ) ;
5659
5760 return resultAccessor ;
5861}
@@ -85,7 +88,10 @@ export function createAsyncStore<T>(
8588 } = { }
8689) : AccessorWithLatest < T | undefined > {
8790 let resource : ( ) => T ;
88- let prev = ( ) => ! resource || ( resource as any ) . state === "unresolved" ? undefined : unwrap ( ( resource as any ) . latest ) ;
91+ let prev = ( ) =>
92+ ! resource || ( resource as any ) . state === "unresolved"
93+ ? undefined
94+ : unwrap ( ( resource as any ) . latest ) ;
8995 [ resource ] = createResource (
9096 ( ) => subFetch ( fn , untrack ( prev ) ) ,
9197 v => v ,
@@ -96,11 +102,11 @@ export function createAsyncStore<T>(
96102 ) ;
97103
98104 const resultAccessor : AccessorWithLatest < T > = ( ( ) => resource ( ) ) as any ;
99- Object . defineProperty ( resultAccessor , ' latest' , {
105+ Object . defineProperty ( resultAccessor , " latest" , {
100106 get ( ) {
101107 return ( resource as any ) . latest ;
102108 }
103- } )
109+ } ) ;
104110
105111 return resultAccessor ;
106112}
0 commit comments