t3-code-android-nightly/.repos/alchemy-effect/examples/gcp-pubsub-fanout/alchemy.run.ts
Julius Marminge 6f9cea00ae
chore(refs): sync Effect and Alchemy references to 4.0.1 and beta.80 (#16170)
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-05 13:22:30 -07:00

40 lines
1.1 KiB
TypeScript

import * as Alchemy from "alchemy";
import * as GCP from "alchemy/GCP";
import * as Effect from "effect/Effect";
import Analytics from "./src/Analytics.ts";
import Email from "./src/Email.ts";
import Orders from "./src/Orders.ts";
import {
DeadOrderEvents,
DeadOrderEventsInbox,
OrderEvents,
OrderEventsTable,
Outbox,
} from "./src/resources.ts";
export default Alchemy.Stack(
"GcpPubSubFanoutExample",
{ providers: GCP.providers(), state: Alchemy.localState() },
Effect.gen(function* () {
const topic = yield* OrderEvents;
const deadLetters = yield* DeadOrderEvents;
const inbox = yield* DeadOrderEventsInbox;
const outbox = yield* Outbox;
const table = yield* OrderEventsTable;
const orders = yield* Orders;
const email = yield* Email;
const analytics = yield* Analytics;
return {
url: orders.uri,
project: orders.project,
topicName: topic.name,
deadLetterTopicName: deadLetters.name,
deadLetterSubscription: inbox.name,
bucketName: outbox.bucketName,
tableName: table.name,
emailService: email.name,
analyticsService: analytics.name,
};
}),
);