@@ -13,72 +13,70 @@ export interface InstanceState<A, E = never, R = never> {
1313 readonly cache : ScopedCache . ScopedCache < string , A , E , R >
1414}
1515
16- export namespace InstanceState {
17- export const bind = < F extends ( ...args : any [ ] ) => any > ( fn : F ) : F => {
18- try {
19- return Instance . bind ( fn )
20- } catch ( err ) {
21- if ( ! ( err instanceof LocalContext . NotFound ) ) throw err
22- }
23- const fiber = Fiber . getCurrent ( )
24- const ctx = fiber ? Context . getReferenceUnsafe ( fiber . context , InstanceRef ) : undefined
25- if ( ! ctx ) return fn
26- return ( ( ...args : any [ ] ) => Instance . restore ( ctx , ( ) => fn ( ...args ) ) ) as F
16+ export const bind = < F extends ( ...args : any [ ] ) => any > ( fn : F ) : F => {
17+ try {
18+ return Instance . bind ( fn )
19+ } catch ( err ) {
20+ if ( ! ( err instanceof LocalContext . NotFound ) ) throw err
2721 }
22+ const fiber = Fiber . getCurrent ( )
23+ const ctx = fiber ? Context . getReferenceUnsafe ( fiber . context , InstanceRef ) : undefined
24+ if ( ! ctx ) return fn
25+ return ( ( ...args : any [ ] ) => Instance . restore ( ctx , ( ) => fn ( ...args ) ) ) as F
26+ }
2827
29- export const context = Effect . gen ( function * ( ) {
30- return ( yield * InstanceRef ) ?? Instance . current
31- } )
28+ export const context = Effect . gen ( function * ( ) {
29+ return ( yield * InstanceRef ) ?? Instance . current
30+ } )
3231
33- export const workspaceID = Effect . gen ( function * ( ) {
34- return ( yield * WorkspaceRef ) ?? WorkspaceContext . workspaceID
35- } )
32+ export const workspaceID = Effect . gen ( function * ( ) {
33+ return ( yield * WorkspaceRef ) ?? WorkspaceContext . workspaceID
34+ } )
3635
37- export const directory = Effect . map ( context , ( ctx ) => ctx . directory )
36+ export const directory = Effect . map ( context , ( ctx ) => ctx . directory )
3837
39- export const make = < A , E = never , R = never > (
40- init : ( ctx : InstanceContext ) => Effect . Effect < A , E , R | Scope . Scope > ,
41- ) : Effect . Effect < InstanceState < A , E , Exclude < R , Scope . Scope > > , never , R | Scope . Scope > =>
42- Effect . gen ( function * ( ) {
43- const cache = yield * ScopedCache . make < string , A , E , R > ( {
44- capacity : Number . POSITIVE_INFINITY ,
45- lookup : ( ) =>
46- Effect . gen ( function * ( ) {
47- return yield * init ( yield * context )
48- } ) ,
49- } )
38+ export const make = < A , E = never , R = never > (
39+ init : ( ctx : InstanceContext ) => Effect . Effect < A , E , R | Scope . Scope > ,
40+ ) : Effect . Effect < InstanceState < A , E , Exclude < R , Scope . Scope > > , never , R | Scope . Scope > =>
41+ Effect . gen ( function * ( ) {
42+ const cache = yield * ScopedCache . make < string , A , E , R > ( {
43+ capacity : Number . POSITIVE_INFINITY ,
44+ lookup : ( ) =>
45+ Effect . gen ( function * ( ) {
46+ return yield * init ( yield * context )
47+ } ) ,
48+ } )
5049
51- const off = registerDisposer ( ( directory ) =>
52- Effect . runPromise ( ScopedCache . invalidate ( cache , directory ) . pipe ( Effect . provide ( EffectLogger . layer ) ) ) ,
53- )
54- yield * Effect . addFinalizer ( ( ) => Effect . sync ( off ) )
50+ const off = registerDisposer ( ( directory ) =>
51+ Effect . runPromise ( ScopedCache . invalidate ( cache , directory ) . pipe ( Effect . provide ( EffectLogger . layer ) ) ) ,
52+ )
53+ yield * Effect . addFinalizer ( ( ) => Effect . sync ( off ) )
5554
56- return {
57- [ TypeId ] : TypeId ,
58- cache,
59- }
60- } )
55+ return {
56+ [ TypeId ] : TypeId ,
57+ cache,
58+ }
59+ } )
6160
62- export const get = < A , E , R > ( self : InstanceState < A , E , R > ) =>
63- Effect . gen ( function * ( ) {
64- return yield * ScopedCache . get ( self . cache , yield * directory )
65- } )
61+ export const get = < A , E , R > ( self : InstanceState < A , E , R > ) =>
62+ Effect . gen ( function * ( ) {
63+ return yield * ScopedCache . get ( self . cache , yield * directory )
64+ } )
6665
67- export const use = < A , E , R , B > ( self : InstanceState < A , E , R > , select : ( value : A ) => B ) =>
68- Effect . map ( get ( self ) , select )
66+ export const use = < A , E , R , B > ( self : InstanceState < A , E , R > , select : ( value : A ) => B ) =>
67+ Effect . map ( get ( self ) , select )
6968
70- export const useEffect = < A , E , R , B , E2 , R2 > (
71- self : InstanceState < A , E , R > ,
72- select : ( value : A ) => Effect . Effect < B , E2 , R2 > ,
73- ) => Effect . flatMap ( get ( self ) , select )
69+ export const useEffect = < A , E , R , B , E2 , R2 > (
70+ self : InstanceState < A , E , R > ,
71+ select : ( value : A ) => Effect . Effect < B , E2 , R2 > ,
72+ ) => Effect . flatMap ( get ( self ) , select )
7473
75- export const has = < A , E , R > ( self : InstanceState < A , E , R > ) =>
76- Effect . gen ( function * ( ) {
77- return yield * ScopedCache . has ( self . cache , yield * directory )
78- } )
74+ export const has = < A , E , R > ( self : InstanceState < A , E , R > ) =>
75+ Effect . gen ( function * ( ) {
76+ return yield * ScopedCache . has ( self . cache , yield * directory )
77+ } )
7978
80- export const invalidate = < A , E , R > ( self : InstanceState < A , E , R > ) =>
81- Effect . gen ( function * ( ) {
82- return yield * ScopedCache . invalidate ( self . cache , yield * directory )
83- } )
84- }
79+ export const invalidate = < A , E , R > ( self : InstanceState < A , E , R > ) =>
80+ Effect . gen ( function * ( ) {
81+ return yield * ScopedCache . invalidate ( self . cache , yield * directory )
82+ } )
0 commit comments