/** * @since 1.0.0 */ import type { ConstructorOptions } from "@aws-lambda-powertools/logger/types"; import * as Effect from "effect/Effect"; import * as FiberRef from "effect/FiberRef"; import { dual } from "effect/Function"; import { globalValue } from "effect/GlobalValue"; import * as Layer from "effect/Layer"; /** * @since 1.0.0 * @category logger options */ const currentLoggerOptions = globalValue( "@effect-aws/powertools-logger/currentLoggerOptions", () => FiberRef.unsafeMake({}), ); /** * @since 1.0.0 * @category logger options */ export const withLoggerOptions: { (options: ConstructorOptions): (effect: Effect.Effect) => Effect.Effect; (effect: Effect.Effect, options: ConstructorOptions): Effect.Effect; } = dual( 2, (effect: Effect.Effect, options: ConstructorOptions): Effect.Effect => Effect.locally(effect, currentLoggerOptions, options), ); /** * @since 1.0.0 * @category logger options */ export const setLoggerOptions = (options: ConstructorOptions) => Layer.locallyScoped(currentLoggerOptions, options); /** * @since 1.0.0 * @category logger options */ export const getLoggerOptions: Effect.Effect = FiberRef.get(currentLoggerOptions);