@ewanc26/atproto 0.2.9 → 0.2.11
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/dist/agents.d.ts.map +1 -1
- package/dist/agents.js +17 -3
- package/dist/fetch.d.ts +7 -1
- package/dist/fetch.d.ts.map +1 -1
- package/dist/fetch.js +231 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/jetstream.d.ts +100 -0
- package/dist/jetstream.d.ts.map +1 -0
- package/dist/jetstream.js +270 -0
- package/dist/musicbrainz.d.ts +1 -0
- package/dist/musicbrainz.d.ts.map +1 -1
- package/dist/musicbrainz.js +15 -2
- package/dist/types.d.ts +65 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/agents.ts +30 -4
- package/src/fetch.ts +296 -1
- package/src/index.ts +15 -2
- package/src/musicbrainz.ts +20 -2
- package/src/types.ts +72 -0
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Jetstream WebSocket client for AT Protocol real-time event streaming.
|
|
3
|
+
*
|
|
4
|
+
* Jetstream is a simplified JSON event stream that converts the CBOR-encoded
|
|
5
|
+
* AT Protocol firehose into lightweight, friendly JSON objects.
|
|
6
|
+
*
|
|
7
|
+
* @see https://github.com/bluesky-social/jetstream
|
|
8
|
+
*/
|
|
9
|
+
/** Public Jetstream instances operated by Bluesky */
|
|
10
|
+
export const JETSTREAM_INSTANCES = {
|
|
11
|
+
'us-east-1': 'wss://jetstream1.us-east.bsky.network',
|
|
12
|
+
'us-east-2': 'wss://jetstream2.us-east.bsky.network',
|
|
13
|
+
'us-west-1': 'wss://jetstream1.us-west.bsky.network',
|
|
14
|
+
'us-west-2': 'wss://jetstream2.us-west.bsky.network',
|
|
15
|
+
};
|
|
16
|
+
/** Default instance to use */
|
|
17
|
+
const DEFAULT_INSTANCE = 'us-west-2';
|
|
18
|
+
/** Reconnection settings */
|
|
19
|
+
const RECONNECT_DELAY_MS = 1000;
|
|
20
|
+
const MAX_RECONNECT_DELAY_MS = 30000;
|
|
21
|
+
const CURSOR_BUFFER_US = 5_000_000; // 5 seconds in microseconds
|
|
22
|
+
/**
|
|
23
|
+
* Client for connecting to AT Protocol Jetstream real-time event stream.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* const client = new JetstreamClient({
|
|
28
|
+
* wantedCollections: ['app.bsky.feed.post'],
|
|
29
|
+
* wantedDids: ['did:plc:...'],
|
|
30
|
+
* });
|
|
31
|
+
*
|
|
32
|
+
* client.onEvent((event) => {
|
|
33
|
+
* console.log('Received event:', event.kind, event.commit?.collection);
|
|
34
|
+
* });
|
|
35
|
+
*
|
|
36
|
+
* client.connect();
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export class JetstreamClient {
|
|
40
|
+
ws = null;
|
|
41
|
+
url;
|
|
42
|
+
options;
|
|
43
|
+
eventHandlers = new Set();
|
|
44
|
+
errorHandlers = new Set();
|
|
45
|
+
stateHandlers = new Set();
|
|
46
|
+
reconnectAttempts = 0;
|
|
47
|
+
cursor;
|
|
48
|
+
isConnecting = false;
|
|
49
|
+
shouldReconnect = true;
|
|
50
|
+
reconnectTimeout = null;
|
|
51
|
+
_connectionState = 'disconnected';
|
|
52
|
+
constructor(options = {}) {
|
|
53
|
+
this.url = options.url || JETSTREAM_INSTANCES[DEFAULT_INSTANCE];
|
|
54
|
+
this.options = options;
|
|
55
|
+
this.cursor = options.cursor;
|
|
56
|
+
}
|
|
57
|
+
/** Current connection state */
|
|
58
|
+
get connectionState() {
|
|
59
|
+
return this._connectionState;
|
|
60
|
+
}
|
|
61
|
+
/** Get current cursor (last seen time_us) */
|
|
62
|
+
getCursor() {
|
|
63
|
+
return this.cursor;
|
|
64
|
+
}
|
|
65
|
+
/** Connect to Jetstream and start receiving events */
|
|
66
|
+
connect() {
|
|
67
|
+
if (this.ws?.readyState === WebSocket.OPEN || this.isConnecting) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
this.isConnecting = true;
|
|
71
|
+
this.shouldReconnect = true;
|
|
72
|
+
this.setState('connecting');
|
|
73
|
+
const wsUrl = this.buildUrl();
|
|
74
|
+
try {
|
|
75
|
+
this.ws = new WebSocket(wsUrl);
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
this.isConnecting = false;
|
|
79
|
+
this.handleError(new Error(`Failed to create WebSocket: ${err}`));
|
|
80
|
+
this.scheduleReconnect();
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
this.ws.onopen = () => {
|
|
84
|
+
this.isConnecting = false;
|
|
85
|
+
this.reconnectAttempts = 0;
|
|
86
|
+
this.setState('connected');
|
|
87
|
+
};
|
|
88
|
+
this.ws.onmessage = (event) => {
|
|
89
|
+
try {
|
|
90
|
+
const data = JSON.parse(event.data.toString());
|
|
91
|
+
this.cursor = data.time_us;
|
|
92
|
+
this.eventHandlers.forEach((handler) => {
|
|
93
|
+
try {
|
|
94
|
+
handler(data);
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
console.error('[Jetstream] Handler error:', err);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
console.error('[Jetstream] Failed to parse message:', err);
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
this.ws.onerror = () => {
|
|
106
|
+
this.isConnecting = false;
|
|
107
|
+
this.handleError(new Error('WebSocket error'));
|
|
108
|
+
};
|
|
109
|
+
this.ws.onclose = (event) => {
|
|
110
|
+
this.isConnecting = false;
|
|
111
|
+
if (this.shouldReconnect) {
|
|
112
|
+
this.setState('reconnecting');
|
|
113
|
+
this.scheduleReconnect();
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
this.setState('disconnected');
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/** Disconnect from Jetstream */
|
|
121
|
+
disconnect() {
|
|
122
|
+
this.shouldReconnect = false;
|
|
123
|
+
if (this.reconnectTimeout) {
|
|
124
|
+
clearTimeout(this.reconnectTimeout);
|
|
125
|
+
this.reconnectTimeout = null;
|
|
126
|
+
}
|
|
127
|
+
if (this.ws) {
|
|
128
|
+
this.ws.close();
|
|
129
|
+
this.ws = null;
|
|
130
|
+
}
|
|
131
|
+
this.setState('disconnected');
|
|
132
|
+
}
|
|
133
|
+
/** Subscribe to events */
|
|
134
|
+
onEvent(handler) {
|
|
135
|
+
this.eventHandlers.add(handler);
|
|
136
|
+
return () => this.eventHandlers.delete(handler);
|
|
137
|
+
}
|
|
138
|
+
/** Subscribe to errors */
|
|
139
|
+
onError(handler) {
|
|
140
|
+
this.errorHandlers.add(handler);
|
|
141
|
+
return () => this.errorHandlers.delete(handler);
|
|
142
|
+
}
|
|
143
|
+
/** Subscribe to connection state changes */
|
|
144
|
+
onStateChange(handler) {
|
|
145
|
+
this.stateHandlers.add(handler);
|
|
146
|
+
return () => this.stateHandlers.delete(handler);
|
|
147
|
+
}
|
|
148
|
+
/** Update subscription filters after connecting */
|
|
149
|
+
updateFilters(options) {
|
|
150
|
+
this.options = { ...this.options, ...options };
|
|
151
|
+
if (this.ws?.readyState === WebSocket.OPEN) {
|
|
152
|
+
const message = {
|
|
153
|
+
type: 'options_update',
|
|
154
|
+
payload: {
|
|
155
|
+
wantedCollections: this.options.wantedCollections ?? [],
|
|
156
|
+
wantedDids: this.options.wantedDids ?? [],
|
|
157
|
+
maxMessageSizeBytes: this.options.maxMessageSizeBytes ?? 0,
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
this.ws.send(JSON.stringify(message));
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/** Set cursor for replay */
|
|
164
|
+
setCursor(cursor) {
|
|
165
|
+
this.cursor = cursor;
|
|
166
|
+
}
|
|
167
|
+
buildUrl() {
|
|
168
|
+
const params = new URLSearchParams();
|
|
169
|
+
if (this.options.wantedCollections?.length) {
|
|
170
|
+
for (const collection of this.options.wantedCollections) {
|
|
171
|
+
params.append('wantedCollections', collection);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
if (this.options.wantedDids?.length) {
|
|
175
|
+
for (const did of this.options.wantedDids) {
|
|
176
|
+
params.append('wantedDids', did);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
if (this.options.maxMessageSizeBytes) {
|
|
180
|
+
params.set('maxMessageSizeBytes', String(this.options.maxMessageSizeBytes));
|
|
181
|
+
}
|
|
182
|
+
if (this.options.compress) {
|
|
183
|
+
params.set('compress', 'true');
|
|
184
|
+
}
|
|
185
|
+
if (this.options.requireHello) {
|
|
186
|
+
params.set('requireHello', 'true');
|
|
187
|
+
}
|
|
188
|
+
// Use cursor with buffer for gapless replay
|
|
189
|
+
if (this.cursor) {
|
|
190
|
+
const bufferedCursor = Math.max(0, this.cursor - CURSOR_BUFFER_US);
|
|
191
|
+
params.set('cursor', String(bufferedCursor));
|
|
192
|
+
}
|
|
193
|
+
const queryString = params.toString();
|
|
194
|
+
return queryString ? `${this.url}/subscribe?${queryString}` : `${this.url}/subscribe`;
|
|
195
|
+
}
|
|
196
|
+
setState(state) {
|
|
197
|
+
this._connectionState = state;
|
|
198
|
+
this.stateHandlers.forEach((handler) => {
|
|
199
|
+
try {
|
|
200
|
+
handler(state);
|
|
201
|
+
}
|
|
202
|
+
catch (err) {
|
|
203
|
+
console.error('[Jetstream] State handler error:', err);
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
handleError(error) {
|
|
208
|
+
this.errorHandlers.forEach((handler) => {
|
|
209
|
+
try {
|
|
210
|
+
handler(error);
|
|
211
|
+
}
|
|
212
|
+
catch (err) {
|
|
213
|
+
console.error('[Jetstream] Error handler error:', err);
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
scheduleReconnect() {
|
|
218
|
+
const delay = Math.min(RECONNECT_DELAY_MS * Math.pow(2, this.reconnectAttempts), MAX_RECONNECT_DELAY_MS);
|
|
219
|
+
this.reconnectAttempts++;
|
|
220
|
+
this.reconnectTimeout = setTimeout(() => {
|
|
221
|
+
this.connect();
|
|
222
|
+
}, delay);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Create a Jetstream client for a specific DID's data.
|
|
227
|
+
* Filters events to only include records from the specified DID.
|
|
228
|
+
*/
|
|
229
|
+
export function createDidJetstreamClient(did, options = {}) {
|
|
230
|
+
return new JetstreamClient({
|
|
231
|
+
...options,
|
|
232
|
+
wantedDids: [did],
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Create a Jetstream client for specific collections.
|
|
237
|
+
* Receives events for all DIDs but only for the specified collections.
|
|
238
|
+
*/
|
|
239
|
+
export function createCollectionJetstreamClient(collections, options = {}) {
|
|
240
|
+
return new JetstreamClient({
|
|
241
|
+
...options,
|
|
242
|
+
wantedCollections: collections,
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Create a Jetstream client for the full firehose (all collections, all DIDs).
|
|
247
|
+
* Use with caution - this receives a high volume of events.
|
|
248
|
+
*/
|
|
249
|
+
export function createFullFirehoseClient(options = {}) {
|
|
250
|
+
return new JetstreamClient(options);
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Get the current time as a Unix microseconds cursor.
|
|
254
|
+
* Useful for starting live-tail mode.
|
|
255
|
+
*/
|
|
256
|
+
export function getCurrentCursor() {
|
|
257
|
+
return Date.now() * 1000;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Convert a Unix timestamp (ms) to Jetstream cursor (microseconds).
|
|
261
|
+
*/
|
|
262
|
+
export function timestampToCursor(timestampMs) {
|
|
263
|
+
return timestampMs * 1000;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Convert a Jetstream cursor (microseconds) to Unix timestamp (ms).
|
|
267
|
+
*/
|
|
268
|
+
export function cursorToTimestamp(cursor) {
|
|
269
|
+
return Math.floor(cursor / 1000);
|
|
270
|
+
}
|
package/dist/musicbrainz.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export declare function searchDeezerArtwork(trackName: string, artistName: strin
|
|
|
5
5
|
export declare function searchLastFmArtwork(trackName: string, artistName: string, releaseName?: string): Promise<string | null>;
|
|
6
6
|
/**
|
|
7
7
|
* Cascading artwork search: Cover Art Archive → MusicBrainz+CAA → iTunes → Last.fm
|
|
8
|
+
* Each step is bounded by ARTWORK_TIMEOUT to prevent serverless function timeouts.
|
|
8
9
|
*/
|
|
9
10
|
export declare function findArtwork(trackName: string, artistName: string, releaseName?: string, releaseMbId?: string, fetchFn?: typeof fetch): Promise<string | null>;
|
|
10
11
|
//# sourceMappingURL=musicbrainz.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"musicbrainz.d.ts","sourceRoot":"","sources":["../src/musicbrainz.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"musicbrainz.d.ts","sourceRoot":"","sources":["../src/musicbrainz.ts"],"names":[],"mappings":"AAkCA,wBAAsB,wBAAwB,CAC7C,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiBxB;AAkCD,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,GAAE,GAAG,GAAG,GAAG,GAAG,IAAU,GAAG,MAAM,CAE1F;AAED,wBAAsB,mBAAmB,CACxC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuBxB;AAED,wBAAsB,mBAAmB,CACxC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB;AAED,wBAAsB,mBAAmB,CACxC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA2BxB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAChC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,OAAO,KAAK,GACpB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+BxB"}
|
package/dist/musicbrainz.js
CHANGED
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
import { cache } from './cache.js';
|
|
2
|
+
/** Timeout for individual artwork API calls (ms). */
|
|
3
|
+
const ARTWORK_TIMEOUT = 5_000;
|
|
4
|
+
/**
|
|
5
|
+
* Wraps a promise with a timeout. Rejects with a TimeoutError if the promise
|
|
6
|
+
* doesn't settle within `ms` milliseconds.
|
|
7
|
+
*/
|
|
8
|
+
function withTimeout(promise, ms) {
|
|
9
|
+
return new Promise((resolve, reject) => {
|
|
10
|
+
const timer = setTimeout(() => reject(new Error(`Timeout after ${ms}ms`)), ms);
|
|
11
|
+
promise.then((value) => { clearTimeout(timer); resolve(value); }, (err) => { clearTimeout(timer); reject(err); });
|
|
12
|
+
});
|
|
13
|
+
}
|
|
2
14
|
export async function searchMusicBrainzRelease(trackName, artistName, releaseName) {
|
|
3
15
|
const cacheKey = `mb:release:${trackName}:${artistName}:${releaseName || 'none'}`;
|
|
4
16
|
const cached = cache.get(cacheKey);
|
|
@@ -140,6 +152,7 @@ export async function searchLastFmArtwork(trackName, artistName, releaseName) {
|
|
|
140
152
|
}
|
|
141
153
|
/**
|
|
142
154
|
* Cascading artwork search: Cover Art Archive → MusicBrainz+CAA → iTunes → Last.fm
|
|
155
|
+
* Each step is bounded by ARTWORK_TIMEOUT to prevent serverless function timeouts.
|
|
143
156
|
*/
|
|
144
157
|
export async function findArtwork(trackName, artistName, releaseName, releaseMbId, fetchFn) {
|
|
145
158
|
const _fetch = fetchFn || globalThis.fetch;
|
|
@@ -147,7 +160,7 @@ export async function findArtwork(trackName, artistName, releaseName, releaseMbI
|
|
|
147
160
|
if (releaseMbId) {
|
|
148
161
|
const caaUrl = buildCoverArtUrl(releaseMbId, 500);
|
|
149
162
|
try {
|
|
150
|
-
const res = await _fetch(caaUrl, { method: 'HEAD' });
|
|
163
|
+
const res = await withTimeout(_fetch(caaUrl, { method: 'HEAD' }), ARTWORK_TIMEOUT);
|
|
151
164
|
if (res.ok)
|
|
152
165
|
return caaUrl;
|
|
153
166
|
}
|
|
@@ -158,7 +171,7 @@ export async function findArtwork(trackName, artistName, releaseName, releaseMbI
|
|
|
158
171
|
if (mbId) {
|
|
159
172
|
const caaUrl = buildCoverArtUrl(mbId, 500);
|
|
160
173
|
try {
|
|
161
|
-
const res = await _fetch(caaUrl, { method: 'HEAD' });
|
|
174
|
+
const res = await withTimeout(_fetch(caaUrl, { method: 'HEAD' }), ARTWORK_TIMEOUT);
|
|
162
175
|
if (res.ok)
|
|
163
176
|
return caaUrl;
|
|
164
177
|
}
|
package/dist/types.d.ts
CHANGED
|
@@ -328,4 +328,69 @@ export interface SifaExternalAccount {
|
|
|
328
328
|
isPrimary?: boolean;
|
|
329
329
|
uri: string;
|
|
330
330
|
}
|
|
331
|
+
export interface SifaPosition {
|
|
332
|
+
company: string;
|
|
333
|
+
companyDid?: string;
|
|
334
|
+
title: string;
|
|
335
|
+
description?: string;
|
|
336
|
+
employmentType?: string;
|
|
337
|
+
workplaceType?: string;
|
|
338
|
+
location?: SifaLocation;
|
|
339
|
+
startedAt: string;
|
|
340
|
+
endedAt?: string;
|
|
341
|
+
skills?: string[];
|
|
342
|
+
isPrimary?: boolean;
|
|
343
|
+
uri: string;
|
|
344
|
+
}
|
|
345
|
+
export interface SifaEducation {
|
|
346
|
+
institution: string;
|
|
347
|
+
institutionDid?: string;
|
|
348
|
+
degree?: string;
|
|
349
|
+
fieldOfStudy?: string;
|
|
350
|
+
grade?: string;
|
|
351
|
+
activities?: string;
|
|
352
|
+
description?: string;
|
|
353
|
+
location?: SifaLocation;
|
|
354
|
+
startedAt?: string;
|
|
355
|
+
endedAt?: string;
|
|
356
|
+
uri: string;
|
|
357
|
+
}
|
|
358
|
+
export interface SifaVolunteering {
|
|
359
|
+
organization: string;
|
|
360
|
+
organizationDid?: string;
|
|
361
|
+
role?: string;
|
|
362
|
+
cause?: string;
|
|
363
|
+
description?: string;
|
|
364
|
+
startedAt?: string;
|
|
365
|
+
endedAt?: string;
|
|
366
|
+
uri: string;
|
|
367
|
+
}
|
|
368
|
+
export interface SifaHonor {
|
|
369
|
+
title: string;
|
|
370
|
+
issuer?: string;
|
|
371
|
+
issuerDid?: string;
|
|
372
|
+
description?: string;
|
|
373
|
+
awardedAt?: string;
|
|
374
|
+
uri: string;
|
|
375
|
+
}
|
|
376
|
+
export interface SifaCourse {
|
|
377
|
+
name: string;
|
|
378
|
+
number?: string;
|
|
379
|
+
institution?: string;
|
|
380
|
+
education?: string;
|
|
381
|
+
uri: string;
|
|
382
|
+
}
|
|
383
|
+
export interface SifaPublicationAuthor {
|
|
384
|
+
name: string;
|
|
385
|
+
did?: string;
|
|
386
|
+
}
|
|
387
|
+
export interface SifaPublication {
|
|
388
|
+
title: string;
|
|
389
|
+
publisher?: string;
|
|
390
|
+
url?: string;
|
|
391
|
+
description?: string;
|
|
392
|
+
authors?: SifaPublicationAuthor[];
|
|
393
|
+
publishedAt?: string;
|
|
394
|
+
uri: string;
|
|
395
|
+
}
|
|
331
396
|
//# sourceMappingURL=types.d.ts.map
|
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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"}
|
package/package.json
CHANGED
package/src/agents.ts
CHANGED
|
@@ -2,6 +2,26 @@ import { AtpAgent } from '@atproto/api';
|
|
|
2
2
|
import type { ResolvedIdentity } from './types.js';
|
|
3
3
|
import { cache } from './cache.js';
|
|
4
4
|
|
|
5
|
+
/** Default timeout for individual AT Protocol XRPC calls (ms). */
|
|
6
|
+
const XRPC_TIMEOUT = 8_000;
|
|
7
|
+
|
|
8
|
+
/** Default timeout for identity resolution (ms). */
|
|
9
|
+
const IDENTITY_TIMEOUT = 5_000;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Wraps a promise with a timeout. Rejects with a TimeoutError if the promise
|
|
13
|
+
* doesn't settle within `ms` milliseconds.
|
|
14
|
+
*/
|
|
15
|
+
function withTimeout<T>(promise: Promise<T>, ms: number): Promise<T> {
|
|
16
|
+
return new Promise<T>((resolve, reject) => {
|
|
17
|
+
const timer = setTimeout(() => reject(new Error(`Timeout after ${ms}ms`)), ms);
|
|
18
|
+
promise.then(
|
|
19
|
+
(value) => { clearTimeout(timer); resolve(value); },
|
|
20
|
+
(err) => { clearTimeout(timer); reject(err); }
|
|
21
|
+
);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
|
|
5
25
|
export function createAgent(service: string, fetchFn?: typeof fetch): AtpAgent {
|
|
6
26
|
const wrappedFetch = fetchFn
|
|
7
27
|
? async (url: URL | RequestInfo, init?: RequestInit) => {
|
|
@@ -40,8 +60,11 @@ export async function resolveIdentity(
|
|
|
40
60
|
if (cached) return cached;
|
|
41
61
|
|
|
42
62
|
const _fetch = fetchFn ?? globalThis.fetch;
|
|
43
|
-
const response = await
|
|
44
|
-
|
|
63
|
+
const response = await withTimeout(
|
|
64
|
+
_fetch(
|
|
65
|
+
`https://slingshot.microcosm.blue/xrpc/com.bad-example.identity.resolveMiniDoc?identifier=${encodeURIComponent(did)}`
|
|
66
|
+
),
|
|
67
|
+
IDENTITY_TIMEOUT
|
|
45
68
|
);
|
|
46
69
|
|
|
47
70
|
if (!response.ok) {
|
|
@@ -71,7 +94,10 @@ export async function getPublicAgent(did: string, fetchFn?: typeof fetch): Promi
|
|
|
71
94
|
|
|
72
95
|
try {
|
|
73
96
|
try {
|
|
74
|
-
const response = await
|
|
97
|
+
const response = await withTimeout(
|
|
98
|
+
constellationAgent.getProfile({ actor: did }),
|
|
99
|
+
XRPC_TIMEOUT
|
|
100
|
+
);
|
|
75
101
|
if (response.success) {
|
|
76
102
|
resolvedAgent = constellationAgent;
|
|
77
103
|
return resolvedAgent;
|
|
@@ -113,7 +139,7 @@ export async function withFallback<T>(
|
|
|
113
139
|
for (const getAgent of agents) {
|
|
114
140
|
try {
|
|
115
141
|
const agent = await getAgent();
|
|
116
|
-
return await operation(agent);
|
|
142
|
+
return await withTimeout(operation(agent), XRPC_TIMEOUT);
|
|
117
143
|
} catch (error) {
|
|
118
144
|
lastError = error;
|
|
119
145
|
}
|