@getcirrus/pds 0.10.2 → 0.10.3

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/cli.js CHANGED
@@ -611,7 +611,7 @@ var PDSClient = class PDSClient {
611
611
  * Get account status including migration progress
612
612
  */
613
613
  async getAccountStatus() {
614
- const url = new URL("/xrpc/com.atproto.server.getAccountStatus", this.baseUrl);
614
+ const url = new URL("/xrpc/com.atproto.server.checkAccountStatus", this.baseUrl);
615
615
  const headers = {};
616
616
  if (this.authToken) headers["Authorization"] = `Bearer ${this.authToken}`;
617
617
  const res = await fetch(url.toString(), {
@@ -2113,6 +2113,15 @@ const initCommand = defineCommand({
2113
2113
  spinner.stop("Password hashed");
2114
2114
  return hash;
2115
2115
  });
2116
+ const email = await promptText({
2117
+ message: "Email address (optional, some clients expect it - press Enter to skip)",
2118
+ placeholder: "you@example.com",
2119
+ defaultValue: "",
2120
+ validate: (value) => {
2121
+ if (!value) return;
2122
+ if (!value.includes("@")) return "Must be a valid email address";
2123
+ }
2124
+ });
2116
2125
  spinner.start("Updating wrangler.jsonc...");
2117
2126
  setWorkerName(workerName);
2118
2127
  setVars({
@@ -2121,7 +2130,8 @@ const initCommand = defineCommand({
2121
2130
  HANDLE: handle,
2122
2131
  SIGNING_KEY_PUBLIC: signingKeyPublic,
2123
2132
  INITIAL_ACTIVE: initialActive,
2124
- DATA_LOCATION: dataLocation
2133
+ DATA_LOCATION: dataLocation,
2134
+ ...email ? { EMAIL: email } : {}
2125
2135
  });
2126
2136
  setCustomDomains([hostname]);
2127
2137
  spinner.stop("wrangler.jsonc updated");
package/dist/index.d.ts CHANGED
@@ -97,6 +97,14 @@ declare class SqliteRepoStorage extends ReadableBlockstore implements RepoStorag
97
97
  * Set the activation state of the account.
98
98
  */
99
99
  setActive(active: boolean): Promise<void>;
100
+ /**
101
+ * Get the stored email address.
102
+ */
103
+ getEmail(): string | null;
104
+ /**
105
+ * Set the email address.
106
+ */
107
+ setEmail(email: string): void;
100
108
  /**
101
109
  * Add a blob reference from a record.
102
110
  */
@@ -296,6 +304,8 @@ interface PDSEnv {
296
304
  ACCOUNT: DurableObjectNamespace<AccountDurableObject>;
297
305
  /** R2 bucket for blob storage (optional) */
298
306
  BLOBS?: R2Bucket;
307
+ /** Account email address (optional, used by some clients) */
308
+ EMAIL?: string;
299
309
  /** Initial activation state for new accounts (default: true) */
300
310
  INITIAL_ACTIVE?: string;
301
311
  /**
@@ -553,6 +563,16 @@ declare class AccountDurableObject extends DurableObject<PDSEnv> {
553
563
  * RPC method: Put user preferences
554
564
  */
555
565
  rpcPutPreferences(preferences: unknown[]): Promise<void>;
566
+ /**
567
+ * RPC method: Get stored email
568
+ */
569
+ rpcGetEmail(): Promise<{
570
+ email: string | null;
571
+ }>;
572
+ /**
573
+ * RPC method: Update stored email
574
+ */
575
+ rpcUpdateEmail(email: string): Promise<void>;
556
576
  /**
557
577
  * RPC method: Get account activation state
558
578
  */
@@ -1 +1 @@
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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"}
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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"}
package/dist/index.js CHANGED
@@ -128,7 +128,8 @@ var SqliteRepoStorage = class extends ReadableBlockstore {
128
128
  root_cid TEXT,
129
129
  rev TEXT,
130
130
  seq INTEGER NOT NULL DEFAULT 0,
131
- active INTEGER NOT NULL DEFAULT 1
131
+ active INTEGER NOT NULL DEFAULT 1,
132
+ email TEXT
132
133
  );
133
134
 
134
135
  -- Initialize with empty state if not exists
@@ -189,6 +190,9 @@ var SqliteRepoStorage = class extends ReadableBlockstore {
189
190
  name TEXT
190
191
  );
191
192
  `);
193
+ try {
194
+ this.sql.exec("ALTER TABLE repo_state ADD COLUMN email TEXT");
195
+ } catch {}
192
196
  }
193
197
  /**
194
198
  * Get the current root CID of the repository.
@@ -333,6 +337,19 @@ var SqliteRepoStorage = class extends ReadableBlockstore {
333
337
  this.sql.exec("UPDATE repo_state SET active = ? WHERE id = 1", active ? 1 : 0);
334
338
  }
335
339
  /**
340
+ * Get the stored email address.
341
+ */
342
+ getEmail() {
343
+ const rows = this.sql.exec("SELECT email FROM repo_state WHERE id = 1").toArray();
344
+ return rows.length > 0 ? rows[0].email ?? null : null;
345
+ }
346
+ /**
347
+ * Set the email address.
348
+ */
349
+ setEmail(email) {
350
+ this.sql.exec("UPDATE repo_state SET email = ? WHERE id = 1", email);
351
+ }
352
+ /**
336
353
  * Add a blob reference from a record.
337
354
  */
338
355
  addRecordBlob(recordUri, blobCid) {
@@ -1582,6 +1599,18 @@ var AccountDurableObject = class extends DurableObject {
1582
1599
  await (await this.getStorage()).putPreferences(preferences);
1583
1600
  }
1584
1601
  /**
1602
+ * RPC method: Get stored email
1603
+ */
1604
+ async rpcGetEmail() {
1605
+ return { email: (await this.getStorage()).getEmail() };
1606
+ }
1607
+ /**
1608
+ * RPC method: Update stored email
1609
+ */
1610
+ async rpcUpdateEmail(email) {
1611
+ (await this.getStorage()).setEmail(email);
1612
+ }
1613
+ /**
1585
1614
  * RPC method: Get account activation state
1586
1615
  */
1587
1616
  async rpcGetActive() {
@@ -3299,7 +3328,7 @@ async function describeServer(c) {
3299
3328
  /**
3300
3329
  * Create a new session (login)
3301
3330
  */
3302
- async function createSession(c) {
3331
+ async function createSession(c, accountDO) {
3303
3332
  const { identifier, password } = await c.req.json();
3304
3333
  if (!identifier || !password) return c.json({
3305
3334
  error: "InvalidRequest",
@@ -3316,19 +3345,22 @@ async function createSession(c) {
3316
3345
  const serviceDid = `did:web:${c.env.PDS_HOSTNAME}`;
3317
3346
  const accessJwt = await createAccessToken(c.env.JWT_SECRET, c.env.DID, serviceDid);
3318
3347
  const refreshJwt = await createRefreshToken(c.env.JWT_SECRET, c.env.DID, serviceDid);
3348
+ const { email: storedEmail } = await accountDO.rpcGetEmail();
3349
+ const email = storedEmail || c.env.EMAIL;
3319
3350
  return c.json({
3320
3351
  accessJwt,
3321
3352
  refreshJwt,
3322
3353
  handle: c.env.HANDLE,
3323
3354
  did: c.env.DID,
3324
- emailConfirmed: false,
3355
+ ...email ? { email } : {},
3356
+ emailConfirmed: true,
3325
3357
  active: true
3326
3358
  });
3327
3359
  }
3328
3360
  /**
3329
3361
  * Refresh a session
3330
3362
  */
3331
- async function refreshSession(c) {
3363
+ async function refreshSession(c, accountDO) {
3332
3364
  const authHeader = c.req.header("Authorization");
3333
3365
  if (!authHeader?.startsWith("Bearer ")) return c.json({
3334
3366
  error: "AuthenticationRequired",
@@ -3343,12 +3375,15 @@ async function refreshSession(c) {
3343
3375
  }, 401);
3344
3376
  const accessJwt = await createAccessToken(c.env.JWT_SECRET, c.env.DID, serviceDid);
3345
3377
  const refreshJwt = await createRefreshToken(c.env.JWT_SECRET, c.env.DID, serviceDid);
3378
+ const { email: storedEmail } = await accountDO.rpcGetEmail();
3379
+ const email = storedEmail || c.env.EMAIL;
3346
3380
  return c.json({
3347
3381
  accessJwt,
3348
3382
  refreshJwt,
3349
3383
  handle: c.env.HANDLE,
3350
3384
  did: c.env.DID,
3351
- emailConfirmed: false,
3385
+ ...email ? { email } : {},
3386
+ emailConfirmed: true,
3352
3387
  active: true
3353
3388
  });
3354
3389
  } catch (err) {
@@ -3365,7 +3400,7 @@ async function refreshSession(c) {
3365
3400
  /**
3366
3401
  * Get current session info
3367
3402
  */
3368
- async function getSession(c) {
3403
+ async function getSession(c, accountDO) {
3369
3404
  const authHeader = c.req.header("Authorization");
3370
3405
  if (!authHeader?.startsWith("Bearer ")) return c.json({
3371
3406
  error: "AuthenticationRequired",
@@ -3373,21 +3408,29 @@ async function getSession(c) {
3373
3408
  }, 401);
3374
3409
  const token = authHeader.slice(7);
3375
3410
  const serviceDid = `did:web:${c.env.PDS_HOSTNAME}`;
3376
- if (token === c.env.AUTH_TOKEN) return c.json({
3377
- handle: c.env.HANDLE,
3378
- did: c.env.DID,
3379
- emailConfirmed: false,
3380
- active: true
3381
- });
3411
+ if (token === c.env.AUTH_TOKEN) {
3412
+ const { email: storedEmail } = await accountDO.rpcGetEmail();
3413
+ const email = storedEmail || c.env.EMAIL;
3414
+ return c.json({
3415
+ handle: c.env.HANDLE,
3416
+ did: c.env.DID,
3417
+ ...email ? { email } : {},
3418
+ emailConfirmed: true,
3419
+ active: true
3420
+ });
3421
+ }
3382
3422
  try {
3383
3423
  if ((await verifyAccessToken(token, c.env.JWT_SECRET, serviceDid)).sub !== c.env.DID) return c.json({
3384
3424
  error: "AuthenticationRequired",
3385
3425
  message: "Invalid access token"
3386
3426
  }, 401);
3427
+ const { email: storedEmail } = await accountDO.rpcGetEmail();
3428
+ const email = storedEmail || c.env.EMAIL;
3387
3429
  return c.json({
3388
3430
  handle: c.env.HANDLE,
3389
3431
  did: c.env.DID,
3390
- emailConfirmed: false,
3432
+ ...email ? { email } : {},
3433
+ emailConfirmed: true,
3391
3434
  active: true
3392
3435
  });
3393
3436
  } catch (err) {
@@ -3410,7 +3453,7 @@ async function deleteSession(c) {
3410
3453
  /**
3411
3454
  * Get account status - used for migration checks and progress tracking
3412
3455
  */
3413
- async function getAccountStatus(c, accountDO) {
3456
+ async function checkAccountStatus(c, accountDO) {
3414
3457
  try {
3415
3458
  const status = await accountDO.rpcGetRepoStatus();
3416
3459
  const active = await accountDO.rpcGetActive();
@@ -3497,6 +3540,32 @@ async function deactivateAccount(c, accountDO) {
3497
3540
  }
3498
3541
  }
3499
3542
  /**
3543
+ * Request a token to update the account email.
3544
+ * Single-user PDS: no token needed, always returns tokenRequired: false.
3545
+ */
3546
+ async function requestEmailUpdate(c) {
3547
+ return c.json({ tokenRequired: false });
3548
+ }
3549
+ /**
3550
+ * Request email confirmation.
3551
+ * Single-user PDS: email is always confirmed, nothing to do.
3552
+ */
3553
+ async function requestEmailConfirmation(c) {
3554
+ return c.json({});
3555
+ }
3556
+ /**
3557
+ * Update the account email address
3558
+ */
3559
+ async function updateEmail(c, accountDO) {
3560
+ const body = await c.req.json();
3561
+ if (!body.email) return c.json({
3562
+ error: "InvalidRequest",
3563
+ message: "Missing required field: email"
3564
+ }, 400);
3565
+ await accountDO.rpcUpdateEmail(body.email);
3566
+ return c.json({});
3567
+ }
3568
+ /**
3500
3569
  * Reset migration state - clears imported repo and blob tracking.
3501
3570
  * Only works on deactivated accounts.
3502
3571
  */
@@ -4108,7 +4177,7 @@ function renderPasskeyErrorPage(error, description) {
4108
4177
 
4109
4178
  //#endregion
4110
4179
  //#region package.json
4111
- var version = "0.10.2";
4180
+ var version = "0.10.3";
4112
4181
 
4113
4182
  //#endregion
4114
4183
  //#region src/index.ts
@@ -4283,14 +4352,17 @@ app.use("/xrpc/com.atproto.identity.resolveHandle", async (c, next) => {
4283
4352
  app.post("/xrpc/com.atproto.identity.requestPlcOperationSignature", requireAuth, requestPlcOperationSignature);
4284
4353
  app.post("/xrpc/com.atproto.identity.signPlcOperation", requireAuth, signPlcOperation);
4285
4354
  app.get("/xrpc/gg.mk.experimental.getMigrationToken", requireAuth, getMigrationToken);
4286
- app.post("/xrpc/com.atproto.server.createSession", createSession);
4287
- app.post("/xrpc/com.atproto.server.refreshSession", refreshSession);
4288
- app.get("/xrpc/com.atproto.server.getSession", getSession);
4355
+ app.post("/xrpc/com.atproto.server.createSession", (c) => createSession(c, getAccountDO(c.env)));
4356
+ app.post("/xrpc/com.atproto.server.refreshSession", (c) => refreshSession(c, getAccountDO(c.env)));
4357
+ app.get("/xrpc/com.atproto.server.getSession", (c) => getSession(c, getAccountDO(c.env)));
4289
4358
  app.post("/xrpc/com.atproto.server.deleteSession", deleteSession);
4290
- app.get("/xrpc/com.atproto.server.getAccountStatus", requireAuth, (c) => getAccountStatus(c, getAccountDO(c.env)));
4359
+ app.get("/xrpc/com.atproto.server.checkAccountStatus", requireAuth, (c) => checkAccountStatus(c, getAccountDO(c.env)));
4291
4360
  app.post("/xrpc/com.atproto.server.activateAccount", requireAuth, (c) => activateAccount(c, getAccountDO(c.env)));
4292
4361
  app.post("/xrpc/com.atproto.server.deactivateAccount", requireAuth, (c) => deactivateAccount(c, getAccountDO(c.env)));
4293
4362
  app.post("/xrpc/gg.mk.experimental.resetMigration", requireAuth, (c) => resetMigration(c, getAccountDO(c.env)));
4363
+ app.post("/xrpc/com.atproto.server.requestEmailUpdate", requireAuth, requestEmailUpdate);
4364
+ app.post("/xrpc/com.atproto.server.requestEmailConfirmation", requireAuth, requestEmailConfirmation);
4365
+ app.post("/xrpc/com.atproto.server.updateEmail", requireAuth, (c) => updateEmail(c, getAccountDO(c.env)));
4294
4366
  app.get("/xrpc/com.atproto.server.getServiceAuth", requireAuth, getServiceAuth);
4295
4367
  app.get("/xrpc/app.bsky.actor.getPreferences", requireAuth, async (c) => {
4296
4368
  const result = await getAccountDO(c.env).rpcGetPreferences();