@ascorbic/pds 0.1.0 → 0.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/index.d.ts CHANGED
@@ -3,10 +3,11 @@ import { BlockMap, CommitData, ReadableBlockstore, Repo, RepoStorage } from "@at
3
3
  import { Secp256k1Keypair } from "@atproto/crypto";
4
4
  import { CID } from "@atproto/lex-data";
5
5
  import { Hono } from "hono";
6
+ import * as _ascorbic_atproto_oauth_provider0 from "@ascorbic/atproto-oauth-provider";
7
+ import { AuthCodeData, ClientMetadata, OAuthStorage, PARData, TokenData } from "@ascorbic/atproto-oauth-provider";
6
8
  import * as hono_types0 from "hono/types";
7
9
 
8
10
  //#region src/storage.d.ts
9
-
10
11
  /**
11
12
  * SQLite-backed repository storage for Cloudflare Durable Objects.
12
13
  *
@@ -18,8 +19,9 @@ declare class SqliteRepoStorage extends ReadableBlockstore implements RepoStorag
18
19
  constructor(sql: SqlStorage);
19
20
  /**
20
21
  * Initialize the database schema. Should be called once on DO startup.
22
+ * @param initialActive - Whether the account should start in active state (default true)
21
23
  */
22
- initSchema(): void;
24
+ initSchema(initialActive?: boolean): void;
23
25
  /**
24
26
  * Get the current root CID of the repository.
25
27
  */
@@ -87,6 +89,94 @@ declare class SqliteRepoStorage extends ReadableBlockstore implements RepoStorag
87
89
  * Update user preferences.
88
90
  */
89
91
  putPreferences(preferences: unknown[]): Promise<void>;
92
+ /**
93
+ * Get the activation state of the account.
94
+ */
95
+ getActive(): Promise<boolean>;
96
+ /**
97
+ * Set the activation state of the account.
98
+ */
99
+ setActive(active: boolean): Promise<void>;
100
+ /**
101
+ * Add a blob reference from a record.
102
+ */
103
+ addRecordBlob(recordUri: string, blobCid: string): void;
104
+ /**
105
+ * Add multiple blob references from a record.
106
+ */
107
+ addRecordBlobs(recordUri: string, blobCids: string[]): void;
108
+ /**
109
+ * Remove all blob references for a record.
110
+ */
111
+ removeRecordBlobs(recordUri: string): void;
112
+ /**
113
+ * Track an imported blob.
114
+ */
115
+ trackImportedBlob(cid: string, size: number, mimeType: string): void;
116
+ /**
117
+ * Check if a blob has been imported.
118
+ */
119
+ isBlobImported(cid: string): boolean;
120
+ /**
121
+ * Count expected blobs (distinct blobs referenced by records).
122
+ */
123
+ countExpectedBlobs(): number;
124
+ /**
125
+ * Count imported blobs.
126
+ */
127
+ countImportedBlobs(): number;
128
+ /**
129
+ * List blobs that are referenced but not yet imported.
130
+ */
131
+ listMissingBlobs(limit?: number, cursor?: string): {
132
+ blobs: Array<{
133
+ cid: string;
134
+ recordUri: string;
135
+ }>;
136
+ cursor?: string;
137
+ };
138
+ /**
139
+ * Clear all blob tracking data (for testing).
140
+ */
141
+ clearBlobTracking(): void;
142
+ }
143
+ //#endregion
144
+ //#region src/oauth-storage.d.ts
145
+ /**
146
+ * SQLite-backed OAuth storage for Cloudflare Durable Objects.
147
+ *
148
+ * Implements the OAuthStorage interface from @ascorbic/atproto-oauth-provider,
149
+ * storing OAuth data in SQLite tables within a Durable Object.
150
+ */
151
+ declare class SqliteOAuthStorage implements OAuthStorage {
152
+ private sql;
153
+ constructor(sql: SqlStorage);
154
+ /**
155
+ * Initialize the OAuth database schema. Should be called once on DO startup.
156
+ */
157
+ initSchema(): void;
158
+ /**
159
+ * Clean up expired entries. Should be called periodically.
160
+ */
161
+ cleanup(): void;
162
+ saveAuthCode(code: string, data: AuthCodeData): Promise<void>;
163
+ getAuthCode(code: string): Promise<AuthCodeData | null>;
164
+ deleteAuthCode(code: string): Promise<void>;
165
+ saveTokens(data: TokenData): Promise<void>;
166
+ getTokenByAccess(accessToken: string): Promise<TokenData | null>;
167
+ getTokenByRefresh(refreshToken: string): Promise<TokenData | null>;
168
+ revokeToken(accessToken: string): Promise<void>;
169
+ revokeAllTokens(sub: string): Promise<void>;
170
+ saveClient(clientId: string, metadata: ClientMetadata): Promise<void>;
171
+ getClient(clientId: string): Promise<ClientMetadata | null>;
172
+ savePAR(requestUri: string, data: PARData): Promise<void>;
173
+ getPAR(requestUri: string): Promise<PARData | null>;
174
+ deletePAR(requestUri: string): Promise<void>;
175
+ checkAndSaveNonce(nonce: string): Promise<boolean>;
176
+ /**
177
+ * Clear all OAuth data (for testing).
178
+ */
179
+ destroy(): void;
90
180
  }
91
181
  //#endregion
92
182
  //#region src/blobs.d.ts
@@ -125,6 +215,8 @@ interface PDSEnv {
125
215
  ACCOUNT: DurableObjectNamespace<AccountDurableObject>;
126
216
  /** R2 bucket for blob storage (optional) */
127
217
  BLOBS?: R2Bucket;
218
+ /** Initial activation state for new accounts (default: true) */
219
+ INITIAL_ACTIVE?: string;
128
220
  }
129
221
  //#endregion
130
222
  //#region src/account-do.d.ts
@@ -139,6 +231,7 @@ interface PDSEnv {
139
231
  */
140
232
  declare class AccountDurableObject extends DurableObject<PDSEnv> {
141
233
  private storage;
234
+ private oauthStorage;
142
235
  private repo;
143
236
  private keypair;
144
237
  private sequencer;
@@ -158,10 +251,18 @@ declare class AccountDurableObject extends DurableObject<PDSEnv> {
158
251
  * Get the storage adapter for direct access (used by tests and internal operations).
159
252
  */
160
253
  getStorage(): Promise<SqliteRepoStorage>;
254
+ /**
255
+ * Get the OAuth storage adapter for OAuth operations.
256
+ */
257
+ getOAuthStorage(): Promise<SqliteOAuthStorage>;
161
258
  /**
162
259
  * Get the Repo instance for repository operations.
163
260
  */
164
261
  getRepo(): Promise<Repo>;
262
+ /**
263
+ * Ensure the account is active. Throws error if deactivated.
264
+ */
265
+ ensureActive(): Promise<void>;
165
266
  /**
166
267
  * Get the signing keypair for repository operations.
167
268
  */
@@ -264,6 +365,11 @@ declare class AccountDurableObject extends DurableObject<PDSEnv> {
264
365
  * RPC method: Export repo as CAR
265
366
  */
266
367
  rpcGetRepoCar(): Promise<Uint8Array>;
368
+ /**
369
+ * RPC method: Get specific blocks by CID as CAR file
370
+ * Used for partial sync and migration.
371
+ */
372
+ rpcGetBlocks(cids: string[]): Promise<Uint8Array>;
267
373
  /**
268
374
  * RPC method: Import repo from CAR file
269
375
  * This is used for account migration - importing an existing repository
@@ -328,12 +434,87 @@ declare class AccountDurableObject extends DurableObject<PDSEnv> {
328
434
  * RPC method: Put user preferences
329
435
  */
330
436
  rpcPutPreferences(preferences: unknown[]): Promise<void>;
437
+ /**
438
+ * RPC method: Get account activation state
439
+ */
440
+ rpcGetActive(): Promise<boolean>;
441
+ /**
442
+ * RPC method: Activate account
443
+ */
444
+ rpcActivateAccount(): Promise<void>;
445
+ /**
446
+ * RPC method: Deactivate account
447
+ */
448
+ rpcDeactivateAccount(): Promise<void>;
449
+ /**
450
+ * RPC method: Count blocks in storage
451
+ */
452
+ rpcCountBlocks(): Promise<number>;
453
+ /**
454
+ * RPC method: Count records in repository
455
+ */
456
+ rpcCountRecords(): Promise<number>;
457
+ /**
458
+ * RPC method: Count expected blobs (referenced in records)
459
+ */
460
+ rpcCountExpectedBlobs(): Promise<number>;
461
+ /**
462
+ * RPC method: Count imported blobs
463
+ */
464
+ rpcCountImportedBlobs(): Promise<number>;
465
+ /**
466
+ * RPC method: List missing blobs (referenced but not imported)
467
+ */
468
+ rpcListMissingBlobs(limit?: number, cursor?: string): Promise<{
469
+ blobs: Array<{
470
+ cid: string;
471
+ recordUri: string;
472
+ }>;
473
+ cursor?: string;
474
+ }>;
475
+ /**
476
+ * RPC method: Reset migration state.
477
+ * Clears imported repo and blob tracking to allow re-import.
478
+ * Only works when account is deactivated.
479
+ */
480
+ rpcResetMigration(): Promise<{
481
+ blocksDeleted: number;
482
+ blobsCleared: number;
483
+ }>;
331
484
  /**
332
485
  * Emit an identity event to notify downstream services to refresh identity cache.
333
486
  */
334
487
  rpcEmitIdentityEvent(handle: string): Promise<{
335
488
  seq: number;
336
489
  }>;
490
+ /** Save an authorization code */
491
+ rpcSaveAuthCode(code: string, data: _ascorbic_atproto_oauth_provider0.AuthCodeData): Promise<void>;
492
+ /** Get authorization code data */
493
+ rpcGetAuthCode(code: string): Promise<_ascorbic_atproto_oauth_provider0.AuthCodeData | null>;
494
+ /** Delete an authorization code */
495
+ rpcDeleteAuthCode(code: string): Promise<void>;
496
+ /** Save token data */
497
+ rpcSaveTokens(data: _ascorbic_atproto_oauth_provider0.TokenData): Promise<void>;
498
+ /** Get token data by access token */
499
+ rpcGetTokenByAccess(accessToken: string): Promise<_ascorbic_atproto_oauth_provider0.TokenData | null>;
500
+ /** Get token data by refresh token */
501
+ rpcGetTokenByRefresh(refreshToken: string): Promise<_ascorbic_atproto_oauth_provider0.TokenData | null>;
502
+ /** Revoke a token */
503
+ rpcRevokeToken(accessToken: string): Promise<void>;
504
+ /** Revoke all tokens for a user */
505
+ rpcRevokeAllTokens(sub: string): Promise<void>;
506
+ /** Save client metadata */
507
+ rpcSaveClient(clientId: string, metadata: _ascorbic_atproto_oauth_provider0.ClientMetadata): Promise<void>;
508
+ /** Get client metadata */
509
+ rpcGetClient(clientId: string): Promise<_ascorbic_atproto_oauth_provider0.ClientMetadata | null>;
510
+ /** Save PAR data */
511
+ rpcSavePAR(requestUri: string, data: _ascorbic_atproto_oauth_provider0.PARData): Promise<void>;
512
+ /** Get PAR data */
513
+ rpcGetPAR(requestUri: string): Promise<_ascorbic_atproto_oauth_provider0.PARData | null>;
514
+ /** Delete PAR data */
515
+ rpcDeletePAR(requestUri: string): Promise<void>;
516
+ /** Check and save DPoP nonce */
517
+ rpcCheckAndSaveNonce(nonce: string): Promise<boolean>;
337
518
  /**
338
519
  * HTTP fetch handler for WebSocket upgrades.
339
520
  * This is used instead of RPC to avoid WebSocket serialization errors.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/storage.ts","../src/blobs.ts","../src/types.ts","../src/account-do.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/storage.ts","../src/oauth-storage.ts","../src/blobs.ts","../src/types.ts","../src/account-do.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}