@@ -2,22 +2,27 @@ import * as Effect from "effect/Effect";
22
33import {
44 Binding ,
5- Policy ,
5+ declare ,
66 type Capability ,
7- type Declared ,
7+ type To ,
88} from "@alchemy.run/effect" ;
99import { Function } from "../lambda/index.ts" ;
1010import { QueueClient } from "./queue.client.ts" ;
1111import { Queue } from "./queue.ts" ;
1212
13- export interface SendMessage < Q > extends Capability < "AWS.SQS.SendMessage" , Q > { }
13+ export interface SendMessage < Q = Queue >
14+ extends Capability < "AWS.SQS.SendMessage" , Q > { }
15+
16+ export const SendMessage = Binding <
17+ < Q extends Queue > ( queue : Q ) => Binding < Function , SendMessage < To < Q > > >
18+ > ( Function , Queue , "AWS.SQS.SendMessage" ) ;
1419
1520export const sendMessage = < Q extends Queue > (
16- queue : Declared < Q > ,
21+ queue : Q ,
1722 message : Q [ "props" ] [ "schema" ] [ "Type" ] ,
1823) =>
1924 Effect . gen ( function * ( ) {
20- yield * Policy . declare < SendMessage < Q > > ( ) ;
25+ yield * declare < SendMessage < To < Q > > > ( ) ;
2126 const sqs = yield * QueueClient ;
2227 const url =
2328 process . env [ `${ queue . id . toUpperCase ( ) . replace ( / - / g, "_" ) } _QUEUE_URL` ] ! ;
@@ -27,17 +32,6 @@ export const sendMessage = <Q extends Queue>(
2732 } ) ;
2833 } ) ;
2934
30- // provide a custom tag to uniquely identify your binding implementation of Function<SendMessage<Q>>
31- export const SendMessage2 = Binding <
32- < Q extends Queue > (
33- queue : Declared < Q > ,
34- ) => Binding < Function , SendMessage < Q > , "Hyperdrive" >
35- > ( Function , Queue , "Hyperdrive" ) ;
36-
37- export const SendMessage = Binding <
38- < Q extends Queue > ( queue : Declared < Q > ) => Binding < Function , SendMessage < Q > >
39- > ( Function , Queue , "AWS.SQS.SendMessage" ) ;
40-
4135export const sendMessageFromLambdaFunction = ( ) =>
4236 SendMessage . layer . succeed ( {
4337 // oxlint-disable-next-line require-yield
0 commit comments