import { NodeRuntime } from '@effect/platform-node'
import { Context, Effect, Layer } from 'effect'
export class Test extends Context.Tag('Sample')<
Test,
{}
>() {}
const MyLayer = Layer.scoped(
Test,
Effect.acquireRelease(
Effect.log('Aquiring ...').pipe(Effect.map(() => ({}))),
() => Effect.log('Releasing ...'),
),
)
const WithMyLayer = Layer.tap(
MyLayer,
() => Effect.addFinalizer(() => Effect.log('Finalizer running')),
)
const program = Test.pipe(
Effect.andThen(() => Effect.log('program executed')),
Effect.provide(WithMyLayer),
Effect.scoped,
)
NodeRuntime.runMain(program)
import { NodeRuntime } from '@effect/platform-node'
import { Context, Effect, Layer } from 'effect'
export class Test extends Context.Tag('Sample')<
Test,
{}
>() {}
const MyLayer = Layer.scoped(
Test,
Effect.acquireRelease(
Effect.log('Aquiring ...').pipe(Effect.map(() => ({}))),
() => Effect.log('Releasing ...'),
),
)
const WithMyLayer = Layer.tap(
MyLayer,
() => Effect.addFinalizer(() => Effect.log('Finalizer running')),
)
const program = Test.pipe(
Effect.andThen(() => Effect.log('program executed')),
Effect.provide(WithMyLayer),
Effect.scoped,
)
NodeRuntime.runMain(program)