| import { NodeFileSystem } from "@effect/platform-node" |
| import { compile, emitEffectImported, emitPromise, write } from "@opencode-ai/httpapi-codegen" |
| import { ClientApi, endpointNames, groupNames, omitEndpoints } from "../src/contract" |
| import { Effect } from "effect" |
| import { fileURLToPath } from "url" |
|
|
| const contract = compile(ClientApi, { groupNames, endpointNames, omitEndpoints }) |
|
|
| await Effect.runPromise( |
| Effect.all( |
| [ |
| write( |
| emitPromise(contract, { |
| outputTypes: { |
| "events.subscribe": { |
| name: "OpenCodeEventEncoded", |
| import: 'import type { OpenCodeEventEncoded } from "@opencode-ai/protocol/groups/event"', |
| }, |
| }, |
| }), |
| fileURLToPath(new URL("../src/generated", import.meta.url)), |
| ), |
| write( |
| emitEffectImported(contract, { module: "../contract", api: "ClientApi" }), |
| fileURLToPath(new URL("../src/generated-effect", import.meta.url)), |
| ), |
| ], |
| { concurrency: 2, discard: true }, |
| ).pipe(Effect.provide(NodeFileSystem.layer)), |
| ) |
|
|