@@ -9,7 +9,15 @@ export const mockAdapter: Adapter = {
99 getIdentOption : ( ) => 'debug' ,
1010} ;
1111
12- let adapter : Adapter = mockAdapter ;
12+ const adapterStack : Array < Adapter > = [ mockAdapter ] ;
13+
14+ const currentAdapter = ( ) => {
15+ if ( adapterStack . length < 1 ) {
16+ throw new Error ( 'No adapter configured' ) ;
17+ }
18+
19+ return adapterStack [ adapterStack . length - 1 ] ;
20+ } ;
1321
1422let hasConfiguredAdapter = false ;
1523
@@ -21,34 +29,41 @@ export const setAdapterIfNotSet = (newAdapter: Adapter) => {
2129
2230export const setAdapter = ( newAdapter : Adapter ) => {
2331 hasConfiguredAdapter = true ;
24- adapter = newAdapter ;
32+
33+ adapterStack . push ( newAdapter ) ;
34+ } ;
35+
36+ export const removeAdapter = ( ) => {
37+ adapterStack . pop ( ) ;
2538} ;
2639
2740export const appendCss : Adapter [ 'appendCss' ] = ( ...props ) => {
28- return adapter . appendCss ( ...props ) ;
41+ return currentAdapter ( ) . appendCss ( ...props ) ;
2942} ;
3043
3144export const registerClassName : Adapter [ 'registerClassName' ] = ( ...props ) => {
32- return adapter . registerClassName ( ...props ) ;
45+ return currentAdapter ( ) . registerClassName ( ...props ) ;
3346} ;
3447
3548export const registerComposition : Adapter [ 'registerComposition' ] = (
3649 ...props
3750) => {
38- return adapter . registerComposition ( ...props ) ;
51+ return currentAdapter ( ) . registerComposition ( ...props ) ;
3952} ;
4053
4154export const markCompositionUsed : Adapter [ 'markCompositionUsed' ] = (
4255 ...props
4356) => {
44- return adapter . markCompositionUsed ( ...props ) ;
57+ return currentAdapter ( ) . markCompositionUsed ( ...props ) ;
4558} ;
4659
4760export const onEndFileScope : Adapter [ 'onEndFileScope' ] = ( ...props ) => {
48- return adapter . onEndFileScope ( ...props ) ;
61+ return currentAdapter ( ) . onEndFileScope ( ...props ) ;
4962} ;
5063
5164export const getIdentOption : Adapter [ 'getIdentOption' ] = ( ...props ) => {
65+ const adapter = currentAdapter ( ) ;
66+
5267 // Backwards compatibility with old versions of the integration package
5368 if ( ! ( 'getIdentOption' in adapter ) ) {
5469 return process . env . NODE_ENV === 'production' ? 'short' : 'debug' ;
0 commit comments