MCPcopy Create free account
hub / github.com/Effect-TS/effect / layer

Function layer

packages/effect/src/Logger.ts:914–936  ·  view source on GitHub ↗
(
  loggers: Loggers,
  options?: { readonly mergeWithExisting?: boolean | undefined } | undefined
)

Source from the content-addressed store, hash-verified

912 * @since 4.0.0
913 */
914export const layer = <
915 const Loggers extends ReadonlyArray<Logger<unknown, unknown> | Effect.Effect<Logger<unknown, unknown>, any, any>>
916>(
917 loggers: Loggers,
918 options?: { readonly mergeWithExisting?: boolean | undefined } | undefined
919): Layer.Layer<
920 never,
921 Loggers extends readonly [] ? never : Effect.Error<Loggers[number]>,
922 Exclude<
923 Loggers extends readonly [] ? never : Effect.Services<Loggers[number]>,
924 Scope.Scope
925 >
926> =>
927 Layer.effect(
928 CurrentLoggers,
929 withFiber(effect.fnUntraced(function*(fiber) {
930 const currentLoggers = new Set(options?.mergeWithExisting === true ? fiber.getRef(effect.CurrentLoggers) : [])
931 for (const logger of loggers) {
932 currentLoggers.add(isEffect(logger) ? yield* logger : logger)
933 }
934 return currentLoggers
935 }))
936 )
937
938/**
939 * Creates a scoped logger that writes string logger output to a file.

Callers

nothing calls this directly

Calls 3

isEffectFunction · 0.90
getRefMethod · 0.80
addMethod · 0.65

Tested by

no test coverage detected