Effect CommunityEC
Effect Communityβ€’3y agoβ€’
93 replies
arekmaz

Comparing Context Consumption Practices for Performance

what would be a better practice when consuming Context? are they equivalent when it comes to performance? I prefer the first one, but in the tutorials I can see mainly the second one

example 1:
type RemixLoaderArgs = { request: Request, context: unknown, params: Record<string, string> }

const LoaderArgs = Context.Tag<RemixLoaderArgs>()

export const request = Effect.map(LoaderArgs, ({ request }) => request)

const getCookies = request.pipe(Effect.map(({ headers }) => headers.get('cookie'))

export const loader = loaderArgs => Effect.provideService(getCookies, LoaderArgs, LoaderArgs.of(loaderArgs))

example 2:
type RemixLoaderService = { getCookies: () => Effect.Effect<never, never, string | null> }

const LoaderArgs = Context.Tag<RemixLoaderArgs>()

export const loader = ({ request }) =>
Effect.provideService(
  Effect.flatMap(LoaderArgs, ({ getCookies }) => getCookies()),
  LoaderArgs,
  LoaderArgs.of({
    getCookies: () => Effect.succeed(request.headers.get('cookie'))
  })
)
Was this page helpful?