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