/ shared / logger / src / index.ts
index.ts
 1  import { getContext } from 'svelte';
 2  import type { Logger, LoggerFactory } from './types';
 3  
 4  export * from './composite';
 5  export * from './console';
 6  export * from './deferred';
 7  export * from './recording';
 8  export * from './sampled';
 9  export * from './types';
10  export * from './void';
11  
12  const CONTEXT_NAME = 'loggerFactory';
13  
14  export function setContext(
15      context: Map<string, unknown>,
16      factory: LoggerFactory,
17  ): void {
18      context.set(CONTEXT_NAME, factory);
19  }
20  
21  export function loggerFor(subject: string): Logger {
22      const factory = getContext(CONTEXT_NAME) as LoggerFactory | undefined;
23  
24      if (!factory) {
25          throw new Error(
26              'loggerFor called before setContext or outside of svelte component init',
27          );
28      }
29  
30      return factory.loggerFor(subject);
31  }