client.ts 932 B

1234567891011121314151617181920212223242526272829303132
  1. export * from "./gen/types.gen.js"
  2. import { createClient } from "./gen/client/client.gen.js"
  3. import { type Config } from "./gen/client/types.gen.js"
  4. import { OpencodeClient } from "./gen/sdk.gen.js"
  5. export { type Config as OpencodeClientConfig, OpencodeClient }
  6. export function createOpencodeClient(config?: Config & { directory?: string }) {
  7. if (!config?.fetch) {
  8. const customFetch: any = (req: any) => {
  9. // @ts-ignore
  10. req.timeout = false
  11. return fetch(req)
  12. }
  13. config = {
  14. ...config,
  15. fetch: customFetch,
  16. }
  17. }
  18. if (config?.directory) {
  19. const isNonASCII = /[^\x00-\x7F]/.test(config.directory)
  20. const encodedDirectory = isNonASCII ? encodeURIComponent(config.directory) : config.directory
  21. config.headers = {
  22. ...config.headers,
  23. "x-opencode-directory": encodedDirectory,
  24. }
  25. }
  26. const client = createClient(config)
  27. return new OpencodeClient({ client })
  28. }