openapi-press
v0.1.1
Published
A client-creation utility for resource-namespaced SDKs.
Readme
openapi-press
A client-creation utility for resource-namespaced SDKs.
The model
An openapi-press SDK starts from types generated by
openapi-typescript. defineSpec<paths>() yields an
op factory for spec-checked endpoint descriptors, composed into a nested
namespace tree. defineClient<paths>() binds that tree to a transport,
producing a client whose methods carry spec-derived signatures — positional
path params, query/body optionality, typed payloads. Every endpoint is an
instrumented call: behavior (retry, timeouts, caching, …) is applied
per endpoint through .with, and every failure throws from the granular
error hierarchy under openapi-press/error.
The umbrella re-exports the @openapi-press/* packages — depend on this one
package and the decomposition stays an implementation detail.
Usage
import {
defineClient,
defineSpec,
withReauth,
withRetry,
withTimeout,
} from "openapi-press";
import { NotFoundError } from "openapi-press/error";
import type { paths } from "./schema.gen";
const { op } = defineSpec<paths>();
const { build } = defineClient<paths>();
const client = build(
{
users: {
list: op("get", "/users"),
get: op("get", "/users/{user_id}"),
},
},
{ baseUrl: "https://api.example.com" },
);
const retry = withRetry();
const getUser = client.users.get.with(retry, withTimeout(5000));
try {
const user = await getUser("user-123");
} catch (error) {
if (error instanceof NotFoundError) {
// ...
}
}Entry points
openapi-press— the spec, call, and client layers:defineSpec,defineClient,defineCall, thewith*wrappers, and every contract type.openapi-press/error— the error hierarchy (PressError, theHttpErrorstatus classes, theTransportErrorfamily) and its normalizers.
Each layer is documented in its own package: @openapi-press/spec,
@openapi-press/call, @openapi-press/client, @openapi-press/error.
