@getcirrus/pds 0.10.4 → 0.10.6
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 +6 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +48 -33
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -226,6 +226,7 @@ declare class SqliteOAuthStorage implements OAuthStorage {
|
|
|
226
226
|
* Initialize the OAuth database schema. Should be called once on DO startup.
|
|
227
227
|
*/
|
|
228
228
|
initSchema(): void;
|
|
229
|
+
private migrateClientTable;
|
|
229
230
|
/**
|
|
230
231
|
* Clean up expired entries. Should be called periodically.
|
|
231
232
|
*/
|
|
@@ -488,9 +489,9 @@ declare class AccountDurableObject extends DurableObject<PDSEnv> {
|
|
|
488
489
|
rev: string;
|
|
489
490
|
}>;
|
|
490
491
|
/**
|
|
491
|
-
* RPC
|
|
492
|
+
* Handle streaming getRepo via fetch (not RPC, to enable streaming response).
|
|
492
493
|
*/
|
|
493
|
-
|
|
494
|
+
private handleGetRepo;
|
|
494
495
|
/**
|
|
495
496
|
* RPC method: Get specific blocks by CID as CAR file
|
|
496
497
|
* Used for partial sync and migration.
|
|
@@ -715,8 +716,9 @@ declare class AccountDurableObject extends DurableObject<PDSEnv> {
|
|
|
715
716
|
/** Consume a WebAuthn challenge (single-use) */
|
|
716
717
|
rpcConsumeWebAuthnChallenge(challenge: string): Promise<boolean>;
|
|
717
718
|
/**
|
|
718
|
-
* HTTP fetch handler for WebSocket upgrades.
|
|
719
|
-
*
|
|
719
|
+
* HTTP fetch handler for WebSocket upgrades and streaming responses.
|
|
720
|
+
* Used instead of RPC when the response can't be serialized (WebSocket)
|
|
721
|
+
* or when streaming is needed to avoid buffering large payloads (getRepo).
|
|
720
722
|
*/
|
|
721
723
|
fetch(request: Request): Promise<Response>;
|
|
722
724
|
}
|
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;EAwGA;;;;EAiCR,UAAA,CAAA,aAAA,CAAA,EAAA,OAAA,CAAA,EAAA,IAAA;EAQG;;;EAcL,OAAA,CAAA,CAAA,EAvDE,OAuDF,CAvDU,GAuDV,GAAA,IAAA,CAAA;EAAM;;;EAU8C,MAAA,CAAA,CAAA,EApDnD,OAoDmD,CAAA,MAAA,GAAA,IAAA,CAAA;EAArC;;;EAmB4B,MAAA,CAAA,CAAA,EA7D1C,OA6D0C,CAAA,MAAA,CAAA;EAYpC;;;EAoBmB,OAAA,CAAA,CAAA,EAnFxB,OAmFwB,CAAA,MAAA,CAAA;EAWf;;;EA6CT,QAAA,CAAA,GAAA,EAnIG,GAmIH,CAAA,EAnIS,OAmIT,CAnIiB,UAmIjB,GAAA,IAAA,CAAA;EAUI;;;EAoCF,GAAA,CAAA,GAAA,EAnKJ,GAmKI,CAAA,EAnKE,OAmKF,CAAA,OAAA,CAAA;EAUe;;;
|
|
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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DurableObject, env, waitUntil } from "cloudflare:workers";
|
|
2
|
-
import { BlockMap, ReadableBlockstore, Repo, WriteOpAction, blocksToCarFile, getRecords, readCarWithRoot } from "@atproto/repo";
|
|
2
|
+
import { BlockMap, ReadableBlockstore, Repo, WriteOpAction, blocksToCarFile, getRecords, readCarWithRoot, writeCarStream } from "@atproto/repo";
|
|
3
3
|
import { Secp256k1Keypair, randomStr, verifySignature } from "@atproto/crypto";
|
|
4
4
|
import { CID, asCid, isBlobRef } from "@atproto/lex-data";
|
|
5
5
|
import { now } from "@atcute/tid";
|
|
@@ -551,7 +551,6 @@ var SqliteOAuthStorage = class {
|
|
|
551
551
|
*/
|
|
552
552
|
initSchema() {
|
|
553
553
|
this.sql.exec(`
|
|
554
|
-
-- Authorization codes (5 min TTL)
|
|
555
554
|
CREATE TABLE IF NOT EXISTS oauth_auth_codes (
|
|
556
555
|
code TEXT PRIMARY KEY,
|
|
557
556
|
client_id TEXT NOT NULL,
|
|
@@ -565,7 +564,6 @@ var SqliteOAuthStorage = class {
|
|
|
565
564
|
|
|
566
565
|
CREATE INDEX IF NOT EXISTS idx_auth_codes_expires ON oauth_auth_codes(expires_at);
|
|
567
566
|
|
|
568
|
-
-- OAuth tokens
|
|
569
567
|
CREATE TABLE IF NOT EXISTS oauth_tokens (
|
|
570
568
|
access_token TEXT PRIMARY KEY,
|
|
571
569
|
refresh_token TEXT NOT NULL UNIQUE,
|
|
@@ -589,10 +587,12 @@ var SqliteOAuthStorage = class {
|
|
|
589
587
|
redirect_uris TEXT NOT NULL,
|
|
590
588
|
logo_uri TEXT,
|
|
591
589
|
client_uri TEXT,
|
|
590
|
+
token_endpoint_auth_method TEXT NOT NULL DEFAULT 'none',
|
|
591
|
+
jwks TEXT,
|
|
592
|
+
jwks_uri TEXT,
|
|
592
593
|
cached_at INTEGER NOT NULL
|
|
593
594
|
);
|
|
594
595
|
|
|
595
|
-
-- PAR requests (90 sec TTL)
|
|
596
596
|
CREATE TABLE IF NOT EXISTS oauth_par_requests (
|
|
597
597
|
request_uri TEXT PRIMARY KEY,
|
|
598
598
|
client_id TEXT NOT NULL,
|
|
@@ -602,7 +602,6 @@ var SqliteOAuthStorage = class {
|
|
|
602
602
|
|
|
603
603
|
CREATE INDEX IF NOT EXISTS idx_par_expires ON oauth_par_requests(expires_at);
|
|
604
604
|
|
|
605
|
-
-- DPoP nonces for replay prevention (5 min TTL)
|
|
606
605
|
CREATE TABLE IF NOT EXISTS oauth_nonces (
|
|
607
606
|
nonce TEXT PRIMARY KEY,
|
|
608
607
|
created_at INTEGER NOT NULL
|
|
@@ -610,7 +609,6 @@ var SqliteOAuthStorage = class {
|
|
|
610
609
|
|
|
611
610
|
CREATE INDEX IF NOT EXISTS idx_nonces_created ON oauth_nonces(created_at);
|
|
612
611
|
|
|
613
|
-
-- WebAuthn challenges for passkey authentication (2 min TTL)
|
|
614
612
|
CREATE TABLE IF NOT EXISTS oauth_webauthn_challenges (
|
|
615
613
|
challenge TEXT PRIMARY KEY,
|
|
616
614
|
created_at INTEGER NOT NULL
|
|
@@ -618,6 +616,15 @@ var SqliteOAuthStorage = class {
|
|
|
618
616
|
|
|
619
617
|
CREATE INDEX IF NOT EXISTS idx_challenges_created ON oauth_webauthn_challenges(created_at);
|
|
620
618
|
`);
|
|
619
|
+
this.migrateClientTable();
|
|
620
|
+
}
|
|
621
|
+
migrateClientTable() {
|
|
622
|
+
if (!this.sql.exec("PRAGMA table_info(oauth_clients)").toArray().map((r) => r.name).includes("token_endpoint_auth_method")) {
|
|
623
|
+
this.sql.exec("ALTER TABLE oauth_clients ADD COLUMN token_endpoint_auth_method TEXT NOT NULL DEFAULT 'none'");
|
|
624
|
+
this.sql.exec("ALTER TABLE oauth_clients ADD COLUMN jwks TEXT");
|
|
625
|
+
this.sql.exec("ALTER TABLE oauth_clients ADD COLUMN jwks_uri TEXT");
|
|
626
|
+
this.sql.exec("DELETE FROM oauth_clients");
|
|
627
|
+
}
|
|
621
628
|
}
|
|
622
629
|
/**
|
|
623
630
|
* Clean up expired entries. Should be called periodically.
|
|
@@ -712,11 +719,11 @@ var SqliteOAuthStorage = class {
|
|
|
712
719
|
}
|
|
713
720
|
async saveClient(clientId, metadata) {
|
|
714
721
|
this.sql.exec(`INSERT OR REPLACE INTO oauth_clients
|
|
715
|
-
(client_id, client_name, redirect_uris, logo_uri, client_uri, cached_at)
|
|
716
|
-
VALUES (?, ?, ?, ?, ?, ?)`, clientId, metadata.clientName, JSON.stringify(metadata.redirectUris), metadata.logoUri ?? null, metadata.clientUri ?? null, metadata.cachedAt ?? Date.now());
|
|
722
|
+
(client_id, client_name, redirect_uris, logo_uri, client_uri, token_endpoint_auth_method, jwks, jwks_uri, cached_at)
|
|
723
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`, clientId, metadata.clientName, JSON.stringify(metadata.redirectUris), metadata.logoUri ?? null, metadata.clientUri ?? null, metadata.tokenEndpointAuthMethod ?? "none", metadata.jwks ? JSON.stringify(metadata.jwks) : null, metadata.jwksUri ?? null, metadata.cachedAt ?? Date.now());
|
|
717
724
|
}
|
|
718
725
|
async getClient(clientId) {
|
|
719
|
-
const rows = this.sql.exec(`SELECT client_id, client_name, redirect_uris, logo_uri, client_uri, cached_at
|
|
726
|
+
const rows = this.sql.exec(`SELECT client_id, client_name, redirect_uris, logo_uri, client_uri, token_endpoint_auth_method, jwks, jwks_uri, cached_at
|
|
720
727
|
FROM oauth_clients WHERE client_id = ?`, clientId).toArray();
|
|
721
728
|
if (rows.length === 0) return null;
|
|
722
729
|
const row = rows[0];
|
|
@@ -726,6 +733,9 @@ var SqliteOAuthStorage = class {
|
|
|
726
733
|
redirectUris: JSON.parse(row.redirect_uris),
|
|
727
734
|
logoUri: row.logo_uri ?? void 0,
|
|
728
735
|
clientUri: row.client_uri ?? void 0,
|
|
736
|
+
tokenEndpointAuthMethod: row.token_endpoint_auth_method ?? "none",
|
|
737
|
+
jwks: row.jwks ? JSON.parse(row.jwks) : void 0,
|
|
738
|
+
jwksUri: row.jwks_uri ?? void 0,
|
|
729
739
|
cachedAt: row.cached_at
|
|
730
740
|
};
|
|
731
741
|
}
|
|
@@ -1382,19 +1392,28 @@ var AccountDurableObject = class extends DurableObject {
|
|
|
1382
1392
|
};
|
|
1383
1393
|
}
|
|
1384
1394
|
/**
|
|
1385
|
-
* RPC
|
|
1395
|
+
* Handle streaming getRepo via fetch (not RPC, to enable streaming response).
|
|
1386
1396
|
*/
|
|
1387
|
-
async
|
|
1397
|
+
async handleGetRepo() {
|
|
1388
1398
|
const root = await (await this.getStorage()).getRoot();
|
|
1389
|
-
if (!root)
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1399
|
+
if (!root) return Response.json({
|
|
1400
|
+
error: "RepoNotFound",
|
|
1401
|
+
message: "No repository root found"
|
|
1402
|
+
}, { status: 404 });
|
|
1403
|
+
const cursor = this.ctx.storage.sql.exec("SELECT cid, bytes FROM blocks");
|
|
1404
|
+
async function* blocks() {
|
|
1405
|
+
for (const row of cursor) yield {
|
|
1406
|
+
cid: CID.parse(row.cid),
|
|
1407
|
+
bytes: new Uint8Array(row.bytes)
|
|
1408
|
+
};
|
|
1396
1409
|
}
|
|
1397
|
-
|
|
1410
|
+
const carIter = writeCarStream(root, blocks())[Symbol.asyncIterator]();
|
|
1411
|
+
const stream = new ReadableStream({ async pull(controller) {
|
|
1412
|
+
const { value, done } = await carIter.next();
|
|
1413
|
+
if (done) controller.close();
|
|
1414
|
+
else controller.enqueue(value);
|
|
1415
|
+
} });
|
|
1416
|
+
return new Response(stream, { headers: { "Content-Type": "application/vnd.ipld.car" } });
|
|
1398
1417
|
}
|
|
1399
1418
|
/**
|
|
1400
1419
|
* RPC method: Get specific blocks by CID as CAR file
|
|
@@ -1860,11 +1879,14 @@ var AccountDurableObject = class extends DurableObject {
|
|
|
1860
1879
|
return (await this.getOAuthStorage()).consumeWebAuthnChallenge(challenge);
|
|
1861
1880
|
}
|
|
1862
1881
|
/**
|
|
1863
|
-
* HTTP fetch handler for WebSocket upgrades.
|
|
1864
|
-
*
|
|
1882
|
+
* HTTP fetch handler for WebSocket upgrades and streaming responses.
|
|
1883
|
+
* Used instead of RPC when the response can't be serialized (WebSocket)
|
|
1884
|
+
* or when streaming is needed to avoid buffering large payloads (getRepo).
|
|
1865
1885
|
*/
|
|
1866
1886
|
async fetch(request) {
|
|
1867
|
-
|
|
1887
|
+
const url = new URL(request.url);
|
|
1888
|
+
if (url.pathname === "/xrpc/com.atproto.sync.subscribeRepos") return this.handleFirehoseUpgrade(request);
|
|
1889
|
+
if (url.pathname === "/xrpc/com.atproto.sync.getRepo") return this.handleGetRepo();
|
|
1868
1890
|
return new Response("Method not allowed", { status: 405 });
|
|
1869
1891
|
}
|
|
1870
1892
|
};
|
|
@@ -2792,14 +2814,7 @@ async function getRepo(c, accountDO) {
|
|
|
2792
2814
|
error: "RepoNotFound",
|
|
2793
2815
|
message: `Repository not found for DID: ${did}`
|
|
2794
2816
|
}, 404);
|
|
2795
|
-
|
|
2796
|
-
return new Response(carBytes, {
|
|
2797
|
-
status: 200,
|
|
2798
|
-
headers: {
|
|
2799
|
-
"Content-Type": "application/vnd.ipld.car",
|
|
2800
|
-
"Content-Length": carBytes.length.toString()
|
|
2801
|
-
}
|
|
2802
|
-
});
|
|
2817
|
+
return accountDO.fetch(new Request("https://do/xrpc/com.atproto.sync.getRepo"));
|
|
2803
2818
|
}
|
|
2804
2819
|
async function getRepoStatus(c, accountDO) {
|
|
2805
2820
|
const did = c.req.query("did");
|
|
@@ -4210,7 +4225,7 @@ function renderPasskeyErrorPage(error, description) {
|
|
|
4210
4225
|
|
|
4211
4226
|
//#endregion
|
|
4212
4227
|
//#region package.json
|
|
4213
|
-
var version = "0.10.
|
|
4228
|
+
var version = "0.10.6";
|
|
4214
4229
|
|
|
4215
4230
|
//#endregion
|
|
4216
4231
|
//#region src/index.ts
|
|
@@ -4293,12 +4308,12 @@ app.get("/xrpc/_health", async (c) => {
|
|
|
4293
4308
|
await getAccountDO(c.env).rpcHealthCheck();
|
|
4294
4309
|
return c.json({
|
|
4295
4310
|
status: "ok",
|
|
4296
|
-
version
|
|
4311
|
+
version: `cirrus ${version}`
|
|
4297
4312
|
});
|
|
4298
4313
|
} catch {
|
|
4299
4314
|
return c.json({
|
|
4300
4315
|
status: "unhealthy",
|
|
4301
|
-
version
|
|
4316
|
+
version: `cirrus ${version}`
|
|
4302
4317
|
}, 503);
|
|
4303
4318
|
}
|
|
4304
4319
|
});
|