@atcute/client 3.1.0 → 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/dist/client.d.ts CHANGED
@@ -1,4 +1,6 @@
1
- import type { At, Procedures, Queries } from './lexicons.js';
1
+ import type { Did } from '@atcute/lexicons';
2
+ import type { XRPCProcedures, XRPCQueries } from '@atcute/lexicons/ambient';
3
+ import type { InferInput, InferOutput, ObjectSchema, XRPCBlobBodyParam, XRPCLexBodyParam, XRPCProcedureMetadata, XRPCQueryMetadata } from '@atcute/lexicons/validations';
2
4
  import { type FetchHandler, type FetchHandlerObject } from './fetch-handler.js';
3
5
  type RequiredKeysOf<TType extends object> = TType extends any ? Exclude<{
4
6
  [Key in keyof TType]: TType extends Record<Key, TType[Key]> ? Key : never;
@@ -6,11 +8,7 @@ type RequiredKeysOf<TType extends object> = TType extends any ? Exclude<{
6
8
  type HasRequiredKeys<TType extends object> = RequiredKeysOf<TType> extends never ? false : true;
7
9
  type ResponseFormat = 'json' | 'blob' | 'bytes' | 'stream';
8
10
  type FormattedResponse<TDef> = {
9
- json: TDef extends {
10
- response: {
11
- json: infer TData;
12
- };
13
- } ? TData : unknown;
11
+ json: TDef extends XRPCQueryMetadata<any, infer Body extends XRPCLexBodyParam, any> ? InferOutput<Body['schema']> : TDef extends XRPCProcedureMetadata<any, any, infer Body extends XRPCLexBodyParam, any> ? InferOutput<Body['schema']> : unknown;
14
12
  blob: Blob;
15
13
  bytes: Uint8Array;
16
14
  stream: ReadableStream<Uint8Array>;
@@ -19,45 +17,36 @@ type BaseRequestOptions = {
19
17
  signal?: AbortSignal;
20
18
  headers?: HeadersInit;
21
19
  };
22
- export type QueryRequestOptions<TDef> = BaseRequestOptions & (TDef extends {
23
- response: infer TResponse;
24
- } ? TResponse extends {
25
- json: any;
26
- } ? {
20
+ export type QueryRequestOptions<TDef> = BaseRequestOptions & (TDef extends XRPCQueryMetadata<infer Params, infer Output, any> ? (Params extends ObjectSchema ? {
21
+ params: InferInput<Params>;
22
+ } : {
23
+ params?: Record<string, unknown>;
24
+ }) & (Output extends XRPCLexBodyParam ? {
27
25
  as?: ResponseFormat | null;
28
26
  } : {
29
27
  as: ResponseFormat | null;
30
- } : {
28
+ }) : {
31
29
  as: ResponseFormat | null;
32
- }) & (TDef extends {
33
- params: infer TParams;
34
- } ? {
35
- params: TParams;
36
- } : {
37
30
  params?: Record<string, unknown>;
38
31
  });
39
- export type ProcedureRequestOptions<TDef> = BaseRequestOptions & (TDef extends {
40
- response: infer TResponse;
41
- } ? TResponse extends {
42
- json: any;
43
- } ? {
32
+ export type ProcedureRequestOptions<TDef> = BaseRequestOptions & (TDef extends XRPCProcedureMetadata<infer Params, infer Input, infer Output, any> ? (Params extends ObjectSchema ? {
33
+ params: InferInput<Params>;
34
+ } : {
35
+ params?: Record<string, unknown>;
36
+ }) & (Input extends XRPCLexBodyParam ? {
37
+ input: InferInput<Input['schema']>;
38
+ } : Input extends XRPCBlobBodyParam ? {
39
+ input: Blob | ArrayBuffer | ArrayBufferView | ReadableStream;
40
+ } : {
41
+ input?: Record<string, unknown> | Blob | ArrayBuffer | ArrayBufferView | ReadableStream;
42
+ }) & (Output extends XRPCLexBodyParam ? {
44
43
  as?: ResponseFormat | null;
45
44
  } : {
46
45
  as: ResponseFormat | null;
47
- } : {
46
+ }) : {
48
47
  as: ResponseFormat | null;
49
- }) & (TDef extends {
50
- params: infer TParams;
51
- } ? {
52
- params: TParams;
53
- } : {
48
+ input?: Record<string, unknown> | Blob | ArrayBuffer | ArrayBufferView | ReadableStream;
54
49
  params?: Record<string, unknown>;
55
- }) & (TDef extends {
56
- input: infer TInput;
57
- } ? {
58
- input: TInput;
59
- } : {
60
- input?: Record<string, unknown>;
61
50
  });
62
51
  /** standard XRPC error payload structure */
63
52
  export type XRPCErrorPayload = {
@@ -78,11 +67,7 @@ export type SuccessClientResponse<TDef, TInit> = BaseClientResponse & {
78
67
  /** response data */
79
68
  data: TInit extends {
80
69
  as: infer TFormat;
81
- } ? TFormat extends ResponseFormat ? FormattedResponse<TDef>[TFormat] : TFormat extends null ? null : never : TDef extends {
82
- response: {
83
- json: infer TData;
84
- };
85
- } ? TData : never;
70
+ } ? TFormat extends ResponseFormat ? FormattedResponse<TDef>[TFormat] : TFormat extends null ? null : never : TDef extends XRPCQueryMetadata<any, infer Body extends XRPCLexBodyParam, any> ? InferOutput<Body['schema']> : TDef extends XRPCProcedureMetadata<any, any, infer Body extends XRPCLexBodyParam, any> ? InferOutput<Body['schema']> : never;
86
71
  };
87
72
  /** represents a failed response returned by the client */
88
73
  export type FailedClientResponse = BaseClientResponse & {
@@ -95,7 +80,7 @@ export type ClientResponse<TDef, TInit> = SuccessClientResponse<TDef, TInit> | F
95
80
  /** options for configuring service proxying */
96
81
  export type ServiceProxyOptions = {
97
82
  /** DID identifier that the upstream service should look up */
98
- did: At.Did;
83
+ did: Did;
99
84
  /**
100
85
  * the specific service ID within the resolved DID document's `service` array
101
86
  * that the upstream service should forward requests to.
@@ -117,7 +102,7 @@ export type ClientOptions = {
117
102
  proxy?: ServiceProxyOptions | null;
118
103
  };
119
104
  /** XRPC API client */
120
- export declare class Client<TQueries = Queries, TProcedures = Procedures> {
105
+ export declare class Client<TQueries = XRPCQueries, TProcedures = XRPCProcedures> {
121
106
  #private;
122
107
  handler: FetchHandler;
123
108
  proxy: ServiceProxyOptions | null;
package/dist/client.js CHANGED
@@ -1,5 +1,4 @@
1
1
  import { buildFetchHandler } from './fetch-handler.js';
2
- import { mergeHeaders } from './utils/http.js';
3
2
  const JSON_CONTENT_TYPE_RE = /\bapplication\/json\b/;
4
3
  /** XRPC API client */
5
4
  export class Client {
@@ -32,7 +31,7 @@ export class Client {
32
31
  method,
33
32
  signal,
34
33
  body: input && !isWebInput ? JSON.stringify(input) : input,
35
- headers: mergeHeaders(headers, {
34
+ headers: _mergeHeaders(headers, {
36
35
  'content-type': input && !isWebInput ? 'application/json' : null,
37
36
  'atproto-proxy': _constructProxyHeader(this.proxy),
38
37
  }),
@@ -138,6 +137,19 @@ const _constructProxyHeader = (proxy) => {
138
137
  }
139
138
  return null;
140
139
  };
140
+ const _mergeHeaders = (init, defaults) => {
141
+ let headers;
142
+ for (const name in defaults) {
143
+ const value = defaults[name];
144
+ if (value !== null) {
145
+ headers ??= new Headers(init);
146
+ if (!headers.has(name)) {
147
+ headers.set(name, value);
148
+ }
149
+ }
150
+ }
151
+ return headers ?? init;
152
+ };
141
153
  export const isXRPCErrorPayload = (input) => {
142
154
  if (typeof input !== 'object' || input == null) {
143
155
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../lib/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../lib/client.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { At } from './lexicons.js';
1
+ import type { Did } from '@atcute/lexicons';
2
2
  import { type FetchHandlerObject } from './fetch-handler.js';
3
3
  /**
4
4
  * represents the decoded access token, for convenience
@@ -8,7 +8,7 @@ export interface AtpAccessJwt {
8
8
  /** access token scope */
9
9
  scope: 'com.atproto.access' | 'com.atproto.appPass' | 'com.atproto.appPassPrivileged' | 'com.atproto.signupQueued' | 'com.atproto.takendown';
10
10
  /** account DID */
11
- sub: At.Did;
11
+ sub: Did;
12
12
  /** expiration time in Unix seconds */
13
13
  exp: number;
14
14
  /** token issued time in Unix seconds */
@@ -24,9 +24,9 @@ export interface AtpRefreshJwt {
24
24
  /** unique identifier for this session */
25
25
  jti: string;
26
26
  /** account DID */
27
- sub: At.Did;
27
+ sub: Did;
28
28
  /** intended audience of this refresh token, in DID */
29
- aud: At.Did;
29
+ aud: Did;
30
30
  /** token expiration time in seconds */
31
31
  exp: number;
32
32
  /** token issued time in seconds */
@@ -41,7 +41,7 @@ export interface AtpSessionData {
41
41
  /** account handle */
42
42
  handle: string;
43
43
  /** account DID */
44
- did: At.Did;
44
+ did: Did;
45
45
  /** PDS endpoint found in the DID document, this will be used as the service URI if provided */
46
46
  pdsUri?: string;
47
47
  /** email address of the account, might not be available if on app password */
@@ -1,6 +1,6 @@
1
+ import { getPdsEndpoint } from '@atcute/identity';
1
2
  import { Client, ClientResponseError, isXRPCErrorPayload, ok } from './client.js';
2
3
  import { simpleFetchHandler } from './fetch-handler.js';
3
- import { getPdsEndpoint } from './utils/did.js';
4
4
  import { decodeJwt } from './utils/jwt.js';
5
5
  export class CredentialManager {
6
6
  /** internal client instance for making authentication requests */
@@ -68,10 +68,13 @@ export class CredentialManager {
68
68
  },
69
69
  });
70
70
  if (!response.ok) {
71
- const error = response.data.error;
72
- if (error === 'ExpiredToken' || error === 'InvalidToken') {
73
- this.session = undefined;
74
- this.#onExpired?.(currentSession);
71
+ switch (response.data.error) {
72
+ case 'ExpiredToken':
73
+ case 'InvalidToken': {
74
+ this.session = undefined;
75
+ this.#onExpired?.(currentSession);
76
+ break;
77
+ }
75
78
  }
76
79
  throw new ClientResponseError(response);
77
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"credential-manager.js","sourceRoot":"","sources":["../lib/credential-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credential-manager.js","sourceRoot":"","sources":["../lib/credential-manager.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
1
  export * from './client.js';
2
- export * from './credential-manager.js';
3
2
  export * from './fetch-handler.js';
4
- export * from './rpc.js';
3
+ export * from './credential-manager.js';
package/dist/index.js CHANGED
@@ -1,5 +1,4 @@
1
1
  export * from './client.js';
2
- export * from './credential-manager.js';
3
2
  export * from './fetch-handler.js';
4
- export * from './rpc.js';
3
+ export * from './credential-manager.js';
5
4
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,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"}
package/lib/client.ts CHANGED
@@ -1,7 +1,16 @@
1
- import type { At, Procedures, Queries } from './lexicons.js';
1
+ import type { Did } from '@atcute/lexicons';
2
+ import type { XRPCProcedures, XRPCQueries } from '@atcute/lexicons/ambient';
3
+ import type {
4
+ InferInput,
5
+ InferOutput,
6
+ ObjectSchema,
7
+ XRPCBlobBodyParam,
8
+ XRPCLexBodyParam,
9
+ XRPCProcedureMetadata,
10
+ XRPCQueryMetadata,
11
+ } from '@atcute/lexicons/validations';
2
12
 
3
13
  import { buildFetchHandler, type FetchHandler, type FetchHandlerObject } from './fetch-handler.js';
4
- import { mergeHeaders } from './utils/http.js';
5
14
 
6
15
  // #region Type utilities
7
16
  type RequiredKeysOf<TType extends object> = TType extends any
@@ -21,7 +30,11 @@ type HasRequiredKeys<TType extends object> = RequiredKeysOf<TType> extends never
21
30
  type ResponseFormat = 'json' | 'blob' | 'bytes' | 'stream';
22
31
 
23
32
  type FormattedResponse<TDef> = {
24
- json: TDef extends { response: { json: infer TData } } ? TData : unknown;
33
+ json: TDef extends XRPCQueryMetadata<any, infer Body extends XRPCLexBodyParam, any>
34
+ ? InferOutput<Body['schema']>
35
+ : TDef extends XRPCProcedureMetadata<any, any, infer Body extends XRPCLexBodyParam, any>
36
+ ? InferOutput<Body['schema']>
37
+ : unknown;
25
38
  blob: Blob;
26
39
  bytes: Uint8Array;
27
40
  stream: ReadableStream<Uint8Array>;
@@ -36,27 +49,46 @@ type BaseRequestOptions = {
36
49
  };
37
50
 
38
51
  export type QueryRequestOptions<TDef> = BaseRequestOptions &
39
- (TDef extends { response: infer TResponse }
40
- ? TResponse extends { json: any }
41
- ? // query has JSON response, format is optionally specified
42
- { as?: ResponseFormat | null }
43
- : // query doesn't have JSON response, format needs to be specified
44
- { as: ResponseFormat | null }
45
- : // query doesn't specify a response, format can be null to ensure no response
46
- { as: ResponseFormat | null }) &
47
- (TDef extends { params: infer TParams } ? { params: TParams } : { params?: Record<string, unknown> });
52
+ (TDef extends XRPCQueryMetadata<infer Params, infer Output, any>
53
+ ? (Params extends ObjectSchema
54
+ ? // query has parameters
55
+ { params: InferInput<Params> }
56
+ : // query has no parameters
57
+ { params?: Record<string, unknown> }) &
58
+ (Output extends XRPCLexBodyParam // query has JSON response, format is optionally specified
59
+ ? { as?: ResponseFormat | null }
60
+ : // query doesn't have JSON response, format needs to be specified
61
+ { as: ResponseFormat | null })
62
+ : {
63
+ as: ResponseFormat | null;
64
+ params?: Record<string, unknown>;
65
+ });
48
66
 
49
67
  export type ProcedureRequestOptions<TDef> = BaseRequestOptions &
50
- (TDef extends { response: infer TResponse }
51
- ? TResponse extends { json: any }
52
- ? // procedure has JSON response, format is optionally specified
53
- { as?: ResponseFormat | null }
54
- : // procedure doesn't have JSON response, format needs to be specified
55
- { as: ResponseFormat | null }
56
- : // procedure doesn't specify a response, format can be null to ensure no response
57
- { as: ResponseFormat | null }) &
58
- (TDef extends { params: infer TParams } ? { params: TParams } : { params?: Record<string, unknown> }) &
59
- (TDef extends { input: infer TInput } ? { input: TInput } : { input?: Record<string, unknown> });
68
+ (TDef extends XRPCProcedureMetadata<infer Params, infer Input, infer Output, any>
69
+ ? (Params extends ObjectSchema
70
+ ? // procedure has parameters
71
+ { params: InferInput<Params> }
72
+ : // procedure has no parameters
73
+ { params?: Record<string, unknown> }) &
74
+ (Input extends XRPCLexBodyParam
75
+ ? // procedure requires JSON input
76
+ { input: InferInput<Input['schema']> }
77
+ : Input extends XRPCBlobBodyParam
78
+ ? // procedure requires blob
79
+ { input: Blob | ArrayBuffer | ArrayBufferView | ReadableStream }
80
+ : // procedure doesn't specify input
81
+ { input?: Record<string, unknown> | Blob | ArrayBuffer | ArrayBufferView | ReadableStream }) &
82
+ (Output extends XRPCLexBodyParam
83
+ ? // procedure has JSON response, format is optionally specified
84
+ { as?: ResponseFormat | null }
85
+ : // procedure doesn't have JSON response, format needs to be specified
86
+ { as: ResponseFormat | null })
87
+ : {
88
+ as: ResponseFormat | null;
89
+ input?: Record<string, unknown> | Blob | ArrayBuffer | ArrayBufferView | ReadableStream;
90
+ params?: Record<string, unknown>;
91
+ });
60
92
 
61
93
  type InternalRequestOptions = BaseRequestOptions & {
62
94
  as?: ResponseFormat | null;
@@ -92,9 +124,11 @@ export type SuccessClientResponse<TDef, TInit> = BaseClientResponse & {
92
124
  : TFormat extends null
93
125
  ? null
94
126
  : never
95
- : TDef extends { response: { json: infer TData } }
96
- ? TData
97
- : never;
127
+ : TDef extends XRPCQueryMetadata<any, infer Body extends XRPCLexBodyParam, any>
128
+ ? InferOutput<Body['schema']>
129
+ : TDef extends XRPCProcedureMetadata<any, any, infer Body extends XRPCLexBodyParam, any>
130
+ ? InferOutput<Body['schema']>
131
+ : never;
98
132
  };
99
133
 
100
134
  /** represents a failed response returned by the client */
@@ -113,7 +147,7 @@ export type ClientResponse<TDef, TInit> = SuccessClientResponse<TDef, TInit> | F
113
147
  /** options for configuring service proxying */
114
148
  export type ServiceProxyOptions = {
115
149
  /** DID identifier that the upstream service should look up */
116
- did: At.Did;
150
+ did: Did;
117
151
  /**
118
152
  * the specific service ID within the resolved DID document's `service` array
119
153
  * that the upstream service should forward requests to.
@@ -139,7 +173,7 @@ export type ClientOptions = {
139
173
  const JSON_CONTENT_TYPE_RE = /\bapplication\/json\b/;
140
174
 
141
175
  /** XRPC API client */
142
- export class Client<TQueries = Queries, TProcedures = Procedures> {
176
+ export class Client<TQueries = XRPCQueries, TProcedures = XRPCProcedures> {
143
177
  handler: FetchHandler;
144
178
  proxy: ServiceProxyOptions | null;
145
179
 
@@ -206,7 +240,7 @@ export class Client<TQueries = Queries, TProcedures = Procedures> {
206
240
  method,
207
241
  signal,
208
242
  body: input && !isWebInput ? JSON.stringify(input) : input,
209
- headers: mergeHeaders(headers, {
243
+ headers: _mergeHeaders(headers, {
210
244
  'content-type': input && !isWebInput ? 'application/json' : null,
211
245
  'atproto-proxy': _constructProxyHeader(this.proxy),
212
246
  }),
@@ -331,6 +365,27 @@ const _constructProxyHeader = (proxy: ServiceProxyOptions | null | undefined): s
331
365
  return null;
332
366
  };
333
367
 
368
+ const _mergeHeaders = (
369
+ init: HeadersInit | undefined,
370
+ defaults: Record<string, string | null>,
371
+ ): HeadersInit | undefined => {
372
+ let headers: Headers | undefined;
373
+
374
+ for (const name in defaults) {
375
+ const value = defaults[name];
376
+
377
+ if (value !== null) {
378
+ headers ??= new Headers(init);
379
+
380
+ if (!headers.has(name)) {
381
+ headers.set(name, value);
382
+ }
383
+ }
384
+ }
385
+
386
+ return headers ?? init;
387
+ };
388
+
334
389
  export const isXRPCErrorPayload = (input: any): input is XRPCErrorPayload => {
335
390
  if (typeof input !== 'object' || input == null) {
336
391
  return false;
@@ -1,9 +1,12 @@
1
- import type { At, ComAtprotoServerCreateSession } from './lexicons.js';
1
+ import { getPdsEndpoint, type DidDocument } from '@atcute/identity';
2
+ import type { Did } from '@atcute/lexicons';
3
+ import type { InferXRPCBodyOutput } from '@atcute/lexicons/validations';
4
+
5
+ import type { ComAtprotoServerCreateSession } from '@atcute/atproto';
2
6
 
3
7
  import { Client, ClientResponseError, isXRPCErrorPayload, ok } from './client.js';
4
8
  import { simpleFetchHandler, type FetchHandlerObject } from './fetch-handler.js';
5
9
 
6
- import { getPdsEndpoint, type DidDocument } from './utils/did.js';
7
10
  import { decodeJwt } from './utils/jwt.js';
8
11
 
9
12
  /**
@@ -19,7 +22,7 @@ export interface AtpAccessJwt {
19
22
  | 'com.atproto.signupQueued'
20
23
  | 'com.atproto.takendown';
21
24
  /** account DID */
22
- sub: At.Did;
25
+ sub: Did;
23
26
  /** expiration time in Unix seconds */
24
27
  exp: number;
25
28
  /** token issued time in Unix seconds */
@@ -36,9 +39,9 @@ export interface AtpRefreshJwt {
36
39
  /** unique identifier for this session */
37
40
  jti: string;
38
41
  /** account DID */
39
- sub: At.Did;
42
+ sub: Did;
40
43
  /** intended audience of this refresh token, in DID */
41
- aud: At.Did;
44
+ aud: Did;
42
45
  /** token expiration time in seconds */
43
46
  exp: number;
44
47
  /** token issued time in seconds */
@@ -54,7 +57,7 @@ export interface AtpSessionData {
54
57
  /** account handle */
55
58
  handle: string;
56
59
  /** account DID */
57
- did: At.Did;
60
+ did: Did;
58
61
  /** PDS endpoint found in the DID document, this will be used as the service URI if provided */
59
62
  pdsUri?: string;
60
63
  /** email address of the account, might not be available if on app password */
@@ -184,11 +187,13 @@ export class CredentialManager implements FetchHandlerObject {
184
187
  });
185
188
 
186
189
  if (!response.ok) {
187
- const error = response.data.error;
188
-
189
- if (error === 'ExpiredToken' || error === 'InvalidToken') {
190
- this.session = undefined;
191
- this.#onExpired?.(currentSession);
190
+ switch (response.data.error) {
191
+ case 'ExpiredToken':
192
+ case 'InvalidToken': {
193
+ this.session = undefined;
194
+ this.#onExpired?.(currentSession);
195
+ break;
196
+ }
192
197
  }
193
198
 
194
199
  throw new ClientResponseError(response);
@@ -198,7 +203,9 @@ export class CredentialManager implements FetchHandlerObject {
198
203
  this.#onRefresh?.(this.session!);
199
204
  }
200
205
 
201
- #updateSession(raw: ComAtprotoServerCreateSession.Output): AtpSessionData {
206
+ #updateSession(
207
+ raw: InferXRPCBodyOutput<ComAtprotoServerCreateSession.mainSchema['output']>,
208
+ ): AtpSessionData {
202
209
  const didDoc = raw.didDoc as DidDocument | undefined;
203
210
 
204
211
  let pdsUri: string | undefined;
package/lib/env.d.ts ADDED
@@ -0,0 +1 @@
1
+ import type {} from '@atcute/atproto';
package/lib/index.ts CHANGED
@@ -1,4 +1,3 @@
1
1
  export * from './client.js';
2
- export * from './credential-manager.js';
3
2
  export * from './fetch-handler.js';
4
- export * from './rpc.js';
3
+ export * from './credential-manager.js';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@atcute/client",
4
- "version": "3.1.0",
4
+ "version": "4.0.0",
5
5
  "description": "lightweight and cute API client for AT Protocol",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -15,22 +15,23 @@
15
15
  "!lib/**/*.test.ts"
16
16
  ],
17
17
  "exports": {
18
- ".": "./dist/index.js",
19
- "./lexicons": "./dist/lexicons.js",
20
- "./utils/did": "./dist/utils/did.js",
21
- "./utils/http": "./dist/utils/http.js",
22
- "./utils/jwt": "./dist/utils/jwt.js"
18
+ ".": "./dist/index.js"
19
+ },
20
+ "dependencies": {
21
+ "@atcute/identity": "^1.0.0",
22
+ "@atcute/lexicons": "^1.0.0"
23
23
  },
24
24
  "devDependencies": {
25
- "@vitest/coverage-v8": "^3.0.4",
26
- "vitest": "^3.0.4",
27
- "@atcute/internal-dev-env": "^1.0.1",
28
- "@atcute/lex-cli": "^1.1.2"
25
+ "@vitest/coverage-v8": "^3.1.3",
26
+ "vitest": "^3.1.3",
27
+ "@atcute/bluesky": "^3.0.0",
28
+ "@atcute/atproto": "^3.0.0",
29
+ "@atcute/internal-dev-env": "^1.0.1"
29
30
  },
30
31
  "scripts": {
31
32
  "build": "tsc --project tsconfig.build.json",
33
+ "postbuild": "node ./scripts/ensure-files.js",
32
34
  "test": "vitest run --coverage",
33
- "generate": "./scripts/generate-lexicons.sh",
34
35
  "prepublish": "rm -rf dist; pnpm run build"
35
36
  }
36
37
  }