@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 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 method: Export repo as CAR
492
+ * Handle streaming getRepo via fetch (not RPC, to enable streaming response).
492
493
  */
493
- rpcGetRepoCar(): Promise<Uint8Array>;
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
- * This is used instead of RPC to avoid WebSocket serialization errors.
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
  }
@@ -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":";;;;;;;;;;;;;;;;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;;;EA4MtB,SAAA,CAAA,IAAA,EA/WU,GA+WV,EAAA,CAAA,EA/WkB,OA+WlB,CAAA;IA8BI,MAAA,EA7YgC,QA6YhC;IAzjBR,OAAA,EA4K2D,GA5K3D,EAAA;EACG,CAAA,CAAA;EAAW;;;gBA8LF,YAAY,0BAA0B;EC5L9C;;;EAwH0C,OAAA,CAAA,MAAA,EDgFhC,QChFgC,EAAA,GAAA,EAAA,MAAA,CAAA,EDgFR,OChFQ,CAAA,IAAA,CAAA;EAgBb;;;EAsClB,UAAA,CAAA,GAAA,ED8CD,GC9CC,EAAA,GAAA,EAAA,MAAA,CAAA,ED8CkB,OC9ClB,CAAA,IAAA,CAAA;EAAY;;;EAiDoB,WAAA,CAAA,MAAA,EDQ7B,UCR6B,CAAA,EDQhB,OCRgB,CAAA,IAAA,CAAA;EAAR;;;EA4CF,WAAA,CAAA,CAAA,EDDxB,OCCwB,CAAA,MAAA,CAAA;EAAiB;;;EAkDtB,OAAA,CAAA,CAAA,EDzCvB,OCyCuB,CAAA,IAAA,CAAA;EAAU;;;EAuCb,WAAA,CAAA,CAAA,EDtEhB,OCsEgB,CAAA,MAAA,CAAA;EAWG;;;oBDvEhB;;;AEhTzB;0CFkU+C;;;AGjT/C;EAiBiB,SAAM,CAAA,CAAA,EHwSH,OGxSG,CAAA,OAAA,CAAA;EAkBU;;;EAoBhB,SAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EH4QkB,OG5QlB,CAAA,IAAA,CAAA;EAAY;;;;ECnChB;;;EAU8B,QAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAAA,IAAA;EAkElB;;;EAmDS,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA;EAAR;;;EAgBH,aAAA,CAAA,UAAA,EAAA,MAAA,CAAA,EAAA,IAAA;EAaM;;;EAQD,cAAA,CAAA,CAAA,EAAA,OAAA;EAOF;;;EAoEf,aAAA,CAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,IAAA;EADP;;;EA2LA,cAAA,CAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA;EA0FM;;;EA0KiB,iBAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EAAA,IAAA;EAgEkB;;;EA+BzC,iBAAA,CAAA,GAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,IAAA;EAkC2B;;;EA2EoC,cAAA,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,OAAA;EAAR;;;EAiJrB,kBAAA,CAAA,CAAA,EAAA,MAAA;EAAkB;;;EAqCnC,kBAAA,CAAA,CAAA,EAAA,MAAA;EASd;;;EAkBqB,gBAAA,CAAA,KAAA,CAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,MAAA,CAAA,EAAA;IASsB,KAAA,EJ7pBrC,KI6pBqC,CAAA;MAQ5B,GAAA,EAAA,MAAA;MAQgB,SAAA,EAAA,MAAA;IAQf,CAAA,CAAA;IAQM,MAAA,CAAA,EAAA,MAAA;EAQE,CAAA;EAYN;;;EA4BO,iBAAA,CAAA,CAAA,EAAA,IAAA;EAYvB;;;EA8CoC,WAAA,CAAA,YAAA,EAAA,MAAA,EAAA,SAAA,EJrvBhC,UIqvBgC,EAAA,OAAA,EAAA,MAAA,EAAA,IAAA,CAAA,EAAA,MAAA,CAAA,EAAA,IAAA;EAkDpB;;;EA+BrB,UAAA,CAAA,YAAA,EAAA,MAAA,CAAA,EAAA;IAAO,YAAA,EAAA,MAQqC;IAA5C,SAAA,EJ3zBS,UI2zBT;IAMoC,OAAA,EAAA,MAAA;IAAO,IAAA,EAAA,MAAA,GAAA,IAAA;IAQ3C,SAAA,EAAA,MAAA;IAAO,UAAA,EAAA,MAAA,GAQqC,IAAA;EAA5C,CAAA,GAAA,IAAA;EAAO;;;EAoB6B,YAAA,CAAA,CAAA,EJv0BvB,KIu0BuB,CAAA;IAAO,YAAA,EAAA,MAQC;IAC5C,IAAA,EAAA,MAAA,GAAA,IAAA;IAAO,SAAA,EAAA,MAAA;IAQP,UAAA,EAAA,MAAA,GAAA,IAAA;EAAO,CAAA,CAAA;EASP;;;EAcqC,aAAA,CAAA,YAAA,EAAA,MAAA,CAAA,EAAA,OAAA;EAMG;;;EAuB/B,oBAAA,CAAA,YAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,IAAA;EAF+B;;;EA0BG,WAAA,CAAA,CAAA,EAAA,OAAA;EAS3C;;;EAyBA,gBAAA,CAAA,KAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,IAAA,CAAA,EAAA,MAAA,CAAA,EAAA,IAAA;EAMgD;;;EAgBH,mBAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAAA;IAAR,SAAA,EAAA,MAAA;IAr/CC,IAAA,EAAA,MAAA,GAAA,IAAA;EAAa,CAAA,GAAA,IAAA;;;;EC8BjD,oBAAsC,CAAA,CAAA,EAAA,IAAA;;;;;;;;;;cJ3D/B,kBAAA,YAA8B;;mBACjB;EDLb;;;EA4GK,UAAA,CAAA,CAAA,EAAA,IAAA;EAaD,QAAA,kBAAA;EAUA;;;EAkBkB,OAAA,CAAA,CAAA,EAAA,IAAA;EAAR,YAAA,CAAA,IAAA,EAAA,MAAA,EAAA,IAAA,ECzBa,YDyBb,CAAA,ECzB4B,ODyB5B,CAAA,IAAA,CAAA;EAcX,WAAA,CAAA,IAAA,EAAA,MAAA,CAAA,ECvBkB,ODuBlB,CCvB0B,YDuB1B,GAAA,IAAA,CAAA;EAAM,cAAA,CAAA,IAAA,EAAA,MAAA,CAAA,ECOe,ODPf,CAAA,IAAA,CAAA;EAUC,UAAA,CAAA,IAAA,ECKC,SDLD,CAAA,ECKa,ODLb,CAAA,IAAA,CAAA;EAA0B,gBAAA,CAAA,WAAA,EAAA,MAAA,CAAA,ECsBH,ODtBG,CCsBK,SDtBL,GAAA,IAAA,CAAA;EAAmB,iBAAA,CAAA,YAAA,EAAA,MAAA,CAAA,ECsDpB,ODtDoB,CCsDZ,SDtDY,GAAA,IAAA,CAAA;EAArC,WAAA,CAAA,WAAA,EAAA,MAAA,CAAA,ECmFU,ODnFV,CAAA,IAAA,CAAA;EAmBV,eAAA,CAAA,GAAA,EAAA,MAAA,CAAA,ECuEgB,ODvEhB,CAAA,IAAA,CAAA;EAAY,UAAA,CAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EC+Ea,cD/Eb,CAAA,EC+E8B,OD/E9B,CAAA,IAAA,CAAA;EAA0B,SAAA,CAAA,QAAA,EAAA,MAAA,CAAA,ECgGvB,ODhGuB,CCgGf,cDhGe,GAAA,IAAA,CAAA;EAYpC,OAAA,CAAA,UAAA,EAAA,MAAA,EAAA,IAAA,ECqHkB,ODrHlB,CAAA,ECqH4B,ODrH5B,CAAA,IAAA,CAAA;EAAwB,MAAA,CAAA,UAAA,EAAA,MAAA,CAAA,ECgIZ,ODhIY,CCgIJ,ODhII,GAAA,IAAA,CAAA;EAoBxB,SAAA,CAAA,UAAA,EAAA,MAAA,CAAA,ECwIe,ODxIf,CAAA,IAAA,CAAA;EAAmB,iBAAA,CAAA,KAAA,EAAA,MAAA,CAAA,ECmJD,ODnJC,CAAA,OAAA,CAAA;EAWf;;;EA6CT,OAAA,CAAA,CAAA,EAAA,IAAA;EAUI;;;EAoCF,qBAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EAAA,IAAA;EAUe;;;;EA0OlB,wBAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EAAA,OAAA;;;;UE9jBA,OAAA;;;;;;;;;;;;;;;;;;AFIjB;;;;;;;;;;;;AA6KuB,KGhKX,YAAA,GHgKW,MAAA,GAAA,IAAA,GAAA,MAAA,GAAA,MAAA,GAAA,KAAA,GAAA,MAAA,GAAA,MAAA,GAAA,MAAA,GAAA,IAAA,GAAA,KAAA,GAAA,IAAA;;;;;AAmBU,UGlKhB,MAAA,CHkKgB;EAA0B;EAYpC,GAAA,EAAA,MAAA;EAAwB;EAoBxB,MAAA,EAAA,MAAA;EAAmB;EAWf,YAAA,EAAA,MAAA;EAAa;EAmClB,UAAA,EAAA,MAAA;EAUJ;EAUI,WAAA,EAAA,MAAA;EAUG;EAkBsB,kBAAA,EAAA,MAAA;EAQ3B;EAUe,UAAA,EAAA,MAAA;EAuItB;EAkDA,aAAA,EAAA,MAAA;EAmBA;EA8BI,OAAA,EG1gBP,sBH0gBO,CG1gBgB,oBH0gBhB,CAAA;EAzjBR;EACG,KAAA,CAAA,EGgDH,QHhDG;EAAW;;;;ECEV;;;;;;;;;;;;;EA4P4B,aAAA,CAAA,EE5LxB,YF4LwB;;;;;;;ADhQzC;;;;;;AA6IkB,cI5GL,oBAAA,SAA6B,aJ4GxB,CI5GsC,MJ4GtC,CAAA,CAAA;EAQG,QAAA,OAAA;EAAc,QAAA,YAAA;EAAR,QAAA,IAAA;EAcX,QAAA,OAAA;EAAM,QAAA,SAAA;EAUC,QAAA,SAAA;EAA0B,QAAA,kBAAA;EAAmB,QAAA,eAAA;EAArC,WAAA,CAAA,GAAA,EIlIb,kBJkIa,EAAA,GAAA,EIlIY,MJkIZ;EAmBV;;;EAYE,QAAA,wBAAA;EAAwB;;;EA+BpB,QAAA,UAAA;EAAa;;;;EAiEf,KAAA,CAAA,CAAA,EI/LA,OJ+LA,CAAA,IAAA,CAAA;EAkBsB;;;EAyJlC,QAAA,qBAAA;EAkDA;;;EAxgBJ,UAAA,CAAA,CAAA,EIuJY,OJvJZ,CIuJoB,iBJvJpB,CAAA;EACG;;;qBI8Jc,QAAQ;;AH5JlC;;EAwHwC,OAAA,CAAA,CAAA,EG4CtB,OH5CsB,CG4Cd,IH5Cc,CAAA;EAAe;;;EA8ClB,YAAA,CAAA,CAAA,EGMd,OHNc,CAAA,IAAA,CAAA;EAQb;;;EAiBsB,UAAA,CAAA,CAAA,EGNzB,OHMyB,CGNjB,gBHMiB,CAAA;EAgCU;;;EAoCnB,OAAA,CAAA,IAAA,EGlEhB,IHkEgB,CAAA,EGlET,OHkES,CAAA,IAAA,CAAA;EAQS;;;EAiBV,eAAA,CAAA,CAAA,EGpFV,OHoFU,CAAA;IAiCK,GAAA,EAAA,MAAA;IAAU,WAAA,EAAA,MAAA,EAAA;IAWR,GAAA,EAAA,MAAA;EAAR,CAAA,CAAA;EA4BG;;;EApWiB,YAAA,CAAA,UAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,CAAA,EGwOnD,OHxOmD,CAAA;;YG0O7C,GAAA,CAAI;;EFlPG;;;;ICiBL,KAAA,EAAA,MAAY;IAiBP,MAAM,CAAA,EAAA,MAAA;IAkBU,OAAA,CAAA,EAAA,OAAA;EAAvB,CAAA,CAAA,EC+NN,OD/NM,CAAA;IAED,OAAA,EC8NE,KD9NF,CAAA;MAkBQ,GAAA,EAAA,MAAA;MAAY,GAAA,EAAA,MAAA;;;;ECnChB,CAAA,CAAA;EAA2C;;;EA4E/B,eAAA,CAAA,UAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,GAAA,SAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EA6MrB,OA7MqB,CAAA;IA2CI,GAAA,EAAA,MAAA;IAAR,GAAA,EAAA,MAAA;IAQa,MAAA,EAAA;MAAR,GAAA,EAAA,MAAA;MAQA,GAAA,EAAA,MAAA;IAAR,CAAA;EAQK,CAAA,CAAA;EAaM;;;EAQD,eAAA,CAAA,UAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,CAAA,EAsMxB,OAtMwB,CAAA;IAOF,MAAA,EAAA;MAkCZ,GAAA,EAAA,MAAA;MAFV,GAAA,EAAA,MAAA;IAoCO,CAAA;EADP,CAAA,GAAA,IAAA,CAAA;EA2CA;;;EA0OM,YAAA,CAAA,UAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EA1FN,OA0FM,CAAA;IAQC,GAAA,EAAA,MAAA;IAFP,GAAA,EAAA,MAAA;IAoKuB,MAAA,EAAA;MAgEkB,GAAA,EAAA,MAAA;MAAR,GAAA,EAAA,MAAA;IA+BzB,CAAA;IAAR,gBAAA,EAAA,MAAA;EAkC2B,CAAA,CAAA;EAAa;;;EA2Ee,cAAA,CAAA,MAAA,EAtXjD,KAsXiD,CAAA;IAyBhB,KAAA,EAAA,MAAA;IAAR,UAAA,EAAA,MAAA;IAwHG,IAAA,CAAA,EAAA,MAAA;IAAkB,KAAA,CAAA,EAAA,OAAA;EAAR,CAAA,CAAA,CAAA,EAjgB5C,OAigB4C,CAAA;IAoCzC,MAAA,EAAA;MACc,GAAA,EAAA,MAAA;MASd,GAAA,EAAA,MAAA;IAWuB,CAAA;IAAkB,OAAA,EAxjBrC,KAwjBqC,CAAA;MAOpB,KAAA,EAAA,MAAA;MASsB,GAAA,CAAA,EAAA,MAAA;MAQ5B,GAAA,CAAA,EAAA,MAAA;MAQgB,gBAAA,CAAA,EAAA,MAAA;IAQf,CAAA,CAAA;EAQM,CAAA,CAAA;EAQE;;;EAgCC,gBAAA,CAAA,CAAA,EA9eL,OA8eK,CAAA;IAQA,GAAA,EAAA,MAAA;IAYvB,IAAA,EAAA,MAAA;IADL,GAAA,EAAA,MAAA;EAawB,CAAA,CAAA;EAkCiB;;;EA0DP,QAAA,aAAA;EAuBlC;;;;EAc2C,YAAA,CAAA,IAAA,EAAA,MAOH,EAAA,CAAA,EAtlBP,OAslBO,CAtlBC,UAslBD,CAAA;EACxC;;;;;;EA4BoC,iBAAA,CAAA,UAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,CAAA,EAplBpC,OAolBoC,CAplB5B,UAolB4B,CAAA;EAAO;;;;;EA0B3C,aAAA,CAAA,QAAA,EA5kB2B,UA4kB3B,CAAA,EA5kBwC,OA4kBxC,CAAA;IAAO,GAAA,EAAA,MAAA;IAQP,GAAA,EAAA,MAAA;IAMqC,GAAA,EAAA,MAAA;EAMG,CAAA,CAAA;EAY/B;;;EAS+B,aAAA,CAAA,KAAA,EA1iBhB,UA0iBgB,EAAA,QAAA,EAAA,MAAA,CAAA,EA1iBe,OA0iBf,CA1iBuB,OA0iBvB,CAAA;EAc1C;;;EAqBE,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EApjB+B,OAojB/B,CApjBuC,YAojBvC,GAAA,IAAA,CAAA;EAMqB;;;EAyB2B,QAAA,WAAA;EAMG;;;EAUd,QAAA,iBAAA;EAr/CC;;;;;AClBJ;;EAgDC,QAAA,gBAAA;EAA9B;;;;;;;;;;;;;;;iCD4+B6B,UAAU,QAAQ;;;;wBAoCjD,8BACc;;;;sBASd;;;;sBAWuB,kBAAkB;;;;uBAOpB;;;;;;6CASsB;;;;iBAQ5B;;;;;;iCAQgB;;;;kBAQf;;;;wBAQM;;;;0BAQE;;;;oBAYN;;;;qBAQC;;;;2BAYM;;;;2BAQA;;;;wDAW5B;WACK;;;;;;;;;;;uBAYmB;;;;;;;wCAkCiB;;;;;;oBAkDpB;;;;;;0BAQM;;;;;sCAAO,0BAAA,CAsBM,eACxC;;gCAQA,QARO,0BAAA,CAQqC,YAAA;;mCAMR;;sBAAO,0BAAA,CAOH,YACxC;;4CAQA,QARO,0BAAA,CAQqC,SAAA;;8CAQ5C,QARO,0BAAA,CAQqC,SAAA;;uCAMJ;;mCAMJ;;4CAAO,0BAAA,CAQC,iBAC5C;;kCAQA,QARO,0BAAA,CAQqC,cAAA;;uCAArC,0BAAA,CAQiC,UACxC;;iCAQA,QARO,0BAAA,CAQqC,OAAA;;oCAMP;;uCAMG;;kDAY/B,6CAGT;;uCAMwC;;eAE/B;;;;;;;qBAWa,QACxB;;;;;;;0CAY6C;;kEAS3C;;oBAMqB;;2FAWrB;;yCAQA;;;;;+CAMgD;;kDAMG;;;;;;iBAUxB,UAAU,QAAQ;;;;cCv9C3C,KAAG;YAAwB;GAAM,WAAA,CAAA,WAAA"}
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 method: Export repo as CAR
1395
+ * Handle streaming getRepo via fetch (not RPC, to enable streaming response).
1386
1396
  */
1387
- async rpcGetRepoCar() {
1397
+ async handleGetRepo() {
1388
1398
  const root = await (await this.getStorage()).getRoot();
1389
- if (!root) throw new Error("No repository root found");
1390
- const rows = this.ctx.storage.sql.exec("SELECT cid, bytes FROM blocks").toArray();
1391
- const blocks = new BlockMap();
1392
- for (const row of rows) {
1393
- const cid = CID.parse(row.cid);
1394
- const bytes = new Uint8Array(row.bytes);
1395
- blocks.set(cid, bytes);
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
- return blocksToCarFile(root, blocks);
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
- * This is used instead of RPC to avoid WebSocket serialization errors.
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
- if (new URL(request.url).pathname === "/xrpc/com.atproto.sync.subscribeRepos") return this.handleFirehoseUpgrade(request);
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
- const carBytes = await accountDO.rpcGetRepoCar();
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.4";
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
  });