@atproto/pds 0.4.19 → 0.4.21

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 (302) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/api/app/bsky/actor/index.d.ts.map +1 -1
  3. package/dist/api/app/bsky/actor/index.js +0 -6
  4. package/dist/api/app/bsky/actor/index.js.map +1 -1
  5. package/dist/api/app/bsky/feed/getFeed.d.ts.map +1 -1
  6. package/dist/api/app/bsky/feed/getFeed.js +1 -3
  7. package/dist/api/app/bsky/feed/getFeed.js.map +1 -1
  8. package/dist/api/app/bsky/feed/index.d.ts.map +1 -1
  9. package/dist/api/app/bsky/feed/index.js +0 -20
  10. package/dist/api/app/bsky/feed/index.js.map +1 -1
  11. package/dist/api/app/bsky/index.d.ts.map +1 -1
  12. package/dist/api/app/bsky/index.js +0 -6
  13. package/dist/api/app/bsky/index.js.map +1 -1
  14. package/dist/api/app/bsky/notification/index.d.ts.map +1 -1
  15. package/dist/api/app/bsky/notification/index.js +0 -6
  16. package/dist/api/app/bsky/notification/index.js.map +1 -1
  17. package/dist/api/com/atproto/index.d.ts.map +1 -1
  18. package/dist/api/com/atproto/index.js +0 -2
  19. package/dist/api/com/atproto/index.js.map +1 -1
  20. package/dist/api/com/atproto/repo/getRecord.js +1 -1
  21. package/dist/api/com/atproto/repo/getRecord.js.map +1 -1
  22. package/dist/api/index.d.ts.map +1 -1
  23. package/dist/api/index.js +0 -2
  24. package/dist/api/index.js.map +1 -1
  25. package/dist/context.d.ts +3 -0
  26. package/dist/context.d.ts.map +1 -1
  27. package/dist/context.js +30 -0
  28. package/dist/context.js.map +1 -1
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +26 -45
  31. package/dist/index.js.map +1 -1
  32. package/dist/pipethrough.d.ts +12 -22
  33. package/dist/pipethrough.d.ts.map +1 -1
  34. package/dist/pipethrough.js +159 -81
  35. package/dist/pipethrough.js.map +1 -1
  36. package/package.json +8 -8
  37. package/src/api/app/bsky/actor/index.ts +0 -6
  38. package/src/api/app/bsky/feed/getFeed.ts +1 -3
  39. package/src/api/app/bsky/feed/index.ts +0 -20
  40. package/src/api/app/bsky/index.ts +0 -6
  41. package/src/api/app/bsky/notification/index.ts +0 -7
  42. package/src/api/com/atproto/index.ts +0 -2
  43. package/src/api/com/atproto/repo/getRecord.ts +1 -1
  44. package/src/api/index.ts +0 -2
  45. package/src/context.ts +34 -1
  46. package/src/index.ts +27 -51
  47. package/src/pipethrough.ts +184 -114
  48. package/dist/api/app/bsky/actor/getSuggestions.d.ts +0 -4
  49. package/dist/api/app/bsky/actor/getSuggestions.d.ts.map +0 -1
  50. package/dist/api/app/bsky/actor/getSuggestions.js +0 -19
  51. package/dist/api/app/bsky/actor/getSuggestions.js.map +0 -1
  52. package/dist/api/app/bsky/actor/searchActors.d.ts +0 -4
  53. package/dist/api/app/bsky/actor/searchActors.d.ts.map +0 -1
  54. package/dist/api/app/bsky/actor/searchActors.js +0 -17
  55. package/dist/api/app/bsky/actor/searchActors.js.map +0 -1
  56. package/dist/api/app/bsky/actor/searchActorsTypeahead.d.ts +0 -4
  57. package/dist/api/app/bsky/actor/searchActorsTypeahead.d.ts.map +0 -1
  58. package/dist/api/app/bsky/actor/searchActorsTypeahead.js +0 -17
  59. package/dist/api/app/bsky/actor/searchActorsTypeahead.js.map +0 -1
  60. package/dist/api/app/bsky/feed/getActorFeeds.d.ts +0 -4
  61. package/dist/api/app/bsky/feed/getActorFeeds.d.ts.map +0 -1
  62. package/dist/api/app/bsky/feed/getActorFeeds.js +0 -17
  63. package/dist/api/app/bsky/feed/getActorFeeds.js.map +0 -1
  64. package/dist/api/app/bsky/feed/getFeedGenerator.d.ts +0 -4
  65. package/dist/api/app/bsky/feed/getFeedGenerator.d.ts.map +0 -1
  66. package/dist/api/app/bsky/feed/getFeedGenerator.js +0 -17
  67. package/dist/api/app/bsky/feed/getFeedGenerator.js.map +0 -1
  68. package/dist/api/app/bsky/feed/getFeedGenerators.d.ts +0 -4
  69. package/dist/api/app/bsky/feed/getFeedGenerators.d.ts.map +0 -1
  70. package/dist/api/app/bsky/feed/getFeedGenerators.js +0 -17
  71. package/dist/api/app/bsky/feed/getFeedGenerators.js.map +0 -1
  72. package/dist/api/app/bsky/feed/getLikes.d.ts +0 -4
  73. package/dist/api/app/bsky/feed/getLikes.d.ts.map +0 -1
  74. package/dist/api/app/bsky/feed/getLikes.js +0 -17
  75. package/dist/api/app/bsky/feed/getLikes.js.map +0 -1
  76. package/dist/api/app/bsky/feed/getListFeed.d.ts +0 -4
  77. package/dist/api/app/bsky/feed/getListFeed.d.ts.map +0 -1
  78. package/dist/api/app/bsky/feed/getListFeed.js +0 -17
  79. package/dist/api/app/bsky/feed/getListFeed.js.map +0 -1
  80. package/dist/api/app/bsky/feed/getPosts.d.ts +0 -4
  81. package/dist/api/app/bsky/feed/getPosts.d.ts.map +0 -1
  82. package/dist/api/app/bsky/feed/getPosts.js +0 -17
  83. package/dist/api/app/bsky/feed/getPosts.js.map +0 -1
  84. package/dist/api/app/bsky/feed/getRepostedBy.d.ts +0 -4
  85. package/dist/api/app/bsky/feed/getRepostedBy.d.ts.map +0 -1
  86. package/dist/api/app/bsky/feed/getRepostedBy.js +0 -17
  87. package/dist/api/app/bsky/feed/getRepostedBy.js.map +0 -1
  88. package/dist/api/app/bsky/feed/getSuggestedFeeds.d.ts +0 -4
  89. package/dist/api/app/bsky/feed/getSuggestedFeeds.d.ts.map +0 -1
  90. package/dist/api/app/bsky/feed/getSuggestedFeeds.js +0 -17
  91. package/dist/api/app/bsky/feed/getSuggestedFeeds.js.map +0 -1
  92. package/dist/api/app/bsky/feed/searchPosts.d.ts +0 -4
  93. package/dist/api/app/bsky/feed/searchPosts.d.ts.map +0 -1
  94. package/dist/api/app/bsky/feed/searchPosts.js +0 -17
  95. package/dist/api/app/bsky/feed/searchPosts.js.map +0 -1
  96. package/dist/api/app/bsky/feed/sendInteractions.d.ts +0 -4
  97. package/dist/api/app/bsky/feed/sendInteractions.d.ts.map +0 -1
  98. package/dist/api/app/bsky/feed/sendInteractions.js +0 -14
  99. package/dist/api/app/bsky/feed/sendInteractions.js.map +0 -1
  100. package/dist/api/app/bsky/graph/getBlocks.d.ts +0 -4
  101. package/dist/api/app/bsky/graph/getBlocks.d.ts.map +0 -1
  102. package/dist/api/app/bsky/graph/getBlocks.js +0 -17
  103. package/dist/api/app/bsky/graph/getBlocks.js.map +0 -1
  104. package/dist/api/app/bsky/graph/getFollowers.d.ts +0 -4
  105. package/dist/api/app/bsky/graph/getFollowers.d.ts.map +0 -1
  106. package/dist/api/app/bsky/graph/getFollowers.js +0 -17
  107. package/dist/api/app/bsky/graph/getFollowers.js.map +0 -1
  108. package/dist/api/app/bsky/graph/getFollows.d.ts +0 -4
  109. package/dist/api/app/bsky/graph/getFollows.d.ts.map +0 -1
  110. package/dist/api/app/bsky/graph/getFollows.js +0 -17
  111. package/dist/api/app/bsky/graph/getFollows.js.map +0 -1
  112. package/dist/api/app/bsky/graph/getList.d.ts +0 -4
  113. package/dist/api/app/bsky/graph/getList.d.ts.map +0 -1
  114. package/dist/api/app/bsky/graph/getList.js +0 -17
  115. package/dist/api/app/bsky/graph/getList.js.map +0 -1
  116. package/dist/api/app/bsky/graph/getListBlocks.d.ts +0 -4
  117. package/dist/api/app/bsky/graph/getListBlocks.d.ts.map +0 -1
  118. package/dist/api/app/bsky/graph/getListBlocks.js +0 -17
  119. package/dist/api/app/bsky/graph/getListBlocks.js.map +0 -1
  120. package/dist/api/app/bsky/graph/getListMutes.d.ts +0 -4
  121. package/dist/api/app/bsky/graph/getListMutes.d.ts.map +0 -1
  122. package/dist/api/app/bsky/graph/getListMutes.js +0 -17
  123. package/dist/api/app/bsky/graph/getListMutes.js.map +0 -1
  124. package/dist/api/app/bsky/graph/getLists.d.ts +0 -4
  125. package/dist/api/app/bsky/graph/getLists.d.ts.map +0 -1
  126. package/dist/api/app/bsky/graph/getLists.js +0 -17
  127. package/dist/api/app/bsky/graph/getLists.js.map +0 -1
  128. package/dist/api/app/bsky/graph/getMutes.d.ts +0 -4
  129. package/dist/api/app/bsky/graph/getMutes.d.ts.map +0 -1
  130. package/dist/api/app/bsky/graph/getMutes.js +0 -17
  131. package/dist/api/app/bsky/graph/getMutes.js.map +0 -1
  132. package/dist/api/app/bsky/graph/getSuggestedFollowsByActor.d.ts +0 -4
  133. package/dist/api/app/bsky/graph/getSuggestedFollowsByActor.d.ts.map +0 -1
  134. package/dist/api/app/bsky/graph/getSuggestedFollowsByActor.js +0 -17
  135. package/dist/api/app/bsky/graph/getSuggestedFollowsByActor.js.map +0 -1
  136. package/dist/api/app/bsky/graph/index.d.ts +0 -4
  137. package/dist/api/app/bsky/graph/index.d.ts.map +0 -1
  138. package/dist/api/app/bsky/graph/index.js +0 -35
  139. package/dist/api/app/bsky/graph/index.js.map +0 -1
  140. package/dist/api/app/bsky/graph/muteActor.d.ts +0 -4
  141. package/dist/api/app/bsky/graph/muteActor.d.ts.map +0 -1
  142. package/dist/api/app/bsky/graph/muteActor.js +0 -14
  143. package/dist/api/app/bsky/graph/muteActor.js.map +0 -1
  144. package/dist/api/app/bsky/graph/muteActorList.d.ts +0 -4
  145. package/dist/api/app/bsky/graph/muteActorList.d.ts.map +0 -1
  146. package/dist/api/app/bsky/graph/muteActorList.js +0 -14
  147. package/dist/api/app/bsky/graph/muteActorList.js.map +0 -1
  148. package/dist/api/app/bsky/graph/unmuteActor.d.ts +0 -4
  149. package/dist/api/app/bsky/graph/unmuteActor.d.ts.map +0 -1
  150. package/dist/api/app/bsky/graph/unmuteActor.js +0 -14
  151. package/dist/api/app/bsky/graph/unmuteActor.js.map +0 -1
  152. package/dist/api/app/bsky/graph/unmuteActorList.d.ts +0 -4
  153. package/dist/api/app/bsky/graph/unmuteActorList.d.ts.map +0 -1
  154. package/dist/api/app/bsky/graph/unmuteActorList.js +0 -14
  155. package/dist/api/app/bsky/graph/unmuteActorList.js.map +0 -1
  156. package/dist/api/app/bsky/labeler/getServices.d.ts +0 -4
  157. package/dist/api/app/bsky/labeler/getServices.d.ts.map +0 -1
  158. package/dist/api/app/bsky/labeler/getServices.js +0 -14
  159. package/dist/api/app/bsky/labeler/getServices.js.map +0 -1
  160. package/dist/api/app/bsky/labeler/index.d.ts +0 -4
  161. package/dist/api/app/bsky/labeler/index.d.ts.map +0 -1
  162. package/dist/api/app/bsky/labeler/index.js +0 -11
  163. package/dist/api/app/bsky/labeler/index.js.map +0 -1
  164. package/dist/api/app/bsky/notification/getUnreadCount.d.ts +0 -4
  165. package/dist/api/app/bsky/notification/getUnreadCount.d.ts.map +0 -1
  166. package/dist/api/app/bsky/notification/getUnreadCount.js +0 -17
  167. package/dist/api/app/bsky/notification/getUnreadCount.js.map +0 -1
  168. package/dist/api/app/bsky/notification/listNotifications.d.ts +0 -4
  169. package/dist/api/app/bsky/notification/listNotifications.d.ts.map +0 -1
  170. package/dist/api/app/bsky/notification/listNotifications.js +0 -17
  171. package/dist/api/app/bsky/notification/listNotifications.js.map +0 -1
  172. package/dist/api/app/bsky/notification/updateSeen.d.ts +0 -4
  173. package/dist/api/app/bsky/notification/updateSeen.d.ts.map +0 -1
  174. package/dist/api/app/bsky/notification/updateSeen.js +0 -14
  175. package/dist/api/app/bsky/notification/updateSeen.js.map +0 -1
  176. package/dist/api/app/bsky/unspecced/getPopularFeedGenerators.d.ts +0 -4
  177. package/dist/api/app/bsky/unspecced/getPopularFeedGenerators.d.ts.map +0 -1
  178. package/dist/api/app/bsky/unspecced/getPopularFeedGenerators.js +0 -18
  179. package/dist/api/app/bsky/unspecced/getPopularFeedGenerators.js.map +0 -1
  180. package/dist/api/app/bsky/unspecced/getTaggedSuggestions.d.ts +0 -4
  181. package/dist/api/app/bsky/unspecced/getTaggedSuggestions.d.ts.map +0 -1
  182. package/dist/api/app/bsky/unspecced/getTaggedSuggestions.js +0 -18
  183. package/dist/api/app/bsky/unspecced/getTaggedSuggestions.js.map +0 -1
  184. package/dist/api/app/bsky/unspecced/index.d.ts +0 -4
  185. package/dist/api/app/bsky/unspecced/index.d.ts.map +0 -1
  186. package/dist/api/app/bsky/unspecced/index.js +0 -14
  187. package/dist/api/app/bsky/unspecced/index.js.map +0 -1
  188. package/dist/api/com/atproto/moderation/createReport.d.ts +0 -4
  189. package/dist/api/com/atproto/moderation/createReport.d.ts.map +0 -1
  190. package/dist/api/com/atproto/moderation/createReport.js +0 -14
  191. package/dist/api/com/atproto/moderation/createReport.js.map +0 -1
  192. package/dist/api/com/atproto/moderation/index.d.ts +0 -4
  193. package/dist/api/com/atproto/moderation/index.d.ts.map +0 -1
  194. package/dist/api/com/atproto/moderation/index.js +0 -11
  195. package/dist/api/com/atproto/moderation/index.js.map +0 -1
  196. package/dist/api/tools/ozone/communication/createTemplate.d.ts +0 -4
  197. package/dist/api/tools/ozone/communication/createTemplate.d.ts.map +0 -1
  198. package/dist/api/tools/ozone/communication/createTemplate.js +0 -14
  199. package/dist/api/tools/ozone/communication/createTemplate.js.map +0 -1
  200. package/dist/api/tools/ozone/communication/deleteTemplate.d.ts +0 -4
  201. package/dist/api/tools/ozone/communication/deleteTemplate.d.ts.map +0 -1
  202. package/dist/api/tools/ozone/communication/deleteTemplate.js +0 -14
  203. package/dist/api/tools/ozone/communication/deleteTemplate.js.map +0 -1
  204. package/dist/api/tools/ozone/communication/index.d.ts +0 -4
  205. package/dist/api/tools/ozone/communication/index.d.ts.map +0 -1
  206. package/dist/api/tools/ozone/communication/index.js +0 -17
  207. package/dist/api/tools/ozone/communication/index.js.map +0 -1
  208. package/dist/api/tools/ozone/communication/listTemplates.d.ts +0 -4
  209. package/dist/api/tools/ozone/communication/listTemplates.d.ts.map +0 -1
  210. package/dist/api/tools/ozone/communication/listTemplates.js +0 -14
  211. package/dist/api/tools/ozone/communication/listTemplates.js.map +0 -1
  212. package/dist/api/tools/ozone/communication/updateTemplate.d.ts +0 -4
  213. package/dist/api/tools/ozone/communication/updateTemplate.d.ts.map +0 -1
  214. package/dist/api/tools/ozone/communication/updateTemplate.js +0 -14
  215. package/dist/api/tools/ozone/communication/updateTemplate.js.map +0 -1
  216. package/dist/api/tools/ozone/index.d.ts +0 -4
  217. package/dist/api/tools/ozone/index.d.ts.map +0 -1
  218. package/dist/api/tools/ozone/index.js +0 -13
  219. package/dist/api/tools/ozone/index.js.map +0 -1
  220. package/dist/api/tools/ozone/moderation/emitEvent.d.ts +0 -4
  221. package/dist/api/tools/ozone/moderation/emitEvent.d.ts.map +0 -1
  222. package/dist/api/tools/ozone/moderation/emitEvent.js +0 -14
  223. package/dist/api/tools/ozone/moderation/emitEvent.js.map +0 -1
  224. package/dist/api/tools/ozone/moderation/getEvent.d.ts +0 -4
  225. package/dist/api/tools/ozone/moderation/getEvent.d.ts.map +0 -1
  226. package/dist/api/tools/ozone/moderation/getEvent.js +0 -14
  227. package/dist/api/tools/ozone/moderation/getEvent.js.map +0 -1
  228. package/dist/api/tools/ozone/moderation/getRecord.d.ts +0 -4
  229. package/dist/api/tools/ozone/moderation/getRecord.d.ts.map +0 -1
  230. package/dist/api/tools/ozone/moderation/getRecord.js +0 -14
  231. package/dist/api/tools/ozone/moderation/getRecord.js.map +0 -1
  232. package/dist/api/tools/ozone/moderation/getRepo.d.ts +0 -4
  233. package/dist/api/tools/ozone/moderation/getRepo.d.ts.map +0 -1
  234. package/dist/api/tools/ozone/moderation/getRepo.js +0 -14
  235. package/dist/api/tools/ozone/moderation/getRepo.js.map +0 -1
  236. package/dist/api/tools/ozone/moderation/index.d.ts +0 -4
  237. package/dist/api/tools/ozone/moderation/index.d.ts.map +0 -1
  238. package/dist/api/tools/ozone/moderation/index.js +0 -23
  239. package/dist/api/tools/ozone/moderation/index.js.map +0 -1
  240. package/dist/api/tools/ozone/moderation/queryEvents.d.ts +0 -4
  241. package/dist/api/tools/ozone/moderation/queryEvents.d.ts.map +0 -1
  242. package/dist/api/tools/ozone/moderation/queryEvents.js +0 -14
  243. package/dist/api/tools/ozone/moderation/queryEvents.js.map +0 -1
  244. package/dist/api/tools/ozone/moderation/queryStatuses.d.ts +0 -4
  245. package/dist/api/tools/ozone/moderation/queryStatuses.d.ts.map +0 -1
  246. package/dist/api/tools/ozone/moderation/queryStatuses.js +0 -14
  247. package/dist/api/tools/ozone/moderation/queryStatuses.js.map +0 -1
  248. package/dist/api/tools/ozone/moderation/searchRepos.d.ts +0 -4
  249. package/dist/api/tools/ozone/moderation/searchRepos.d.ts.map +0 -1
  250. package/dist/api/tools/ozone/moderation/searchRepos.js +0 -14
  251. package/dist/api/tools/ozone/moderation/searchRepos.js.map +0 -1
  252. package/src/api/app/bsky/actor/getSuggestions.ts +0 -17
  253. package/src/api/app/bsky/actor/searchActors.ts +0 -15
  254. package/src/api/app/bsky/actor/searchActorsTypeahead.ts +0 -15
  255. package/src/api/app/bsky/feed/getActorFeeds.ts +0 -15
  256. package/src/api/app/bsky/feed/getFeedGenerator.ts +0 -15
  257. package/src/api/app/bsky/feed/getFeedGenerators.ts +0 -15
  258. package/src/api/app/bsky/feed/getLikes.ts +0 -15
  259. package/src/api/app/bsky/feed/getListFeed.ts +0 -15
  260. package/src/api/app/bsky/feed/getPosts.ts +0 -15
  261. package/src/api/app/bsky/feed/getRepostedBy.ts +0 -15
  262. package/src/api/app/bsky/feed/getSuggestedFeeds.ts +0 -15
  263. package/src/api/app/bsky/feed/searchPosts.ts +0 -15
  264. package/src/api/app/bsky/feed/sendInteractions.ts +0 -13
  265. package/src/api/app/bsky/graph/getBlocks.ts +0 -15
  266. package/src/api/app/bsky/graph/getFollowers.ts +0 -15
  267. package/src/api/app/bsky/graph/getFollows.ts +0 -15
  268. package/src/api/app/bsky/graph/getList.ts +0 -15
  269. package/src/api/app/bsky/graph/getListBlocks.ts +0 -15
  270. package/src/api/app/bsky/graph/getListMutes.ts +0 -15
  271. package/src/api/app/bsky/graph/getLists.ts +0 -15
  272. package/src/api/app/bsky/graph/getMutes.ts +0 -15
  273. package/src/api/app/bsky/graph/getSuggestedFollowsByActor.ts +0 -15
  274. package/src/api/app/bsky/graph/index.ts +0 -31
  275. package/src/api/app/bsky/graph/muteActor.ts +0 -13
  276. package/src/api/app/bsky/graph/muteActorList.ts +0 -13
  277. package/src/api/app/bsky/graph/unmuteActor.ts +0 -13
  278. package/src/api/app/bsky/graph/unmuteActorList.ts +0 -13
  279. package/src/api/app/bsky/labeler/getServices.ts +0 -13
  280. package/src/api/app/bsky/labeler/index.ts +0 -7
  281. package/src/api/app/bsky/notification/getUnreadCount.ts +0 -15
  282. package/src/api/app/bsky/notification/listNotifications.ts +0 -15
  283. package/src/api/app/bsky/notification/updateSeen.ts +0 -13
  284. package/src/api/app/bsky/unspecced/getPopularFeedGenerators.ts +0 -16
  285. package/src/api/app/bsky/unspecced/getTaggedSuggestions.ts +0 -16
  286. package/src/api/app/bsky/unspecced/index.ts +0 -10
  287. package/src/api/com/atproto/moderation/createReport.ts +0 -13
  288. package/src/api/com/atproto/moderation/index.ts +0 -7
  289. package/src/api/tools/ozone/communication/createTemplate.ts +0 -13
  290. package/src/api/tools/ozone/communication/deleteTemplate.ts +0 -13
  291. package/src/api/tools/ozone/communication/index.ts +0 -13
  292. package/src/api/tools/ozone/communication/listTemplates.ts +0 -13
  293. package/src/api/tools/ozone/communication/updateTemplate.ts +0 -13
  294. package/src/api/tools/ozone/index.ts +0 -9
  295. package/src/api/tools/ozone/moderation/emitEvent.ts +0 -13
  296. package/src/api/tools/ozone/moderation/getEvent.ts +0 -13
  297. package/src/api/tools/ozone/moderation/getRecord.ts +0 -13
  298. package/src/api/tools/ozone/moderation/getRepo.ts +0 -13
  299. package/src/api/tools/ozone/moderation/index.ts +0 -19
  300. package/src/api/tools/ozone/moderation/queryEvents.ts +0 -13
  301. package/src/api/tools/ozone/moderation/queryStatuses.ts +0 -13
  302. package/src/api/tools/ozone/moderation/searchRepos.ts +0 -13
package/src/index.ts CHANGED
@@ -8,12 +8,7 @@ import express from 'express'
8
8
  import cors from 'cors'
9
9
  import http from 'http'
10
10
  import events from 'events'
11
- import {
12
- RateLimiter,
13
- RateLimiterCreator,
14
- RateLimiterOpts,
15
- Options as XrpcServerOptions,
16
- } from '@atproto/xrpc-server'
11
+ import { Options as XrpcServerOptions } from '@atproto/xrpc-server'
17
12
  import { DAY, HOUR, MINUTE } from '@atproto/common'
18
13
  import API from './api'
19
14
  import * as basicRoutes from './basic-routes'
@@ -25,6 +20,7 @@ import { createServer } from './lexicon'
25
20
  import { createHttpTerminator, HttpTerminator } from 'http-terminator'
26
21
  import AppContext, { AppContextOptions } from './context'
27
22
  import compression from './util/compression'
23
+ import { proxyHandler } from './pipethrough'
28
24
 
29
25
  export * from './config'
30
26
  export { Database } from './db'
@@ -71,51 +67,31 @@ export class PDS {
71
67
  textLimit: 100 * 1024, // 100kb
72
68
  blobLimit: cfg.service.blobUploadLimit,
73
69
  },
74
- }
75
- if (cfg.rateLimits.enabled) {
76
- const bypassSecret = cfg.rateLimits.bypassKey
77
- const bypassIps = cfg.rateLimits.bypassIps
78
- let rlCreator: RateLimiterCreator
79
- if (cfg.rateLimits.mode === 'redis') {
80
- if (!ctx.redisScratch) {
81
- throw new Error('Redis not set up for ratelimiting mode: `redis`')
82
- }
83
- rlCreator = (opts: RateLimiterOpts) =>
84
- RateLimiter.redis(ctx.redisScratch, {
85
- bypassSecret,
86
- bypassIps,
87
- ...opts,
88
- })
89
- } else {
90
- rlCreator = (opts: RateLimiterOpts) =>
91
- RateLimiter.memory({
92
- bypassSecret,
93
- bypassIps,
94
- ...opts,
95
- })
96
- }
97
- xrpcOpts['rateLimits'] = {
98
- creator: rlCreator,
99
- global: [
100
- {
101
- name: 'global-ip',
102
- durationMs: 5 * MINUTE,
103
- points: 3000,
104
- },
105
- ],
106
- shared: [
107
- {
108
- name: 'repo-write-hour',
109
- durationMs: HOUR,
110
- points: 5000, // creates=3, puts=2, deletes=1
111
- },
112
- {
113
- name: 'repo-write-day',
114
- durationMs: DAY,
115
- points: 35000, // creates=3, puts=2, deletes=1
116
- },
117
- ],
118
- }
70
+ catchall: proxyHandler(ctx),
71
+ rateLimits: ctx.ratelimitCreator
72
+ ? {
73
+ creator: ctx.ratelimitCreator,
74
+ global: [
75
+ {
76
+ name: 'global-ip',
77
+ durationMs: 5 * MINUTE,
78
+ points: 3000,
79
+ },
80
+ ],
81
+ shared: [
82
+ {
83
+ name: 'repo-write-hour',
84
+ durationMs: HOUR,
85
+ points: 5000, // creates=3, puts=2, deletes=1
86
+ },
87
+ {
88
+ name: 'repo-write-day',
89
+ durationMs: DAY,
90
+ points: 35000, // creates=3, puts=2, deletes=1
91
+ },
92
+ ],
93
+ }
94
+ : undefined,
119
95
  }
120
96
 
121
97
  let server = createServer(xrpcOpts)
@@ -1,125 +1,67 @@
1
1
  import express from 'express'
2
2
  import * as ui8 from 'uint8arrays'
3
3
  import net from 'node:net'
4
- import { LexValue, jsonToLex, stringifyLex } from '@atproto/lexicon'
5
- import { HandlerPipeThrough, InvalidRequestError } from '@atproto/xrpc-server'
4
+ import stream from 'node:stream'
5
+ import webStream from 'node:stream/web'
6
+ import { jsonToLex } from '@atproto/lexicon'
7
+ import {
8
+ CatchallHandler,
9
+ HandlerPipeThrough,
10
+ InvalidRequestError,
11
+ } from '@atproto/xrpc-server'
6
12
  import { ResponseType, XRPCError } from '@atproto/xrpc'
7
13
  import { ids, lexicons } from './lexicon/lexicons'
8
14
  import { httpLogger } from './logger'
9
15
  import { getServiceEndpoint, noUndefinedVals } from '@atproto/common'
10
16
  import AppContext from './context'
11
17
 
12
- type PipethroughOptions = {
13
- /**
14
- * Request headers to pass-through, in addition to those defined in
15
- * {@link REQ_HEADERS_TO_FORWARD}
16
- */
17
- reqHeadersToForward?: string[]
18
- }
19
-
20
- const defaultService = (
21
- ctx: AppContext,
22
- path: string,
23
- ): { url: string; did: string } | null => {
24
- const nsid = path.replace('/xrpc/', '')
25
- switch (nsid) {
26
- case ids.ToolsOzoneCommunicationCreateTemplate:
27
- case ids.ToolsOzoneCommunicationDeleteTemplate:
28
- case ids.ToolsOzoneCommunicationUpdateTemplate:
29
- case ids.ToolsOzoneCommunicationListTemplates:
30
- case ids.ToolsOzoneModerationEmitEvent:
31
- case ids.ToolsOzoneModerationGetEvent:
32
- case ids.ToolsOzoneModerationGetRecord:
33
- case ids.ToolsOzoneModerationGetRepo:
34
- case ids.ToolsOzoneModerationQueryEvents:
35
- case ids.ToolsOzoneModerationQueryStatuses:
36
- case ids.ToolsOzoneModerationSearchRepos:
37
- return ctx.cfg.modService
38
- case ids.ComAtprotoModerationCreateReport:
39
- return ctx.cfg.reportService
40
- default:
41
- return ctx.cfg.bskyAppView
18
+ export const proxyHandler =
19
+ (ctx: AppContext): CatchallHandler =>
20
+ async (req, res, next) => {
21
+ try {
22
+ const { url, aud } = await formatUrlAndAud(ctx, req)
23
+ const auth = await ctx.authVerifier.access({ req })
24
+ const headers = await formatHeaders(ctx, req, aud, auth.credentials.did)
25
+ const body = stream.Readable.toWeb(req)
26
+ const reqInit = formatReqInit(req, headers, body)
27
+ const proxyRes = await makeRequest(url, reqInit)
28
+ await pipeProxyRes(proxyRes, res)
29
+ } catch (err) {
30
+ return next(err)
31
+ }
32
+ return next()
42
33
  }
43
- }
44
34
 
45
35
  export const pipethrough = async (
46
36
  ctx: AppContext,
47
37
  req: express.Request,
48
- requester?: string,
38
+ requester: string | null,
49
39
  audOverride?: string,
50
- options?: PipethroughOptions,
51
40
  ): Promise<HandlerPipeThrough> => {
52
- const { url, headers } = await createUrlAndHeaders(
53
- ctx,
54
- req,
55
- requester,
56
- audOverride,
57
- options,
58
- )
59
- const reqInit: RequestInit = {
60
- headers,
61
- }
62
- return doProxy(url, reqInit)
63
- }
64
-
65
- export const pipethroughProcedure = async (
66
- ctx: AppContext,
67
- req: express.Request,
68
- body: LexValue,
69
- requester?: string,
70
- audOverride?: string,
71
- ) => {
72
- const { url, headers } = await createUrlAndHeaders(
73
- ctx,
74
- req,
75
- requester,
76
- audOverride,
77
- )
78
- const reqInit: RequestInit & { duplex: string } = {
79
- method: 'post',
80
- headers,
81
- body: new TextEncoder().encode(stringifyLex(body)),
82
- duplex: 'half',
83
- }
84
- return doProxy(url, reqInit)
41
+ const { url, aud } = await formatUrlAndAud(ctx, req, audOverride)
42
+ const headers = await formatHeaders(ctx, req, aud, requester)
43
+ const reqInit = formatReqInit(req, headers)
44
+ const res = await makeRequest(url, reqInit)
45
+ return parseProxyRes(res)
85
46
  }
86
47
 
87
- export const parseProxyHeader = async (
88
- ctx: AppContext,
89
- req: express.Request,
90
- ): Promise<{ did: string; serviceUrl: string } | undefined> => {
91
- const proxyTo = req.header('atproto-proxy')
92
- if (!proxyTo) return
93
- const [did, serviceId] = proxyTo.split('#')
94
- if (!serviceId) {
95
- throw new InvalidRequestError('no service id specified')
96
- }
97
- const didDoc = await ctx.idResolver.did.resolve(did)
98
- if (!didDoc) {
99
- throw new InvalidRequestError('could not resolve proxy did')
100
- }
101
- const serviceUrl = getServiceEndpoint(didDoc, { id: `#${serviceId}` })
102
- if (!serviceUrl) {
103
- throw new InvalidRequestError('could not resolve proxy did service url')
104
- }
105
- return { did, serviceUrl }
106
- }
48
+ // Request setup/formatting
49
+ // -------------------
107
50
 
108
51
  const REQ_HEADERS_TO_FORWARD = [
109
52
  'accept-language',
110
53
  'content-type',
111
54
  'atproto-accept-labelers',
55
+ 'x-bsky-topics',
112
56
  ]
113
57
 
114
- export const createUrlAndHeaders = async (
58
+ export const formatUrlAndAud = async (
115
59
  ctx: AppContext,
116
60
  req: express.Request,
117
- requester?: string,
118
61
  audOverride?: string,
119
- options?: PipethroughOptions,
120
- ): Promise<{ url: URL; headers: { authorization?: string } }> => {
62
+ ): Promise<{ url: URL; aud: string }> => {
121
63
  const proxyTo = await parseProxyHeader(ctx, req)
122
- const defaultProxy = defaultService(ctx, req.path)
64
+ const defaultProxy = defaultService(ctx, req)
123
65
  const serviceUrl = proxyTo?.serviceUrl ?? defaultProxy?.url
124
66
  const aud = audOverride ?? proxyTo?.did ?? defaultProxy?.did
125
67
  if (!serviceUrl || !aud) {
@@ -129,34 +71,93 @@ export const createUrlAndHeaders = async (
129
71
  if (!ctx.cfg.service.devMode && !isSafeUrl(url)) {
130
72
  throw new InvalidRequestError(`Invalid service url: ${url.toString()}`)
131
73
  }
74
+ return { url, aud }
75
+ }
76
+
77
+ export const formatHeaders = async (
78
+ ctx: AppContext,
79
+ req: express.Request,
80
+ aud: string,
81
+ requester: string | null,
82
+ ): Promise<{ authorization?: string }> => {
132
83
  const headers = requester
133
84
  ? (await ctx.serviceAuthHeaders(requester, aud)).headers
134
85
  : {}
135
- const allowedHeaders = REQ_HEADERS_TO_FORWARD.concat(
136
- options?.reqHeadersToForward ?? [],
137
- )
138
86
  // forward select headers to upstream services
139
- for (const header of allowedHeaders) {
87
+ for (const header of REQ_HEADERS_TO_FORWARD) {
140
88
  const val = req.headers[header]
141
89
  if (val) {
142
90
  headers[header] = val
143
91
  }
144
92
  }
145
- return { url, headers }
93
+ return headers
94
+ }
95
+
96
+ const formatReqInit = (
97
+ req: express.Request,
98
+ headers: Record<string, string>,
99
+ body?: Uint8Array | ReadableStream,
100
+ ): RequestInit => {
101
+ if (req.method === 'GET') {
102
+ return {
103
+ method: 'get',
104
+ headers,
105
+ }
106
+ } else if (req.method === 'HEAD') {
107
+ return {
108
+ method: 'head',
109
+ headers,
110
+ }
111
+ } else if (req.method === 'POST') {
112
+ return {
113
+ method: 'post',
114
+ headers,
115
+ body,
116
+ duplex: 'half',
117
+ } as RequestInit
118
+ } else {
119
+ throw new InvalidRequestError('Method not found')
120
+ }
146
121
  }
147
122
 
148
- export const doProxy = async (url: URL, reqInit: RequestInit) => {
123
+ export const parseProxyHeader = async (
124
+ ctx: AppContext,
125
+ req: express.Request,
126
+ ): Promise<{ did: string; serviceUrl: string } | undefined> => {
127
+ const proxyTo = req.header('atproto-proxy')
128
+ if (!proxyTo) return
129
+ const [did, serviceId] = proxyTo.split('#')
130
+ if (!serviceId) {
131
+ throw new InvalidRequestError('no service id specified')
132
+ }
133
+ const didDoc = await ctx.idResolver.did.resolve(did)
134
+ if (!didDoc) {
135
+ throw new InvalidRequestError('could not resolve proxy did')
136
+ }
137
+ const serviceUrl = getServiceEndpoint(didDoc, { id: `#${serviceId}` })
138
+ if (!serviceUrl) {
139
+ throw new InvalidRequestError('could not resolve proxy did service url')
140
+ }
141
+ return { did, serviceUrl }
142
+ }
143
+
144
+ // Sending request
145
+ // -------------------
146
+
147
+ export const makeRequest = async (
148
+ url: URL,
149
+ reqInit: RequestInit,
150
+ ): Promise<Response> => {
149
151
  let res: Response
150
- let buffer: ArrayBuffer
151
152
  try {
152
153
  res = await fetch(url, reqInit)
153
- buffer = await res.arrayBuffer()
154
154
  } catch (err) {
155
155
  httpLogger.warn({ err }, 'pipethrough network error')
156
156
  throw new XRPCError(ResponseType.UpstreamFailure)
157
157
  }
158
158
  if (res.status !== ResponseType.Success) {
159
- const ui8Buffer = new Uint8Array(buffer)
159
+ const arrBuffer = await readArrayBufferRes(res)
160
+ const ui8Buffer = new Uint8Array(arrBuffer)
160
161
  const errInfo = safeParseJson(ui8.toString(ui8Buffer, 'utf8'))
161
162
  throw new XRPCError(
162
163
  res.status,
@@ -165,33 +166,86 @@ export const doProxy = async (url: URL, reqInit: RequestInit) => {
165
166
  simpleHeaders(res.headers),
166
167
  )
167
168
  }
168
- const encoding = res.headers.get('content-type') ?? 'application/json'
169
- const resHeaders = makeResHeaders(res)
170
- return { encoding, buffer, headers: resHeaders }
169
+ return res
171
170
  }
172
171
 
172
+ // Response parsing/forwarding
173
+ // -------------------
174
+
173
175
  const RES_HEADERS_TO_FORWARD = [
174
- 'atproto-repo-rev',
176
+ 'content-type',
175
177
  'content-language',
178
+ 'atproto-repo-rev',
176
179
  'atproto-content-labelers',
177
180
  ]
178
181
 
179
- const makeResHeaders = (res: Response): Record<string, string> => {
180
- const headers = RES_HEADERS_TO_FORWARD.reduce(
182
+ export const pipeProxyRes = async (
183
+ upstreamRes: Response,
184
+ ownRes: express.Response,
185
+ ) => {
186
+ for (const headerName of RES_HEADERS_TO_FORWARD) {
187
+ const headerVal = upstreamRes.headers.get(headerName)
188
+ if (headerVal) {
189
+ ownRes.setHeader(headerName, headerVal)
190
+ }
191
+ }
192
+ if (upstreamRes.body) {
193
+ const contentLength = upstreamRes.headers.get('content-length')
194
+ const contentEncoding = upstreamRes.headers.get('content-encoding')
195
+ if (contentLength && (!contentEncoding || contentEncoding === 'identity')) {
196
+ ownRes.setHeader('content-length', contentLength)
197
+ } else {
198
+ ownRes.setHeader('transfer-encoding', 'chunked')
199
+ }
200
+ ownRes.status(200)
201
+ const resStream = stream.Readable.fromWeb(
202
+ upstreamRes.body as webStream.ReadableStream<Uint8Array>,
203
+ )
204
+ await stream.promises.pipeline(resStream, ownRes)
205
+ } else {
206
+ ownRes.status(200).end()
207
+ }
208
+ }
209
+
210
+ export const parseProxyRes = async (res: Response) => {
211
+ const buffer = await readArrayBufferRes(res)
212
+ const encoding = res.headers.get('content-type') ?? 'application/json'
213
+ const resHeaders = RES_HEADERS_TO_FORWARD.reduce(
181
214
  (acc, cur) => {
182
215
  acc[cur] = res.headers.get(cur) ?? undefined
183
216
  return acc
184
217
  },
185
218
  {} as Record<string, string | undefined>,
186
219
  )
187
- return noUndefinedVals(headers)
220
+ return { encoding, buffer, headers: noUndefinedVals(resHeaders) }
188
221
  }
189
222
 
190
- const isSafeUrl = (url: URL) => {
191
- if (url.protocol !== 'https:') return false
192
- if (!url.hostname || url.hostname === 'localhost') return false
193
- if (net.isIP(url.hostname) !== 0) return false
194
- return true
223
+ // Utils
224
+ // -------------------
225
+
226
+ const defaultService = (
227
+ ctx: AppContext,
228
+ req: express.Request,
229
+ ): { url: string; did: string } | null => {
230
+ const nsid = req.originalUrl.split('?')[0].replace('/xrpc/', '')
231
+ switch (nsid) {
232
+ case ids.ToolsOzoneCommunicationCreateTemplate:
233
+ case ids.ToolsOzoneCommunicationDeleteTemplate:
234
+ case ids.ToolsOzoneCommunicationUpdateTemplate:
235
+ case ids.ToolsOzoneCommunicationListTemplates:
236
+ case ids.ToolsOzoneModerationEmitEvent:
237
+ case ids.ToolsOzoneModerationGetEvent:
238
+ case ids.ToolsOzoneModerationGetRecord:
239
+ case ids.ToolsOzoneModerationGetRepo:
240
+ case ids.ToolsOzoneModerationQueryEvents:
241
+ case ids.ToolsOzoneModerationQueryStatuses:
242
+ case ids.ToolsOzoneModerationSearchRepos:
243
+ return ctx.cfg.modService
244
+ case ids.ComAtprotoModerationCreateReport:
245
+ return ctx.cfg.reportService
246
+ default:
247
+ return ctx.cfg.bskyAppView
248
+ }
195
249
  }
196
250
 
197
251
  export const parseRes = <T>(nsid: string, res: HandlerPipeThrough): T => {
@@ -201,6 +255,22 @@ export const parseRes = <T>(nsid: string, res: HandlerPipeThrough): T => {
201
255
  return lexicons.assertValidXrpcOutput(nsid, lex) as T
202
256
  }
203
257
 
258
+ const readArrayBufferRes = async (res: Response): Promise<ArrayBuffer> => {
259
+ try {
260
+ return await res.arrayBuffer()
261
+ } catch (err) {
262
+ httpLogger.warn({ err }, 'pipethrough network error')
263
+ throw new XRPCError(ResponseType.UpstreamFailure)
264
+ }
265
+ }
266
+
267
+ const isSafeUrl = (url: URL) => {
268
+ if (url.protocol !== 'https:') return false
269
+ if (!url.hostname || url.hostname === 'localhost') return false
270
+ if (net.isIP(url.hostname) !== 0) return false
271
+ return true
272
+ }
273
+
204
274
  const safeString = (str: string): string | undefined => {
205
275
  return typeof str === 'string' ? str : undefined
206
276
  }
@@ -1,4 +0,0 @@
1
- import { Server } from '../../../../lexicon';
2
- import AppContext from '../../../../context';
3
- export default function (server: Server, ctx: AppContext): void;
4
- //# sourceMappingURL=getSuggestions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getSuggestions.d.ts","sourceRoot":"","sources":["../../../../../src/api/app/bsky/actor/getSuggestions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,UAAU,MAAM,qBAAqB,CAAA;AAG5C,MAAM,CAAC,OAAO,WAAW,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,QAYvD"}
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const pipethrough_1 = require("../../../../pipethrough");
4
- function default_1(server, ctx) {
5
- const { bskyAppView } = ctx.cfg;
6
- if (!bskyAppView)
7
- return;
8
- server.app.bsky.actor.getSuggestions({
9
- auth: ctx.authVerifier.access,
10
- handler: async ({ req, auth }) => {
11
- const requester = auth.credentials.did;
12
- return (0, pipethrough_1.pipethrough)(ctx, req, requester, undefined, {
13
- reqHeadersToForward: ['x-bsky-topics'],
14
- });
15
- },
16
- });
17
- }
18
- exports.default = default_1;
19
- //# sourceMappingURL=getSuggestions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getSuggestions.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/actor/getSuggestions.ts"],"names":[],"mappings":";;AAEA,yDAAqD;AAErD,mBAAyB,MAAc,EAAE,GAAe;IACtD,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,GAAG,CAAA;IAC/B,IAAI,CAAC,WAAW;QAAE,OAAM;IACxB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;QACnC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,MAAM;QAC7B,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE;YAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAA;YACtC,OAAO,IAAA,yBAAW,EAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE;gBACjD,mBAAmB,EAAE,CAAC,eAAe,CAAC;aACvC,CAAC,CAAA;QACJ,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAZD,4BAYC"}
@@ -1,4 +0,0 @@
1
- import { Server } from '../../../../lexicon';
2
- import AppContext from '../../../../context';
3
- export default function (server: Server, ctx: AppContext): void;
4
- //# sourceMappingURL=searchActors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"searchActors.d.ts","sourceRoot":"","sources":["../../../../../src/api/app/bsky/actor/searchActors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,UAAU,MAAM,qBAAqB,CAAA;AAG5C,MAAM,CAAC,OAAO,WAAW,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,QAUvD"}
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const pipethrough_1 = require("../../../../pipethrough");
4
- function default_1(server, ctx) {
5
- const { bskyAppView } = ctx.cfg;
6
- if (!bskyAppView)
7
- return;
8
- server.app.bsky.actor.searchActors({
9
- auth: ctx.authVerifier.access,
10
- handler: async ({ req, auth }) => {
11
- const requester = auth.credentials.did;
12
- return (0, pipethrough_1.pipethrough)(ctx, req, requester);
13
- },
14
- });
15
- }
16
- exports.default = default_1;
17
- //# sourceMappingURL=searchActors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"searchActors.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/actor/searchActors.ts"],"names":[],"mappings":";;AAEA,yDAAqD;AAErD,mBAAyB,MAAc,EAAE,GAAe;IACtD,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,GAAG,CAAA;IAC/B,IAAI,CAAC,WAAW;QAAE,OAAM;IACxB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;QACjC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,MAAM;QAC7B,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE;YAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAA;YACtC,OAAO,IAAA,yBAAW,EAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAA;QACzC,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAVD,4BAUC"}
@@ -1,4 +0,0 @@
1
- import { Server } from '../../../../lexicon';
2
- import AppContext from '../../../../context';
3
- export default function (server: Server, ctx: AppContext): void;
4
- //# sourceMappingURL=searchActorsTypeahead.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"searchActorsTypeahead.d.ts","sourceRoot":"","sources":["../../../../../src/api/app/bsky/actor/searchActorsTypeahead.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,UAAU,MAAM,qBAAqB,CAAA;AAG5C,MAAM,CAAC,OAAO,WAAW,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,QAUvD"}
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const pipethrough_1 = require("../../../../pipethrough");
4
- function default_1(server, ctx) {
5
- const { bskyAppView } = ctx.cfg;
6
- if (!bskyAppView)
7
- return;
8
- server.app.bsky.actor.searchActorsTypeahead({
9
- auth: ctx.authVerifier.access,
10
- handler: async ({ req, auth }) => {
11
- const requester = auth.credentials.did;
12
- return (0, pipethrough_1.pipethrough)(ctx, req, requester);
13
- },
14
- });
15
- }
16
- exports.default = default_1;
17
- //# sourceMappingURL=searchActorsTypeahead.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"searchActorsTypeahead.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/actor/searchActorsTypeahead.ts"],"names":[],"mappings":";;AAEA,yDAAqD;AAErD,mBAAyB,MAAc,EAAE,GAAe;IACtD,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,GAAG,CAAA;IAC/B,IAAI,CAAC,WAAW;QAAE,OAAM;IACxB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC;QAC1C,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,MAAM;QAC7B,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE;YAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAA;YACtC,OAAO,IAAA,yBAAW,EAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAA;QACzC,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAVD,4BAUC"}
@@ -1,4 +0,0 @@
1
- import { Server } from '../../../../lexicon';
2
- import AppContext from '../../../../context';
3
- export default function (server: Server, ctx: AppContext): void;
4
- //# sourceMappingURL=getActorFeeds.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getActorFeeds.d.ts","sourceRoot":"","sources":["../../../../../src/api/app/bsky/feed/getActorFeeds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,UAAU,MAAM,qBAAqB,CAAA;AAG5C,MAAM,CAAC,OAAO,WAAW,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,QAUvD"}
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const pipethrough_1 = require("../../../../pipethrough");
4
- function default_1(server, ctx) {
5
- const { bskyAppView } = ctx.cfg;
6
- if (!bskyAppView)
7
- return;
8
- server.app.bsky.feed.getActorFeeds({
9
- auth: ctx.authVerifier.access,
10
- handler: async ({ req, auth }) => {
11
- const requester = auth.credentials.did;
12
- return (0, pipethrough_1.pipethrough)(ctx, req, requester);
13
- },
14
- });
15
- }
16
- exports.default = default_1;
17
- //# sourceMappingURL=getActorFeeds.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getActorFeeds.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/feed/getActorFeeds.ts"],"names":[],"mappings":";;AAEA,yDAAqD;AAErD,mBAAyB,MAAc,EAAE,GAAe;IACtD,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,GAAG,CAAA;IAC/B,IAAI,CAAC,WAAW;QAAE,OAAM;IACxB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;QACjC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,MAAM;QAC7B,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE;YAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAA;YACtC,OAAO,IAAA,yBAAW,EAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAA;QACzC,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAVD,4BAUC"}
@@ -1,4 +0,0 @@
1
- import { Server } from '../../../../lexicon';
2
- import AppContext from '../../../../context';
3
- export default function (server: Server, ctx: AppContext): void;
4
- //# sourceMappingURL=getFeedGenerator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getFeedGenerator.d.ts","sourceRoot":"","sources":["../../../../../src/api/app/bsky/feed/getFeedGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,UAAU,MAAM,qBAAqB,CAAA;AAG5C,MAAM,CAAC,OAAO,WAAW,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,QAUvD"}
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const pipethrough_1 = require("../../../../pipethrough");
4
- function default_1(server, ctx) {
5
- const { bskyAppView } = ctx.cfg;
6
- if (!bskyAppView)
7
- return;
8
- server.app.bsky.feed.getFeedGenerator({
9
- auth: ctx.authVerifier.access,
10
- handler: async ({ req, auth }) => {
11
- const requester = auth.credentials.did;
12
- return (0, pipethrough_1.pipethrough)(ctx, req, requester);
13
- },
14
- });
15
- }
16
- exports.default = default_1;
17
- //# sourceMappingURL=getFeedGenerator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getFeedGenerator.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/feed/getFeedGenerator.ts"],"names":[],"mappings":";;AAEA,yDAAqD;AAErD,mBAAyB,MAAc,EAAE,GAAe;IACtD,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,GAAG,CAAA;IAC/B,IAAI,CAAC,WAAW;QAAE,OAAM;IACxB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;QACpC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,MAAM;QAC7B,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE;YAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAA;YACtC,OAAO,IAAA,yBAAW,EAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAA;QACzC,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAVD,4BAUC"}
@@ -1,4 +0,0 @@
1
- import { Server } from '../../../../lexicon';
2
- import AppContext from '../../../../context';
3
- export default function (server: Server, ctx: AppContext): void;
4
- //# sourceMappingURL=getFeedGenerators.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getFeedGenerators.d.ts","sourceRoot":"","sources":["../../../../../src/api/app/bsky/feed/getFeedGenerators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,UAAU,MAAM,qBAAqB,CAAA;AAG5C,MAAM,CAAC,OAAO,WAAW,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,QAUvD"}