@atcute/client 4.1.1 → 4.2.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/dist/client.d.ts +11 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +4 -7
- package/dist/client.js.map +1 -1
- package/dist/credential-manager.d.ts +4 -0
- package/dist/credential-manager.d.ts.map +1 -1
- package/dist/credential-manager.js +71 -17
- package/dist/credential-manager.js.map +1 -1
- package/lib/client.ts +24 -14
- package/lib/credential-manager.ts +81 -18
- package/package.json +9 -6
package/dist/client.d.ts
CHANGED
|
@@ -49,9 +49,17 @@ export type ProcedureRequestOptions<TDef> = BaseRequestOptions & (TDef extends X
|
|
|
49
49
|
input?: Record<string, unknown> | Blob | ArrayBuffer | ArrayBufferView | ReadableStream;
|
|
50
50
|
params?: Record<string, unknown>;
|
|
51
51
|
});
|
|
52
|
-
export type CallRequestOptions<TMeta> = BaseRequestOptions & {
|
|
52
|
+
export type CallRequestOptions<TMeta> = BaseRequestOptions & (TMeta extends XRPCQueryMetadata<any, infer Output, any> ? Output extends XRPCBlobBodyParam ? {
|
|
53
|
+
as: ResponseFormat | null;
|
|
54
|
+
} : {
|
|
55
|
+
as?: ResponseFormat | null;
|
|
56
|
+
} : TMeta extends XRPCProcedureMetadata<any, any, infer Output, any> ? Output extends XRPCBlobBodyParam ? {
|
|
57
|
+
as: ResponseFormat | null;
|
|
58
|
+
} : {
|
|
59
|
+
as?: ResponseFormat | null;
|
|
60
|
+
} : {
|
|
53
61
|
as?: ResponseFormat | null;
|
|
54
|
-
} & (TMeta extends XRPCQueryMetadata<infer Params, any, any> ? Params extends ObjectSchema ? {
|
|
62
|
+
}) & (TMeta extends XRPCQueryMetadata<infer Params, any, any> ? Params extends ObjectSchema ? {
|
|
55
63
|
params: InferInput<Params>;
|
|
56
64
|
} : {
|
|
57
65
|
params?: Record<string, unknown>;
|
|
@@ -85,7 +93,7 @@ export type SuccessClientResponse<TDef, TInit> = BaseClientResponse & {
|
|
|
85
93
|
/** response data */
|
|
86
94
|
data: TInit extends {
|
|
87
95
|
as: infer TFormat;
|
|
88
|
-
} ? TFormat extends ResponseFormat ? FormattedResponse<TDef>[TFormat] : TFormat extends null ? null : never : TDef extends XRPCQueryMetadata<any, infer Body
|
|
96
|
+
} ? TFormat extends ResponseFormat ? FormattedResponse<TDef>[TFormat] : TFormat extends null ? null : never : TDef extends XRPCQueryMetadata<any, infer Body, any> ? Body extends XRPCLexBodyParam ? InferOutput<Body['schema']> : null : TDef extends XRPCProcedureMetadata<any, any, infer Body, any> ? Body extends XRPCLexBodyParam ? InferOutput<Body['schema']> : null : never;
|
|
89
97
|
};
|
|
90
98
|
/** represents a failed response returned by the client */
|
|
91
99
|
export type FailedClientResponse = BaseClientResponse & {
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../lib/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,KAAK,CAAC,MAAM,8BAA8B,CAAC;AAClD,OAAO,KAAK,EACX,UAAU,EACV,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAqB,KAAK,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGnG,KAAK,cAAc,CAAC,KAAK,SAAS,MAAM,IAAI,KAAK,SAAS,GAAG,GAC1D,OAAO,CACP;KACE,GAAG,IAAI,MAAM,KAAK,GAAG,KAAK,SAAS,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK;CACzE,CAAC,MAAM,KAAK,CAAC,EACd,SAAS,CACT,GACA,KAAK,CAAC;AAET,KAAK,eAAe,CAAC,KAAK,SAAS,MAAM,IAAI,cAAc,CAAC,KAAK,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;AAKhG,KAAK,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE3D,KAAK,iBAAiB,CAAC,IAAI,IAAI;IAC9B,IAAI,EAAE,IAAI,SAAS,iBAAiB,CAAC,GAAG,EAAE,MAAM,IAAI,SAAS,gBAAgB,EAAE,GAAG,CAAC,GAChF,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAC3B,IAAI,SAAS,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,IAAI,SAAS,gBAAgB,EAAE,GAAG,CAAC,GACrF,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAC3B,OAAO,CAAC;IACZ,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;CACnC,CAAC;AAKF,KAAK,kBAAkB,GAAG;IACzB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,mBAAmB,CAAC,IAAI,IAAI,kBAAkB,GACzD,CAAC,IAAI,SAAS,iBAAiB,CAAC,MAAM,MAAM,EAAE,MAAM,MAAM,EAAE,GAAG,CAAC,GAC7D,CAAC,MAAM,SAAS,YAAY,GAE3B;IAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;CAAE,GAE9B;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,GACtC,CAAC,MAAM,SAAS,gBAAgB,GAC7B;IAAE,EAAE,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;CAAE,GAE/B;IAAE,EAAE,EAAE,cAAc,GAAG,IAAI,CAAA;CAAE,CAAC,GAChC;IACA,EAAE,EAAE,cAAc,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,CAAC,CAAC;AAEN,MAAM,MAAM,uBAAuB,CAAC,IAAI,IAAI,kBAAkB,GAC7D,CAAC,IAAI,SAAS,qBAAqB,CAAC,MAAM,MAAM,EAAE,MAAM,KAAK,EAAE,MAAM,MAAM,EAAE,GAAG,CAAC,GAC9E,CAAC,MAAM,SAAS,YAAY,GAE3B;IAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;CAAE,GAE9B;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,GACtC,CAAC,KAAK,SAAS,gBAAgB,GAE7B;IAAE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;CAAE,GACrC,KAAK,SAAS,iBAAiB,GAE/B;IAAE,KAAK,EAAE,IAAI,GAAG,WAAW,GAAG,eAAe,GAAG,cAAc,CAAA;CAAE,GAEhE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,WAAW,GAAG,eAAe,GAAG,cAAc,CAAA;CAAE,CAAC,GAC/F,CAAC,MAAM,SAAS,gBAAgB,GAE9B;IAAE,EAAE,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;CAAE,GAE9B;IAAE,EAAE,EAAE,cAAc,GAAG,IAAI,CAAA;CAAE,CAAC,GAChC;IACA,EAAE,EAAE,cAAc,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,WAAW,GAAG,eAAe,GAAG,cAAc,CAAC;IACxF,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,CAAC,CAAC;AAEN,MAAM,MAAM,kBAAkB,CAAC,KAAK,IAAI,kBAAkB,GAAG;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../lib/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -46,13 +46,10 @@ export class Client {
|
|
|
46
46
|
}
|
|
47
47
|
const isQuery = schema.type === 'xrpc_query';
|
|
48
48
|
const method = isQuery ? 'get' : 'post';
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
: schema.output?.type === 'blob'
|
|
54
|
-
? 'blob'
|
|
55
|
-
: null;
|
|
49
|
+
if (options.as === undefined && schema.output?.type === 'blob') {
|
|
50
|
+
throw new TypeError(`\`as\` option is required for endpoints returning blobs`);
|
|
51
|
+
}
|
|
52
|
+
const format = options.as !== undefined ? options.as : schema.output?.type === 'lex' ? 'json' : null;
|
|
56
53
|
const response = await this.#perform(method, schema.nsid, {
|
|
57
54
|
params: options.params,
|
|
58
55
|
input: isQuery ? undefined : options.input,
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../lib/client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,8BAA8B,CAAC;AAWlD,OAAO,EAAE,iBAAiB,EAA8C,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../lib/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -90,6 +90,10 @@ export declare class CredentialManager implements FetchHandlerObject {
|
|
|
90
90
|
* @returns session data
|
|
91
91
|
*/
|
|
92
92
|
login(options: AuthLoginOptions): Promise<AtpSessionData>;
|
|
93
|
+
/**
|
|
94
|
+
* sign out of the current session, invalidating it server-side
|
|
95
|
+
*/
|
|
96
|
+
logout(): Promise<void>;
|
|
93
97
|
}
|
|
94
98
|
/** credentials */
|
|
95
99
|
export interface AuthLoginOptions {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential-manager.d.ts","sourceRoot":"","sources":["../lib/credential-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAK5C,OAAO,EAAsB,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIjF;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC5B,yBAAyB;IACzB,KAAK,EACF,oBAAoB,GACpB,qBAAqB,GACrB,+BAA+B,GAC/B,0BAA0B,GAC1B,uBAAuB,CAAC;IAC3B,kBAAkB;IAClB,GAAG,EAAE,GAAG,CAAC;IACT,sCAAsC;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;CACZ;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC7B,0BAA0B;IAC1B,KAAK,EAAE,qBAAqB,CAAC;IAC7B,yCAAyC;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,kBAAkB;IAClB,GAAG,EAAE,GAAG,CAAC;IACT,sDAAsD;IACtD,GAAG,EAAE,GAAG,CAAC;IACT,uCAAuC;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,mCAAmC;IACnC,GAAG,EAAE,MAAM,CAAC;CACZ;AAED,gDAAgD;AAChD,MAAM,WAAW,cAAc;IAC9B,oBAAoB;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,GAAG,EAAE,GAAG,CAAC;IACT,+FAA+F;IAC/F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4EAA4E;IAC5E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gFAAgF;IAChF,MAAM,EAAE,OAAO,CAAC;IAChB,sDAAsD;IACtD,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACxC,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAEhB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IAErB,sEAAsE;IACtE,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAC9C,yDAAyD;IACzD,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAC9C,sFAAsF;IACtF,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;CACpD;AAED,qBAAa,iBAAkB,YAAW,kBAAkB;;IAC3D,uDAAuD;IACvD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,2BAA2B;IAC3B,KAAK,EAAE,OAAO,KAAK,CAAC;IAcpB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,cAAc,CAAC;IAEzB,YAAY,EACX,OAAO,EACP,SAAS,EACT,SAAS,EACT,eAAe,EACf,KAAK,EAAE,MAAc,EACrB,EAAE,wBAAwB,EAS1B;IAED,mDAAmD;IACnD,IAAI,WAAW,WAEd;IAEK,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"credential-manager.d.ts","sourceRoot":"","sources":["../lib/credential-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,10 +38,10 @@ export class CredentialManager {
|
|
|
38
38
|
if (!this.session || headers.has('authorization')) {
|
|
39
39
|
return (0, this.fetch)(url, init);
|
|
40
40
|
}
|
|
41
|
-
|
|
41
|
+
const initialToken = this.session.accessJwt;
|
|
42
|
+
headers.set('authorization', `Bearer ${initialToken}`);
|
|
42
43
|
const initialResponse = await (0, this.fetch)(url, { ...init, headers });
|
|
43
|
-
|
|
44
|
-
if (!isExpired) {
|
|
44
|
+
if (initialResponse.status !== 401 && !(await isExpiredTokenResponse(initialResponse))) {
|
|
45
45
|
return initialResponse;
|
|
46
46
|
}
|
|
47
47
|
try {
|
|
@@ -51,13 +51,20 @@ export class CredentialManager {
|
|
|
51
51
|
return initialResponse;
|
|
52
52
|
}
|
|
53
53
|
// return initial response if:
|
|
54
|
-
// -
|
|
55
|
-
// -
|
|
56
|
-
|
|
54
|
+
// - request was aborted
|
|
55
|
+
// - refresh failed and cleared the session
|
|
56
|
+
// - token didn't actually change (refresh failed silently)
|
|
57
|
+
// - request body was a stream (can't be resent)
|
|
58
|
+
const updatedToken = this.session?.accessJwt;
|
|
59
|
+
if (init.signal?.aborted ||
|
|
60
|
+
!updatedToken ||
|
|
61
|
+
updatedToken === initialToken ||
|
|
62
|
+
init.body instanceof ReadableStream) {
|
|
57
63
|
return initialResponse;
|
|
58
64
|
}
|
|
59
|
-
//
|
|
60
|
-
|
|
65
|
+
// cancel initial response to avoid resource leaks (Node.js)
|
|
66
|
+
await initialResponse.body?.cancel();
|
|
67
|
+
headers.set('authorization', `Bearer ${updatedToken}`);
|
|
61
68
|
return await (0, this.fetch)(url, { ...init, headers });
|
|
62
69
|
}
|
|
63
70
|
#refreshSession() {
|
|
@@ -74,16 +81,25 @@ export class CredentialManager {
|
|
|
74
81
|
},
|
|
75
82
|
});
|
|
76
83
|
if (!response.ok) {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
+
const isExpired = response.status === 401 ||
|
|
85
|
+
response.data.error === 'ExpiredToken' ||
|
|
86
|
+
response.data.error === 'InvalidToken';
|
|
87
|
+
if (isExpired) {
|
|
88
|
+
this.session = undefined;
|
|
89
|
+
this.#onExpired?.(currentSession);
|
|
84
90
|
}
|
|
85
91
|
throw new ClientResponseError(response);
|
|
86
92
|
}
|
|
93
|
+
// DID must not change during refresh
|
|
94
|
+
if (response.data.did !== currentSession.did) {
|
|
95
|
+
this.session = undefined;
|
|
96
|
+
this.#onExpired?.(currentSession);
|
|
97
|
+
throw new ClientResponseError({ status: 401, data: { error: 'InvalidDID' } });
|
|
98
|
+
}
|
|
99
|
+
// protect against concurrent session updates
|
|
100
|
+
if (this.session !== currentSession) {
|
|
101
|
+
throw new Error('concurrent session update detected');
|
|
102
|
+
}
|
|
87
103
|
this.#updateSession({ ...currentSession, ...response.data });
|
|
88
104
|
this.#onRefresh?.(this.session);
|
|
89
105
|
}
|
|
@@ -114,17 +130,32 @@ export class CredentialManager {
|
|
|
114
130
|
* @param session session data, taken from `AtpAuth#session` after login
|
|
115
131
|
*/
|
|
116
132
|
async resume(session) {
|
|
133
|
+
// protect against concurrent resume of the same session
|
|
134
|
+
if (session.refreshJwt === this.session?.refreshJwt) {
|
|
135
|
+
await this.#refreshSessionPromise;
|
|
136
|
+
if (!this.session || session.did !== this.session.did) {
|
|
137
|
+
throw new ClientResponseError({ status: 401, data: { error: 'InvalidToken' } });
|
|
138
|
+
}
|
|
139
|
+
return this.session;
|
|
140
|
+
}
|
|
117
141
|
const now = Date.now() / 1_000 + 60 * 5;
|
|
118
142
|
const refreshToken = decodeJwt(session.refreshJwt);
|
|
119
|
-
if (now >= refreshToken.exp) {
|
|
143
|
+
if (now >= refreshToken.exp || refreshToken.sub !== session.did) {
|
|
120
144
|
throw new ClientResponseError({ status: 401, data: { error: 'InvalidToken' } });
|
|
121
145
|
}
|
|
122
146
|
const accessToken = decodeJwt(session.accessJwt);
|
|
147
|
+
if (accessToken.sub !== session.did) {
|
|
148
|
+
throw new ClientResponseError({ status: 401, data: { error: 'InvalidToken' } });
|
|
149
|
+
}
|
|
150
|
+
// set the session and clear any stale refresh promise
|
|
123
151
|
this.session = session;
|
|
152
|
+
this.#refreshSessionPromise = undefined;
|
|
124
153
|
if (now >= accessToken.exp) {
|
|
154
|
+
// access token expired, need to refresh
|
|
125
155
|
await this.#refreshSession();
|
|
126
156
|
}
|
|
127
157
|
else {
|
|
158
|
+
// access token still valid, fetch session info in background
|
|
128
159
|
const promise = ok(this.#server.get('com.atproto.server.getSession', {
|
|
129
160
|
headers: {
|
|
130
161
|
authorization: `Bearer ${session.accessJwt}`,
|
|
@@ -151,8 +182,9 @@ export class CredentialManager {
|
|
|
151
182
|
* @returns session data
|
|
152
183
|
*/
|
|
153
184
|
async login(options) {
|
|
154
|
-
//
|
|
185
|
+
// reset the session
|
|
155
186
|
this.session = undefined;
|
|
187
|
+
this.#refreshSessionPromise = undefined;
|
|
156
188
|
const session = await ok(this.#server.post('com.atproto.server.createSession', {
|
|
157
189
|
input: {
|
|
158
190
|
identifier: options.identifier,
|
|
@@ -163,6 +195,28 @@ export class CredentialManager {
|
|
|
163
195
|
}));
|
|
164
196
|
return this.#updateSession(session);
|
|
165
197
|
}
|
|
198
|
+
/**
|
|
199
|
+
* sign out of the current session, invalidating it server-side
|
|
200
|
+
*/
|
|
201
|
+
async logout() {
|
|
202
|
+
const currentSession = this.session;
|
|
203
|
+
if (!currentSession) {
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
this.session = undefined;
|
|
207
|
+
this.#refreshSessionPromise = undefined;
|
|
208
|
+
try {
|
|
209
|
+
await this.#server.post('com.atproto.server.deleteSession', {
|
|
210
|
+
as: null,
|
|
211
|
+
headers: {
|
|
212
|
+
authorization: `Bearer ${currentSession.refreshJwt}`,
|
|
213
|
+
},
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
// ignore errors - session is already cleared locally
|
|
218
|
+
}
|
|
219
|
+
}
|
|
166
220
|
}
|
|
167
221
|
const isExpiredTokenResponse = async (response) => {
|
|
168
222
|
if (response.status !== 400) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential-manager.js","sourceRoot":"","sources":["../lib/credential-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAoB,MAAM,kBAAkB,CAAC;AAKpE,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAA2B,MAAM,oBAAoB,CAAC;AAEjF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAgF3C,MAAM,OAAO,iBAAiB;IAC7B,uDAAuD;IAC9C,UAAU,CAAS;IAC5B,2BAA2B;IAC3B,KAAK,CAAe;IAEpB,kEAAkE;IAClE,OAAO,CAAS;IAChB,6EAA6E;IAC7E,sBAAsB,CAA4B;IAElD,sCAAsC;IACtC,UAAU,CAAwC;IAClD,8CAA8C;IAC9C,UAAU,CAAwC;IAClD,mCAAmC;IACnC,gBAAgB,CAA8C;IAE9D,6DAA6D;IAC7D,OAAO,CAAkB;IAEzB,YAAY,EACX,OAAO,EACP,SAAS,EACT,SAAS,EACT,eAAe,EACf,KAAK,EAAE,MAAM,GAAG,KAAK,GACK,EAAE;QAC5B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QAEpB,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAEvF,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;IAAA,CACxC;IAED,mDAAmD;IACnD,IAAI,WAAW,GAAG;QACjB,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC;IAAA,CAC/C;IAED,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,IAAiB,EAAqB;QACpE,MAAM,IAAI,CAAC,sBAAsB,CAAC;QAElC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE1C,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;YACnD,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACnC,CAAC;QAED,
|
|
1
|
+
{"version":3,"file":"credential-manager.js","sourceRoot":"","sources":["../lib/credential-manager.ts"],"names":[],"mappings":"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"}
|
package/lib/client.ts
CHANGED
|
@@ -91,9 +91,18 @@ export type ProcedureRequestOptions<TDef> = BaseRequestOptions &
|
|
|
91
91
|
params?: Record<string, unknown>;
|
|
92
92
|
});
|
|
93
93
|
|
|
94
|
-
export type CallRequestOptions<TMeta> = BaseRequestOptions &
|
|
95
|
-
as
|
|
96
|
-
|
|
94
|
+
export type CallRequestOptions<TMeta> = BaseRequestOptions &
|
|
95
|
+
// as is required if the endpoint returns blob, optional otherwise
|
|
96
|
+
(TMeta extends XRPCQueryMetadata<any, infer Output, any>
|
|
97
|
+
? Output extends XRPCBlobBodyParam
|
|
98
|
+
? { as: ResponseFormat | null }
|
|
99
|
+
: { as?: ResponseFormat | null }
|
|
100
|
+
: TMeta extends XRPCProcedureMetadata<any, any, infer Output, any>
|
|
101
|
+
? Output extends XRPCBlobBodyParam
|
|
102
|
+
? { as: ResponseFormat | null }
|
|
103
|
+
: { as?: ResponseFormat | null }
|
|
104
|
+
: { as?: ResponseFormat | null }) &
|
|
105
|
+
(TMeta extends XRPCQueryMetadata<infer Params, any, any>
|
|
97
106
|
? // query
|
|
98
107
|
Params extends ObjectSchema
|
|
99
108
|
? { params: InferInput<Params> }
|
|
@@ -144,10 +153,14 @@ export type SuccessClientResponse<TDef, TInit> = BaseClientResponse & {
|
|
|
144
153
|
: TFormat extends null
|
|
145
154
|
? null
|
|
146
155
|
: never
|
|
147
|
-
: TDef extends XRPCQueryMetadata<any, infer Body
|
|
148
|
-
?
|
|
149
|
-
: TDef extends XRPCProcedureMetadata<any, any, infer Body extends XRPCLexBodyParam, any>
|
|
156
|
+
: TDef extends XRPCQueryMetadata<any, infer Body, any>
|
|
157
|
+
? Body extends XRPCLexBodyParam
|
|
150
158
|
? InferOutput<Body['schema']>
|
|
159
|
+
: null
|
|
160
|
+
: TDef extends XRPCProcedureMetadata<any, any, infer Body, any>
|
|
161
|
+
? Body extends XRPCLexBodyParam
|
|
162
|
+
? InferOutput<Body['schema']>
|
|
163
|
+
: null
|
|
151
164
|
: never;
|
|
152
165
|
};
|
|
153
166
|
|
|
@@ -290,14 +303,11 @@ export class Client<TQueries = XRPCQueries, TProcedures = XRPCProcedures> {
|
|
|
290
303
|
const isQuery = schema.type === 'xrpc_query';
|
|
291
304
|
const method = isQuery ? 'get' : 'post';
|
|
292
305
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
: schema.output?.type === 'blob'
|
|
299
|
-
? 'blob'
|
|
300
|
-
: null;
|
|
306
|
+
if (options.as === undefined && schema.output?.type === 'blob') {
|
|
307
|
+
throw new TypeError(`\`as\` option is required for endpoints returning blobs`);
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
const format = options.as !== undefined ? options.as : schema.output?.type === 'lex' ? 'json' : null;
|
|
301
311
|
|
|
302
312
|
const response = await this.#perform(method, schema.nsid, {
|
|
303
313
|
params: options.params,
|
|
@@ -139,12 +139,12 @@ export class CredentialManager implements FetchHandlerObject {
|
|
|
139
139
|
return (0, this.fetch)(url, init);
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
-
|
|
142
|
+
const initialToken = this.session.accessJwt;
|
|
143
|
+
headers.set('authorization', `Bearer ${initialToken}`);
|
|
143
144
|
|
|
144
145
|
const initialResponse = await (0, this.fetch)(url, { ...init, headers });
|
|
145
|
-
const isExpired = await isExpiredTokenResponse(initialResponse);
|
|
146
146
|
|
|
147
|
-
if (!
|
|
147
|
+
if (initialResponse.status !== 401 && !(await isExpiredTokenResponse(initialResponse))) {
|
|
148
148
|
return initialResponse;
|
|
149
149
|
}
|
|
150
150
|
|
|
@@ -155,15 +155,24 @@ export class CredentialManager implements FetchHandlerObject {
|
|
|
155
155
|
}
|
|
156
156
|
|
|
157
157
|
// return initial response if:
|
|
158
|
-
// -
|
|
159
|
-
// -
|
|
160
|
-
|
|
158
|
+
// - request was aborted
|
|
159
|
+
// - refresh failed and cleared the session
|
|
160
|
+
// - token didn't actually change (refresh failed silently)
|
|
161
|
+
// - request body was a stream (can't be resent)
|
|
162
|
+
const updatedToken = this.session?.accessJwt;
|
|
163
|
+
if (
|
|
164
|
+
init.signal?.aborted ||
|
|
165
|
+
!updatedToken ||
|
|
166
|
+
updatedToken === initialToken ||
|
|
167
|
+
init.body instanceof ReadableStream
|
|
168
|
+
) {
|
|
161
169
|
return initialResponse;
|
|
162
170
|
}
|
|
163
171
|
|
|
164
|
-
//
|
|
165
|
-
|
|
172
|
+
// cancel initial response to avoid resource leaks (Node.js)
|
|
173
|
+
await initialResponse.body?.cancel();
|
|
166
174
|
|
|
175
|
+
headers.set('authorization', `Bearer ${updatedToken}`);
|
|
167
176
|
return await (0, this.fetch)(url, { ...init, headers });
|
|
168
177
|
}
|
|
169
178
|
|
|
@@ -186,18 +195,31 @@ export class CredentialManager implements FetchHandlerObject {
|
|
|
186
195
|
});
|
|
187
196
|
|
|
188
197
|
if (!response.ok) {
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
198
|
+
const isExpired =
|
|
199
|
+
response.status === 401 ||
|
|
200
|
+
response.data.error === 'ExpiredToken' ||
|
|
201
|
+
response.data.error === 'InvalidToken';
|
|
202
|
+
|
|
203
|
+
if (isExpired) {
|
|
204
|
+
this.session = undefined;
|
|
205
|
+
this.#onExpired?.(currentSession);
|
|
196
206
|
}
|
|
197
207
|
|
|
198
208
|
throw new ClientResponseError(response);
|
|
199
209
|
}
|
|
200
210
|
|
|
211
|
+
// DID must not change during refresh
|
|
212
|
+
if (response.data.did !== currentSession.did) {
|
|
213
|
+
this.session = undefined;
|
|
214
|
+
this.#onExpired?.(currentSession);
|
|
215
|
+
throw new ClientResponseError({ status: 401, data: { error: 'InvalidDID' } });
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
// protect against concurrent session updates
|
|
219
|
+
if (this.session !== currentSession) {
|
|
220
|
+
throw new Error('concurrent session update detected');
|
|
221
|
+
}
|
|
222
|
+
|
|
201
223
|
this.#updateSession({ ...currentSession, ...response.data });
|
|
202
224
|
this.#onRefresh?.(this.session!);
|
|
203
225
|
}
|
|
@@ -234,20 +256,36 @@ export class CredentialManager implements FetchHandlerObject {
|
|
|
234
256
|
* @param session session data, taken from `AtpAuth#session` after login
|
|
235
257
|
*/
|
|
236
258
|
async resume(session: AtpSessionData): Promise<AtpSessionData> {
|
|
259
|
+
// protect against concurrent resume of the same session
|
|
260
|
+
if (session.refreshJwt === this.session?.refreshJwt) {
|
|
261
|
+
await this.#refreshSessionPromise;
|
|
262
|
+
if (!this.session || session.did !== this.session.did) {
|
|
263
|
+
throw new ClientResponseError({ status: 401, data: { error: 'InvalidToken' } });
|
|
264
|
+
}
|
|
265
|
+
return this.session;
|
|
266
|
+
}
|
|
267
|
+
|
|
237
268
|
const now = Date.now() / 1_000 + 60 * 5;
|
|
238
269
|
|
|
239
270
|
const refreshToken = decodeJwt(session.refreshJwt) as AtpRefreshJwt;
|
|
240
|
-
|
|
241
|
-
if (now >= refreshToken.exp) {
|
|
271
|
+
if (now >= refreshToken.exp || refreshToken.sub !== session.did) {
|
|
242
272
|
throw new ClientResponseError({ status: 401, data: { error: 'InvalidToken' } });
|
|
243
273
|
}
|
|
244
274
|
|
|
245
275
|
const accessToken = decodeJwt(session.accessJwt) as AtpAccessJwt;
|
|
276
|
+
if (accessToken.sub !== session.did) {
|
|
277
|
+
throw new ClientResponseError({ status: 401, data: { error: 'InvalidToken' } });
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
// set the session and clear any stale refresh promise
|
|
246
281
|
this.session = session;
|
|
282
|
+
this.#refreshSessionPromise = undefined;
|
|
247
283
|
|
|
248
284
|
if (now >= accessToken.exp) {
|
|
285
|
+
// access token expired, need to refresh
|
|
249
286
|
await this.#refreshSession();
|
|
250
287
|
} else {
|
|
288
|
+
// access token still valid, fetch session info in background
|
|
251
289
|
const promise = ok(
|
|
252
290
|
this.#server.get('com.atproto.server.getSession', {
|
|
253
291
|
headers: {
|
|
@@ -284,8 +322,9 @@ export class CredentialManager implements FetchHandlerObject {
|
|
|
284
322
|
* @returns session data
|
|
285
323
|
*/
|
|
286
324
|
async login(options: AuthLoginOptions): Promise<AtpSessionData> {
|
|
287
|
-
//
|
|
325
|
+
// reset the session
|
|
288
326
|
this.session = undefined;
|
|
327
|
+
this.#refreshSessionPromise = undefined;
|
|
289
328
|
|
|
290
329
|
const session = await ok(
|
|
291
330
|
this.#server.post('com.atproto.server.createSession', {
|
|
@@ -300,6 +339,30 @@ export class CredentialManager implements FetchHandlerObject {
|
|
|
300
339
|
|
|
301
340
|
return this.#updateSession(session);
|
|
302
341
|
}
|
|
342
|
+
|
|
343
|
+
/**
|
|
344
|
+
* sign out of the current session, invalidating it server-side
|
|
345
|
+
*/
|
|
346
|
+
async logout(): Promise<void> {
|
|
347
|
+
const currentSession = this.session;
|
|
348
|
+
if (!currentSession) {
|
|
349
|
+
return;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
this.session = undefined;
|
|
353
|
+
this.#refreshSessionPromise = undefined;
|
|
354
|
+
|
|
355
|
+
try {
|
|
356
|
+
await this.#server.post('com.atproto.server.deleteSession', {
|
|
357
|
+
as: null,
|
|
358
|
+
headers: {
|
|
359
|
+
authorization: `Bearer ${currentSession.refreshJwt}`,
|
|
360
|
+
},
|
|
361
|
+
});
|
|
362
|
+
} catch {
|
|
363
|
+
// ignore errors - session is already cleared locally
|
|
364
|
+
}
|
|
365
|
+
}
|
|
303
366
|
}
|
|
304
367
|
|
|
305
368
|
/** credentials */
|
package/package.json
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@atcute/client",
|
|
4
|
-
"version": "4.
|
|
4
|
+
"version": "4.2.0",
|
|
5
5
|
"description": "lightweight and cute API client for AT Protocol",
|
|
6
6
|
"license": "0BSD",
|
|
7
7
|
"repository": {
|
|
8
8
|
"url": "https://github.com/mary-ext/atcute",
|
|
9
9
|
"directory": "packages/clients/client"
|
|
10
10
|
},
|
|
11
|
+
"publishConfig": {
|
|
12
|
+
"access": "public"
|
|
13
|
+
},
|
|
11
14
|
"files": [
|
|
12
15
|
"dist/",
|
|
13
16
|
"lib/",
|
|
@@ -19,13 +22,13 @@
|
|
|
19
22
|
},
|
|
20
23
|
"dependencies": {
|
|
21
24
|
"@atcute/identity": "^1.1.3",
|
|
22
|
-
"@atcute/lexicons": "^1.2.
|
|
25
|
+
"@atcute/lexicons": "^1.2.6"
|
|
23
26
|
},
|
|
24
27
|
"devDependencies": {
|
|
25
|
-
"@vitest/coverage-v8": "^4.0.
|
|
26
|
-
"vitest": "^4.0.
|
|
27
|
-
"@atcute/
|
|
28
|
-
"@atcute/
|
|
28
|
+
"@vitest/coverage-v8": "^4.0.16",
|
|
29
|
+
"vitest": "^4.0.16",
|
|
30
|
+
"@atcute/bluesky": "^3.2.14",
|
|
31
|
+
"@atcute/atproto": "^3.1.10",
|
|
29
32
|
"@atcute/internal-dev-env": "^1.0.2"
|
|
30
33
|
},
|
|
31
34
|
"scripts": {
|