@atcute/client 3.0.1 → 4.0.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 +72 -13
- package/dist/client.d.ts +166 -0
- package/dist/client.js +192 -0
- package/dist/client.js.map +1 -0
- package/dist/credential-manager.d.ts +52 -43
- package/dist/credential-manager.js +51 -39
- package/dist/credential-manager.js.map +1 -1
- package/dist/fetch-handler.d.ts +2 -2
- package/dist/fetch-handler.js +1 -1
- package/dist/fetch-handler.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/lib/client.ts +461 -0
- package/lib/credential-manager.ts +129 -96
- package/lib/env.d.ts +1 -0
- package/lib/fetch-handler.ts +3 -3
- package/lib/index.ts +1 -1
- package/package.json +12 -11
- package/dist/lexicons.d.ts +0 -2199
- package/dist/lexicons.js +0 -4
- package/dist/lexicons.js.map +0 -1
- package/dist/rpc.d.ts +0 -96
- package/dist/rpc.js +0 -141
- package/dist/rpc.js.map +0 -1
- package/dist/utils/did.d.ts +0 -38
- package/dist/utils/did.js +0 -44
- package/dist/utils/did.js.map +0 -1
- package/dist/utils/http.d.ts +0 -7
- package/dist/utils/http.js +0 -20
- package/dist/utils/http.js.map +0 -1
- package/lib/lexicons.ts +0 -2204
- package/lib/rpc.ts +0 -262
- package/lib/utils/did.ts +0 -73
- package/lib/utils/http.ts +0 -27
|
@@ -1,21 +1,27 @@
|
|
|
1
|
+
import { getPdsEndpoint } from '@atcute/identity';
|
|
2
|
+
import { Client, ClientResponseError, isXRPCErrorPayload, ok } from './client.js';
|
|
1
3
|
import { simpleFetchHandler } from './fetch-handler.js';
|
|
2
|
-
import { XRPC, XRPCError } from './rpc.js';
|
|
3
|
-
import { getPdsEndpoint } from './utils/did.js';
|
|
4
4
|
import { decodeJwt } from './utils/jwt.js';
|
|
5
5
|
export class CredentialManager {
|
|
6
|
+
/** internal client instance for making authentication requests */
|
|
6
7
|
#server;
|
|
8
|
+
/** holds a promise for the current refresh operation, used for debouncing */
|
|
7
9
|
#refreshSessionPromise;
|
|
10
|
+
/** callback for session expiration */
|
|
8
11
|
#onExpired;
|
|
12
|
+
/** callback for successful session refresh */
|
|
9
13
|
#onRefresh;
|
|
14
|
+
/** callback for session updates */
|
|
10
15
|
#onSessionUpdate;
|
|
11
16
|
constructor({ service, onExpired, onRefresh, onSessionUpdate, fetch: _fetch = fetch, }) {
|
|
12
17
|
this.serviceUrl = service;
|
|
13
18
|
this.fetch = _fetch;
|
|
14
|
-
this.#server = new
|
|
19
|
+
this.#server = new Client({ handler: simpleFetchHandler({ service, fetch: _fetch }) });
|
|
15
20
|
this.#onRefresh = onRefresh;
|
|
16
21
|
this.#onExpired = onExpired;
|
|
17
22
|
this.#onSessionUpdate = onSessionUpdate;
|
|
18
23
|
}
|
|
24
|
+
/** service URL to make actual API requests with */
|
|
19
25
|
get dispatchUrl() {
|
|
20
26
|
return this.session?.pdsUri ?? this.serviceUrl;
|
|
21
27
|
}
|
|
@@ -38,12 +44,13 @@ export class CredentialManager {
|
|
|
38
44
|
catch {
|
|
39
45
|
return initialResponse;
|
|
40
46
|
}
|
|
41
|
-
//
|
|
42
|
-
// - refreshSession
|
|
43
|
-
// -
|
|
47
|
+
// return initial response if:
|
|
48
|
+
// - the above refreshSession failed and cleared the session
|
|
49
|
+
// - provided request body was a stream, which can't be resent once consumed
|
|
44
50
|
if (!this.session || init.body instanceof ReadableStream) {
|
|
45
51
|
return initialResponse;
|
|
46
52
|
}
|
|
53
|
+
// set the new token and retry the request
|
|
47
54
|
headers.set('authorization', `Bearer ${this.session.accessJwt}`);
|
|
48
55
|
return await (0, this.fetch)(url, { ...init, headers });
|
|
49
56
|
}
|
|
@@ -55,24 +62,24 @@ export class CredentialManager {
|
|
|
55
62
|
if (!currentSession) {
|
|
56
63
|
return;
|
|
57
64
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
catch (err) {
|
|
68
|
-
if (err instanceof XRPCError) {
|
|
69
|
-
const kind = err.kind;
|
|
70
|
-
if (kind === 'ExpiredToken' || kind === 'InvalidToken') {
|
|
65
|
+
const response = await this.#server.post('com.atproto.server.refreshSession', {
|
|
66
|
+
headers: {
|
|
67
|
+
authorization: `Bearer ${currentSession.refreshJwt}`,
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
if (!response.ok) {
|
|
71
|
+
switch (response.data.error) {
|
|
72
|
+
case 'ExpiredToken':
|
|
73
|
+
case 'InvalidToken': {
|
|
71
74
|
this.session = undefined;
|
|
72
75
|
this.#onExpired?.(currentSession);
|
|
76
|
+
break;
|
|
73
77
|
}
|
|
74
78
|
}
|
|
79
|
+
throw new ClientResponseError(response);
|
|
75
80
|
}
|
|
81
|
+
this.#updateSession({ ...currentSession, ...response.data });
|
|
82
|
+
this.#onRefresh?.(this.session);
|
|
76
83
|
}
|
|
77
84
|
#updateSession(raw) {
|
|
78
85
|
const didDoc = raw.didDoc;
|
|
@@ -88,7 +95,7 @@ export class CredentialManager {
|
|
|
88
95
|
pdsUri: pdsUri,
|
|
89
96
|
email: raw.email,
|
|
90
97
|
emailConfirmed: raw.emailConfirmed,
|
|
91
|
-
emailAuthFactor: raw.
|
|
98
|
+
emailAuthFactor: raw.emailAuthFactor,
|
|
92
99
|
active: raw.active ?? true,
|
|
93
100
|
inactiveStatus: raw.status,
|
|
94
101
|
};
|
|
@@ -97,14 +104,14 @@ export class CredentialManager {
|
|
|
97
104
|
return newSession;
|
|
98
105
|
}
|
|
99
106
|
/**
|
|
100
|
-
*
|
|
101
|
-
* @param session
|
|
107
|
+
* resume from a persisted session
|
|
108
|
+
* @param session session data, taken from `AtpAuth#session` after login
|
|
102
109
|
*/
|
|
103
110
|
async resume(session) {
|
|
104
|
-
const now = Date.now() /
|
|
111
|
+
const now = Date.now() / 1_000 + 60 * 5;
|
|
105
112
|
const refreshToken = decodeJwt(session.refreshJwt);
|
|
106
113
|
if (now >= refreshToken.exp) {
|
|
107
|
-
throw new
|
|
114
|
+
throw new ClientResponseError({ status: 401, data: { error: 'InvalidToken' } });
|
|
108
115
|
}
|
|
109
116
|
const accessToken = decodeJwt(session.accessJwt);
|
|
110
117
|
this.session = session;
|
|
@@ -112,42 +119,43 @@ export class CredentialManager {
|
|
|
112
119
|
await this.#refreshSession();
|
|
113
120
|
}
|
|
114
121
|
else {
|
|
115
|
-
const promise = this.#server.get('com.atproto.server.getSession', {
|
|
122
|
+
const promise = ok(this.#server.get('com.atproto.server.getSession', {
|
|
116
123
|
headers: {
|
|
117
124
|
authorization: `Bearer ${session.accessJwt}`,
|
|
118
125
|
},
|
|
119
|
-
});
|
|
120
|
-
promise.then((
|
|
126
|
+
}));
|
|
127
|
+
promise.then((next) => {
|
|
121
128
|
const existing = this.session;
|
|
122
|
-
|
|
123
|
-
if (!existing) {
|
|
129
|
+
if (!existing || existing.did !== next.did) {
|
|
124
130
|
return;
|
|
125
131
|
}
|
|
126
132
|
this.#updateSession({ ...existing, ...next });
|
|
133
|
+
}, (_err) => {
|
|
134
|
+
// ignore error
|
|
127
135
|
});
|
|
128
136
|
}
|
|
129
137
|
if (!this.session) {
|
|
130
|
-
throw new
|
|
138
|
+
throw new ClientResponseError({ status: 401, data: { error: 'InvalidToken' } });
|
|
131
139
|
}
|
|
132
140
|
return this.session;
|
|
133
141
|
}
|
|
134
142
|
/**
|
|
135
|
-
*
|
|
136
|
-
* @param options
|
|
137
|
-
* @returns
|
|
143
|
+
* sign in to an account
|
|
144
|
+
* @param options credential options
|
|
145
|
+
* @returns session data
|
|
138
146
|
*/
|
|
139
147
|
async login(options) {
|
|
140
148
|
// Reset the session
|
|
141
149
|
this.session = undefined;
|
|
142
|
-
const
|
|
143
|
-
|
|
150
|
+
const session = await ok(this.#server.post('com.atproto.server.createSession', {
|
|
151
|
+
input: {
|
|
144
152
|
identifier: options.identifier,
|
|
145
153
|
password: options.password,
|
|
146
154
|
authFactorToken: options.code,
|
|
147
155
|
allowTakendown: options.allowTakendown,
|
|
148
156
|
},
|
|
149
|
-
});
|
|
150
|
-
return this.#updateSession(
|
|
157
|
+
}));
|
|
158
|
+
return this.#updateSession(session);
|
|
151
159
|
}
|
|
152
160
|
}
|
|
153
161
|
const isExpiredTokenResponse = async (response) => {
|
|
@@ -157,14 +165,18 @@ const isExpiredTokenResponse = async (response) => {
|
|
|
157
165
|
if (extractContentType(response.headers) !== 'application/json') {
|
|
158
166
|
return false;
|
|
159
167
|
}
|
|
168
|
+
// this is nasty as it relies heavily on what the PDS returns, but avoiding
|
|
169
|
+
// cloning and reading the request as much as possible is better.
|
|
160
170
|
// {"error":"ExpiredToken","message":"Token has expired"}
|
|
161
171
|
// {"error":"ExpiredToken","message":"Token is expired"}
|
|
162
172
|
if (extractContentLength(response.headers) > 54 * 1.5) {
|
|
163
173
|
return false;
|
|
164
174
|
}
|
|
165
175
|
try {
|
|
166
|
-
const
|
|
167
|
-
|
|
176
|
+
const data = await response.clone().json();
|
|
177
|
+
if (isXRPCErrorPayload(data)) {
|
|
178
|
+
return data.error === 'ExpiredToken';
|
|
179
|
+
}
|
|
168
180
|
}
|
|
169
181
|
catch { }
|
|
170
182
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential-manager.js","sourceRoot":"","sources":["../lib/credential-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"credential-manager.js","sourceRoot":"","sources":["../lib/credential-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/fetch-handler.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** fetch handler function */
|
|
2
2
|
export type FetchHandler = (pathname: string, init: RequestInit) => Promise<Response>;
|
|
3
|
-
/**
|
|
3
|
+
/** fetch handler in an object */
|
|
4
4
|
export interface FetchHandlerObject {
|
|
5
5
|
handle(this: FetchHandlerObject, pathname: string, init: RequestInit): Promise<Response>;
|
|
6
6
|
}
|
package/dist/fetch-handler.js
CHANGED
|
@@ -7,7 +7,7 @@ export const buildFetchHandler = (handler) => {
|
|
|
7
7
|
export const simpleFetchHandler = ({ service, fetch: _fetch = fetch, }) => {
|
|
8
8
|
return async (pathname, init) => {
|
|
9
9
|
const url = new URL(pathname, service);
|
|
10
|
-
return _fetch(url, init);
|
|
10
|
+
return await _fetch(url, init);
|
|
11
11
|
};
|
|
12
12
|
};
|
|
13
13
|
//# sourceMappingURL=fetch-handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-handler.js","sourceRoot":"","sources":["../lib/fetch-handler.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAA0C,EAAgB,EAAE;IAC7F,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,OAAO,CAAC;AAChB,CAAC,CAAC;AAOF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EAClC,OAAO,EACP,KAAK,EAAE,MAAM,GAAG,KAAK,GACM,EAAgB,EAAE;IAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;QAC/B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACvC,OAAO,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"fetch-handler.js","sourceRoot":"","sources":["../lib/fetch-handler.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAA0C,EAAgB,EAAE;IAC7F,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,OAAO,CAAC;AAChB,CAAC,CAAC;AAOF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EAClC,OAAO,EACP,KAAK,EAAE,MAAM,GAAG,KAAK,GACM,EAAgB,EAAE;IAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;QAC/B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACvC,OAAO,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC;AACH,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC"}
|