19 lines
		
	
	
		
			573 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			19 lines
		
	
	
		
			573 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import * as plugins from './logcontext.plugins.js';
 | 
						|
import { AsyncStore } from './logcontext.classes.asyncstore.js';
 | 
						|
 | 
						|
export class AsyncContext {
 | 
						|
  private _context = new plugins.simpleAsyncContext.AsyncContext.Variable<AsyncStore>();
 | 
						|
  private _store = new AsyncStore();
 | 
						|
  get store() {
 | 
						|
    return this._context.get() || this._store;
 | 
						|
  }
 | 
						|
  set store(value: AsyncStore) {
 | 
						|
    this._store = value;
 | 
						|
  }
 | 
						|
  public async runScoped(functionArg: () => Promise<void>) {
 | 
						|
    await this._context.run(new AsyncStore(this.store), async () => {
 | 
						|
      await functionArg()
 | 
						|
    });
 | 
						|
  } 
 | 
						|
}
 |