@atproto/bsky 0.0.250 → 0.0.253

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 (473) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/dist/api/age-assurance/const.js +19 -19
  3. package/dist/api/age-assurance/const.js.map +1 -1
  4. package/dist/api/app/bsky/feed/getFeed.d.ts.map +1 -1
  5. package/dist/api/app/bsky/feed/getFeed.js +4 -0
  6. package/dist/api/app/bsky/feed/getFeed.js.map +1 -1
  7. package/dist/api/app/bsky/feed/searchPosts.js +5 -0
  8. package/dist/api/app/bsky/feed/searchPosts.js.map +1 -1
  9. package/dist/api/app/bsky/feed/searchPostsV2.js +5 -0
  10. package/dist/api/app/bsky/feed/searchPostsV2.js.map +1 -1
  11. package/dist/config.d.ts +2 -0
  12. package/dist/config.d.ts.map +1 -1
  13. package/dist/config.js +5 -0
  14. package/dist/config.js.map +1 -1
  15. package/dist/hydration/feed.d.ts +1 -2
  16. package/dist/hydration/feed.d.ts.map +1 -1
  17. package/dist/hydration/feed.js.map +1 -1
  18. package/dist/kws.d.ts +8 -0
  19. package/dist/kws.d.ts.map +1 -1
  20. package/dist/kws.js +53 -4
  21. package/dist/kws.js.map +1 -1
  22. package/package.json +28 -23
  23. package/bin/migration-create.ts +0 -46
  24. package/buf.gen.yaml +0 -12
  25. package/proto/bsky.proto +0 -1907
  26. package/proto/courier.proto +0 -84
  27. package/proto/rolodex.proto +0 -116
  28. package/src/api/age-assurance/const.ts +0 -203
  29. package/src/api/age-assurance/index.ts +0 -34
  30. package/src/api/age-assurance/kws/age-verified.test.ts +0 -98
  31. package/src/api/age-assurance/kws/age-verified.ts +0 -81
  32. package/src/api/age-assurance/kws/const.ts +0 -33
  33. package/src/api/age-assurance/kws/external-payload.test.ts +0 -72
  34. package/src/api/age-assurance/kws/external-payload.ts +0 -149
  35. package/src/api/age-assurance/redirects/kws-age-verified.ts +0 -107
  36. package/src/api/age-assurance/stash.ts +0 -23
  37. package/src/api/age-assurance/types.ts +0 -10
  38. package/src/api/age-assurance/util.ts +0 -68
  39. package/src/api/age-assurance/webhooks/kws-age-verified.ts +0 -75
  40. package/src/api/app/bsky/actor/getProfile.ts +0 -106
  41. package/src/api/app/bsky/actor/getProfiles.ts +0 -99
  42. package/src/api/app/bsky/actor/getSuggestions.ts +0 -163
  43. package/src/api/app/bsky/actor/searchActors.ts +0 -171
  44. package/src/api/app/bsky/actor/searchActorsTypeahead.ts +0 -164
  45. package/src/api/app/bsky/ageassurance/begin.ts +0 -175
  46. package/src/api/app/bsky/ageassurance/getConfig.ts +0 -16
  47. package/src/api/app/bsky/ageassurance/getState.ts +0 -58
  48. package/src/api/app/bsky/bookmark/createBookmark.ts +0 -39
  49. package/src/api/app/bsky/bookmark/deleteBookmark.ts +0 -32
  50. package/src/api/app/bsky/bookmark/getBookmarks.ts +0 -97
  51. package/src/api/app/bsky/bookmark/util.ts +0 -13
  52. package/src/api/app/bsky/contact/dismissMatch.ts +0 -26
  53. package/src/api/app/bsky/contact/getMatches.ts +0 -111
  54. package/src/api/app/bsky/contact/getSyncStatus.ts +0 -38
  55. package/src/api/app/bsky/contact/importContacts.ts +0 -119
  56. package/src/api/app/bsky/contact/removeData.ts +0 -25
  57. package/src/api/app/bsky/contact/sendNotification.ts +0 -33
  58. package/src/api/app/bsky/contact/startPhoneVerification.ts +0 -26
  59. package/src/api/app/bsky/contact/util.ts +0 -92
  60. package/src/api/app/bsky/contact/verifyPhone.ts +0 -29
  61. package/src/api/app/bsky/draft/createDraft.ts +0 -45
  62. package/src/api/app/bsky/draft/deleteDraft.ts +0 -20
  63. package/src/api/app/bsky/draft/getDrafts.ts +0 -44
  64. package/src/api/app/bsky/draft/updateDraft.ts +0 -26
  65. package/src/api/app/bsky/embed/getEmbedExternalView.ts +0 -154
  66. package/src/api/app/bsky/feed/getActorFeeds.ts +0 -101
  67. package/src/api/app/bsky/feed/getActorLikes.ts +0 -128
  68. package/src/api/app/bsky/feed/getAuthorFeed.ts +0 -279
  69. package/src/api/app/bsky/feed/getFeed.ts +0 -277
  70. package/src/api/app/bsky/feed/getFeedGenerator.ts +0 -68
  71. package/src/api/app/bsky/feed/getFeedGenerators.ts +0 -86
  72. package/src/api/app/bsky/feed/getLikes.ts +0 -151
  73. package/src/api/app/bsky/feed/getListFeed.ts +0 -147
  74. package/src/api/app/bsky/feed/getPostThread.ts +0 -156
  75. package/src/api/app/bsky/feed/getPosts.ts +0 -100
  76. package/src/api/app/bsky/feed/getQuotes.ts +0 -122
  77. package/src/api/app/bsky/feed/getRepostedBy.ts +0 -121
  78. package/src/api/app/bsky/feed/getSuggestedFeeds.ts +0 -39
  79. package/src/api/app/bsky/feed/getTimeline.ts +0 -127
  80. package/src/api/app/bsky/feed/searchPosts.ts +0 -267
  81. package/src/api/app/bsky/feed/searchPostsV2.ts +0 -236
  82. package/src/api/app/bsky/graph/getActorStarterPacks.ts +0 -103
  83. package/src/api/app/bsky/graph/getBlocks.ts +0 -94
  84. package/src/api/app/bsky/graph/getFollowers.ts +0 -153
  85. package/src/api/app/bsky/graph/getFollows.ts +0 -151
  86. package/src/api/app/bsky/graph/getKnownFollowers.ts +0 -123
  87. package/src/api/app/bsky/graph/getList.ts +0 -152
  88. package/src/api/app/bsky/graph/getListBlocks.ts +0 -87
  89. package/src/api/app/bsky/graph/getListMutes.ts +0 -87
  90. package/src/api/app/bsky/graph/getLists.ts +0 -125
  91. package/src/api/app/bsky/graph/getListsWithMembership.ts +0 -146
  92. package/src/api/app/bsky/graph/getMutes.ts +0 -87
  93. package/src/api/app/bsky/graph/getRelationships.ts +0 -58
  94. package/src/api/app/bsky/graph/getStarterPack.ts +0 -82
  95. package/src/api/app/bsky/graph/getStarterPacks.ts +0 -86
  96. package/src/api/app/bsky/graph/getStarterPacksWithMembership.ts +0 -136
  97. package/src/api/app/bsky/graph/getSuggestedFollowsByActor.ts +0 -171
  98. package/src/api/app/bsky/graph/muteActor.ts +0 -24
  99. package/src/api/app/bsky/graph/muteActorList.ts +0 -19
  100. package/src/api/app/bsky/graph/muteThread.ts +0 -19
  101. package/src/api/app/bsky/graph/searchStarterPacks.ts +0 -169
  102. package/src/api/app/bsky/graph/unmuteActor.ts +0 -21
  103. package/src/api/app/bsky/graph/unmuteActorList.ts +0 -19
  104. package/src/api/app/bsky/graph/unmuteThread.ts +0 -19
  105. package/src/api/app/bsky/labeler/getServices.ts +0 -41
  106. package/src/api/app/bsky/notification/getPreferences.ts +0 -49
  107. package/src/api/app/bsky/notification/getUnreadCount.ts +0 -83
  108. package/src/api/app/bsky/notification/listActivitySubscriptions.ts +0 -116
  109. package/src/api/app/bsky/notification/listNotifications.ts +0 -272
  110. package/src/api/app/bsky/notification/putActivitySubscription.ts +0 -69
  111. package/src/api/app/bsky/notification/putPreferences.ts +0 -17
  112. package/src/api/app/bsky/notification/putPreferencesV2.ts +0 -64
  113. package/src/api/app/bsky/notification/registerPush.ts +0 -40
  114. package/src/api/app/bsky/notification/unregisterPush.ts +0 -39
  115. package/src/api/app/bsky/notification/updateSeen.ts +0 -52
  116. package/src/api/app/bsky/notification/util.ts +0 -134
  117. package/src/api/app/bsky/unspecced/getAgeAssuranceState.ts +0 -48
  118. package/src/api/app/bsky/unspecced/getConfig.ts +0 -20
  119. package/src/api/app/bsky/unspecced/getOnboardingSuggestedStarterPacks.ts +0 -162
  120. package/src/api/app/bsky/unspecced/getPopularFeedGenerators.ts +0 -91
  121. package/src/api/app/bsky/unspecced/getPostThreadOtherV2.ts +0 -126
  122. package/src/api/app/bsky/unspecced/getPostThreadV2.ts +0 -148
  123. package/src/api/app/bsky/unspecced/getSuggestedFeeds.ts +0 -100
  124. package/src/api/app/bsky/unspecced/getSuggestedOnboardingUsers.ts +0 -143
  125. package/src/api/app/bsky/unspecced/getSuggestedStarterPacks.ts +0 -165
  126. package/src/api/app/bsky/unspecced/getSuggestedUsers.ts +0 -183
  127. package/src/api/app/bsky/unspecced/getSuggestedUsersForDiscover.ts +0 -175
  128. package/src/api/app/bsky/unspecced/getSuggestedUsersForExplore.ts +0 -178
  129. package/src/api/app/bsky/unspecced/getSuggestedUsersForSeeMore.ts +0 -178
  130. package/src/api/app/bsky/unspecced/getTaggedSuggestions.ts +0 -27
  131. package/src/api/app/bsky/unspecced/getTrendingTopics.ts +0 -96
  132. package/src/api/app/bsky/unspecced/getTrends.ts +0 -162
  133. package/src/api/app/bsky/unspecced/initAgeAssurance.ts +0 -150
  134. package/src/api/blob-dispatcher.ts +0 -41
  135. package/src/api/blob-resolver.ts +0 -401
  136. package/src/api/com/atproto/admin/getAccountInfos.ts +0 -49
  137. package/src/api/com/atproto/admin/getSubjectStatus.ts +0 -79
  138. package/src/api/com/atproto/admin/updateSubjectStatus.ts +0 -80
  139. package/src/api/com/atproto/identity/resolveHandle.ts +0 -19
  140. package/src/api/com/atproto/label/queryLabels.ts +0 -42
  141. package/src/api/com/atproto/repo/getRecord.ts +0 -44
  142. package/src/api/com/atproto/temp/fetchLabels.ts +0 -9
  143. package/src/api/external.ts +0 -15
  144. package/src/api/health.ts +0 -47
  145. package/src/api/index.ts +0 -216
  146. package/src/api/internal/bsky/actor/getProfiles.ts +0 -87
  147. package/src/api/kws/api.ts +0 -113
  148. package/src/api/kws/index.ts +0 -29
  149. package/src/api/kws/types.ts +0 -78
  150. package/src/api/kws/util.test.ts +0 -50
  151. package/src/api/kws/util.ts +0 -109
  152. package/src/api/kws/webhook.ts +0 -134
  153. package/src/api/sitemap.ts +0 -76
  154. package/src/api/util.ts +0 -45
  155. package/src/api/well-known.ts +0 -44
  156. package/src/auth-verifier.ts +0 -522
  157. package/src/bsync.ts +0 -41
  158. package/src/cache/read-through.ts +0 -157
  159. package/src/config.ts +0 -710
  160. package/src/context.ts +0 -143
  161. package/src/courier.ts +0 -41
  162. package/src/data-plane/client/hosts.ts +0 -103
  163. package/src/data-plane/client/index.ts +0 -125
  164. package/src/data-plane/client/util.test.ts +0 -29
  165. package/src/data-plane/client/util.ts +0 -74
  166. package/src/data-plane/index.ts +0 -2
  167. package/src/data-plane/server/background.ts +0 -66
  168. package/src/data-plane/server/bsync-subscription.ts +0 -590
  169. package/src/data-plane/server/db/database-schema.ts +0 -90
  170. package/src/data-plane/server/db/db.ts +0 -204
  171. package/src/data-plane/server/db/index.ts +0 -2
  172. package/src/data-plane/server/db/migrations/20230309T045948368Z-init.ts +0 -305
  173. package/src/data-plane/server/db/migrations/20230408T152211201Z-notification-init.ts +0 -25
  174. package/src/data-plane/server/db/migrations/20230417T210628672Z-moderation-init.ts +0 -127
  175. package/src/data-plane/server/db/migrations/20230420T211446071Z-did-cache.ts +0 -14
  176. package/src/data-plane/server/db/migrations/20230427T194702079Z-notif-record-index.ts +0 -14
  177. package/src/data-plane/server/db/migrations/20230605T144730094Z-post-profile-aggs.ts +0 -23
  178. package/src/data-plane/server/db/migrations/20230607T211442112Z-feed-generator-init.ts +0 -34
  179. package/src/data-plane/server/db/migrations/20230608T155101190Z-algo-whats-hot-view.ts +0 -85
  180. package/src/data-plane/server/db/migrations/20230608T201813132Z-mute-lists.ts +0 -78
  181. package/src/data-plane/server/db/migrations/20230608T205147239Z-mutes.ts +0 -15
  182. package/src/data-plane/server/db/migrations/20230609T153623961Z-blocks.ts +0 -33
  183. package/src/data-plane/server/db/migrations/20230609T232122649Z-actor-deletion-indexes.ts +0 -27
  184. package/src/data-plane/server/db/migrations/20230610T203555962Z-suggested-follows.ts +0 -13
  185. package/src/data-plane/server/db/migrations/20230611T215300060Z-actor-state.ts +0 -13
  186. package/src/data-plane/server/db/migrations/20230620T161134972Z-post-langs.ts +0 -9
  187. package/src/data-plane/server/db/migrations/20230627T212437895Z-optional-handle.ts +0 -15
  188. package/src/data-plane/server/db/migrations/20230629T220835893Z-remove-post-hierarchy.ts +0 -32
  189. package/src/data-plane/server/db/migrations/20230703T045536691Z-feed-and-label-indices.ts +0 -31
  190. package/src/data-plane/server/db/migrations/20230720T164800037Z-posts-cursor-idx.ts +0 -19
  191. package/src/data-plane/server/db/migrations/20230807T035309811Z-feed-item-delete-invite-for-user-idx.ts +0 -14
  192. package/src/data-plane/server/db/migrations/20230808T172902639Z-repo-rev.ts +0 -12
  193. package/src/data-plane/server/db/migrations/20230810T203349843Z-action-duration.ts +0 -23
  194. package/src/data-plane/server/db/migrations/20230817T195936007Z-native-notifications.ts +0 -16
  195. package/src/data-plane/server/db/migrations/20230830T205507322Z-suggested-feeds.ts +0 -13
  196. package/src/data-plane/server/db/migrations/20230904T211011773Z-block-lists.ts +0 -24
  197. package/src/data-plane/server/db/migrations/20230906T222220386Z-thread-gating.ts +0 -27
  198. package/src/data-plane/server/db/migrations/20230920T213858047Z-add-tags-to-post.ts +0 -9
  199. package/src/data-plane/server/db/migrations/20230929T192920807Z-record-cursor-indexes.ts +0 -40
  200. package/src/data-plane/server/db/migrations/20231003T202833377Z-create-moderation-subject-status.ts +0 -123
  201. package/src/data-plane/server/db/migrations/20231220T225126090Z-blob-takedowns.ts +0 -66
  202. package/src/data-plane/server/db/migrations/20240124T023719200Z-tagged-suggestions.ts +0 -15
  203. package/src/data-plane/server/db/migrations/20240226T225725627Z-labelers.ts +0 -27
  204. package/src/data-plane/server/db/migrations/20240530T170337073Z-account-deactivation.ts +0 -12
  205. package/src/data-plane/server/db/migrations/20240606T171229898Z-thread-mutes.ts +0 -15
  206. package/src/data-plane/server/db/migrations/20240606T222548219Z-starter-packs.ts +0 -45
  207. package/src/data-plane/server/db/migrations/20240719T203853939Z-priority-notifs.ts +0 -25
  208. package/src/data-plane/server/db/migrations/20240723T220700077Z-quotes-post-aggs.ts +0 -12
  209. package/src/data-plane/server/db/migrations/20240723T220703655Z-quotes.ts +0 -28
  210. package/src/data-plane/server/db/migrations/20240801T193939827Z-post-gate.ts +0 -17
  211. package/src/data-plane/server/db/migrations/20240808T224251220Z-post-gate-flags.ts +0 -25
  212. package/src/data-plane/server/db/migrations/20240829T211238293Z-simplify-actor-sync.ts +0 -23
  213. package/src/data-plane/server/db/migrations/20240831T134810923Z-pinned-posts.ts +0 -17
  214. package/src/data-plane/server/db/migrations/20241114T153108102Z-add-starter-packs-name.ts +0 -19
  215. package/src/data-plane/server/db/migrations/20250116T222618297Z-post-embed-video.ts +0 -17
  216. package/src/data-plane/server/db/migrations/20250207T174822012Z-add-label-exp.ts +0 -9
  217. package/src/data-plane/server/db/migrations/20250404T163421487Z-verifications.ts +0 -39
  218. package/src/data-plane/server/db/migrations/20250526T023712742Z-like-repost-via.ts +0 -17
  219. package/src/data-plane/server/db/migrations/20250528T221913281Z-add-record-tags.ts +0 -9
  220. package/src/data-plane/server/db/migrations/20250602T190357447Z-add-private-data.ts +0 -22
  221. package/src/data-plane/server/db/migrations/20250611T140649895Z-add-activity-subscription.ts +0 -22
  222. package/src/data-plane/server/db/migrations/20250627T025331240Z-add-actor-age-assurance-columns.ts +0 -22
  223. package/src/data-plane/server/db/migrations/20250812T183735692Z-add-bookmarks.ts +0 -23
  224. package/src/data-plane/server/db/migrations/20250813T174955711Z-add-post-agg-bookmarks.ts +0 -12
  225. package/src/data-plane/server/db/migrations/20251120T004738098Z-update-actor-age-assurance-v2.ts +0 -28
  226. package/src/data-plane/server/db/migrations/20260112T133951271Z-add-drafts.ts +0 -24
  227. package/src/data-plane/server/db/migrations/20260604T224952774Z-post-embed-gallery-image.ts +0 -19
  228. package/src/data-plane/server/db/migrations/index.ts +0 -60
  229. package/src/data-plane/server/db/migrations/provider.ts +0 -26
  230. package/src/data-plane/server/db/pagination.ts +0 -341
  231. package/src/data-plane/server/db/tables/activity-subscription.ts +0 -12
  232. package/src/data-plane/server/db/tables/actor-block.ts +0 -14
  233. package/src/data-plane/server/db/tables/actor-state.ts +0 -10
  234. package/src/data-plane/server/db/tables/actor-sync.ts +0 -9
  235. package/src/data-plane/server/db/tables/actor.ts +0 -19
  236. package/src/data-plane/server/db/tables/algo.ts +0 -11
  237. package/src/data-plane/server/db/tables/blob-takedown.ts +0 -9
  238. package/src/data-plane/server/db/tables/bookmark.ts +0 -11
  239. package/src/data-plane/server/db/tables/did-cache.ts +0 -13
  240. package/src/data-plane/server/db/tables/draft.ts +0 -11
  241. package/src/data-plane/server/db/tables/duplicate-record.ts +0 -12
  242. package/src/data-plane/server/db/tables/feed-generator.ts +0 -21
  243. package/src/data-plane/server/db/tables/feed-item.ts +0 -12
  244. package/src/data-plane/server/db/tables/follow.ts +0 -15
  245. package/src/data-plane/server/db/tables/label.ts +0 -13
  246. package/src/data-plane/server/db/tables/labeler.ts +0 -16
  247. package/src/data-plane/server/db/tables/like.ts +0 -18
  248. package/src/data-plane/server/db/tables/list-block.ts +0 -15
  249. package/src/data-plane/server/db/tables/list-item.ts +0 -16
  250. package/src/data-plane/server/db/tables/list-mute.ts +0 -9
  251. package/src/data-plane/server/db/tables/list.ts +0 -19
  252. package/src/data-plane/server/db/tables/mute.ts +0 -9
  253. package/src/data-plane/server/db/tables/notification-push-token.ts +0 -10
  254. package/src/data-plane/server/db/tables/notification.ts +0 -16
  255. package/src/data-plane/server/db/tables/post-agg.ts +0 -16
  256. package/src/data-plane/server/db/tables/post-embed.ts +0 -47
  257. package/src/data-plane/server/db/tables/post-gate.ts +0 -12
  258. package/src/data-plane/server/db/tables/post.ts +0 -28
  259. package/src/data-plane/server/db/tables/private-data.ts +0 -13
  260. package/src/data-plane/server/db/tables/profile-agg.ts +0 -14
  261. package/src/data-plane/server/db/tables/profile.ts +0 -17
  262. package/src/data-plane/server/db/tables/quote.ts +0 -15
  263. package/src/data-plane/server/db/tables/record.ts +0 -15
  264. package/src/data-plane/server/db/tables/repost.ts +0 -18
  265. package/src/data-plane/server/db/tables/starter-pack.ts +0 -17
  266. package/src/data-plane/server/db/tables/subscription.ts +0 -9
  267. package/src/data-plane/server/db/tables/suggested-feed.ts +0 -10
  268. package/src/data-plane/server/db/tables/suggested-follow.ts +0 -10
  269. package/src/data-plane/server/db/tables/tagged-suggestion.ts +0 -11
  270. package/src/data-plane/server/db/tables/thread-gate.ts +0 -12
  271. package/src/data-plane/server/db/tables/thread-mute.ts +0 -9
  272. package/src/data-plane/server/db/tables/verification.ts +0 -20
  273. package/src/data-plane/server/db/tables/view-param.ts +0 -12
  274. package/src/data-plane/server/db/types.ts +0 -12
  275. package/src/data-plane/server/db/util.ts +0 -67
  276. package/src/data-plane/server/index.ts +0 -44
  277. package/src/data-plane/server/indexing/index.ts +0 -458
  278. package/src/data-plane/server/indexing/plugins/block.ts +0 -84
  279. package/src/data-plane/server/indexing/plugins/chat-declaration.ts +0 -60
  280. package/src/data-plane/server/indexing/plugins/feed-generator.ts +0 -80
  281. package/src/data-plane/server/indexing/plugins/follow.ts +0 -132
  282. package/src/data-plane/server/indexing/plugins/germ-declaration.ts +0 -57
  283. package/src/data-plane/server/indexing/plugins/labeler.ts +0 -74
  284. package/src/data-plane/server/indexing/plugins/like.ts +0 -151
  285. package/src/data-plane/server/indexing/plugins/list-block.ts +0 -84
  286. package/src/data-plane/server/indexing/plugins/list-item.ts +0 -92
  287. package/src/data-plane/server/indexing/plugins/list.ts +0 -80
  288. package/src/data-plane/server/indexing/plugins/notif-declaration.ts +0 -57
  289. package/src/data-plane/server/indexing/plugins/post-gate.ts +0 -101
  290. package/src/data-plane/server/indexing/plugins/post.ts +0 -675
  291. package/src/data-plane/server/indexing/plugins/profile.ts +0 -90
  292. package/src/data-plane/server/indexing/plugins/repost.ts +0 -176
  293. package/src/data-plane/server/indexing/plugins/starter-pack.ts +0 -74
  294. package/src/data-plane/server/indexing/plugins/status.ts +0 -57
  295. package/src/data-plane/server/indexing/plugins/thread-gate.ts +0 -101
  296. package/src/data-plane/server/indexing/plugins/verification.ts +0 -113
  297. package/src/data-plane/server/indexing/processor.ts +0 -292
  298. package/src/data-plane/server/routes/activity-subscription.ts +0 -84
  299. package/src/data-plane/server/routes/blocks.ts +0 -127
  300. package/src/data-plane/server/routes/bookmarks.ts +0 -83
  301. package/src/data-plane/server/routes/drafts.ts +0 -37
  302. package/src/data-plane/server/routes/feed-gens.ts +0 -89
  303. package/src/data-plane/server/routes/feeds.ts +0 -176
  304. package/src/data-plane/server/routes/follows.ts +0 -141
  305. package/src/data-plane/server/routes/identity.ts +0 -59
  306. package/src/data-plane/server/routes/index.ts +0 -67
  307. package/src/data-plane/server/routes/interactions.ts +0 -120
  308. package/src/data-plane/server/routes/labels.ts +0 -55
  309. package/src/data-plane/server/routes/likes.ts +0 -92
  310. package/src/data-plane/server/routes/lists.ts +0 -88
  311. package/src/data-plane/server/routes/moderation.ts +0 -102
  312. package/src/data-plane/server/routes/mutes.ts +0 -195
  313. package/src/data-plane/server/routes/notifs.ts +0 -239
  314. package/src/data-plane/server/routes/profile.ts +0 -220
  315. package/src/data-plane/server/routes/quotes.ts +0 -32
  316. package/src/data-plane/server/routes/records.ts +0 -119
  317. package/src/data-plane/server/routes/relationships.ts +0 -174
  318. package/src/data-plane/server/routes/reposts.ts +0 -76
  319. package/src/data-plane/server/routes/search.ts +0 -181
  320. package/src/data-plane/server/routes/site-standard.ts +0 -12
  321. package/src/data-plane/server/routes/sitemap.ts +0 -43
  322. package/src/data-plane/server/routes/starter-packs.ts +0 -32
  323. package/src/data-plane/server/routes/suggestions.ts +0 -175
  324. package/src/data-plane/server/routes/sync.ts +0 -16
  325. package/src/data-plane/server/routes/threads.ts +0 -33
  326. package/src/data-plane/server/subscription.ts +0 -152
  327. package/src/data-plane/server/util.ts +0 -202
  328. package/src/error.ts +0 -12
  329. package/src/etcd.ts +0 -90
  330. package/src/feature-gates/README.md +0 -83
  331. package/src/feature-gates/gates.ts +0 -25
  332. package/src/feature-gates/index.ts +0 -235
  333. package/src/feature-gates/metrics.test.ts +0 -196
  334. package/src/feature-gates/metrics.ts +0 -107
  335. package/src/feature-gates/types.ts +0 -62
  336. package/src/feature-gates/utils.test.ts +0 -66
  337. package/src/feature-gates/utils.ts +0 -135
  338. package/src/hydration/actor.ts +0 -578
  339. package/src/hydration/external.test.ts +0 -281
  340. package/src/hydration/external.ts +0 -268
  341. package/src/hydration/feed.ts +0 -456
  342. package/src/hydration/graph.ts +0 -354
  343. package/src/hydration/hydrator.ts +0 -1835
  344. package/src/hydration/label.ts +0 -207
  345. package/src/hydration/util.ts +0 -199
  346. package/src/image/index.ts +0 -2
  347. package/src/image/invalidator.ts +0 -33
  348. package/src/image/logger.ts +0 -6
  349. package/src/image/server.ts +0 -228
  350. package/src/image/sharp.ts +0 -89
  351. package/src/image/uri.ts +0 -114
  352. package/src/image/util.ts +0 -41
  353. package/src/index.ts +0 -312
  354. package/src/kws.ts +0 -197
  355. package/src/logger.ts +0 -40
  356. package/src/pipeline.ts +0 -60
  357. package/src/redis.ts +0 -205
  358. package/src/rolodex.ts +0 -42
  359. package/src/stash.ts +0 -76
  360. package/src/util/debug.ts +0 -10
  361. package/src/util/http.ts +0 -42
  362. package/src/util/retry.ts +0 -10
  363. package/src/util/standard-site.test.ts +0 -423
  364. package/src/util/standard-site.ts +0 -196
  365. package/src/util/uris.ts +0 -38
  366. package/src/util.ts +0 -48
  367. package/src/views/index.ts +0 -2783
  368. package/src/views/threads-v2.ts +0 -510
  369. package/src/views/types.ts +0 -193
  370. package/src/views/util.ts +0 -114
  371. package/test.env +0 -2
  372. package/tests/__snapshots__/feed-generation.test.ts.snap +0 -2463
  373. package/tests/_util.ts +0 -292
  374. package/tests/admin/admin-auth.test.ts +0 -190
  375. package/tests/admin/moderation.test.ts +0 -222
  376. package/tests/auth.test.ts +0 -90
  377. package/tests/blob-resolver.test.ts +0 -125
  378. package/tests/data-plane/__snapshots__/indexing.test.ts.snap +0 -887
  379. package/tests/data-plane/db.test.ts +0 -189
  380. package/tests/data-plane/duplicate-records.test.ts +0 -156
  381. package/tests/data-plane/handle-invalidation.test.ts +0 -153
  382. package/tests/data-plane/indexing.test.ts +0 -827
  383. package/tests/data-plane/subscription.test.ts +0 -128
  384. package/tests/data-plane/thread-mutes.test.ts +0 -175
  385. package/tests/entryway-auth.test.ts +0 -177
  386. package/tests/etcd.test.ts +0 -302
  387. package/tests/feed-generation.test.ts +0 -919
  388. package/tests/hydration/util.test.ts +0 -119
  389. package/tests/image/server.test.ts +0 -97
  390. package/tests/image/sharp.test.ts +0 -199
  391. package/tests/image/uri.test.ts +0 -106
  392. package/tests/label-hydration.test.ts +0 -245
  393. package/tests/postgates.test.ts +0 -182
  394. package/tests/query-labels.test.ts +0 -85
  395. package/tests/redis-cache.test.ts +0 -230
  396. package/tests/seed/feed-hidden-replies.ts +0 -63
  397. package/tests/seed/get-suggested-starter-packs.ts +0 -64
  398. package/tests/seed/get-trends.ts +0 -71
  399. package/tests/seed/known-followers.ts +0 -111
  400. package/tests/seed/postgates.ts +0 -57
  401. package/tests/server.test.ts +0 -115
  402. package/tests/sitemap.test.ts +0 -75
  403. package/tests/stash.test.ts +0 -180
  404. package/tests/utils.test.ts +0 -36
  405. package/tests/views/__snapshots__/actor-search.test.ts.snap +0 -155
  406. package/tests/views/__snapshots__/author-feed.test.ts.snap +0 -6301
  407. package/tests/views/__snapshots__/block-lists.test.ts.snap +0 -690
  408. package/tests/views/__snapshots__/blocks.test.ts.snap +0 -462
  409. package/tests/views/__snapshots__/bookmarks.test.ts.snap +0 -379
  410. package/tests/views/__snapshots__/follows.test.ts.snap +0 -798
  411. package/tests/views/__snapshots__/labeler-service.test.ts.snap +0 -233
  412. package/tests/views/__snapshots__/likes.test.ts.snap +0 -124
  413. package/tests/views/__snapshots__/list-feed.test.ts.snap +0 -883
  414. package/tests/views/__snapshots__/lists.test.ts.snap +0 -650
  415. package/tests/views/__snapshots__/mute-lists.test.ts.snap +0 -705
  416. package/tests/views/__snapshots__/mutes.test.ts.snap +0 -353
  417. package/tests/views/__snapshots__/notifications.test.ts.snap +0 -3074
  418. package/tests/views/__snapshots__/posts.test.ts.snap +0 -1019
  419. package/tests/views/__snapshots__/profile.test.ts.snap +0 -811
  420. package/tests/views/__snapshots__/quotes.test.ts.snap +0 -445
  421. package/tests/views/__snapshots__/reposts.test.ts.snap +0 -112
  422. package/tests/views/__snapshots__/starter-packs.test.ts.snap +0 -836
  423. package/tests/views/__snapshots__/thread-v2.test.ts.snap +0 -1298
  424. package/tests/views/__snapshots__/thread.test.ts.snap +0 -2051
  425. package/tests/views/__snapshots__/threadgating.test.ts.snap +0 -189
  426. package/tests/views/__snapshots__/timeline.test.ts.snap +0 -7252
  427. package/tests/views/account-deactivation.test.ts +0 -81
  428. package/tests/views/actor-likes.test.ts +0 -138
  429. package/tests/views/actor-search.test.ts +0 -261
  430. package/tests/views/age-assurance-v2.test.ts +0 -823
  431. package/tests/views/age-assurance.test.ts +0 -479
  432. package/tests/views/author-feed.test.ts +0 -694
  433. package/tests/views/block-lists.test.ts +0 -661
  434. package/tests/views/blocks.test.ts +0 -889
  435. package/tests/views/bookmarks.test.ts +0 -345
  436. package/tests/views/drafts.test.ts +0 -430
  437. package/tests/views/feed-hidden-replies.test.ts +0 -243
  438. package/tests/views/feed-view-post.test.ts +0 -501
  439. package/tests/views/follows.test.ts +0 -372
  440. package/tests/views/get-config.test.ts +0 -64
  441. package/tests/views/get-suggested-onboarding-users.test.ts +0 -193
  442. package/tests/views/get-suggested-starter-packs.test.ts +0 -137
  443. package/tests/views/get-trends.test.ts +0 -141
  444. package/tests/views/internal-actor.test.ts +0 -127
  445. package/tests/views/known-followers.test.ts +0 -193
  446. package/tests/views/labeler-service.test.ts +0 -242
  447. package/tests/views/labels-needs-review.test.ts +0 -316
  448. package/tests/views/labels-takedown.test.ts +0 -247
  449. package/tests/views/likes.test.ts +0 -192
  450. package/tests/views/list-feed.test.ts +0 -195
  451. package/tests/views/lists.test.ts +0 -412
  452. package/tests/views/mute-lists.test.ts +0 -509
  453. package/tests/views/mutes.test.ts +0 -308
  454. package/tests/views/notifications.test.ts +0 -1581
  455. package/tests/views/post-search.test.ts +0 -200
  456. package/tests/views/posts-debug.test.ts +0 -79
  457. package/tests/views/posts.test.ts +0 -427
  458. package/tests/views/profile-debug.test.ts +0 -75
  459. package/tests/views/profile.test.ts +0 -795
  460. package/tests/views/quotes.test.ts +0 -133
  461. package/tests/views/reposts.test.ts +0 -112
  462. package/tests/views/starter-packs.test.ts +0 -395
  463. package/tests/views/suggestions.test.ts +0 -145
  464. package/tests/views/thread-v2.test.ts +0 -2005
  465. package/tests/views/thread.test.ts +0 -637
  466. package/tests/views/threadgating.test.ts +0 -843
  467. package/tests/views/timeline.test.ts +0 -328
  468. package/tests/views/verification.test.ts +0 -296
  469. package/tsconfig.build.json +0 -10
  470. package/tsconfig.build.tsbuildinfo +0 -1
  471. package/tsconfig.json +0 -7
  472. package/tsconfig.tests.json +0 -8
  473. package/vitest.config.ts +0 -10
package/src/config.ts DELETED
@@ -1,710 +0,0 @@
1
- import assert from 'node:assert'
2
- import { noUndefinedVals } from '@atproto/common'
3
- import { DidString, isDidString } from '@atproto/lex'
4
- import { subLogger as log } from './logger.js'
5
-
6
- type LiveNowConfig = {
7
- did: DidString
8
- domains: string[]
9
- }[]
10
-
11
- export interface KwsConfig {
12
- apiKey: string
13
- apiOrigin: string
14
- authOrigin: string
15
- clientId: string
16
- redirectUrl: string
17
- userAgent: string
18
- /**
19
- * V1 secret used to validate `adult-verifieid` redirects
20
- */
21
- verificationSecret: string
22
- /**
23
- * V1 secret used to validate `adult-verified` webhooks
24
- */
25
- webhookSecret: string
26
- /**
27
- * V2 secret used to validate `age-verified` webhooks
28
- */
29
- ageVerifiedWebhookSecret: string
30
- /**
31
- * V2 secret used to validate `age-verified` redirects
32
- */
33
- ageVerifiedRedirectSecret: string
34
- }
35
-
36
- export interface ServerConfigValues {
37
- // service
38
- version?: string
39
- debugMode?: boolean
40
- port?: number
41
- publicUrl?: string
42
- serverDid: DidString
43
- alternateAudienceDids: DidString[]
44
- entrywayJwtPublicKeyHex?: string
45
- liveNowConfig?: LiveNowConfig
46
- // external services
47
- etcdHosts: string[]
48
- dataplaneUrls: string[]
49
- dataplaneUrlsEtcdKeyPrefix?: string
50
- dataplaneHttpVersion?: '1.1' | '2'
51
- dataplaneIgnoreBadTls?: boolean
52
- bsyncUrl: string
53
- bsyncApiKey?: string
54
- bsyncHttpVersion?: '1.1' | '2'
55
- bsyncIgnoreBadTls?: boolean
56
- courierUrl?: string
57
- courierApiKey?: string
58
- courierHttpVersion?: '1.1' | '2'
59
- courierIgnoreBadTls?: boolean
60
- rolodexUrl?: string
61
- rolodexApiKey?: string
62
- rolodexHttpVersion?: '1.1' | '2'
63
- rolodexIgnoreBadTls?: boolean
64
- searchUrl?: string
65
- searchTagsHide: Set<string>
66
- suggestionsUrl?: string
67
- suggestionsApiKey?: string
68
- topicsUrl?: string
69
- topicsApiKey?: string
70
- cdnUrl?: string
71
- videoPlaylistUrlPattern?: string
72
- videoThumbnailUrlPattern?: string
73
- blobRateLimitBypassKey?: string
74
- blobRateLimitBypassHostname?: string
75
- // identity
76
- didPlcUrl: string
77
- handleResolveNameservers?: string[]
78
- // moderation and administration
79
- modServiceDid: DidString
80
- adminPasswords: string[]
81
- labelsFromIssuerDids?: DidString[]
82
- indexedAtEpoch?: Date
83
- // misc/dev
84
- blobCacheLocation?: string
85
- eventProxyTrackingEndpoint?: string
86
- growthBookApiHost?: string
87
- growthBookClientKey?: string
88
- // threads
89
- bigThreadUris: Set<string>
90
- bigThreadDepth?: number
91
- maxThreadDepth?: number
92
- maxThreadParents: number
93
- threadTagsHide: Set<string>
94
- threadTagsBumpDown: Set<string>
95
- visibilityTagHide: string
96
- visibilityTagRankPrefix: string
97
- // notifications
98
- notificationsDelayMs?: number
99
- // client config
100
- clientCheckEmailConfirmed?: boolean
101
- topicsEnabled?: boolean
102
- // http proxy agent
103
- disableSsrfProtection?: boolean
104
- proxyAllowHTTP2?: boolean
105
- proxyHeadersTimeout?: number
106
- proxyBodyTimeout?: number
107
- proxyMaxResponseSize?: number
108
- proxyMaxRetries?: number
109
- proxyPreferCompressed?: boolean
110
- kws?: KwsConfig
111
- debugFieldAllowedDids: Set<string>
112
- draftsLimit: number
113
- searchV2OverrideHeader?: string
114
- }
115
-
116
- export class ServerConfig {
117
- private assignedPort?: number
118
- constructor(private cfg: ServerConfigValues) {}
119
-
120
- static readEnv(overrides?: Partial<ServerConfigValues>) {
121
- const version = process.env.BSKY_VERSION || undefined
122
- const debugMode =
123
- // Because security related features are disabled in development mode, this requires explicit opt-in.
124
- process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test'
125
- const publicUrl = process.env.BSKY_PUBLIC_URL || undefined
126
- const serverDid = process.env.BSKY_SERVER_DID || 'did:example:test'
127
- assert(isDidString(serverDid))
128
- const envPort = parseInt(process.env.BSKY_PORT || '', 10)
129
- const port = isNaN(envPort) ? 2584 : envPort
130
- const didPlcUrl = process.env.BSKY_DID_PLC_URL || 'http://localhost:2582'
131
- const alternateAudienceDids = envList(process.env.BSKY_ALT_AUDIENCE_DIDS)
132
- assert(alternateAudienceDids.every(isDidString))
133
- const entrywayJwtPublicKeyHex =
134
- process.env.BSKY_ENTRYWAY_JWT_PUBLIC_KEY_HEX || undefined
135
- let liveNowConfig: LiveNowConfig | undefined
136
- if (process.env.BSKY_LIVE_NOW_CONFIG) {
137
- try {
138
- const parsed = JSON.parse(process.env.BSKY_LIVE_NOW_CONFIG)
139
- if (isLiveNowConfig(parsed)) {
140
- liveNowConfig = parsed
141
- } else {
142
- throw new Error('Live Now config failed format validation')
143
- }
144
- } catch (err) {
145
- log.error({ err }, 'Invalid BSKY_LIVE_NOW_CONFIG')
146
- }
147
- }
148
- const handleResolveNameservers = envList(
149
- process.env.BSKY_HANDLE_RESOLVE_NAMESERVERS,
150
- )
151
- const cdnUrl = process.env.BSKY_CDN_URL || process.env.BSKY_IMG_URI_ENDPOINT
152
- // Values 0 through 16
153
- const etcdHosts =
154
- overrides?.etcdHosts ?? envList(process.env.BSKY_ETCD_HOSTS)
155
- // e.g. https://video.invalid/watch/%s/%s/playlist.m3u8
156
- const videoPlaylistUrlPattern = process.env.BSKY_VIDEO_PLAYLIST_URL_PATTERN
157
- // e.g. https://video.invalid/watch/%s/%s/thumbnail.jpg
158
- const videoThumbnailUrlPattern =
159
- process.env.BSKY_VIDEO_THUMBNAIL_URL_PATTERN
160
- const blobCacheLocation = process.env.BSKY_BLOB_CACHE_LOC
161
- const searchUrl =
162
- process.env.BSKY_SEARCH_URL ||
163
- process.env.BSKY_SEARCH_ENDPOINT ||
164
- undefined
165
- const searchTagsHide = new Set(envList(process.env.BSKY_SEARCH_TAGS_HIDE))
166
- const suggestionsUrl = process.env.BSKY_SUGGESTIONS_URL || undefined
167
- const suggestionsApiKey = process.env.BSKY_SUGGESTIONS_API_KEY || undefined
168
- const topicsUrl = process.env.BSKY_TOPICS_URL || undefined
169
- const topicsApiKey = process.env.BSKY_TOPICS_API_KEY
170
- const dataplaneUrls =
171
- overrides?.dataplaneUrls ?? envList(process.env.BSKY_DATAPLANE_URLS)
172
- const dataplaneUrlsEtcdKeyPrefix =
173
- process.env.BSKY_DATAPLANE_URLS_ETCD_KEY_PREFIX || undefined
174
- const dataplaneHttpVersion = process.env.BSKY_DATAPLANE_HTTP_VERSION || '2'
175
- const dataplaneIgnoreBadTls =
176
- process.env.BSKY_DATAPLANE_IGNORE_BAD_TLS === 'true'
177
- assert(
178
- !dataplaneUrlsEtcdKeyPrefix || etcdHosts.length,
179
- 'etcd prefix for dataplane urls may only be configured when there are etcd hosts',
180
- )
181
- assert(
182
- dataplaneUrls.length || dataplaneUrlsEtcdKeyPrefix,
183
- 'dataplane urls are not configured directly nor with etcd',
184
- )
185
- assert(dataplaneHttpVersion === '1.1' || dataplaneHttpVersion === '2')
186
- const labelsFromIssuerDids = envList(
187
- process.env.BSKY_LABELS_FROM_ISSUER_DIDS,
188
- )
189
- assert(labelsFromIssuerDids.every(isDidString))
190
- const bsyncUrl = process.env.BSKY_BSYNC_URL || undefined
191
- assert(bsyncUrl)
192
- const bsyncApiKey = process.env.BSKY_BSYNC_API_KEY || undefined
193
- const bsyncHttpVersion = process.env.BSKY_BSYNC_HTTP_VERSION || '2'
194
- const bsyncIgnoreBadTls = process.env.BSKY_BSYNC_IGNORE_BAD_TLS === 'true'
195
- assert(bsyncHttpVersion === '1.1' || bsyncHttpVersion === '2')
196
- const courierUrl = process.env.BSKY_COURIER_URL || undefined
197
- const courierApiKey = process.env.BSKY_COURIER_API_KEY || undefined
198
- const courierHttpVersion = process.env.BSKY_COURIER_HTTP_VERSION || '2'
199
- const courierIgnoreBadTls =
200
- process.env.BSKY_COURIER_IGNORE_BAD_TLS === 'true'
201
- assert(courierHttpVersion === '1.1' || courierHttpVersion === '2')
202
- const rolodexUrl = process.env.BSKY_ROLODEX_URL || undefined
203
- const rolodexApiKey = process.env.BSKY_ROLODEX_API_KEY || undefined
204
- const rolodexHttpVersion = process.env.BSKY_ROLODEX_HTTP_VERSION || '2'
205
- const rolodexIgnoreBadTls =
206
- process.env.BSKY_ROLODEX_IGNORE_BAD_TLS === 'true'
207
- assert(rolodexHttpVersion === '1.1' || rolodexHttpVersion === '2')
208
- const blobRateLimitBypassKey =
209
- process.env.BSKY_BLOB_RATE_LIMIT_BYPASS_KEY || undefined
210
- // single domain would be e.g. "mypds.com", subdomains are supported with a leading dot e.g. ".mypds.com"
211
- const blobRateLimitBypassHostname =
212
- process.env.BSKY_BLOB_RATE_LIMIT_BYPASS_HOSTNAME || undefined
213
- assert(
214
- !blobRateLimitBypassKey || blobRateLimitBypassHostname,
215
- 'must specify a hostname when using a blob rate limit bypass key',
216
- )
217
- const adminPasswords = envList(
218
- process.env.BSKY_ADMIN_PASSWORDS || process.env.BSKY_ADMIN_PASSWORD,
219
- )
220
- const modServiceDid = process.env.MOD_SERVICE_DID
221
- assert(modServiceDid != null && isDidString(modServiceDid))
222
-
223
- const eventProxyTrackingEndpoint =
224
- process.env.BSKY_EVENT_PROXY_TRACKING_ENDPOINT || undefined
225
- const growthBookApiHost = process.env.BSKY_GROWTHBOOK_API_HOST || undefined
226
- const growthBookClientKey =
227
- process.env.NODE_ENV === 'test'
228
- ? 'secret-key'
229
- : process.env.BSKY_GROWTHBOOK_CLIENT_KEY || undefined
230
- const clientCheckEmailConfirmed =
231
- process.env.BSKY_CLIENT_CHECK_EMAIL_CONFIRMED === 'true'
232
- const topicsEnabled = process.env.BSKY_TOPICS_ENABLED === 'true'
233
- const indexedAtEpoch = process.env.BSKY_INDEXED_AT_EPOCH
234
- ? new Date(process.env.BSKY_INDEXED_AT_EPOCH)
235
- : undefined
236
- assert(
237
- !indexedAtEpoch || !isNaN(indexedAtEpoch.getTime()),
238
- 'invalid BSKY_INDEXED_AT_EPOCH',
239
- )
240
- const bigThreadUris = new Set(envList(process.env.BSKY_BIG_THREAD_URIS))
241
- const bigThreadDepth = process.env.BSKY_BIG_THREAD_DEPTH
242
- ? parseInt(process.env.BSKY_BIG_THREAD_DEPTH || '', 10)
243
- : undefined
244
- const maxThreadDepth = process.env.BSKY_MAX_THREAD_DEPTH
245
- ? parseInt(process.env.BSKY_MAX_THREAD_DEPTH || '', 10)
246
- : undefined
247
- const maxThreadParents = process.env.BSKY_MAX_THREAD_PARENTS
248
- ? parseInt(process.env.BSKY_MAX_THREAD_PARENTS || '', 10)
249
- : 50
250
- const threadTagsHide = new Set(envList(process.env.BSKY_THREAD_TAGS_HIDE))
251
- const threadTagsBumpDown = new Set(
252
- envList(process.env.BSKY_THREAD_TAGS_BUMP_DOWN),
253
- )
254
- const visibilityTagHide = process.env.BSKY_VISIBILITY_TAG_HIDE || ''
255
- const visibilityTagRankPrefix =
256
- process.env.BSKY_VISIBILITY_TAG_RANK_PREFIX || ''
257
-
258
- const notificationsDelayMs = process.env.BSKY_NOTIFICATIONS_DELAY_MS
259
- ? parseInt(process.env.BSKY_NOTIFICATIONS_DELAY_MS || '', 10)
260
- : 0
261
-
262
- const disableSsrfProtection = process.env.BSKY_DISABLE_SSRF_PROTECTION
263
- ? process.env.BSKY_DISABLE_SSRF_PROTECTION === 'true'
264
- : debugMode
265
-
266
- const proxyAllowHTTP2 = process.env.BSKY_PROXY_ALLOW_HTTP2 === 'true'
267
- const proxyHeadersTimeout =
268
- parseInt(process.env.BSKY_PROXY_HEADERS_TIMEOUT || '', 10) || undefined
269
- const proxyBodyTimeout =
270
- parseInt(process.env.BSKY_PROXY_BODY_TIMEOUT || '', 10) || undefined
271
- const proxyMaxResponseSize =
272
- parseInt(process.env.BSKY_PROXY_MAX_RESPONSE_SIZE || '', 10) || undefined
273
- const proxyMaxRetries =
274
- parseInt(process.env.BSKY_PROXY_MAX_RETRIES || '', 10) || undefined
275
- const proxyPreferCompressed =
276
- process.env.BSKY_PROXY_PREFER_COMPRESSED === 'true'
277
-
278
- let kws: KwsConfig | undefined
279
- const kwsApiKey = process.env.BSKY_KWS_API_KEY
280
- const kwsApiOrigin = process.env.BSKY_KWS_API_ORIGIN
281
- const kwsAuthOrigin = process.env.BSKY_KWS_AUTH_ORIGIN
282
- const kwsClientId = process.env.BSKY_KWS_CLIENT_ID
283
- const kwsRedirectUrl = process.env.BSKY_KWS_REDIRECT_URL
284
- const kwsUserAgent = process.env.BSKY_KWS_USER_AGENT
285
- const kwsVerificationSecret = process.env.BSKY_KWS_VERIFICATION_SECRET
286
- const kwsWebhookSecret = process.env.BSKY_KWS_WEBHOOK_SECRET
287
- const kwsAgeVerifiedWebhookSecret =
288
- process.env.BSKY_KWS_AGE_VERIFIED_WEBHOOK_SECRET
289
- const kwsAgeVerifiedRedirectSecret =
290
- process.env.BSKY_KWS_AGE_VERIFIED_REDIRECT_SECRET
291
- if (
292
- kwsApiKey ||
293
- kwsApiOrigin ||
294
- kwsAuthOrigin ||
295
- kwsClientId ||
296
- kwsRedirectUrl ||
297
- kwsUserAgent ||
298
- kwsVerificationSecret ||
299
- kwsWebhookSecret ||
300
- kwsAgeVerifiedWebhookSecret ||
301
- kwsAgeVerifiedRedirectSecret
302
- ) {
303
- assert(
304
- kwsApiOrigin &&
305
- kwsAuthOrigin &&
306
- kwsClientId &&
307
- kwsRedirectUrl &&
308
- kwsUserAgent &&
309
- kwsVerificationSecret &&
310
- kwsWebhookSecret &&
311
- kwsApiKey &&
312
- kwsAgeVerifiedWebhookSecret &&
313
- kwsAgeVerifiedRedirectSecret,
314
- 'all KWS environment variables must be set if any are set',
315
- )
316
- kws = {
317
- apiKey: kwsApiKey,
318
- apiOrigin: kwsApiOrigin,
319
- authOrigin: kwsAuthOrigin,
320
- clientId: kwsClientId,
321
- redirectUrl: kwsRedirectUrl,
322
- userAgent: kwsUserAgent,
323
- verificationSecret: kwsVerificationSecret,
324
- webhookSecret: kwsWebhookSecret,
325
- ageVerifiedWebhookSecret: kwsAgeVerifiedWebhookSecret,
326
- ageVerifiedRedirectSecret: kwsAgeVerifiedRedirectSecret,
327
- }
328
- }
329
-
330
- const debugFieldAllowedDids = new Set(
331
- envList(process.env.BSKY_DEBUG_FIELD_ALLOWED_DIDS),
332
- )
333
-
334
- const draftsLimit = process.env.BSKY_DRAFTS_LIMIT
335
- ? parseInt(process.env.BSKY_DRAFTS_LIMIT || '', 10)
336
- : 500
337
-
338
- const searchV2OverrideHeader =
339
- process.env.BSKY_SEARCH_V2_OVERRIDE_HEADER || undefined
340
-
341
- return new ServerConfig({
342
- version,
343
- debugMode,
344
- port,
345
- publicUrl,
346
- serverDid,
347
- alternateAudienceDids,
348
- entrywayJwtPublicKeyHex,
349
- liveNowConfig,
350
- etcdHosts,
351
- dataplaneUrls,
352
- dataplaneUrlsEtcdKeyPrefix,
353
- dataplaneHttpVersion,
354
- dataplaneIgnoreBadTls,
355
- searchUrl,
356
- searchTagsHide,
357
- suggestionsUrl,
358
- suggestionsApiKey,
359
- topicsUrl,
360
- topicsApiKey,
361
- didPlcUrl,
362
- labelsFromIssuerDids,
363
- handleResolveNameservers,
364
- cdnUrl,
365
- videoPlaylistUrlPattern,
366
- videoThumbnailUrlPattern,
367
- blobCacheLocation,
368
- bsyncUrl,
369
- bsyncApiKey,
370
- bsyncHttpVersion,
371
- bsyncIgnoreBadTls,
372
- courierUrl,
373
- courierApiKey,
374
- courierHttpVersion,
375
- courierIgnoreBadTls,
376
- rolodexUrl,
377
- rolodexApiKey,
378
- rolodexHttpVersion,
379
- rolodexIgnoreBadTls,
380
- blobRateLimitBypassKey,
381
- blobRateLimitBypassHostname,
382
- adminPasswords,
383
- modServiceDid,
384
- eventProxyTrackingEndpoint,
385
- growthBookApiHost,
386
- growthBookClientKey,
387
- clientCheckEmailConfirmed,
388
- topicsEnabled,
389
- indexedAtEpoch,
390
- bigThreadUris,
391
- bigThreadDepth,
392
- maxThreadDepth,
393
- maxThreadParents,
394
- threadTagsHide,
395
- threadTagsBumpDown,
396
- visibilityTagHide,
397
- visibilityTagRankPrefix,
398
- notificationsDelayMs,
399
- disableSsrfProtection,
400
- proxyAllowHTTP2,
401
- proxyHeadersTimeout,
402
- proxyBodyTimeout,
403
- proxyMaxResponseSize,
404
- proxyMaxRetries,
405
- proxyPreferCompressed,
406
- kws,
407
- debugFieldAllowedDids,
408
- draftsLimit,
409
- searchV2OverrideHeader,
410
- ...noUndefinedVals(overrides ?? {}),
411
- })
412
- }
413
-
414
- assignPort(port: number) {
415
- assert(
416
- !this.cfg.port || this.cfg.port === port,
417
- 'Conflicting port in config',
418
- )
419
- this.assignedPort = port
420
- }
421
-
422
- get version() {
423
- return this.cfg.version
424
- }
425
-
426
- get debugMode() {
427
- return !!this.cfg.debugMode
428
- }
429
-
430
- get port() {
431
- return this.assignedPort || this.cfg.port
432
- }
433
-
434
- get publicUrl() {
435
- return this.cfg.publicUrl
436
- }
437
-
438
- get serverDid() {
439
- return this.cfg.serverDid
440
- }
441
-
442
- get alternateAudienceDids() {
443
- return this.cfg.alternateAudienceDids
444
- }
445
-
446
- get entrywayJwtPublicKeyHex() {
447
- return this.cfg.entrywayJwtPublicKeyHex
448
- }
449
-
450
- get liveNowConfig() {
451
- return this.cfg.liveNowConfig
452
- }
453
-
454
- get etcdHosts() {
455
- return this.cfg.etcdHosts
456
- }
457
-
458
- get dataplaneUrlsEtcdKeyPrefix() {
459
- return this.cfg.dataplaneUrlsEtcdKeyPrefix
460
- }
461
-
462
- get dataplaneUrls() {
463
- return this.cfg.dataplaneUrls
464
- }
465
-
466
- get dataplaneHttpVersion() {
467
- return this.cfg.dataplaneHttpVersion
468
- }
469
-
470
- get dataplaneIgnoreBadTls() {
471
- return this.cfg.dataplaneIgnoreBadTls
472
- }
473
-
474
- get bsyncUrl() {
475
- return this.cfg.bsyncUrl
476
- }
477
-
478
- get bsyncApiKey() {
479
- return this.cfg.bsyncApiKey
480
- }
481
-
482
- get bsyncHttpVersion() {
483
- return this.cfg.bsyncHttpVersion
484
- }
485
-
486
- get bsyncIgnoreBadTls() {
487
- return this.cfg.bsyncIgnoreBadTls
488
- }
489
-
490
- get courierUrl() {
491
- return this.cfg.courierUrl
492
- }
493
-
494
- get courierApiKey() {
495
- return this.cfg.courierApiKey
496
- }
497
-
498
- get courierHttpVersion() {
499
- return this.cfg.courierHttpVersion
500
- }
501
-
502
- get courierIgnoreBadTls() {
503
- return this.cfg.courierIgnoreBadTls
504
- }
505
-
506
- get rolodexUrl() {
507
- return this.cfg.rolodexUrl
508
- }
509
- get rolodexApiKey() {
510
- return this.cfg.rolodexApiKey
511
- }
512
- get rolodexHttpVersion() {
513
- return this.cfg.rolodexHttpVersion
514
- }
515
- get rolodexIgnoreBadTls() {
516
- return this.cfg.rolodexIgnoreBadTls
517
- }
518
-
519
- get searchUrl() {
520
- return this.cfg.searchUrl
521
- }
522
-
523
- get searchTagsHide() {
524
- return this.cfg.searchTagsHide
525
- }
526
-
527
- get suggestionsUrl() {
528
- return this.cfg.suggestionsUrl
529
- }
530
-
531
- get suggestionsApiKey() {
532
- return this.cfg.suggestionsApiKey
533
- }
534
-
535
- get topicsUrl() {
536
- return this.cfg.topicsUrl
537
- }
538
-
539
- get topicsApiKey() {
540
- return this.cfg.topicsApiKey
541
- }
542
-
543
- get cdnUrl() {
544
- return this.cfg.cdnUrl
545
- }
546
-
547
- get videoPlaylistUrlPattern() {
548
- return this.cfg.videoPlaylistUrlPattern
549
- }
550
-
551
- get videoThumbnailUrlPattern() {
552
- return this.cfg.videoThumbnailUrlPattern
553
- }
554
-
555
- get blobRateLimitBypassKey() {
556
- return this.cfg.blobRateLimitBypassKey
557
- }
558
-
559
- get blobRateLimitBypassHostname() {
560
- return this.cfg.blobRateLimitBypassHostname
561
- }
562
-
563
- get didPlcUrl() {
564
- return this.cfg.didPlcUrl
565
- }
566
-
567
- get handleResolveNameservers() {
568
- return this.cfg.handleResolveNameservers
569
- }
570
-
571
- get adminPasswords() {
572
- return this.cfg.adminPasswords
573
- }
574
-
575
- get modServiceDid() {
576
- return this.cfg.modServiceDid
577
- }
578
-
579
- get labelsFromIssuerDids() {
580
- return (this.cfg.labelsFromIssuerDids ?? []) as DidString[]
581
- }
582
-
583
- get blobCacheLocation() {
584
- return this.cfg.blobCacheLocation
585
- }
586
-
587
- get eventProxyTrackingEndpoint() {
588
- return this.cfg.eventProxyTrackingEndpoint
589
- }
590
-
591
- get growthBookApiHost() {
592
- return this.cfg.growthBookApiHost
593
- }
594
-
595
- get growthBookClientKey() {
596
- return this.cfg.growthBookClientKey
597
- }
598
-
599
- get clientCheckEmailConfirmed() {
600
- return this.cfg.clientCheckEmailConfirmed
601
- }
602
-
603
- get topicsEnabled() {
604
- return this.cfg.topicsEnabled
605
- }
606
-
607
- get indexedAtEpoch() {
608
- return this.cfg.indexedAtEpoch
609
- }
610
-
611
- get bigThreadUris() {
612
- return this.cfg.bigThreadUris
613
- }
614
-
615
- get bigThreadDepth() {
616
- return this.cfg.bigThreadDepth
617
- }
618
-
619
- get maxThreadDepth() {
620
- return this.cfg.maxThreadDepth
621
- }
622
-
623
- get maxThreadParents() {
624
- return this.cfg.maxThreadParents
625
- }
626
-
627
- get threadTagsHide() {
628
- return this.cfg.threadTagsHide
629
- }
630
-
631
- get threadTagsBumpDown() {
632
- return this.cfg.threadTagsBumpDown
633
- }
634
-
635
- get visibilityTagHide() {
636
- return this.cfg.visibilityTagHide
637
- }
638
-
639
- get visibilityTagRankPrefix() {
640
- return this.cfg.visibilityTagRankPrefix
641
- }
642
-
643
- get notificationsDelayMs() {
644
- return this.cfg.notificationsDelayMs ?? 0
645
- }
646
-
647
- get disableSsrfProtection(): boolean {
648
- return this.cfg.disableSsrfProtection ?? false
649
- }
650
-
651
- get proxyAllowHTTP2(): boolean {
652
- return this.cfg.proxyAllowHTTP2 ?? false
653
- }
654
-
655
- get proxyHeadersTimeout(): number {
656
- return this.cfg.proxyHeadersTimeout ?? 30e3
657
- }
658
-
659
- get proxyBodyTimeout(): number {
660
- return this.cfg.proxyBodyTimeout ?? 30e3
661
- }
662
-
663
- get proxyMaxResponseSize(): number {
664
- return this.cfg.proxyMaxResponseSize ?? 10 * 1024 * 1024 // 10mb
665
- }
666
-
667
- get proxyMaxRetries(): number {
668
- return this.cfg.proxyMaxRetries ?? 3
669
- }
670
-
671
- get proxyPreferCompressed(): boolean {
672
- return this.cfg.proxyPreferCompressed ?? true
673
- }
674
-
675
- get kws() {
676
- return this.cfg.kws
677
- }
678
-
679
- get debugFieldAllowedDids() {
680
- return this.cfg.debugFieldAllowedDids
681
- }
682
-
683
- get draftsLimit() {
684
- return this.cfg.draftsLimit
685
- }
686
-
687
- get searchV2OverrideHeader() {
688
- return this.cfg.searchV2OverrideHeader
689
- }
690
- }
691
-
692
- function envList(str: string | undefined): string[] {
693
- if (str === undefined || str.length === 0) return []
694
- return str.split(',')
695
- }
696
-
697
- function isLiveNowConfig(data: any): data is LiveNowConfig {
698
- return (
699
- Array.isArray(data) &&
700
- data.every(
701
- (item) =>
702
- typeof item === 'object' &&
703
- item !== null &&
704
- typeof item.did === 'string' &&
705
- isDidString(item.did) &&
706
- Array.isArray(item.domains) &&
707
- item.domains.every((domain: any) => typeof domain === 'string'),
708
- )
709
- )
710
- }