import { Effect, Layer } from "effect"
export class TwilioService extends Effect.Service<TwilioService>()(
"TwilioService",
{
accessors: true,
effect: Effect.gen(function*() {
const createClient = (accountSid: string, authToken: string) => {
return { accountSid, authToken }
}
return {
createClient
}
})
}
) {}
const MockTwilioService = new TwilioService({
createClient: () => ({ accountSid: "test", authToken: "test" })
})
const app = Effect.gen(function*() {
const client = yield* TwilioService.createClient(
"AC1234567890",
"1234567890"
)
console.log(client)
}).pipe(Effect.provide(TwilioService.Default))
Effect.runSync(app)
import { Effect, Layer } from "effect"
export class TwilioService extends Effect.Service<TwilioService>()(
"TwilioService",
{
accessors: true,
effect: Effect.gen(function*() {
const createClient = (accountSid: string, authToken: string) => {
return { accountSid, authToken }
}
return {
createClient
}
})
}
) {}
const MockTwilioService = new TwilioService({
createClient: () => ({ accountSid: "test", authToken: "test" })
})
const app = Effect.gen(function*() {
const client = yield* TwilioService.createClient(
"AC1234567890",
"1234567890"
)
console.log(client)
}).pipe(Effect.provide(TwilioService.Default))
Effect.runSync(app)