@atproto/bsky 0.0.251 → 0.0.254

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 (463) hide show
  1. package/CHANGELOG.md +50 -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/dist/lexicons/app/bsky/actor/defs.defs.d.ts +6 -0
  9. package/dist/lexicons/app/bsky/actor/defs.defs.d.ts.map +1 -1
  10. package/dist/lexicons/app/bsky/actor/defs.defs.js +1 -0
  11. package/dist/lexicons/app/bsky/actor/defs.defs.js.map +1 -1
  12. package/package.json +28 -23
  13. package/bin/migration-create.ts +0 -46
  14. package/buf.gen.yaml +0 -12
  15. package/proto/bsky.proto +0 -1907
  16. package/proto/courier.proto +0 -84
  17. package/proto/rolodex.proto +0 -116
  18. package/src/api/age-assurance/const.ts +0 -203
  19. package/src/api/age-assurance/index.ts +0 -34
  20. package/src/api/age-assurance/kws/age-verified.test.ts +0 -98
  21. package/src/api/age-assurance/kws/age-verified.ts +0 -81
  22. package/src/api/age-assurance/kws/const.ts +0 -33
  23. package/src/api/age-assurance/kws/external-payload.test.ts +0 -72
  24. package/src/api/age-assurance/kws/external-payload.ts +0 -149
  25. package/src/api/age-assurance/redirects/kws-age-verified.ts +0 -107
  26. package/src/api/age-assurance/stash.ts +0 -23
  27. package/src/api/age-assurance/types.ts +0 -10
  28. package/src/api/age-assurance/util.ts +0 -68
  29. package/src/api/age-assurance/webhooks/kws-age-verified.ts +0 -75
  30. package/src/api/app/bsky/actor/getProfile.ts +0 -106
  31. package/src/api/app/bsky/actor/getProfiles.ts +0 -99
  32. package/src/api/app/bsky/actor/getSuggestions.ts +0 -163
  33. package/src/api/app/bsky/actor/searchActors.ts +0 -171
  34. package/src/api/app/bsky/actor/searchActorsTypeahead.ts +0 -164
  35. package/src/api/app/bsky/ageassurance/begin.ts +0 -175
  36. package/src/api/app/bsky/ageassurance/getConfig.ts +0 -16
  37. package/src/api/app/bsky/ageassurance/getState.ts +0 -58
  38. package/src/api/app/bsky/bookmark/createBookmark.ts +0 -39
  39. package/src/api/app/bsky/bookmark/deleteBookmark.ts +0 -32
  40. package/src/api/app/bsky/bookmark/getBookmarks.ts +0 -97
  41. package/src/api/app/bsky/bookmark/util.ts +0 -13
  42. package/src/api/app/bsky/contact/dismissMatch.ts +0 -26
  43. package/src/api/app/bsky/contact/getMatches.ts +0 -111
  44. package/src/api/app/bsky/contact/getSyncStatus.ts +0 -38
  45. package/src/api/app/bsky/contact/importContacts.ts +0 -119
  46. package/src/api/app/bsky/contact/removeData.ts +0 -25
  47. package/src/api/app/bsky/contact/sendNotification.ts +0 -33
  48. package/src/api/app/bsky/contact/startPhoneVerification.ts +0 -26
  49. package/src/api/app/bsky/contact/util.ts +0 -92
  50. package/src/api/app/bsky/contact/verifyPhone.ts +0 -29
  51. package/src/api/app/bsky/draft/createDraft.ts +0 -45
  52. package/src/api/app/bsky/draft/deleteDraft.ts +0 -20
  53. package/src/api/app/bsky/draft/getDrafts.ts +0 -44
  54. package/src/api/app/bsky/draft/updateDraft.ts +0 -26
  55. package/src/api/app/bsky/embed/getEmbedExternalView.ts +0 -154
  56. package/src/api/app/bsky/feed/getActorFeeds.ts +0 -101
  57. package/src/api/app/bsky/feed/getActorLikes.ts +0 -128
  58. package/src/api/app/bsky/feed/getAuthorFeed.ts +0 -279
  59. package/src/api/app/bsky/feed/getFeed.ts +0 -282
  60. package/src/api/app/bsky/feed/getFeedGenerator.ts +0 -68
  61. package/src/api/app/bsky/feed/getFeedGenerators.ts +0 -86
  62. package/src/api/app/bsky/feed/getLikes.ts +0 -151
  63. package/src/api/app/bsky/feed/getListFeed.ts +0 -147
  64. package/src/api/app/bsky/feed/getPostThread.ts +0 -156
  65. package/src/api/app/bsky/feed/getPosts.ts +0 -100
  66. package/src/api/app/bsky/feed/getQuotes.ts +0 -122
  67. package/src/api/app/bsky/feed/getRepostedBy.ts +0 -121
  68. package/src/api/app/bsky/feed/getSuggestedFeeds.ts +0 -39
  69. package/src/api/app/bsky/feed/getTimeline.ts +0 -127
  70. package/src/api/app/bsky/feed/searchPosts.ts +0 -274
  71. package/src/api/app/bsky/feed/searchPostsV2.ts +0 -243
  72. package/src/api/app/bsky/graph/getActorStarterPacks.ts +0 -103
  73. package/src/api/app/bsky/graph/getBlocks.ts +0 -94
  74. package/src/api/app/bsky/graph/getFollowers.ts +0 -153
  75. package/src/api/app/bsky/graph/getFollows.ts +0 -151
  76. package/src/api/app/bsky/graph/getKnownFollowers.ts +0 -123
  77. package/src/api/app/bsky/graph/getList.ts +0 -152
  78. package/src/api/app/bsky/graph/getListBlocks.ts +0 -87
  79. package/src/api/app/bsky/graph/getListMutes.ts +0 -87
  80. package/src/api/app/bsky/graph/getLists.ts +0 -125
  81. package/src/api/app/bsky/graph/getListsWithMembership.ts +0 -146
  82. package/src/api/app/bsky/graph/getMutes.ts +0 -87
  83. package/src/api/app/bsky/graph/getRelationships.ts +0 -58
  84. package/src/api/app/bsky/graph/getStarterPack.ts +0 -82
  85. package/src/api/app/bsky/graph/getStarterPacks.ts +0 -86
  86. package/src/api/app/bsky/graph/getStarterPacksWithMembership.ts +0 -136
  87. package/src/api/app/bsky/graph/getSuggestedFollowsByActor.ts +0 -171
  88. package/src/api/app/bsky/graph/muteActor.ts +0 -24
  89. package/src/api/app/bsky/graph/muteActorList.ts +0 -19
  90. package/src/api/app/bsky/graph/muteThread.ts +0 -19
  91. package/src/api/app/bsky/graph/searchStarterPacks.ts +0 -169
  92. package/src/api/app/bsky/graph/unmuteActor.ts +0 -21
  93. package/src/api/app/bsky/graph/unmuteActorList.ts +0 -19
  94. package/src/api/app/bsky/graph/unmuteThread.ts +0 -19
  95. package/src/api/app/bsky/labeler/getServices.ts +0 -41
  96. package/src/api/app/bsky/notification/getPreferences.ts +0 -49
  97. package/src/api/app/bsky/notification/getUnreadCount.ts +0 -83
  98. package/src/api/app/bsky/notification/listActivitySubscriptions.ts +0 -116
  99. package/src/api/app/bsky/notification/listNotifications.ts +0 -272
  100. package/src/api/app/bsky/notification/putActivitySubscription.ts +0 -69
  101. package/src/api/app/bsky/notification/putPreferences.ts +0 -17
  102. package/src/api/app/bsky/notification/putPreferencesV2.ts +0 -64
  103. package/src/api/app/bsky/notification/registerPush.ts +0 -40
  104. package/src/api/app/bsky/notification/unregisterPush.ts +0 -39
  105. package/src/api/app/bsky/notification/updateSeen.ts +0 -52
  106. package/src/api/app/bsky/notification/util.ts +0 -134
  107. package/src/api/app/bsky/unspecced/getAgeAssuranceState.ts +0 -48
  108. package/src/api/app/bsky/unspecced/getConfig.ts +0 -20
  109. package/src/api/app/bsky/unspecced/getOnboardingSuggestedStarterPacks.ts +0 -162
  110. package/src/api/app/bsky/unspecced/getPopularFeedGenerators.ts +0 -91
  111. package/src/api/app/bsky/unspecced/getPostThreadOtherV2.ts +0 -126
  112. package/src/api/app/bsky/unspecced/getPostThreadV2.ts +0 -148
  113. package/src/api/app/bsky/unspecced/getSuggestedFeeds.ts +0 -100
  114. package/src/api/app/bsky/unspecced/getSuggestedOnboardingUsers.ts +0 -143
  115. package/src/api/app/bsky/unspecced/getSuggestedStarterPacks.ts +0 -165
  116. package/src/api/app/bsky/unspecced/getSuggestedUsers.ts +0 -183
  117. package/src/api/app/bsky/unspecced/getSuggestedUsersForDiscover.ts +0 -175
  118. package/src/api/app/bsky/unspecced/getSuggestedUsersForExplore.ts +0 -178
  119. package/src/api/app/bsky/unspecced/getSuggestedUsersForSeeMore.ts +0 -178
  120. package/src/api/app/bsky/unspecced/getTaggedSuggestions.ts +0 -27
  121. package/src/api/app/bsky/unspecced/getTrendingTopics.ts +0 -96
  122. package/src/api/app/bsky/unspecced/getTrends.ts +0 -162
  123. package/src/api/app/bsky/unspecced/initAgeAssurance.ts +0 -150
  124. package/src/api/blob-dispatcher.ts +0 -41
  125. package/src/api/blob-resolver.ts +0 -401
  126. package/src/api/com/atproto/admin/getAccountInfos.ts +0 -49
  127. package/src/api/com/atproto/admin/getSubjectStatus.ts +0 -79
  128. package/src/api/com/atproto/admin/updateSubjectStatus.ts +0 -80
  129. package/src/api/com/atproto/identity/resolveHandle.ts +0 -19
  130. package/src/api/com/atproto/label/queryLabels.ts +0 -42
  131. package/src/api/com/atproto/repo/getRecord.ts +0 -44
  132. package/src/api/com/atproto/temp/fetchLabels.ts +0 -9
  133. package/src/api/external.ts +0 -15
  134. package/src/api/health.ts +0 -47
  135. package/src/api/index.ts +0 -216
  136. package/src/api/internal/bsky/actor/getProfiles.ts +0 -87
  137. package/src/api/kws/api.ts +0 -113
  138. package/src/api/kws/index.ts +0 -29
  139. package/src/api/kws/types.ts +0 -78
  140. package/src/api/kws/util.test.ts +0 -50
  141. package/src/api/kws/util.ts +0 -109
  142. package/src/api/kws/webhook.ts +0 -134
  143. package/src/api/sitemap.ts +0 -76
  144. package/src/api/util.ts +0 -45
  145. package/src/api/well-known.ts +0 -44
  146. package/src/auth-verifier.ts +0 -522
  147. package/src/bsync.ts +0 -41
  148. package/src/cache/read-through.ts +0 -157
  149. package/src/config.ts +0 -719
  150. package/src/context.ts +0 -143
  151. package/src/courier.ts +0 -41
  152. package/src/data-plane/client/hosts.ts +0 -103
  153. package/src/data-plane/client/index.ts +0 -125
  154. package/src/data-plane/client/util.test.ts +0 -29
  155. package/src/data-plane/client/util.ts +0 -74
  156. package/src/data-plane/index.ts +0 -2
  157. package/src/data-plane/server/background.ts +0 -66
  158. package/src/data-plane/server/bsync-subscription.ts +0 -590
  159. package/src/data-plane/server/db/database-schema.ts +0 -90
  160. package/src/data-plane/server/db/db.ts +0 -204
  161. package/src/data-plane/server/db/index.ts +0 -2
  162. package/src/data-plane/server/db/migrations/20230309T045948368Z-init.ts +0 -305
  163. package/src/data-plane/server/db/migrations/20230408T152211201Z-notification-init.ts +0 -25
  164. package/src/data-plane/server/db/migrations/20230417T210628672Z-moderation-init.ts +0 -127
  165. package/src/data-plane/server/db/migrations/20230420T211446071Z-did-cache.ts +0 -14
  166. package/src/data-plane/server/db/migrations/20230427T194702079Z-notif-record-index.ts +0 -14
  167. package/src/data-plane/server/db/migrations/20230605T144730094Z-post-profile-aggs.ts +0 -23
  168. package/src/data-plane/server/db/migrations/20230607T211442112Z-feed-generator-init.ts +0 -34
  169. package/src/data-plane/server/db/migrations/20230608T155101190Z-algo-whats-hot-view.ts +0 -85
  170. package/src/data-plane/server/db/migrations/20230608T201813132Z-mute-lists.ts +0 -78
  171. package/src/data-plane/server/db/migrations/20230608T205147239Z-mutes.ts +0 -15
  172. package/src/data-plane/server/db/migrations/20230609T153623961Z-blocks.ts +0 -33
  173. package/src/data-plane/server/db/migrations/20230609T232122649Z-actor-deletion-indexes.ts +0 -27
  174. package/src/data-plane/server/db/migrations/20230610T203555962Z-suggested-follows.ts +0 -13
  175. package/src/data-plane/server/db/migrations/20230611T215300060Z-actor-state.ts +0 -13
  176. package/src/data-plane/server/db/migrations/20230620T161134972Z-post-langs.ts +0 -9
  177. package/src/data-plane/server/db/migrations/20230627T212437895Z-optional-handle.ts +0 -15
  178. package/src/data-plane/server/db/migrations/20230629T220835893Z-remove-post-hierarchy.ts +0 -32
  179. package/src/data-plane/server/db/migrations/20230703T045536691Z-feed-and-label-indices.ts +0 -31
  180. package/src/data-plane/server/db/migrations/20230720T164800037Z-posts-cursor-idx.ts +0 -19
  181. package/src/data-plane/server/db/migrations/20230807T035309811Z-feed-item-delete-invite-for-user-idx.ts +0 -14
  182. package/src/data-plane/server/db/migrations/20230808T172902639Z-repo-rev.ts +0 -12
  183. package/src/data-plane/server/db/migrations/20230810T203349843Z-action-duration.ts +0 -23
  184. package/src/data-plane/server/db/migrations/20230817T195936007Z-native-notifications.ts +0 -16
  185. package/src/data-plane/server/db/migrations/20230830T205507322Z-suggested-feeds.ts +0 -13
  186. package/src/data-plane/server/db/migrations/20230904T211011773Z-block-lists.ts +0 -24
  187. package/src/data-plane/server/db/migrations/20230906T222220386Z-thread-gating.ts +0 -27
  188. package/src/data-plane/server/db/migrations/20230920T213858047Z-add-tags-to-post.ts +0 -9
  189. package/src/data-plane/server/db/migrations/20230929T192920807Z-record-cursor-indexes.ts +0 -40
  190. package/src/data-plane/server/db/migrations/20231003T202833377Z-create-moderation-subject-status.ts +0 -123
  191. package/src/data-plane/server/db/migrations/20231220T225126090Z-blob-takedowns.ts +0 -66
  192. package/src/data-plane/server/db/migrations/20240124T023719200Z-tagged-suggestions.ts +0 -15
  193. package/src/data-plane/server/db/migrations/20240226T225725627Z-labelers.ts +0 -27
  194. package/src/data-plane/server/db/migrations/20240530T170337073Z-account-deactivation.ts +0 -12
  195. package/src/data-plane/server/db/migrations/20240606T171229898Z-thread-mutes.ts +0 -15
  196. package/src/data-plane/server/db/migrations/20240606T222548219Z-starter-packs.ts +0 -45
  197. package/src/data-plane/server/db/migrations/20240719T203853939Z-priority-notifs.ts +0 -25
  198. package/src/data-plane/server/db/migrations/20240723T220700077Z-quotes-post-aggs.ts +0 -12
  199. package/src/data-plane/server/db/migrations/20240723T220703655Z-quotes.ts +0 -28
  200. package/src/data-plane/server/db/migrations/20240801T193939827Z-post-gate.ts +0 -17
  201. package/src/data-plane/server/db/migrations/20240808T224251220Z-post-gate-flags.ts +0 -25
  202. package/src/data-plane/server/db/migrations/20240829T211238293Z-simplify-actor-sync.ts +0 -23
  203. package/src/data-plane/server/db/migrations/20240831T134810923Z-pinned-posts.ts +0 -17
  204. package/src/data-plane/server/db/migrations/20241114T153108102Z-add-starter-packs-name.ts +0 -19
  205. package/src/data-plane/server/db/migrations/20250116T222618297Z-post-embed-video.ts +0 -17
  206. package/src/data-plane/server/db/migrations/20250207T174822012Z-add-label-exp.ts +0 -9
  207. package/src/data-plane/server/db/migrations/20250404T163421487Z-verifications.ts +0 -39
  208. package/src/data-plane/server/db/migrations/20250526T023712742Z-like-repost-via.ts +0 -17
  209. package/src/data-plane/server/db/migrations/20250528T221913281Z-add-record-tags.ts +0 -9
  210. package/src/data-plane/server/db/migrations/20250602T190357447Z-add-private-data.ts +0 -22
  211. package/src/data-plane/server/db/migrations/20250611T140649895Z-add-activity-subscription.ts +0 -22
  212. package/src/data-plane/server/db/migrations/20250627T025331240Z-add-actor-age-assurance-columns.ts +0 -22
  213. package/src/data-plane/server/db/migrations/20250812T183735692Z-add-bookmarks.ts +0 -23
  214. package/src/data-plane/server/db/migrations/20250813T174955711Z-add-post-agg-bookmarks.ts +0 -12
  215. package/src/data-plane/server/db/migrations/20251120T004738098Z-update-actor-age-assurance-v2.ts +0 -28
  216. package/src/data-plane/server/db/migrations/20260112T133951271Z-add-drafts.ts +0 -24
  217. package/src/data-plane/server/db/migrations/20260604T224952774Z-post-embed-gallery-image.ts +0 -19
  218. package/src/data-plane/server/db/migrations/index.ts +0 -60
  219. package/src/data-plane/server/db/migrations/provider.ts +0 -26
  220. package/src/data-plane/server/db/pagination.ts +0 -341
  221. package/src/data-plane/server/db/tables/activity-subscription.ts +0 -12
  222. package/src/data-plane/server/db/tables/actor-block.ts +0 -14
  223. package/src/data-plane/server/db/tables/actor-state.ts +0 -10
  224. package/src/data-plane/server/db/tables/actor-sync.ts +0 -9
  225. package/src/data-plane/server/db/tables/actor.ts +0 -19
  226. package/src/data-plane/server/db/tables/algo.ts +0 -11
  227. package/src/data-plane/server/db/tables/blob-takedown.ts +0 -9
  228. package/src/data-plane/server/db/tables/bookmark.ts +0 -11
  229. package/src/data-plane/server/db/tables/did-cache.ts +0 -13
  230. package/src/data-plane/server/db/tables/draft.ts +0 -11
  231. package/src/data-plane/server/db/tables/duplicate-record.ts +0 -12
  232. package/src/data-plane/server/db/tables/feed-generator.ts +0 -21
  233. package/src/data-plane/server/db/tables/feed-item.ts +0 -12
  234. package/src/data-plane/server/db/tables/follow.ts +0 -15
  235. package/src/data-plane/server/db/tables/label.ts +0 -13
  236. package/src/data-plane/server/db/tables/labeler.ts +0 -16
  237. package/src/data-plane/server/db/tables/like.ts +0 -18
  238. package/src/data-plane/server/db/tables/list-block.ts +0 -15
  239. package/src/data-plane/server/db/tables/list-item.ts +0 -16
  240. package/src/data-plane/server/db/tables/list-mute.ts +0 -9
  241. package/src/data-plane/server/db/tables/list.ts +0 -19
  242. package/src/data-plane/server/db/tables/mute.ts +0 -9
  243. package/src/data-plane/server/db/tables/notification-push-token.ts +0 -10
  244. package/src/data-plane/server/db/tables/notification.ts +0 -16
  245. package/src/data-plane/server/db/tables/post-agg.ts +0 -16
  246. package/src/data-plane/server/db/tables/post-embed.ts +0 -47
  247. package/src/data-plane/server/db/tables/post-gate.ts +0 -12
  248. package/src/data-plane/server/db/tables/post.ts +0 -28
  249. package/src/data-plane/server/db/tables/private-data.ts +0 -13
  250. package/src/data-plane/server/db/tables/profile-agg.ts +0 -14
  251. package/src/data-plane/server/db/tables/profile.ts +0 -17
  252. package/src/data-plane/server/db/tables/quote.ts +0 -15
  253. package/src/data-plane/server/db/tables/record.ts +0 -15
  254. package/src/data-plane/server/db/tables/repost.ts +0 -18
  255. package/src/data-plane/server/db/tables/starter-pack.ts +0 -17
  256. package/src/data-plane/server/db/tables/subscription.ts +0 -9
  257. package/src/data-plane/server/db/tables/suggested-feed.ts +0 -10
  258. package/src/data-plane/server/db/tables/suggested-follow.ts +0 -10
  259. package/src/data-plane/server/db/tables/tagged-suggestion.ts +0 -11
  260. package/src/data-plane/server/db/tables/thread-gate.ts +0 -12
  261. package/src/data-plane/server/db/tables/thread-mute.ts +0 -9
  262. package/src/data-plane/server/db/tables/verification.ts +0 -20
  263. package/src/data-plane/server/db/tables/view-param.ts +0 -12
  264. package/src/data-plane/server/db/types.ts +0 -12
  265. package/src/data-plane/server/db/util.ts +0 -67
  266. package/src/data-plane/server/index.ts +0 -44
  267. package/src/data-plane/server/indexing/index.ts +0 -458
  268. package/src/data-plane/server/indexing/plugins/block.ts +0 -84
  269. package/src/data-plane/server/indexing/plugins/chat-declaration.ts +0 -60
  270. package/src/data-plane/server/indexing/plugins/feed-generator.ts +0 -80
  271. package/src/data-plane/server/indexing/plugins/follow.ts +0 -132
  272. package/src/data-plane/server/indexing/plugins/germ-declaration.ts +0 -57
  273. package/src/data-plane/server/indexing/plugins/labeler.ts +0 -74
  274. package/src/data-plane/server/indexing/plugins/like.ts +0 -151
  275. package/src/data-plane/server/indexing/plugins/list-block.ts +0 -84
  276. package/src/data-plane/server/indexing/plugins/list-item.ts +0 -92
  277. package/src/data-plane/server/indexing/plugins/list.ts +0 -80
  278. package/src/data-plane/server/indexing/plugins/notif-declaration.ts +0 -57
  279. package/src/data-plane/server/indexing/plugins/post-gate.ts +0 -101
  280. package/src/data-plane/server/indexing/plugins/post.ts +0 -675
  281. package/src/data-plane/server/indexing/plugins/profile.ts +0 -90
  282. package/src/data-plane/server/indexing/plugins/repost.ts +0 -176
  283. package/src/data-plane/server/indexing/plugins/starter-pack.ts +0 -74
  284. package/src/data-plane/server/indexing/plugins/status.ts +0 -57
  285. package/src/data-plane/server/indexing/plugins/thread-gate.ts +0 -101
  286. package/src/data-plane/server/indexing/plugins/verification.ts +0 -113
  287. package/src/data-plane/server/indexing/processor.ts +0 -292
  288. package/src/data-plane/server/routes/activity-subscription.ts +0 -84
  289. package/src/data-plane/server/routes/blocks.ts +0 -127
  290. package/src/data-plane/server/routes/bookmarks.ts +0 -83
  291. package/src/data-plane/server/routes/drafts.ts +0 -37
  292. package/src/data-plane/server/routes/feed-gens.ts +0 -89
  293. package/src/data-plane/server/routes/feeds.ts +0 -176
  294. package/src/data-plane/server/routes/follows.ts +0 -141
  295. package/src/data-plane/server/routes/identity.ts +0 -59
  296. package/src/data-plane/server/routes/index.ts +0 -67
  297. package/src/data-plane/server/routes/interactions.ts +0 -120
  298. package/src/data-plane/server/routes/labels.ts +0 -55
  299. package/src/data-plane/server/routes/likes.ts +0 -92
  300. package/src/data-plane/server/routes/lists.ts +0 -88
  301. package/src/data-plane/server/routes/moderation.ts +0 -102
  302. package/src/data-plane/server/routes/mutes.ts +0 -195
  303. package/src/data-plane/server/routes/notifs.ts +0 -239
  304. package/src/data-plane/server/routes/profile.ts +0 -220
  305. package/src/data-plane/server/routes/quotes.ts +0 -32
  306. package/src/data-plane/server/routes/records.ts +0 -119
  307. package/src/data-plane/server/routes/relationships.ts +0 -174
  308. package/src/data-plane/server/routes/reposts.ts +0 -76
  309. package/src/data-plane/server/routes/search.ts +0 -181
  310. package/src/data-plane/server/routes/site-standard.ts +0 -12
  311. package/src/data-plane/server/routes/sitemap.ts +0 -43
  312. package/src/data-plane/server/routes/starter-packs.ts +0 -32
  313. package/src/data-plane/server/routes/suggestions.ts +0 -175
  314. package/src/data-plane/server/routes/sync.ts +0 -16
  315. package/src/data-plane/server/routes/threads.ts +0 -33
  316. package/src/data-plane/server/subscription.ts +0 -152
  317. package/src/data-plane/server/util.ts +0 -202
  318. package/src/error.ts +0 -12
  319. package/src/etcd.ts +0 -90
  320. package/src/feature-gates/README.md +0 -83
  321. package/src/feature-gates/gates.ts +0 -25
  322. package/src/feature-gates/index.ts +0 -235
  323. package/src/feature-gates/metrics.test.ts +0 -196
  324. package/src/feature-gates/metrics.ts +0 -107
  325. package/src/feature-gates/types.ts +0 -62
  326. package/src/feature-gates/utils.test.ts +0 -66
  327. package/src/feature-gates/utils.ts +0 -135
  328. package/src/hydration/actor.ts +0 -578
  329. package/src/hydration/external.test.ts +0 -281
  330. package/src/hydration/external.ts +0 -268
  331. package/src/hydration/feed.ts +0 -455
  332. package/src/hydration/graph.ts +0 -354
  333. package/src/hydration/hydrator.ts +0 -1835
  334. package/src/hydration/label.ts +0 -207
  335. package/src/hydration/util.ts +0 -199
  336. package/src/image/index.ts +0 -2
  337. package/src/image/invalidator.ts +0 -33
  338. package/src/image/logger.ts +0 -6
  339. package/src/image/server.ts +0 -228
  340. package/src/image/sharp.ts +0 -89
  341. package/src/image/uri.ts +0 -114
  342. package/src/image/util.ts +0 -41
  343. package/src/index.ts +0 -312
  344. package/src/kws.ts +0 -197
  345. package/src/logger.ts +0 -40
  346. package/src/pipeline.ts +0 -60
  347. package/src/redis.ts +0 -205
  348. package/src/rolodex.ts +0 -42
  349. package/src/stash.ts +0 -76
  350. package/src/util/debug.ts +0 -10
  351. package/src/util/http.ts +0 -42
  352. package/src/util/retry.ts +0 -10
  353. package/src/util/standard-site.test.ts +0 -423
  354. package/src/util/standard-site.ts +0 -196
  355. package/src/util/uris.ts +0 -38
  356. package/src/util.ts +0 -48
  357. package/src/views/index.ts +0 -2783
  358. package/src/views/threads-v2.ts +0 -510
  359. package/src/views/types.ts +0 -193
  360. package/src/views/util.ts +0 -114
  361. package/test.env +0 -2
  362. package/tests/__snapshots__/feed-generation.test.ts.snap +0 -2510
  363. package/tests/_util.ts +0 -292
  364. package/tests/admin/admin-auth.test.ts +0 -190
  365. package/tests/admin/moderation.test.ts +0 -222
  366. package/tests/auth.test.ts +0 -90
  367. package/tests/blob-resolver.test.ts +0 -125
  368. package/tests/data-plane/__snapshots__/indexing.test.ts.snap +0 -887
  369. package/tests/data-plane/db.test.ts +0 -189
  370. package/tests/data-plane/duplicate-records.test.ts +0 -156
  371. package/tests/data-plane/handle-invalidation.test.ts +0 -153
  372. package/tests/data-plane/indexing.test.ts +0 -827
  373. package/tests/data-plane/subscription.test.ts +0 -128
  374. package/tests/data-plane/thread-mutes.test.ts +0 -175
  375. package/tests/entryway-auth.test.ts +0 -177
  376. package/tests/etcd.test.ts +0 -302
  377. package/tests/feed-generation.test.ts +0 -965
  378. package/tests/hydration/util.test.ts +0 -119
  379. package/tests/image/server.test.ts +0 -97
  380. package/tests/image/sharp.test.ts +0 -199
  381. package/tests/image/uri.test.ts +0 -106
  382. package/tests/label-hydration.test.ts +0 -245
  383. package/tests/postgates.test.ts +0 -182
  384. package/tests/query-labels.test.ts +0 -85
  385. package/tests/redis-cache.test.ts +0 -230
  386. package/tests/seed/feed-hidden-replies.ts +0 -63
  387. package/tests/seed/get-suggested-starter-packs.ts +0 -64
  388. package/tests/seed/get-trends.ts +0 -71
  389. package/tests/seed/known-followers.ts +0 -111
  390. package/tests/seed/postgates.ts +0 -57
  391. package/tests/server.test.ts +0 -115
  392. package/tests/sitemap.test.ts +0 -75
  393. package/tests/stash.test.ts +0 -180
  394. package/tests/utils.test.ts +0 -36
  395. package/tests/views/__snapshots__/actor-search.test.ts.snap +0 -155
  396. package/tests/views/__snapshots__/author-feed.test.ts.snap +0 -6301
  397. package/tests/views/__snapshots__/block-lists.test.ts.snap +0 -690
  398. package/tests/views/__snapshots__/blocks.test.ts.snap +0 -462
  399. package/tests/views/__snapshots__/bookmarks.test.ts.snap +0 -379
  400. package/tests/views/__snapshots__/follows.test.ts.snap +0 -798
  401. package/tests/views/__snapshots__/labeler-service.test.ts.snap +0 -233
  402. package/tests/views/__snapshots__/likes.test.ts.snap +0 -124
  403. package/tests/views/__snapshots__/list-feed.test.ts.snap +0 -883
  404. package/tests/views/__snapshots__/lists.test.ts.snap +0 -650
  405. package/tests/views/__snapshots__/mute-lists.test.ts.snap +0 -705
  406. package/tests/views/__snapshots__/mutes.test.ts.snap +0 -353
  407. package/tests/views/__snapshots__/notifications.test.ts.snap +0 -3074
  408. package/tests/views/__snapshots__/posts.test.ts.snap +0 -1019
  409. package/tests/views/__snapshots__/profile.test.ts.snap +0 -811
  410. package/tests/views/__snapshots__/quotes.test.ts.snap +0 -445
  411. package/tests/views/__snapshots__/reposts.test.ts.snap +0 -112
  412. package/tests/views/__snapshots__/starter-packs.test.ts.snap +0 -836
  413. package/tests/views/__snapshots__/thread-v2.test.ts.snap +0 -1298
  414. package/tests/views/__snapshots__/thread.test.ts.snap +0 -2051
  415. package/tests/views/__snapshots__/threadgating.test.ts.snap +0 -189
  416. package/tests/views/__snapshots__/timeline.test.ts.snap +0 -7252
  417. package/tests/views/account-deactivation.test.ts +0 -81
  418. package/tests/views/actor-likes.test.ts +0 -138
  419. package/tests/views/actor-search.test.ts +0 -261
  420. package/tests/views/age-assurance-v2.test.ts +0 -823
  421. package/tests/views/age-assurance.test.ts +0 -479
  422. package/tests/views/author-feed.test.ts +0 -694
  423. package/tests/views/block-lists.test.ts +0 -661
  424. package/tests/views/blocks.test.ts +0 -889
  425. package/tests/views/bookmarks.test.ts +0 -345
  426. package/tests/views/drafts.test.ts +0 -430
  427. package/tests/views/feed-hidden-replies.test.ts +0 -243
  428. package/tests/views/feed-view-post.test.ts +0 -501
  429. package/tests/views/follows.test.ts +0 -372
  430. package/tests/views/get-config.test.ts +0 -64
  431. package/tests/views/get-suggested-onboarding-users.test.ts +0 -193
  432. package/tests/views/get-suggested-starter-packs.test.ts +0 -137
  433. package/tests/views/get-trends.test.ts +0 -141
  434. package/tests/views/internal-actor.test.ts +0 -127
  435. package/tests/views/known-followers.test.ts +0 -193
  436. package/tests/views/labeler-service.test.ts +0 -242
  437. package/tests/views/labels-needs-review.test.ts +0 -316
  438. package/tests/views/labels-takedown.test.ts +0 -247
  439. package/tests/views/likes.test.ts +0 -192
  440. package/tests/views/list-feed.test.ts +0 -195
  441. package/tests/views/lists.test.ts +0 -412
  442. package/tests/views/mute-lists.test.ts +0 -509
  443. package/tests/views/mutes.test.ts +0 -308
  444. package/tests/views/notifications.test.ts +0 -1581
  445. package/tests/views/post-search.test.ts +0 -281
  446. package/tests/views/posts-debug.test.ts +0 -79
  447. package/tests/views/posts.test.ts +0 -427
  448. package/tests/views/profile-debug.test.ts +0 -75
  449. package/tests/views/profile.test.ts +0 -795
  450. package/tests/views/quotes.test.ts +0 -133
  451. package/tests/views/reposts.test.ts +0 -112
  452. package/tests/views/starter-packs.test.ts +0 -395
  453. package/tests/views/suggestions.test.ts +0 -145
  454. package/tests/views/thread-v2.test.ts +0 -2005
  455. package/tests/views/thread.test.ts +0 -637
  456. package/tests/views/threadgating.test.ts +0 -843
  457. package/tests/views/timeline.test.ts +0 -328
  458. package/tests/views/verification.test.ts +0 -296
  459. package/tsconfig.build.json +0 -10
  460. package/tsconfig.build.tsbuildinfo +0 -1
  461. package/tsconfig.json +0 -7
  462. package/tsconfig.tests.json +0 -8
  463. 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
- }