Skip to content

xzhayon/affex

Folders and files

NameName
Last commit message
Last commit date
Mar 27, 2024
Mar 27, 2024
Nov 22, 2024
Mar 27, 2024
Jun 6, 2024
Jun 5, 2024
Jun 5, 2024
Mar 27, 2024
Mar 27, 2024
Mar 27, 2024
Mar 27, 2024
Jun 5, 2024
Mar 27, 2024
May 23, 2024
Mar 27, 2024
Mar 4, 2025
Jun 5, 2024
May 2, 2024

Repository files navigation

affex

GitHub GitHub Workflow Status Codecov npm

Installation

The package is available via npm:

npm install affex

Usage

import { fx } from 'affex'

// Define service interface.
interface Log {
  readonly [fx.uri]?: unique symbol
  (message: string): void
}

// Create service tag.
const tag = fx.tag<Log>()

// Derive effect constructor.
const log = fx.operation(tag)

// Perform effect in generator function.
function* main() {
  yield* log('hello, world')
}

// Create layer with effect handler.
function ConsoleLog() {
  return fx.layer(tag, (message) => console.log(message))
}

// Run program with provided context.
fx.runPromise(main, fx.context().with(ConsoleLog()))

License

MIT