@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 +12 -2
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +91 -19
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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.
|
|
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
|
*/
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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":";;;;;;;;;;;;;;;;cAUa,iBAAA,SACJ,kBAAA,YACG;EAFC,QAAA,GAAA;EAIa,WAAA,CAAA,GAAA,EAAA,UAAA;
|
|
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
|
-
|
|
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
|
-
|
|
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)
|
|
3377
|
-
|
|
3378
|
-
|
|
3379
|
-
|
|
3380
|
-
|
|
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
|
-
|
|
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
|
|
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.
|
|
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.
|
|
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();
|