@atproto/pds 0.4.183 → 0.4.184

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.
Files changed (564) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/account-manager/account-manager.js.map +1 -1
  3. package/dist/account-manager/db/index.js.map +1 -1
  4. package/dist/account-manager/db/migrations/001-init.js.map +1 -1
  5. package/dist/account-manager/db/migrations/002-account-deactivation.js.map +1 -1
  6. package/dist/account-manager/db/migrations/003-privileged-app-passwords.js.map +1 -1
  7. package/dist/account-manager/db/migrations/004-oauth.js.map +1 -1
  8. package/dist/account-manager/db/migrations/005-oauth-account-management.js.map +1 -1
  9. package/dist/account-manager/db/migrations/006-oauth-permission-sets.js.map +1 -1
  10. package/dist/account-manager/db/migrations/007-lexicon-failures-index.js.map +1 -1
  11. package/dist/account-manager/db/migrations/index.js.map +1 -1
  12. package/dist/account-manager/db/schema/account-device.js.map +1 -1
  13. package/dist/account-manager/db/schema/account.js.map +1 -1
  14. package/dist/account-manager/db/schema/actor.js.map +1 -1
  15. package/dist/account-manager/db/schema/app-password.js.map +1 -1
  16. package/dist/account-manager/db/schema/authorization-request.js.map +1 -1
  17. package/dist/account-manager/db/schema/authorized-client.js.map +1 -1
  18. package/dist/account-manager/db/schema/device.js.map +1 -1
  19. package/dist/account-manager/db/schema/email-token.js.map +1 -1
  20. package/dist/account-manager/db/schema/index.js.map +1 -1
  21. package/dist/account-manager/db/schema/invite-code.js.map +1 -1
  22. package/dist/account-manager/db/schema/lexicon.js.map +1 -1
  23. package/dist/account-manager/db/schema/refresh-token.js.map +1 -1
  24. package/dist/account-manager/db/schema/repo-root.js.map +1 -1
  25. package/dist/account-manager/db/schema/token.js.map +1 -1
  26. package/dist/account-manager/db/schema/used-refresh-token.js.map +1 -1
  27. package/dist/account-manager/helpers/account-device.js.map +1 -1
  28. package/dist/account-manager/helpers/account.js.map +1 -1
  29. package/dist/account-manager/helpers/auth.js.map +1 -1
  30. package/dist/account-manager/helpers/authorization-request.js.map +1 -1
  31. package/dist/account-manager/helpers/authorized-client.js.map +1 -1
  32. package/dist/account-manager/helpers/device.js.map +1 -1
  33. package/dist/account-manager/helpers/email-token.js.map +1 -1
  34. package/dist/account-manager/helpers/invite.js.map +1 -1
  35. package/dist/account-manager/helpers/lexicon.js.map +1 -1
  36. package/dist/account-manager/helpers/password.js.map +1 -1
  37. package/dist/account-manager/helpers/repo.js.map +1 -1
  38. package/dist/account-manager/helpers/scrypt.js.map +1 -1
  39. package/dist/account-manager/helpers/token.js.map +1 -1
  40. package/dist/account-manager/helpers/used-refresh-token.js.map +1 -1
  41. package/dist/account-manager/oauth-store.js.map +1 -1
  42. package/dist/account-manager/scope-reference-getter.js.map +1 -1
  43. package/dist/actor-store/actor-store-reader.js.map +1 -1
  44. package/dist/actor-store/actor-store-resources.js.map +1 -1
  45. package/dist/actor-store/actor-store-transactor.js.map +1 -1
  46. package/dist/actor-store/actor-store-writer.js.map +1 -1
  47. package/dist/actor-store/actor-store.js.map +1 -1
  48. package/dist/actor-store/blob/reader.js.map +1 -1
  49. package/dist/actor-store/blob/transactor.js.map +1 -1
  50. package/dist/actor-store/db/index.js.map +1 -1
  51. package/dist/actor-store/db/migrations/001-init.js.map +1 -1
  52. package/dist/actor-store/db/migrations/index.js.map +1 -1
  53. package/dist/actor-store/db/schema/account-pref.js.map +1 -1
  54. package/dist/actor-store/db/schema/backlink.js.map +1 -1
  55. package/dist/actor-store/db/schema/blob.js.map +1 -1
  56. package/dist/actor-store/db/schema/index.js.map +1 -1
  57. package/dist/actor-store/db/schema/record-blob.js.map +1 -1
  58. package/dist/actor-store/db/schema/record.js.map +1 -1
  59. package/dist/actor-store/db/schema/repo-block.js.map +1 -1
  60. package/dist/actor-store/db/schema/repo-root.js.map +1 -1
  61. package/dist/actor-store/migrate.js.map +1 -1
  62. package/dist/actor-store/preference/reader.js.map +1 -1
  63. package/dist/actor-store/preference/transactor.js.map +1 -1
  64. package/dist/actor-store/preference/util.js.map +1 -1
  65. package/dist/actor-store/record/reader.js.map +1 -1
  66. package/dist/actor-store/record/transactor.js.map +1 -1
  67. package/dist/actor-store/repo/reader.js.map +1 -1
  68. package/dist/actor-store/repo/sql-repo-reader.js.map +1 -1
  69. package/dist/actor-store/repo/sql-repo-transactor.js.map +1 -1
  70. package/dist/actor-store/repo/transactor.js.map +1 -1
  71. package/dist/api/app/bsky/actor/getPreferences.js.map +1 -1
  72. package/dist/api/app/bsky/actor/getProfile.js.map +1 -1
  73. package/dist/api/app/bsky/actor/getProfiles.js.map +1 -1
  74. package/dist/api/app/bsky/actor/index.js.map +1 -1
  75. package/dist/api/app/bsky/actor/putPreferences.js.map +1 -1
  76. package/dist/api/app/bsky/feed/getActorLikes.js.map +1 -1
  77. package/dist/api/app/bsky/feed/getAuthorFeed.js.map +1 -1
  78. package/dist/api/app/bsky/feed/getFeed.js.map +1 -1
  79. package/dist/api/app/bsky/feed/getPostThread.js.map +1 -1
  80. package/dist/api/app/bsky/feed/getTimeline.js.map +1 -1
  81. package/dist/api/app/bsky/feed/index.js.map +1 -1
  82. package/dist/api/app/bsky/index.js.map +1 -1
  83. package/dist/api/app/bsky/notification/index.js.map +1 -1
  84. package/dist/api/app/bsky/notification/registerPush.js.map +1 -1
  85. package/dist/api/app/bsky/util/resolver.js.map +1 -1
  86. package/dist/api/com/atproto/admin/deleteAccount.js.map +1 -1
  87. package/dist/api/com/atproto/admin/disableAccountInvites.js.map +1 -1
  88. package/dist/api/com/atproto/admin/disableInviteCodes.js.map +1 -1
  89. package/dist/api/com/atproto/admin/enableAccountInvites.js.map +1 -1
  90. package/dist/api/com/atproto/admin/getAccountInfo.js.map +1 -1
  91. package/dist/api/com/atproto/admin/getAccountInfos.js.map +1 -1
  92. package/dist/api/com/atproto/admin/getInviteCodes.js.map +1 -1
  93. package/dist/api/com/atproto/admin/getSubjectStatus.js.map +1 -1
  94. package/dist/api/com/atproto/admin/index.js.map +1 -1
  95. package/dist/api/com/atproto/admin/sendEmail.js.map +1 -1
  96. package/dist/api/com/atproto/admin/updateAccountEmail.js.map +1 -1
  97. package/dist/api/com/atproto/admin/updateAccountHandle.js.map +1 -1
  98. package/dist/api/com/atproto/admin/updateAccountPassword.js.map +1 -1
  99. package/dist/api/com/atproto/admin/updateSubjectStatus.js.map +1 -1
  100. package/dist/api/com/atproto/admin/util.js.map +1 -1
  101. package/dist/api/com/atproto/identity/getRecommendedDidCredentials.js.map +1 -1
  102. package/dist/api/com/atproto/identity/index.js.map +1 -1
  103. package/dist/api/com/atproto/identity/requestPlcOperationSignature.js.map +1 -1
  104. package/dist/api/com/atproto/identity/resolveHandle.js.map +1 -1
  105. package/dist/api/com/atproto/identity/signPlcOperation.js.map +1 -1
  106. package/dist/api/com/atproto/identity/submitPlcOperation.js.map +1 -1
  107. package/dist/api/com/atproto/identity/updateHandle.js.map +1 -1
  108. package/dist/api/com/atproto/index.js.map +1 -1
  109. package/dist/api/com/atproto/moderation/createReport.js.map +1 -1
  110. package/dist/api/com/atproto/moderation/index.js.map +1 -1
  111. package/dist/api/com/atproto/repo/applyWrites.js.map +1 -1
  112. package/dist/api/com/atproto/repo/createRecord.js.map +1 -1
  113. package/dist/api/com/atproto/repo/deleteRecord.js.map +1 -1
  114. package/dist/api/com/atproto/repo/describeRepo.js.map +1 -1
  115. package/dist/api/com/atproto/repo/getRecord.js.map +1 -1
  116. package/dist/api/com/atproto/repo/importRepo.js.map +1 -1
  117. package/dist/api/com/atproto/repo/index.js.map +1 -1
  118. package/dist/api/com/atproto/repo/listMissingBlobs.js.map +1 -1
  119. package/dist/api/com/atproto/repo/listRecords.js.map +1 -1
  120. package/dist/api/com/atproto/repo/putRecord.js.map +1 -1
  121. package/dist/api/com/atproto/repo/uploadBlob.js.map +1 -1
  122. package/dist/api/com/atproto/server/activateAccount.js.map +1 -1
  123. package/dist/api/com/atproto/server/checkAccountStatus.js.map +1 -1
  124. package/dist/api/com/atproto/server/confirmEmail.js.map +1 -1
  125. package/dist/api/com/atproto/server/createAccount.js.map +1 -1
  126. package/dist/api/com/atproto/server/createAppPassword.js.map +1 -1
  127. package/dist/api/com/atproto/server/createInviteCode.js.map +1 -1
  128. package/dist/api/com/atproto/server/createInviteCodes.js.map +1 -1
  129. package/dist/api/com/atproto/server/createSession.js.map +1 -1
  130. package/dist/api/com/atproto/server/deactivateAccount.js.map +1 -1
  131. package/dist/api/com/atproto/server/deleteAccount.js.map +1 -1
  132. package/dist/api/com/atproto/server/deleteSession.js.map +1 -1
  133. package/dist/api/com/atproto/server/describeServer.js.map +1 -1
  134. package/dist/api/com/atproto/server/getAccountInviteCodes.js.map +1 -1
  135. package/dist/api/com/atproto/server/getServiceAuth.js.map +1 -1
  136. package/dist/api/com/atproto/server/getSession.js.map +1 -1
  137. package/dist/api/com/atproto/server/index.js.map +1 -1
  138. package/dist/api/com/atproto/server/listAppPasswords.js.map +1 -1
  139. package/dist/api/com/atproto/server/refreshSession.js.map +1 -1
  140. package/dist/api/com/atproto/server/requestAccountDelete.js.map +1 -1
  141. package/dist/api/com/atproto/server/requestEmailConfirmation.js.map +1 -1
  142. package/dist/api/com/atproto/server/requestEmailUpdate.js.map +1 -1
  143. package/dist/api/com/atproto/server/requestPasswordReset.js.map +1 -1
  144. package/dist/api/com/atproto/server/reserveSigningKey.js.map +1 -1
  145. package/dist/api/com/atproto/server/resetPassword.js.map +1 -1
  146. package/dist/api/com/atproto/server/revokeAppPassword.js.map +1 -1
  147. package/dist/api/com/atproto/server/updateEmail.js.map +1 -1
  148. package/dist/api/com/atproto/server/util.js.map +1 -1
  149. package/dist/api/com/atproto/sync/deprecated/getCheckout.js.map +1 -1
  150. package/dist/api/com/atproto/sync/deprecated/getHead.js.map +1 -1
  151. package/dist/api/com/atproto/sync/getBlob.js.map +1 -1
  152. package/dist/api/com/atproto/sync/getBlocks.js.map +1 -1
  153. package/dist/api/com/atproto/sync/getLatestCommit.js.map +1 -1
  154. package/dist/api/com/atproto/sync/getRecord.js.map +1 -1
  155. package/dist/api/com/atproto/sync/getRepo.js.map +1 -1
  156. package/dist/api/com/atproto/sync/getRepoStatus.js.map +1 -1
  157. package/dist/api/com/atproto/sync/index.js.map +1 -1
  158. package/dist/api/com/atproto/sync/listBlobs.js.map +1 -1
  159. package/dist/api/com/atproto/sync/listRepos.js.map +1 -1
  160. package/dist/api/com/atproto/sync/subscribeRepos.js.map +1 -1
  161. package/dist/api/com/atproto/sync/util.js.map +1 -1
  162. package/dist/api/com/atproto/temp/checkSignupQueue.js.map +1 -1
  163. package/dist/api/com/atproto/temp/index.js.map +1 -1
  164. package/dist/api/index.js.map +1 -1
  165. package/dist/api/proxy.js.map +1 -1
  166. package/dist/app-view.js.map +1 -1
  167. package/dist/auth-output.js.map +1 -1
  168. package/dist/auth-routes.js.map +1 -1
  169. package/dist/auth-scope.js.map +1 -1
  170. package/dist/auth-verifier.js.map +1 -1
  171. package/dist/background.js.map +1 -1
  172. package/dist/basic-routes.js.map +1 -1
  173. package/dist/bsky-app-view.js.map +1 -1
  174. package/dist/config/config.js.map +1 -1
  175. package/dist/config/env.js.map +1 -1
  176. package/dist/config/index.js.map +1 -1
  177. package/dist/config/secrets.js.map +1 -1
  178. package/dist/context.js.map +1 -1
  179. package/dist/crawlers.js.map +1 -1
  180. package/dist/db/cast.js.map +1 -1
  181. package/dist/db/db.js.map +1 -1
  182. package/dist/db/index.js.map +1 -1
  183. package/dist/db/migrator.js.map +1 -1
  184. package/dist/db/pagination.js.map +1 -1
  185. package/dist/db/tables/moderation.js.map +1 -1
  186. package/dist/db/util.js.map +1 -1
  187. package/dist/did-cache/db/index.js.map +1 -1
  188. package/dist/did-cache/db/migrations.js.map +1 -1
  189. package/dist/did-cache/db/schema.js.map +1 -1
  190. package/dist/did-cache/index.js.map +1 -1
  191. package/dist/disk-blobstore.js.map +1 -1
  192. package/dist/error.js.map +1 -1
  193. package/dist/handle/explicit-slurs.js.map +1 -1
  194. package/dist/handle/index.js.map +1 -1
  195. package/dist/handle/reserved.js.map +1 -1
  196. package/dist/image/image-url-builder.js.map +1 -1
  197. package/dist/image/index.js.map +1 -1
  198. package/dist/index.js.map +1 -1
  199. package/dist/lexicon/index.d.ts +6 -0
  200. package/dist/lexicon/index.d.ts.map +1 -1
  201. package/dist/lexicon/index.js +12 -0
  202. package/dist/lexicon/index.js.map +1 -1
  203. package/dist/lexicon/lexicons.d.ts +835 -43
  204. package/dist/lexicon/lexicons.d.ts.map +1 -1
  205. package/dist/lexicon/lexicons.js +407 -0
  206. package/dist/lexicon/lexicons.js.map +1 -1
  207. package/dist/lexicon/types/app/bsky/actor/defs.js.map +1 -1
  208. package/dist/lexicon/types/app/bsky/actor/getPreferences.js.map +1 -1
  209. package/dist/lexicon/types/app/bsky/actor/getProfile.js.map +1 -1
  210. package/dist/lexicon/types/app/bsky/actor/getProfiles.js.map +1 -1
  211. package/dist/lexicon/types/app/bsky/actor/getSuggestions.js.map +1 -1
  212. package/dist/lexicon/types/app/bsky/actor/profile.js.map +1 -1
  213. package/dist/lexicon/types/app/bsky/actor/putPreferences.js.map +1 -1
  214. package/dist/lexicon/types/app/bsky/actor/searchActors.js.map +1 -1
  215. package/dist/lexicon/types/app/bsky/actor/searchActorsTypeahead.js.map +1 -1
  216. package/dist/lexicon/types/app/bsky/actor/status.js.map +1 -1
  217. package/dist/lexicon/types/app/bsky/bookmark/createBookmark.js.map +1 -1
  218. package/dist/lexicon/types/app/bsky/bookmark/defs.js.map +1 -1
  219. package/dist/lexicon/types/app/bsky/bookmark/deleteBookmark.js.map +1 -1
  220. package/dist/lexicon/types/app/bsky/bookmark/getBookmarks.js.map +1 -1
  221. package/dist/lexicon/types/app/bsky/embed/defs.js.map +1 -1
  222. package/dist/lexicon/types/app/bsky/embed/external.js.map +1 -1
  223. package/dist/lexicon/types/app/bsky/embed/images.js.map +1 -1
  224. package/dist/lexicon/types/app/bsky/embed/record.js.map +1 -1
  225. package/dist/lexicon/types/app/bsky/embed/recordWithMedia.js.map +1 -1
  226. package/dist/lexicon/types/app/bsky/embed/video.js.map +1 -1
  227. package/dist/lexicon/types/app/bsky/feed/defs.js.map +1 -1
  228. package/dist/lexicon/types/app/bsky/feed/describeFeedGenerator.js.map +1 -1
  229. package/dist/lexicon/types/app/bsky/feed/generator.js.map +1 -1
  230. package/dist/lexicon/types/app/bsky/feed/getActorFeeds.js.map +1 -1
  231. package/dist/lexicon/types/app/bsky/feed/getActorLikes.js.map +1 -1
  232. package/dist/lexicon/types/app/bsky/feed/getAuthorFeed.js.map +1 -1
  233. package/dist/lexicon/types/app/bsky/feed/getFeed.js.map +1 -1
  234. package/dist/lexicon/types/app/bsky/feed/getFeedGenerator.js.map +1 -1
  235. package/dist/lexicon/types/app/bsky/feed/getFeedGenerators.js.map +1 -1
  236. package/dist/lexicon/types/app/bsky/feed/getFeedSkeleton.js.map +1 -1
  237. package/dist/lexicon/types/app/bsky/feed/getLikes.js.map +1 -1
  238. package/dist/lexicon/types/app/bsky/feed/getListFeed.js.map +1 -1
  239. package/dist/lexicon/types/app/bsky/feed/getPostThread.js.map +1 -1
  240. package/dist/lexicon/types/app/bsky/feed/getPosts.js.map +1 -1
  241. package/dist/lexicon/types/app/bsky/feed/getQuotes.js.map +1 -1
  242. package/dist/lexicon/types/app/bsky/feed/getRepostedBy.js.map +1 -1
  243. package/dist/lexicon/types/app/bsky/feed/getSuggestedFeeds.js.map +1 -1
  244. package/dist/lexicon/types/app/bsky/feed/getTimeline.js.map +1 -1
  245. package/dist/lexicon/types/app/bsky/feed/like.js.map +1 -1
  246. package/dist/lexicon/types/app/bsky/feed/post.js.map +1 -1
  247. package/dist/lexicon/types/app/bsky/feed/postgate.js.map +1 -1
  248. package/dist/lexicon/types/app/bsky/feed/repost.js.map +1 -1
  249. package/dist/lexicon/types/app/bsky/feed/searchPosts.js.map +1 -1
  250. package/dist/lexicon/types/app/bsky/feed/sendInteractions.js.map +1 -1
  251. package/dist/lexicon/types/app/bsky/feed/threadgate.js.map +1 -1
  252. package/dist/lexicon/types/app/bsky/graph/block.js.map +1 -1
  253. package/dist/lexicon/types/app/bsky/graph/defs.js.map +1 -1
  254. package/dist/lexicon/types/app/bsky/graph/follow.js.map +1 -1
  255. package/dist/lexicon/types/app/bsky/graph/getActorStarterPacks.js.map +1 -1
  256. package/dist/lexicon/types/app/bsky/graph/getBlocks.js.map +1 -1
  257. package/dist/lexicon/types/app/bsky/graph/getFollowers.js.map +1 -1
  258. package/dist/lexicon/types/app/bsky/graph/getFollows.js.map +1 -1
  259. package/dist/lexicon/types/app/bsky/graph/getKnownFollowers.js.map +1 -1
  260. package/dist/lexicon/types/app/bsky/graph/getList.js.map +1 -1
  261. package/dist/lexicon/types/app/bsky/graph/getListBlocks.js.map +1 -1
  262. package/dist/lexicon/types/app/bsky/graph/getListMutes.js.map +1 -1
  263. package/dist/lexicon/types/app/bsky/graph/getLists.js.map +1 -1
  264. package/dist/lexicon/types/app/bsky/graph/getListsWithMembership.js.map +1 -1
  265. package/dist/lexicon/types/app/bsky/graph/getMutes.js.map +1 -1
  266. package/dist/lexicon/types/app/bsky/graph/getRelationships.js.map +1 -1
  267. package/dist/lexicon/types/app/bsky/graph/getStarterPack.js.map +1 -1
  268. package/dist/lexicon/types/app/bsky/graph/getStarterPacks.js.map +1 -1
  269. package/dist/lexicon/types/app/bsky/graph/getStarterPacksWithMembership.js.map +1 -1
  270. package/dist/lexicon/types/app/bsky/graph/getSuggestedFollowsByActor.js.map +1 -1
  271. package/dist/lexicon/types/app/bsky/graph/list.js.map +1 -1
  272. package/dist/lexicon/types/app/bsky/graph/listblock.js.map +1 -1
  273. package/dist/lexicon/types/app/bsky/graph/listitem.js.map +1 -1
  274. package/dist/lexicon/types/app/bsky/graph/muteActor.js.map +1 -1
  275. package/dist/lexicon/types/app/bsky/graph/muteActorList.js.map +1 -1
  276. package/dist/lexicon/types/app/bsky/graph/muteThread.js.map +1 -1
  277. package/dist/lexicon/types/app/bsky/graph/searchStarterPacks.js.map +1 -1
  278. package/dist/lexicon/types/app/bsky/graph/starterpack.js.map +1 -1
  279. package/dist/lexicon/types/app/bsky/graph/unmuteActor.js.map +1 -1
  280. package/dist/lexicon/types/app/bsky/graph/unmuteActorList.js.map +1 -1
  281. package/dist/lexicon/types/app/bsky/graph/unmuteThread.js.map +1 -1
  282. package/dist/lexicon/types/app/bsky/graph/verification.js.map +1 -1
  283. package/dist/lexicon/types/app/bsky/labeler/defs.js.map +1 -1
  284. package/dist/lexicon/types/app/bsky/labeler/getServices.js.map +1 -1
  285. package/dist/lexicon/types/app/bsky/labeler/service.js.map +1 -1
  286. package/dist/lexicon/types/app/bsky/notification/declaration.js.map +1 -1
  287. package/dist/lexicon/types/app/bsky/notification/defs.js.map +1 -1
  288. package/dist/lexicon/types/app/bsky/notification/getPreferences.js.map +1 -1
  289. package/dist/lexicon/types/app/bsky/notification/getUnreadCount.js.map +1 -1
  290. package/dist/lexicon/types/app/bsky/notification/listActivitySubscriptions.js.map +1 -1
  291. package/dist/lexicon/types/app/bsky/notification/listNotifications.js.map +1 -1
  292. package/dist/lexicon/types/app/bsky/notification/putActivitySubscription.js.map +1 -1
  293. package/dist/lexicon/types/app/bsky/notification/putPreferences.js.map +1 -1
  294. package/dist/lexicon/types/app/bsky/notification/putPreferencesV2.js.map +1 -1
  295. package/dist/lexicon/types/app/bsky/notification/registerPush.js.map +1 -1
  296. package/dist/lexicon/types/app/bsky/notification/unregisterPush.js.map +1 -1
  297. package/dist/lexicon/types/app/bsky/notification/updateSeen.js.map +1 -1
  298. package/dist/lexicon/types/app/bsky/richtext/facet.js.map +1 -1
  299. package/dist/lexicon/types/app/bsky/unspecced/defs.js.map +1 -1
  300. package/dist/lexicon/types/app/bsky/unspecced/getAgeAssuranceState.js.map +1 -1
  301. package/dist/lexicon/types/app/bsky/unspecced/getConfig.js.map +1 -1
  302. package/dist/lexicon/types/app/bsky/unspecced/getOnboardingSuggestedStarterPacks.js.map +1 -1
  303. package/dist/lexicon/types/app/bsky/unspecced/getOnboardingSuggestedStarterPacksSkeleton.js.map +1 -1
  304. package/dist/lexicon/types/app/bsky/unspecced/getPopularFeedGenerators.js.map +1 -1
  305. package/dist/lexicon/types/app/bsky/unspecced/getPostThreadOtherV2.js.map +1 -1
  306. package/dist/lexicon/types/app/bsky/unspecced/getPostThreadV2.js.map +1 -1
  307. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedFeeds.js.map +1 -1
  308. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedFeedsSkeleton.js.map +1 -1
  309. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacks.js.map +1 -1
  310. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.js.map +1 -1
  311. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsers.js.map +1 -1
  312. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersSkeleton.js.map +1 -1
  313. package/dist/lexicon/types/app/bsky/unspecced/getSuggestionsSkeleton.js.map +1 -1
  314. package/dist/lexicon/types/app/bsky/unspecced/getTaggedSuggestions.js.map +1 -1
  315. package/dist/lexicon/types/app/bsky/unspecced/getTrendingTopics.js.map +1 -1
  316. package/dist/lexicon/types/app/bsky/unspecced/getTrends.js.map +1 -1
  317. package/dist/lexicon/types/app/bsky/unspecced/getTrendsSkeleton.js.map +1 -1
  318. package/dist/lexicon/types/app/bsky/unspecced/initAgeAssurance.js.map +1 -1
  319. package/dist/lexicon/types/app/bsky/unspecced/searchActorsSkeleton.js.map +1 -1
  320. package/dist/lexicon/types/app/bsky/unspecced/searchPostsSkeleton.js.map +1 -1
  321. package/dist/lexicon/types/app/bsky/unspecced/searchStarterPacksSkeleton.js.map +1 -1
  322. package/dist/lexicon/types/app/bsky/video/defs.js.map +1 -1
  323. package/dist/lexicon/types/app/bsky/video/getJobStatus.js.map +1 -1
  324. package/dist/lexicon/types/app/bsky/video/getUploadLimits.js.map +1 -1
  325. package/dist/lexicon/types/app/bsky/video/uploadVideo.js.map +1 -1
  326. package/dist/lexicon/types/chat/bsky/actor/declaration.js.map +1 -1
  327. package/dist/lexicon/types/chat/bsky/actor/defs.js.map +1 -1
  328. package/dist/lexicon/types/chat/bsky/actor/deleteAccount.js.map +1 -1
  329. package/dist/lexicon/types/chat/bsky/actor/exportAccountData.js.map +1 -1
  330. package/dist/lexicon/types/chat/bsky/convo/acceptConvo.js.map +1 -1
  331. package/dist/lexicon/types/chat/bsky/convo/addReaction.js.map +1 -1
  332. package/dist/lexicon/types/chat/bsky/convo/defs.js.map +1 -1
  333. package/dist/lexicon/types/chat/bsky/convo/deleteMessageForSelf.js.map +1 -1
  334. package/dist/lexicon/types/chat/bsky/convo/getConvo.js.map +1 -1
  335. package/dist/lexicon/types/chat/bsky/convo/getConvoAvailability.js.map +1 -1
  336. package/dist/lexicon/types/chat/bsky/convo/getConvoForMembers.js.map +1 -1
  337. package/dist/lexicon/types/chat/bsky/convo/getLog.js.map +1 -1
  338. package/dist/lexicon/types/chat/bsky/convo/getMessages.js.map +1 -1
  339. package/dist/lexicon/types/chat/bsky/convo/leaveConvo.js.map +1 -1
  340. package/dist/lexicon/types/chat/bsky/convo/listConvos.js.map +1 -1
  341. package/dist/lexicon/types/chat/bsky/convo/muteConvo.js.map +1 -1
  342. package/dist/lexicon/types/chat/bsky/convo/removeReaction.js.map +1 -1
  343. package/dist/lexicon/types/chat/bsky/convo/sendMessage.js.map +1 -1
  344. package/dist/lexicon/types/chat/bsky/convo/sendMessageBatch.js.map +1 -1
  345. package/dist/lexicon/types/chat/bsky/convo/unmuteConvo.js.map +1 -1
  346. package/dist/lexicon/types/chat/bsky/convo/updateAllRead.js.map +1 -1
  347. package/dist/lexicon/types/chat/bsky/convo/updateRead.js.map +1 -1
  348. package/dist/lexicon/types/chat/bsky/moderation/getActorMetadata.js.map +1 -1
  349. package/dist/lexicon/types/chat/bsky/moderation/getMessageContext.js.map +1 -1
  350. package/dist/lexicon/types/chat/bsky/moderation/updateActorAccess.js.map +1 -1
  351. package/dist/lexicon/types/com/atproto/admin/defs.js.map +1 -1
  352. package/dist/lexicon/types/com/atproto/admin/deleteAccount.js.map +1 -1
  353. package/dist/lexicon/types/com/atproto/admin/disableAccountInvites.js.map +1 -1
  354. package/dist/lexicon/types/com/atproto/admin/disableInviteCodes.js.map +1 -1
  355. package/dist/lexicon/types/com/atproto/admin/enableAccountInvites.js.map +1 -1
  356. package/dist/lexicon/types/com/atproto/admin/getAccountInfo.js.map +1 -1
  357. package/dist/lexicon/types/com/atproto/admin/getAccountInfos.js.map +1 -1
  358. package/dist/lexicon/types/com/atproto/admin/getInviteCodes.js.map +1 -1
  359. package/dist/lexicon/types/com/atproto/admin/getSubjectStatus.js.map +1 -1
  360. package/dist/lexicon/types/com/atproto/admin/searchAccounts.js.map +1 -1
  361. package/dist/lexicon/types/com/atproto/admin/sendEmail.js.map +1 -1
  362. package/dist/lexicon/types/com/atproto/admin/updateAccountEmail.js.map +1 -1
  363. package/dist/lexicon/types/com/atproto/admin/updateAccountHandle.js.map +1 -1
  364. package/dist/lexicon/types/com/atproto/admin/updateAccountPassword.js.map +1 -1
  365. package/dist/lexicon/types/com/atproto/admin/updateAccountSigningKey.js.map +1 -1
  366. package/dist/lexicon/types/com/atproto/admin/updateSubjectStatus.js.map +1 -1
  367. package/dist/lexicon/types/com/atproto/identity/defs.js.map +1 -1
  368. package/dist/lexicon/types/com/atproto/identity/getRecommendedDidCredentials.js.map +1 -1
  369. package/dist/lexicon/types/com/atproto/identity/refreshIdentity.js.map +1 -1
  370. package/dist/lexicon/types/com/atproto/identity/requestPlcOperationSignature.js.map +1 -1
  371. package/dist/lexicon/types/com/atproto/identity/resolveDid.js.map +1 -1
  372. package/dist/lexicon/types/com/atproto/identity/resolveHandle.js.map +1 -1
  373. package/dist/lexicon/types/com/atproto/identity/resolveIdentity.js.map +1 -1
  374. package/dist/lexicon/types/com/atproto/identity/signPlcOperation.js.map +1 -1
  375. package/dist/lexicon/types/com/atproto/identity/submitPlcOperation.js.map +1 -1
  376. package/dist/lexicon/types/com/atproto/identity/updateHandle.js.map +1 -1
  377. package/dist/lexicon/types/com/atproto/label/defs.js.map +1 -1
  378. package/dist/lexicon/types/com/atproto/label/queryLabels.js.map +1 -1
  379. package/dist/lexicon/types/com/atproto/label/subscribeLabels.js.map +1 -1
  380. package/dist/lexicon/types/com/atproto/lexicon/schema.js.map +1 -1
  381. package/dist/lexicon/types/com/atproto/moderation/createReport.js.map +1 -1
  382. package/dist/lexicon/types/com/atproto/moderation/defs.js.map +1 -1
  383. package/dist/lexicon/types/com/atproto/repo/applyWrites.js.map +1 -1
  384. package/dist/lexicon/types/com/atproto/repo/createRecord.js.map +1 -1
  385. package/dist/lexicon/types/com/atproto/repo/defs.js.map +1 -1
  386. package/dist/lexicon/types/com/atproto/repo/deleteRecord.js.map +1 -1
  387. package/dist/lexicon/types/com/atproto/repo/describeRepo.js.map +1 -1
  388. package/dist/lexicon/types/com/atproto/repo/getRecord.js.map +1 -1
  389. package/dist/lexicon/types/com/atproto/repo/importRepo.js.map +1 -1
  390. package/dist/lexicon/types/com/atproto/repo/listMissingBlobs.js.map +1 -1
  391. package/dist/lexicon/types/com/atproto/repo/listRecords.js.map +1 -1
  392. package/dist/lexicon/types/com/atproto/repo/putRecord.js.map +1 -1
  393. package/dist/lexicon/types/com/atproto/repo/strongRef.js.map +1 -1
  394. package/dist/lexicon/types/com/atproto/repo/uploadBlob.js.map +1 -1
  395. package/dist/lexicon/types/com/atproto/server/activateAccount.js.map +1 -1
  396. package/dist/lexicon/types/com/atproto/server/checkAccountStatus.js.map +1 -1
  397. package/dist/lexicon/types/com/atproto/server/confirmEmail.js.map +1 -1
  398. package/dist/lexicon/types/com/atproto/server/createAccount.js.map +1 -1
  399. package/dist/lexicon/types/com/atproto/server/createAppPassword.js.map +1 -1
  400. package/dist/lexicon/types/com/atproto/server/createInviteCode.js.map +1 -1
  401. package/dist/lexicon/types/com/atproto/server/createInviteCodes.js.map +1 -1
  402. package/dist/lexicon/types/com/atproto/server/createSession.js.map +1 -1
  403. package/dist/lexicon/types/com/atproto/server/deactivateAccount.js.map +1 -1
  404. package/dist/lexicon/types/com/atproto/server/defs.js.map +1 -1
  405. package/dist/lexicon/types/com/atproto/server/deleteAccount.js.map +1 -1
  406. package/dist/lexicon/types/com/atproto/server/deleteSession.js.map +1 -1
  407. package/dist/lexicon/types/com/atproto/server/describeServer.js.map +1 -1
  408. package/dist/lexicon/types/com/atproto/server/getAccountInviteCodes.js.map +1 -1
  409. package/dist/lexicon/types/com/atproto/server/getServiceAuth.js.map +1 -1
  410. package/dist/lexicon/types/com/atproto/server/getSession.js.map +1 -1
  411. package/dist/lexicon/types/com/atproto/server/listAppPasswords.js.map +1 -1
  412. package/dist/lexicon/types/com/atproto/server/refreshSession.js.map +1 -1
  413. package/dist/lexicon/types/com/atproto/server/requestAccountDelete.js.map +1 -1
  414. package/dist/lexicon/types/com/atproto/server/requestEmailConfirmation.js.map +1 -1
  415. package/dist/lexicon/types/com/atproto/server/requestEmailUpdate.js.map +1 -1
  416. package/dist/lexicon/types/com/atproto/server/requestPasswordReset.js.map +1 -1
  417. package/dist/lexicon/types/com/atproto/server/reserveSigningKey.js.map +1 -1
  418. package/dist/lexicon/types/com/atproto/server/resetPassword.js.map +1 -1
  419. package/dist/lexicon/types/com/atproto/server/revokeAppPassword.js.map +1 -1
  420. package/dist/lexicon/types/com/atproto/server/updateEmail.js.map +1 -1
  421. package/dist/lexicon/types/com/atproto/sync/defs.js.map +1 -1
  422. package/dist/lexicon/types/com/atproto/sync/getBlob.js.map +1 -1
  423. package/dist/lexicon/types/com/atproto/sync/getBlocks.js.map +1 -1
  424. package/dist/lexicon/types/com/atproto/sync/getCheckout.js.map +1 -1
  425. package/dist/lexicon/types/com/atproto/sync/getHead.js.map +1 -1
  426. package/dist/lexicon/types/com/atproto/sync/getHostStatus.js.map +1 -1
  427. package/dist/lexicon/types/com/atproto/sync/getLatestCommit.js.map +1 -1
  428. package/dist/lexicon/types/com/atproto/sync/getRecord.js.map +1 -1
  429. package/dist/lexicon/types/com/atproto/sync/getRepo.js.map +1 -1
  430. package/dist/lexicon/types/com/atproto/sync/getRepoStatus.js.map +1 -1
  431. package/dist/lexicon/types/com/atproto/sync/listBlobs.js.map +1 -1
  432. package/dist/lexicon/types/com/atproto/sync/listHosts.js.map +1 -1
  433. package/dist/lexicon/types/com/atproto/sync/listRepos.js.map +1 -1
  434. package/dist/lexicon/types/com/atproto/sync/listReposByCollection.js.map +1 -1
  435. package/dist/lexicon/types/com/atproto/sync/notifyOfUpdate.js.map +1 -1
  436. package/dist/lexicon/types/com/atproto/sync/requestCrawl.js.map +1 -1
  437. package/dist/lexicon/types/com/atproto/sync/subscribeRepos.js.map +1 -1
  438. package/dist/lexicon/types/com/atproto/temp/addReservedHandle.js.map +1 -1
  439. package/dist/lexicon/types/com/atproto/temp/checkHandleAvailability.js.map +1 -1
  440. package/dist/lexicon/types/com/atproto/temp/checkSignupQueue.js.map +1 -1
  441. package/dist/lexicon/types/com/atproto/temp/dereferenceScope.js.map +1 -1
  442. package/dist/lexicon/types/com/atproto/temp/fetchLabels.js.map +1 -1
  443. package/dist/lexicon/types/com/atproto/temp/requestPhoneVerification.js.map +1 -1
  444. package/dist/lexicon/types/com/atproto/temp/revokeAccountCredentials.js.map +1 -1
  445. package/dist/lexicon/types/tools/ozone/communication/createTemplate.js.map +1 -1
  446. package/dist/lexicon/types/tools/ozone/communication/defs.js.map +1 -1
  447. package/dist/lexicon/types/tools/ozone/communication/deleteTemplate.js.map +1 -1
  448. package/dist/lexicon/types/tools/ozone/communication/listTemplates.js.map +1 -1
  449. package/dist/lexicon/types/tools/ozone/communication/updateTemplate.js.map +1 -1
  450. package/dist/lexicon/types/tools/ozone/hosting/getAccountHistory.js.map +1 -1
  451. package/dist/lexicon/types/tools/ozone/moderation/cancelScheduledActions.d.ts +46 -0
  452. package/dist/lexicon/types/tools/ozone/moderation/cancelScheduledActions.d.ts.map +1 -0
  453. package/dist/lexicon/types/tools/ozone/moderation/cancelScheduledActions.js +25 -0
  454. package/dist/lexicon/types/tools/ozone/moderation/cancelScheduledActions.js.map +1 -0
  455. package/dist/lexicon/types/tools/ozone/moderation/defs.d.ts +57 -2
  456. package/dist/lexicon/types/tools/ozone/moderation/defs.d.ts.map +1 -1
  457. package/dist/lexicon/types/tools/ozone/moderation/defs.js +27 -0
  458. package/dist/lexicon/types/tools/ozone/moderation/defs.js.map +1 -1
  459. package/dist/lexicon/types/tools/ozone/moderation/emitEvent.d.ts +1 -1
  460. package/dist/lexicon/types/tools/ozone/moderation/emitEvent.d.ts.map +1 -1
  461. package/dist/lexicon/types/tools/ozone/moderation/emitEvent.js.map +1 -1
  462. package/dist/lexicon/types/tools/ozone/moderation/getAccountTimeline.d.ts +1 -1
  463. package/dist/lexicon/types/tools/ozone/moderation/getAccountTimeline.d.ts.map +1 -1
  464. package/dist/lexicon/types/tools/ozone/moderation/getAccountTimeline.js.map +1 -1
  465. package/dist/lexicon/types/tools/ozone/moderation/getEvent.js.map +1 -1
  466. package/dist/lexicon/types/tools/ozone/moderation/getRecord.js.map +1 -1
  467. package/dist/lexicon/types/tools/ozone/moderation/getRecords.js.map +1 -1
  468. package/dist/lexicon/types/tools/ozone/moderation/getRepo.js.map +1 -1
  469. package/dist/lexicon/types/tools/ozone/moderation/getReporterStats.js.map +1 -1
  470. package/dist/lexicon/types/tools/ozone/moderation/getRepos.js.map +1 -1
  471. package/dist/lexicon/types/tools/ozone/moderation/getSubjects.js.map +1 -1
  472. package/dist/lexicon/types/tools/ozone/moderation/listScheduledActions.d.ts +38 -0
  473. package/dist/lexicon/types/tools/ozone/moderation/listScheduledActions.d.ts.map +1 -0
  474. package/dist/lexicon/types/tools/ozone/moderation/listScheduledActions.js +7 -0
  475. package/dist/lexicon/types/tools/ozone/moderation/listScheduledActions.js.map +1 -0
  476. package/dist/lexicon/types/tools/ozone/moderation/queryEvents.js.map +1 -1
  477. package/dist/lexicon/types/tools/ozone/moderation/queryStatuses.js.map +1 -1
  478. package/dist/lexicon/types/tools/ozone/moderation/scheduleAction.d.ts +75 -0
  479. package/dist/lexicon/types/tools/ozone/moderation/scheduleAction.d.ts.map +1 -0
  480. package/dist/lexicon/types/tools/ozone/moderation/scheduleAction.js +43 -0
  481. package/dist/lexicon/types/tools/ozone/moderation/scheduleAction.js.map +1 -0
  482. package/dist/lexicon/types/tools/ozone/moderation/searchRepos.js.map +1 -1
  483. package/dist/lexicon/types/tools/ozone/report/defs.js.map +1 -1
  484. package/dist/lexicon/types/tools/ozone/safelink/addRule.js.map +1 -1
  485. package/dist/lexicon/types/tools/ozone/safelink/defs.js.map +1 -1
  486. package/dist/lexicon/types/tools/ozone/safelink/queryEvents.js.map +1 -1
  487. package/dist/lexicon/types/tools/ozone/safelink/queryRules.js.map +1 -1
  488. package/dist/lexicon/types/tools/ozone/safelink/removeRule.js.map +1 -1
  489. package/dist/lexicon/types/tools/ozone/safelink/updateRule.js.map +1 -1
  490. package/dist/lexicon/types/tools/ozone/server/getConfig.js.map +1 -1
  491. package/dist/lexicon/types/tools/ozone/set/addValues.js.map +1 -1
  492. package/dist/lexicon/types/tools/ozone/set/defs.js.map +1 -1
  493. package/dist/lexicon/types/tools/ozone/set/deleteSet.js.map +1 -1
  494. package/dist/lexicon/types/tools/ozone/set/deleteValues.js.map +1 -1
  495. package/dist/lexicon/types/tools/ozone/set/getValues.js.map +1 -1
  496. package/dist/lexicon/types/tools/ozone/set/querySets.js.map +1 -1
  497. package/dist/lexicon/types/tools/ozone/set/upsertSet.js.map +1 -1
  498. package/dist/lexicon/types/tools/ozone/setting/defs.js.map +1 -1
  499. package/dist/lexicon/types/tools/ozone/setting/listOptions.js.map +1 -1
  500. package/dist/lexicon/types/tools/ozone/setting/removeOptions.js.map +1 -1
  501. package/dist/lexicon/types/tools/ozone/setting/upsertOption.js.map +1 -1
  502. package/dist/lexicon/types/tools/ozone/signature/defs.js.map +1 -1
  503. package/dist/lexicon/types/tools/ozone/signature/findCorrelation.js.map +1 -1
  504. package/dist/lexicon/types/tools/ozone/signature/findRelatedAccounts.js.map +1 -1
  505. package/dist/lexicon/types/tools/ozone/signature/searchAccounts.js.map +1 -1
  506. package/dist/lexicon/types/tools/ozone/team/addMember.js.map +1 -1
  507. package/dist/lexicon/types/tools/ozone/team/defs.js.map +1 -1
  508. package/dist/lexicon/types/tools/ozone/team/deleteMember.js.map +1 -1
  509. package/dist/lexicon/types/tools/ozone/team/listMembers.js.map +1 -1
  510. package/dist/lexicon/types/tools/ozone/team/updateMember.js.map +1 -1
  511. package/dist/lexicon/types/tools/ozone/verification/defs.js.map +1 -1
  512. package/dist/lexicon/types/tools/ozone/verification/grantVerifications.js.map +1 -1
  513. package/dist/lexicon/types/tools/ozone/verification/listVerifications.js.map +1 -1
  514. package/dist/lexicon/types/tools/ozone/verification/revokeVerifications.js.map +1 -1
  515. package/dist/lexicon/util.js.map +1 -1
  516. package/dist/logger.js.map +1 -1
  517. package/dist/mailer/index.js.map +1 -1
  518. package/dist/mailer/moderation.js.map +1 -1
  519. package/dist/mailer/templates.js.map +1 -1
  520. package/dist/pipethrough.js +3 -0
  521. package/dist/pipethrough.js.map +1 -1
  522. package/dist/read-after-write/index.js.map +1 -1
  523. package/dist/read-after-write/types.js.map +1 -1
  524. package/dist/read-after-write/util.js.map +1 -1
  525. package/dist/read-after-write/viewer.js.map +1 -1
  526. package/dist/redis.js.map +1 -1
  527. package/dist/repo/index.js.map +1 -1
  528. package/dist/repo/prepare.js.map +1 -1
  529. package/dist/repo/types.js.map +1 -1
  530. package/dist/scripts/index.js.map +1 -1
  531. package/dist/scripts/publish-identity.js.map +1 -1
  532. package/dist/scripts/rebuild-repo.js.map +1 -1
  533. package/dist/scripts/rotate-keys.js.map +1 -1
  534. package/dist/scripts/sequencer-recovery/index.js.map +1 -1
  535. package/dist/scripts/sequencer-recovery/recoverer.js.map +1 -1
  536. package/dist/scripts/sequencer-recovery/recovery-db.js.map +1 -1
  537. package/dist/scripts/sequencer-recovery/repair-repos.js.map +1 -1
  538. package/dist/scripts/sequencer-recovery/user-queues.js.map +1 -1
  539. package/dist/scripts/util.js.map +1 -1
  540. package/dist/sequencer/db/index.js.map +1 -1
  541. package/dist/sequencer/db/migrations/001-init.js.map +1 -1
  542. package/dist/sequencer/db/migrations/index.js.map +1 -1
  543. package/dist/sequencer/db/schema.js.map +1 -1
  544. package/dist/sequencer/events.js.map +1 -1
  545. package/dist/sequencer/index.js.map +1 -1
  546. package/dist/sequencer/outbox.js.map +1 -1
  547. package/dist/sequencer/sequencer.js.map +1 -1
  548. package/dist/util/compression.js.map +1 -1
  549. package/dist/util/debug.js.map +1 -1
  550. package/dist/util/http.js.map +1 -1
  551. package/dist/util/params.js.map +1 -1
  552. package/dist/util/types.js.map +1 -1
  553. package/dist/well-known.js.map +1 -1
  554. package/package.json +8 -8
  555. package/src/lexicon/index.ts +39 -0
  556. package/src/lexicon/lexicons.ts +430 -0
  557. package/src/lexicon/types/tools/ozone/moderation/cancelScheduledActions.ts +79 -0
  558. package/src/lexicon/types/tools/ozone/moderation/defs.ts +88 -0
  559. package/src/lexicon/types/tools/ozone/moderation/emitEvent.ts +2 -0
  560. package/src/lexicon/types/tools/ozone/moderation/getAccountTimeline.ts +2 -0
  561. package/src/lexicon/types/tools/ozone/moderation/listScheduledActions.ts +57 -0
  562. package/src/lexicon/types/tools/ozone/moderation/scheduleAction.ts +123 -0
  563. package/src/pipethrough.ts +3 -0
  564. package/tsconfig.build.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"pipethrough.js","sourceRoot":"","sources":["../src/pipethrough.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipethrough.js","sourceRoot":"","sources":["../src/pipethrough.ts"],"names":[],"mappings":"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","sourcesContent":["import { IncomingHttpHeaders, ServerResponse } from 'node:http'\nimport { PassThrough, Readable, finished } from 'node:stream'\nimport { Request } from 'express'\nimport { Dispatcher } from 'undici'\nimport {\n decodeStream,\n getServiceEndpoint,\n omit,\n streamToNodeBuffer,\n} from '@atproto/common'\nimport { RpcPermissionMatch } from '@atproto/oauth-scopes'\nimport { ResponseType, XRPCError as XRPCClientError } from '@atproto/xrpc'\nimport {\n CatchallHandler,\n HandlerPipeThroughBuffer,\n HandlerPipeThroughStream,\n InternalServerError,\n InvalidRequestError,\n XRPCError as XRPCServerError,\n excludeErrorResult,\n parseReqNsid,\n} from '@atproto/xrpc-server'\nimport { buildProxiedContentEncoding } from '@atproto-labs/xrpc-utils'\nimport { isAccessPrivileged } from './auth-scope'\nimport { AppContext } from './context'\nimport { ids } from './lexicon/lexicons'\nimport { httpLogger } from './logger'\n\nexport const proxyHandler = (ctx: AppContext): CatchallHandler => {\n const performAuth = ctx.authVerifier.authorization<RpcPermissionMatch>({\n authorize: (permissions, { params }) => permissions.assertRpc(params),\n })\n\n return async (req, res, next) => {\n // /!\\ Hot path\n try {\n if (\n req.method !== 'GET' &&\n req.method !== 'HEAD' &&\n req.method !== 'POST'\n ) {\n throw new XRPCServerError(\n ResponseType.InvalidRequest,\n 'XRPC requests only supports GET and POST',\n )\n }\n\n const body = req.method === 'POST' ? req : undefined\n if (body != null && !body.readable) {\n // Body was already consumed by a previous middleware\n throw new InternalServerError('Request body is not readable')\n }\n\n const lxm = parseReqNsid(req)\n if (PROTECTED_METHODS.has(lxm)) {\n throw new InvalidRequestError('Bad token method', 'InvalidToken')\n }\n\n const { url: origin, did: aud } = await parseProxyInfo(ctx, req, lxm)\n\n const authResult = await performAuth({ req, res, params: { lxm, aud } })\n\n const { credentials } = excludeErrorResult(authResult)\n\n if (\n credentials.type === 'access' &&\n !isAccessPrivileged(credentials.scope) &&\n PRIVILEGED_METHODS.has(lxm)\n ) {\n throw new InvalidRequestError('Bad token method', 'InvalidToken')\n }\n\n const headers: IncomingHttpHeaders = {\n 'accept-encoding': req.headers['accept-encoding'] || 'identity',\n 'accept-language': req.headers['accept-language'],\n 'atproto-accept-labelers': req.headers['atproto-accept-labelers'],\n 'x-bsky-topics': req.headers['x-bsky-topics'],\n\n 'content-type': body && req.headers['content-type'],\n 'content-encoding': body && req.headers['content-encoding'],\n 'content-length': body && req.headers['content-length'],\n\n authorization: `Bearer ${await ctx.serviceAuthJwt(credentials.did, aud, lxm)}`,\n }\n\n const dispatchOptions: Dispatcher.RequestOptions = {\n origin,\n method: req.method,\n path: req.originalUrl,\n body,\n headers,\n }\n\n await pipethroughStream(ctx, dispatchOptions, (upstream) => {\n res.status(upstream.statusCode)\n\n for (const [name, val] of responseHeaders(upstream.headers)) {\n res.setHeader(name, val)\n }\n\n // Note that we should not need to manually handle errors here (e.g. by\n // destroying the response), as the http server will handle them for us.\n res.on('error', logResponseError)\n\n // Tell undici to write the upstream response directly to the response\n return res\n })\n } catch (err) {\n next(err)\n }\n }\n}\n\nexport type PipethroughOptions = {\n /**\n * Specify the issuer (requester) for service auth. If not provided, no\n * authorization headers will be added to the request.\n */\n iss?: string\n\n /**\n * Override the audience for service auth. If not provided, the audience will\n * be determined based on the proxy service.\n */\n aud?: string\n\n /**\n * Override the lexicon method for service auth. If not provided, the lexicon\n * method will be determined based on the request path.\n */\n lxm?: string\n}\n\nexport async function pipethrough(\n ctx: AppContext,\n req: Request,\n options?: PipethroughOptions,\n): Promise<\n HandlerPipeThroughStream & {\n stream: Readable\n headers: Record<string, string>\n encoding: string\n }\n> {\n if (req.method !== 'GET' && req.method !== 'HEAD') {\n // pipethrough() is used from within xrpcServer handlers, which means that\n // the request body either has been parsed or is a readable stream that has\n // been piped for decoding & size limiting. Because of this, forwarding the\n // request body requires re-encoding it. Since we currently do not use\n // pipethrough() with procedures, proxying of request body is not\n // implemented.\n throw new InternalServerError(\n `Proxying of ${req.method} requests is not supported`,\n )\n }\n\n const lxm = parseReqNsid(req)\n\n const { url: origin, did: aud } = await parseProxyInfo(ctx, req, lxm)\n\n const dispatchOptions: Dispatcher.RequestOptions = {\n origin,\n method: req.method,\n path: req.originalUrl,\n headers: {\n 'accept-language': req.headers['accept-language'],\n 'atproto-accept-labelers': req.headers['atproto-accept-labelers'],\n 'x-bsky-topics': req.headers['x-bsky-topics'],\n\n // Because we sometimes need to interpret the response (e.g. during\n // read-after-write, through asPipeThroughBuffer()), we need to ask the\n // upstream server for an encoding that both the requester and the PDS can\n // understand. Since we might have to do the decoding ourselves, we will\n // use our own preferences (and weight) to negotiate the encoding.\n 'accept-encoding': buildProxiedContentEncoding(\n req.headers['accept-encoding'],\n ctx.cfg.proxy.preferCompressed,\n ),\n\n authorization: options?.iss\n ? `Bearer ${await ctx.serviceAuthJwt(options.iss, options.aud ?? aud, options.lxm ?? lxm)}`\n : undefined,\n },\n\n // Use a high water mark to buffer more data while performing async\n // operations before this stream is consumed. This is especially useful\n // while processing read-after-write operations.\n highWaterMark: 2 * 65536, // twice the default (64KiB)\n }\n\n const { headers, body } = await pipethroughRequest(ctx, dispatchOptions)\n\n return {\n encoding: safeString(headers['content-type']) ?? 'application/json',\n headers: Object.fromEntries(responseHeaders(headers)),\n stream: body,\n }\n}\n\n// Request setup/formatting\n// -------------------\n\nexport function computeProxyTo(\n ctx: AppContext,\n req: Request,\n lxm: string,\n): string {\n const proxyToHeader = req.header('atproto-proxy')\n if (proxyToHeader) return proxyToHeader\n\n const service = defaultService(ctx, lxm)\n if (service.serviceInfo) {\n return `${service.serviceInfo.did}#${service.serviceId}`\n }\n\n throw new InvalidRequestError(`No service configured for ${lxm}`)\n}\n\nexport async function parseProxyInfo(\n ctx: AppContext,\n req: Request,\n lxm: string,\n): Promise<{ url: string; did: string }> {\n // /!\\ Hot path\n\n const proxyToHeader = req.header('atproto-proxy')\n if (proxyToHeader) return parseProxyHeader(ctx, proxyToHeader)\n\n const { serviceInfo } = defaultService(ctx, lxm)\n if (serviceInfo) return serviceInfo\n\n throw new InvalidRequestError(`No service configured for ${lxm}`)\n}\n\nexport const parseProxyHeader = async (\n // Using subset of AppContext for testing purposes\n ctx: Pick<AppContext, 'cfg' | 'idResolver'>,\n proxyTo: string,\n): Promise<{ did: string; url: string }> => {\n // /!\\ Hot path\n\n const hashIndex = proxyTo.indexOf('#')\n\n if (hashIndex === 0) {\n throw new InvalidRequestError('no did specified in proxy header')\n }\n\n if (hashIndex === -1 || hashIndex === proxyTo.length - 1) {\n throw new InvalidRequestError('no service id specified in proxy header')\n }\n\n // More than one hash\n if (proxyTo.indexOf('#', hashIndex + 1) !== -1) {\n throw new InvalidRequestError('invalid proxy header format')\n }\n\n // Basic validation\n if (proxyTo.includes(' ')) {\n throw new InvalidRequestError('proxy header cannot contain spaces')\n }\n\n const did = proxyTo.slice(0, hashIndex)\n\n // Special case a configured appview, while still proxying correctly any other appview\n if (\n ctx.cfg.bskyAppView &&\n proxyTo === `${ctx.cfg.bskyAppView.did}#bsky_appview`\n ) {\n return { did, url: ctx.cfg.bskyAppView.url }\n }\n\n const didDoc = await ctx.idResolver.did.resolve(did)\n if (!didDoc) {\n throw new InvalidRequestError('could not resolve proxy did')\n }\n\n const serviceId = proxyTo.slice(hashIndex)\n const url = getServiceEndpoint(didDoc, { id: serviceId })\n if (!url) {\n throw new InvalidRequestError('could not resolve proxy did service url')\n }\n\n return { did, url }\n}\n\n/**\n * Utility function that wraps the undici stream() function and handles request\n * and response errors by wrapping them in XRPCError instances. This function is\n * more efficient than \"pipethroughRequest\" when a writable stream to pipe the\n * upstream response to is available.\n */\nasync function pipethroughStream(\n ctx: AppContext,\n dispatchOptions: Dispatcher.RequestOptions,\n successStreamFactory: Dispatcher.StreamFactory,\n): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n void ctx.proxyAgent\n .stream(dispatchOptions, (upstream) => {\n if (upstream.statusCode >= 400) {\n const passThrough = new PassThrough()\n\n void tryParsingError(upstream.headers, passThrough).then((parsed) => {\n const xrpcError = new XRPCClientError(\n upstream.statusCode === 500\n ? ResponseType.UpstreamFailure\n : upstream.statusCode,\n parsed.error,\n parsed.message,\n Object.fromEntries(responseHeaders(upstream.headers, false)),\n { cause: dispatchOptions },\n )\n\n reject(xrpcError)\n }, reject)\n\n return passThrough\n }\n\n const writable = successStreamFactory(upstream)\n\n // As soon as the control was passed to the writable stream (i.e. by\n // returning the writable hereafter), pipethroughStream() is considered\n // to have succeeded. Any error occurring while writing upstream data to\n // the writable stream should be handled through the stream's error\n // state (i.e. successStreamFactory() must ensure that error events on\n // the returned writable will be handled).\n resolve()\n\n return writable\n })\n // The following catch block will be triggered with either network errors\n // or writable stream errors. In the latter case, the promise will already\n // be resolved, and reject()ing it there after will have no effect. Those\n // error would still be logged by the successStreamFactory() function.\n .catch(handleUpstreamRequestError)\n .catch(reject)\n })\n}\n\n/**\n * Utility function that wraps the undici request() function and handles request\n * and response errors by wrapping them in XRPCError instances.\n */\nasync function pipethroughRequest(\n ctx: AppContext,\n dispatchOptions: Dispatcher.RequestOptions,\n) {\n // HandlerPipeThroughStream requires a readable stream to be returned, so we\n // use the (less efficient) request() function instead.\n\n const upstream = await ctx.proxyAgent\n .request(dispatchOptions)\n .catch(handleUpstreamRequestError)\n\n if (upstream.statusCode >= 400) {\n const parsed = await tryParsingError(upstream.headers, upstream.body)\n\n // Note \"XRPCClientError\" is used instead of \"XRPCServerError\" in order to\n // allow users of this function to capture & handle these errors (namely in\n // \"app.bsky.feed.getPostThread\").\n throw new XRPCClientError(\n upstream.statusCode === 500\n ? ResponseType.UpstreamFailure\n : upstream.statusCode,\n parsed.error,\n parsed.message,\n Object.fromEntries(responseHeaders(upstream.headers, false)),\n { cause: dispatchOptions },\n )\n }\n\n return upstream\n}\n\nfunction handleUpstreamRequestError(\n err: unknown,\n message = 'Upstream service unreachable',\n): never {\n httpLogger.error({ err }, message)\n throw new XRPCServerError(ResponseType.UpstreamFailure, message, undefined, {\n cause: err,\n })\n}\n\n// Request parsing/forwarding\n// -------------------\n\nexport function isJsonContentType(contentType?: string): boolean | undefined {\n if (!contentType) return undefined\n return /application\\/(?:\\w+\\+)?json/i.test(contentType)\n}\n\nasync function tryParsingError(\n headers: IncomingHttpHeaders,\n readable: Readable,\n): Promise<{ error?: string; message?: string }> {\n if (isJsonContentType(headers['content-type']) === false) {\n // We don't known how to parse non JSON content types so we can discard the\n // whole response.\n\n // Since we don't care about the response, we would normally just destroy\n // the stream. However, if the underlying HTTP connection is an HTTP/1.1\n // connection, this also destroys the underlying (keep-alive) TCP socket. In\n // order to avoid destroying the TCP socket, while avoiding the cost of\n // consuming too much IO, we give it a chance to finish first.\n\n // @NOTE we need to listen (and ignore) \"error\" events, otherwise the\n // process could crash (since we drain the stream asynchronously here). This\n // is performed through the \"finished\" call below.\n\n const to = setTimeout(() => {\n readable.destroy()\n }, 100)\n finished(readable, (_err) => {\n clearTimeout(to)\n })\n readable.resume()\n\n return {}\n }\n\n try {\n const buffer = await bufferUpstreamResponse(\n readable,\n headers['content-encoding'],\n )\n\n const errInfo: unknown = JSON.parse(buffer.toString('utf8'))\n return {\n error: safeString(errInfo?.['error']),\n message: safeString(errInfo?.['message']),\n }\n } catch (err) {\n // Failed to read, decode, buffer or parse. No big deal.\n return {}\n }\n}\n\nasync function bufferUpstreamResponse(\n readable: Readable,\n contentEncoding?: string | string[],\n): Promise<Buffer> {\n try {\n return await streamToNodeBuffer(decodeStream(readable, contentEncoding))\n } catch (err) {\n if (!readable.destroyed) readable.destroy()\n\n throw new XRPCServerError(\n ResponseType.UpstreamFailure,\n err instanceof TypeError ? err.message : 'unable to decode request body',\n undefined,\n { cause: err },\n )\n }\n}\n\nexport async function asPipeThroughBuffer(\n input: HandlerPipeThroughStream,\n): Promise<HandlerPipeThroughBuffer> {\n return {\n buffer: await bufferUpstreamResponse(\n input.stream,\n input.headers?.['content-encoding'],\n ),\n headers: omit(input.headers, ['content-encoding', 'content-length']),\n encoding: input.encoding,\n }\n}\n\n// Response parsing/forwarding\n// -------------------\n\nconst RES_HEADERS_TO_FORWARD = [\n 'atproto-repo-rev',\n 'atproto-content-labelers',\n 'retry-after',\n]\n\nfunction* responseHeaders(\n headers: IncomingHttpHeaders,\n includeContentHeaders = true,\n): Generator<[string, string]> {\n if (includeContentHeaders) {\n const length = headers['content-length']\n if (length) yield ['content-length', length]\n\n const encoding = headers['content-encoding']\n if (encoding) yield ['content-encoding', encoding]\n\n const type = headers['content-type']\n if (type) yield ['content-type', type]\n\n const language = headers['content-language']\n if (language) yield ['content-language', language]\n }\n\n for (let i = 0; i < RES_HEADERS_TO_FORWARD.length; i++) {\n const name = RES_HEADERS_TO_FORWARD[i]\n const val = headers[name]\n\n if (val != null) {\n const value: string = Array.isArray(val) ? val.join(',') : val\n yield [name, value]\n }\n }\n}\n\n// Utils\n// -------------------\n\nexport const CHAT_BSKY_METHODS = new Set<string>([\n ids.ChatBskyActorDeleteAccount,\n ids.ChatBskyActorExportAccountData,\n ids.ChatBskyConvoDeleteMessageForSelf,\n ids.ChatBskyConvoGetConvo,\n ids.ChatBskyConvoGetConvoForMembers,\n ids.ChatBskyConvoGetLog,\n ids.ChatBskyConvoGetMessages,\n ids.ChatBskyConvoLeaveConvo,\n ids.ChatBskyConvoListConvos,\n ids.ChatBskyConvoMuteConvo,\n ids.ChatBskyConvoSendMessage,\n ids.ChatBskyConvoSendMessageBatch,\n ids.ChatBskyConvoUnmuteConvo,\n ids.ChatBskyConvoUpdateRead,\n])\n\nexport const PRIVILEGED_METHODS = new Set<string>([\n ...CHAT_BSKY_METHODS,\n ids.ComAtprotoServerCreateAccount,\n])\n\n// These endpoints are related to account management and must be used directly,\n// not proxied or service-authed. Service auth may be utilized between PDS and\n// entryway for these methods.\nexport const PROTECTED_METHODS = new Set<string>([\n ids.ComAtprotoAdminSendEmail,\n ids.ComAtprotoIdentityRequestPlcOperationSignature,\n ids.ComAtprotoIdentitySignPlcOperation,\n ids.ComAtprotoIdentityUpdateHandle,\n ids.ComAtprotoServerActivateAccount,\n ids.ComAtprotoServerConfirmEmail,\n ids.ComAtprotoServerCreateAppPassword,\n ids.ComAtprotoServerDeactivateAccount,\n ids.ComAtprotoServerGetAccountInviteCodes,\n ids.ComAtprotoServerGetSession,\n ids.ComAtprotoServerListAppPasswords,\n ids.ComAtprotoServerRequestAccountDelete,\n ids.ComAtprotoServerRequestEmailConfirmation,\n ids.ComAtprotoServerRequestEmailUpdate,\n ids.ComAtprotoServerRevokeAppPassword,\n ids.ComAtprotoServerUpdateEmail,\n])\n\nconst defaultService = (\n ctx: AppContext,\n nsid: string,\n): {\n serviceId: string\n serviceInfo: { url: string; did: string } | null\n} => {\n switch (nsid) {\n case ids.ToolsOzoneTeamAddMember:\n case ids.ToolsOzoneTeamDeleteMember:\n case ids.ToolsOzoneTeamUpdateMember:\n case ids.ToolsOzoneTeamListMembers:\n case ids.ToolsOzoneCommunicationCreateTemplate:\n case ids.ToolsOzoneCommunicationDeleteTemplate:\n case ids.ToolsOzoneCommunicationUpdateTemplate:\n case ids.ToolsOzoneCommunicationListTemplates:\n case ids.ToolsOzoneModerationEmitEvent:\n case ids.ToolsOzoneModerationGetEvent:\n case ids.ToolsOzoneModerationGetRecord:\n case ids.ToolsOzoneModerationGetRepo:\n case ids.ToolsOzoneModerationQueryEvents:\n case ids.ToolsOzoneModerationQueryStatuses:\n case ids.ToolsOzoneModerationSearchRepos:\n case ids.ToolsOzoneModerationGetAccountTimeline:\n case ids.ToolsOzoneVerificationListVerifications:\n case ids.ToolsOzoneVerificationGrantVerifications:\n case ids.ToolsOzoneVerificationRevokeVerifications:\n case ids.ToolsOzoneSafelinkAddRule:\n case ids.ToolsOzoneSafelinkUpdateRule:\n case ids.ToolsOzoneSafelinkRemoveRule:\n case ids.ToolsOzoneSafelinkQueryEvents:\n case ids.ToolsOzoneSafelinkQueryRules:\n case ids.ToolsOzoneModerationListScheduledActions:\n case ids.ToolsOzoneModerationCancelScheduledActions:\n case ids.ToolsOzoneModerationScheduleAction:\n return {\n serviceId: 'atproto_labeler',\n serviceInfo: ctx.cfg.modService,\n }\n case ids.ComAtprotoModerationCreateReport:\n return {\n serviceId: 'atproto_labeler',\n serviceInfo: ctx.cfg.reportService,\n }\n default:\n return {\n serviceId: 'bsky_appview',\n serviceInfo: ctx.cfg.bskyAppView,\n }\n }\n}\n\nconst safeString = (str: unknown): string | undefined => {\n return typeof str === 'string' ? str : undefined\n}\n\nfunction logResponseError(this: ServerResponse, err: unknown): void {\n httpLogger.warn({ err }, 'error forwarding upstream response')\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/read-after-write/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAuB;AACvB,yCAAsB;AACtB,2CAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/read-after-write/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAuB;AACvB,yCAAsB;AACtB,2CAAwB","sourcesContent":["export * from './types'\nexport * from './util'\nexport * from './viewer'\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/read-after-write/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/read-after-write/types.ts"],"names":[],"mappings":"","sourcesContent":["import { CID } from 'multiformats/cid'\nimport { AtUri } from '@atproto/syntax'\nimport { Headers } from '@atproto/xrpc'\nimport { Record as ProfileRecord } from '../lexicon/types/app/bsky/actor/profile'\nimport { Record as PostRecord } from '../lexicon/types/app/bsky/feed/post'\nimport { LocalViewer } from './viewer'\n\nexport type LocalRecords = {\n count: number\n profile: RecordDescript<ProfileRecord> | null\n posts: RecordDescript<PostRecord>[]\n}\n\nexport type RecordDescript<T> = {\n uri: AtUri\n cid: CID\n indexedAt: string\n record: T\n}\n\nexport type ApiRes<T> = {\n headers: Headers\n data: T\n}\n\nexport type MungeFn<T> = (\n localViewer: LocalViewer,\n original: T,\n local: LocalRecords,\n requester: string,\n) => Promise<T>\n\nexport type HandlerResponse<T> = {\n encoding: 'application/json'\n body: T\n headers?: Record<string, string>\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/read-after-write/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/read-after-write/util.ts"],"names":[],"mappings":"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","sourcesContent":["import express from 'express'\nimport { jsonToLex } from '@atproto/lexicon'\nimport { HeadersMap } from '@atproto/xrpc'\nimport {\n HandlerPipeThrough,\n HandlerPipeThroughBuffer,\n parseReqNsid,\n} from '@atproto/xrpc-server'\nimport { AppContext } from '../context'\nimport { lexicons } from '../lexicon/lexicons'\nimport { readStickyLogger as log } from '../logger'\nimport {\n asPipeThroughBuffer,\n isJsonContentType,\n pipethrough,\n} from '../pipethrough'\nimport { HandlerResponse, LocalRecords, MungeFn } from './types'\n\nconst REPO_REV_HEADER = 'atproto-repo-rev'\n\nexport const getRepoRev = (headers: HeadersMap): string | undefined => {\n return headers[REPO_REV_HEADER]\n}\n\nexport const getLocalLag = (local: LocalRecords): number | undefined => {\n let oldest: string | undefined = local.profile?.indexedAt\n for (const post of local.posts) {\n if (!oldest || post.indexedAt < oldest) {\n oldest = post.indexedAt\n }\n }\n if (!oldest) return undefined\n return Date.now() - new Date(oldest).getTime()\n}\n\nexport const pipethroughReadAfterWrite = async <T>(\n ctx: AppContext,\n reqCtx: { req: express.Request; auth: { credentials: { did: string } } },\n munge: MungeFn<T>,\n): Promise<HandlerResponse<T> | HandlerPipeThrough> => {\n const { req, auth } = reqCtx\n const requester = auth.credentials.did\n\n const streamRes = await pipethrough(ctx, req, { iss: requester })\n\n const rev = getRepoRev(streamRes.headers)\n if (!rev) return streamRes\n\n if (isJsonContentType(streamRes.headers['content-type']) === false) {\n // content-type is present but not JSON, we can't munge this\n return streamRes\n }\n\n // if the munging fails, we can't return the original response because the\n // stream will already have been read. If we end-up buffering the response,\n // we'll return the buffered response in case of an error.\n let bufferRes: HandlerPipeThroughBuffer | undefined\n\n try {\n const lxm = parseReqNsid(req)\n\n return await ctx.actorStore.read(requester, async (store) => {\n const local = await store.record.getRecordsSinceRev(rev)\n if (local.count === 0) return streamRes\n\n const { buffer } = (bufferRes = await asPipeThroughBuffer(streamRes))\n\n const lex = jsonToLex(JSON.parse(buffer.toString('utf8')))\n\n const parsedRes = lexicons.assertValidXrpcOutput(lxm, lex) as T\n\n const localViewer = ctx.localViewer(store)\n\n const data = await munge(localViewer, parsedRes, local, requester)\n return formatMungedResponse(data, getLocalLag(local))\n })\n } catch (err) {\n // The error occurred while reading the stream, this is non-recoverable\n if (!bufferRes && !streamRes.stream.readable) throw err\n\n log.warn({ err, requester }, 'error in read after write munge')\n return bufferRes ?? streamRes\n }\n}\n\nexport const formatMungedResponse = <T>(\n body: T,\n lag?: number,\n): HandlerResponse<T> => ({\n encoding: 'application/json',\n body,\n headers:\n lag !== undefined\n ? {\n 'Atproto-Upstream-Lag': lag.toString(10),\n }\n : undefined,\n})\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"viewer.js","sourceRoot":"","sources":["../../src/read-after-write/viewer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"viewer.js","sourceRoot":"","sources":["../../src/read-after-write/viewer.ts"],"names":[],"mappings":"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","sourcesContent":["import { AtUri, INVALID_HANDLE } from '@atproto/syntax'\nimport { createServiceAuthHeaders } from '@atproto/xrpc-server'\nimport { AccountManager } from '../account-manager/account-manager'\nimport { ActorStoreReader } from '../actor-store/actor-store-reader'\nimport { BskyAppView } from '../bsky-app-view'\nimport { ImageUrlBuilder } from '../image/image-url-builder'\nimport { ids } from '../lexicon/lexicons'\nimport {\n ProfileView,\n ProfileViewBasic,\n ProfileViewDetailed,\n} from '../lexicon/types/app/bsky/actor/defs'\nimport { Record as ProfileRecord } from '../lexicon/types/app/bsky/actor/profile'\nimport {\n Main as EmbedExternal,\n View as EmbedExternalView,\n isMain as isEmbedExternal,\n} from '../lexicon/types/app/bsky/embed/external'\nimport {\n Main as EmbedImages,\n View as EmbedImagesView,\n isMain as isEmbedImages,\n} from '../lexicon/types/app/bsky/embed/images'\nimport {\n Main as EmbedRecord,\n View as EmbedRecordView,\n ViewRecord,\n isMain as isEmbedRecord,\n} from '../lexicon/types/app/bsky/embed/record'\nimport {\n Main as EmbedRecordWithMedia,\n isMain as isEmbedRecordWithMedia,\n} from '../lexicon/types/app/bsky/embed/recordWithMedia'\nimport {\n FeedViewPost,\n GeneratorView,\n PostView,\n} from '../lexicon/types/app/bsky/feed/defs'\nimport { Record as PostRecord } from '../lexicon/types/app/bsky/feed/post'\nimport { ListView } from '../lexicon/types/app/bsky/graph/defs'\nimport { $Typed } from '../lexicon/util'\nimport { LocalRecords, RecordDescript } from './types'\n\ntype CommonSignedUris = 'avatar' | 'banner' | 'feed_thumbnail' | 'feed_fullsize'\n\nexport type LocalViewerCreator = (\n actorStoreReader: ActorStoreReader,\n) => LocalViewer\n\nexport class LocalViewer {\n constructor(\n public readonly actorStoreReader: ActorStoreReader,\n public readonly accountManager: AccountManager,\n public readonly imageUrlBuilder: ImageUrlBuilder,\n public readonly bskyAppView?: BskyAppView,\n ) {}\n\n get did() {\n return this.actorStoreReader.did\n }\n\n static creator(\n accountManager: AccountManager,\n imageUrlBuilder: ImageUrlBuilder,\n bskyAppView?: BskyAppView,\n ): LocalViewerCreator {\n return (actorStore) =>\n new LocalViewer(actorStore, accountManager, imageUrlBuilder, bskyAppView)\n }\n\n getImageUrl(pattern: CommonSignedUris, cid: string) {\n return this.imageUrlBuilder.build(pattern, this.did, cid)\n }\n\n async serviceAuthHeaders(did: string, lxm: string) {\n if (!this.bskyAppView) {\n throw new Error('Could not find bsky appview did')\n }\n const keypair = await this.actorStoreReader.keypair()\n\n return createServiceAuthHeaders({\n iss: did,\n aud: this.bskyAppView.did,\n lxm,\n keypair,\n })\n }\n\n async getRecordsSinceRev(rev: string): Promise<LocalRecords> {\n return this.actorStoreReader.record.getRecordsSinceRev(rev)\n }\n\n async getProfileBasic(): Promise<ProfileViewBasic | null> {\n const [profileRes, accountRes] = await Promise.all([\n this.actorStoreReader.record.getProfileRecord(),\n this.accountManager.getAccount(this.did),\n ])\n\n if (!accountRes) return null\n\n return {\n did: this.did,\n handle: accountRes.handle ?? INVALID_HANDLE,\n displayName: profileRes?.displayName,\n avatar: profileRes?.avatar\n ? this.getImageUrl('avatar', profileRes.avatar.ref.toString())\n : undefined,\n }\n }\n\n async formatAndInsertPostsInFeed(\n feed: FeedViewPost[],\n posts: RecordDescript<PostRecord>[],\n ): Promise<FeedViewPost[]> {\n if (posts.length === 0) {\n return feed\n }\n const lastTime = feed.at(-1)?.post.indexedAt ?? new Date(0).toISOString()\n const inFeed = posts.filter((p) => p.indexedAt > lastTime)\n const newestToOldest = inFeed.reverse()\n const maybeFormatted = await Promise.all(\n newestToOldest.map((p) => this.getPost(p)),\n )\n const formatted = maybeFormatted.filter((p) => p !== null) as PostView[]\n for (const post of formatted) {\n const idx = feed.findIndex((fi) => fi.post.indexedAt < post.indexedAt)\n if (idx >= 0) {\n feed.splice(idx, 0, { post })\n } else {\n feed.push({ post })\n }\n }\n return feed\n }\n\n async getPost(\n descript: RecordDescript<PostRecord>,\n ): Promise<PostView | null> {\n const { uri, cid, indexedAt, record } = descript\n const author = await this.getProfileBasic()\n if (!author) return null\n const embed = record.embed\n ? await this.formatPostEmbed(author.did, record)\n : undefined\n return {\n uri: uri.toString(),\n cid: cid.toString(),\n likeCount: 0, // counts presumed to be 0 directly after post creation\n replyCount: 0,\n repostCount: 0,\n quoteCount: 0,\n author,\n record,\n embed: embed ?? undefined,\n indexedAt,\n }\n }\n\n async formatPostEmbed(did: string, post: PostRecord) {\n const embed = post.embed\n if (!embed) return null\n if (isEmbedImages(embed) || isEmbedExternal(embed)) {\n return this.formatSimpleEmbed(embed)\n } else if (isEmbedRecord(embed)) {\n return this.formatRecordEmbed(embed)\n } else if (isEmbedRecordWithMedia(embed)) {\n return this.formatRecordWithMediaEmbed(did, embed)\n } else {\n return null\n }\n }\n\n async formatSimpleEmbed(\n embed: $Typed<EmbedImages> | $Typed<EmbedExternal>,\n ): Promise<$Typed<EmbedImagesView> | $Typed<EmbedExternalView>> {\n if (isEmbedImages(embed)) {\n const images = embed.images.map((img) => ({\n thumb: this.getImageUrl('feed_thumbnail', img.image.ref.toString()),\n fullsize: this.getImageUrl('feed_fullsize', img.image.ref.toString()),\n aspectRatio: img.aspectRatio,\n alt: img.alt,\n }))\n return {\n $type: 'app.bsky.embed.images#view',\n images,\n }\n } else if (isEmbedExternal(embed)) {\n const { uri, title, description, thumb } = embed.external\n return {\n $type: 'app.bsky.embed.external#view',\n external: {\n uri,\n title,\n description,\n thumb: thumb\n ? this.getImageUrl('feed_thumbnail', thumb.ref.toString())\n : undefined,\n },\n }\n } else {\n // @ts-expect-error\n throw new TypeError(`Unexpected embed type: ${embed.$type}`)\n }\n }\n\n async formatRecordEmbed(\n embed: EmbedRecord,\n ): Promise<$Typed<EmbedRecordView>> {\n const view = await this.formatRecordEmbedInternal(embed)\n return {\n $type: 'app.bsky.embed.record#view',\n record:\n view === null\n ? {\n $type: 'app.bsky.embed.record#viewNotFound',\n uri: embed.record.uri,\n }\n : view,\n }\n }\n\n private async formatRecordEmbedInternal(\n embed: EmbedRecord,\n ): Promise<\n null | $Typed<ViewRecord> | $Typed<GeneratorView> | $Typed<ListView>\n > {\n if (!this.bskyAppView) {\n return null\n }\n const collection = new AtUri(embed.record.uri).collection\n if (collection === ids.AppBskyFeedPost) {\n const res = await this.bskyAppView.agent.app.bsky.feed.getPosts(\n { uris: [embed.record.uri] },\n await this.serviceAuthHeaders(this.did, ids.AppBskyFeedGetPosts),\n )\n const post = res.data.posts[0]\n if (!post) return null\n return {\n $type: 'app.bsky.embed.record#viewRecord',\n uri: post.uri,\n cid: post.cid,\n author: post.author,\n value: post.record,\n labels: post.labels,\n embeds: post.embed ? [post.embed] : undefined,\n indexedAt: post.indexedAt,\n }\n } else if (collection === ids.AppBskyFeedGenerator) {\n const res = await this.bskyAppView.agent.app.bsky.feed.getFeedGenerator(\n { feed: embed.record.uri },\n await this.serviceAuthHeaders(\n this.did,\n ids.AppBskyFeedGetFeedGenerator,\n ),\n )\n return {\n $type: 'app.bsky.feed.defs#generatorView',\n ...res.data.view,\n }\n } else if (collection === ids.AppBskyGraphList) {\n const res = await this.bskyAppView.agent.app.bsky.graph.getList(\n { list: embed.record.uri },\n await this.serviceAuthHeaders(this.did, ids.AppBskyGraphGetList),\n )\n return {\n $type: 'app.bsky.graph.defs#listView',\n ...res.data.list,\n }\n }\n return null\n }\n\n async formatRecordWithMediaEmbed(did: string, embed: EmbedRecordWithMedia) {\n if (!isEmbedImages(embed.media) && !isEmbedExternal(embed.media)) {\n return null\n }\n const media = this.formatSimpleEmbed(embed.media)\n const record = await this.formatRecordEmbed(embed.record)\n return {\n $type: 'app.bsky.embed.recordWithMedia#view',\n record,\n media,\n }\n }\n\n updateProfileViewBasic<\n T extends ProfileViewDetailed | ProfileViewBasic | ProfileView,\n >(view: T, record: ProfileRecord): T {\n return {\n ...view,\n displayName: record.displayName,\n avatar: record.avatar\n ? this.getImageUrl('avatar', record.avatar.ref.toString())\n : undefined,\n }\n }\n\n updateProfileView<\n T extends ProfileViewDetailed | ProfileViewBasic | ProfileView,\n >(view: T, record: ProfileRecord): T {\n return {\n ...this.updateProfileViewBasic(view, record),\n description: record.description,\n }\n }\n\n updateProfileDetailed<T extends ProfileViewDetailed>(\n view: T,\n record: ProfileRecord,\n ): T {\n return {\n ...this.updateProfileView(view, record),\n banner: record.banner\n ? this.getImageUrl('banner', record.banner.ref.toString())\n : undefined,\n }\n }\n}\n"]}
package/dist/redis.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"redis.js","sourceRoot":"","sources":["../src/redis.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAgC;AAChC,qCAA+B;AAC/B,qCAAsC;AAE/B,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,QAAiB,EAAS,EAAE;IACvE,MAAM,SAAS,GAAG,IAAA,yBAAiB,EAAC,IAAI,CAAC,CAAA;IACzC,MAAM,KAAK,GAAG,IAAI,eAAK,CAAC;QACtB,GAAG,SAAS;QACZ,QAAQ;KACT,CAAC,CAAA;IACF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QACxB,oBAAW,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,aAAa,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;IACF,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAVY,QAAA,cAAc,kBAU1B;AAEM,MAAM,iBAAiB,GAAG,CAC/B,IAAY,EACZ,WAAW,GAAG,IAAI,EACc,EAAE;IAClC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAClD,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAA;IAC1D,IAAA,qBAAM,EAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,IAAI,EAAE,CAAC,CAAA;IAC1E,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AACvB,CAAC,CAAA;AARY,QAAA,iBAAiB,qBAQ7B"}
1
+ {"version":3,"file":"redis.js","sourceRoot":"","sources":["../src/redis.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAgC;AAChC,qCAA+B;AAC/B,qCAAsC;AAE/B,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,QAAiB,EAAS,EAAE;IACvE,MAAM,SAAS,GAAG,IAAA,yBAAiB,EAAC,IAAI,CAAC,CAAA;IACzC,MAAM,KAAK,GAAG,IAAI,eAAK,CAAC;QACtB,GAAG,SAAS;QACZ,QAAQ;KACT,CAAC,CAAA;IACF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QACxB,oBAAW,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,aAAa,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;IACF,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAVY,QAAA,cAAc,kBAU1B;AAEM,MAAM,iBAAiB,GAAG,CAC/B,IAAY,EACZ,WAAW,GAAG,IAAI,EACc,EAAE;IAClC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAClD,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAA;IAC1D,IAAA,qBAAM,EAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,IAAI,EAAE,CAAC,CAAA;IAC1E,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AACvB,CAAC,CAAA;AARY,QAAA,iBAAiB,qBAQ7B","sourcesContent":["import assert from 'node:assert'\nimport { Redis } from 'ioredis'\nimport { redisLogger } from './logger'\n\nexport const getRedisClient = (host: string, password?: string): Redis => {\n const redisAddr = redisAddressParts(host)\n const redis = new Redis({\n ...redisAddr,\n password,\n })\n redis.on('error', (err) => {\n redisLogger.error({ host, err }, 'redis error')\n })\n return redis\n}\n\nexport const redisAddressParts = (\n addr: string,\n defaultPort = 6379,\n): { host: string; port: number } => {\n const [host, portStr, ...others] = addr.split(':')\n const port = portStr ? parseInt(portStr, 10) : defaultPort\n assert(host && !isNaN(port) && !others.length, `invalid address: ${addr}`)\n return { host, port }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/repo/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB;AACzB,0CAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/repo/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB;AACzB,0CAAuB","sourcesContent":["export * from './prepare'\nexport * from './types'\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../src/repo/prepare.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../src/repo/prepare.ts"],"names":[],"mappings":"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","sourcesContent":["import { CID } from 'multiformats/cid'\nimport { TID, check, dataToCborBlock } from '@atproto/common'\nimport {\n BlobRef,\n LexValue,\n LexiconDefNotFoundError,\n RepoRecord,\n ValidationError,\n lexToIpld,\n untypedJsonBlobRef,\n} from '@atproto/lexicon'\nimport {\n RecordCreateOp,\n RecordDeleteOp,\n RecordUpdateOp,\n RecordWriteOp,\n WriteOpAction,\n cborToLex,\n} from '@atproto/repo'\nimport {\n AtUri,\n ensureValidDatetime,\n ensureValidRecordKey,\n} from '@atproto/syntax'\nimport { hasExplicitSlur } from '../handle/explicit-slurs'\nimport * as lex from '../lexicon/lexicons'\nimport * as AppBskyActorProfile from '../lexicon/types/app/bsky/actor/profile'\nimport * as AppBskyFeedGenerator from '../lexicon/types/app/bsky/feed/generator'\nimport * as AppBskyFeedPost from '../lexicon/types/app/bsky/feed/post'\nimport * as AppBskyGraphList from '../lexicon/types/app/bsky/graph/list'\nimport * as AppBskyGraphStarterpack from '../lexicon/types/app/bsky/graph/starterpack'\nimport { isTag } from '../lexicon/types/app/bsky/richtext/facet'\nimport { asPredicate } from '../lexicon/util'\nimport {\n InvalidRecordError,\n PreparedBlobRef,\n PreparedCreate,\n PreparedDelete,\n PreparedUpdate,\n PreparedWrite,\n ValidationStatus,\n} from './types'\n\nconst isValidFeedGenerator = asPredicate(AppBskyFeedGenerator.validateRecord)\nconst isValidStarterPack = asPredicate(AppBskyGraphStarterpack.validateRecord)\nconst isValidPost = asPredicate(AppBskyFeedPost.validateRecord)\nconst isValidList = asPredicate(AppBskyGraphList.validateRecord)\nconst isValidProfile = asPredicate(AppBskyActorProfile.validateRecord)\n\nexport const assertValidRecordWithStatus = (\n record: Record<string, unknown>,\n opts: { requireLexicon: boolean },\n): ValidationStatus => {\n if (typeof record.$type !== 'string') {\n throw new InvalidRecordError('No $type provided')\n }\n try {\n lex.lexicons.assertValidRecord(record.$type, record)\n assertValidCreatedAt(record)\n } catch (e) {\n if (e instanceof LexiconDefNotFoundError) {\n if (opts.requireLexicon) {\n throw new InvalidRecordError(e.message)\n } else {\n return 'unknown'\n }\n }\n throw new InvalidRecordError(\n `Invalid ${record.$type} record: ${\n e instanceof Error ? e.message : String(e)\n }`,\n )\n }\n return 'valid'\n}\n\n// additional more rigorous check on datetimes\n// this check will eventually be in the lex sdk, but this will stop the bleed until then\nexport const assertValidCreatedAt = (record: Record<string, unknown>) => {\n const createdAt = record['createdAt']\n if (typeof createdAt !== 'string') {\n return\n }\n try {\n ensureValidDatetime(createdAt)\n } catch {\n throw new ValidationError(\n 'createdAt must be an valid atproto datetime (both RFC-3339 and ISO-8601)',\n )\n }\n}\n\nexport const setCollectionName = (\n collection: string,\n record: RepoRecord,\n validate: boolean,\n) => {\n if (!record.$type) {\n record.$type = collection\n }\n if (validate && record.$type !== collection) {\n throw new InvalidRecordError(\n `Invalid $type: expected ${collection}, got ${record.$type}`,\n )\n }\n return record\n}\n\nexport const prepareCreate = async (opts: {\n did: string\n collection: string\n rkey?: string\n swapCid?: CID | null\n record: RepoRecord\n validate?: boolean\n}): Promise<PreparedCreate> => {\n const { did, collection, swapCid, validate } = opts\n const maybeValidate = validate !== false\n const record = setCollectionName(collection, opts.record, maybeValidate)\n let validationStatus: ValidationStatus\n if (maybeValidate) {\n validationStatus = assertValidRecordWithStatus(record, {\n requireLexicon: validate === true,\n })\n }\n const nextRkey = TID.next()\n const rkey = opts.rkey || nextRkey.toString()\n // @TODO: validate against Lexicon record 'key' type, not just overall recordkey syntax\n ensureValidRecordKey(rkey)\n assertNoExplicitSlurs(rkey, record)\n return {\n action: WriteOpAction.Create,\n uri: AtUri.make(did, collection, rkey),\n cid: await cidForSafeRecord(record),\n swapCid,\n record,\n blobs: blobsForWrite(record, maybeValidate),\n validationStatus,\n }\n}\n\nexport const prepareUpdate = async (opts: {\n did: string\n collection: string\n rkey: string\n swapCid?: CID | null\n record: RepoRecord\n validate?: boolean\n}): Promise<PreparedUpdate> => {\n const { did, collection, rkey, swapCid, validate } = opts\n const maybeValidate = validate !== false\n const record = setCollectionName(collection, opts.record, maybeValidate)\n let validationStatus: ValidationStatus\n if (maybeValidate) {\n validationStatus = assertValidRecordWithStatus(record, {\n requireLexicon: validate === true,\n })\n }\n assertNoExplicitSlurs(rkey, record)\n return {\n action: WriteOpAction.Update,\n uri: AtUri.make(did, collection, rkey),\n cid: await cidForSafeRecord(record),\n swapCid,\n record,\n blobs: blobsForWrite(record, maybeValidate),\n validationStatus,\n }\n}\n\nexport const prepareDelete = (opts: {\n did: string\n collection: string\n rkey: string\n swapCid?: CID | null\n}): PreparedDelete => {\n const { did, collection, rkey, swapCid } = opts\n return {\n action: WriteOpAction.Delete,\n uri: AtUri.make(did, collection, rkey),\n swapCid,\n }\n}\n\nexport const createWriteToOp = (write: PreparedCreate): RecordCreateOp => ({\n action: WriteOpAction.Create,\n collection: write.uri.collection,\n rkey: write.uri.rkey,\n record: write.record,\n})\n\nexport const updateWriteToOp = (write: PreparedUpdate): RecordUpdateOp => ({\n action: WriteOpAction.Update,\n collection: write.uri.collection,\n rkey: write.uri.rkey,\n record: write.record,\n})\n\nexport const deleteWriteToOp = (write: PreparedDelete): RecordDeleteOp => ({\n action: WriteOpAction.Delete,\n collection: write.uri.collection,\n rkey: write.uri.rkey,\n})\n\nexport const writeToOp = (write: PreparedWrite): RecordWriteOp => {\n switch (write.action) {\n case WriteOpAction.Create:\n return createWriteToOp(write)\n case WriteOpAction.Update:\n return updateWriteToOp(write)\n case WriteOpAction.Delete:\n return deleteWriteToOp(write)\n default:\n throw new Error(`Unrecognized action: ${write}`)\n }\n}\n\nasync function cidForSafeRecord(record: RepoRecord) {\n try {\n const block = await dataToCborBlock(lexToIpld(record))\n cborToLex(block.bytes)\n return block.cid\n } catch (err) {\n // Block does not properly transform between lex and cbor\n const badRecordErr = new InvalidRecordError('Bad record')\n badRecordErr.cause = err\n throw badRecordErr\n }\n}\n\nfunction assertNoExplicitSlurs(rkey: string, record: RepoRecord) {\n const toCheck: string[] = []\n\n if (isValidProfile(record)) {\n if (record.displayName) toCheck.push(record.displayName)\n } else if (isValidList(record)) {\n toCheck.push(record.name)\n } else if (isValidStarterPack(record)) {\n toCheck.push(record.name)\n } else if (isValidFeedGenerator(record)) {\n toCheck.push(rkey)\n toCheck.push(record.displayName)\n } else if (isValidPost(record)) {\n if (record.tags) {\n toCheck.push(...record.tags)\n }\n\n for (const facet of record.facets || []) {\n for (const feat of facet.features) {\n if (isTag(feat)) {\n toCheck.push(feat.tag)\n }\n }\n }\n }\n if (hasExplicitSlur(toCheck.join(' '))) {\n throw new InvalidRecordError('Unacceptable slur in record')\n }\n}\n\ntype FoundBlobRef = {\n ref: BlobRef\n path: string[]\n}\n\nexport const blobsForWrite = (\n record: RepoRecord,\n validate: boolean,\n): PreparedBlobRef[] => {\n const refs = findBlobRefs(record)\n const recordType =\n typeof record['$type'] === 'string' ? record['$type'] : undefined\n\n for (const ref of refs) {\n if (check.is(ref.ref.original, untypedJsonBlobRef)) {\n throw new InvalidRecordError(`Legacy blob ref at '${ref.path.join('/')}'`)\n }\n }\n\n return refs.map(({ ref, path }) => ({\n size: ref.size,\n cid: ref.ref,\n mimeType: ref.mimeType,\n constraints:\n validate && recordType\n ? CONSTRAINTS[recordType]?.[path.join('/')] ?? {}\n : {},\n }))\n}\n\nexport const findBlobRefs = (\n val: LexValue,\n path: string[] = [],\n layer = 0,\n): FoundBlobRef[] => {\n if (layer > 32) {\n return []\n }\n // walk arrays\n if (Array.isArray(val)) {\n return val.flatMap((item) => findBlobRefs(item, path, layer + 1))\n }\n // objects\n if (val && typeof val === 'object') {\n // convert blobs, leaving the original encoding so that we don't change CIDs on re-encode\n if (val instanceof BlobRef) {\n return [\n {\n ref: val,\n path,\n },\n ]\n }\n // retain cids & bytes\n if (CID.asCID(val) || val instanceof Uint8Array) {\n return []\n }\n return Object.entries(val).flatMap(([key, item]) =>\n findBlobRefs(item, [...path, key], layer + 1),\n )\n }\n // pass through\n return []\n}\n\nconst CONSTRAINTS = {\n [lex.ids.AppBskyActorProfile]: {\n avatar:\n lex.schemaDict.AppBskyActorProfile.defs.main.record.properties.avatar,\n banner:\n lex.schemaDict.AppBskyActorProfile.defs.main.record.properties.banner,\n },\n [lex.ids.AppBskyFeedGenerator]: {\n avatar:\n lex.schemaDict.AppBskyFeedGenerator.defs.main.record.properties.avatar,\n },\n [lex.ids.AppBskyGraphList]: {\n avatar: lex.schemaDict.AppBskyGraphList.defs.main.record.properties.avatar,\n },\n [lex.ids.AppBskyFeedPost]: {\n 'embed/images/image':\n lex.schemaDict.AppBskyEmbedImages.defs.image.properties.image,\n 'embed/external/thumb':\n lex.schemaDict.AppBskyEmbedExternal.defs.external.properties.thumb,\n 'embed/media/images/image':\n lex.schemaDict.AppBskyEmbedImages.defs.image.properties.image,\n 'embed/media/external/thumb':\n lex.schemaDict.AppBskyEmbedExternal.defs.external.properties.thumb,\n },\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/repo/types.ts"],"names":[],"mappings":";;;AAiEA,MAAa,kBAAmB,SAAQ,KAAK;CAAG;AAAhD,gDAAgD;AAEhD,MAAa,kBAAmB,SAAQ,KAAK;IAC3C,YAAmB,GAAQ;QACzB,KAAK,CAAC,iBAAiB,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QAD9B;;;;mBAAO,GAAG;WAAK;IAE3B,CAAC;CACF;AAJD,gDAIC;AAED,MAAa,kBAAmB,SAAQ,KAAK;IAC3C,YAAmB,GAAe;QAChC,KAAK,CAAC,iBAAiB,GAAG,EAAE,QAAQ,EAAE,IAAI,MAAM,EAAE,CAAC,CAAA;QADzC;;;;mBAAO,GAAG;WAAY;IAElC,CAAC;CACF;AAJD,gDAIC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/repo/types.ts"],"names":[],"mappings":";;;AAiEA,MAAa,kBAAmB,SAAQ,KAAK;CAAG;AAAhD,gDAAgD;AAEhD,MAAa,kBAAmB,SAAQ,KAAK;IAC3C,YAAmB,GAAQ;QACzB,KAAK,CAAC,iBAAiB,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QAD9B;;;;mBAAO,GAAG;WAAK;IAE3B,CAAC;CACF;AAJD,gDAIC;AAED,MAAa,kBAAmB,SAAQ,KAAK;IAC3C,YAAmB,GAAe;QAChC,KAAK,CAAC,iBAAiB,GAAG,EAAE,QAAQ,EAAE,IAAI,MAAM,EAAE,CAAC,CAAA;QADzC;;;;mBAAO,GAAG;WAAY;IAElC,CAAC;CACF;AAJD,gDAIC","sourcesContent":["import { CID } from 'multiformats/cid'\nimport { RepoRecord } from '@atproto/lexicon'\nimport { BlockMap, CommitData, WriteOpAction } from '@atproto/repo'\nimport { AtUri } from '@atproto/syntax'\n\nexport type ValidationStatus = 'valid' | 'unknown' | undefined\n\nexport type BlobConstraint = {\n accept?: string[]\n maxSize?: number\n}\n\nexport type PreparedBlobRef = {\n size: number\n cid: CID\n mimeType: string\n constraints: BlobConstraint\n}\n\nexport type PreparedCreate = {\n action: WriteOpAction.Create\n uri: AtUri\n cid: CID\n swapCid?: CID | null\n record: RepoRecord\n blobs: PreparedBlobRef[]\n validationStatus: ValidationStatus\n}\n\nexport type PreparedUpdate = {\n action: WriteOpAction.Update\n uri: AtUri\n cid: CID\n swapCid?: CID | null\n record: RepoRecord\n blobs: PreparedBlobRef[]\n validationStatus: ValidationStatus\n}\n\nexport type PreparedDelete = {\n action: WriteOpAction.Delete\n uri: AtUri\n swapCid?: CID | null\n}\n\nexport type CommitOp = {\n action: 'create' | 'update' | 'delete'\n path: string\n cid: CID | null\n prev?: CID\n}\n\nexport type CommitDataWithOps = CommitData & {\n ops: CommitOp[]\n prevData: CID | null\n}\n\nexport type PreparedWrite = PreparedCreate | PreparedUpdate | PreparedDelete\n\nexport type SyncEvtData = {\n cid: CID\n rev: string\n blocks: BlockMap\n}\n\nexport class InvalidRecordError extends Error {}\n\nexport class BadCommitSwapError extends Error {\n constructor(public cid: CID) {\n super(`Commit was at ${cid.toString()}`)\n }\n}\n\nexport class BadRecordSwapError extends Error {\n constructor(public cid: CID | null) {\n super(`Record was at ${cid?.toString() ?? 'null'}`)\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scripts/index.ts"],"names":[],"mappings":";;;AAAA,yDAA6E;AAC7E,iDAA4C;AAC5C,+CAIsB;AACtB,6DAAwD;AACxD,oEAA+D;AAElD,QAAA,OAAO,GAAG;IACrB,cAAc,EAAE,0BAAW;IAC3B,oBAAoB,EAAE,sCAAiB;IACvC,uBAAuB,EAAE,0BAAW;IACpC,aAAa,EAAE,wBAAU;IACzB,kBAAkB,EAAE,gCAAkB;IACtC,sBAAsB,EAAE,gCAAkB;IAC1C,kBAAkB,EAAE,kCAAe;IACnC,uBAAuB,EAAE,0CAAuB;CACjD,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scripts/index.ts"],"names":[],"mappings":";;;AAAA,yDAA6E;AAC7E,iDAA4C;AAC5C,+CAIsB;AACtB,6DAAwD;AACxD,oEAA+D;AAElD,QAAA,OAAO,GAAG;IACrB,cAAc,EAAE,0BAAW;IAC3B,oBAAoB,EAAE,sCAAiB;IACvC,uBAAuB,EAAE,0BAAW;IACpC,aAAa,EAAE,wBAAU;IACzB,kBAAkB,EAAE,gCAAkB;IACtC,sBAAsB,EAAE,gCAAkB;IAC1C,kBAAkB,EAAE,kCAAe;IACnC,uBAAuB,EAAE,0CAAuB;CACjD,CAAA","sourcesContent":["import { publishIdentity, publishIdentityFromFile } from './publish-identity'\nimport { rebuildRepo } from './rebuild-repo'\nimport {\n rotateKeys,\n rotateKeysFromFile,\n rotateKeysRecovery,\n} from './rotate-keys'\nimport { sequencerRecovery } from './sequencer-recovery'\nimport { repairRepos } from './sequencer-recovery/repair-repos'\n\nexport const scripts = {\n 'rebuild-repo': rebuildRepo,\n 'sequencer-recovery': sequencerRecovery,\n 'recovery-repair-repos': repairRepos,\n 'rotate-keys': rotateKeys,\n 'rotate-keys-file': rotateKeysFromFile,\n 'rotate-keys-recovery': rotateKeysRecovery,\n 'publish-identity': publishIdentity,\n 'publish-identity-file': publishIdentityFromFile,\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"publish-identity.js","sourceRoot":"","sources":["../../src/scripts/publish-identity.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAiC;AACjC,4CAAsC;AAEtC,iCAAoC;AAM7B,MAAM,eAAe,GAAG,KAAK,EAClC,GAA2B,EAC3B,IAAc,EACd,EAAE;IACF,MAAM,IAAI,GAAG,IAAI,CAAA;IACjB,MAAM,IAAA,iCAAyB,EAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC1C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AACrB,CAAC,CAAA;AAPY,QAAA,eAAe,mBAO3B;AAEM,MAAM,uBAAuB,GAAG,KAAK,EAC1C,GAA2B,EAC3B,IAAc,EACd,EAAE;IACF,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,kBAAW,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACtD,MAAM,IAAI,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACxC,MAAM,IAAI,GAAG,IAAI;SACd,QAAQ,EAAE;SACV,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;IAE3B,MAAM,IAAA,iCAAyB,EAAC,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,CAAA;IACvD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AACrB,CAAC,CAAA;AAjBY,QAAA,uBAAuB,2BAiBnC;AAEM,MAAM,yBAAyB,GAAG,KAAK,EAC5C,GAA2B,EAC3B,IAAc,EACd,WAAW,GAAG,CAAC,EACf,EAAE;IACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,SAAS,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAA;YAC5C,OAAO,CAAC,GAAG,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAA;QAClD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,2CAA2C,GAAG,KAAK,GAAG,EAAE,CAAC,CAAA;QACzE,CAAC;QACD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,IAAA,aAAI,EAAC,WAAW,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAhBY,QAAA,yBAAyB,6BAgBrC"}
1
+ {"version":3,"file":"publish-identity.js","sourceRoot":"","sources":["../../src/scripts/publish-identity.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAiC;AACjC,4CAAsC;AAEtC,iCAAoC;AAM7B,MAAM,eAAe,GAAG,KAAK,EAClC,GAA2B,EAC3B,IAAc,EACd,EAAE;IACF,MAAM,IAAI,GAAG,IAAI,CAAA;IACjB,MAAM,IAAA,iCAAyB,EAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC1C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AACrB,CAAC,CAAA;AAPY,QAAA,eAAe,mBAO3B;AAEM,MAAM,uBAAuB,GAAG,KAAK,EAC1C,GAA2B,EAC3B,IAAc,EACd,EAAE;IACF,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,kBAAW,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACtD,MAAM,IAAI,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACxC,MAAM,IAAI,GAAG,IAAI;SACd,QAAQ,EAAE;SACV,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;IAE3B,MAAM,IAAA,iCAAyB,EAAC,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,CAAA;IACvD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AACrB,CAAC,CAAA;AAjBY,QAAA,uBAAuB,2BAiBnC;AAEM,MAAM,yBAAyB,GAAG,KAAK,EAC5C,GAA2B,EAC3B,IAAc,EACd,WAAW,GAAG,CAAC,EACf,EAAE;IACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,SAAS,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAA;YAC5C,OAAO,CAAC,GAAG,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAA;QAClD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,2CAA2C,GAAG,KAAK,GAAG,EAAE,CAAC,CAAA;QACzE,CAAC;QACD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,IAAA,aAAI,EAAC,WAAW,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAhBY,QAAA,yBAAyB,6BAgBrC","sourcesContent":["import fs from 'node:fs/promises'\nimport { wait } from '@atproto/common'\nimport { Sequencer } from '../sequencer'\nimport { parseIntArg } from './util'\n\nexport type PublishIdentityContext = {\n sequencer: Sequencer\n}\n\nexport const publishIdentity = async (\n ctx: PublishIdentityContext,\n args: string[],\n) => {\n const dids = args\n await publishIdentityEvtForDids(ctx, dids)\n console.log('DONE')\n}\n\nexport const publishIdentityFromFile = async (\n ctx: PublishIdentityContext,\n args: string[],\n) => {\n const filepath = args[0]\n if (!filepath) {\n throw new Error('Expected filepath as argument')\n }\n const timeBetween = args[1] ? parseIntArg(args[1]) : 5\n const file = await fs.readFile(filepath)\n const dids = file\n .toString()\n .split('\\n')\n .map((did) => did.trim())\n\n await publishIdentityEvtForDids(ctx, dids, timeBetween)\n console.log('DONE')\n}\n\nexport const publishIdentityEvtForDids = async (\n ctx: PublishIdentityContext,\n dids: string[],\n timeBetween = 0,\n) => {\n for (const did of dids) {\n try {\n await ctx.sequencer.sequenceIdentityEvt(did)\n console.log(`published identity evt for ${did}`)\n } catch (err) {\n console.error(`failed to sequence new identity evt for ${did}: ${err}`)\n }\n if (timeBetween > 0) {\n await wait(timeBetween)\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"rebuild-repo.js","sourceRoot":"","sources":["../../src/scripts/rebuild-repo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rebuild-repo.js","sourceRoot":"","sources":["../../src/scripts/rebuild-repo.ts"],"names":[],"mappings":"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","sourcesContent":["import readline from 'node:readline/promises'\nimport { TID } from '@atproto/common'\nimport {\n BlockMap,\n CidSet,\n MST,\n MemoryBlockstore,\n signCommit,\n} from '@atproto/repo'\nimport { AccountManager } from '../account-manager/account-manager'\nimport { ActorStore } from '../actor-store/actor-store'\nimport { Sequencer } from '../sequencer'\n\nexport interface RebuildContext {\n sequencer: Sequencer\n accountManager: AccountManager\n actorStore: ActorStore\n}\n\nexport const rebuildRepoScript = async (\n ctx: RebuildContext,\n args: string[],\n) => {\n const did = args[0]\n if (!did || !did.startsWith('did:')) {\n throw new Error('Expected DID as argument')\n }\n return rebuildRepo(ctx, did, true)\n}\n\nexport const rebuildRepo = async (\n ctx: RebuildContext,\n did: string,\n promptUser: boolean,\n) => {\n const memoryStore = new MemoryBlockstore()\n const commit = await ctx.actorStore.transact(did, async (store) => {\n const rootDetails = await store.repo.storage.getRootDetailed()\n const records = await store.record.listAll()\n const existingCids = await store.record.listExistingBlocks()\n\n // increment existing rev by 1 ms\n const revTid = TID.fromStr(rootDetails.rev)\n const rev = TID.fromTime(\n revTid.timestamp() + 1,\n revTid.clockid(),\n ).toString()\n\n let mst = await MST.create(memoryStore)\n for (const record of records) {\n mst = await mst.add(record.path, record.cid)\n }\n const newBlocks = new BlockMap()\n for await (const node of mst.walk()) {\n if (node.isTree()) {\n const pointer = await node.getPointer()\n if (!existingCids.has(pointer)) {\n const serialized = await node.serialize()\n newBlocks.set(serialized.cid, serialized.bytes)\n }\n }\n }\n const mstCids = await mst.allCids()\n const toDelete = new CidSet(existingCids.toList()).subtractSet(mstCids)\n const newCommit = await signCommit(\n {\n did,\n version: 3,\n rev,\n prev: null,\n data: await mst.getPointer(),\n },\n store.repo.signingKey,\n )\n const commitCid = await newBlocks.add(newCommit)\n\n if (promptUser) {\n console.log('Record count: ', records.length)\n console.log('Existing blocks: ', existingCids.toList().length)\n console.log('Deleting blocks:', toDelete.toList().length)\n console.log('Adding blocks: ', newBlocks.size)\n\n const shouldContinue = await promptContinue()\n if (!shouldContinue) {\n throw new Error('Aborted')\n }\n }\n\n await store.repo.storage.deleteMany(toDelete.toList())\n await store.repo.storage.putMany(newBlocks, rev)\n await store.repo.storage.updateRoot(commitCid, rev)\n return {\n cid: commitCid,\n rev,\n since: null,\n prev: null,\n newBlocks,\n relevantBlocks: newBlocks,\n removedCids: toDelete,\n ops: [],\n blobs: new CidSet(),\n prevData: null,\n }\n })\n await ctx.accountManager.updateRepoRoot(did, commit.cid, commit.rev)\n const syncData = await ctx.actorStore.read(did, (store) =>\n store.repo.getSyncEventData(),\n )\n await ctx.sequencer.sequenceSyncEvt(did, syncData)\n}\n\nconst promptContinue = async (): Promise<boolean> => {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n })\n const answer = await rl.question('Continue? y/n ')\n return answer === ''\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"rotate-keys.js","sourceRoot":"","sources":["../../src/scripts/rotate-keys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rotate-keys.js","sourceRoot":"","sources":["../../src/scripts/rotate-keys.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from 'node:fs/promises'\nimport * as plc from '@did-plc/lib'\nimport PQueue from 'p-queue'\nimport AtpAgent from '@atproto/api'\nimport { Keypair } from '@atproto/crypto'\nimport { IdResolver } from '@atproto/identity'\nimport { ActorStore } from '../actor-store/actor-store'\nimport { SyncEvtData } from '../repo'\nimport { Sequencer } from '../sequencer'\nimport { getRecoveryDbFromSequencerLoc } from './sequencer-recovery/recovery-db'\nimport { parseIntArg } from './util'\n\nexport type RotateKeysContext = {\n sequencer: Sequencer\n actorStore: ActorStore\n idResolver: IdResolver\n plcClient: plc.Client\n plcRotationKey: Keypair\n entrywayAdminAgent?: AtpAgent\n}\n\nexport const rotateKeys = async (ctx: RotateKeysContext, args: string[]) => {\n const dids = args\n await rotateKeysForRepos(ctx, dids, 10)\n}\n\nexport const rotateKeysFromFile = async (\n ctx: RotateKeysContext,\n args: string[],\n) => {\n const filepath = args[0]\n if (!filepath) {\n throw new Error('Expected filepath as argument')\n }\n const concurrency = args[1] ? parseIntArg(args[1]) : 25\n const file = await fs.readFile(filepath)\n const dids = file\n .toString()\n .split('\\n')\n .map((did) => did.trim())\n .filter((did) => did.startsWith('did:plc'))\n\n await rotateKeysForRepos(ctx, dids, concurrency)\n}\n\nexport const rotateKeysRecovery = async (\n ctx: RotateKeysContext,\n args: string[],\n) => {\n const concurrency = args[1] ? parseIntArg(args[0]) : 10\n\n const recoveryDb = await getRecoveryDbFromSequencerLoc(\n ctx.sequencer.dbLocation,\n )\n const rows = await recoveryDb.db\n .selectFrom('new_account')\n .select('did')\n .where('new_account.published', '=', 0)\n .execute()\n const dids = rows.map((r) => r.did)\n\n await rotateKeysForRepos(ctx, dids, concurrency, async (did) => {\n await recoveryDb.db\n .updateTable('new_account')\n .set({ published: 1 })\n .where('did', '=', did)\n .execute()\n })\n}\n\nconst rotateKeysForRepos = async (\n ctx: RotateKeysContext,\n dids: string[],\n concurrency: number,\n onSuccess?: (did: string) => Promise<void>,\n) => {\n const queue = new PQueue({ concurrency })\n let completed = 0\n for (const did of dids) {\n queue.add(async () => {\n try {\n await updatePlcSigningKey(ctx, did)\n } catch (err) {\n console.error(`failed to update key for ${did}: ${err}`)\n return\n }\n let syncData: SyncEvtData\n try {\n syncData = await ctx.actorStore.transact(did, async (actorTxn) => {\n await actorTxn.repo.processWrites([])\n return actorTxn.repo.getSyncEventData()\n })\n } catch (err) {\n console.error(`failed to write new commit for ${did}: ${err}`)\n return\n }\n try {\n await ctx.sequencer.sequenceIdentityEvt(did)\n } catch (err) {\n console.error(`failed to sequence new identity evt for ${did}: ${err}`)\n return\n }\n try {\n await ctx.sequencer.sequenceSyncEvt(did, syncData)\n } catch (err) {\n console.error(`failed to sequence for ${did}: ${err}`)\n return\n }\n if (onSuccess) {\n await onSuccess(did)\n }\n completed++\n if (completed % 10 === 0) {\n console.log(`${completed}/${dids.length}`)\n }\n })\n }\n await queue.onIdle()\n console.log('DONE')\n}\n\nconst updatePlcSigningKey = async (ctx: RotateKeysContext, did: string) => {\n const updateTo = await ctx.actorStore.keypair(did)\n const currSigningKey = await ctx.idResolver.did.resolveAtprotoKey(did, true)\n if (updateTo.did() === currSigningKey) {\n // already up to date\n return\n }\n if (ctx.entrywayAdminAgent) {\n await ctx.entrywayAdminAgent.api.com.atproto.admin.updateAccountSigningKey({\n did,\n signingKey: updateTo.did(),\n })\n } else {\n await ctx.plcClient.updateAtprotoKey(\n did,\n ctx.plcRotationKey,\n updateTo.did(),\n )\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/scripts/sequencer-recovery/index.ts"],"names":[],"mappings":";;;AAAA,kCAAqC;AACrC,2CAA6D;AAC7D,+CAA6D;AAEtD,MAAM,iBAAiB,GAAG,KAAK,EACpC,GAAyB,EACzB,IAAc,EACd,EAAE;IACF,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,kBAAW,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACjD,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,kBAAW,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAEvD,MAAM,UAAU,GAAG,MAAM,IAAA,2CAA6B,EACpD,GAAG,CAAC,SAAS,CAAC,UAAU,CACzB,CAAA;IAED,MAAM,OAAO,GAAG,IAAI,qBAAS,CAC3B,EAAE,GAAG,GAAG,EAAE,UAAU,EAAE,EACtB;QACE,WAAW;KACZ,CACF,CAAA;IACD,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AAC3B,CAAC,CAAA;AAlBY,QAAA,iBAAiB,qBAkB7B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/scripts/sequencer-recovery/index.ts"],"names":[],"mappings":";;;AAAA,kCAAqC;AACrC,2CAA6D;AAC7D,+CAA6D;AAEtD,MAAM,iBAAiB,GAAG,KAAK,EACpC,GAAyB,EACzB,IAAc,EACd,EAAE;IACF,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,kBAAW,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACjD,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,kBAAW,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAEvD,MAAM,UAAU,GAAG,MAAM,IAAA,2CAA6B,EACpD,GAAG,CAAC,SAAS,CAAC,UAAU,CACzB,CAAA;IAED,MAAM,OAAO,GAAG,IAAI,qBAAS,CAC3B,EAAE,GAAG,GAAG,EAAE,UAAU,EAAE,EACtB;QACE,WAAW;KACZ,CACF,CAAA;IACD,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AAC3B,CAAC,CAAA;AAlBY,QAAA,iBAAiB,qBAkB7B","sourcesContent":["import { parseIntArg } from '../util'\nimport { Recoverer, RecovererContextNoDb } from './recoverer'\nimport { getRecoveryDbFromSequencerLoc } from './recovery-db'\n\nexport const sequencerRecovery = async (\n ctx: RecovererContextNoDb,\n args: string[],\n) => {\n const cursor = args[0] ? parseIntArg(args[0]) : 0\n const concurrency = args[1] ? parseIntArg(args[1]) : 10\n\n const recoveryDb = await getRecoveryDbFromSequencerLoc(\n ctx.sequencer.dbLocation,\n )\n\n const recover = new Recoverer(\n { ...ctx, recoveryDb },\n {\n concurrency,\n },\n )\n await recover.run(cursor)\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"recoverer.js","sourceRoot":"","sources":["../../../src/scripts/sequencer-recovery/recoverer.ts"],"names":[],"mappings":";;;AAAA,4CAA4C;AAC5C,4CAAkD;AAClD,wCAQsB;AACtB,2EAG8C;AAG9C,iCAAmC;AACnC,qCAKmB;AAGnB,+CAA0C;AAY1C,MAAM,SAAS,GAAG,IAAI,CAAA;AAEtB,MAAa,SAAS;IAIpB,YACS,GAAqB,EAC5B,IAA6B;QAD7B;;;;mBAAO,GAAG;WAAkB;QAJ9B;;;;;WAAkB;QAClB;;;;;WAAmB;QAMjB,IAAI,CAAC,MAAM,GAAG,IAAI,wBAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAC9C,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAA;IACzB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC;QACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;aACxC,UAAU,CAAC,QAAQ,CAAC;aACpB,MAAM,CAAC,KAAK,CAAC;aACb,OAAO,EAAE,CAAA;QACZ,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC1B,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;aAC5C,UAAU,CAAC,UAAU,CAAC;aACtB,MAAM,CAAC,aAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;aAC5B,uBAAuB,EAAE,CAAA;QAC5B,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAA;QAChC,IAAI,SAAS,GAAG,CAAC,CAAA;QAEjB,IAAI,MAAM,GAAuB,WAAW,CAAA;QAC5C,OAAO,MAAM,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC;gBACpD,WAAW,EAAE,MAAM;gBACnB,KAAK,EAAE,SAAS;aACjB,CAAC,CAAA;YACF,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAA;YAC7C,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAA;YAEzB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;YAE3B,SAAS,IAAI,SAAS,CAAA;YACtB,MAAM,eAAe,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,GAAG,CAAA;YACrD,OAAO,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,MAAM,EAAE,CAAC,CAAA;QAC3D,CAAC;QAED,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAA;IAChC,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAA;IAChC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;IAC7B,CAAC;IAED,YAAY,CAAC,GAAW;QACtB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;QAC3B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAM;QACR,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;YACpC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,OAAM;YACR,CAAC;YACD,MAAM,IAAA,qBAAa,EAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBACrD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACpB,MAAM,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;YACnD,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;CACF;AAtED,8BAsEC;AAEM,MAAM,aAAa,GAAG,KAAK,EAAE,GAAqB,EAAE,GAAW,EAAE,EAAE;IACxE,4CAA4C;IAC5C,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;IACvC,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAA;IAC3C,CAAC;AACH,CAAC,CAAA;AARY,QAAA,aAAa,iBAQzB;AAED,MAAM,aAAa,GAAG,KAAK,EAAE,GAAqB,EAAE,GAAc,EAAE,EAAE;IACpE,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAA;IACpB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAA;IACpD,IAAI,GAAG,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACpD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;YACnD,OAAM;QACR,CAAC;IACH,CAAC;IACD,MAAM,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;QACpD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAA;QAC1D,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;YACxB,OAAM;QACR,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;QACvD,MAAM,CAAC,SAAS,GAAG,MAAM,CAAA;QACzB,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAA;QACvB,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAA;QACpB,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAC/C,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;QACnD,MAAM,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,KAAK,EAC/B,GAAqB,EACrB,GAAc,EACd,MAAuB,EACvB,MAAgB,EAChB,EAAE;IACF,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAA;IACpB,MAAM,OAAO,GAAG,MAAM,yBAAgB,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;IACnE,MAAM,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IACzC,MAAM,MAAM,GAAe;QACzB,GAAG,EAAE,GAAG,CAAC,MAAM;QACf,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,MAAM;QACjB,cAAc,EAAE,IAAI,eAAQ,EAAE;QAC9B,WAAW,EAAE,IAAI,aAAM,EAAE;KAC1B,CAAA;IACD,MAAM,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;QACpD,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QACrD,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;QACnD,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;IACF,MAAM,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;AAC5C,CAAC,CAAA;AAED,MAAM,iBAAiB,GAAG,KAAK,EAAE,GAAqB,EAAE,GAAe,EAAE,EAAE;IACzE,qFAAqF;IACrF,IAAI,GAAG,CAAC,MAAM,KAAK,+BAAa,CAAC,OAAO,EAAE,CAAC;QACzC,OAAM;IACR,CAAC;IACD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC/D,MAAM,IAAA,mBAAU,EAAC,SAAS,EAAE,IAAI,CAAC,CAAA;IACjC,MAAM,GAAG,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AACjD,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,KAAK,EACtB,KAA2B,EAC3B,MAAuB,EACvB,EAAE;IACF,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAA;IAErD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IACE,KAAK,CAAC,MAAM,KAAK,oBAAa,CAAC,MAAM;YACrC,KAAK,CAAC,MAAM,KAAK,oBAAa,CAAC,MAAM,EACrC,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC/B,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;gBAC9C,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;YACtD,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,KAAK,EACxB,UAAsB,EACtB,GAAW,EACX,GAAY,EACZ,EAAE;IACF,MAAM,UAAU,CAAC,EAAE;SAChB,UAAU,CAAC,QAAQ,CAAC;SACpB,MAAM,CAAC;QACN,GAAG;QACH,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE;QACtB,KAAK,EAAE,CAAC;KACT,CAAC;SACD,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;SAClC,OAAO,EAAE,CAAA;AACd,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,KAAK,EAAE,UAAsB,EAAE,GAAW,EAAE,EAAE;IACpE,MAAM,UAAU,CAAC,EAAE;SAChB,UAAU,CAAC,aAAa,CAAC;SACzB,MAAM,CAAC;QACN,GAAG;QACH,SAAS,EAAE,CAAC;KACb,CAAC;SACD,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;SAClC,OAAO,EAAE,CAAA;AACd,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,KAAK,EAC1B,GAAc,EAIb,EAAE;IACH,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAA;IACpB,MAAM,MAAM,GAAG,MAAM,IAAA,cAAO,EAAC,GAAG,CAAC,MAAM,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAA;IACvE,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,GAAG,CACxC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QACvB,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,IAAA,mBAAY,EAAC,EAAE,CAAC,IAAI,CAAC,CAAA;QAClD,IAAI,EAAE,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAA,oBAAa,EAAC,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;QACjD,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,GAAG;YAAE,OAAO,SAAS,CAAA;QAC7B,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;QAC7C,IAAI,CAAC,WAAW;YAAE,OAAO,SAAS,CAAA;QAClC,MAAM,MAAM,GAAG,IAAA,sBAAe,EAAC,WAAW,CAAC,CAAA;QAE3C,IAAI,EAAE,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAA,oBAAa,EAAC;gBACnB,GAAG;gBACH,UAAU;gBACV,IAAI;gBACJ,MAAM;gBACN,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,IAAA,oBAAa,EAAC;gBACnB,GAAG;gBACH,UAAU;gBACV,IAAI;gBACJ,MAAM;gBACN,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAA;QACJ,CAAC;IACH,CAAC,CAAC,CACH,CAAA;IACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CACpC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CACJ,CAAA;IACpB,OAAO;QACL,MAAM;QACN,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAA;AACH,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,CAAC,GAAW,EAAiB,EAAE;IAChD,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAA;IACpB,CAAC;SAAM,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAA;IACrB,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"recoverer.js","sourceRoot":"","sources":["../../../src/scripts/sequencer-recovery/recoverer.ts"],"names":[],"mappings":"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","sourcesContent":["import { rmIfExists } from '@atproto/common'\nimport { Secp256k1Keypair } from '@atproto/crypto'\nimport {\n BlockMap,\n CidSet,\n CommitData,\n WriteOpAction,\n cborToLexRecord,\n parseDataKey,\n readCar,\n} from '@atproto/repo'\nimport {\n AccountManager,\n AccountStatus,\n} from '../../account-manager/account-manager'\nimport { ActorStore } from '../../actor-store/actor-store'\nimport { ActorStoreTransactor } from '../../actor-store/actor-store-transactor'\nimport { countAll } from '../../db'\nimport {\n PreparedWrite,\n prepareCreate,\n prepareDelete,\n prepareUpdate,\n} from '../../repo'\nimport { AccountEvt, CommitEvt, SeqEvt, Sequencer } from '../../sequencer'\nimport { RecoveryDb } from './recovery-db'\nimport { UserQueues } from './user-queues'\n\nexport type RecovererContextNoDb = {\n sequencer: Sequencer\n accountManager: AccountManager\n actorStore: ActorStore\n}\n\nexport type RecovererContext = RecovererContextNoDb & {\n recoveryDb: RecoveryDb\n}\n\nconst PAGE_SIZE = 5000\n\nexport class Recoverer {\n queues: UserQueues\n failed: Set<string>\n\n constructor(\n public ctx: RecovererContext,\n opts: { concurrency: number },\n ) {\n this.queues = new UserQueues(opts.concurrency)\n this.failed = new Set()\n }\n\n async run(startCursor = 0) {\n const failed = await this.ctx.recoveryDb.db\n .selectFrom('failed')\n .select('did')\n .execute()\n for (const row of failed) {\n this.failed.add(row.did)\n }\n\n const totalRes = await this.ctx.sequencer.db.db\n .selectFrom('repo_seq')\n .select(countAll.as('count'))\n .executeTakeFirstOrThrow()\n const totalEvts = totalRes.count\n let completed = 0\n\n let cursor: number | undefined = startCursor\n while (cursor !== undefined) {\n const page = await this.ctx.sequencer.requestSeqRange({\n earliestSeq: cursor,\n limit: PAGE_SIZE,\n })\n page.forEach((evt) => this.processEvent(evt))\n cursor = page.at(-1)?.seq\n\n await this.queues.onEmpty()\n\n completed += PAGE_SIZE\n const percentComplete = (completed / totalEvts) * 100\n console.log(`${percentComplete.toFixed(2)}% - ${cursor}`)\n }\n\n await this.queues.processAll()\n }\n\n async processAll() {\n await this.queues.processAll()\n }\n\n async destroy() {\n await this.queues.destroy()\n }\n\n processEvent(evt: SeqEvt) {\n const did = didFromEvt(evt)\n if (!did) {\n return\n }\n this.queues.addToUser(did, async () => {\n if (this.failed.has(did)) {\n return\n }\n await processSeqEvt(this.ctx, evt).catch(async (err) => {\n this.failed.add(did)\n await trackFailure(this.ctx.recoveryDb, did, err)\n })\n })\n }\n}\n\nexport const processSeqEvt = async (ctx: RecovererContext, evt: SeqEvt) => {\n // only need to process commits & tombstones\n if (evt.type === 'account') {\n await processAccountEvt(ctx, evt.evt)\n }\n if (evt.type === 'commit') {\n await processCommit(ctx, evt.evt).catch()\n }\n}\n\nconst processCommit = async (ctx: RecovererContext, evt: CommitEvt) => {\n const did = evt.repo\n const { writes, blocks } = await parseCommitEvt(evt)\n if (evt.since === null) {\n const actorExists = await ctx.actorStore.exists(did)\n if (!actorExists) {\n await processRepoCreation(ctx, evt, writes, blocks)\n return\n }\n }\n await ctx.actorStore.transact(did, async (actorTxn) => {\n const root = await actorTxn.repo.storage.getRootDetailed()\n if (root.rev >= evt.rev) {\n return\n }\n const commit = await actorTxn.repo.formatCommit(writes)\n commit.newBlocks = blocks\n commit.cid = evt.commit\n commit.rev = evt.rev\n await actorTxn.repo.storage.applyCommit(commit)\n await actorTxn.repo.indexWrites(writes, commit.rev)\n await trackBlobs(actorTxn, writes)\n })\n}\n\nconst processRepoCreation = async (\n ctx: RecovererContext,\n evt: CommitEvt,\n writes: PreparedWrite[],\n blocks: BlockMap,\n) => {\n const did = evt.repo\n const keypair = await Secp256k1Keypair.create({ exportable: true })\n await ctx.actorStore.create(did, keypair)\n const commit: CommitData = {\n cid: evt.commit,\n rev: evt.rev,\n since: evt.since,\n prev: null,\n newBlocks: blocks,\n relevantBlocks: new BlockMap(),\n removedCids: new CidSet(),\n }\n await ctx.actorStore.transact(did, async (actorTxn) => {\n await actorTxn.repo.storage.applyCommit(commit, true)\n await actorTxn.repo.indexWrites(writes, commit.rev)\n await actorTxn.repo.blob.processWriteBlobs(commit.rev, writes)\n })\n await trackNewAccount(ctx.recoveryDb, did)\n}\n\nconst processAccountEvt = async (ctx: RecovererContext, evt: AccountEvt) => {\n // do not need to process deactivation/takedowns because we backup account DB as well\n if (evt.status !== AccountStatus.Deleted) {\n return\n }\n const { directory } = await ctx.actorStore.getLocation(evt.did)\n await rmIfExists(directory, true)\n await ctx.accountManager.deleteAccount(evt.did)\n}\n\nconst trackBlobs = async (\n store: ActorStoreTransactor,\n writes: PreparedWrite[],\n) => {\n await store.repo.blob.deleteDereferencedBlobs(writes)\n\n for (const write of writes) {\n if (\n write.action === WriteOpAction.Create ||\n write.action === WriteOpAction.Update\n ) {\n for (const blob of write.blobs) {\n await store.repo.blob.insertBlobMetadata(blob)\n await store.repo.blob.associateBlob(blob, write.uri)\n }\n }\n }\n}\n\nconst trackFailure = async (\n recoveryDb: RecoveryDb,\n did: string,\n err: unknown,\n) => {\n await recoveryDb.db\n .insertInto('failed')\n .values({\n did,\n error: err?.toString(),\n fixed: 0,\n })\n .onConflict((oc) => oc.doNothing())\n .execute()\n}\n\nconst trackNewAccount = async (recoveryDb: RecoveryDb, did: string) => {\n await recoveryDb.db\n .insertInto('new_account')\n .values({\n did,\n published: 0,\n })\n .onConflict((oc) => oc.doNothing())\n .execute()\n}\n\nconst parseCommitEvt = async (\n evt: CommitEvt,\n): Promise<{\n writes: PreparedWrite[]\n blocks: BlockMap\n}> => {\n const did = evt.repo\n const evtCar = await readCar(evt.blocks, { skipCidVerification: true })\n const writesUnfiltered = await Promise.all(\n evt.ops.map(async (op) => {\n const { collection, rkey } = parseDataKey(op.path)\n if (op.action === 'delete') {\n return prepareDelete({ did, collection, rkey })\n }\n if (!op.cid) return undefined\n const recordBytes = evtCar.blocks.get(op.cid)\n if (!recordBytes) return undefined\n const record = cborToLexRecord(recordBytes)\n\n if (op.action === 'create') {\n return prepareCreate({\n did,\n collection,\n rkey,\n record,\n validate: false,\n })\n } else {\n return prepareUpdate({\n did,\n collection,\n rkey,\n record,\n validate: false,\n })\n }\n }),\n )\n const writes = writesUnfiltered.filter(\n (w) => w !== undefined,\n ) as PreparedWrite[]\n return {\n writes,\n blocks: evtCar.blocks,\n }\n}\n\nconst didFromEvt = (evt: SeqEvt): string | null => {\n if (evt.type === 'account') {\n return evt.evt.did\n } else if (evt.type === 'commit') {\n return evt.evt.repo\n } else {\n return null\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"recovery-db.js","sourceRoot":"","sources":["../../../src/scripts/sequencer-recovery/recovery-db.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA4B;AAE5B,iCAA6C;AAoBtC,MAAM,6BAA6B,GAAG,CAC3C,YAAoB,EACC,EAAE;IACvB,MAAM,aAAa,GAAG,mBAAI,CAAC,IAAI,CAAC,mBAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAC,CAAA;IAC9E,OAAO,IAAA,+BAAuB,EAAC,aAAa,CAAC,CAAA;AAC/C,CAAC,CAAA;AALY,QAAA,6BAA6B,iCAKzC;AAEM,MAAM,uBAAuB,GAAG,KAAK,EAC1C,QAAgB,EAChB,wBAAwB,GAAG,KAAK,EACX,EAAE;IACvB,MAAM,OAAO,GAA2B,wBAAwB;QAC9D,CAAC,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE;QAC7B,CAAC,CAAC,EAAE,CAAA;IACN,MAAM,EAAE,GAAG,aAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC7C,MAAM,QAAQ,GAAG,IAAI,aAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;IAChD,MAAM,QAAQ,CAAC,sBAAsB,EAAE,CAAA;IACvC,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AAXY,QAAA,uBAAuB,2BAWnC;AAED,MAAM,UAAU,GAAG;IACjB,KAAK,EAAE;QACL,EAAE,EAAE,KAAK,EAAE,EAAmB,EAAE,EAAE;YAChC,MAAM,EAAE,CAAC,MAAM;iBACZ,WAAW,CAAC,aAAa,CAAC;iBAC1B,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;iBACtD,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;iBACtD,OAAO,EAAE,CAAA;YAEZ,MAAM,EAAE,CAAC,MAAM;iBACZ,WAAW,CAAC,QAAQ,CAAC;iBACrB,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;iBACtD,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC;iBAC7B,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;iBAClD,OAAO,EAAE,CAAA;QACd,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,EAAmB,EAAE,EAAE;YAClC,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAA;YAClD,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAA;QAC/C,CAAC;KACF;CACF,CAAA"}
1
+ {"version":3,"file":"recovery-db.js","sourceRoot":"","sources":["../../../src/scripts/sequencer-recovery/recovery-db.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA4B;AAE5B,iCAA6C;AAoBtC,MAAM,6BAA6B,GAAG,CAC3C,YAAoB,EACC,EAAE;IACvB,MAAM,aAAa,GAAG,mBAAI,CAAC,IAAI,CAAC,mBAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAC,CAAA;IAC9E,OAAO,IAAA,+BAAuB,EAAC,aAAa,CAAC,CAAA;AAC/C,CAAC,CAAA;AALY,QAAA,6BAA6B,iCAKzC;AAEM,MAAM,uBAAuB,GAAG,KAAK,EAC1C,QAAgB,EAChB,wBAAwB,GAAG,KAAK,EACX,EAAE;IACvB,MAAM,OAAO,GAA2B,wBAAwB;QAC9D,CAAC,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE;QAC7B,CAAC,CAAC,EAAE,CAAA;IACN,MAAM,EAAE,GAAG,aAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC7C,MAAM,QAAQ,GAAG,IAAI,aAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;IAChD,MAAM,QAAQ,CAAC,sBAAsB,EAAE,CAAA;IACvC,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AAXY,QAAA,uBAAuB,2BAWnC;AAED,MAAM,UAAU,GAAG;IACjB,KAAK,EAAE;QACL,EAAE,EAAE,KAAK,EAAE,EAAmB,EAAE,EAAE;YAChC,MAAM,EAAE,CAAC,MAAM;iBACZ,WAAW,CAAC,aAAa,CAAC;iBAC1B,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;iBACtD,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;iBACtD,OAAO,EAAE,CAAA;YAEZ,MAAM,EAAE,CAAC,MAAM;iBACZ,WAAW,CAAC,QAAQ,CAAC;iBACrB,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;iBACtD,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC;iBAC7B,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;iBAClD,OAAO,EAAE,CAAA;QACd,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,EAAmB,EAAE,EAAE;YAClC,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAA;YAClD,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAA;QAC/C,CAAC;KACF;CACF,CAAA","sourcesContent":["import path from 'node:path'\nimport { Kysely } from 'kysely'\nimport { Database, Migrator } from '../../db'\n\nexport interface NewAccount {\n did: string\n published: 0 | 1\n}\n\nexport interface Failed {\n did: string\n error: string | null\n fixed: 0 | 1\n}\n\nexport type RecoveryDbSchema = {\n new_account: NewAccount\n failed: Failed\n}\n\nexport type RecoveryDb = Database<RecoveryDbSchema>\n\nexport const getRecoveryDbFromSequencerLoc = (\n sequencerLoc: string,\n): Promise<RecoveryDb> => {\n const recoveryDbLoc = path.join(path.dirname(sequencerLoc), 'recovery.sqlite')\n return getAndMigrateRecoveryDb(recoveryDbLoc)\n}\n\nexport const getAndMigrateRecoveryDb = async (\n location: string,\n disableWalAutoCheckpoint = false,\n): Promise<RecoveryDb> => {\n const pragmas: Record<string, string> = disableWalAutoCheckpoint\n ? { wal_autocheckpoint: '0' }\n : {}\n const db = Database.sqlite(location, pragmas)\n const migrator = new Migrator(db.db, migrations)\n await migrator.migrateToLatestOrThrow()\n return db\n}\n\nconst migrations = {\n '001': {\n up: async (db: Kysely<unknown>) => {\n await db.schema\n .createTable('new_account')\n .addColumn('did', 'varchar', (col) => col.primaryKey())\n .addColumn('published', 'int2', (col) => col.notNull())\n .execute()\n\n await db.schema\n .createTable('failed')\n .addColumn('did', 'varchar', (col) => col.primaryKey())\n .addColumn('error', 'varchar')\n .addColumn('fixed', 'int2', (col) => col.notNull())\n .execute()\n },\n down: async (db: Kysely<unknown>) => {\n await db.schema.dropTable('new_account').execute()\n await db.schema.dropTable('failed').execute()\n },\n },\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"repair-repos.js","sourceRoot":"","sources":["../../../src/scripts/sequencer-recovery/repair-repos.ts"],"names":[],"mappings":";;;AAAA,+CAAkD;AAClD,kDAA6C;AAC7C,2CAIoB;AACpB,+CAA6D;AAEtD,MAAM,WAAW,GAAG,KAAK,EAAE,GAAyB,EAAE,EAAE;IAC7D,MAAM,UAAU,GAAG,MAAM,IAAA,2CAA6B,EACpD,GAAG,CAAC,SAAS,CAAC,UAAU,CACzB,CAAA;IACD,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,EAAE;SAClC,UAAU,CAAC,QAAQ,CAAC;SACpB,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;SAC7B,OAAO,EAAE,CAAA;IACZ,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC5C,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAA,0BAAW,EAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;QAClC,MAAM,oBAAoB,CAAC,EAAE,GAAG,GAAG,EAAE,UAAU,EAAE,EAAE,GAAG,CAAC,CAAA;QACvD,KAAK,EAAE,CAAA;QACP,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IACxC,CAAC;AACH,CAAC,CAAA;AAjBY,QAAA,WAAW,eAiBvB;AAED,MAAM,oBAAoB,GAAG,KAAK,EAAE,GAAqB,EAAE,GAAW,EAAE,EAAE;IACxE,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;SACtC,UAAU,CAAC,UAAU,CAAC;SACtB,SAAS,EAAE;SACX,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,EAAE,CAAA;IACZ,MAAM,OAAO,GAAG,IAAA,4BAAgB,EAAC,OAAO,CAAC,CAAA;IACzC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,IAAA,yBAAa,EAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IAC/B,CAAC;IACD,MAAM,GAAG,CAAC,UAAU,CAAC,EAAE;SACpB,WAAW,CAAC,QAAQ,CAAC;SACrB,GAAG,CAAC;QACH,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,IAAI;KACZ,CAAC;SACD,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC;SACtB,OAAO,EAAE,CAAA;AACd,CAAC,CAAA"}
1
+ {"version":3,"file":"repair-repos.js","sourceRoot":"","sources":["../../../src/scripts/sequencer-recovery/repair-repos.ts"],"names":[],"mappings":";;;AAAA,+CAAkD;AAClD,kDAA6C;AAC7C,2CAIoB;AACpB,+CAA6D;AAEtD,MAAM,WAAW,GAAG,KAAK,EAAE,GAAyB,EAAE,EAAE;IAC7D,MAAM,UAAU,GAAG,MAAM,IAAA,2CAA6B,EACpD,GAAG,CAAC,SAAS,CAAC,UAAU,CACzB,CAAA;IACD,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,EAAE;SAClC,UAAU,CAAC,QAAQ,CAAC;SACpB,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;SAC7B,OAAO,EAAE,CAAA;IACZ,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC5C,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAA,0BAAW,EAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;QAClC,MAAM,oBAAoB,CAAC,EAAE,GAAG,GAAG,EAAE,UAAU,EAAE,EAAE,GAAG,CAAC,CAAA;QACvD,KAAK,EAAE,CAAA;QACP,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IACxC,CAAC;AACH,CAAC,CAAA;AAjBY,QAAA,WAAW,eAiBvB;AAED,MAAM,oBAAoB,GAAG,KAAK,EAAE,GAAqB,EAAE,GAAW,EAAE,EAAE;IACxE,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;SACtC,UAAU,CAAC,UAAU,CAAC;SACtB,SAAS,EAAE;SACX,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,EAAE,CAAA;IACZ,MAAM,OAAO,GAAG,IAAA,4BAAgB,EAAC,OAAO,CAAC,CAAA;IACzC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,IAAA,yBAAa,EAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IAC/B,CAAC;IACD,MAAM,GAAG,CAAC,UAAU,CAAC,EAAE;SACpB,WAAW,CAAC,QAAQ,CAAC;SACrB,GAAG,CAAC;QACH,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,IAAI;KACZ,CAAC;SACD,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC;SACtB,OAAO,EAAE,CAAA;AACd,CAAC,CAAA","sourcesContent":["import { parseRepoSeqRows } from '../../sequencer'\nimport { rebuildRepo } from '../rebuild-repo'\nimport {\n RecovererContext,\n RecovererContextNoDb,\n processSeqEvt,\n} from './recoverer'\nimport { getRecoveryDbFromSequencerLoc } from './recovery-db'\n\nexport const repairRepos = async (ctx: RecovererContextNoDb) => {\n const recoveryDb = await getRecoveryDbFromSequencerLoc(\n ctx.sequencer.dbLocation,\n )\n const repairRes = await recoveryDb.db\n .selectFrom('failed')\n .select('did')\n .where('failed.fixed', '=', 0)\n .execute()\n const dids = repairRes.map((row) => row.did)\n let fixed = 0\n for (const did of dids) {\n await rebuildRepo(ctx, did, false)\n await recoverFromSequencer({ ...ctx, recoveryDb }, did)\n fixed++\n console.log(`${fixed}/${dids.length}`)\n }\n}\n\nconst recoverFromSequencer = async (ctx: RecovererContext, did: string) => {\n const didEvts = await ctx.sequencer.db.db\n .selectFrom('repo_seq')\n .selectAll()\n .where('did', '=', did)\n .orderBy('seq', 'asc')\n .execute()\n const seqEvts = parseRepoSeqRows(didEvts)\n for (const evt of seqEvts) {\n await processSeqEvt(ctx, evt)\n }\n await ctx.recoveryDb.db\n .updateTable('failed')\n .set({\n fixed: 1,\n error: null,\n })\n .where('did', '=', did)\n .execute()\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"user-queues.js","sourceRoot":"","sources":["../../../src/scripts/sequencer-recovery/user-queues.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA4B;AAC5B,MAAa,UAAU;IAIrB,YAAY,WAAmB;QAH/B;;;;;WAAY;QACZ;;;;mBAAS,IAAI,GAAG,EAAkB;WAAA;QAGhC,IAAI,CAAC,IAAI,GAAG,IAAI,iBAAM,CAAC,EAAE,WAAW,EAAE,CAAC,CAAA;IACzC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAW,EAAE,IAAyB;QACpD,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAM;QAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;YACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACrC,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,QAAQ,CAAC,GAAW;QAC1B,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAChC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,IAAI,iBAAM,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAA;YACtC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;YACjD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAC7B,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAA;IAC3B,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAA;IAC1B,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;QACjB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;QACjB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;QACrC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;IACzB,CAAC;CACF;AAvCD,gCAuCC"}
1
+ {"version":3,"file":"user-queues.js","sourceRoot":"","sources":["../../../src/scripts/sequencer-recovery/user-queues.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA4B;AAC5B,MAAa,UAAU;IAIrB,YAAY,WAAmB;QAH/B;;;;;WAAY;QACZ;;;;mBAAS,IAAI,GAAG,EAAkB;WAAA;QAGhC,IAAI,CAAC,IAAI,GAAG,IAAI,iBAAM,CAAC,EAAE,WAAW,EAAE,CAAC,CAAA;IACzC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAW,EAAE,IAAyB;QACpD,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAM;QAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;YACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACrC,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,QAAQ,CAAC,GAAW;QAC1B,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAChC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,IAAI,iBAAM,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAA;YACtC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;YACjD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAC7B,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAA;IAC3B,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAA;IAC1B,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;QACjB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;QACjB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;QACrC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;IACzB,CAAC;CACF;AAvCD,gCAuCC","sourcesContent":["import PQueue from 'p-queue'\nexport class UserQueues {\n main: PQueue\n queues = new Map<string, PQueue>()\n\n constructor(concurrency: number) {\n this.main = new PQueue({ concurrency })\n }\n\n async addToUser(did: string, task: () => Promise<void>) {\n if (this.main.isPaused) return\n return this.main.add(() => {\n return this.getQueue(did).add(task)\n })\n }\n\n private getQueue(did: string) {\n let queue = this.queues.get(did)\n if (!queue) {\n queue = new PQueue({ concurrency: 1 })\n queue.once('idle', () => this.queues.delete(did))\n this.queues.set(did, queue)\n }\n return queue\n }\n\n async onEmpty() {\n await this.main.onEmpty()\n }\n\n async processAll() {\n await this.main.onIdle()\n }\n\n async destroy() {\n this.main.pause()\n this.main.clear()\n this.queues.forEach((q) => q.clear())\n await this.processAll()\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/scripts/util.ts"],"names":[],"mappings":";;;AAAO,MAAM,WAAW,GAAG,CAAC,GAAW,EAAU,EAAE;IACjD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IAChC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAA;IACzD,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AANY,QAAA,WAAW,eAMvB"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/scripts/util.ts"],"names":[],"mappings":";;;AAAO,MAAM,WAAW,GAAG,CAAC,GAAW,EAAU,EAAE;IACjD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IAChC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAA;IACzD,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AANY,QAAA,WAAW,eAMvB","sourcesContent":["export const parseIntArg = (arg: string): number => {\n const parsed = parseInt(arg, 10)\n if (isNaN(parsed)) {\n throw new Error(`Invalid arg, expected number: ${arg}`)\n }\n return parsed\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sequencer/db/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,iCAA6C;AAC7C,8DAAqC;AAGrC,2CAAwB;AAIjB,MAAM,KAAK,GAAG,CACnB,QAAgB,EAChB,wBAAwB,GAAG,KAAK,EACnB,EAAE;IACf,MAAM,OAAO,GAA2B,wBAAwB;QAC9D,CAAC,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE;QAC7B,CAAC,CAAC,EAAE,CAAA;IACN,OAAO,aAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;AAC3C,CAAC,CAAA;AARY,QAAA,KAAK,SAQjB;AAEM,MAAM,WAAW,GAAG,CAAC,EAA+B,EAAE,EAAE;IAC7D,OAAO,IAAI,aAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,oBAAU,CAAC,CAAA;AACxC,CAAC,CAAA;AAFY,QAAA,WAAW,eAEvB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sequencer/db/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,iCAA6C;AAC7C,8DAAqC;AAGrC,2CAAwB;AAIjB,MAAM,KAAK,GAAG,CACnB,QAAgB,EAChB,wBAAwB,GAAG,KAAK,EACnB,EAAE;IACf,MAAM,OAAO,GAA2B,wBAAwB;QAC9D,CAAC,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE;QAC7B,CAAC,CAAC,EAAE,CAAA;IACN,OAAO,aAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;AAC3C,CAAC,CAAA;AARY,QAAA,KAAK,SAQjB;AAEM,MAAM,WAAW,GAAG,CAAC,EAA+B,EAAE,EAAE;IAC7D,OAAO,IAAI,aAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,oBAAU,CAAC,CAAA;AACxC,CAAC,CAAA;AAFY,QAAA,WAAW,eAEvB","sourcesContent":["import { Database, Migrator } from '../../db'\nimport migrations from './migrations'\nimport { SequencerDbSchema } from './schema'\n\nexport * from './schema'\n\nexport type SequencerDb = Database<SequencerDbSchema>\n\nexport const getDb = (\n location: string,\n disableWalAutoCheckpoint = false,\n): SequencerDb => {\n const pragmas: Record<string, string> = disableWalAutoCheckpoint\n ? { wal_autocheckpoint: '0' }\n : {}\n return Database.sqlite(location, pragmas)\n}\n\nexport const getMigrator = (db: Database<SequencerDbSchema>) => {\n return new Migrator(db.db, migrations)\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"001-init.js","sourceRoot":"","sources":["../../../../src/sequencer/db/migrations/001-init.ts"],"names":[],"mappings":";;AAEA,gBA4BC;AAED,oBAEC;AAhCM,KAAK,UAAU,EAAE,CAAC,EAAmB;IAC1C,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,UAAU,CAAC;SACvB,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,UAAU,EAAE,CAAC;SACtE,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACnD,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACzD,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SAClD,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SACrE,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SAC3D,OAAO,EAAE,CAAA;IACZ,kCAAkC;IAClC,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,kBAAkB,CAAC;SAC/B,EAAE,CAAC,UAAU,CAAC;SACd,MAAM,CAAC,KAAK,CAAC;SACb,OAAO,EAAE,CAAA;IACZ,yCAAyC;IACzC,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,yBAAyB,CAAC;SACtC,EAAE,CAAC,UAAU,CAAC;SACd,MAAM,CAAC,WAAW,CAAC;SACnB,OAAO,EAAE,CAAA;IACZ,wDAAwD;IACxD,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,6BAA6B,CAAC;SAC1C,EAAE,CAAC,UAAU,CAAC;SACd,MAAM,CAAC,aAAa,CAAC;SACrB,OAAO,EAAE,CAAA;AACd,CAAC;AAEM,KAAK,UAAU,IAAI,CAAC,EAAmB;IAC5C,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAA;AACjD,CAAC"}
1
+ {"version":3,"file":"001-init.js","sourceRoot":"","sources":["../../../../src/sequencer/db/migrations/001-init.ts"],"names":[],"mappings":";;AAEA,gBA4BC;AAED,oBAEC;AAhCM,KAAK,UAAU,EAAE,CAAC,EAAmB;IAC1C,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,UAAU,CAAC;SACvB,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,UAAU,EAAE,CAAC;SACtE,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACnD,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACzD,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SAClD,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SACrE,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SAC3D,OAAO,EAAE,CAAA;IACZ,kCAAkC;IAClC,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,kBAAkB,CAAC;SAC/B,EAAE,CAAC,UAAU,CAAC;SACd,MAAM,CAAC,KAAK,CAAC;SACb,OAAO,EAAE,CAAA;IACZ,yCAAyC;IACzC,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,yBAAyB,CAAC;SACtC,EAAE,CAAC,UAAU,CAAC;SACd,MAAM,CAAC,WAAW,CAAC;SACnB,OAAO,EAAE,CAAA;IACZ,wDAAwD;IACxD,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,6BAA6B,CAAC;SAC1C,EAAE,CAAC,UAAU,CAAC;SACd,MAAM,CAAC,aAAa,CAAC;SACrB,OAAO,EAAE,CAAA;AACd,CAAC;AAEM,KAAK,UAAU,IAAI,CAAC,EAAmB;IAC5C,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAA;AACjD,CAAC","sourcesContent":["import { Kysely } from 'kysely'\n\nexport async function up(db: Kysely<unknown>): Promise<void> {\n await db.schema\n .createTable('repo_seq')\n .addColumn('seq', 'integer', (col) => col.autoIncrement().primaryKey())\n .addColumn('did', 'varchar', (col) => col.notNull())\n .addColumn('eventType', 'varchar', (col) => col.notNull())\n .addColumn('event', 'blob', (col) => col.notNull())\n .addColumn('invalidated', 'int2', (col) => col.notNull().defaultTo(0))\n .addColumn('sequencedAt', 'varchar', (col) => col.notNull())\n .execute()\n // for filtering seqs based on did\n await db.schema\n .createIndex('repo_seq_did_idx')\n .on('repo_seq')\n .column('did')\n .execute()\n // for filtering seqs based on event type\n await db.schema\n .createIndex('repo_seq_event_type_idx')\n .on('repo_seq')\n .column('eventType')\n .execute()\n // for entering into the seq stream at a particular time\n await db.schema\n .createIndex('repo_seq_sequenced_at_index')\n .on('repo_seq')\n .column('sequencedAt')\n .execute()\n}\n\nexport async function down(db: Kysely<unknown>): Promise<void> {\n await db.schema.dropTable('repo_seq').execute()\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/sequencer/db/migrations/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAkC;AAElC,kBAAe;IACb,KAAK,EAAE,IAAI;CACZ,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/sequencer/db/migrations/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAkC;AAElC,kBAAe;IACb,KAAK,EAAE,IAAI;CACZ,CAAA","sourcesContent":["import * as init from './001-init'\n\nexport default {\n '001': init,\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/sequencer/db/schema.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/sequencer/db/schema.ts"],"names":[],"mappings":"","sourcesContent":["import { Generated, GeneratedAlways, Insertable, Selectable } from 'kysely'\n\nexport type RepoSeqEventType = 'append' | 'sync' | 'identity' | 'account'\n\nexport interface RepoSeq {\n seq: GeneratedAlways<number>\n did: string\n eventType: RepoSeqEventType\n event: Uint8Array\n invalidated: Generated<0 | 1>\n sequencedAt: string\n}\n\nexport type RepoSeqInsert = Insertable<RepoSeq>\nexport type RepoSeqEntry = Selectable<RepoSeq>\n\nexport type SequencerDbSchema = {\n repo_seq: RepoSeq\n}\n"]}