@paragraphcms/client 1.4.0 → 1.6.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/README.md +130 -71
- package/dist/client.d.ts +3 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +148 -56
- package/dist/types.d.ts +3 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,25 +1,22 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @paragraphcms/client
|
|
2
2
|
|
|
3
3
|
Official TypeScript client for the Paragraph CMS v1 API.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
`@paragraphcms/client` is a small, typed SDK built on top of the standard Fetch API. It runs in modern Node.js and server-side runtimes that expose `fetch`, `Headers`, `FormData`, `Blob`, and `AbortController`, including Cloudflare Workers, Next.js route handlers and server actions, AWS Lambda, and similar environments.
|
|
6
6
|
|
|
7
|
-
##
|
|
8
|
-
|
|
9
|
-
- Full coverage for the current Paragraph CMS v1 API surface.
|
|
10
|
-
- `new Client({ apiKey })` entrypoint with a small, typed SDK.
|
|
11
|
-
- Built-in request queue that rate-limits each client instance to `5 req/s` by default.
|
|
12
|
-
- Runtime-agnostic implementation with no runtime dependencies.
|
|
13
|
-
- First-class TypeScript types for request payloads, responses, list metadata, and API errors.
|
|
14
|
-
- Request cancellation with `AbortSignal`.
|
|
7
|
+
## Quick Start
|
|
15
8
|
|
|
16
|
-
|
|
9
|
+
Install the client with a package manager:
|
|
17
10
|
|
|
18
11
|
```bash
|
|
19
12
|
npm install @paragraphcms/client
|
|
13
|
+
|
|
14
|
+
# Alternative package managers
|
|
15
|
+
pnpm add @paragraphcms/client
|
|
16
|
+
yarn add @paragraphcms/client
|
|
20
17
|
```
|
|
21
18
|
|
|
22
|
-
|
|
19
|
+
Create a client instance and call the API:
|
|
23
20
|
|
|
24
21
|
```ts
|
|
25
22
|
import { Client } from "@paragraphcms/client";
|
|
@@ -28,52 +25,78 @@ const client = new Client({
|
|
|
28
25
|
apiKey: process.env.PARAGRAPH_API_KEY!,
|
|
29
26
|
});
|
|
30
27
|
|
|
31
|
-
const pages = await client.pages.list(
|
|
32
|
-
|
|
33
|
-
sort: "-updated_at",
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
const created = await client.pages.create({
|
|
37
|
-
title: "Pricing",
|
|
38
|
-
language: "en",
|
|
39
|
-
content: [
|
|
40
|
-
{
|
|
41
|
-
type: "paragraph",
|
|
42
|
-
content: [{ type: "text", text: "Pricing" }],
|
|
43
|
-
},
|
|
44
|
-
],
|
|
45
|
-
});
|
|
28
|
+
const pages = await client.pages.list();
|
|
29
|
+
const page = await client.pages.getBySlug("pricing");
|
|
46
30
|
|
|
47
31
|
console.log(pages.meta.total_items);
|
|
48
|
-
console.log(
|
|
32
|
+
console.log(page.id);
|
|
49
33
|
```
|
|
50
34
|
|
|
51
|
-
##
|
|
35
|
+
## Table of Contents
|
|
36
|
+
|
|
37
|
+
- [Requirements](#requirements)
|
|
38
|
+
- [Features](#features)
|
|
39
|
+
- [Creating a Client Instance](#creating-a-client-instance)
|
|
40
|
+
- [Configuration](#configuration)
|
|
41
|
+
- [Per-request Options](#per-request-options)
|
|
42
|
+
- [Error Handling](#error-handling)
|
|
43
|
+
- [Rate Limiting](#rate-limiting)
|
|
44
|
+
- [Return Shapes](#return-shapes)
|
|
45
|
+
- [API](#api)
|
|
46
|
+
- [End-to-end Examples](#end-to-end-examples)
|
|
47
|
+
- [Exported Types](#exported-types)
|
|
48
|
+
- [Testing](#testing)
|
|
49
|
+
- [License](#license)
|
|
52
50
|
|
|
53
|
-
|
|
54
|
-
- If you pass `baseUrl: "https://api.paragraphcms.com"`, the client automatically normalizes it to `https://api.paragraphcms.com/v1`.
|
|
55
|
-
- The client uses `x-api-key` authentication by default.
|
|
56
|
-
- Field names in request and response payloads intentionally mirror the HTTP API. That means body/query keys stay in `snake_case`.
|
|
51
|
+
## Requirements
|
|
57
52
|
|
|
58
|
-
|
|
53
|
+
- Node.js `18+` for direct Node.js usage.
|
|
54
|
+
- A runtime with standard Fetch API primitives for edge and serverless usage.
|
|
55
|
+
- ESM support. The package is published as an ES module.
|
|
59
56
|
|
|
60
|
-
|
|
57
|
+
## Features
|
|
61
58
|
|
|
62
|
-
|
|
59
|
+
- Full coverage for the current Paragraph CMS v1 API surface.
|
|
60
|
+
- `new Client({ apiKey })` entrypoint with a compact, typed SDK.
|
|
61
|
+
- Built-in request queue that rate-limits each client instance to `5 req/s` by default.
|
|
62
|
+
- Automatic retries for `429 Too Many Requests` responses using `Retry-After` when available.
|
|
63
|
+
- Runtime-agnostic implementation with no runtime dependencies.
|
|
64
|
+
- First-class TypeScript types for payloads, list metadata, domain models, and API errors.
|
|
65
|
+
- Request cancellation with `AbortSignal`.
|
|
66
|
+
|
|
67
|
+
## Creating a Client Instance
|
|
68
|
+
|
|
69
|
+
`const client = new Client(options)`
|
|
70
|
+
|
|
71
|
+
Initialize the client with your Paragraph API key and optional runtime settings:
|
|
72
|
+
|
|
73
|
+
```ts
|
|
74
|
+
import { Client, type ClientOptions } from "@paragraphcms/client";
|
|
75
|
+
|
|
76
|
+
const config: ClientOptions = {
|
|
77
|
+
apiKey: process.env.PARAGRAPH_API_KEY!,
|
|
78
|
+
timeoutMs: 10_000,
|
|
79
|
+
};
|
|
63
80
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
- The safest pattern is to reuse one shared `Client` instance per process or isolate when possible.
|
|
81
|
+
export const client = new Client(config);
|
|
82
|
+
```
|
|
67
83
|
|
|
68
|
-
|
|
84
|
+
To target a local or staging API, pass `baseUrl` explicitly:
|
|
69
85
|
|
|
70
86
|
```ts
|
|
71
87
|
const client = new Client({
|
|
72
88
|
apiKey: process.env.PARAGRAPH_API_KEY!,
|
|
73
|
-
|
|
89
|
+
baseUrl: "http://localhost:3001",
|
|
74
90
|
});
|
|
75
91
|
```
|
|
76
92
|
|
|
93
|
+
Important runtime notes:
|
|
94
|
+
|
|
95
|
+
- The default API base URL is `https://api.paragraphcms.com/v1`.
|
|
96
|
+
- If you pass `baseUrl: "https://api.paragraphcms.com"` or another origin without `/v1`, the client normalizes it to the `/v1` API root automatically.
|
|
97
|
+
- The client authenticates requests with the `x-api-key` header.
|
|
98
|
+
- Request and response field names intentionally mirror the HTTP API, so payload keys remain in `snake_case`.
|
|
99
|
+
|
|
77
100
|
## Configuration
|
|
78
101
|
|
|
79
102
|
```ts
|
|
@@ -95,7 +118,7 @@ Required. Paragraph CMS organization API key.
|
|
|
95
118
|
|
|
96
119
|
Optional. Defaults to `https://api.paragraphcms.com/v1`.
|
|
97
120
|
|
|
98
|
-
|
|
121
|
+
Accepted examples:
|
|
99
122
|
|
|
100
123
|
- `https://api.paragraphcms.com/v1`
|
|
101
124
|
- `https://api.paragraphcms.com`
|
|
@@ -107,29 +130,34 @@ Optional custom fetch implementation. Useful in tests or custom runtimes.
|
|
|
107
130
|
|
|
108
131
|
### `headers`
|
|
109
132
|
|
|
110
|
-
Optional default headers
|
|
133
|
+
Optional default headers merged into every request.
|
|
111
134
|
|
|
112
135
|
### `timeoutMs`
|
|
113
136
|
|
|
114
|
-
Optional default request timeout in milliseconds. Per-
|
|
137
|
+
Optional default request timeout in milliseconds. Per-request options can override it.
|
|
115
138
|
|
|
116
139
|
### `maxRequestsPerSecond`
|
|
117
140
|
|
|
118
141
|
Optional per-client limiter ceiling. Defaults to `5`.
|
|
119
142
|
|
|
120
|
-
|
|
143
|
+
### `maxRateLimitRetries`
|
|
144
|
+
|
|
145
|
+
Optional maximum number of automatic retries after a `429 Too Many Requests` response. Defaults to `2`. Set to `0` to disable retries.
|
|
121
146
|
|
|
122
|
-
|
|
147
|
+
## Per-request Options
|
|
148
|
+
|
|
149
|
+
Every SDK method accepts an optional final `RequestOptions` argument:
|
|
123
150
|
|
|
124
151
|
```ts
|
|
125
152
|
type RequestOptions = {
|
|
126
153
|
signal?: AbortSignal;
|
|
127
154
|
headers?: HeadersInit;
|
|
128
155
|
timeoutMs?: number;
|
|
156
|
+
maxRateLimitRetries?: number;
|
|
129
157
|
};
|
|
130
158
|
```
|
|
131
159
|
|
|
132
|
-
|
|
160
|
+
For methods that also accept a body or query object, pass request options as the last argument:
|
|
133
161
|
|
|
134
162
|
```ts
|
|
135
163
|
const controller = new AbortController();
|
|
@@ -142,10 +170,14 @@ const page = await client.pages.get("page-id", undefined, {
|
|
|
142
170
|
|
|
143
171
|
## Error Handling
|
|
144
172
|
|
|
145
|
-
The client throws `ParagraphApiError` for non-2xx API responses and `ParagraphClientError` for local runtime
|
|
173
|
+
The client throws `ParagraphApiError` for non-2xx API responses and `ParagraphClientError` for local runtime, timeout, or configuration problems.
|
|
146
174
|
|
|
147
175
|
```ts
|
|
148
|
-
import {
|
|
176
|
+
import {
|
|
177
|
+
Client,
|
|
178
|
+
ParagraphApiError,
|
|
179
|
+
ParagraphClientError,
|
|
180
|
+
} from "@paragraphcms/client";
|
|
149
181
|
|
|
150
182
|
const client = new Client({
|
|
151
183
|
apiKey: process.env.PARAGRAPH_API_KEY!,
|
|
@@ -160,21 +192,48 @@ try {
|
|
|
160
192
|
console.error(error.message);
|
|
161
193
|
console.error(error.details);
|
|
162
194
|
}
|
|
195
|
+
|
|
196
|
+
if (error instanceof ParagraphClientError) {
|
|
197
|
+
console.error(error.message);
|
|
198
|
+
}
|
|
163
199
|
}
|
|
164
200
|
```
|
|
165
201
|
|
|
202
|
+
## Rate Limiting
|
|
203
|
+
|
|
204
|
+
Paragraph CMS v1 is rate-limited to `5 req/s`. Each `Client` instance includes an internal queue that spaces request starts so the instance stays within that budget by default.
|
|
205
|
+
|
|
206
|
+
Important details:
|
|
207
|
+
|
|
208
|
+
- The limiter is per client instance, not global across containers, lambdas, or workers.
|
|
209
|
+
- If your application creates many `Client` instances, each instance keeps its own queue.
|
|
210
|
+
- The safest production pattern is to reuse one shared `Client` instance per process or isolate when possible.
|
|
211
|
+
- If the API still returns `429 Too Many Requests`, the client retries automatically up to `maxRateLimitRetries` times and honors the `Retry-After` header when it is present.
|
|
212
|
+
- Request timeouts include retry wait time and all retry attempts, not just the first fetch.
|
|
213
|
+
|
|
214
|
+
You can lower the per-instance ceiling if needed:
|
|
215
|
+
|
|
216
|
+
```ts
|
|
217
|
+
const client = new Client({
|
|
218
|
+
apiKey: process.env.PARAGRAPH_API_KEY!,
|
|
219
|
+
maxRequestsPerSecond: 3,
|
|
220
|
+
});
|
|
221
|
+
```
|
|
222
|
+
|
|
166
223
|
## Return Shapes
|
|
167
224
|
|
|
168
225
|
- Single-resource endpoints return the unwrapped `data` payload.
|
|
169
226
|
- Paginated endpoints return `{ data, meta }`.
|
|
170
|
-
- `locales.list()` returns a plain `Locale[]` because the API endpoint
|
|
227
|
+
- `locales.list()` returns a plain `Locale[]` because the underlying API endpoint is not paginated.
|
|
228
|
+
|
|
229
|
+
## API
|
|
171
230
|
|
|
172
|
-
|
|
231
|
+
The SDK closely mirrors the Paragraph CMS HTTP API. Resource names stay familiar and request/response bodies are intentionally left in `snake_case` to match the wire format.
|
|
173
232
|
|
|
174
233
|
### Root
|
|
175
234
|
|
|
176
235
|
```ts
|
|
177
|
-
client.getInfo()
|
|
236
|
+
client.getInfo(options?)
|
|
178
237
|
```
|
|
179
238
|
|
|
180
239
|
Returns the public `/v1` info payload:
|
|
@@ -188,12 +247,14 @@ Returns the public `/v1` info payload:
|
|
|
188
247
|
supported_headers: ["x-api-key", "authorization"],
|
|
189
248
|
authorization_format: "Bearer <api-key>",
|
|
190
249
|
},
|
|
191
|
-
resources: [...]
|
|
250
|
+
resources: [...],
|
|
192
251
|
}
|
|
193
252
|
```
|
|
194
253
|
|
|
195
254
|
### Pages
|
|
196
255
|
|
|
256
|
+
Page listing, detail, mutation, duplication, restore, and translation helpers:
|
|
257
|
+
|
|
197
258
|
```ts
|
|
198
259
|
client.pages.list(query?, options?)
|
|
199
260
|
client.pages.create(body?, options?)
|
|
@@ -205,6 +266,7 @@ client.pages.restore(pageId, options?)
|
|
|
205
266
|
client.pages.permanentlyDelete(pageId, options?)
|
|
206
267
|
client.pages.duplicate(pageId, options?)
|
|
207
268
|
client.pages.createTranslation(pageId, body, options?)
|
|
269
|
+
client.page.get(pageId, query?, options?)
|
|
208
270
|
client.page.getBySlug(slug, options?)
|
|
209
271
|
```
|
|
210
272
|
|
|
@@ -219,10 +281,12 @@ Supported `sort` fields for `pages.list()`:
|
|
|
219
281
|
Notes:
|
|
220
282
|
|
|
221
283
|
- If you omit both `limit` and `page`, `pages.list()` returns the full matching result set.
|
|
284
|
+
- `collection` is a convenience alias for `collection_id` in `pages.list()` queries.
|
|
222
285
|
- `label_id` is passed as `string[]` in the SDK and serialized to the API CSV format automatically.
|
|
223
|
-
- `
|
|
286
|
+
- `pages.list()` sends `include_content: false` by default. Set `include_content: true` to include `content` in list responses.
|
|
224
287
|
- Page responses should be treated as Tiptap JSON arrays. `content_format` is no longer required in the response shape.
|
|
225
|
-
- `
|
|
288
|
+
- `page.get()` is a short alias for `pages.get()`.
|
|
289
|
+
- `pages.getBySlug()` is an SDK convenience lookup built on top of `pages.list({ slug })`, then fetches the full page details by ID.
|
|
226
290
|
- `page.getBySlug()` is a short alias for the same lookup.
|
|
227
291
|
|
|
228
292
|
### Collections
|
|
@@ -263,7 +327,7 @@ Supported `sort` fields for `media.list()`:
|
|
|
263
327
|
- `File`
|
|
264
328
|
- `Blob`
|
|
265
329
|
- `ArrayBuffer`
|
|
266
|
-
- Typed arrays
|
|
330
|
+
- Typed arrays such as `Uint8Array`
|
|
267
331
|
- Node.js `Buffer`
|
|
268
332
|
|
|
269
333
|
Example:
|
|
@@ -310,8 +374,8 @@ Supported `sort` fields:
|
|
|
310
374
|
|
|
311
375
|
Notes:
|
|
312
376
|
|
|
313
|
-
- `members.get()`, `authors.get()`, and `reviewers.get()` are SDK convenience lookups built on top of
|
|
314
|
-
- `authors` and `reviewers` are aliases of
|
|
377
|
+
- `members.get()`, `authors.get()`, and `reviewers.get()` are SDK convenience lookups built on top of paginated list endpoints because the HTTP API does not expose `/members/{id}`, `/authors/{id}`, or `/reviewers/{id}` detail endpoints.
|
|
378
|
+
- `authors` and `reviewers` are aliases of member listing endpoints exposed by the API.
|
|
315
379
|
|
|
316
380
|
### Statuses
|
|
317
381
|
|
|
@@ -383,9 +447,9 @@ client.ai.generateMetaDescription(body, options?)
|
|
|
383
447
|
client.ai.generateContent(body, options?)
|
|
384
448
|
```
|
|
385
449
|
|
|
386
|
-
## End-to-
|
|
450
|
+
## End-to-end Examples
|
|
387
451
|
|
|
388
|
-
### Create a
|
|
452
|
+
### Create a Page and Upload Its Hero Image
|
|
389
453
|
|
|
390
454
|
```ts
|
|
391
455
|
const pageResult = await client.pages.create({
|
|
@@ -408,7 +472,7 @@ await client.media.upload({
|
|
|
408
472
|
});
|
|
409
473
|
```
|
|
410
474
|
|
|
411
|
-
### Create a
|
|
475
|
+
### Create a Translated Page Variant
|
|
412
476
|
|
|
413
477
|
```ts
|
|
414
478
|
await client.pages.createTranslation("page-id", {
|
|
@@ -418,7 +482,7 @@ await client.pages.createTranslation("page-id", {
|
|
|
418
482
|
});
|
|
419
483
|
```
|
|
420
484
|
|
|
421
|
-
### Generate SEO
|
|
485
|
+
### Generate SEO Fields with AI
|
|
422
486
|
|
|
423
487
|
```ts
|
|
424
488
|
const generatedMeta = await client.ai.generateMetaDescription({
|
|
@@ -432,7 +496,7 @@ console.log(generatedMeta.meta_description);
|
|
|
432
496
|
|
|
433
497
|
## Exported Types
|
|
434
498
|
|
|
435
|
-
The package exports
|
|
499
|
+
The package exports `Client`, `ParagraphApiError`, `ParagraphClientError`, and the main request, response, and domain types used by the SDK, including:
|
|
436
500
|
|
|
437
501
|
- `ClientOptions`
|
|
438
502
|
- `RequestOptions`
|
|
@@ -470,17 +534,12 @@ npm run test:integration
|
|
|
470
534
|
|
|
471
535
|
Environment variables for integration tests:
|
|
472
536
|
|
|
473
|
-
- `PARAGRAPH_API_KEY` required to run live API tests.
|
|
474
|
-
- `PARAGRAPH_API_BASE_URL`
|
|
475
|
-
- `PARAGRAPH_AI_MODEL`
|
|
537
|
+
- `PARAGRAPH_API_KEY` is required to run live API tests.
|
|
538
|
+
- `PARAGRAPH_API_BASE_URL` optionally overrides the API target for local or staging environments.
|
|
539
|
+
- `PARAGRAPH_AI_MODEL` optionally sets the model used by AI endpoint tests. If omitted, AI integration tests are skipped.
|
|
476
540
|
|
|
477
541
|
The integration suite is self-contained and generates its own resources, so it does not rely on any existing content in the target organization.
|
|
478
542
|
|
|
479
|
-
## Requirements
|
|
480
|
-
|
|
481
|
-
- Node.js `18+` for direct Node usage.
|
|
482
|
-
- A runtime with standard Fetch API primitives for edge/serverless usage.
|
|
483
|
-
|
|
484
543
|
## License
|
|
485
544
|
|
|
486
545
|
ISC
|
package/dist/client.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export declare class Client {
|
|
|
5
5
|
private readonly fetchImpl;
|
|
6
6
|
private readonly defaultHeaders;
|
|
7
7
|
private readonly timeoutMs?;
|
|
8
|
+
private readonly maxRateLimitRetries;
|
|
8
9
|
private readonly limiter;
|
|
9
10
|
readonly pages: {
|
|
10
11
|
list: (query?: PageListQuery, options?: RequestOptions) => Promise<ListResponse<PageSummary>>;
|
|
@@ -19,6 +20,7 @@ export declare class Client {
|
|
|
19
20
|
createTranslation: (pageId: string, body: CreatePageTranslationRequest, options?: RequestOptions) => Promise<PageMutationResult>;
|
|
20
21
|
};
|
|
21
22
|
readonly page: {
|
|
23
|
+
get: (pageId: string, query?: GetPageQuery, options?: RequestOptions) => Promise<Page>;
|
|
22
24
|
getBySlug: (slug: string, options?: RequestOptions) => Promise<Page>;
|
|
23
25
|
};
|
|
24
26
|
readonly collections: {
|
|
@@ -84,6 +86,7 @@ export declare class Client {
|
|
|
84
86
|
constructor(options: ClientOptions);
|
|
85
87
|
getInfo(options?: RequestOptions): Promise<ApiInfo>;
|
|
86
88
|
private listPages;
|
|
89
|
+
private createPageListQuery;
|
|
87
90
|
private requestData;
|
|
88
91
|
private requestList;
|
|
89
92
|
private getPageBySlug;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,eAAe,EACf,uBAAuB,EACvB,gBAAgB,EAEhB,OAAO,EACP,aAAa,EACb,UAAU,EACV,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,4BAA4B,EAC5B,mBAAmB,EACnB,SAAS,EACT,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EAClB,YAAY,EACZ,sBAAsB,EACtB,mBAAmB,EACnB,YAAY,EACZ,KAAK,EACL,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,MAAM,EACN,oBAAoB,EACpB,KAAK,EACL,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,MAAM,EACN,eAAe,EACf,IAAI,EACJ,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,aAAa,EACb,sBAAsB,EAEtB,cAAc,EACd,MAAM,EACN,eAAe,EACf,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -2,6 +2,8 @@ import { ParagraphApiError, ParagraphClientError, } from "./errors.js";
|
|
|
2
2
|
import { RequestRateLimiter } from "./rate-limiter.js";
|
|
3
3
|
const DEFAULT_BASE_URL = "https://api.paragraphcms.com/v1";
|
|
4
4
|
const DEFAULT_REQUESTS_PER_SECOND = 5;
|
|
5
|
+
const DEFAULT_RATE_LIMIT_RETRIES = 2;
|
|
6
|
+
const DEFAULT_RATE_LIMIT_RETRY_DELAY_MS = 1000;
|
|
5
7
|
const LOOKUP_PAGE_SIZE = 100;
|
|
6
8
|
function resolveFetchImplementation(customFetch) {
|
|
7
9
|
const fetchImpl = customFetch ?? globalThis.fetch;
|
|
@@ -123,9 +125,67 @@ function createRequestSignal(signal, timeoutMs) {
|
|
|
123
125
|
didTimeout: () => timedOut,
|
|
124
126
|
};
|
|
125
127
|
}
|
|
128
|
+
function waitForDelay(delayMs, signal) {
|
|
129
|
+
if (delayMs <= 0) {
|
|
130
|
+
return Promise.resolve();
|
|
131
|
+
}
|
|
132
|
+
return new Promise((resolve, reject) => {
|
|
133
|
+
let timeoutId;
|
|
134
|
+
const cleanup = () => {
|
|
135
|
+
if (timeoutId !== undefined) {
|
|
136
|
+
clearTimeout(timeoutId);
|
|
137
|
+
}
|
|
138
|
+
if (signal) {
|
|
139
|
+
signal.removeEventListener("abort", onAbort);
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
const onAbort = () => {
|
|
143
|
+
cleanup();
|
|
144
|
+
reject(signal?.reason ??
|
|
145
|
+
new DOMException("The operation was aborted.", "AbortError"));
|
|
146
|
+
};
|
|
147
|
+
if (signal) {
|
|
148
|
+
if (signal.aborted) {
|
|
149
|
+
onAbort();
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
153
|
+
}
|
|
154
|
+
timeoutId = setTimeout(() => {
|
|
155
|
+
cleanup();
|
|
156
|
+
resolve();
|
|
157
|
+
}, delayMs);
|
|
158
|
+
});
|
|
159
|
+
}
|
|
126
160
|
function isAbortError(error) {
|
|
127
161
|
return (error instanceof DOMException && error.name === "AbortError");
|
|
128
162
|
}
|
|
163
|
+
function resolveMaxRateLimitRetries(value, fallback = DEFAULT_RATE_LIMIT_RETRIES) {
|
|
164
|
+
const resolved = value ?? fallback;
|
|
165
|
+
if (!Number.isInteger(resolved) ||
|
|
166
|
+
resolved < 0) {
|
|
167
|
+
throw new ParagraphClientError("`maxRateLimitRetries` must be a non-negative integer.");
|
|
168
|
+
}
|
|
169
|
+
return resolved;
|
|
170
|
+
}
|
|
171
|
+
function parseRetryAfterMs(headerValue) {
|
|
172
|
+
if (!headerValue) {
|
|
173
|
+
return undefined;
|
|
174
|
+
}
|
|
175
|
+
const seconds = Number(headerValue);
|
|
176
|
+
if (Number.isFinite(seconds) && seconds >= 0) {
|
|
177
|
+
return Math.ceil(seconds * 1000);
|
|
178
|
+
}
|
|
179
|
+
const retryAt = Date.parse(headerValue);
|
|
180
|
+
if (Number.isNaN(retryAt)) {
|
|
181
|
+
return undefined;
|
|
182
|
+
}
|
|
183
|
+
return Math.max(0, retryAt - Date.now());
|
|
184
|
+
}
|
|
185
|
+
function resolveRateLimitRetryDelayMs(headers, retryCount) {
|
|
186
|
+
return (parseRetryAfterMs(headers.get("retry-after")) ??
|
|
187
|
+
DEFAULT_RATE_LIMIT_RETRY_DELAY_MS * 2 ** retryCount);
|
|
188
|
+
}
|
|
129
189
|
function toBlobPart(file) {
|
|
130
190
|
if (typeof File !== "undefined" && file instanceof File) {
|
|
131
191
|
return {
|
|
@@ -217,6 +277,7 @@ export class Client {
|
|
|
217
277
|
fetchImpl;
|
|
218
278
|
defaultHeaders;
|
|
219
279
|
timeoutMs;
|
|
280
|
+
maxRateLimitRetries;
|
|
220
281
|
limiter;
|
|
221
282
|
pages = {
|
|
222
283
|
list: (query, options) => this.listPages(query, options),
|
|
@@ -251,6 +312,7 @@ export class Client {
|
|
|
251
312
|
}),
|
|
252
313
|
};
|
|
253
314
|
page = {
|
|
315
|
+
get: (pageId, query, options) => this.pages.get(pageId, query, options),
|
|
254
316
|
getBySlug: (slug, options) => this.pages.getBySlug(slug, options),
|
|
255
317
|
};
|
|
256
318
|
collections = {
|
|
@@ -434,18 +496,20 @@ export class Client {
|
|
|
434
496
|
this.fetchImpl = resolveFetchImplementation(options.fetch);
|
|
435
497
|
this.defaultHeaders = new Headers(options.headers);
|
|
436
498
|
this.timeoutMs = options.timeoutMs;
|
|
499
|
+
this.maxRateLimitRetries = resolveMaxRateLimitRetries(options.maxRateLimitRetries);
|
|
437
500
|
this.limiter = new RequestRateLimiter(options.maxRequestsPerSecond ?? DEFAULT_REQUESTS_PER_SECOND);
|
|
438
501
|
}
|
|
439
502
|
getInfo(options) {
|
|
440
503
|
return this.requestData("GET", "", { options });
|
|
441
504
|
}
|
|
442
505
|
async listPages(query, options) {
|
|
506
|
+
const pageListQuery = this.createPageListQuery(query);
|
|
443
507
|
const response = await this.requestList("GET", "/pages", {
|
|
444
|
-
query,
|
|
508
|
+
query: pageListQuery,
|
|
445
509
|
options,
|
|
446
510
|
});
|
|
447
|
-
if (
|
|
448
|
-
|
|
511
|
+
if (pageListQuery.limit !== undefined ||
|
|
512
|
+
pageListQuery.page !== undefined ||
|
|
449
513
|
!response.meta.has_next_page) {
|
|
450
514
|
return response;
|
|
451
515
|
}
|
|
@@ -455,7 +519,7 @@ export class Client {
|
|
|
455
519
|
while (lastMeta.has_next_page) {
|
|
456
520
|
const nextResponse = await this.requestList("GET", "/pages", {
|
|
457
521
|
query: {
|
|
458
|
-
...
|
|
522
|
+
...pageListQuery,
|
|
459
523
|
page: nextPage,
|
|
460
524
|
limit: lastMeta.limit,
|
|
461
525
|
},
|
|
@@ -477,6 +541,20 @@ export class Client {
|
|
|
477
541
|
},
|
|
478
542
|
};
|
|
479
543
|
}
|
|
544
|
+
createPageListQuery(query) {
|
|
545
|
+
const collection = query?.collection_id ?? query?.collection;
|
|
546
|
+
if (query?.collection !== undefined &&
|
|
547
|
+
query?.collection_id !== undefined &&
|
|
548
|
+
query.collection !== query.collection_id) {
|
|
549
|
+
throw new ParagraphClientError("`collection` and `collection_id` must match when both are provided.");
|
|
550
|
+
}
|
|
551
|
+
return {
|
|
552
|
+
...(query ?? {}),
|
|
553
|
+
collection: undefined,
|
|
554
|
+
collection_id: collection,
|
|
555
|
+
include_content: query?.include_content ?? false,
|
|
556
|
+
};
|
|
557
|
+
}
|
|
480
558
|
requestData(method, path, config) {
|
|
481
559
|
return this.requestJson(method, path, config).then((response) => response.data);
|
|
482
560
|
}
|
|
@@ -484,13 +562,12 @@ export class Client {
|
|
|
484
562
|
return this.requestJson(method, path, config);
|
|
485
563
|
}
|
|
486
564
|
async getPageBySlug(slug, options) {
|
|
565
|
+
const query = this.createPageListQuery({ slug });
|
|
487
566
|
const page = await this.findListItem("/pages", (item) => item.slug === slug, options, {
|
|
488
567
|
code: "page_not_found",
|
|
489
568
|
message: "Page not found.",
|
|
490
569
|
details: { slug },
|
|
491
|
-
},
|
|
492
|
-
slug,
|
|
493
|
-
});
|
|
570
|
+
}, query);
|
|
494
571
|
return this.pages.get(page.id, undefined, options);
|
|
495
572
|
}
|
|
496
573
|
async findListItem(path, predicate, options, error, query) {
|
|
@@ -550,65 +627,79 @@ export class Client {
|
|
|
550
627
|
requestJson(method, path, config) {
|
|
551
628
|
const url = buildUrl(this.baseUrl, path, config?.query);
|
|
552
629
|
const request = createRequestDescriptor(method, url);
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
}
|
|
570
|
-
body = JSON.stringify(config.body);
|
|
571
|
-
}
|
|
572
|
-
const optionHeaders = new Headers(config?.options?.headers);
|
|
573
|
-
for (const [key, value] of optionHeaders.entries()) {
|
|
574
|
-
headers.set(key, value);
|
|
575
|
-
}
|
|
576
|
-
if (config?.formData) {
|
|
577
|
-
headers.delete("content-type");
|
|
630
|
+
const headers = new Headers(this.defaultHeaders);
|
|
631
|
+
const timeoutMs = config?.options?.timeoutMs ?? this.timeoutMs;
|
|
632
|
+
const maxRateLimitRetries = resolveMaxRateLimitRetries(config?.options?.maxRateLimitRetries, this.maxRateLimitRetries);
|
|
633
|
+
headers.set("accept", "application/json");
|
|
634
|
+
if (!headers.has("x-api-key") &&
|
|
635
|
+
!headers.has("authorization")) {
|
|
636
|
+
headers.set("x-api-key", this.apiKey);
|
|
637
|
+
}
|
|
638
|
+
let body;
|
|
639
|
+
if (config?.formData) {
|
|
640
|
+
headers.delete("content-type");
|
|
641
|
+
body = config.formData;
|
|
642
|
+
}
|
|
643
|
+
else if (config?.body !== undefined) {
|
|
644
|
+
if (!headers.has("content-type")) {
|
|
645
|
+
headers.set("content-type", "application/json");
|
|
578
646
|
}
|
|
579
|
-
|
|
647
|
+
body = JSON.stringify(config.body);
|
|
648
|
+
}
|
|
649
|
+
const optionHeaders = new Headers(config?.options?.headers);
|
|
650
|
+
for (const [key, value] of optionHeaders.entries()) {
|
|
651
|
+
headers.set(key, value);
|
|
652
|
+
}
|
|
653
|
+
if (config?.formData) {
|
|
654
|
+
headers.delete("content-type");
|
|
655
|
+
}
|
|
656
|
+
const requestSignal = createRequestSignal(config?.options?.signal, timeoutMs);
|
|
657
|
+
return (async () => {
|
|
658
|
+
let retryCount = 0;
|
|
580
659
|
try {
|
|
581
660
|
const fetchImpl = this.fetchImpl;
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
if (
|
|
591
|
-
|
|
661
|
+
while (true) {
|
|
662
|
+
const response = await this.limiter.schedule(() => fetchImpl(url, {
|
|
663
|
+
method,
|
|
664
|
+
headers,
|
|
665
|
+
body,
|
|
666
|
+
signal: requestSignal.signal,
|
|
667
|
+
}));
|
|
668
|
+
const payload = await parseResponse(response);
|
|
669
|
+
if (response.ok) {
|
|
670
|
+
return payload;
|
|
671
|
+
}
|
|
672
|
+
const responseHeaders = new Headers(response.headers);
|
|
673
|
+
const apiError = isApiErrorPayload(payload)
|
|
674
|
+
? new ParagraphApiError({
|
|
592
675
|
status: response.status,
|
|
593
676
|
code: payload.error.code,
|
|
594
677
|
message: payload.error.message,
|
|
595
678
|
details: payload.error.details,
|
|
596
|
-
headers:
|
|
679
|
+
headers: responseHeaders,
|
|
597
680
|
request,
|
|
598
681
|
body: payload,
|
|
682
|
+
})
|
|
683
|
+
: new ParagraphApiError({
|
|
684
|
+
status: response.status,
|
|
685
|
+
code: response.status === 401
|
|
686
|
+
? "unauthorized"
|
|
687
|
+
: "request_failed",
|
|
688
|
+
message: typeof payload === "string" && payload.length > 0
|
|
689
|
+
? payload
|
|
690
|
+
: response.statusText || "Request failed.",
|
|
691
|
+
headers: responseHeaders,
|
|
692
|
+
request,
|
|
599
693
|
});
|
|
694
|
+
if (response.status === 429 &&
|
|
695
|
+
retryCount < maxRateLimitRetries) {
|
|
696
|
+
const retryDelayMs = resolveRateLimitRetryDelayMs(responseHeaders, retryCount);
|
|
697
|
+
retryCount += 1;
|
|
698
|
+
await waitForDelay(retryDelayMs, requestSignal.signal);
|
|
699
|
+
continue;
|
|
600
700
|
}
|
|
601
|
-
throw
|
|
602
|
-
status: response.status,
|
|
603
|
-
code: response.status === 401 ? "unauthorized" : "request_failed",
|
|
604
|
-
message: typeof payload === "string" && payload.length > 0
|
|
605
|
-
? payload
|
|
606
|
-
: response.statusText || "Request failed.",
|
|
607
|
-
headers: new Headers(response.headers),
|
|
608
|
-
request,
|
|
609
|
-
});
|
|
701
|
+
throw apiError;
|
|
610
702
|
}
|
|
611
|
-
return payload;
|
|
612
703
|
}
|
|
613
704
|
catch (error) {
|
|
614
705
|
if (error instanceof ParagraphApiError ||
|
|
@@ -621,7 +712,8 @@ export class Client {
|
|
|
621
712
|
cause: error,
|
|
622
713
|
});
|
|
623
714
|
}
|
|
624
|
-
if (isAbortError(error)
|
|
715
|
+
if (isAbortError(error) ||
|
|
716
|
+
config?.options?.signal?.aborted) {
|
|
625
717
|
throw error;
|
|
626
718
|
}
|
|
627
719
|
throw new ParagraphClientError("Request failed.", {
|
|
@@ -632,6 +724,6 @@ export class Client {
|
|
|
632
724
|
finally {
|
|
633
725
|
requestSignal.cleanup();
|
|
634
726
|
}
|
|
635
|
-
});
|
|
727
|
+
})();
|
|
636
728
|
}
|
|
637
729
|
}
|
package/dist/types.d.ts
CHANGED
|
@@ -45,6 +45,7 @@ export interface RequestOptions {
|
|
|
45
45
|
signal?: AbortSignal;
|
|
46
46
|
headers?: HeadersInit;
|
|
47
47
|
timeoutMs?: number;
|
|
48
|
+
maxRateLimitRetries?: number;
|
|
48
49
|
}
|
|
49
50
|
export interface ClientOptions {
|
|
50
51
|
apiKey: string;
|
|
@@ -53,6 +54,7 @@ export interface ClientOptions {
|
|
|
53
54
|
headers?: HeadersInit;
|
|
54
55
|
timeoutMs?: number;
|
|
55
56
|
maxRequestsPerSecond?: number;
|
|
57
|
+
maxRateLimitRetries?: number;
|
|
56
58
|
}
|
|
57
59
|
export interface ListQuery {
|
|
58
60
|
limit?: number;
|
|
@@ -276,6 +278,7 @@ export interface ReorderResult {
|
|
|
276
278
|
}
|
|
277
279
|
export interface PageListQuery extends ListQuery {
|
|
278
280
|
include_content?: boolean;
|
|
281
|
+
collection?: string;
|
|
279
282
|
deleted?: DeletedFilter;
|
|
280
283
|
collection_id?: string;
|
|
281
284
|
without_collection?: boolean;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|