Skip to content

Commit 7de08ea

Browse files
author
github-actions
committed
chore: prepare sdk gitpkg 9ea99f597
1 parent ac301ed commit 7de08ea

71 files changed

Lines changed: 15369 additions & 7 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

dist/client.d.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export * from "./gen/types.gen.js";
2+
import { type Config } from "./gen/client/types.gen.js";
3+
import { OpencodeClient } from "./gen/sdk.gen.js";
4+
export { type Config as OpencodeClientConfig, OpencodeClient };
5+
export declare function createOpencodeClient(config?: Config & {
6+
directory?: string;
7+
}): OpencodeClient;

dist/client.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
export * from "./gen/types.gen.js";
2+
import { createClient } from "./gen/client/client.gen.js";
3+
import { OpencodeClient } from "./gen/sdk.gen.js";
4+
export { OpencodeClient };
5+
export function createOpencodeClient(config) {
6+
if (!config?.fetch) {
7+
const customFetch = (req) => {
8+
// @ts-ignore
9+
req.timeout = false;
10+
return fetch(req);
11+
};
12+
config = {
13+
...config,
14+
fetch: customFetch,
15+
};
16+
}
17+
if (config?.directory) {
18+
config.headers = {
19+
...config.headers,
20+
"x-opencode-directory": config.directory,
21+
};
22+
}
23+
const client = createClient(config);
24+
return new OpencodeClient({ client });
25+
}

dist/gen/client.gen.d.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import type { ClientOptions } from "./types.gen.js";
2+
import { type Config, type ClientOptions as DefaultClientOptions } from "./client/index.js";
3+
/**
4+
* The `createClientConfig()` function will be called on client initialization
5+
* and the returned object will become the client's initial configuration.
6+
*
7+
* You may want to initialize your client this way instead of calling
8+
* `setConfig()`. This is useful for example if you're using Next.js
9+
* to ensure your client always has the correct values.
10+
*/
11+
export type CreateClientConfig<T extends DefaultClientOptions = ClientOptions> = (override?: Config<DefaultClientOptions & T>) => Config<Required<DefaultClientOptions> & T>;
12+
export declare const client: import("./client/types.gen.js").Client;

dist/gen/client.gen.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
// This file is auto-generated by @hey-api/openapi-ts
2+
import { createClient, createConfig } from "./client/index.js";
3+
export const client = createClient(createConfig({
4+
baseUrl: "http://localhost:4096",
5+
}));

dist/gen/client/client.gen.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import type { Client, Config } from "./types.gen.js";
2+
export declare const createClient: (config?: Config) => Client;

dist/gen/client/client.gen.js

Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
// This file is auto-generated by @hey-api/openapi-ts
2+
import { createSseClient } from "../core/serverSentEvents.gen.js";
3+
import { buildUrl, createConfig, createInterceptors, getParseAs, mergeConfigs, mergeHeaders, setAuthParams, } from "./utils.gen.js";
4+
export const createClient = (config = {}) => {
5+
let _config = mergeConfigs(createConfig(), config);
6+
const getConfig = () => ({ ..._config });
7+
const setConfig = (config) => {
8+
_config = mergeConfigs(_config, config);
9+
return getConfig();
10+
};
11+
const interceptors = createInterceptors();
12+
const beforeRequest = async (options) => {
13+
const opts = {
14+
..._config,
15+
...options,
16+
fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,
17+
headers: mergeHeaders(_config.headers, options.headers),
18+
serializedBody: undefined,
19+
};
20+
if (opts.security) {
21+
await setAuthParams({
22+
...opts,
23+
security: opts.security,
24+
});
25+
}
26+
if (opts.requestValidator) {
27+
await opts.requestValidator(opts);
28+
}
29+
if (opts.body && opts.bodySerializer) {
30+
opts.serializedBody = opts.bodySerializer(opts.body);
31+
}
32+
// remove Content-Type header if body is empty to avoid sending invalid requests
33+
if (opts.serializedBody === undefined || opts.serializedBody === "") {
34+
opts.headers.delete("Content-Type");
35+
}
36+
const url = buildUrl(opts);
37+
return { opts, url };
38+
};
39+
const request = async (options) => {
40+
// @ts-expect-error
41+
const { opts, url } = await beforeRequest(options);
42+
const requestInit = {
43+
redirect: "follow",
44+
...opts,
45+
body: opts.serializedBody,
46+
};
47+
let request = new Request(url, requestInit);
48+
for (const fn of interceptors.request._fns) {
49+
if (fn) {
50+
request = await fn(request, opts);
51+
}
52+
}
53+
// fetch must be assigned here, otherwise it would throw the error:
54+
// TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation
55+
const _fetch = opts.fetch;
56+
let response = await _fetch(request);
57+
for (const fn of interceptors.response._fns) {
58+
if (fn) {
59+
response = await fn(response, request, opts);
60+
}
61+
}
62+
const result = {
63+
request,
64+
response,
65+
};
66+
if (response.ok) {
67+
if (response.status === 204 || response.headers.get("Content-Length") === "0") {
68+
return opts.responseStyle === "data"
69+
? {}
70+
: {
71+
data: {},
72+
...result,
73+
};
74+
}
75+
const parseAs = (opts.parseAs === "auto" ? getParseAs(response.headers.get("Content-Type")) : opts.parseAs) ?? "json";
76+
let data;
77+
switch (parseAs) {
78+
case "arrayBuffer":
79+
case "blob":
80+
case "formData":
81+
case "json":
82+
case "text":
83+
data = await response[parseAs]();
84+
break;
85+
case "stream":
86+
return opts.responseStyle === "data"
87+
? response.body
88+
: {
89+
data: response.body,
90+
...result,
91+
};
92+
}
93+
if (parseAs === "json") {
94+
if (opts.responseValidator) {
95+
await opts.responseValidator(data);
96+
}
97+
if (opts.responseTransformer) {
98+
data = await opts.responseTransformer(data);
99+
}
100+
}
101+
return opts.responseStyle === "data"
102+
? data
103+
: {
104+
data,
105+
...result,
106+
};
107+
}
108+
const textError = await response.text();
109+
let jsonError;
110+
try {
111+
jsonError = JSON.parse(textError);
112+
}
113+
catch {
114+
// noop
115+
}
116+
const error = jsonError ?? textError;
117+
let finalError = error;
118+
for (const fn of interceptors.error._fns) {
119+
if (fn) {
120+
finalError = (await fn(error, response, request, opts));
121+
}
122+
}
123+
finalError = finalError || {};
124+
if (opts.throwOnError) {
125+
throw finalError;
126+
}
127+
// TODO: we probably want to return error and improve types
128+
return opts.responseStyle === "data"
129+
? undefined
130+
: {
131+
error: finalError,
132+
...result,
133+
};
134+
};
135+
const makeMethod = (method) => {
136+
const fn = (options) => request({ ...options, method });
137+
fn.sse = async (options) => {
138+
const { opts, url } = await beforeRequest(options);
139+
return createSseClient({
140+
...opts,
141+
body: opts.body,
142+
headers: opts.headers,
143+
method,
144+
url,
145+
});
146+
};
147+
return fn;
148+
};
149+
return {
150+
buildUrl,
151+
connect: makeMethod("CONNECT"),
152+
delete: makeMethod("DELETE"),
153+
get: makeMethod("GET"),
154+
getConfig,
155+
head: makeMethod("HEAD"),
156+
interceptors,
157+
options: makeMethod("OPTIONS"),
158+
patch: makeMethod("PATCH"),
159+
post: makeMethod("POST"),
160+
put: makeMethod("PUT"),
161+
request,
162+
setConfig,
163+
trace: makeMethod("TRACE"),
164+
};
165+
};

dist/gen/client/index.d.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export type { Auth } from "../core/auth.gen.js";
2+
export type { QuerySerializerOptions } from "../core/bodySerializer.gen.js";
3+
export { formDataBodySerializer, jsonBodySerializer, urlSearchParamsBodySerializer, } from "../core/bodySerializer.gen.js";
4+
export { buildClientParams } from "../core/params.gen.js";
5+
export { createClient } from "./client.gen.js";
6+
export type { Client, ClientOptions, Config, CreateClientConfig, Options, OptionsLegacyParser, RequestOptions, RequestResult, ResolvedRequestOptions, ResponseStyle, TDataShape, } from "./types.gen.js";
7+
export { createConfig, mergeHeaders } from "./utils.gen.js";

dist/gen/client/index.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
// This file is auto-generated by @hey-api/openapi-ts
2+
export { formDataBodySerializer, jsonBodySerializer, urlSearchParamsBodySerializer, } from "../core/bodySerializer.gen.js";
3+
export { buildClientParams } from "../core/params.gen.js";
4+
export { createClient } from "./client.gen.js";
5+
export { createConfig, mergeHeaders } from "./utils.gen.js";

dist/gen/client/types.gen.d.ts

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
import type { Auth } from "../core/auth.gen.js";
2+
import type { ServerSentEventsOptions, ServerSentEventsResult } from "../core/serverSentEvents.gen.js";
3+
import type { Client as CoreClient, Config as CoreConfig } from "../core/types.gen.js";
4+
import type { Middleware } from "./utils.gen.js";
5+
export type ResponseStyle = "data" | "fields";
6+
export interface Config<T extends ClientOptions = ClientOptions> extends Omit<RequestInit, "body" | "headers" | "method">, CoreConfig {
7+
/**
8+
* Base URL for all requests made by this client.
9+
*/
10+
baseUrl?: T["baseUrl"];
11+
/**
12+
* Fetch API implementation. You can use this option to provide a custom
13+
* fetch instance.
14+
*
15+
* @default globalThis.fetch
16+
*/
17+
fetch?: (request: Request) => ReturnType<typeof fetch>;
18+
/**
19+
* Please don't use the Fetch client for Next.js applications. The `next`
20+
* options won't have any effect.
21+
*
22+
* Install {@link https://www.npmjs.com/package/@hey-api/client-next `@hey-api/client-next`} instead.
23+
*/
24+
next?: never;
25+
/**
26+
* Return the response data parsed in a specified format. By default, `auto`
27+
* will infer the appropriate method from the `Content-Type` response header.
28+
* You can override this behavior with any of the {@link Body} methods.
29+
* Select `stream` if you don't want to parse response data at all.
30+
*
31+
* @default 'auto'
32+
*/
33+
parseAs?: "arrayBuffer" | "auto" | "blob" | "formData" | "json" | "stream" | "text";
34+
/**
35+
* Should we return only data or multiple fields (data, error, response, etc.)?
36+
*
37+
* @default 'fields'
38+
*/
39+
responseStyle?: ResponseStyle;
40+
/**
41+
* Throw an error instead of returning it in the response?
42+
*
43+
* @default false
44+
*/
45+
throwOnError?: T["throwOnError"];
46+
}
47+
export interface RequestOptions<TData = unknown, TResponseStyle extends ResponseStyle = "fields", ThrowOnError extends boolean = boolean, Url extends string = string> extends Config<{
48+
responseStyle: TResponseStyle;
49+
throwOnError: ThrowOnError;
50+
}>, Pick<ServerSentEventsOptions<TData>, "onSseError" | "onSseEvent" | "sseDefaultRetryDelay" | "sseMaxRetryAttempts" | "sseMaxRetryDelay"> {
51+
/**
52+
* Any body that you want to add to your request.
53+
*
54+
* {@link https://developer.mozilla.org/docs/Web/API/fetch#body}
55+
*/
56+
body?: unknown;
57+
path?: Record<string, unknown>;
58+
query?: Record<string, unknown>;
59+
/**
60+
* Security mechanism(s) to use for the request.
61+
*/
62+
security?: ReadonlyArray<Auth>;
63+
url: Url;
64+
}
65+
export interface ResolvedRequestOptions<TResponseStyle extends ResponseStyle = "fields", ThrowOnError extends boolean = boolean, Url extends string = string> extends RequestOptions<unknown, TResponseStyle, ThrowOnError, Url> {
66+
serializedBody?: string;
67+
}
68+
export type RequestResult<TData = unknown, TError = unknown, ThrowOnError extends boolean = boolean, TResponseStyle extends ResponseStyle = "fields"> = ThrowOnError extends true ? Promise<TResponseStyle extends "data" ? TData extends Record<string, unknown> ? TData[keyof TData] : TData : {
69+
data: TData extends Record<string, unknown> ? TData[keyof TData] : TData;
70+
request: Request;
71+
response: Response;
72+
}> : Promise<TResponseStyle extends "data" ? (TData extends Record<string, unknown> ? TData[keyof TData] : TData) | undefined : ({
73+
data: TData extends Record<string, unknown> ? TData[keyof TData] : TData;
74+
error: undefined;
75+
} | {
76+
data: undefined;
77+
error: TError extends Record<string, unknown> ? TError[keyof TError] : TError;
78+
}) & {
79+
request: Request;
80+
response: Response;
81+
}>;
82+
export interface ClientOptions {
83+
baseUrl?: string;
84+
responseStyle?: ResponseStyle;
85+
throwOnError?: boolean;
86+
}
87+
type MethodFnBase = <TData = unknown, TError = unknown, ThrowOnError extends boolean = false, TResponseStyle extends ResponseStyle = "fields">(options: Omit<RequestOptions<TData, TResponseStyle, ThrowOnError>, "method">) => RequestResult<TData, TError, ThrowOnError, TResponseStyle>;
88+
type MethodFnServerSentEvents = <TData = unknown, TError = unknown, ThrowOnError extends boolean = false, TResponseStyle extends ResponseStyle = "fields">(options: Omit<RequestOptions<TData, TResponseStyle, ThrowOnError>, "method">) => Promise<ServerSentEventsResult<TData, TError>>;
89+
type MethodFn = MethodFnBase & {
90+
sse: MethodFnServerSentEvents;
91+
};
92+
type RequestFn = <TData = unknown, TError = unknown, ThrowOnError extends boolean = false, TResponseStyle extends ResponseStyle = "fields">(options: Omit<RequestOptions<TData, TResponseStyle, ThrowOnError>, "method"> & Pick<Required<RequestOptions<TData, TResponseStyle, ThrowOnError>>, "method">) => RequestResult<TData, TError, ThrowOnError, TResponseStyle>;
93+
type BuildUrlFn = <TData extends {
94+
body?: unknown;
95+
path?: Record<string, unknown>;
96+
query?: Record<string, unknown>;
97+
url: string;
98+
}>(options: Pick<TData, "url"> & Options<TData>) => string;
99+
export type Client = CoreClient<RequestFn, Config, MethodFn, BuildUrlFn> & {
100+
interceptors: Middleware<Request, Response, unknown, ResolvedRequestOptions>;
101+
};
102+
/**
103+
* The `createClientConfig()` function will be called on client initialization
104+
* and the returned object will become the client's initial configuration.
105+
*
106+
* You may want to initialize your client this way instead of calling
107+
* `setConfig()`. This is useful for example if you're using Next.js
108+
* to ensure your client always has the correct values.
109+
*/
110+
export type CreateClientConfig<T extends ClientOptions = ClientOptions> = (override?: Config<ClientOptions & T>) => Config<Required<ClientOptions> & T>;
111+
export interface TDataShape {
112+
body?: unknown;
113+
headers?: unknown;
114+
path?: unknown;
115+
query?: unknown;
116+
url: string;
117+
}
118+
type OmitKeys<T, K> = Pick<T, Exclude<keyof T, K>>;
119+
export type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean, TResponse = unknown, TResponseStyle extends ResponseStyle = "fields"> = OmitKeys<RequestOptions<TResponse, TResponseStyle, ThrowOnError>, "body" | "path" | "query" | "url"> & Omit<TData, "url">;
120+
export type OptionsLegacyParser<TData = unknown, ThrowOnError extends boolean = boolean, TResponseStyle extends ResponseStyle = "fields"> = TData extends {
121+
body?: any;
122+
} ? TData extends {
123+
headers?: any;
124+
} ? OmitKeys<RequestOptions<unknown, TResponseStyle, ThrowOnError>, "body" | "headers" | "url"> & TData : OmitKeys<RequestOptions<unknown, TResponseStyle, ThrowOnError>, "body" | "url"> & TData & Pick<RequestOptions<unknown, TResponseStyle, ThrowOnError>, "headers"> : TData extends {
125+
headers?: any;
126+
} ? OmitKeys<RequestOptions<unknown, TResponseStyle, ThrowOnError>, "headers" | "url"> & TData & Pick<RequestOptions<unknown, TResponseStyle, ThrowOnError>, "body"> : OmitKeys<RequestOptions<unknown, TResponseStyle, ThrowOnError>, "url"> & TData;
127+
export {};

dist/gen/client/types.gen.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
// This file is auto-generated by @hey-api/openapi-ts
2+
export {};

0 commit comments

Comments
 (0)