@openzeppelin/guardian-client 0.16.1 → 0.16.2

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 CHANGED
@@ -206,6 +206,42 @@ try {
206
206
  }
207
207
  ```
208
208
 
209
+ ### Rate limits and retries
210
+
211
+ The server rate-limits both its HTTP and gRPC surfaces. The sustained
212
+ per-minute limit is keyed per IP alone, so HTTP and gRPC calls from one
213
+ client draw on the same allowance; the burst limit is keyed per IP and
214
+ endpoint. An over-budget request fails with HTTP 429, code
215
+ `rate_limit_exceeded`, and a backoff hint. `GuardianHttpError` classifies
216
+ it: `isRetryable()` reads the error envelope (falling back to the status
217
+ class), and `retryAfterSecs()` returns the server's hint, preferring the
218
+ `Retry-After` header over the envelope value.
219
+
220
+ Rate-limit rejections happen before the server touches any state, so
221
+ retrying them is always safe. The client does not retry automatically
222
+ (automatic backoff is tracked in
223
+ [#360](https://github.com/OpenZeppelin/guardian/issues/360)); a bounded
224
+ loop over the exposed hint is a few lines:
225
+
226
+ ```typescript
227
+ async function getStateWithRetry(accountId: string, maxAttempts = 3) {
228
+ for (let attempt = 0; ; attempt++) {
229
+ try {
230
+ return await client.getState(accountId);
231
+ } catch (error) {
232
+ if (
233
+ !(error instanceof GuardianHttpError) ||
234
+ !error.isRetryable() ||
235
+ attempt >= maxAttempts
236
+ ) {
237
+ throw error;
238
+ }
239
+ await new Promise((r) => setTimeout(r, (error.retryAfterSecs() ?? 1) * 1000));
240
+ }
241
+ }
242
+ }
243
+ ```
244
+
209
245
  ## Testing
210
246
 
211
247
  ```bash
package/dist/http.d.ts CHANGED
@@ -50,7 +50,21 @@ export declare class GuardianHttpError extends Error {
50
50
  * terminal on this server until re-onboarded via `configure`.
51
51
  */
52
52
  readonly releasedAt: string | null;
53
- constructor(status: number, statusText: string, body: string);
53
+ private readonly headerRetryAfterSecs?;
54
+ constructor(status: number, statusText: string, body: string, retryAfterHeader?: string | null);
55
+ /**
56
+ * Whether the server marked this error safe to retry: `meta.retryable`
57
+ * from the envelope, falling back to the status class (429 rejections
58
+ * happen before any handler runs). Mirrors the Rust client's
59
+ * `ClientError::is_retryable`.
60
+ */
61
+ isRetryable(): boolean;
62
+ /**
63
+ * Server-provided backoff hint in seconds: the `Retry-After` header,
64
+ * falling back to `meta.retryAfterSecs`. Unparseable values mean no
65
+ * hint. Mirrors the Rust client's `ClientError::retry_after`.
66
+ */
67
+ retryAfterSecs(): number | undefined;
54
68
  }
55
69
  /**
56
70
  * Minimal HTTP client for GUARDIAN server.
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
package/dist/http.js CHANGED
@@ -85,7 +85,8 @@ export class GuardianHttpError extends Error {
85
85
  * terminal on this server until re-onboarded via `configure`.
86
86
  */
87
87
  releasedAt;
88
- constructor(status, statusText, body) {
88
+ headerRetryAfterSecs;
89
+ constructor(status, statusText, body, retryAfterHeader) {
89
90
  // Only the parsed, user-safe message is folded into Error.message; the
90
91
  // raw body (which may carry backend/proxy internals) stays on the `body`
91
92
  // field for diagnostics only.
@@ -100,7 +101,36 @@ export class GuardianHttpError extends Error {
100
101
  this.userMessage = parsed?.message;
101
102
  this.meta = parsed?.meta;
102
103
  this.releasedAt = parsed?.meta.releasedAt ?? null;
104
+ this.headerRetryAfterSecs = parseRetryAfterSeconds(retryAfterHeader);
103
105
  }
106
+ /**
107
+ * Whether the server marked this error safe to retry: `meta.retryable`
108
+ * from the envelope, falling back to the status class (429 rejections
109
+ * happen before any handler runs). Mirrors the Rust client's
110
+ * `ClientError::is_retryable`.
111
+ */
112
+ isRetryable() {
113
+ return this.meta?.retryable ?? this.status === 429;
114
+ }
115
+ /**
116
+ * Server-provided backoff hint in seconds: the `Retry-After` header,
117
+ * falling back to `meta.retryAfterSecs`. Unparseable values mean no
118
+ * hint. Mirrors the Rust client's `ClientError::retry_after`.
119
+ */
120
+ retryAfterSecs() {
121
+ return this.headerRetryAfterSecs ?? this.meta?.retryAfterSecs;
122
+ }
123
+ }
124
+ // Decimal digits only, mirroring the Rust client's `parse::<u64>()`: no
125
+ // signs, exponents, hex, or empty strings (`Number('')` is 0).
126
+ function parseRetryAfterSeconds(header) {
127
+ if (typeof header !== 'string')
128
+ return undefined;
129
+ const trimmed = header.trim();
130
+ if (!/^\d+$/.test(trimmed))
131
+ return undefined;
132
+ const secs = Number(trimmed);
133
+ return Number.isSafeInteger(secs) ? secs : undefined;
104
134
  }
105
135
  /**
106
136
  * Minimal HTTP client for GUARDIAN server.
@@ -342,7 +372,7 @@ export class GuardianHttpClient {
342
372
  });
343
373
  if (!response.ok) {
344
374
  const body = await response.text();
345
- throw new GuardianHttpError(response.status, response.statusText, body);
375
+ throw new GuardianHttpError(response.status, response.statusText, body, response.headers.get('Retry-After'));
346
376
  }
347
377
  return response;
348
378
  }
package/dist/http.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openzeppelin/guardian-client",
3
- "version": "0.16.1",
3
+ "version": "0.16.2",
4
4
  "description": "TypeScript HTTP client for Guardian server",
5
5
  "repository": {
6
6
  "type": "git",
package/src/http.test.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { readFileSync } from 'node:fs';
1
2
  import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
3
  import { GuardianHttpClient, GuardianHttpError } from './http.js';
3
4
  import type { Signer, ConfigureResponse, StateObject, DeltaObject, DeltaProposalResponse } from './types.js';
@@ -60,6 +61,7 @@ describe('GuardianHttpClient', () => {
60
61
  it('should throw GuardianHttpError on non-ok response', async () => {
61
62
  mockFetch.mockResolvedValueOnce({
62
63
  ok: false,
64
+ headers: new Headers(),
63
65
  status: 500,
64
66
  statusText: 'Internal Server Error',
65
67
  text: async () => 'Server error message',
@@ -77,6 +79,7 @@ describe('GuardianHttpClient', () => {
77
79
  it('exposes code and released_at from a GUARDIAN_ACCOUNT_RELEASED envelope', async () => {
78
80
  mockFetch.mockResolvedValueOnce({
79
81
  ok: false,
82
+ headers: new Headers(),
80
83
  status: 409,
81
84
  statusText: 'Conflict',
82
85
  text: async () =>
@@ -98,6 +101,7 @@ describe('GuardianHttpClient', () => {
98
101
  it('exposes code without releasedAt for other envelope errors', async () => {
99
102
  mockFetch.mockResolvedValueOnce({
100
103
  ok: false,
104
+ headers: new Headers(),
101
105
  status: 404,
102
106
  statusText: 'Not Found',
103
107
  text: async () =>
@@ -152,6 +156,7 @@ describe('GuardianHttpClient', () => {
152
156
  it('should throw GuardianHttpError on non-ok response', async () => {
153
157
  mockFetch.mockResolvedValueOnce({
154
158
  ok: false,
159
+ headers: new Headers(),
155
160
  status: 503,
156
161
  statusText: 'Service Unavailable',
157
162
  text: async () => 'down',
@@ -497,6 +502,7 @@ describe('GuardianHttpClient', () => {
497
502
 
498
503
  mockFetch.mockResolvedValueOnce({
499
504
  ok: false,
505
+ headers: new Headers(),
500
506
  status: 409,
501
507
  statusText: 'Conflict',
502
508
  text: async () =>
@@ -521,6 +527,7 @@ describe('GuardianHttpClient', () => {
521
527
 
522
528
  mockFetch.mockResolvedValueOnce({
523
529
  ok: false,
530
+ headers: new Headers(),
524
531
  status: 404,
525
532
  statusText: 'Not Found',
526
533
  text: async () =>
@@ -612,6 +619,7 @@ describe('GuardianHttpClient', () => {
612
619
 
613
620
  mockFetch.mockResolvedValueOnce({
614
621
  ok: false,
622
+ headers: new Headers(),
615
623
  status: 404,
616
624
  statusText: 'Not Found',
617
625
  text: async () =>
@@ -952,6 +960,7 @@ describe('GuardianHttpClient', () => {
952
960
  client.setSigner(signer);
953
961
  mockFetch.mockResolvedValueOnce({
954
962
  ok: false,
963
+ headers: new Headers(),
955
964
  status: 401,
956
965
  statusText: 'Unauthorized',
957
966
  text: async () => '{"code":"authentication_failed","error":"..."}',
@@ -1014,6 +1023,35 @@ describe('GuardianHttpError', () => {
1014
1023
  expect(plain.meta).toBeUndefined();
1015
1024
  });
1016
1025
 
1026
+ describe('retry classification (shared fixture)', () => {
1027
+ interface FixtureCase {
1028
+ name: string;
1029
+ body: Record<string, unknown> | null;
1030
+ http: { status: number; retryAfterHeader?: string };
1031
+ expected: { retryable: boolean; retryAfterSecs: number | null };
1032
+ }
1033
+
1034
+ const fixture = JSON.parse(
1035
+ readFileSync(
1036
+ new URL('../../../fixtures/guardian-client/rate-limit-policy.json', import.meta.url),
1037
+ 'utf-8'
1038
+ )
1039
+ ) as { cases: FixtureCase[] };
1040
+
1041
+ it.each(fixture.cases.map((c) => [c.name, c] as const))('%s', (_name, c) => {
1042
+ const body = c.body === null ? 'plain failure' : JSON.stringify(c.body);
1043
+ const error = new GuardianHttpError(
1044
+ c.http.status,
1045
+ 'error',
1046
+ body,
1047
+ c.http.retryAfterHeader ?? null
1048
+ );
1049
+
1050
+ expect(error.isRetryable()).toBe(c.expected.retryable);
1051
+ expect(error.retryAfterSecs()).toBe(c.expected.retryAfterSecs ?? undefined);
1052
+ });
1053
+ });
1054
+
1017
1055
  describe('error envelope contract (account-paused path)', () => {
1018
1056
  let client: GuardianHttpClient;
1019
1057
  beforeEach(() => {
@@ -1040,6 +1078,7 @@ describe('GuardianHttpError', () => {
1040
1078
 
1041
1079
  mockFetch.mockResolvedValueOnce({
1042
1080
  ok: false,
1081
+ headers: new Headers(),
1043
1082
  status: 409,
1044
1083
  statusText: 'Conflict',
1045
1084
  text: async () => JSON.stringify(envelope),
@@ -1088,6 +1127,7 @@ describe('GuardianHttpError', () => {
1088
1127
  // and the final attempt throws the typed error.
1089
1128
  mockFetch.mockResolvedValue({
1090
1129
  ok: false,
1130
+ headers: new Headers(),
1091
1131
  status: 401,
1092
1132
  statusText: 'Unauthorized',
1093
1133
  text: async () => JSON.stringify(envelope),
package/src/http.ts CHANGED
@@ -149,10 +149,13 @@ export class GuardianHttpError extends Error {
149
149
  */
150
150
  public readonly releasedAt: string | null;
151
151
 
152
+ private readonly headerRetryAfterSecs?: number;
153
+
152
154
  constructor(
153
155
  public readonly status: number,
154
156
  public readonly statusText: string,
155
- public readonly body: string
157
+ public readonly body: string,
158
+ retryAfterHeader?: string | null
156
159
  ) {
157
160
  // Only the parsed, user-safe message is folded into Error.message; the
158
161
  // raw body (which may carry backend/proxy internals) stays on the `body`
@@ -165,9 +168,39 @@ export class GuardianHttpError extends Error {
165
168
  this.userMessage = parsed?.message;
166
169
  this.meta = parsed?.meta;
167
170
  this.releasedAt = parsed?.meta.releasedAt ?? null;
171
+ this.headerRetryAfterSecs = parseRetryAfterSeconds(retryAfterHeader);
172
+ }
173
+
174
+ /**
175
+ * Whether the server marked this error safe to retry: `meta.retryable`
176
+ * from the envelope, falling back to the status class (429 rejections
177
+ * happen before any handler runs). Mirrors the Rust client's
178
+ * `ClientError::is_retryable`.
179
+ */
180
+ isRetryable(): boolean {
181
+ return this.meta?.retryable ?? this.status === 429;
182
+ }
183
+
184
+ /**
185
+ * Server-provided backoff hint in seconds: the `Retry-After` header,
186
+ * falling back to `meta.retryAfterSecs`. Unparseable values mean no
187
+ * hint. Mirrors the Rust client's `ClientError::retry_after`.
188
+ */
189
+ retryAfterSecs(): number | undefined {
190
+ return this.headerRetryAfterSecs ?? this.meta?.retryAfterSecs;
168
191
  }
169
192
  }
170
193
 
194
+ // Decimal digits only, mirroring the Rust client's `parse::<u64>()`: no
195
+ // signs, exponents, hex, or empty strings (`Number('')` is 0).
196
+ function parseRetryAfterSeconds(header: string | null | undefined): number | undefined {
197
+ if (typeof header !== 'string') return undefined;
198
+ const trimmed = header.trim();
199
+ if (!/^\d+$/.test(trimmed)) return undefined;
200
+ const secs = Number(trimmed);
201
+ return Number.isSafeInteger(secs) ? secs : undefined;
202
+ }
203
+
171
204
  /**
172
205
  * Minimal HTTP client for GUARDIAN server.
173
206
  */
@@ -431,7 +464,12 @@ export class GuardianHttpClient {
431
464
 
432
465
  if (!response.ok) {
433
466
  const body = await response.text();
434
- throw new GuardianHttpError(response.status, response.statusText, body);
467
+ throw new GuardianHttpError(
468
+ response.status,
469
+ response.statusText,
470
+ body,
471
+ response.headers.get('Retry-After')
472
+ );
435
473
  }
436
474
 
437
475
  return response;