@izapai/sdk 0.0.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +173 -1
- package/dist/client.d.ts +20 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +41 -0
- package/dist/client.js.map +1 -0
- package/dist/errors.d.ts +41 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +67 -0
- package/dist/errors.js.map +1 -0
- package/dist/generated/client/client.gen.d.ts +3 -0
- package/dist/generated/client/client.gen.d.ts.map +1 -0
- package/dist/generated/client/client.gen.js +217 -0
- package/dist/generated/client/client.gen.js.map +1 -0
- package/dist/generated/client/index.d.ts +11 -0
- package/dist/generated/client/index.d.ts.map +1 -0
- package/dist/generated/client/index.js +7 -0
- package/dist/generated/client/index.js.map +1 -0
- package/dist/generated/client/types.gen.d.ts +121 -0
- package/dist/generated/client/types.gen.d.ts.map +1 -0
- package/dist/generated/client/types.gen.js +3 -0
- package/dist/generated/client/types.gen.js.map +1 -0
- package/dist/generated/client/utils.gen.d.ts +38 -0
- package/dist/generated/client/utils.gen.d.ts.map +1 -0
- package/dist/generated/client/utils.gen.js +229 -0
- package/dist/generated/client/utils.gen.js.map +1 -0
- package/dist/generated/client.gen.d.ts +13 -0
- package/dist/generated/client.gen.d.ts.map +1 -0
- package/dist/generated/client.gen.js +4 -0
- package/dist/generated/client.gen.js.map +1 -0
- package/dist/generated/core/auth.gen.d.ts +26 -0
- package/dist/generated/core/auth.gen.d.ts.map +1 -0
- package/dist/generated/core/auth.gen.js +15 -0
- package/dist/generated/core/auth.gen.js.map +1 -0
- package/dist/generated/core/bodySerializer.gen.d.ts +26 -0
- package/dist/generated/core/bodySerializer.gen.d.ts.map +1 -0
- package/dist/generated/core/bodySerializer.gen.js +58 -0
- package/dist/generated/core/bodySerializer.gen.js.map +1 -0
- package/dist/generated/core/params.gen.d.ts +44 -0
- package/dist/generated/core/params.gen.d.ts.map +1 -0
- package/dist/generated/core/params.gen.js +110 -0
- package/dist/generated/core/params.gen.js.map +1 -0
- package/dist/generated/core/pathSerializer.gen.d.ts +34 -0
- package/dist/generated/core/pathSerializer.gen.d.ts.map +1 -0
- package/dist/generated/core/pathSerializer.gen.js +107 -0
- package/dist/generated/core/pathSerializer.gen.js.map +1 -0
- package/dist/generated/core/queryKeySerializer.gen.d.ts +19 -0
- package/dist/generated/core/queryKeySerializer.gen.d.ts.map +1 -0
- package/dist/generated/core/queryKeySerializer.gen.js +93 -0
- package/dist/generated/core/queryKeySerializer.gen.js.map +1 -0
- package/dist/generated/core/serverSentEvents.gen.d.ts +72 -0
- package/dist/generated/core/serverSentEvents.gen.d.ts.map +1 -0
- package/dist/generated/core/serverSentEvents.gen.js +133 -0
- package/dist/generated/core/serverSentEvents.gen.js.map +1 -0
- package/dist/generated/core/types.gen.d.ts +84 -0
- package/dist/generated/core/types.gen.d.ts.map +1 -0
- package/dist/generated/core/types.gen.js +3 -0
- package/dist/generated/core/types.gen.js.map +1 -0
- package/dist/generated/core/utils.gen.d.ts +20 -0
- package/dist/generated/core/utils.gen.d.ts.map +1 -0
- package/dist/generated/core/utils.gen.js +88 -0
- package/dist/generated/core/utils.gen.js.map +1 -0
- package/dist/generated/index.d.ts +3 -0
- package/dist/generated/index.d.ts.map +1 -0
- package/dist/generated/index.js +3 -0
- package/dist/generated/index.js.map +1 -0
- package/dist/generated/sdk.gen.d.ts +420 -0
- package/dist/generated/sdk.gen.d.ts.map +1 -0
- package/dist/generated/sdk.gen.js +906 -0
- package/dist/generated/sdk.gen.js.map +1 -0
- package/dist/generated/types.gen.d.ts +5342 -0
- package/dist/generated/types.gen.d.ts.map +1 -0
- package/dist/generated/types.gen.js +3 -0
- package/dist/generated/types.gen.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/retry.d.ts +18 -0
- package/dist/retry.d.ts.map +1 -0
- package/dist/retry.js +84 -0
- package/dist/retry.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +2 -0
- package/dist/version.js.map +1 -0
- package/dist/webhooks.d.ts +95 -0
- package/dist/webhooks.d.ts.map +1 -0
- package/dist/webhooks.js +153 -0
- package/dist/webhooks.js.map +1 -0
- package/package.json +58 -3
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 iZap
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1 +1,173 @@
|
|
|
1
|
-
|
|
1
|
+
# @izapai/sdk
|
|
2
|
+
|
|
3
|
+
TypeScript SDK for the [iZap](https://izap.ai) REST API: WhatsApp conversations,
|
|
4
|
+
message templates, bulk transmissions, business settings and outbound webhooks.
|
|
5
|
+
|
|
6
|
+
- Typed methods for every public operation, generated from iZap's public OpenAPI schema.
|
|
7
|
+
- Personal-access-token auth, automatic retries with backoff, and typed errors.
|
|
8
|
+
- `webhooks.verify()` for iZap's webhook signatures.
|
|
9
|
+
|
|
10
|
+
It is built for server-side use on Node.js 20 or later and ships as ESM with type
|
|
11
|
+
declarations. Full API reference: [devs.izap.ai](https://devs.izap.ai).
|
|
12
|
+
|
|
13
|
+
## Install
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install @izapai/sdk
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Authenticate
|
|
20
|
+
|
|
21
|
+
Create a personal access token in the iZap dashboard under **User Settings → API
|
|
22
|
+
Keys**. API keys are available on plans that include the REST API. Tokens start with
|
|
23
|
+
`izap_pat_` and act as you, so keep them on the server and out of source control.
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
import { createClient } from "@izapai/sdk";
|
|
27
|
+
|
|
28
|
+
const izap = createClient({
|
|
29
|
+
token: process.env.IZAP_TOKEN!, // izap_pat_…
|
|
30
|
+
businessId: process.env.IZAP_BUSINESS_ID, // sent as the `business-id` header
|
|
31
|
+
});
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
`businessId` is optional. Most operations act on one business, and the header can
|
|
35
|
+
also be set per call: `izap.listWhatsAppTemplates({ headers: { "business-id": id } })`.
|
|
36
|
+
`izap.introspectToken()` tells you which user and business a token resolves to.
|
|
37
|
+
|
|
38
|
+
## Send a message
|
|
39
|
+
|
|
40
|
+
```ts
|
|
41
|
+
const { data: page } = await izap.listCurrentBusinessChats({
|
|
42
|
+
query: { page_size: 20 },
|
|
43
|
+
});
|
|
44
|
+
const chat = page.chats[0]!;
|
|
45
|
+
|
|
46
|
+
const { data: sent } = await izap.sendChatMessage({
|
|
47
|
+
path: { chat_id: chat.id },
|
|
48
|
+
body: { content: "Olá! Seu pedido já saiu para entrega." },
|
|
49
|
+
});
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
The message is sent as a human agent, so the assistant does not reply to it. Outside
|
|
53
|
+
WhatsApp's 24-hour customer-service window, only an approved template can reach the
|
|
54
|
+
customer: use `izap.sendChatTemplateMessage()`.
|
|
55
|
+
|
|
56
|
+
## List templates
|
|
57
|
+
|
|
58
|
+
```ts
|
|
59
|
+
const { data } = await izap.listWhatsAppTemplates({
|
|
60
|
+
query: { status: "approved" },
|
|
61
|
+
});
|
|
62
|
+
for (const template of data.templates) {
|
|
63
|
+
console.log(template.name, template.language);
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Every method resolves to `{ data, request, response }`, so response headers are
|
|
68
|
+
available too.
|
|
69
|
+
|
|
70
|
+
## Verify a webhook
|
|
71
|
+
|
|
72
|
+
iZap signs every webhook delivery (see
|
|
73
|
+
[Webhooks](https://devs.izap.ai/en/api-reference/webhooks)). Verify the **raw** request
|
|
74
|
+
body before trusting it; a body your framework has already parsed and re-serialized
|
|
75
|
+
no longer matches the signature.
|
|
76
|
+
|
|
77
|
+
```ts
|
|
78
|
+
import { webhooks, WebhookVerificationError } from "@izapai/sdk";
|
|
79
|
+
|
|
80
|
+
// Express: app.post("/hooks/izap", express.raw({ type: "application/json" }), handler)
|
|
81
|
+
function handler(req, res) {
|
|
82
|
+
try {
|
|
83
|
+
const event = webhooks.verify({
|
|
84
|
+
payload: req.body, // Buffer or string: the raw body
|
|
85
|
+
headers: req.headers,
|
|
86
|
+
secret: process.env.IZAP_WEBHOOK_SECRET!, // izap_whsec_…
|
|
87
|
+
});
|
|
88
|
+
// event.id is stable across retries and resends: dedupe on it.
|
|
89
|
+
if (event.data.event === "message.received") {
|
|
90
|
+
console.log(event.data.message.text);
|
|
91
|
+
}
|
|
92
|
+
res.sendStatus(204);
|
|
93
|
+
} catch (error) {
|
|
94
|
+
if (error instanceof WebhookVerificationError) {
|
|
95
|
+
return res.status(400).send(error.code);
|
|
96
|
+
}
|
|
97
|
+
throw error;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
`verify()` requires the `izap-webhook-signature-v2` HMAC by default — it covers the
|
|
103
|
+
delivery id as well as the timestamp and body, closing a replay gap that v1 alone
|
|
104
|
+
has. Pass `allowV1: true` to accept a v1-only `izap-webhook-signature` header when
|
|
105
|
+
a delivery doesn't carry v2 (senders from before v2 shipped). Either check is
|
|
106
|
+
constant-time and rejects a delivery whose `izap-webhook-timestamp` is more than
|
|
107
|
+
`toleranceSec` (default 300) seconds from now. It throws `WebhookVerificationError` with a `code` of
|
|
108
|
+
`missing_header`, `invalid_timestamp`, `timestamp_out_of_tolerance`,
|
|
109
|
+
`invalid_signature` or `invalid_payload`. `webhooks.sign()` and `webhooks.signV2()`
|
|
110
|
+
produce a valid v1 or v2 signature for a payload, which helps when testing a receiver
|
|
111
|
+
locally.
|
|
112
|
+
|
|
113
|
+
## Errors
|
|
114
|
+
|
|
115
|
+
Any non-2xx response throws `IzapApiError`:
|
|
116
|
+
|
|
117
|
+
```ts
|
|
118
|
+
import { IzapApiError } from "@izapai/sdk";
|
|
119
|
+
|
|
120
|
+
try {
|
|
121
|
+
await izap.createWhatsAppTemplate({ body: template });
|
|
122
|
+
} catch (error) {
|
|
123
|
+
if (error instanceof IzapApiError) {
|
|
124
|
+
error.status; // e.g. 403 or 422
|
|
125
|
+
error.code; // a machine-readable code, when the API sends one
|
|
126
|
+
error.detail; // the body's `detail`: a string, an object, or validation issues
|
|
127
|
+
error.headers; // response headers
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Connection failures surface as the underlying `fetch` `TypeError`, and timeouts as a
|
|
133
|
+
`DOMException` named `TimeoutError`.
|
|
134
|
+
|
|
135
|
+
## Retries and timeouts
|
|
136
|
+
|
|
137
|
+
| Option | Default | Meaning |
|
|
138
|
+
| ------------ | --------------------- | -------------------------------------------------- |
|
|
139
|
+
| `token` | required | Personal access token (`izap_pat_…`) |
|
|
140
|
+
| `businessId` | none | Default `business-id` header |
|
|
141
|
+
| `baseUrl` | `https://api.izap.ai` | API origin |
|
|
142
|
+
| `fetch` | `globalThis.fetch` | Custom fetch implementation |
|
|
143
|
+
| `maxRetries` | `2` | Retries after the first attempt |
|
|
144
|
+
| `timeoutMs` | `30000` | Per-attempt timeout, until response headers arrive |
|
|
145
|
+
|
|
146
|
+
Only idempotent requests (`GET`, `HEAD`, `OPTIONS`, `PUT`, `DELETE`) are retried, on
|
|
147
|
+
`429`, `502`, `503`, `504`, connection failures and timeouts. A `Retry-After` header
|
|
148
|
+
of up to 60 seconds is honoured; otherwise the delay backs off exponentially from
|
|
149
|
+
0.5 s with jitter, up to 8 s. `POST` and `PATCH` are never retried, so a send is
|
|
150
|
+
never duplicated.
|
|
151
|
+
|
|
152
|
+
## Development
|
|
153
|
+
|
|
154
|
+
The client under `src/generated/` is generated with
|
|
155
|
+
[`@hey-api/openapi-ts`](https://heyapi.dev) from `openapi/izap-public.json`, a copy of
|
|
156
|
+
iZap's public OpenAPI schema (the one served at `/api/v1/openapi.json`). The
|
|
157
|
+
hand-written layer in `src/` adds auth, retries, errors and webhooks.
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
npm ci
|
|
161
|
+
npm run sync:schema # refresh openapi/izap-public.json (IZAP_OPENAPI_INPUT=<file|url> to pick the source)
|
|
162
|
+
npm run generate # regenerate src/generated/ (IZAP_OPENAPI_INPUT overrides the input)
|
|
163
|
+
npm run check:generated # fail if src/generated/ drifted from the schema
|
|
164
|
+
npm test # type-check (including examples/) and run the tests
|
|
165
|
+
npm run build # emit dist/
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Generating needs Node.js 22.18 or later; the published package runs on Node.js 20+.
|
|
169
|
+
Runnable samples live in [`examples/`](examples).
|
|
170
|
+
|
|
171
|
+
## License
|
|
172
|
+
|
|
173
|
+
[MIT](LICENSE)
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { IzapApi } from "./generated/sdk.gen.js";
|
|
2
|
+
export declare const DEFAULT_BASE_URL = "https://api.izap.ai";
|
|
3
|
+
export interface IzapClientOptions {
|
|
4
|
+
/** Personal access token (`izap_pat_…`), sent as `Authorization: Bearer <token>`. */
|
|
5
|
+
token: string;
|
|
6
|
+
/** Default business for every request, sent as the `business-id` header. */
|
|
7
|
+
businessId?: string;
|
|
8
|
+
/** Defaults to https://api.izap.ai. */
|
|
9
|
+
baseUrl?: string;
|
|
10
|
+
/** Custom fetch implementation. Defaults to the global `fetch`. */
|
|
11
|
+
fetch?: typeof fetch;
|
|
12
|
+
/** Retries for idempotent requests on 429/502/503/504 and connection failures. Defaults to 2. */
|
|
13
|
+
maxRetries?: number;
|
|
14
|
+
/** Per-attempt timeout until response headers arrive. Defaults to 30000. */
|
|
15
|
+
timeoutMs?: number;
|
|
16
|
+
}
|
|
17
|
+
/** Every public iZap API operation, as a method. */
|
|
18
|
+
export type IzapClient = IzapApi;
|
|
19
|
+
export declare function createClient(options: IzapClientOptions): IzapClient;
|
|
20
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAMjD,eAAO,MAAM,gBAAgB,wBAAwB,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAChC,qFAAqF;IACrF,KAAK,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,iGAAiG;IACjG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,oDAAoD;AACpD,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC;AAEjC,wBAAgB,YAAY,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,CAiDnE"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { createClient as createFetchClient, createConfig, } from "./generated/client/index.js";
|
|
2
|
+
import { IzapApi } from "./generated/sdk.gen.js";
|
|
3
|
+
import { IzapApiError } from "./errors.js";
|
|
4
|
+
import { createRetryingFetch } from "./retry.js";
|
|
5
|
+
import { VERSION } from "./version.js";
|
|
6
|
+
export const DEFAULT_BASE_URL = "https://api.izap.ai";
|
|
7
|
+
export function createClient(options) {
|
|
8
|
+
const { token, businessId, baseUrl = DEFAULT_BASE_URL, maxRetries = 2, timeoutMs = 30_000, } = options;
|
|
9
|
+
if (typeof token !== "string" || token.trim() === "") {
|
|
10
|
+
throw new TypeError("createClient: `token` is required (a personal access token, izap_pat_…).");
|
|
11
|
+
}
|
|
12
|
+
if (!Number.isInteger(maxRetries) || maxRetries < 0) {
|
|
13
|
+
throw new TypeError("createClient: `maxRetries` must be an integer >= 0.");
|
|
14
|
+
}
|
|
15
|
+
if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {
|
|
16
|
+
throw new TypeError("createClient: `timeoutMs` must be a positive number.");
|
|
17
|
+
}
|
|
18
|
+
const baseFetch = options.fetch ?? ((input, init) => globalThis.fetch(input, init));
|
|
19
|
+
const headers = {
|
|
20
|
+
"User-Agent": `izap-sdk-typescript/${VERSION}`,
|
|
21
|
+
};
|
|
22
|
+
if (businessId)
|
|
23
|
+
headers["business-id"] = businessId;
|
|
24
|
+
const client = createFetchClient(createConfig({
|
|
25
|
+
baseUrl: baseUrl.replace(/\/+$/, ""),
|
|
26
|
+
throwOnError: true,
|
|
27
|
+
headers,
|
|
28
|
+
auth: (auth) => (auth.scheme === "bearer" ? token : undefined),
|
|
29
|
+
fetch: createRetryingFetch({ fetch: baseFetch, maxRetries, timeoutMs }),
|
|
30
|
+
}));
|
|
31
|
+
client.interceptors.error.use((error, response, request) => response
|
|
32
|
+
? new IzapApiError({
|
|
33
|
+
status: response.status,
|
|
34
|
+
body: error,
|
|
35
|
+
headers: response.headers,
|
|
36
|
+
request: request ? `${request.method} ${request.url}` : undefined,
|
|
37
|
+
})
|
|
38
|
+
: error);
|
|
39
|
+
return new IzapApi({ client });
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,IAAI,iBAAiB,EACjC,YAAY,GACb,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;AAoBtD,MAAM,UAAU,YAAY,CAAC,OAA0B;IACrD,MAAM,EACJ,KAAK,EACL,UAAU,EACV,OAAO,GAAG,gBAAgB,EAC1B,UAAU,GAAG,CAAC,EACd,SAAS,GAAG,MAAM,GACnB,GAAG,OAAO,CAAC;IACZ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACrD,MAAM,IAAI,SAAS,CACjB,0EAA0E,CAC3E,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,SAAS,CAAC,qDAAqD,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,SAAS,GACb,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IACpE,MAAM,OAAO,GAA2B;QACtC,YAAY,EAAE,uBAAuB,OAAO,EAAE;KAC/C,CAAC;IACF,IAAI,UAAU;QAAE,OAAO,CAAC,aAAa,CAAC,GAAG,UAAU,CAAC;IAEpD,MAAM,MAAM,GAAG,iBAAiB,CAC9B,YAAY,CAAgB;QAC1B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,YAAY,EAAE,IAAI;QAClB,OAAO;QACP,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9D,KAAK,EAAE,mBAAmB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;KACxE,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CACzD,QAAQ;QACN,CAAC,CAAC,IAAI,YAAY,CAAC;YACf,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS;SAClE,CAAC;QACJ,CAAC,CAAC,KAAK,CACV,CAAC;IAEF,OAAO,IAAI,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AACjC,CAAC"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/** One entry of a FastAPI request-validation error (HTTP 422). */
|
|
2
|
+
export interface ValidationIssue {
|
|
3
|
+
loc: Array<string | number>;
|
|
4
|
+
msg: string;
|
|
5
|
+
type: string;
|
|
6
|
+
[key: string]: unknown;
|
|
7
|
+
}
|
|
8
|
+
/** A structured `detail`, e.g. `{ "code": "plan_limit_event_webhooks", "message": "…" }`. */
|
|
9
|
+
export interface ErrorDetailObject {
|
|
10
|
+
code?: string;
|
|
11
|
+
message?: string;
|
|
12
|
+
[key: string]: unknown;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The `detail` of an iZap error body (`{"detail": …}`): a plain message, a
|
|
16
|
+
* structured object carrying a machine-readable `code`, or a list of validation issues.
|
|
17
|
+
*/
|
|
18
|
+
export type ErrorDetail = string | ErrorDetailObject | ValidationIssue[];
|
|
19
|
+
/** Thrown for every non-2xx response from the iZap API. */
|
|
20
|
+
export declare class IzapApiError extends Error {
|
|
21
|
+
readonly name = "IzapApiError";
|
|
22
|
+
/** HTTP status code. */
|
|
23
|
+
readonly status: number;
|
|
24
|
+
/** Machine-readable error code, from `detail.code` or a top-level `code`, when present. */
|
|
25
|
+
readonly code: string | undefined;
|
|
26
|
+
/** The `detail` field of the error body, when the body had one. */
|
|
27
|
+
readonly detail: ErrorDetail | undefined;
|
|
28
|
+
/** The parsed JSON body, or the raw text when the body was not JSON. */
|
|
29
|
+
readonly body: unknown;
|
|
30
|
+
/** Response headers, e.g. `retry-after`. */
|
|
31
|
+
readonly headers: Headers;
|
|
32
|
+
/** `METHOD url` of the request that failed. */
|
|
33
|
+
readonly request: string | undefined;
|
|
34
|
+
constructor(init: {
|
|
35
|
+
status: number;
|
|
36
|
+
body: unknown;
|
|
37
|
+
headers?: Headers;
|
|
38
|
+
request?: string;
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,6FAA6F;AAC7F,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,iBAAiB,GAAG,eAAe,EAAE,CAAC;AAEzE,2DAA2D;AAC3D,qBAAa,YAAa,SAAQ,KAAK;IACrC,SAAkB,IAAI,kBAAkB;IACxC,wBAAwB;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,2FAA2F;IAC3F,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,mEAAmE;IACnE,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IACzC,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,4CAA4C;IAC5C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,+CAA+C;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;gBAEzB,IAAI,EAAE;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,OAAO,CAAC;QACd,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB;CAcF"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/** Thrown for every non-2xx response from the iZap API. */
|
|
2
|
+
export class IzapApiError extends Error {
|
|
3
|
+
name = "IzapApiError";
|
|
4
|
+
/** HTTP status code. */
|
|
5
|
+
status;
|
|
6
|
+
/** Machine-readable error code, from `detail.code` or a top-level `code`, when present. */
|
|
7
|
+
code;
|
|
8
|
+
/** The `detail` field of the error body, when the body had one. */
|
|
9
|
+
detail;
|
|
10
|
+
/** The parsed JSON body, or the raw text when the body was not JSON. */
|
|
11
|
+
body;
|
|
12
|
+
/** Response headers, e.g. `retry-after`. */
|
|
13
|
+
headers;
|
|
14
|
+
/** `METHOD url` of the request that failed. */
|
|
15
|
+
request;
|
|
16
|
+
constructor(init) {
|
|
17
|
+
const detail = readDetail(init.body);
|
|
18
|
+
const code = readCode(init.body, detail);
|
|
19
|
+
const summary = summarize(init.body, detail) ?? `HTTP ${init.status}`;
|
|
20
|
+
super(`iZap API error ${init.status}${code ? ` (${code})` : ""}: ${summary}`);
|
|
21
|
+
this.status = init.status;
|
|
22
|
+
this.code = code;
|
|
23
|
+
this.detail = detail;
|
|
24
|
+
this.body = init.body;
|
|
25
|
+
this.headers = init.headers ?? new Headers();
|
|
26
|
+
this.request = init.request;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function isRecord(value) {
|
|
30
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
31
|
+
}
|
|
32
|
+
function readDetail(body) {
|
|
33
|
+
if (!isRecord(body))
|
|
34
|
+
return undefined;
|
|
35
|
+
const { detail } = body;
|
|
36
|
+
if (typeof detail === "string" || Array.isArray(detail) || isRecord(detail)) {
|
|
37
|
+
return detail;
|
|
38
|
+
}
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
function readCode(body, detail) {
|
|
42
|
+
if (isRecord(detail) && typeof detail.code === "string")
|
|
43
|
+
return detail.code;
|
|
44
|
+
if (isRecord(body) && typeof body.code === "string")
|
|
45
|
+
return body.code;
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
function summarize(body, detail) {
|
|
49
|
+
if (typeof detail === "string")
|
|
50
|
+
return detail;
|
|
51
|
+
if (Array.isArray(detail)) {
|
|
52
|
+
return detail
|
|
53
|
+
.map((issue) => issue?.loc ? `${issue.loc.join(".")}: ${issue.msg}` : String(issue))
|
|
54
|
+
.join("; ");
|
|
55
|
+
}
|
|
56
|
+
if (isRecord(detail)) {
|
|
57
|
+
return typeof detail.message === "string"
|
|
58
|
+
? detail.message
|
|
59
|
+
: JSON.stringify(detail);
|
|
60
|
+
}
|
|
61
|
+
if (isRecord(body) && typeof body.message === "string")
|
|
62
|
+
return body.message;
|
|
63
|
+
if (typeof body === "string" && body.trim())
|
|
64
|
+
return body.trim().slice(0, 500);
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAqBA,2DAA2D;AAC3D,MAAM,OAAO,YAAa,SAAQ,KAAK;IACnB,IAAI,GAAG,cAAc,CAAC;IACxC,wBAAwB;IACf,MAAM,CAAS;IACxB,2FAA2F;IAClF,IAAI,CAAqB;IAClC,mEAAmE;IAC1D,MAAM,CAA0B;IACzC,wEAAwE;IAC/D,IAAI,CAAU;IACvB,4CAA4C;IACnC,OAAO,CAAU;IAC1B,+CAA+C;IACtC,OAAO,CAAqB;IAErC,YAAY,IAKX;QACC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACtE,KAAK,CACH,kBAAkB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,EAAE,CACvE,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,OAAO,EAAE,CAAC;QAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC9B,CAAC;CACF;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,UAAU,CAAC,IAAa;IAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACtC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxB,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5E,OAAO,MAAqB,CAAC;IAC/B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,QAAQ,CACf,IAAa,EACb,MAA+B;IAE/B,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IAC5E,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC;IACtE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,SAAS,CAChB,IAAa,EACb,MAA+B;IAE/B,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,MAAM;aACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACb,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACpE;aACA,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACrB,OAAO,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;YACvC,CAAC,CAAC,MAAM,CAAC,OAAO;YAChB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC;IAC5E,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9E,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.gen.d.ts","sourceRoot":"","sources":["../../../src/generated/client/client.gen.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAA0C,MAAM,gBAAgB,CAAC;AAgB7F,eAAO,MAAM,YAAY,GAAI,SAAQ,MAAW,KAAG,MA+PlD,CAAC"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
// This file is auto-generated by @hey-api/openapi-ts
|
|
2
|
+
import { createSseClient } from '../core/serverSentEvents.gen.js';
|
|
3
|
+
import { getValidRequestBody } from '../core/utils.gen.js';
|
|
4
|
+
import { buildUrl, createConfig, createInterceptors, getParseAs, mergeConfigs, mergeHeaders, setAuthParams, } from './utils.gen.js';
|
|
5
|
+
export const createClient = (config = {}) => {
|
|
6
|
+
let _config = mergeConfigs(createConfig(), config);
|
|
7
|
+
const getConfig = () => ({ ..._config });
|
|
8
|
+
const setConfig = (config) => {
|
|
9
|
+
_config = mergeConfigs(_config, config);
|
|
10
|
+
return getConfig();
|
|
11
|
+
};
|
|
12
|
+
const interceptors = createInterceptors();
|
|
13
|
+
const beforeRequest = async (options) => {
|
|
14
|
+
const opts = {
|
|
15
|
+
..._config,
|
|
16
|
+
...options,
|
|
17
|
+
fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,
|
|
18
|
+
headers: mergeHeaders(_config.headers, options.headers),
|
|
19
|
+
serializedBody: undefined,
|
|
20
|
+
};
|
|
21
|
+
if (opts.security) {
|
|
22
|
+
await setAuthParams(opts);
|
|
23
|
+
}
|
|
24
|
+
if (opts.requestValidator) {
|
|
25
|
+
await opts.requestValidator(opts);
|
|
26
|
+
}
|
|
27
|
+
if (opts.body !== undefined && opts.bodySerializer) {
|
|
28
|
+
opts.serializedBody = opts.bodySerializer(opts.body);
|
|
29
|
+
}
|
|
30
|
+
// remove Content-Type header if body is empty to avoid sending invalid requests
|
|
31
|
+
if (opts.body === undefined || opts.serializedBody === '') {
|
|
32
|
+
opts.headers.delete('Content-Type');
|
|
33
|
+
}
|
|
34
|
+
const resolvedOpts = opts;
|
|
35
|
+
const url = buildUrl(resolvedOpts);
|
|
36
|
+
return { opts: resolvedOpts, url };
|
|
37
|
+
};
|
|
38
|
+
const request = async (options) => {
|
|
39
|
+
const throwOnError = options.throwOnError ?? _config.throwOnError;
|
|
40
|
+
const responseStyle = options.responseStyle ?? _config.responseStyle;
|
|
41
|
+
let request;
|
|
42
|
+
let response;
|
|
43
|
+
try {
|
|
44
|
+
const { opts, url } = await beforeRequest(options);
|
|
45
|
+
const requestInit = {
|
|
46
|
+
redirect: 'follow',
|
|
47
|
+
...opts,
|
|
48
|
+
body: getValidRequestBody(opts),
|
|
49
|
+
};
|
|
50
|
+
request = new Request(url, requestInit);
|
|
51
|
+
for (const fn of interceptors.request.fns) {
|
|
52
|
+
if (fn) {
|
|
53
|
+
request = await fn(request, opts);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// fetch must be assigned here, otherwise it would throw the error:
|
|
57
|
+
// TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation
|
|
58
|
+
const _fetch = opts.fetch;
|
|
59
|
+
response = await _fetch(request);
|
|
60
|
+
for (const fn of interceptors.response.fns) {
|
|
61
|
+
if (fn) {
|
|
62
|
+
response = await fn(response, request, opts);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const result = {
|
|
66
|
+
request,
|
|
67
|
+
response,
|
|
68
|
+
};
|
|
69
|
+
if (response.ok) {
|
|
70
|
+
const parseAs = (opts.parseAs === 'auto'
|
|
71
|
+
? getParseAs(response.headers.get('Content-Type'))
|
|
72
|
+
: opts.parseAs) ?? 'json';
|
|
73
|
+
if (response.status === 204 || response.headers.get('Content-Length') === '0') {
|
|
74
|
+
let emptyData;
|
|
75
|
+
switch (parseAs) {
|
|
76
|
+
case 'arrayBuffer':
|
|
77
|
+
case 'blob':
|
|
78
|
+
case 'text':
|
|
79
|
+
emptyData = await response[parseAs]();
|
|
80
|
+
break;
|
|
81
|
+
case 'formData':
|
|
82
|
+
emptyData = new FormData();
|
|
83
|
+
break;
|
|
84
|
+
case 'stream':
|
|
85
|
+
emptyData = response.body;
|
|
86
|
+
break;
|
|
87
|
+
case 'json':
|
|
88
|
+
default:
|
|
89
|
+
emptyData = {};
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
return opts.responseStyle === 'data'
|
|
93
|
+
? emptyData
|
|
94
|
+
: {
|
|
95
|
+
data: emptyData,
|
|
96
|
+
...result,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
let data;
|
|
100
|
+
switch (parseAs) {
|
|
101
|
+
case 'arrayBuffer':
|
|
102
|
+
case 'blob':
|
|
103
|
+
case 'formData':
|
|
104
|
+
case 'text':
|
|
105
|
+
data = await response[parseAs]();
|
|
106
|
+
break;
|
|
107
|
+
case 'json': {
|
|
108
|
+
// Some servers return 200 with no Content-Length and empty body.
|
|
109
|
+
// response.json() would throw; read as text and parse if non-empty.
|
|
110
|
+
const text = await response.text();
|
|
111
|
+
data = text ? JSON.parse(text) : {};
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
case 'stream':
|
|
115
|
+
return opts.responseStyle === 'data'
|
|
116
|
+
? response.body
|
|
117
|
+
: {
|
|
118
|
+
data: response.body,
|
|
119
|
+
...result,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
if (parseAs === 'json') {
|
|
123
|
+
if (opts.responseValidator) {
|
|
124
|
+
await opts.responseValidator(data);
|
|
125
|
+
}
|
|
126
|
+
if (opts.responseTransformer) {
|
|
127
|
+
data = await opts.responseTransformer(data);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return opts.responseStyle === 'data'
|
|
131
|
+
? data
|
|
132
|
+
: {
|
|
133
|
+
data,
|
|
134
|
+
...result,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
const textError = await response.text();
|
|
138
|
+
let jsonError;
|
|
139
|
+
try {
|
|
140
|
+
jsonError = JSON.parse(textError);
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
// noop
|
|
144
|
+
}
|
|
145
|
+
throw jsonError ?? textError;
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
let finalError = error;
|
|
149
|
+
for (const fn of interceptors.error.fns) {
|
|
150
|
+
if (fn) {
|
|
151
|
+
finalError = await fn(finalError, response, request, options);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
finalError = finalError || {};
|
|
155
|
+
if (throwOnError) {
|
|
156
|
+
throw finalError;
|
|
157
|
+
}
|
|
158
|
+
// TODO: we probably want to return error and improve types
|
|
159
|
+
return responseStyle === 'data'
|
|
160
|
+
? undefined
|
|
161
|
+
: {
|
|
162
|
+
error: finalError,
|
|
163
|
+
request,
|
|
164
|
+
response,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
const makeMethodFn = (method) => (options) => request({ ...options, method });
|
|
169
|
+
const makeSseFn = (method) => async (options) => {
|
|
170
|
+
const { opts, url } = await beforeRequest(options);
|
|
171
|
+
return createSseClient({
|
|
172
|
+
...opts,
|
|
173
|
+
body: opts.body,
|
|
174
|
+
method,
|
|
175
|
+
onRequest: async (url, init) => {
|
|
176
|
+
let request = new Request(url, init);
|
|
177
|
+
for (const fn of interceptors.request.fns) {
|
|
178
|
+
if (fn) {
|
|
179
|
+
request = await fn(request, opts);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return request;
|
|
183
|
+
},
|
|
184
|
+
serializedBody: getValidRequestBody(opts),
|
|
185
|
+
url,
|
|
186
|
+
});
|
|
187
|
+
};
|
|
188
|
+
const _buildUrl = (options) => buildUrl({ ..._config, ...options });
|
|
189
|
+
return {
|
|
190
|
+
buildUrl: _buildUrl,
|
|
191
|
+
connect: makeMethodFn('CONNECT'),
|
|
192
|
+
delete: makeMethodFn('DELETE'),
|
|
193
|
+
get: makeMethodFn('GET'),
|
|
194
|
+
getConfig,
|
|
195
|
+
head: makeMethodFn('HEAD'),
|
|
196
|
+
interceptors,
|
|
197
|
+
options: makeMethodFn('OPTIONS'),
|
|
198
|
+
patch: makeMethodFn('PATCH'),
|
|
199
|
+
post: makeMethodFn('POST'),
|
|
200
|
+
put: makeMethodFn('PUT'),
|
|
201
|
+
request,
|
|
202
|
+
setConfig,
|
|
203
|
+
sse: {
|
|
204
|
+
connect: makeSseFn('CONNECT'),
|
|
205
|
+
delete: makeSseFn('DELETE'),
|
|
206
|
+
get: makeSseFn('GET'),
|
|
207
|
+
head: makeSseFn('HEAD'),
|
|
208
|
+
options: makeSseFn('OPTIONS'),
|
|
209
|
+
patch: makeSseFn('PATCH'),
|
|
210
|
+
post: makeSseFn('POST'),
|
|
211
|
+
put: makeSseFn('PUT'),
|
|
212
|
+
trace: makeSseFn('TRACE'),
|
|
213
|
+
},
|
|
214
|
+
trace: makeMethodFn('TRACE'),
|
|
215
|
+
};
|
|
216
|
+
};
|
|
217
|
+
//# sourceMappingURL=client.gen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.gen.js","sourceRoot":"","sources":["../../../src/generated/client/client.gen.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
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 { serializeQueryKeyValue } from '../core/queryKeySerializer.gen.js';
|
|
6
|
+
export type { ServerSentEventsResult } from '../core/serverSentEvents.gen.js';
|
|
7
|
+
export type { ClientMeta } from '../core/types.gen.js';
|
|
8
|
+
export { createClient } from './client.gen.js';
|
|
9
|
+
export type { Client, ClientOptions, Config, CreateClientConfig, Options, RequestOptions, RequestResult, ResolvedRequestOptions, ResponseStyle, TDataShape, } from './types.gen.js';
|
|
10
|
+
export { createConfig, mergeHeaders } from './utils.gen.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generated/client/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAChD,YAAY,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,YAAY,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC9E,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EACV,MAAM,EACN,aAAa,EACb,MAAM,EACN,kBAAkB,EAClB,OAAO,EACP,cAAc,EACd,aAAa,EACb,sBAAsB,EACtB,aAAa,EACb,UAAU,GACX,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
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 { serializeQueryKeyValue } from '../core/queryKeySerializer.gen.js';
|
|
5
|
+
export { createClient } from './client.gen.js';
|
|
6
|
+
export { createConfig, mergeHeaders } from './utils.gen.js';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generated/client/index.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAIrD,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAG3E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAa/C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
|