@atproto/bsky 0.0.254 → 0.0.255
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.
- package/CHANGELOG.md +22 -0
- package/dist/api/age-assurance/index.d.ts +1 -1
- package/dist/api/age-assurance/index.d.ts.map +1 -1
- package/dist/api/age-assurance/index.js.map +1 -1
- package/dist/api/age-assurance/redirects/kws-age-verified.d.ts +2 -2
- package/dist/api/age-assurance/redirects/kws-age-verified.d.ts.map +1 -1
- package/dist/api/age-assurance/redirects/kws-age-verified.js.map +1 -1
- package/dist/api/age-assurance/stash.d.ts +2 -2
- package/dist/api/age-assurance/stash.d.ts.map +1 -1
- package/dist/api/age-assurance/stash.js.map +1 -1
- package/dist/api/age-assurance/types.d.ts +3 -3
- package/dist/api/age-assurance/types.d.ts.map +1 -1
- package/dist/api/age-assurance/types.js.map +1 -1
- package/dist/api/age-assurance/util.d.ts +2 -2
- package/dist/api/age-assurance/util.d.ts.map +1 -1
- package/dist/api/age-assurance/util.js.map +1 -1
- package/dist/api/age-assurance/webhooks/kws-age-verified.d.ts +2 -2
- package/dist/api/age-assurance/webhooks/kws-age-verified.d.ts.map +1 -1
- package/dist/api/age-assurance/webhooks/kws-age-verified.js.map +1 -1
- package/dist/api/app/bsky/actor/getProfile.d.ts +2 -2
- package/dist/api/app/bsky/actor/getProfile.d.ts.map +1 -1
- package/dist/api/app/bsky/actor/getProfile.js.map +1 -1
- package/dist/api/app/bsky/actor/getProfiles.d.ts +2 -2
- package/dist/api/app/bsky/actor/getProfiles.d.ts.map +1 -1
- package/dist/api/app/bsky/actor/getProfiles.js.map +1 -1
- package/dist/api/app/bsky/actor/getSuggestions.d.ts +2 -2
- package/dist/api/app/bsky/actor/getSuggestions.d.ts.map +1 -1
- package/dist/api/app/bsky/actor/getSuggestions.js.map +1 -1
- package/dist/api/app/bsky/actor/searchActors.d.ts +2 -2
- package/dist/api/app/bsky/actor/searchActors.d.ts.map +1 -1
- package/dist/api/app/bsky/actor/searchActors.js.map +1 -1
- package/dist/api/app/bsky/actor/searchActorsTypeahead.d.ts +2 -2
- package/dist/api/app/bsky/actor/searchActorsTypeahead.d.ts.map +1 -1
- package/dist/api/app/bsky/actor/searchActorsTypeahead.js.map +1 -1
- package/dist/api/app/bsky/ageassurance/begin.d.ts +2 -2
- package/dist/api/app/bsky/ageassurance/begin.d.ts.map +1 -1
- package/dist/api/app/bsky/ageassurance/begin.js.map +1 -1
- package/dist/api/app/bsky/ageassurance/getConfig.d.ts +2 -2
- package/dist/api/app/bsky/ageassurance/getConfig.d.ts.map +1 -1
- package/dist/api/app/bsky/ageassurance/getConfig.js.map +1 -1
- package/dist/api/app/bsky/ageassurance/getState.d.ts +2 -2
- package/dist/api/app/bsky/ageassurance/getState.d.ts.map +1 -1
- package/dist/api/app/bsky/ageassurance/getState.js.map +1 -1
- package/dist/api/app/bsky/bookmark/createBookmark.d.ts +2 -2
- package/dist/api/app/bsky/bookmark/createBookmark.d.ts.map +1 -1
- package/dist/api/app/bsky/bookmark/createBookmark.js.map +1 -1
- package/dist/api/app/bsky/bookmark/deleteBookmark.d.ts +2 -2
- package/dist/api/app/bsky/bookmark/deleteBookmark.d.ts.map +1 -1
- package/dist/api/app/bsky/bookmark/deleteBookmark.js.map +1 -1
- package/dist/api/app/bsky/bookmark/getBookmarks.d.ts +2 -2
- package/dist/api/app/bsky/bookmark/getBookmarks.d.ts.map +1 -1
- package/dist/api/app/bsky/bookmark/getBookmarks.js.map +1 -1
- package/dist/api/app/bsky/contact/dismissMatch.d.ts +2 -2
- package/dist/api/app/bsky/contact/dismissMatch.d.ts.map +1 -1
- package/dist/api/app/bsky/contact/dismissMatch.js.map +1 -1
- package/dist/api/app/bsky/contact/getMatches.d.ts +2 -2
- package/dist/api/app/bsky/contact/getMatches.d.ts.map +1 -1
- package/dist/api/app/bsky/contact/getMatches.js.map +1 -1
- package/dist/api/app/bsky/contact/getSyncStatus.d.ts +2 -2
- package/dist/api/app/bsky/contact/getSyncStatus.d.ts.map +1 -1
- package/dist/api/app/bsky/contact/getSyncStatus.js.map +1 -1
- package/dist/api/app/bsky/contact/importContacts.d.ts +2 -2
- package/dist/api/app/bsky/contact/importContacts.d.ts.map +1 -1
- package/dist/api/app/bsky/contact/importContacts.js.map +1 -1
- package/dist/api/app/bsky/contact/removeData.d.ts +2 -2
- package/dist/api/app/bsky/contact/removeData.d.ts.map +1 -1
- package/dist/api/app/bsky/contact/removeData.js.map +1 -1
- package/dist/api/app/bsky/contact/sendNotification.d.ts +2 -2
- package/dist/api/app/bsky/contact/sendNotification.d.ts.map +1 -1
- package/dist/api/app/bsky/contact/sendNotification.js.map +1 -1
- package/dist/api/app/bsky/contact/startPhoneVerification.d.ts +2 -2
- package/dist/api/app/bsky/contact/startPhoneVerification.d.ts.map +1 -1
- package/dist/api/app/bsky/contact/startPhoneVerification.js.map +1 -1
- package/dist/api/app/bsky/contact/util.d.ts +2 -2
- package/dist/api/app/bsky/contact/util.d.ts.map +1 -1
- package/dist/api/app/bsky/contact/util.js.map +1 -1
- package/dist/api/app/bsky/contact/verifyPhone.d.ts +2 -2
- package/dist/api/app/bsky/contact/verifyPhone.d.ts.map +1 -1
- package/dist/api/app/bsky/contact/verifyPhone.js.map +1 -1
- package/dist/api/app/bsky/draft/createDraft.d.ts +2 -2
- package/dist/api/app/bsky/draft/createDraft.d.ts.map +1 -1
- package/dist/api/app/bsky/draft/createDraft.js.map +1 -1
- package/dist/api/app/bsky/draft/deleteDraft.d.ts +2 -2
- package/dist/api/app/bsky/draft/deleteDraft.d.ts.map +1 -1
- package/dist/api/app/bsky/draft/deleteDraft.js.map +1 -1
- package/dist/api/app/bsky/draft/getDrafts.d.ts +2 -2
- package/dist/api/app/bsky/draft/getDrafts.d.ts.map +1 -1
- package/dist/api/app/bsky/draft/getDrafts.js.map +1 -1
- package/dist/api/app/bsky/draft/updateDraft.d.ts +2 -2
- package/dist/api/app/bsky/draft/updateDraft.d.ts.map +1 -1
- package/dist/api/app/bsky/draft/updateDraft.js.map +1 -1
- package/dist/api/app/bsky/embed/getEmbedExternalView.d.ts +2 -2
- package/dist/api/app/bsky/embed/getEmbedExternalView.d.ts.map +1 -1
- package/dist/api/app/bsky/embed/getEmbedExternalView.js.map +1 -1
- package/dist/api/app/bsky/feed/getActorFeeds.d.ts +2 -2
- package/dist/api/app/bsky/feed/getActorFeeds.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getActorFeeds.js.map +1 -1
- package/dist/api/app/bsky/feed/getActorLikes.d.ts +2 -2
- package/dist/api/app/bsky/feed/getActorLikes.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getActorLikes.js.map +1 -1
- package/dist/api/app/bsky/feed/getAuthorFeed.d.ts +7 -7
- package/dist/api/app/bsky/feed/getAuthorFeed.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getAuthorFeed.js.map +1 -1
- package/dist/api/app/bsky/feed/getFeed.d.ts +3 -3
- package/dist/api/app/bsky/feed/getFeed.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getFeed.js.map +1 -1
- package/dist/api/app/bsky/feed/getFeedGenerator.d.ts +2 -2
- package/dist/api/app/bsky/feed/getFeedGenerator.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getFeedGenerator.js.map +1 -1
- package/dist/api/app/bsky/feed/getFeedGenerators.d.ts +2 -2
- package/dist/api/app/bsky/feed/getFeedGenerators.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getFeedGenerators.js.map +1 -1
- package/dist/api/app/bsky/feed/getLikes.d.ts +2 -2
- package/dist/api/app/bsky/feed/getLikes.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getLikes.js.map +1 -1
- package/dist/api/app/bsky/feed/getListFeed.d.ts +6 -6
- package/dist/api/app/bsky/feed/getListFeed.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getListFeed.js.map +1 -1
- package/dist/api/app/bsky/feed/getPostThread.d.ts +2 -2
- package/dist/api/app/bsky/feed/getPostThread.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getPostThread.js.map +1 -1
- package/dist/api/app/bsky/feed/getPosts.d.ts +2 -2
- package/dist/api/app/bsky/feed/getPosts.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getPosts.js.map +1 -1
- package/dist/api/app/bsky/feed/getQuotes.d.ts +2 -2
- package/dist/api/app/bsky/feed/getQuotes.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getQuotes.js.map +1 -1
- package/dist/api/app/bsky/feed/getRepostedBy.d.ts +2 -2
- package/dist/api/app/bsky/feed/getRepostedBy.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getRepostedBy.js.map +1 -1
- package/dist/api/app/bsky/feed/getSuggestedFeeds.d.ts +2 -2
- package/dist/api/app/bsky/feed/getSuggestedFeeds.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getSuggestedFeeds.js.map +1 -1
- package/dist/api/app/bsky/feed/getTimeline.d.ts +6 -6
- package/dist/api/app/bsky/feed/getTimeline.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getTimeline.js.map +1 -1
- package/dist/api/app/bsky/feed/searchPosts.d.ts +2 -2
- package/dist/api/app/bsky/feed/searchPosts.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/searchPosts.js +11 -3
- package/dist/api/app/bsky/feed/searchPosts.js.map +1 -1
- package/dist/api/app/bsky/feed/searchPostsV2.d.ts +2 -2
- package/dist/api/app/bsky/feed/searchPostsV2.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/searchPostsV2.js +10 -2
- package/dist/api/app/bsky/feed/searchPostsV2.js.map +1 -1
- package/dist/api/app/bsky/graph/getActorStarterPacks.d.ts +2 -2
- package/dist/api/app/bsky/graph/getActorStarterPacks.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/getActorStarterPacks.js.map +1 -1
- package/dist/api/app/bsky/graph/getBlocks.d.ts +2 -2
- package/dist/api/app/bsky/graph/getBlocks.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/getBlocks.js.map +1 -1
- package/dist/api/app/bsky/graph/getFollowers.d.ts +2 -2
- package/dist/api/app/bsky/graph/getFollowers.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/getFollowers.js.map +1 -1
- package/dist/api/app/bsky/graph/getFollows.d.ts +2 -2
- package/dist/api/app/bsky/graph/getFollows.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/getFollows.js.map +1 -1
- package/dist/api/app/bsky/graph/getKnownFollowers.d.ts +2 -2
- package/dist/api/app/bsky/graph/getKnownFollowers.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/getKnownFollowers.js.map +1 -1
- package/dist/api/app/bsky/graph/getList.d.ts +2 -2
- package/dist/api/app/bsky/graph/getList.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/getList.js.map +1 -1
- package/dist/api/app/bsky/graph/getListBlocks.d.ts +2 -2
- package/dist/api/app/bsky/graph/getListBlocks.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/getListBlocks.js.map +1 -1
- package/dist/api/app/bsky/graph/getListMutes.d.ts +2 -2
- package/dist/api/app/bsky/graph/getListMutes.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/getListMutes.js.map +1 -1
- package/dist/api/app/bsky/graph/getLists.d.ts +2 -2
- package/dist/api/app/bsky/graph/getLists.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/getLists.js.map +1 -1
- package/dist/api/app/bsky/graph/getListsWithMembership.d.ts +2 -2
- package/dist/api/app/bsky/graph/getListsWithMembership.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/getListsWithMembership.js.map +1 -1
- package/dist/api/app/bsky/graph/getMutes.d.ts +2 -2
- package/dist/api/app/bsky/graph/getMutes.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/getMutes.js.map +1 -1
- package/dist/api/app/bsky/graph/getRelationships.d.ts +2 -2
- package/dist/api/app/bsky/graph/getRelationships.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/getRelationships.js.map +1 -1
- package/dist/api/app/bsky/graph/getStarterPack.d.ts +2 -2
- package/dist/api/app/bsky/graph/getStarterPack.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/getStarterPack.js.map +1 -1
- package/dist/api/app/bsky/graph/getStarterPacks.d.ts +2 -2
- package/dist/api/app/bsky/graph/getStarterPacks.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/getStarterPacks.js.map +1 -1
- package/dist/api/app/bsky/graph/getStarterPacksWithMembership.d.ts +2 -2
- package/dist/api/app/bsky/graph/getStarterPacksWithMembership.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/getStarterPacksWithMembership.js.map +1 -1
- package/dist/api/app/bsky/graph/getSuggestedFollowsByActor.d.ts +2 -2
- package/dist/api/app/bsky/graph/getSuggestedFollowsByActor.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/getSuggestedFollowsByActor.js.map +1 -1
- package/dist/api/app/bsky/graph/muteActor.d.ts +2 -2
- package/dist/api/app/bsky/graph/muteActor.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/muteActor.js.map +1 -1
- package/dist/api/app/bsky/graph/muteActorList.d.ts +2 -2
- package/dist/api/app/bsky/graph/muteActorList.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/muteActorList.js.map +1 -1
- package/dist/api/app/bsky/graph/muteThread.d.ts +2 -2
- package/dist/api/app/bsky/graph/muteThread.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/muteThread.js.map +1 -1
- package/dist/api/app/bsky/graph/searchStarterPacks.d.ts +2 -2
- package/dist/api/app/bsky/graph/searchStarterPacks.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/searchStarterPacks.js.map +1 -1
- package/dist/api/app/bsky/graph/unmuteActor.d.ts +2 -2
- package/dist/api/app/bsky/graph/unmuteActor.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/unmuteActor.js.map +1 -1
- package/dist/api/app/bsky/graph/unmuteActorList.d.ts +2 -2
- package/dist/api/app/bsky/graph/unmuteActorList.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/unmuteActorList.js.map +1 -1
- package/dist/api/app/bsky/graph/unmuteThread.d.ts +2 -2
- package/dist/api/app/bsky/graph/unmuteThread.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/unmuteThread.js.map +1 -1
- package/dist/api/app/bsky/labeler/getServices.d.ts +2 -2
- package/dist/api/app/bsky/labeler/getServices.d.ts.map +1 -1
- package/dist/api/app/bsky/labeler/getServices.js.map +1 -1
- package/dist/api/app/bsky/notification/getPreferences.d.ts +2 -2
- package/dist/api/app/bsky/notification/getPreferences.d.ts.map +1 -1
- package/dist/api/app/bsky/notification/getPreferences.js.map +1 -1
- package/dist/api/app/bsky/notification/getUnreadCount.d.ts +2 -2
- package/dist/api/app/bsky/notification/getUnreadCount.d.ts.map +1 -1
- package/dist/api/app/bsky/notification/getUnreadCount.js.map +1 -1
- package/dist/api/app/bsky/notification/listActivitySubscriptions.d.ts +2 -2
- package/dist/api/app/bsky/notification/listActivitySubscriptions.d.ts.map +1 -1
- package/dist/api/app/bsky/notification/listActivitySubscriptions.js.map +1 -1
- package/dist/api/app/bsky/notification/listNotifications.d.ts +2 -2
- package/dist/api/app/bsky/notification/listNotifications.d.ts.map +1 -1
- package/dist/api/app/bsky/notification/listNotifications.js.map +1 -1
- package/dist/api/app/bsky/notification/putActivitySubscription.d.ts +2 -2
- package/dist/api/app/bsky/notification/putActivitySubscription.d.ts.map +1 -1
- package/dist/api/app/bsky/notification/putActivitySubscription.js.map +1 -1
- package/dist/api/app/bsky/notification/putPreferences.d.ts +2 -2
- package/dist/api/app/bsky/notification/putPreferences.d.ts.map +1 -1
- package/dist/api/app/bsky/notification/putPreferences.js.map +1 -1
- package/dist/api/app/bsky/notification/putPreferencesV2.d.ts +2 -2
- package/dist/api/app/bsky/notification/putPreferencesV2.d.ts.map +1 -1
- package/dist/api/app/bsky/notification/putPreferencesV2.js.map +1 -1
- package/dist/api/app/bsky/notification/registerPush.d.ts +2 -2
- package/dist/api/app/bsky/notification/registerPush.d.ts.map +1 -1
- package/dist/api/app/bsky/notification/registerPush.js.map +1 -1
- package/dist/api/app/bsky/notification/unregisterPush.d.ts +2 -2
- package/dist/api/app/bsky/notification/unregisterPush.d.ts.map +1 -1
- package/dist/api/app/bsky/notification/unregisterPush.js.map +1 -1
- package/dist/api/app/bsky/notification/updateSeen.d.ts +2 -2
- package/dist/api/app/bsky/notification/updateSeen.d.ts.map +1 -1
- package/dist/api/app/bsky/notification/updateSeen.js.map +1 -1
- package/dist/api/app/bsky/notification/util.d.ts +2 -2
- package/dist/api/app/bsky/notification/util.d.ts.map +1 -1
- package/dist/api/app/bsky/notification/util.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getAgeAssuranceState.d.ts +2 -2
- package/dist/api/app/bsky/unspecced/getAgeAssuranceState.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getAgeAssuranceState.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getConfig.d.ts +2 -2
- package/dist/api/app/bsky/unspecced/getConfig.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getConfig.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getOnboardingSuggestedStarterPacks.d.ts +2 -2
- package/dist/api/app/bsky/unspecced/getOnboardingSuggestedStarterPacks.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getOnboardingSuggestedStarterPacks.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getPopularFeedGenerators.d.ts +2 -2
- package/dist/api/app/bsky/unspecced/getPopularFeedGenerators.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getPopularFeedGenerators.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getPostThreadOtherV2.d.ts +2 -2
- package/dist/api/app/bsky/unspecced/getPostThreadOtherV2.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getPostThreadOtherV2.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getPostThreadV2.d.ts +2 -2
- package/dist/api/app/bsky/unspecced/getPostThreadV2.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getPostThreadV2.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getSuggestedFeeds.d.ts +2 -2
- package/dist/api/app/bsky/unspecced/getSuggestedFeeds.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getSuggestedFeeds.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getSuggestedOnboardingUsers.d.ts +2 -2
- package/dist/api/app/bsky/unspecced/getSuggestedOnboardingUsers.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getSuggestedOnboardingUsers.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getSuggestedStarterPacks.d.ts +2 -2
- package/dist/api/app/bsky/unspecced/getSuggestedStarterPacks.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getSuggestedStarterPacks.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getSuggestedUsers.d.ts +2 -2
- package/dist/api/app/bsky/unspecced/getSuggestedUsers.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getSuggestedUsers.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getSuggestedUsersForDiscover.d.ts +2 -2
- package/dist/api/app/bsky/unspecced/getSuggestedUsersForDiscover.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getSuggestedUsersForDiscover.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getSuggestedUsersForExplore.d.ts +2 -2
- package/dist/api/app/bsky/unspecced/getSuggestedUsersForExplore.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getSuggestedUsersForExplore.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getSuggestedUsersForSeeMore.d.ts +2 -2
- package/dist/api/app/bsky/unspecced/getSuggestedUsersForSeeMore.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getSuggestedUsersForSeeMore.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getTaggedSuggestions.d.ts +2 -2
- package/dist/api/app/bsky/unspecced/getTaggedSuggestions.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getTaggedSuggestions.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getTrendingTopics.d.ts +2 -2
- package/dist/api/app/bsky/unspecced/getTrendingTopics.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getTrendingTopics.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getTrends.d.ts +2 -2
- package/dist/api/app/bsky/unspecced/getTrends.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getTrends.js.map +1 -1
- package/dist/api/app/bsky/unspecced/initAgeAssurance.d.ts +2 -2
- package/dist/api/app/bsky/unspecced/initAgeAssurance.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/initAgeAssurance.js.map +1 -1
- package/dist/api/blob-dispatcher.d.ts +2 -2
- package/dist/api/blob-dispatcher.d.ts.map +1 -1
- package/dist/api/blob-dispatcher.js.map +1 -1
- package/dist/api/blob-resolver.d.ts +6 -6
- package/dist/api/blob-resolver.d.ts.map +1 -1
- package/dist/api/blob-resolver.js.map +1 -1
- package/dist/api/com/atproto/admin/getAccountInfos.d.ts +2 -2
- package/dist/api/com/atproto/admin/getAccountInfos.d.ts.map +1 -1
- package/dist/api/com/atproto/admin/getAccountInfos.js.map +1 -1
- package/dist/api/com/atproto/admin/getSubjectStatus.d.ts +2 -2
- package/dist/api/com/atproto/admin/getSubjectStatus.d.ts.map +1 -1
- package/dist/api/com/atproto/admin/getSubjectStatus.js.map +1 -1
- package/dist/api/com/atproto/admin/updateSubjectStatus.d.ts +2 -2
- package/dist/api/com/atproto/admin/updateSubjectStatus.d.ts.map +1 -1
- package/dist/api/com/atproto/admin/updateSubjectStatus.js.map +1 -1
- package/dist/api/com/atproto/identity/resolveHandle.d.ts +2 -2
- package/dist/api/com/atproto/identity/resolveHandle.d.ts.map +1 -1
- package/dist/api/com/atproto/identity/resolveHandle.js.map +1 -1
- package/dist/api/com/atproto/label/queryLabels.d.ts +2 -2
- package/dist/api/com/atproto/label/queryLabels.d.ts.map +1 -1
- package/dist/api/com/atproto/label/queryLabels.js.map +1 -1
- package/dist/api/com/atproto/repo/getRecord.d.ts +2 -2
- package/dist/api/com/atproto/repo/getRecord.d.ts.map +1 -1
- package/dist/api/com/atproto/repo/getRecord.js.map +1 -1
- package/dist/api/com/atproto/temp/fetchLabels.d.ts +2 -2
- package/dist/api/com/atproto/temp/fetchLabels.d.ts.map +1 -1
- package/dist/api/com/atproto/temp/fetchLabels.js.map +1 -1
- package/dist/api/external.d.ts +1 -1
- package/dist/api/external.d.ts.map +1 -1
- package/dist/api/external.js.map +1 -1
- package/dist/api/health.d.ts +1 -1
- package/dist/api/health.d.ts.map +1 -1
- package/dist/api/health.js.map +1 -1
- package/dist/api/index.d.ts +2 -2
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js.map +1 -1
- package/dist/api/internal/bsky/actor/getProfiles.d.ts +2 -2
- package/dist/api/internal/bsky/actor/getProfiles.d.ts.map +1 -1
- package/dist/api/internal/bsky/actor/getProfiles.js.map +1 -1
- package/dist/api/kws/api.d.ts +2 -2
- package/dist/api/kws/api.d.ts.map +1 -1
- package/dist/api/kws/api.js.map +1 -1
- package/dist/api/kws/index.d.ts +1 -1
- package/dist/api/kws/index.d.ts.map +1 -1
- package/dist/api/kws/index.js.map +1 -1
- package/dist/api/kws/types.d.ts +3 -3
- package/dist/api/kws/types.d.ts.map +1 -1
- package/dist/api/kws/types.js.map +1 -1
- package/dist/api/kws/util.d.ts +4 -4
- package/dist/api/kws/util.d.ts.map +1 -1
- package/dist/api/kws/util.js.map +1 -1
- package/dist/api/kws/webhook.d.ts +2 -2
- package/dist/api/kws/webhook.d.ts.map +1 -1
- package/dist/api/kws/webhook.js.map +1 -1
- package/dist/api/sitemap.d.ts +1 -1
- package/dist/api/sitemap.d.ts.map +1 -1
- package/dist/api/sitemap.js.map +1 -1
- package/dist/api/util.d.ts +3 -3
- package/dist/api/util.d.ts.map +1 -1
- package/dist/api/util.js.map +1 -1
- package/dist/api/well-known.d.ts +1 -1
- package/dist/api/well-known.d.ts.map +1 -1
- package/dist/api/well-known.js.map +1 -1
- package/dist/auth-verifier.d.ts +5 -5
- package/dist/auth-verifier.d.ts.map +1 -1
- package/dist/auth-verifier.js +1 -1
- package/dist/auth-verifier.js.map +1 -1
- package/dist/bsync.d.ts +2 -2
- package/dist/bsync.d.ts.map +1 -1
- package/dist/bsync.js.map +1 -1
- package/dist/cache/read-through.d.ts +1 -1
- package/dist/cache/read-through.d.ts.map +1 -1
- package/dist/cache/read-through.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +18 -18
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js.map +1 -1
- package/dist/courier.d.ts +2 -2
- package/dist/courier.d.ts.map +1 -1
- package/dist/courier.js.map +1 -1
- package/dist/data-plane/client/hosts.d.ts +1 -1
- package/dist/data-plane/client/hosts.d.ts.map +1 -1
- package/dist/data-plane/client/hosts.js.map +1 -1
- package/dist/data-plane/client/index.d.ts +2 -2
- package/dist/data-plane/client/index.d.ts.map +1 -1
- package/dist/data-plane/client/index.js.map +1 -1
- package/dist/data-plane/client/util.d.ts +1 -1
- package/dist/data-plane/client/util.d.ts.map +1 -1
- package/dist/data-plane/client/util.js.map +1 -1
- package/dist/data-plane/server/bsync-subscription.d.ts +2 -2
- package/dist/data-plane/server/bsync-subscription.d.ts.map +1 -1
- package/dist/data-plane/server/bsync-subscription.js +1 -1
- package/dist/data-plane/server/bsync-subscription.js.map +1 -1
- package/dist/data-plane/server/db/database-schema.d.ts +44 -44
- package/dist/data-plane/server/db/database-schema.d.ts.map +1 -1
- package/dist/data-plane/server/db/database-schema.js.map +1 -1
- package/dist/data-plane/server/db/db.d.ts +2 -2
- package/dist/data-plane/server/db/db.d.ts.map +1 -1
- package/dist/data-plane/server/db/db.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20230309T045948368Z-init.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20230309T045948368Z-init.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20230309T045948368Z-init.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20230408T152211201Z-notification-init.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20230408T152211201Z-notification-init.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20230408T152211201Z-notification-init.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20230417T210628672Z-moderation-init.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20230417T210628672Z-moderation-init.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20230417T210628672Z-moderation-init.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20230420T211446071Z-did-cache.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20230420T211446071Z-did-cache.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20230420T211446071Z-did-cache.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20230427T194702079Z-notif-record-index.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20230427T194702079Z-notif-record-index.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20230427T194702079Z-notif-record-index.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20230605T144730094Z-post-profile-aggs.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20230605T144730094Z-post-profile-aggs.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20230605T144730094Z-post-profile-aggs.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20230607T211442112Z-feed-generator-init.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20230607T211442112Z-feed-generator-init.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20230607T211442112Z-feed-generator-init.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20230608T155101190Z-algo-whats-hot-view.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20230608T155101190Z-algo-whats-hot-view.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20230608T155101190Z-algo-whats-hot-view.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20230608T201813132Z-mute-lists.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20230608T201813132Z-mute-lists.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20230608T201813132Z-mute-lists.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20230608T205147239Z-mutes.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20230608T205147239Z-mutes.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20230608T205147239Z-mutes.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20230609T153623961Z-blocks.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20230609T153623961Z-blocks.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20230609T153623961Z-blocks.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20230609T232122649Z-actor-deletion-indexes.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20230609T232122649Z-actor-deletion-indexes.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20230609T232122649Z-actor-deletion-indexes.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20230610T203555962Z-suggested-follows.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20230610T203555962Z-suggested-follows.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20230610T203555962Z-suggested-follows.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20230611T215300060Z-actor-state.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20230611T215300060Z-actor-state.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20230611T215300060Z-actor-state.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20230620T161134972Z-post-langs.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20230620T161134972Z-post-langs.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20230620T161134972Z-post-langs.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20230627T212437895Z-optional-handle.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20230627T212437895Z-optional-handle.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20230627T212437895Z-optional-handle.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20230629T220835893Z-remove-post-hierarchy.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20230629T220835893Z-remove-post-hierarchy.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20230629T220835893Z-remove-post-hierarchy.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20230703T045536691Z-feed-and-label-indices.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20230703T045536691Z-feed-and-label-indices.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20230703T045536691Z-feed-and-label-indices.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20230720T164800037Z-posts-cursor-idx.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20230720T164800037Z-posts-cursor-idx.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20230720T164800037Z-posts-cursor-idx.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20230807T035309811Z-feed-item-delete-invite-for-user-idx.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20230807T035309811Z-feed-item-delete-invite-for-user-idx.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20230807T035309811Z-feed-item-delete-invite-for-user-idx.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20230808T172902639Z-repo-rev.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20230808T172902639Z-repo-rev.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20230808T172902639Z-repo-rev.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20230810T203349843Z-action-duration.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20230810T203349843Z-action-duration.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20230810T203349843Z-action-duration.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20230817T195936007Z-native-notifications.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20230817T195936007Z-native-notifications.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20230817T195936007Z-native-notifications.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20230830T205507322Z-suggested-feeds.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20230830T205507322Z-suggested-feeds.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20230830T205507322Z-suggested-feeds.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20230904T211011773Z-block-lists.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20230904T211011773Z-block-lists.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20230904T211011773Z-block-lists.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20230906T222220386Z-thread-gating.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20230906T222220386Z-thread-gating.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20230906T222220386Z-thread-gating.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20230920T213858047Z-add-tags-to-post.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20230920T213858047Z-add-tags-to-post.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20230920T213858047Z-add-tags-to-post.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20230929T192920807Z-record-cursor-indexes.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20230929T192920807Z-record-cursor-indexes.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20230929T192920807Z-record-cursor-indexes.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20231003T202833377Z-create-moderation-subject-status.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20231003T202833377Z-create-moderation-subject-status.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20231003T202833377Z-create-moderation-subject-status.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20231220T225126090Z-blob-takedowns.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20231220T225126090Z-blob-takedowns.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20231220T225126090Z-blob-takedowns.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20240124T023719200Z-tagged-suggestions.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20240124T023719200Z-tagged-suggestions.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20240124T023719200Z-tagged-suggestions.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20240226T225725627Z-labelers.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20240226T225725627Z-labelers.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20240226T225725627Z-labelers.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20240530T170337073Z-account-deactivation.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20240530T170337073Z-account-deactivation.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20240530T170337073Z-account-deactivation.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20240606T171229898Z-thread-mutes.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20240606T171229898Z-thread-mutes.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20240606T171229898Z-thread-mutes.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20240606T222548219Z-starter-packs.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20240606T222548219Z-starter-packs.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20240606T222548219Z-starter-packs.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20240719T203853939Z-priority-notifs.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20240719T203853939Z-priority-notifs.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20240719T203853939Z-priority-notifs.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20240723T220700077Z-quotes-post-aggs.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20240723T220700077Z-quotes-post-aggs.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20240723T220700077Z-quotes-post-aggs.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20240723T220703655Z-quotes.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20240723T220703655Z-quotes.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20240723T220703655Z-quotes.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20240801T193939827Z-post-gate.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20240801T193939827Z-post-gate.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20240801T193939827Z-post-gate.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20240808T224251220Z-post-gate-flags.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20240808T224251220Z-post-gate-flags.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20240808T224251220Z-post-gate-flags.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20240829T211238293Z-simplify-actor-sync.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20240829T211238293Z-simplify-actor-sync.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20240829T211238293Z-simplify-actor-sync.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20240831T134810923Z-pinned-posts.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20240831T134810923Z-pinned-posts.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20240831T134810923Z-pinned-posts.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20241114T153108102Z-add-starter-packs-name.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20241114T153108102Z-add-starter-packs-name.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20241114T153108102Z-add-starter-packs-name.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20250116T222618297Z-post-embed-video.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20250116T222618297Z-post-embed-video.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20250116T222618297Z-post-embed-video.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20250207T174822012Z-add-label-exp.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20250207T174822012Z-add-label-exp.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20250207T174822012Z-add-label-exp.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20250404T163421487Z-verifications.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20250404T163421487Z-verifications.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20250404T163421487Z-verifications.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20250526T023712742Z-like-repost-via.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20250526T023712742Z-like-repost-via.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20250526T023712742Z-like-repost-via.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20250528T221913281Z-add-record-tags.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20250528T221913281Z-add-record-tags.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20250528T221913281Z-add-record-tags.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20250602T190357447Z-add-private-data.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20250602T190357447Z-add-private-data.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20250602T190357447Z-add-private-data.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20250611T140649895Z-add-activity-subscription.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20250611T140649895Z-add-activity-subscription.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20250611T140649895Z-add-activity-subscription.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20250627T025331240Z-add-actor-age-assurance-columns.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20250627T025331240Z-add-actor-age-assurance-columns.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20250627T025331240Z-add-actor-age-assurance-columns.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20250812T183735692Z-add-bookmarks.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20250812T183735692Z-add-bookmarks.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20250812T183735692Z-add-bookmarks.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20250813T174955711Z-add-post-agg-bookmarks.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20250813T174955711Z-add-post-agg-bookmarks.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20250813T174955711Z-add-post-agg-bookmarks.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20251120T004738098Z-update-actor-age-assurance-v2.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20251120T004738098Z-update-actor-age-assurance-v2.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20251120T004738098Z-update-actor-age-assurance-v2.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20260112T133951271Z-add-drafts.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20260112T133951271Z-add-drafts.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20260112T133951271Z-add-drafts.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20260604T224952774Z-post-embed-gallery-image.d.ts +1 -1
- package/dist/data-plane/server/db/migrations/20260604T224952774Z-post-embed-gallery-image.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/20260604T224952774Z-post-embed-gallery-image.js.map +1 -1
- package/dist/data-plane/server/db/migrations/provider.d.ts +2 -2
- package/dist/data-plane/server/db/migrations/provider.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/provider.js.map +1 -1
- package/dist/data-plane/server/db/pagination.d.ts +2 -2
- package/dist/data-plane/server/db/pagination.d.ts.map +1 -1
- package/dist/data-plane/server/db/pagination.js.map +1 -1
- package/dist/data-plane/server/db/tables/actor-block.d.ts +1 -1
- package/dist/data-plane/server/db/tables/actor-block.d.ts.map +1 -1
- package/dist/data-plane/server/db/tables/actor-block.js.map +1 -1
- package/dist/data-plane/server/db/tables/actor.d.ts +1 -1
- package/dist/data-plane/server/db/tables/actor.d.ts.map +1 -1
- package/dist/data-plane/server/db/tables/actor.js.map +1 -1
- package/dist/data-plane/server/db/tables/did-cache.d.ts +1 -1
- package/dist/data-plane/server/db/tables/did-cache.d.ts.map +1 -1
- package/dist/data-plane/server/db/tables/did-cache.js.map +1 -1
- package/dist/data-plane/server/db/tables/feed-generator.d.ts +1 -1
- package/dist/data-plane/server/db/tables/feed-generator.d.ts.map +1 -1
- package/dist/data-plane/server/db/tables/feed-generator.js.map +1 -1
- package/dist/data-plane/server/db/tables/follow.d.ts +1 -1
- package/dist/data-plane/server/db/tables/follow.d.ts.map +1 -1
- package/dist/data-plane/server/db/tables/follow.js.map +1 -1
- package/dist/data-plane/server/db/tables/labeler.d.ts +1 -1
- package/dist/data-plane/server/db/tables/labeler.d.ts.map +1 -1
- package/dist/data-plane/server/db/tables/labeler.js.map +1 -1
- package/dist/data-plane/server/db/tables/like.d.ts +1 -1
- package/dist/data-plane/server/db/tables/like.d.ts.map +1 -1
- package/dist/data-plane/server/db/tables/like.js.map +1 -1
- package/dist/data-plane/server/db/tables/list-block.d.ts +1 -1
- package/dist/data-plane/server/db/tables/list-block.d.ts.map +1 -1
- package/dist/data-plane/server/db/tables/list-block.js.map +1 -1
- package/dist/data-plane/server/db/tables/list-item.d.ts +1 -1
- package/dist/data-plane/server/db/tables/list-item.d.ts.map +1 -1
- package/dist/data-plane/server/db/tables/list-item.js.map +1 -1
- package/dist/data-plane/server/db/tables/list.d.ts +1 -1
- package/dist/data-plane/server/db/tables/list.d.ts.map +1 -1
- package/dist/data-plane/server/db/tables/list.js.map +1 -1
- package/dist/data-plane/server/db/tables/notification.d.ts +1 -1
- package/dist/data-plane/server/db/tables/notification.d.ts.map +1 -1
- package/dist/data-plane/server/db/tables/notification.js.map +1 -1
- package/dist/data-plane/server/db/tables/post-agg.d.ts +1 -1
- package/dist/data-plane/server/db/tables/post-agg.d.ts.map +1 -1
- package/dist/data-plane/server/db/tables/post-agg.js.map +1 -1
- package/dist/data-plane/server/db/tables/post.d.ts +1 -1
- package/dist/data-plane/server/db/tables/post.d.ts.map +1 -1
- package/dist/data-plane/server/db/tables/post.js.map +1 -1
- package/dist/data-plane/server/db/tables/profile-agg.d.ts +1 -1
- package/dist/data-plane/server/db/tables/profile-agg.d.ts.map +1 -1
- package/dist/data-plane/server/db/tables/profile-agg.js.map +1 -1
- package/dist/data-plane/server/db/tables/quote.d.ts +1 -1
- package/dist/data-plane/server/db/tables/quote.d.ts.map +1 -1
- package/dist/data-plane/server/db/tables/quote.js.map +1 -1
- package/dist/data-plane/server/db/tables/record.d.ts +1 -1
- package/dist/data-plane/server/db/tables/record.d.ts.map +1 -1
- package/dist/data-plane/server/db/tables/record.js.map +1 -1
- package/dist/data-plane/server/db/tables/repost.d.ts +1 -1
- package/dist/data-plane/server/db/tables/repost.d.ts.map +1 -1
- package/dist/data-plane/server/db/tables/repost.js.map +1 -1
- package/dist/data-plane/server/db/tables/starter-pack.d.ts +1 -1
- package/dist/data-plane/server/db/tables/starter-pack.d.ts.map +1 -1
- package/dist/data-plane/server/db/tables/starter-pack.js.map +1 -1
- package/dist/data-plane/server/db/tables/verification.d.ts +1 -1
- package/dist/data-plane/server/db/tables/verification.d.ts.map +1 -1
- package/dist/data-plane/server/db/tables/verification.js.map +1 -1
- package/dist/data-plane/server/db/types.d.ts +1 -1
- package/dist/data-plane/server/db/types.d.ts.map +1 -1
- package/dist/data-plane/server/db/types.js.map +1 -1
- package/dist/data-plane/server/db/util.d.ts +2 -2
- package/dist/data-plane/server/db/util.d.ts.map +1 -1
- package/dist/data-plane/server/db/util.js.map +1 -1
- package/dist/data-plane/server/index.d.ts +2 -2
- package/dist/data-plane/server/index.d.ts.map +1 -1
- package/dist/data-plane/server/index.js.map +1 -1
- package/dist/data-plane/server/indexing/index.d.ts +5 -5
- package/dist/data-plane/server/indexing/index.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/index.js.map +1 -1
- package/dist/data-plane/server/indexing/plugins/block.d.ts +2 -2
- package/dist/data-plane/server/indexing/plugins/block.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/plugins/block.js.map +1 -1
- package/dist/data-plane/server/indexing/plugins/chat-declaration.d.ts +2 -2
- package/dist/data-plane/server/indexing/plugins/chat-declaration.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/plugins/chat-declaration.js.map +1 -1
- package/dist/data-plane/server/indexing/plugins/feed-generator.d.ts +2 -2
- package/dist/data-plane/server/indexing/plugins/feed-generator.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/plugins/feed-generator.js.map +1 -1
- package/dist/data-plane/server/indexing/plugins/follow.d.ts +2 -2
- package/dist/data-plane/server/indexing/plugins/follow.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/plugins/follow.js.map +1 -1
- package/dist/data-plane/server/indexing/plugins/germ-declaration.d.ts +2 -2
- package/dist/data-plane/server/indexing/plugins/germ-declaration.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/plugins/germ-declaration.js.map +1 -1
- package/dist/data-plane/server/indexing/plugins/labeler.d.ts +2 -2
- package/dist/data-plane/server/indexing/plugins/labeler.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/plugins/labeler.js.map +1 -1
- package/dist/data-plane/server/indexing/plugins/like.d.ts +2 -2
- package/dist/data-plane/server/indexing/plugins/like.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/plugins/like.js.map +1 -1
- package/dist/data-plane/server/indexing/plugins/list-block.d.ts +2 -2
- package/dist/data-plane/server/indexing/plugins/list-block.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/plugins/list-block.js.map +1 -1
- package/dist/data-plane/server/indexing/plugins/list-item.d.ts +2 -2
- package/dist/data-plane/server/indexing/plugins/list-item.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/plugins/list-item.js.map +1 -1
- package/dist/data-plane/server/indexing/plugins/list.d.ts +2 -2
- package/dist/data-plane/server/indexing/plugins/list.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/plugins/list.js.map +1 -1
- package/dist/data-plane/server/indexing/plugins/notif-declaration.d.ts +2 -2
- package/dist/data-plane/server/indexing/plugins/notif-declaration.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/plugins/notif-declaration.js.map +1 -1
- package/dist/data-plane/server/indexing/plugins/post-gate.d.ts +2 -2
- package/dist/data-plane/server/indexing/plugins/post-gate.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/plugins/post-gate.js.map +1 -1
- package/dist/data-plane/server/indexing/plugins/post.d.ts +4 -4
- package/dist/data-plane/server/indexing/plugins/post.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/plugins/post.js.map +1 -1
- package/dist/data-plane/server/indexing/plugins/profile.d.ts +2 -2
- package/dist/data-plane/server/indexing/plugins/profile.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/plugins/profile.js.map +1 -1
- package/dist/data-plane/server/indexing/plugins/repost.d.ts +2 -2
- package/dist/data-plane/server/indexing/plugins/repost.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/plugins/repost.js.map +1 -1
- package/dist/data-plane/server/indexing/plugins/starter-pack.d.ts +2 -2
- package/dist/data-plane/server/indexing/plugins/starter-pack.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/plugins/starter-pack.js.map +1 -1
- package/dist/data-plane/server/indexing/plugins/status.d.ts +2 -2
- package/dist/data-plane/server/indexing/plugins/status.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/plugins/status.js.map +1 -1
- package/dist/data-plane/server/indexing/plugins/thread-gate.d.ts +2 -2
- package/dist/data-plane/server/indexing/plugins/thread-gate.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/plugins/thread-gate.js.map +1 -1
- package/dist/data-plane/server/indexing/plugins/verification.d.ts +2 -2
- package/dist/data-plane/server/indexing/plugins/verification.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/plugins/verification.js.map +1 -1
- package/dist/data-plane/server/indexing/processor.d.ts +6 -6
- package/dist/data-plane/server/indexing/processor.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/processor.js +1 -1
- package/dist/data-plane/server/indexing/processor.js.map +1 -1
- package/dist/data-plane/server/routes/activity-subscription.d.ts +3 -3
- package/dist/data-plane/server/routes/activity-subscription.d.ts.map +1 -1
- package/dist/data-plane/server/routes/activity-subscription.js.map +1 -1
- package/dist/data-plane/server/routes/blocks.d.ts +3 -3
- package/dist/data-plane/server/routes/blocks.d.ts.map +1 -1
- package/dist/data-plane/server/routes/blocks.js.map +1 -1
- package/dist/data-plane/server/routes/bookmarks.d.ts +3 -3
- package/dist/data-plane/server/routes/bookmarks.d.ts.map +1 -1
- package/dist/data-plane/server/routes/bookmarks.js.map +1 -1
- package/dist/data-plane/server/routes/drafts.d.ts +3 -3
- package/dist/data-plane/server/routes/drafts.d.ts.map +1 -1
- package/dist/data-plane/server/routes/drafts.js.map +1 -1
- package/dist/data-plane/server/routes/feed-gens.d.ts +3 -3
- package/dist/data-plane/server/routes/feed-gens.d.ts.map +1 -1
- package/dist/data-plane/server/routes/feed-gens.js.map +1 -1
- package/dist/data-plane/server/routes/feeds.d.ts +3 -3
- package/dist/data-plane/server/routes/feeds.d.ts.map +1 -1
- package/dist/data-plane/server/routes/feeds.js.map +1 -1
- package/dist/data-plane/server/routes/follows.d.ts +3 -3
- package/dist/data-plane/server/routes/follows.d.ts.map +1 -1
- package/dist/data-plane/server/routes/follows.js.map +1 -1
- package/dist/data-plane/server/routes/identity.d.ts +4 -4
- package/dist/data-plane/server/routes/identity.d.ts.map +1 -1
- package/dist/data-plane/server/routes/identity.js +1 -1
- package/dist/data-plane/server/routes/identity.js.map +1 -1
- package/dist/data-plane/server/routes/index.d.ts +3 -3
- package/dist/data-plane/server/routes/index.d.ts.map +1 -1
- package/dist/data-plane/server/routes/index.js.map +1 -1
- package/dist/data-plane/server/routes/interactions.d.ts +3 -3
- package/dist/data-plane/server/routes/interactions.d.ts.map +1 -1
- package/dist/data-plane/server/routes/interactions.js.map +1 -1
- package/dist/data-plane/server/routes/labels.d.ts +3 -3
- package/dist/data-plane/server/routes/labels.d.ts.map +1 -1
- package/dist/data-plane/server/routes/labels.js.map +1 -1
- package/dist/data-plane/server/routes/likes.d.ts +3 -3
- package/dist/data-plane/server/routes/likes.d.ts.map +1 -1
- package/dist/data-plane/server/routes/likes.js.map +1 -1
- package/dist/data-plane/server/routes/lists.d.ts +3 -3
- package/dist/data-plane/server/routes/lists.d.ts.map +1 -1
- package/dist/data-plane/server/routes/lists.js.map +1 -1
- package/dist/data-plane/server/routes/moderation.d.ts +3 -3
- package/dist/data-plane/server/routes/moderation.d.ts.map +1 -1
- package/dist/data-plane/server/routes/moderation.js.map +1 -1
- package/dist/data-plane/server/routes/mutes.d.ts +3 -3
- package/dist/data-plane/server/routes/mutes.d.ts.map +1 -1
- package/dist/data-plane/server/routes/mutes.js.map +1 -1
- package/dist/data-plane/server/routes/notifs.d.ts +4 -4
- package/dist/data-plane/server/routes/notifs.d.ts.map +1 -1
- package/dist/data-plane/server/routes/notifs.js.map +1 -1
- package/dist/data-plane/server/routes/profile.d.ts +3 -3
- package/dist/data-plane/server/routes/profile.d.ts.map +1 -1
- package/dist/data-plane/server/routes/profile.js +1 -1
- package/dist/data-plane/server/routes/profile.js.map +1 -1
- package/dist/data-plane/server/routes/quotes.d.ts +3 -3
- package/dist/data-plane/server/routes/quotes.d.ts.map +1 -1
- package/dist/data-plane/server/routes/quotes.js.map +1 -1
- package/dist/data-plane/server/routes/records.d.ts +3 -3
- package/dist/data-plane/server/routes/records.d.ts.map +1 -1
- package/dist/data-plane/server/routes/records.js.map +1 -1
- package/dist/data-plane/server/routes/relationships.d.ts +3 -3
- package/dist/data-plane/server/routes/relationships.d.ts.map +1 -1
- package/dist/data-plane/server/routes/relationships.js.map +1 -1
- package/dist/data-plane/server/routes/reposts.d.ts +3 -3
- package/dist/data-plane/server/routes/reposts.d.ts.map +1 -1
- package/dist/data-plane/server/routes/reposts.js.map +1 -1
- package/dist/data-plane/server/routes/search.d.ts +3 -3
- package/dist/data-plane/server/routes/search.d.ts.map +1 -1
- package/dist/data-plane/server/routes/search.js.map +1 -1
- package/dist/data-plane/server/routes/site-standard.d.ts +3 -3
- package/dist/data-plane/server/routes/site-standard.d.ts.map +1 -1
- package/dist/data-plane/server/routes/site-standard.js.map +1 -1
- package/dist/data-plane/server/routes/sitemap.d.ts +2 -2
- package/dist/data-plane/server/routes/sitemap.d.ts.map +1 -1
- package/dist/data-plane/server/routes/sitemap.js.map +1 -1
- package/dist/data-plane/server/routes/starter-packs.d.ts +3 -3
- package/dist/data-plane/server/routes/starter-packs.d.ts.map +1 -1
- package/dist/data-plane/server/routes/starter-packs.js.map +1 -1
- package/dist/data-plane/server/routes/suggestions.d.ts +3 -3
- package/dist/data-plane/server/routes/suggestions.d.ts.map +1 -1
- package/dist/data-plane/server/routes/suggestions.js.map +1 -1
- package/dist/data-plane/server/routes/sync.d.ts +3 -3
- package/dist/data-plane/server/routes/sync.d.ts.map +1 -1
- package/dist/data-plane/server/routes/sync.js.map +1 -1
- package/dist/data-plane/server/routes/threads.d.ts +3 -3
- package/dist/data-plane/server/routes/threads.d.ts.map +1 -1
- package/dist/data-plane/server/routes/threads.js.map +1 -1
- package/dist/data-plane/server/subscription.d.ts +2 -2
- package/dist/data-plane/server/subscription.d.ts.map +1 -1
- package/dist/data-plane/server/subscription.js +1 -1
- package/dist/data-plane/server/subscription.js.map +1 -1
- package/dist/data-plane/server/util.d.ts +2 -2
- package/dist/data-plane/server/util.d.ts.map +1 -1
- package/dist/data-plane/server/util.js.map +1 -1
- package/dist/error.d.ts +1 -1
- package/dist/error.d.ts.map +1 -1
- package/dist/error.js.map +1 -1
- package/dist/etcd.d.ts +1 -1
- package/dist/etcd.d.ts.map +1 -1
- package/dist/etcd.js.map +1 -1
- package/dist/feature-gates/index.d.ts +1 -1
- package/dist/feature-gates/index.d.ts.map +1 -1
- package/dist/feature-gates/index.js +1 -0
- package/dist/feature-gates/index.js.map +1 -1
- package/dist/feature-gates/types.d.ts +1 -1
- package/dist/feature-gates/types.d.ts.map +1 -1
- package/dist/feature-gates/types.js.map +1 -1
- package/dist/feature-gates/utils.d.ts +2 -2
- package/dist/feature-gates/utils.d.ts.map +1 -1
- package/dist/feature-gates/utils.js.map +1 -1
- package/dist/hydration/actor.d.ts +7 -5
- package/dist/hydration/actor.d.ts.map +1 -1
- package/dist/hydration/actor.js +2 -0
- package/dist/hydration/actor.js.map +1 -1
- package/dist/hydration/external.d.ts +4 -4
- package/dist/hydration/external.d.ts.map +1 -1
- package/dist/hydration/external.js +1 -1
- package/dist/hydration/external.js.map +1 -1
- package/dist/hydration/feed.d.ts +4 -4
- package/dist/hydration/feed.d.ts.map +1 -1
- package/dist/hydration/feed.js.map +1 -1
- package/dist/hydration/graph.d.ts +5 -5
- package/dist/hydration/graph.d.ts.map +1 -1
- package/dist/hydration/graph.js +1 -1
- package/dist/hydration/graph.js.map +1 -1
- package/dist/hydration/hydrator.d.ts +11 -11
- package/dist/hydration/hydrator.d.ts.map +1 -1
- package/dist/hydration/hydrator.js +1 -1
- package/dist/hydration/hydrator.js.map +1 -1
- package/dist/hydration/label.d.ts +5 -5
- package/dist/hydration/label.d.ts.map +1 -1
- package/dist/hydration/label.js +1 -1
- package/dist/hydration/label.js.map +1 -1
- package/dist/hydration/util.d.ts +3 -3
- package/dist/hydration/util.d.ts.map +1 -1
- package/dist/hydration/util.js.map +1 -1
- package/dist/image/invalidator.d.ts +1 -1
- package/dist/image/invalidator.d.ts.map +1 -1
- package/dist/image/invalidator.js.map +1 -1
- package/dist/image/server.d.ts +3 -3
- package/dist/image/server.d.ts.map +1 -1
- package/dist/image/server.js.map +1 -1
- package/dist/image/sharp.d.ts +2 -2
- package/dist/image/sharp.d.ts.map +1 -1
- package/dist/image/sharp.js.map +1 -1
- package/dist/image/uri.d.ts +2 -2
- package/dist/image/uri.d.ts.map +1 -1
- package/dist/image/uri.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/kws.d.ts +2 -2
- package/dist/kws.d.ts.map +1 -1
- package/dist/kws.js.map +1 -1
- package/dist/lexicons/app/bsky/actor/defs.defs.d.ts +1 -1
- package/dist/lexicons/app/bsky/actor/defs.defs.js.map +1 -1
- package/dist/logger.d.ts +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js.map +1 -1
- package/dist/pipeline.d.ts +1 -1
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js.map +1 -1
- package/dist/rolodex.d.ts +2 -2
- package/dist/rolodex.d.ts.map +1 -1
- package/dist/rolodex.js.map +1 -1
- package/dist/stash.d.ts +2 -2
- package/dist/stash.d.ts.map +1 -1
- package/dist/stash.js.map +1 -1
- package/dist/util/http.d.ts +1 -1
- package/dist/util/http.d.ts.map +1 -1
- package/dist/util/http.js.map +1 -1
- package/dist/util/standard-site.d.ts +1 -1
- package/dist/util/standard-site.d.ts.map +1 -1
- package/dist/util/standard-site.js.map +1 -1
- package/dist/util/uris.d.ts +2 -2
- package/dist/util/uris.d.ts.map +1 -1
- package/dist/util/uris.js.map +1 -1
- package/dist/util.d.ts +1 -1
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js.map +1 -1
- package/dist/views/index.d.ts +11 -11
- package/dist/views/index.d.ts.map +1 -1
- package/dist/views/index.js.map +1 -1
- package/dist/views/threads-v2.d.ts +3 -3
- package/dist/views/threads-v2.d.ts.map +1 -1
- package/dist/views/threads-v2.js.map +1 -1
- package/dist/views/types.d.ts +1 -1
- package/dist/views/types.d.ts.map +1 -1
- package/dist/views/types.js.map +1 -1
- package/dist/views/util.d.ts +2 -2
- package/dist/views/util.d.ts.map +1 -1
- package/dist/views/util.js.map +1 -1
- package/package.json +14 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosts.js","sourceRoot":"","sources":["../../../src/data-plane/client/hosts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,eAAe,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAY3D;;GAEG;AACH,MAAM,OAAO,aAAa;IAIxB,YAAY,KAAuB;QAF3B,aAAQ,GAAsB,EAAE,CAAA;QAGtC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,GAAG,CAAC,KAAuB;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,MAAM,EAAE,CAAA;IACf,CAAC;IAEO,MAAM;QACZ,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACrB,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,OAAwB;QAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC7B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,YAAY;IAKvB,YAAY,IAAW,EAAE,MAAc,EAAE,QAAmB;QAHpD,UAAK,GAAG,IAAI,aAAa,CAAC,IAAI,GAAG,EAAE,CAAC,CAAA;QAI1C,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA;QACjC,IAAI,CAAC,EAAE,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACnC,IAAI,CAAC,MAAM,EAAE,CAAA,CAAC,6BAA6B;QAC3C,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE;YACtC,MAAM,CAAC,IAAI,CACT,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,EACrD,wBAAwB,CACzB,CAAA;QACH,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,EAAE;YACzC,MAAM,CAAC,IAAI,CACT,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,EACtC,2BAA2B,CAC5B,CAAA;QACH,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAClC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,oBAAoB,CAAC,CAAA;QAC5E,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAA;QACvB,IAAI,CAAC,MAAM,EAAE,CAAA;QACb,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IACvC,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;IACzB,CAAC;IAEO,MAAM;QACZ,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAA;QAC/B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;YACpC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACjB,CAAC;QACH,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACvB,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,OAAwB;QAC/B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC;CACF","sourcesContent":["import { Etcd3 } from 'etcd3'\nimport { EtcdMap } from '../../etcd.js'\nimport { dataplaneLogger as logger } from '../../logger.js'\n\n/**\n * Interface for a reactive list of hosts, i.e. for use with the dataplane client.\n */\nexport interface HostList {\n get: () => Iterable<string>\n onUpdate(handler: HostListHandler): void\n}\n\ntype HostListHandler = (hosts: Iterable<string>) => void\n\n/**\n * Maintains a reactive HostList based on a simple setter.\n */\nexport class BasicHostList implements HostList {\n private hosts: Iterable<string>\n private handlers: HostListHandler[] = []\n\n constructor(hosts: Iterable<string>) {\n this.hosts = hosts\n }\n\n get() {\n return this.hosts\n }\n\n set(hosts: Iterable<string>) {\n this.hosts = hosts\n this.update()\n }\n\n private update() {\n for (const handler of this.handlers) {\n handler(this.hosts)\n }\n }\n\n onUpdate(handler: HostListHandler) {\n this.handlers.push(handler)\n }\n}\n\n/**\n * Maintains a reactive HostList based on etcd key values under a given key prefix.\n * When fallback is provided, ensures that this fallback is used whenever no hosts are available.\n */\nexport class EtcdHostList implements HostList {\n private kv: EtcdMap\n private inner = new BasicHostList(new Set())\n private fallback: Set<string>\n\n constructor(etcd: Etcd3, prefix: string, fallback?: string[]) {\n this.fallback = new Set(fallback)\n this.kv = new EtcdMap(etcd, prefix)\n this.update() // init fallback if necessary\n this.kv.watcher.on('connected', (res) => {\n logger.warn(\n { watcherId: this.kv.watcher.id, header: res.header },\n 'EtcdHostList connected',\n )\n })\n this.kv.watcher.on('disconnected', (err) => {\n logger.warn(\n { watcherId: this.kv.watcher.id, err },\n 'EtcdHostList disconnected',\n )\n })\n this.kv.watcher.on('error', (err) => {\n logger.error({ watcherId: this.kv.watcher.id, err }, 'EtcdHostList error')\n })\n }\n\n async connect() {\n await this.kv.connect()\n this.update()\n this.kv.onUpdate(() => this.update())\n }\n\n get() {\n return this.inner.get()\n }\n\n private update() {\n const hosts = new Set<string>()\n for (const host of this.kv.values()) {\n if (URL.canParse(host)) {\n hosts.add(host)\n }\n }\n if (hosts.size) {\n this.inner.set(hosts)\n } else if (this.fallback.size) {\n this.inner.set(this.fallback)\n }\n }\n\n onUpdate(handler: HostListHandler) {\n this.inner.onUpdate(handler)\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"hosts.js","sourceRoot":"","sources":["../../../src/data-plane/client/hosts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,eAAe,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAY3D;;GAEG;AACH,MAAM,OAAO,aAAa;IAIxB,YAAY,KAAuB;QAF3B,aAAQ,GAAsB,EAAE,CAAA;QAGtC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,GAAG,CAAC,KAAuB;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,MAAM,EAAE,CAAA;IACf,CAAC;IAEO,MAAM;QACZ,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACrB,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,OAAwB;QAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC7B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,YAAY;IAKvB,YAAY,IAAW,EAAE,MAAc,EAAE,QAAmB;QAHpD,UAAK,GAAG,IAAI,aAAa,CAAC,IAAI,GAAG,EAAE,CAAC,CAAA;QAI1C,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA;QACjC,IAAI,CAAC,EAAE,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACnC,IAAI,CAAC,MAAM,EAAE,CAAA,CAAC,6BAA6B;QAC3C,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE;YACtC,MAAM,CAAC,IAAI,CACT,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,EACrD,wBAAwB,CACzB,CAAA;QACH,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,EAAE;YACzC,MAAM,CAAC,IAAI,CACT,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,EACtC,2BAA2B,CAC5B,CAAA;QACH,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAClC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,oBAAoB,CAAC,CAAA;QAC5E,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAA;QACvB,IAAI,CAAC,MAAM,EAAE,CAAA;QACb,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IACvC,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;IACzB,CAAC;IAEO,MAAM;QACZ,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAA;QAC/B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;YACpC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACjB,CAAC;QACH,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACvB,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,OAAwB;QAC/B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC;CACF","sourcesContent":["import type { Etcd3 } from 'etcd3'\nimport { EtcdMap } from '../../etcd.js'\nimport { dataplaneLogger as logger } from '../../logger.js'\n\n/**\n * Interface for a reactive list of hosts, i.e. for use with the dataplane client.\n */\nexport interface HostList {\n get: () => Iterable<string>\n onUpdate(handler: HostListHandler): void\n}\n\ntype HostListHandler = (hosts: Iterable<string>) => void\n\n/**\n * Maintains a reactive HostList based on a simple setter.\n */\nexport class BasicHostList implements HostList {\n private hosts: Iterable<string>\n private handlers: HostListHandler[] = []\n\n constructor(hosts: Iterable<string>) {\n this.hosts = hosts\n }\n\n get() {\n return this.hosts\n }\n\n set(hosts: Iterable<string>) {\n this.hosts = hosts\n this.update()\n }\n\n private update() {\n for (const handler of this.handlers) {\n handler(this.hosts)\n }\n }\n\n onUpdate(handler: HostListHandler) {\n this.handlers.push(handler)\n }\n}\n\n/**\n * Maintains a reactive HostList based on etcd key values under a given key prefix.\n * When fallback is provided, ensures that this fallback is used whenever no hosts are available.\n */\nexport class EtcdHostList implements HostList {\n private kv: EtcdMap\n private inner = new BasicHostList(new Set())\n private fallback: Set<string>\n\n constructor(etcd: Etcd3, prefix: string, fallback?: string[]) {\n this.fallback = new Set(fallback)\n this.kv = new EtcdMap(etcd, prefix)\n this.update() // init fallback if necessary\n this.kv.watcher.on('connected', (res) => {\n logger.warn(\n { watcherId: this.kv.watcher.id, header: res.header },\n 'EtcdHostList connected',\n )\n })\n this.kv.watcher.on('disconnected', (err) => {\n logger.warn(\n { watcherId: this.kv.watcher.id, err },\n 'EtcdHostList disconnected',\n )\n })\n this.kv.watcher.on('error', (err) => {\n logger.error({ watcherId: this.kv.watcher.id, err }, 'EtcdHostList error')\n })\n }\n\n async connect() {\n await this.kv.connect()\n this.update()\n this.kv.onUpdate(() => this.update())\n }\n\n get() {\n return this.inner.get()\n }\n\n private update() {\n const hosts = new Set<string>()\n for (const host of this.kv.values()) {\n if (URL.canParse(host)) {\n hosts.add(host)\n }\n }\n if (hosts.size) {\n this.inner.set(hosts)\n } else if (this.fallback.size) {\n this.inner.set(this.fallback)\n }\n }\n\n onUpdate(handler: HostListHandler) {\n this.inner.onUpdate(handler)\n }\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Code, PromiseClient } from '@connectrpc/connect';
|
|
1
|
+
import { Code, type PromiseClient } from '@connectrpc/connect';
|
|
2
2
|
import { Service } from '../../proto/bsky_connect.js';
|
|
3
|
-
import { HostList } from './hosts.js';
|
|
3
|
+
import type { HostList } from './hosts.js';
|
|
4
4
|
export * from './hosts.js';
|
|
5
5
|
export * from './util.js';
|
|
6
6
|
export type DataPlaneClient = PromiseClient<typeof Service>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data-plane/client/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,IAAI,EAEJ,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data-plane/client/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,IAAI,EAEJ,KAAK,aAAa,EAGnB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAG1C,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AAEzB,MAAM,MAAM,eAAe,GAAG,aAAa,CAAC,OAAO,OAAO,CAAC,CAAA;AAC3D,KAAK,WAAW,GAAG,KAAK,GAAG,GAAG,CAAA;AAG9B,eAAO,MAAM,qBAAqB,aACtB,QAAQ,QACZ;IAAE,WAAW,CAAC,EAAE,WAAW,CAAC;IAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAE,KA6B3D,eACP,CAAA;AAED,OAAO,EAAE,IAAI,EAAE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/data-plane/client/index.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'node:assert'\nimport { randomInt } from 'node:crypto'\nimport {\n Code,\n ConnectError,\n PromiseClient,\n createPromiseClient,\n makeAnyClient,\n} from '@connectrpc/connect'\nimport { createGrpcTransport } from '@connectrpc/connect-node'\nimport { Service } from '../../proto/bsky_connect.js'\nimport { HostList } from './hosts.js'\nimport { callerInterceptor } from './util.js'\n\nexport * from './hosts.js'\nexport * from './util.js'\n\nexport type DataPlaneClient = PromiseClient<typeof Service>\ntype HttpVersion = '1.1' | '2'\nconst MAX_RETRIES = 3\n\nexport const createDataPlaneClient = (\n hostList: HostList,\n opts: { httpVersion?: HttpVersion; rejectUnauthorized?: boolean },\n) => {\n const clients = new DataPlaneClients(hostList, opts)\n return makeAnyClient(Service, (method) => {\n return async (...args) => {\n let tries = 0\n let error: unknown\n let remainingClients = clients.get()\n while (tries < MAX_RETRIES) {\n const client = randomElement(remainingClients)\n assert(client, 'no clients available')\n try {\n return await client[method.localName](...args)\n } catch (err) {\n if (\n err instanceof ConnectError &&\n (err.code === Code.Unavailable || err.code === Code.Aborted)\n ) {\n tries++\n error = err\n remainingClients = getRemainingClients(remainingClients, client)\n } else {\n throw err\n }\n }\n }\n assert(error)\n throw error\n }\n }) as DataPlaneClient\n}\n\nexport { Code }\n\n/**\n * Uses a reactive HostList in order to maintain a pool of DataPlaneClients.\n * Each DataPlaneClient is cached per host so that it maintains connections\n * and other internal state when the underlying HostList is updated.\n */\nclass DataPlaneClients {\n private clients: DataPlaneClient[] = []\n private clientsByHost = new Map<string, DataPlaneClient>()\n\n constructor(\n private hostList: HostList,\n private clientOpts: {\n httpVersion?: HttpVersion\n rejectUnauthorized?: boolean\n },\n ) {\n this.refresh()\n this.hostList.onUpdate(() => this.refresh())\n }\n\n get(): readonly DataPlaneClient[] {\n return this.clients\n }\n\n private refresh() {\n this.clients = []\n for (const host of this.hostList.get()) {\n let client = this.clientsByHost.get(host)\n if (!client) {\n client = this.createClient(host)\n this.clientsByHost.set(host, client)\n }\n this.clients.push(client)\n }\n }\n\n private createClient(host: string) {\n return createBaseClient(host, this.clientOpts)\n }\n}\n\nconst createBaseClient = (\n baseUrl: string,\n opts: { httpVersion?: HttpVersion; rejectUnauthorized?: boolean },\n): DataPlaneClient => {\n const { httpVersion = '2', rejectUnauthorized = true } = opts\n const transport = createGrpcTransport({\n baseUrl,\n httpVersion,\n acceptCompression: [],\n nodeOptions: { rejectUnauthorized },\n interceptors: [callerInterceptor('appview')],\n })\n return createPromiseClient(Service, transport)\n}\n\nconst getRemainingClients = (\n clients: readonly DataPlaneClient[],\n lastClient: DataPlaneClient,\n) => {\n if (clients.length < 2) return clients // no clients to choose from\n return clients.filter((c) => c !== lastClient)\n}\n\nconst randomElement = <T>(arr: readonly T[]): T | undefined => {\n if (arr.length === 0) return\n return arr[randomInt(arr.length)]\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/data-plane/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EACL,IAAI,EACJ,YAAY,EAEZ,mBAAmB,EACnB,aAAa,GACd,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAErD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAE7C,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AAIzB,MAAM,WAAW,GAAG,CAAC,CAAA;AAErB,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,QAAkB,EAClB,IAAiE,EACjE,EAAE;IACF,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IACpD,OAAO,aAAa,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;QACvC,OAAO,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE;YACvB,IAAI,KAAK,GAAG,CAAC,CAAA;YACb,IAAI,KAAc,CAAA;YAClB,IAAI,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;YACpC,OAAO,KAAK,GAAG,WAAW,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAA;gBAC9C,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAA;gBACtC,IAAI,CAAC;oBACH,OAAO,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;gBAChD,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IACE,GAAG,YAAY,YAAY;wBAC3B,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,EAC5D,CAAC;wBACD,KAAK,EAAE,CAAA;wBACP,KAAK,GAAG,GAAG,CAAA;wBACX,gBAAgB,GAAG,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;oBAClE,CAAC;yBAAM,CAAC;wBACN,MAAM,GAAG,CAAA;oBACX,CAAC;gBACH,CAAC;YACH,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,CAAA;YACb,MAAM,KAAK,CAAA;QACb,CAAC,CAAA;IACH,CAAC,CAAoB,CAAA;AACvB,CAAC,CAAA;AAED,OAAO,EAAE,IAAI,EAAE,CAAA;AAEf;;;;GAIG;AACH,MAAM,gBAAgB;IAIpB,YACU,QAAkB,EAClB,UAGP;QAJO,aAAQ,GAAR,QAAQ,CAAU;QAClB,eAAU,GAAV,UAAU,CAGjB;QARK,YAAO,GAAsB,EAAE,CAAA;QAC/B,kBAAa,GAAG,IAAI,GAAG,EAA2B,CAAA;QASxD,IAAI,CAAC,OAAO,EAAE,CAAA;QACd,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;IAC9C,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAEO,OAAO;QACb,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QACjB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;YACvC,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACzC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;gBAChC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;YACtC,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,IAAY;QAC/B,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IAChD,CAAC;CACF;AAED,MAAM,gBAAgB,GAAG,CACvB,OAAe,EACf,IAAiE,EAChD,EAAE;IACnB,MAAM,EAAE,WAAW,GAAG,GAAG,EAAE,kBAAkB,GAAG,IAAI,EAAE,GAAG,IAAI,CAAA;IAC7D,MAAM,SAAS,GAAG,mBAAmB,CAAC;QACpC,OAAO;QACP,WAAW;QACX,iBAAiB,EAAE,EAAE;QACrB,WAAW,EAAE,EAAE,kBAAkB,EAAE;QACnC,YAAY,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;KAC7C,CAAC,CAAA;IACF,OAAO,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;AAChD,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CAC1B,OAAmC,EACnC,UAA2B,EAC3B,EAAE;IACF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,OAAO,CAAA,CAAC,4BAA4B;IACnE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,CAAA;AAChD,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CAAI,GAAiB,EAAiB,EAAE;IAC5D,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAC5B,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;AACnC,CAAC,CAAA","sourcesContent":["import assert from 'node:assert'\nimport { randomInt } from 'node:crypto'\nimport {\n Code,\n ConnectError,\n type PromiseClient,\n createPromiseClient,\n makeAnyClient,\n} from '@connectrpc/connect'\nimport { createGrpcTransport } from '@connectrpc/connect-node'\nimport { Service } from '../../proto/bsky_connect.js'\nimport type { HostList } from './hosts.js'\nimport { callerInterceptor } from './util.js'\n\nexport * from './hosts.js'\nexport * from './util.js'\n\nexport type DataPlaneClient = PromiseClient<typeof Service>\ntype HttpVersion = '1.1' | '2'\nconst MAX_RETRIES = 3\n\nexport const createDataPlaneClient = (\n hostList: HostList,\n opts: { httpVersion?: HttpVersion; rejectUnauthorized?: boolean },\n) => {\n const clients = new DataPlaneClients(hostList, opts)\n return makeAnyClient(Service, (method) => {\n return async (...args) => {\n let tries = 0\n let error: unknown\n let remainingClients = clients.get()\n while (tries < MAX_RETRIES) {\n const client = randomElement(remainingClients)\n assert(client, 'no clients available')\n try {\n return await client[method.localName](...args)\n } catch (err) {\n if (\n err instanceof ConnectError &&\n (err.code === Code.Unavailable || err.code === Code.Aborted)\n ) {\n tries++\n error = err\n remainingClients = getRemainingClients(remainingClients, client)\n } else {\n throw err\n }\n }\n }\n assert(error)\n throw error\n }\n }) as DataPlaneClient\n}\n\nexport { Code }\n\n/**\n * Uses a reactive HostList in order to maintain a pool of DataPlaneClients.\n * Each DataPlaneClient is cached per host so that it maintains connections\n * and other internal state when the underlying HostList is updated.\n */\nclass DataPlaneClients {\n private clients: DataPlaneClient[] = []\n private clientsByHost = new Map<string, DataPlaneClient>()\n\n constructor(\n private hostList: HostList,\n private clientOpts: {\n httpVersion?: HttpVersion\n rejectUnauthorized?: boolean\n },\n ) {\n this.refresh()\n this.hostList.onUpdate(() => this.refresh())\n }\n\n get(): readonly DataPlaneClient[] {\n return this.clients\n }\n\n private refresh() {\n this.clients = []\n for (const host of this.hostList.get()) {\n let client = this.clientsByHost.get(host)\n if (!client) {\n client = this.createClient(host)\n this.clientsByHost.set(host, client)\n }\n this.clients.push(client)\n }\n }\n\n private createClient(host: string) {\n return createBaseClient(host, this.clientOpts)\n }\n}\n\nconst createBaseClient = (\n baseUrl: string,\n opts: { httpVersion?: HttpVersion; rejectUnauthorized?: boolean },\n): DataPlaneClient => {\n const { httpVersion = '2', rejectUnauthorized = true } = opts\n const transport = createGrpcTransport({\n baseUrl,\n httpVersion,\n acceptCompression: [],\n nodeOptions: { rejectUnauthorized },\n interceptors: [callerInterceptor('appview')],\n })\n return createPromiseClient(Service, transport)\n}\n\nconst getRemainingClients = (\n clients: readonly DataPlaneClient[],\n lastClient: DataPlaneClient,\n) => {\n if (clients.length < 2) return clients // no clients to choose from\n return clients.filter((c) => c !== lastClient)\n}\n\nconst randomElement = <T>(arr: readonly T[]): T | undefined => {\n if (arr.length === 0) return\n return arr[randomInt(arr.length)]\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Code, ConnectError, Interceptor } from '@connectrpc/connect';
|
|
1
|
+
import { type Code, ConnectError, type Interceptor } from '@connectrpc/connect';
|
|
2
2
|
export declare const callerInterceptor: (caller: string) => Interceptor;
|
|
3
3
|
export declare const isDataplaneError: (err: unknown, code?: Code) => err is ConnectError;
|
|
4
4
|
export declare const unpackIdentityServices: (servicesBytes: Uint8Array) => UnpackedServices;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/data-plane/client/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/data-plane/client/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAE,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAI/E,eAAO,MAAM,iBAAiB,WACnB,MAAM,KAAG,WAKjB,CAAA;AAEH,eAAO,MAAM,gBAAgB,QACtB,OAAO,SACL,IAAI,KACV,GAAG,IAAI,YAKT,CAAA;AAED,eAAO,MAAM,sBAAsB,kBAAmB,UAAU,qBAI/D,CAAA;AAED,eAAO,MAAM,kBAAkB,cAAe,UAAU,iBAIvD,CAAA;AAED,eAAO,MAAM,kBAAkB,aACnB,gBAAgB,QACpB;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,uBAOnC,CAAA;AAED,eAAO,MAAM,cAAc,SAAU,YAAY,QAAQ;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,uBAQtE,CAAA;AAED,KAAK,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAErE,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/data-plane/client/util.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/data-plane/client/util.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Code, ConnectError, type Interceptor } from '@connectrpc/connect'\nimport * as ui8 from 'uint8arrays'\nimport { getDidKeyFromMultibase } from '@atproto/identity'\n\nexport const callerInterceptor =\n (caller: string): Interceptor =>\n (next) =>\n (req) => {\n req.header.set('x-atlantis-caller', caller)\n return next(req)\n }\n\nexport const isDataplaneError = (\n err: unknown,\n code?: Code,\n): err is ConnectError => {\n if (err instanceof ConnectError) {\n return !code || err.code === code\n }\n return false\n}\n\nexport const unpackIdentityServices = (servicesBytes: Uint8Array) => {\n const servicesStr = ui8.toString(servicesBytes, 'utf8')\n if (!servicesStr) return {}\n return JSON.parse(servicesStr) as UnpackedServices\n}\n\nexport const unpackIdentityKeys = (keysBytes: Uint8Array) => {\n const keysStr = ui8.toString(keysBytes, 'utf8')\n if (!keysStr) return {}\n return JSON.parse(keysStr) as UnpackedKeys\n}\n\nexport const getServiceEndpoint = (\n services: UnpackedServices,\n opts: { id: string; type: string },\n) => {\n const endpoint =\n services[opts.id] &&\n services[opts.id].Type === opts.type &&\n validateUrl(services[opts.id].URL)\n return endpoint || undefined\n}\n\nexport const getKeyAsDidKey = (keys: UnpackedKeys, opts: { id: string }) => {\n const key =\n keys[opts.id] &&\n getDidKeyFromMultibase({\n type: keys[opts.id].Type,\n publicKeyMultibase: keys[opts.id].PublicKeyMultibase,\n })\n return key || undefined\n}\n\ntype UnpackedServices = Record<string, { Type: string; URL: string }>\n\ntype UnpackedKeys = Record<string, { Type: string; PublicKeyMultibase: string }>\n\nconst validateUrl = (urlStr: string): string | undefined => {\n let url\n try {\n url = new URL(urlStr)\n } catch {\n return undefined\n }\n if (!['http:', 'https:'].includes(url.protocol)) {\n return undefined\n } else if (!url.hostname) {\n return undefined\n } else {\n return urlStr\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bsync-subscription.d.ts","sourceRoot":"","sources":["../../../src/data-plane/server/bsync-subscription.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bsync-subscription.d.ts","sourceRoot":"","sources":["../../../src/data-plane/server/bsync-subscription.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAWnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAG7C,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,qBAAa,iBAAiB;IAQT,IAAI,EAAE;QAAE,EAAE,EAAE,QAAQ,CAAC;QAAC,MAAM,EAAE,YAAY,CAAA;KAAE;IAP/D,OAAO,CAAC,EAAE,CAA6B;IACvC,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,EAAE,CAAU;IAEpB,OAAO,CAAC,OAAO,CAAmB;IAElC,YAAmB,IAAI,EAAE;QAAE,EAAE,EAAE,QAAQ,CAAC;QAAC,MAAM,EAAE,YAAY,CAAA;KAAE,EAY9D;IAED,IAAI,OAAO,YAEV;IAED,KAAK,SAMJ;IAED;;;;;OAKG;IACG,UAAU,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,SAAO,iBAWrD;IAED,OAAO,CAAC,UAAU;IAQZ,OAAO,kBAOZ;IAED;;;;OAIG;IACH,OAAO,CAAC,aAAa;YAmBP,UAAU;IAuBxB,OAAO,CAAC,kBAAkB;YAcZ,qBAAqB;IA0EnC,OAAO,CAAC,mBAAmB;YAcb,sBAAsB;IAmBpC,OAAO,CAAC,cAAc;YAWR,iBAAiB;CAmChC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import assert from 'node:assert';
|
|
2
2
|
import { lexParse } from '@atproto/lex';
|
|
3
3
|
import { AtUri } from '@atproto/syntax';
|
|
4
|
-
import { authWithApiKey, createBsyncClient } from '../../bsync.js';
|
|
4
|
+
import { authWithApiKey, createBsyncClient, } from '../../bsync.js';
|
|
5
5
|
import { app } from '../../lexicons/index.js';
|
|
6
6
|
import { subLogger as log } from '../../logger.js';
|
|
7
7
|
import { Method, MuteOperation_Type, } from '../../proto/bsync_pb.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bsync-subscription.js","sourceRoot":"","sources":["../../../src/data-plane/server/bsync-subscription.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'node:assert'\nimport { lexParse } from '@atproto/lex'\nimport { AtUri } from '@atproto/syntax'\nimport { BsyncClient, authWithApiKey, createBsyncClient } from '../../bsync.js'\nimport { ServerConfig } from '../../config.js'\nimport { app } from '../../lexicons/index.js'\nimport { subLogger as log } from '../../logger.js'\nimport {\n Method,\n MuteOperation,\n MuteOperation_Type,\n NotifOperation,\n Operation,\n} from '../../proto/bsync_pb.js'\nimport { Namespaces } from '../../stash.js'\nimport { Database } from './db/index.js'\nimport { countAll, excluded } from './db/util.js'\n\nexport type BsyncCursors = {\n op?: string\n mute?: string\n notif?: string\n}\n\nexport class BsyncSubscription {\n private ac: AbortController | undefined\n private pendingScans = new Set<Promise<void>>()\n private bsyncClient: BsyncClient\n private db: Database\n // Latest cursor processed for each stream, used to wait until caught up.\n private cursors: BsyncCursors = {}\n\n constructor(public opts: { db: Database; config: ServerConfig }) {\n const { config, db } = opts\n\n this.db = db\n this.bsyncClient = createBsyncClient({\n baseUrl: config.bsyncUrl,\n httpVersion: config.bsyncHttpVersion ?? '2',\n nodeOptions: { rejectUnauthorized: !config.bsyncIgnoreBadTls },\n interceptors: config.bsyncApiKey\n ? [authWithApiKey(config.bsyncApiKey)]\n : [],\n })\n }\n\n get running() {\n return !!this.ac\n }\n\n start() {\n if (this.ac) return\n this.ac = new AbortController()\n this.scanMuteOperations()\n this.scanNotifOperations()\n this.scanOperations()\n }\n\n /**\n * Waits until the subscription has processed every operation that existed in\n * bsync at the time `targets` was read (one cursor per stream). Returns as\n * soon as the cursors catch up - it does not wait for the bsync long-poll\n * timeout. Intended for tests/dev.\n */\n async processAll(targets: BsyncCursors, timeout = 5000) {\n if (!this.ac) return\n const start = Date.now()\n while (!this.isCaughtUp(targets)) {\n if (Date.now() - start > timeout) {\n throw new Error(\n `bsync subscription was not caught up within ${timeout}ms`,\n )\n }\n await wait(5)\n }\n }\n\n private isCaughtUp(targets: BsyncCursors) {\n return (\n gteCursor(this.cursors.op, targets.op) &&\n gteCursor(this.cursors.mute, targets.mute) &&\n gteCursor(this.cursors.notif, targets.notif)\n )\n }\n\n async destroy() {\n // Aborting cancels any in-flight long-poll scan immediately, so we don't\n // have to wait for the bsync long-poll timeout to elapse.\n this.ac?.abort()\n this.ac = undefined\n // Wait for the ongoing scans to unwind cleanly.\n await Promise.all(this.pendingScans)\n }\n\n /**\n * starts a scanner in the background, killing it when this instance is\n * destroyed, and storing its promise in `this.pendingScans` to allow\n * awaiting.\n */\n private startScanning(\n scanner: (\n cursor: undefined | string,\n signal: AbortSignal,\n ) => Promise<string | undefined>,\n ) {\n if (!this.ac) return\n const signal = this.ac.signal\n\n const scanPromise = this.runScanner(scanner, signal)\n\n this.pendingScans.add(scanPromise)\n void scanPromise\n .catch(() => {})\n .finally(() => {\n this.pendingScans.delete(scanPromise)\n })\n }\n\n private async runScanner(\n scanner: (\n cursor: undefined | string,\n signal: AbortSignal,\n ) => Promise<string | undefined>,\n signal: AbortSignal,\n ) {\n let cursor: undefined | string\n\n while (!signal.aborted) {\n try {\n cursor = await scanner(cursor, signal)\n } catch (err) {\n if (signal.aborted) break\n\n log.error({ err }, 'error in bsync scan')\n\n // retry in a bit, but bail out early if we're shutting down\n await wait(100, signal)\n }\n }\n }\n\n private scanMuteOperations() {\n this.startScanning(async (cursor, signal) => {\n const res = await this.bsyncClient.scanMuteOperations(\n { cursor },\n { signal },\n )\n\n await this.processMuteOperations(res.operations)\n this.cursors.mute = res.cursor\n\n return res.cursor\n })\n }\n\n private async processMuteOperations(operations: MuteOperation[]) {\n for (const op of operations) {\n const { type, actorDid, subject } = op\n if (type === MuteOperation_Type.ADD) {\n if (subject.startsWith('did:')) {\n await this.db.db\n .insertInto('mute')\n .values({\n mutedByDid: actorDid,\n subjectDid: subject,\n createdAt: new Date().toISOString(),\n })\n .onConflict((oc) => oc.doNothing())\n .execute()\n } else {\n const uri = new AtUri(subject)\n if (uri.collection === app.bsky.graph.list.$type) {\n await this.db.db\n .insertInto('list_mute')\n .values({\n mutedByDid: actorDid,\n listUri: subject,\n createdAt: new Date().toISOString(),\n })\n .onConflict((oc) => oc.doNothing())\n .execute()\n } else {\n await this.db.db\n .insertInto('thread_mute')\n .values({\n mutedByDid: actorDid,\n rootUri: subject,\n createdAt: new Date().toISOString(),\n })\n .onConflict((oc) => oc.doNothing())\n .execute()\n }\n }\n } else if (type === MuteOperation_Type.REMOVE) {\n if (subject.startsWith('did:')) {\n await this.db.db\n .deleteFrom('mute')\n .where('mutedByDid', '=', actorDid)\n .where('subjectDid', '=', subject)\n .execute()\n } else {\n const uri = new AtUri(subject)\n if (uri.collection === app.bsky.graph.list.$type) {\n await this.db.db\n .deleteFrom('list_mute')\n .where('mutedByDid', '=', actorDid)\n .where('listUri', '=', subject)\n .execute()\n } else {\n await this.db.db\n .deleteFrom('thread_mute')\n .where('mutedByDid', '=', actorDid)\n .where('rootUri', '=', subject)\n .execute()\n }\n }\n } else if (type === MuteOperation_Type.CLEAR) {\n await this.db.db\n .deleteFrom('mute')\n .where('mutedByDid', '=', actorDid)\n .execute()\n await this.db.db\n .deleteFrom('list_mute')\n .where('mutedByDid', '=', actorDid)\n .execute()\n }\n }\n }\n\n private scanNotifOperations() {\n this.startScanning(async (cursor, signal) => {\n const res = await this.bsyncClient.scanNotifOperations(\n { cursor },\n { signal },\n )\n\n await this.processNotifOperations(res.operations)\n this.cursors.notif = res.cursor\n\n return res.cursor\n })\n }\n\n private async processNotifOperations(operations: NotifOperation[]) {\n for (const op of operations) {\n const { actorDid, priority } = op\n if (priority !== undefined) {\n await this.db.db\n .insertInto('actor_state')\n .values({\n did: actorDid,\n priorityNotifs: priority,\n lastSeenNotifs: new Date().toISOString(),\n })\n .onConflict((oc) =>\n oc.column('did').doUpdateSet({ priorityNotifs: priority }),\n )\n .execute()\n }\n }\n }\n\n private scanOperations() {\n this.startScanning(async (cursor, signal) => {\n const res = await this.bsyncClient.scanOperations({ cursor }, { signal })\n\n await this.processOperations(res.operations)\n this.cursors.op = res.cursor\n\n return res.cursor\n })\n }\n\n private async processOperations(operations: Operation[]) {\n for (const op of operations) {\n const { namespace } = op\n\n const now = new Date().toISOString()\n\n // Index all items into private_data.\n await handleGenericOperation(this.db, op, now)\n\n // Maintain bespoke indexes for certain namespaces. A failure here must\n // not stall the stream, so log and move on (matching bsync behavior).\n try {\n if (\n namespace ===\n Namespaces.AppBskyNotificationDefsSubjectActivitySubscription.$type\n ) {\n await handleSubjectActivitySubscriptionOperation(this.db, op, now)\n } else if (\n namespace === Namespaces.AppBskyUnspeccedDefsAgeAssuranceEvent.$type\n ) {\n await handleAgeAssuranceEventOperation(this.db, op, now)\n } else if (\n namespace === Namespaces.AppBskyAgeassuranceDefsEvent.$type\n ) {\n await handleAgeAssuranceV2EventOperation(this.db, op, now)\n } else if (namespace === Namespaces.AppBskyBookmarkDefsBookmark.$type) {\n await handleBookmarkOperation(this.db, op, now)\n } else if (namespace === Namespaces.AppBskyDraftDefsDraftWithId.$type) {\n await handleDraftOperation(this.db, op, now)\n }\n } catch (err) {\n log.warn({ err, namespace }, 'bsync put operation indexing failed')\n }\n }\n }\n}\n\ntype HandleOperation = (\n db: Database,\n op: Operation,\n now: string,\n) => Promise<void>\n\n// upsert into or remove from private_data\nconst handleGenericOperation: HandleOperation = async (\n db: Database,\n op: Operation,\n now: string,\n) => {\n const { actorDid, namespace, key, method, payload } = op\n if (method === Method.CREATE || method === Method.UPDATE) {\n await db.db\n .insertInto('private_data')\n .values({\n actorDid,\n namespace,\n key,\n payload: Buffer.from(payload).toString('utf8'),\n indexedAt: now,\n updatedAt: now,\n })\n .onConflict((oc) =>\n oc.columns(['actorDid', 'namespace', 'key']).doUpdateSet({\n payload: excluded(db.db, 'payload'),\n updatedAt: excluded(db.db, 'updatedAt'),\n }),\n )\n .execute()\n } else if (method === Method.DELETE) {\n await db.db\n .deleteFrom('private_data')\n .where('actorDid', '=', actorDid)\n .where('namespace', '=', namespace)\n .where('key', '=', key)\n .execute()\n } else {\n assert.fail(`unexpected method ${method}`)\n }\n}\n\nconst handleSubjectActivitySubscriptionOperation: HandleOperation = async (\n db: Database,\n op: Operation,\n now: string,\n) => {\n const { actorDid, key, method, payload } = op\n\n if (method === Method.DELETE) {\n await db.db\n .deleteFrom('activity_subscription')\n .where('creator', '=', actorDid)\n .where('key', '=', key)\n .execute()\n return\n }\n\n const parsed =\n lexParse<app.bsky.notification.defs.SubjectActivitySubscription>(\n Buffer.from(payload).toString('utf8'),\n )\n const {\n subject,\n activitySubscription: { post, reply },\n } = parsed\n\n if (method === Method.CREATE) {\n await db.db\n .insertInto('activity_subscription')\n .values({\n creator: actorDid,\n subjectDid: subject,\n key,\n indexedAt: now,\n post,\n reply,\n })\n .execute()\n return\n }\n\n await db.db\n .updateTable('activity_subscription')\n .where('creator', '=', actorDid)\n .where('key', '=', key)\n .set({\n indexedAt: now,\n post,\n reply,\n })\n .execute()\n}\n\nconst handleAgeAssuranceEventOperation: HandleOperation = async (\n db: Database,\n op: Operation,\n) => {\n const { actorDid, method, payload } = op\n if (method !== Method.CREATE) return\n\n const parsed = lexParse<app.bsky.unspecced.defs.AgeAssuranceEvent>(\n Buffer.from(payload).toString('utf8'),\n )\n const { status, createdAt } = parsed\n\n const update = {\n ageAssuranceStatus: status,\n ageAssuranceLastInitiatedAt: status === 'pending' ? createdAt : undefined,\n }\n\n await db.db\n .updateTable('actor')\n .set(update)\n .where('did', '=', actorDid)\n .execute()\n}\n\nconst handleAgeAssuranceV2EventOperation: HandleOperation = async (\n db: Database,\n op: Operation,\n) => {\n const { actorDid, method, payload } = op\n if (method !== Method.CREATE) return\n\n const parsed = lexParse<app.bsky.ageassurance.defs.Event>(\n Buffer.from(payload).toString('utf8'),\n )\n const { status, createdAt, access, countryCode, regionCode } = parsed\n\n const update = {\n ageAssuranceStatus: status,\n ageAssuranceLastInitiatedAt: status === 'pending' ? createdAt : undefined,\n ageAssuranceAccess: access,\n ageAssuranceCountryCode: countryCode,\n ageAssuranceRegionCode: regionCode,\n }\n\n await db.db\n .updateTable('actor')\n .set(update)\n .where('did', '=', actorDid)\n .execute()\n}\n\nconst handleBookmarkOperation: HandleOperation = async (\n db: Database,\n op: Operation,\n now: string,\n) => {\n const { actorDid, key, method, payload } = op\n\n const updateAgg = (uri: string, dbTxn: Database) => {\n return dbTxn.db\n .insertInto('post_agg')\n .values({\n uri,\n bookmarkCount: dbTxn.db\n .selectFrom('bookmark')\n .where('bookmark.subjectUri', '=', uri)\n .select(countAll.as('count')),\n })\n .onConflict((oc) =>\n oc\n .column('uri')\n .doUpdateSet({ bookmarkCount: excluded(dbTxn.db, 'bookmarkCount') }),\n )\n .execute()\n }\n\n if (method === Method.CREATE) {\n const parsed = lexParse<app.bsky.bookmark.defs.Bookmark>(\n Buffer.from(payload).toString('utf8'),\n )\n const {\n subject: { uri, cid },\n } = parsed\n\n await db.transaction(async (dbTxn) => {\n await dbTxn.db\n .insertInto('bookmark')\n .values({\n creator: actorDid,\n key,\n indexedAt: now,\n subjectUri: uri,\n subjectCid: cid,\n })\n .execute()\n\n await updateAgg(uri, dbTxn)\n })\n }\n\n if (method === Method.DELETE) {\n await db.transaction(async (dbTxn) => {\n const bookmark = await dbTxn.db\n .selectFrom('bookmark')\n .selectAll()\n .where('creator', '=', actorDid)\n .where('key', '=', key)\n .executeTakeFirst()\n\n if (bookmark) {\n await dbTxn.db\n .deleteFrom('bookmark')\n .where('creator', '=', actorDid)\n .where('key', '=', key)\n .execute()\n\n await updateAgg(bookmark.subjectUri, dbTxn)\n }\n })\n }\n}\n\nconst handleDraftOperation: HandleOperation = async (\n db: Database,\n op: Operation,\n now: string,\n) => {\n const { actorDid, key, method, payload } = op\n\n if (method === Method.CREATE) {\n const payloadString = Buffer.from(payload).toString('utf8')\n\n await db.db\n .insertInto('draft')\n .values({\n creator: actorDid,\n key,\n createdAt: now,\n updatedAt: now,\n payload: payloadString,\n })\n .execute()\n }\n\n if (method === Method.UPDATE) {\n const payloadString = Buffer.from(payload).toString('utf8')\n\n await db.db\n .updateTable('draft')\n .where('creator', '=', actorDid)\n .where('key', '=', key)\n .set({\n updatedAt: now,\n payload: payloadString,\n })\n .execute()\n }\n\n if (method === Method.DELETE) {\n await db.db\n .deleteFrom('draft')\n .where('creator', '=', actorDid)\n .where('key', '=', key)\n .execute()\n }\n}\n\n// compares numeric (bigint) cursor ids; an undefined target is always satisfied\nconst gteCursor = (current: string | undefined, target: string | undefined) => {\n if (!target) return true\n return BigInt(current || '0') >= BigInt(target)\n}\n\n// resolves after `ms`, or early if `signal` aborts\nconst wait = (ms: number, signal?: AbortSignal) =>\n new Promise<void>((resolve) => {\n if (signal?.aborted) return resolve()\n const done = () => {\n clearTimeout(timer)\n signal?.removeEventListener('abort', done)\n resolve()\n }\n const timer = setTimeout(done, ms)\n signal?.addEventListener('abort', done, { once: true })\n })\n"]}
|
|
1
|
+
{"version":3,"file":"bsync-subscription.js","sourceRoot":"","sources":["../../../src/data-plane/server/bsync-subscription.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'node:assert'\nimport { lexParse } from '@atproto/lex'\nimport { AtUri } from '@atproto/syntax'\nimport {\n type BsyncClient,\n authWithApiKey,\n createBsyncClient,\n} from '../../bsync.js'\nimport type { ServerConfig } from '../../config.js'\nimport { app } from '../../lexicons/index.js'\nimport { subLogger as log } from '../../logger.js'\nimport {\n Method,\n type MuteOperation,\n MuteOperation_Type,\n type NotifOperation,\n type Operation,\n} from '../../proto/bsync_pb.js'\nimport { Namespaces } from '../../stash.js'\nimport type { Database } from './db/index.js'\nimport { countAll, excluded } from './db/util.js'\n\nexport type BsyncCursors = {\n op?: string\n mute?: string\n notif?: string\n}\n\nexport class BsyncSubscription {\n private ac: AbortController | undefined\n private pendingScans = new Set<Promise<void>>()\n private bsyncClient: BsyncClient\n private db: Database\n // Latest cursor processed for each stream, used to wait until caught up.\n private cursors: BsyncCursors = {}\n\n constructor(public opts: { db: Database; config: ServerConfig }) {\n const { config, db } = opts\n\n this.db = db\n this.bsyncClient = createBsyncClient({\n baseUrl: config.bsyncUrl,\n httpVersion: config.bsyncHttpVersion ?? '2',\n nodeOptions: { rejectUnauthorized: !config.bsyncIgnoreBadTls },\n interceptors: config.bsyncApiKey\n ? [authWithApiKey(config.bsyncApiKey)]\n : [],\n })\n }\n\n get running() {\n return !!this.ac\n }\n\n start() {\n if (this.ac) return\n this.ac = new AbortController()\n this.scanMuteOperations()\n this.scanNotifOperations()\n this.scanOperations()\n }\n\n /**\n * Waits until the subscription has processed every operation that existed in\n * bsync at the time `targets` was read (one cursor per stream). Returns as\n * soon as the cursors catch up - it does not wait for the bsync long-poll\n * timeout. Intended for tests/dev.\n */\n async processAll(targets: BsyncCursors, timeout = 5000) {\n if (!this.ac) return\n const start = Date.now()\n while (!this.isCaughtUp(targets)) {\n if (Date.now() - start > timeout) {\n throw new Error(\n `bsync subscription was not caught up within ${timeout}ms`,\n )\n }\n await wait(5)\n }\n }\n\n private isCaughtUp(targets: BsyncCursors) {\n return (\n gteCursor(this.cursors.op, targets.op) &&\n gteCursor(this.cursors.mute, targets.mute) &&\n gteCursor(this.cursors.notif, targets.notif)\n )\n }\n\n async destroy() {\n // Aborting cancels any in-flight long-poll scan immediately, so we don't\n // have to wait for the bsync long-poll timeout to elapse.\n this.ac?.abort()\n this.ac = undefined\n // Wait for the ongoing scans to unwind cleanly.\n await Promise.all(this.pendingScans)\n }\n\n /**\n * starts a scanner in the background, killing it when this instance is\n * destroyed, and storing its promise in `this.pendingScans` to allow\n * awaiting.\n */\n private startScanning(\n scanner: (\n cursor: undefined | string,\n signal: AbortSignal,\n ) => Promise<string | undefined>,\n ) {\n if (!this.ac) return\n const signal = this.ac.signal\n\n const scanPromise = this.runScanner(scanner, signal)\n\n this.pendingScans.add(scanPromise)\n void scanPromise\n .catch(() => {})\n .finally(() => {\n this.pendingScans.delete(scanPromise)\n })\n }\n\n private async runScanner(\n scanner: (\n cursor: undefined | string,\n signal: AbortSignal,\n ) => Promise<string | undefined>,\n signal: AbortSignal,\n ) {\n let cursor: undefined | string\n\n while (!signal.aborted) {\n try {\n cursor = await scanner(cursor, signal)\n } catch (err) {\n if (signal.aborted) break\n\n log.error({ err }, 'error in bsync scan')\n\n // retry in a bit, but bail out early if we're shutting down\n await wait(100, signal)\n }\n }\n }\n\n private scanMuteOperations() {\n this.startScanning(async (cursor, signal) => {\n const res = await this.bsyncClient.scanMuteOperations(\n { cursor },\n { signal },\n )\n\n await this.processMuteOperations(res.operations)\n this.cursors.mute = res.cursor\n\n return res.cursor\n })\n }\n\n private async processMuteOperations(operations: MuteOperation[]) {\n for (const op of operations) {\n const { type, actorDid, subject } = op\n if (type === MuteOperation_Type.ADD) {\n if (subject.startsWith('did:')) {\n await this.db.db\n .insertInto('mute')\n .values({\n mutedByDid: actorDid,\n subjectDid: subject,\n createdAt: new Date().toISOString(),\n })\n .onConflict((oc) => oc.doNothing())\n .execute()\n } else {\n const uri = new AtUri(subject)\n if (uri.collection === app.bsky.graph.list.$type) {\n await this.db.db\n .insertInto('list_mute')\n .values({\n mutedByDid: actorDid,\n listUri: subject,\n createdAt: new Date().toISOString(),\n })\n .onConflict((oc) => oc.doNothing())\n .execute()\n } else {\n await this.db.db\n .insertInto('thread_mute')\n .values({\n mutedByDid: actorDid,\n rootUri: subject,\n createdAt: new Date().toISOString(),\n })\n .onConflict((oc) => oc.doNothing())\n .execute()\n }\n }\n } else if (type === MuteOperation_Type.REMOVE) {\n if (subject.startsWith('did:')) {\n await this.db.db\n .deleteFrom('mute')\n .where('mutedByDid', '=', actorDid)\n .where('subjectDid', '=', subject)\n .execute()\n } else {\n const uri = new AtUri(subject)\n if (uri.collection === app.bsky.graph.list.$type) {\n await this.db.db\n .deleteFrom('list_mute')\n .where('mutedByDid', '=', actorDid)\n .where('listUri', '=', subject)\n .execute()\n } else {\n await this.db.db\n .deleteFrom('thread_mute')\n .where('mutedByDid', '=', actorDid)\n .where('rootUri', '=', subject)\n .execute()\n }\n }\n } else if (type === MuteOperation_Type.CLEAR) {\n await this.db.db\n .deleteFrom('mute')\n .where('mutedByDid', '=', actorDid)\n .execute()\n await this.db.db\n .deleteFrom('list_mute')\n .where('mutedByDid', '=', actorDid)\n .execute()\n }\n }\n }\n\n private scanNotifOperations() {\n this.startScanning(async (cursor, signal) => {\n const res = await this.bsyncClient.scanNotifOperations(\n { cursor },\n { signal },\n )\n\n await this.processNotifOperations(res.operations)\n this.cursors.notif = res.cursor\n\n return res.cursor\n })\n }\n\n private async processNotifOperations(operations: NotifOperation[]) {\n for (const op of operations) {\n const { actorDid, priority } = op\n if (priority !== undefined) {\n await this.db.db\n .insertInto('actor_state')\n .values({\n did: actorDid,\n priorityNotifs: priority,\n lastSeenNotifs: new Date().toISOString(),\n })\n .onConflict((oc) =>\n oc.column('did').doUpdateSet({ priorityNotifs: priority }),\n )\n .execute()\n }\n }\n }\n\n private scanOperations() {\n this.startScanning(async (cursor, signal) => {\n const res = await this.bsyncClient.scanOperations({ cursor }, { signal })\n\n await this.processOperations(res.operations)\n this.cursors.op = res.cursor\n\n return res.cursor\n })\n }\n\n private async processOperations(operations: Operation[]) {\n for (const op of operations) {\n const { namespace } = op\n\n const now = new Date().toISOString()\n\n // Index all items into private_data.\n await handleGenericOperation(this.db, op, now)\n\n // Maintain bespoke indexes for certain namespaces. A failure here must\n // not stall the stream, so log and move on (matching bsync behavior).\n try {\n if (\n namespace ===\n Namespaces.AppBskyNotificationDefsSubjectActivitySubscription.$type\n ) {\n await handleSubjectActivitySubscriptionOperation(this.db, op, now)\n } else if (\n namespace === Namespaces.AppBskyUnspeccedDefsAgeAssuranceEvent.$type\n ) {\n await handleAgeAssuranceEventOperation(this.db, op, now)\n } else if (\n namespace === Namespaces.AppBskyAgeassuranceDefsEvent.$type\n ) {\n await handleAgeAssuranceV2EventOperation(this.db, op, now)\n } else if (namespace === Namespaces.AppBskyBookmarkDefsBookmark.$type) {\n await handleBookmarkOperation(this.db, op, now)\n } else if (namespace === Namespaces.AppBskyDraftDefsDraftWithId.$type) {\n await handleDraftOperation(this.db, op, now)\n }\n } catch (err) {\n log.warn({ err, namespace }, 'bsync put operation indexing failed')\n }\n }\n }\n}\n\ntype HandleOperation = (\n db: Database,\n op: Operation,\n now: string,\n) => Promise<void>\n\n// upsert into or remove from private_data\nconst handleGenericOperation: HandleOperation = async (\n db: Database,\n op: Operation,\n now: string,\n) => {\n const { actorDid, namespace, key, method, payload } = op\n if (method === Method.CREATE || method === Method.UPDATE) {\n await db.db\n .insertInto('private_data')\n .values({\n actorDid,\n namespace,\n key,\n payload: Buffer.from(payload).toString('utf8'),\n indexedAt: now,\n updatedAt: now,\n })\n .onConflict((oc) =>\n oc.columns(['actorDid', 'namespace', 'key']).doUpdateSet({\n payload: excluded(db.db, 'payload'),\n updatedAt: excluded(db.db, 'updatedAt'),\n }),\n )\n .execute()\n } else if (method === Method.DELETE) {\n await db.db\n .deleteFrom('private_data')\n .where('actorDid', '=', actorDid)\n .where('namespace', '=', namespace)\n .where('key', '=', key)\n .execute()\n } else {\n assert.fail(`unexpected method ${method}`)\n }\n}\n\nconst handleSubjectActivitySubscriptionOperation: HandleOperation = async (\n db: Database,\n op: Operation,\n now: string,\n) => {\n const { actorDid, key, method, payload } = op\n\n if (method === Method.DELETE) {\n await db.db\n .deleteFrom('activity_subscription')\n .where('creator', '=', actorDid)\n .where('key', '=', key)\n .execute()\n return\n }\n\n const parsed =\n lexParse<app.bsky.notification.defs.SubjectActivitySubscription>(\n Buffer.from(payload).toString('utf8'),\n )\n const {\n subject,\n activitySubscription: { post, reply },\n } = parsed\n\n if (method === Method.CREATE) {\n await db.db\n .insertInto('activity_subscription')\n .values({\n creator: actorDid,\n subjectDid: subject,\n key,\n indexedAt: now,\n post,\n reply,\n })\n .execute()\n return\n }\n\n await db.db\n .updateTable('activity_subscription')\n .where('creator', '=', actorDid)\n .where('key', '=', key)\n .set({\n indexedAt: now,\n post,\n reply,\n })\n .execute()\n}\n\nconst handleAgeAssuranceEventOperation: HandleOperation = async (\n db: Database,\n op: Operation,\n) => {\n const { actorDid, method, payload } = op\n if (method !== Method.CREATE) return\n\n const parsed = lexParse<app.bsky.unspecced.defs.AgeAssuranceEvent>(\n Buffer.from(payload).toString('utf8'),\n )\n const { status, createdAt } = parsed\n\n const update = {\n ageAssuranceStatus: status,\n ageAssuranceLastInitiatedAt: status === 'pending' ? createdAt : undefined,\n }\n\n await db.db\n .updateTable('actor')\n .set(update)\n .where('did', '=', actorDid)\n .execute()\n}\n\nconst handleAgeAssuranceV2EventOperation: HandleOperation = async (\n db: Database,\n op: Operation,\n) => {\n const { actorDid, method, payload } = op\n if (method !== Method.CREATE) return\n\n const parsed = lexParse<app.bsky.ageassurance.defs.Event>(\n Buffer.from(payload).toString('utf8'),\n )\n const { status, createdAt, access, countryCode, regionCode } = parsed\n\n const update = {\n ageAssuranceStatus: status,\n ageAssuranceLastInitiatedAt: status === 'pending' ? createdAt : undefined,\n ageAssuranceAccess: access,\n ageAssuranceCountryCode: countryCode,\n ageAssuranceRegionCode: regionCode,\n }\n\n await db.db\n .updateTable('actor')\n .set(update)\n .where('did', '=', actorDid)\n .execute()\n}\n\nconst handleBookmarkOperation: HandleOperation = async (\n db: Database,\n op: Operation,\n now: string,\n) => {\n const { actorDid, key, method, payload } = op\n\n const updateAgg = (uri: string, dbTxn: Database) => {\n return dbTxn.db\n .insertInto('post_agg')\n .values({\n uri,\n bookmarkCount: dbTxn.db\n .selectFrom('bookmark')\n .where('bookmark.subjectUri', '=', uri)\n .select(countAll.as('count')),\n })\n .onConflict((oc) =>\n oc\n .column('uri')\n .doUpdateSet({ bookmarkCount: excluded(dbTxn.db, 'bookmarkCount') }),\n )\n .execute()\n }\n\n if (method === Method.CREATE) {\n const parsed = lexParse<app.bsky.bookmark.defs.Bookmark>(\n Buffer.from(payload).toString('utf8'),\n )\n const {\n subject: { uri, cid },\n } = parsed\n\n await db.transaction(async (dbTxn) => {\n await dbTxn.db\n .insertInto('bookmark')\n .values({\n creator: actorDid,\n key,\n indexedAt: now,\n subjectUri: uri,\n subjectCid: cid,\n })\n .execute()\n\n await updateAgg(uri, dbTxn)\n })\n }\n\n if (method === Method.DELETE) {\n await db.transaction(async (dbTxn) => {\n const bookmark = await dbTxn.db\n .selectFrom('bookmark')\n .selectAll()\n .where('creator', '=', actorDid)\n .where('key', '=', key)\n .executeTakeFirst()\n\n if (bookmark) {\n await dbTxn.db\n .deleteFrom('bookmark')\n .where('creator', '=', actorDid)\n .where('key', '=', key)\n .execute()\n\n await updateAgg(bookmark.subjectUri, dbTxn)\n }\n })\n }\n}\n\nconst handleDraftOperation: HandleOperation = async (\n db: Database,\n op: Operation,\n now: string,\n) => {\n const { actorDid, key, method, payload } = op\n\n if (method === Method.CREATE) {\n const payloadString = Buffer.from(payload).toString('utf8')\n\n await db.db\n .insertInto('draft')\n .values({\n creator: actorDid,\n key,\n createdAt: now,\n updatedAt: now,\n payload: payloadString,\n })\n .execute()\n }\n\n if (method === Method.UPDATE) {\n const payloadString = Buffer.from(payload).toString('utf8')\n\n await db.db\n .updateTable('draft')\n .where('creator', '=', actorDid)\n .where('key', '=', key)\n .set({\n updatedAt: now,\n payload: payloadString,\n })\n .execute()\n }\n\n if (method === Method.DELETE) {\n await db.db\n .deleteFrom('draft')\n .where('creator', '=', actorDid)\n .where('key', '=', key)\n .execute()\n }\n}\n\n// compares numeric (bigint) cursor ids; an undefined target is always satisfied\nconst gteCursor = (current: string | undefined, target: string | undefined) => {\n if (!target) return true\n return BigInt(current || '0') >= BigInt(target)\n}\n\n// resolves after `ms`, or early if `signal` aborts\nconst wait = (ms: number, signal?: AbortSignal) =>\n new Promise<void>((resolve) => {\n if (signal?.aborted) return resolve()\n const done = () => {\n clearTimeout(timer)\n signal?.removeEventListener('abort', done)\n resolve()\n }\n const timer = setTimeout(done, ms)\n signal?.addEventListener('abort', done, { once: true })\n })\n"]}
|
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
import { Kysely } from 'kysely';
|
|
2
|
-
import * as activitySubscription from './tables/activity-subscription.js';
|
|
3
|
-
import * as actorBlock from './tables/actor-block.js';
|
|
4
|
-
import * as actorState from './tables/actor-state.js';
|
|
5
|
-
import * as actorSync from './tables/actor-sync.js';
|
|
6
|
-
import * as actor from './tables/actor.js';
|
|
7
|
-
import * as algo from './tables/algo.js';
|
|
8
|
-
import * as blobTakedown from './tables/blob-takedown.js';
|
|
9
|
-
import * as bookmark from './tables/bookmark.js';
|
|
10
|
-
import * as didCache from './tables/did-cache.js';
|
|
11
|
-
import * as draft from './tables/draft.js';
|
|
12
|
-
import * as duplicateRecord from './tables/duplicate-record.js';
|
|
13
|
-
import * as feedGenerator from './tables/feed-generator.js';
|
|
14
|
-
import * as feedItem from './tables/feed-item.js';
|
|
15
|
-
import * as follow from './tables/follow.js';
|
|
16
|
-
import * as label from './tables/label.js';
|
|
17
|
-
import * as labeler from './tables/labeler.js';
|
|
18
|
-
import * as like from './tables/like.js';
|
|
19
|
-
import * as listBlock from './tables/list-block.js';
|
|
20
|
-
import * as listItem from './tables/list-item.js';
|
|
21
|
-
import * as listMute from './tables/list-mute.js';
|
|
22
|
-
import * as list from './tables/list.js';
|
|
23
|
-
import * as mute from './tables/mute.js';
|
|
24
|
-
import * as notificationPushToken from './tables/notification-push-token.js';
|
|
25
|
-
import * as notification from './tables/notification.js';
|
|
26
|
-
import * as postAgg from './tables/post-agg.js';
|
|
27
|
-
import * as postEmbed from './tables/post-embed.js';
|
|
28
|
-
import * as postgate from './tables/post-gate.js';
|
|
29
|
-
import * as post from './tables/post.js';
|
|
30
|
-
import * as privateData from './tables/private-data.js';
|
|
31
|
-
import * as profileAgg from './tables/profile-agg.js';
|
|
32
|
-
import * as profile from './tables/profile.js';
|
|
33
|
-
import * as quote from './tables/quote.js';
|
|
34
|
-
import * as record from './tables/record.js';
|
|
35
|
-
import * as repost from './tables/repost.js';
|
|
36
|
-
import * as starterPack from './tables/starter-pack.js';
|
|
37
|
-
import * as subscription from './tables/subscription.js';
|
|
38
|
-
import * as suggestedFeed from './tables/suggested-feed.js';
|
|
39
|
-
import * as suggestedFollow from './tables/suggested-follow.js';
|
|
40
|
-
import * as taggedSuggestion from './tables/tagged-suggestion.js';
|
|
41
|
-
import * as threadgate from './tables/thread-gate.js';
|
|
42
|
-
import * as threadMute from './tables/thread-mute.js';
|
|
43
|
-
import * as verification from './tables/verification.js';
|
|
44
|
-
import * as viewParam from './tables/view-param.js';
|
|
1
|
+
import type { Kysely } from 'kysely';
|
|
2
|
+
import type * as activitySubscription from './tables/activity-subscription.js';
|
|
3
|
+
import type * as actorBlock from './tables/actor-block.js';
|
|
4
|
+
import type * as actorState from './tables/actor-state.js';
|
|
5
|
+
import type * as actorSync from './tables/actor-sync.js';
|
|
6
|
+
import type * as actor from './tables/actor.js';
|
|
7
|
+
import type * as algo from './tables/algo.js';
|
|
8
|
+
import type * as blobTakedown from './tables/blob-takedown.js';
|
|
9
|
+
import type * as bookmark from './tables/bookmark.js';
|
|
10
|
+
import type * as didCache from './tables/did-cache.js';
|
|
11
|
+
import type * as draft from './tables/draft.js';
|
|
12
|
+
import type * as duplicateRecord from './tables/duplicate-record.js';
|
|
13
|
+
import type * as feedGenerator from './tables/feed-generator.js';
|
|
14
|
+
import type * as feedItem from './tables/feed-item.js';
|
|
15
|
+
import type * as follow from './tables/follow.js';
|
|
16
|
+
import type * as label from './tables/label.js';
|
|
17
|
+
import type * as labeler from './tables/labeler.js';
|
|
18
|
+
import type * as like from './tables/like.js';
|
|
19
|
+
import type * as listBlock from './tables/list-block.js';
|
|
20
|
+
import type * as listItem from './tables/list-item.js';
|
|
21
|
+
import type * as listMute from './tables/list-mute.js';
|
|
22
|
+
import type * as list from './tables/list.js';
|
|
23
|
+
import type * as mute from './tables/mute.js';
|
|
24
|
+
import type * as notificationPushToken from './tables/notification-push-token.js';
|
|
25
|
+
import type * as notification from './tables/notification.js';
|
|
26
|
+
import type * as postAgg from './tables/post-agg.js';
|
|
27
|
+
import type * as postEmbed from './tables/post-embed.js';
|
|
28
|
+
import type * as postgate from './tables/post-gate.js';
|
|
29
|
+
import type * as post from './tables/post.js';
|
|
30
|
+
import type * as privateData from './tables/private-data.js';
|
|
31
|
+
import type * as profileAgg from './tables/profile-agg.js';
|
|
32
|
+
import type * as profile from './tables/profile.js';
|
|
33
|
+
import type * as quote from './tables/quote.js';
|
|
34
|
+
import type * as record from './tables/record.js';
|
|
35
|
+
import type * as repost from './tables/repost.js';
|
|
36
|
+
import type * as starterPack from './tables/starter-pack.js';
|
|
37
|
+
import type * as subscription from './tables/subscription.js';
|
|
38
|
+
import type * as suggestedFeed from './tables/suggested-feed.js';
|
|
39
|
+
import type * as suggestedFollow from './tables/suggested-follow.js';
|
|
40
|
+
import type * as taggedSuggestion from './tables/tagged-suggestion.js';
|
|
41
|
+
import type * as threadgate from './tables/thread-gate.js';
|
|
42
|
+
import type * as threadMute from './tables/thread-mute.js';
|
|
43
|
+
import type * as verification from './tables/verification.js';
|
|
44
|
+
import type * as viewParam from './tables/view-param.js';
|
|
45
45
|
export type DatabaseSchemaType = duplicateRecord.PartialDB & profile.PartialDB & profileAgg.PartialDB & post.PartialDB & postEmbed.PartialDB & postAgg.PartialDB & repost.PartialDB & threadgate.PartialDB & postgate.PartialDB & feedItem.PartialDB & follow.PartialDB & like.PartialDB & list.PartialDB & listItem.PartialDB & listMute.PartialDB & listBlock.PartialDB & mute.PartialDB & actorBlock.PartialDB & threadMute.PartialDB & feedGenerator.PartialDB & subscription.PartialDB & actor.PartialDB & actorState.PartialDB & actorSync.PartialDB & record.PartialDB & notification.PartialDB & notificationPushToken.PartialDB & didCache.PartialDB & label.PartialDB & algo.PartialDB & viewParam.PartialDB & suggestedFollow.PartialDB & suggestedFeed.PartialDB & blobTakedown.PartialDB & labeler.PartialDB & starterPack.PartialDB & taggedSuggestion.PartialDB & quote.PartialDB & verification.PartialDB & privateData.PartialDB & activitySubscription.PartialDB & bookmark.PartialDB & draft.PartialDB;
|
|
46
46
|
export type DatabaseSchema = Kysely<DatabaseSchemaType>;
|
|
47
47
|
//# sourceMappingURL=database-schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-schema.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/db/database-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"database-schema.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/db/database-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-schema.js","sourceRoot":"","sources":["../../../../src/data-plane/server/db/database-schema.ts"],"names":[],"mappings":"","sourcesContent":["import { Kysely } from 'kysely'\nimport * as activitySubscription from './tables/activity-subscription.js'\nimport * as actorBlock from './tables/actor-block.js'\nimport * as actorState from './tables/actor-state.js'\nimport * as actorSync from './tables/actor-sync.js'\nimport * as actor from './tables/actor.js'\nimport * as algo from './tables/algo.js'\nimport * as blobTakedown from './tables/blob-takedown.js'\nimport * as bookmark from './tables/bookmark.js'\nimport * as didCache from './tables/did-cache.js'\nimport * as draft from './tables/draft.js'\nimport * as duplicateRecord from './tables/duplicate-record.js'\nimport * as feedGenerator from './tables/feed-generator.js'\nimport * as feedItem from './tables/feed-item.js'\nimport * as follow from './tables/follow.js'\nimport * as label from './tables/label.js'\nimport * as labeler from './tables/labeler.js'\nimport * as like from './tables/like.js'\nimport * as listBlock from './tables/list-block.js'\nimport * as listItem from './tables/list-item.js'\nimport * as listMute from './tables/list-mute.js'\nimport * as list from './tables/list.js'\nimport * as mute from './tables/mute.js'\nimport * as notificationPushToken from './tables/notification-push-token.js'\nimport * as notification from './tables/notification.js'\nimport * as postAgg from './tables/post-agg.js'\nimport * as postEmbed from './tables/post-embed.js'\nimport * as postgate from './tables/post-gate.js'\nimport * as post from './tables/post.js'\nimport * as privateData from './tables/private-data.js'\nimport * as profileAgg from './tables/profile-agg.js'\nimport * as profile from './tables/profile.js'\nimport * as quote from './tables/quote.js'\nimport * as record from './tables/record.js'\nimport * as repost from './tables/repost.js'\nimport * as starterPack from './tables/starter-pack.js'\nimport * as subscription from './tables/subscription.js'\nimport * as suggestedFeed from './tables/suggested-feed.js'\nimport * as suggestedFollow from './tables/suggested-follow.js'\nimport * as taggedSuggestion from './tables/tagged-suggestion.js'\nimport * as threadgate from './tables/thread-gate.js'\nimport * as threadMute from './tables/thread-mute.js'\nimport * as verification from './tables/verification.js'\nimport * as viewParam from './tables/view-param.js'\n\nexport type DatabaseSchemaType = duplicateRecord.PartialDB &\n profile.PartialDB &\n profileAgg.PartialDB &\n post.PartialDB &\n postEmbed.PartialDB &\n postAgg.PartialDB &\n repost.PartialDB &\n threadgate.PartialDB &\n postgate.PartialDB &\n feedItem.PartialDB &\n follow.PartialDB &\n like.PartialDB &\n list.PartialDB &\n listItem.PartialDB &\n listMute.PartialDB &\n listBlock.PartialDB &\n mute.PartialDB &\n actorBlock.PartialDB &\n threadMute.PartialDB &\n feedGenerator.PartialDB &\n subscription.PartialDB &\n actor.PartialDB &\n actorState.PartialDB &\n actorSync.PartialDB &\n record.PartialDB &\n notification.PartialDB &\n notificationPushToken.PartialDB &\n didCache.PartialDB &\n label.PartialDB &\n algo.PartialDB &\n viewParam.PartialDB &\n suggestedFollow.PartialDB &\n suggestedFeed.PartialDB &\n blobTakedown.PartialDB &\n labeler.PartialDB &\n starterPack.PartialDB &\n taggedSuggestion.PartialDB &\n quote.PartialDB &\n verification.PartialDB &\n privateData.PartialDB &\n activitySubscription.PartialDB &\n bookmark.PartialDB &\n draft.PartialDB\n\nexport type DatabaseSchema = Kysely<DatabaseSchemaType>\n"]}
|
|
1
|
+
{"version":3,"file":"database-schema.js","sourceRoot":"","sources":["../../../../src/data-plane/server/db/database-schema.ts"],"names":[],"mappings":"","sourcesContent":["import type { Kysely } from 'kysely'\nimport type * as activitySubscription from './tables/activity-subscription.js'\nimport type * as actorBlock from './tables/actor-block.js'\nimport type * as actorState from './tables/actor-state.js'\nimport type * as actorSync from './tables/actor-sync.js'\nimport type * as actor from './tables/actor.js'\nimport type * as algo from './tables/algo.js'\nimport type * as blobTakedown from './tables/blob-takedown.js'\nimport type * as bookmark from './tables/bookmark.js'\nimport type * as didCache from './tables/did-cache.js'\nimport type * as draft from './tables/draft.js'\nimport type * as duplicateRecord from './tables/duplicate-record.js'\nimport type * as feedGenerator from './tables/feed-generator.js'\nimport type * as feedItem from './tables/feed-item.js'\nimport type * as follow from './tables/follow.js'\nimport type * as label from './tables/label.js'\nimport type * as labeler from './tables/labeler.js'\nimport type * as like from './tables/like.js'\nimport type * as listBlock from './tables/list-block.js'\nimport type * as listItem from './tables/list-item.js'\nimport type * as listMute from './tables/list-mute.js'\nimport type * as list from './tables/list.js'\nimport type * as mute from './tables/mute.js'\nimport type * as notificationPushToken from './tables/notification-push-token.js'\nimport type * as notification from './tables/notification.js'\nimport type * as postAgg from './tables/post-agg.js'\nimport type * as postEmbed from './tables/post-embed.js'\nimport type * as postgate from './tables/post-gate.js'\nimport type * as post from './tables/post.js'\nimport type * as privateData from './tables/private-data.js'\nimport type * as profileAgg from './tables/profile-agg.js'\nimport type * as profile from './tables/profile.js'\nimport type * as quote from './tables/quote.js'\nimport type * as record from './tables/record.js'\nimport type * as repost from './tables/repost.js'\nimport type * as starterPack from './tables/starter-pack.js'\nimport type * as subscription from './tables/subscription.js'\nimport type * as suggestedFeed from './tables/suggested-feed.js'\nimport type * as suggestedFollow from './tables/suggested-follow.js'\nimport type * as taggedSuggestion from './tables/tagged-suggestion.js'\nimport type * as threadgate from './tables/thread-gate.js'\nimport type * as threadMute from './tables/thread-mute.js'\nimport type * as verification from './tables/verification.js'\nimport type * as viewParam from './tables/view-param.js'\n\nexport type DatabaseSchemaType = duplicateRecord.PartialDB &\n profile.PartialDB &\n profileAgg.PartialDB &\n post.PartialDB &\n postEmbed.PartialDB &\n postAgg.PartialDB &\n repost.PartialDB &\n threadgate.PartialDB &\n postgate.PartialDB &\n feedItem.PartialDB &\n follow.PartialDB &\n like.PartialDB &\n list.PartialDB &\n listItem.PartialDB &\n listMute.PartialDB &\n listBlock.PartialDB &\n mute.PartialDB &\n actorBlock.PartialDB &\n threadMute.PartialDB &\n feedGenerator.PartialDB &\n subscription.PartialDB &\n actor.PartialDB &\n actorState.PartialDB &\n actorSync.PartialDB &\n record.PartialDB &\n notification.PartialDB &\n notificationPushToken.PartialDB &\n didCache.PartialDB &\n label.PartialDB &\n algo.PartialDB &\n viewParam.PartialDB &\n suggestedFollow.PartialDB &\n suggestedFeed.PartialDB &\n blobTakedown.PartialDB &\n labeler.PartialDB &\n starterPack.PartialDB &\n taggedSuggestion.PartialDB &\n quote.PartialDB &\n verification.PartialDB &\n privateData.PartialDB &\n activitySubscription.PartialDB &\n bookmark.PartialDB &\n draft.PartialDB\n\nexport type DatabaseSchema = Kysely<DatabaseSchemaType>\n"]}
|
|
@@ -2,8 +2,8 @@ import { Migrator } from 'kysely/migration';
|
|
|
2
2
|
declare const PgPool: typeof import("pg").Pool;
|
|
3
3
|
type PgPool = InstanceType<typeof PgPool>;
|
|
4
4
|
import type TypedEmitter from 'typed-emitter';
|
|
5
|
-
import { DatabaseSchema } from './database-schema.js';
|
|
6
|
-
import { PgOptions } from './types.js';
|
|
5
|
+
import type { DatabaseSchema } from './database-schema.js';
|
|
6
|
+
import type { PgOptions } from './types.js';
|
|
7
7
|
export type { DatabaseSchema };
|
|
8
8
|
export declare class Database {
|
|
9
9
|
opts: PgOptions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/db/db.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAI3C,QAAA,MAAc,MAAM,0BAAuB,CAAA;AAC3C,KAAK,MAAM,GAAG,YAAY,CAAC,OAAO,MAAM,CAAC,CAAA;AACzC,OAAO,KAAK,YAAY,MAAM,eAAe,CAAA;AAE7C,OAAO,EAAE,cAAc,EAAsB,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/db/db.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAI3C,QAAA,MAAc,MAAM,0BAAuB,CAAA;AAC3C,KAAK,MAAM,GAAG,YAAY,CAAC,OAAO,MAAM,CAAC,CAAA;AACzC,OAAO,KAAK,YAAY,MAAM,eAAe,CAAA;AAE7C,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,sBAAsB,CAAA;AAG9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3C,YAAY,EAAE,cAAc,EAAE,CAAA;AAE9B,qBAAa,QAAQ;IAQV,IAAI,EAAE,SAAS;IAPxB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,cAAc,CAAA;IAClB,QAAQ,EAAE,QAAQ,CAAA;IAClB,KAAK,EAAyB,UAAU,CAAA;IACxC,SAAS,UAAQ;IAEjB,YACS,IAAI,EAAE,SAAS,EACtB,SAAS,CAAC,EAAE;QAAE,EAAE,EAAE,cAAc,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAA;KAAE,EAiDrE;IAED,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAE/B;IAEK,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAuBjE;IAED,IAAI,aAAa,YAEhB;IAED,iBAAiB,SAEhB;IAED,oBAAoB,SAEnB;IAED,QAAQ,CAAC,EAAE,EAAE,MAAM,IAAI,QAGtB;IAEK,gBAAgB,CAAC,SAAS,EAAE,MAAM,yDAYvC;IAEK,sBAAsB,0DAY3B;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAI3B;CACF;eAEc,QAAQ;AA6BvB,KAAK,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;AAEjD,KAAK,SAAS,GAAG;IACf,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../../../src/data-plane/server/db/db.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'node:assert'\nimport EventEmitter from 'node:events'\nimport {\n Kysely,\n KyselyPlugin,\n PluginTransformQueryArgs,\n PluginTransformResultArgs,\n PostgresDialect,\n QueryResult,\n RootOperationNode,\n UnknownRow,\n} from 'kysely'\nimport { Migrator } from 'kysely/migration'\n// eslint-disable-next-line import/default\nimport pg from 'pg'\n// eslint-disable-next-line import/no-named-as-default-member\nconst { Pool: PgPool, types: pgTypes } = pg\ntype PgPool = InstanceType<typeof PgPool>\nimport type TypedEmitter from 'typed-emitter'\nimport { dbLogger } from '../../../logger.js'\nimport { DatabaseSchema, DatabaseSchemaType } from './database-schema.js'\nimport * as migrations from './migrations/index.js'\nimport { CtxMigrationProvider } from './migrations/provider.js'\nimport { PgOptions } from './types.js'\n\nexport type { DatabaseSchema }\n\nexport class Database {\n pool: PgPool\n db: DatabaseSchema\n migrator: Migrator\n txEvt = new EventEmitter() as TxnEmitter\n destroyed = false\n\n constructor(\n public opts: PgOptions,\n instances?: { db: DatabaseSchema; pool: PgPool; migrator: Migrator },\n ) {\n // if instances are provided, use those\n if (instances) {\n this.db = instances.db\n this.pool = instances.pool\n this.migrator = instances.migrator\n return\n }\n\n // else create a pool & connect\n const { schema, url } = opts\n const pool =\n opts.pool ??\n new PgPool({\n connectionString: url,\n max: opts.poolSize,\n maxUses: opts.poolMaxUses,\n idleTimeoutMillis: opts.poolIdleTimeoutMs,\n })\n\n // Select count(*) and other pg bigints as js integer\n pgTypes.setTypeParser(pgTypes.builtins.INT8, (n) => parseInt(n, 10))\n\n // Setup schema usage, primarily for test parallelism (each test suite runs in its own pg schema)\n if (schema && !/^[a-z_]+$/i.test(schema)) {\n throw new Error(`Postgres schema must only contain [A-Za-z_]: ${schema}`)\n }\n\n pool.on('error', onPoolError)\n pool.on('connect', (client) => {\n client.on('error', onClientError)\n // Used for trigram indexes, e.g. on actor search\n client.query('SET pg_trgm.word_similarity_threshold TO .4;')\n if (schema) {\n // Shared objects such as extensions will go in the public schema\n client.query(`SET search_path TO \"${schema}\",public;`)\n }\n })\n\n this.pool = pool\n this.db = new Kysely<DatabaseSchemaType>({\n dialect: new PostgresDialect({ pool }),\n })\n this.migrator = new Migrator({\n db: this.db,\n migrationTableSchema: opts.schema,\n provider: new CtxMigrationProvider(migrations, 'pg'),\n })\n }\n\n get schema(): string | undefined {\n return this.opts.schema\n }\n\n async transaction<T>(fn: (db: Database) => Promise<T>): Promise<T> {\n const leakyTxPlugin = new LeakyTxPlugin()\n const { dbTxn, txRes } = await this.db\n .withPlugin(leakyTxPlugin)\n .transaction()\n .execute(async (txn) => {\n const dbTxn = new Database(this.opts, {\n db: txn,\n pool: this.pool,\n migrator: this.migrator,\n })\n const txRes = await fn(dbTxn)\n .catch(async (err) => {\n leakyTxPlugin.endTx()\n // ensure that all in-flight queries are flushed & the connection is open\n await dbTxn.db.getExecutor().provideConnection(noopAsync)\n throw err\n })\n .finally(() => leakyTxPlugin.endTx())\n return { dbTxn, txRes }\n })\n dbTxn?.txEvt.emit('commit')\n return txRes\n }\n\n get isTransaction() {\n return this.db.isTransaction\n }\n\n assertTransaction() {\n assert(this.isTransaction, 'Transaction required')\n }\n\n assertNotTransaction() {\n assert(!this.isTransaction, 'Cannot be in a transaction')\n }\n\n onCommit(fn: () => void) {\n this.assertTransaction()\n this.txEvt.once('commit', fn)\n }\n\n async migrateToOrThrow(migration: string) {\n if (this.schema) {\n await this.db.schema.createSchema(this.schema).ifNotExists().execute()\n }\n const { error, results } = await this.migrator.migrateTo(migration)\n if (error) {\n throw error\n }\n if (!results) {\n throw new Error('An unknown failure occurred while migrating')\n }\n return results\n }\n\n async migrateToLatestOrThrow() {\n if (this.schema) {\n await this.db.schema.createSchema(this.schema).ifNotExists().execute()\n }\n const { error, results } = await this.migrator.migrateToLatest()\n if (error) {\n throw error\n }\n if (!results) {\n throw new Error('An unknown failure occurred while migrating')\n }\n return results\n }\n\n async close(): Promise<void> {\n if (this.destroyed) return\n await this.db.destroy()\n this.destroyed = true\n }\n}\n\nexport default Database\n\nconst onPoolError = (err: Error) => dbLogger.error({ err }, 'db pool error')\nconst onClientError = (err: Error) => dbLogger.error({ err }, 'db client error')\n\n// utils\n// -------\n\nclass LeakyTxPlugin implements KyselyPlugin {\n private txOver = false\n\n endTx() {\n this.txOver = true\n }\n\n transformQuery(args: PluginTransformQueryArgs): RootOperationNode {\n if (this.txOver) {\n throw new Error('tx already failed')\n }\n return args.node\n }\n\n async transformResult(\n args: PluginTransformResultArgs,\n ): Promise<QueryResult<UnknownRow>> {\n return args.result\n }\n}\n\ntype TxnEmitter = TypedEmitter.default<TxnEvents>\n\ntype TxnEvents = {\n commit: () => void\n}\n\nconst noopAsync = async () => {}\n"]}
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../../../src/data-plane/server/db/db.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'node:assert'\nimport EventEmitter from 'node:events'\nimport {\n Kysely,\n type KyselyPlugin,\n type PluginTransformQueryArgs,\n type PluginTransformResultArgs,\n PostgresDialect,\n type QueryResult,\n type RootOperationNode,\n type UnknownRow,\n} from 'kysely'\nimport { Migrator } from 'kysely/migration'\n// eslint-disable-next-line import/default\nimport pg from 'pg'\n// eslint-disable-next-line import/no-named-as-default-member\nconst { Pool: PgPool, types: pgTypes } = pg\ntype PgPool = InstanceType<typeof PgPool>\nimport type TypedEmitter from 'typed-emitter'\nimport { dbLogger } from '../../../logger.js'\nimport type { DatabaseSchema, DatabaseSchemaType } from './database-schema.js'\nimport * as migrations from './migrations/index.js'\nimport { CtxMigrationProvider } from './migrations/provider.js'\nimport type { PgOptions } from './types.js'\n\nexport type { DatabaseSchema }\n\nexport class Database {\n pool: PgPool\n db: DatabaseSchema\n migrator: Migrator\n txEvt = new EventEmitter() as TxnEmitter\n destroyed = false\n\n constructor(\n public opts: PgOptions,\n instances?: { db: DatabaseSchema; pool: PgPool; migrator: Migrator },\n ) {\n // if instances are provided, use those\n if (instances) {\n this.db = instances.db\n this.pool = instances.pool\n this.migrator = instances.migrator\n return\n }\n\n // else create a pool & connect\n const { schema, url } = opts\n const pool =\n opts.pool ??\n new PgPool({\n connectionString: url,\n max: opts.poolSize,\n maxUses: opts.poolMaxUses,\n idleTimeoutMillis: opts.poolIdleTimeoutMs,\n })\n\n // Select count(*) and other pg bigints as js integer\n pgTypes.setTypeParser(pgTypes.builtins.INT8, (n) => parseInt(n, 10))\n\n // Setup schema usage, primarily for test parallelism (each test suite runs in its own pg schema)\n if (schema && !/^[a-z_]+$/i.test(schema)) {\n throw new Error(`Postgres schema must only contain [A-Za-z_]: ${schema}`)\n }\n\n pool.on('error', onPoolError)\n pool.on('connect', (client) => {\n client.on('error', onClientError)\n // Used for trigram indexes, e.g. on actor search\n client.query('SET pg_trgm.word_similarity_threshold TO .4;')\n if (schema) {\n // Shared objects such as extensions will go in the public schema\n client.query(`SET search_path TO \"${schema}\",public;`)\n }\n })\n\n this.pool = pool\n this.db = new Kysely<DatabaseSchemaType>({\n dialect: new PostgresDialect({ pool }),\n })\n this.migrator = new Migrator({\n db: this.db,\n migrationTableSchema: opts.schema,\n provider: new CtxMigrationProvider(migrations, 'pg'),\n })\n }\n\n get schema(): string | undefined {\n return this.opts.schema\n }\n\n async transaction<T>(fn: (db: Database) => Promise<T>): Promise<T> {\n const leakyTxPlugin = new LeakyTxPlugin()\n const { dbTxn, txRes } = await this.db\n .withPlugin(leakyTxPlugin)\n .transaction()\n .execute(async (txn) => {\n const dbTxn = new Database(this.opts, {\n db: txn,\n pool: this.pool,\n migrator: this.migrator,\n })\n const txRes = await fn(dbTxn)\n .catch(async (err) => {\n leakyTxPlugin.endTx()\n // ensure that all in-flight queries are flushed & the connection is open\n await dbTxn.db.getExecutor().provideConnection(noopAsync)\n throw err\n })\n .finally(() => leakyTxPlugin.endTx())\n return { dbTxn, txRes }\n })\n dbTxn?.txEvt.emit('commit')\n return txRes\n }\n\n get isTransaction() {\n return this.db.isTransaction\n }\n\n assertTransaction() {\n assert(this.isTransaction, 'Transaction required')\n }\n\n assertNotTransaction() {\n assert(!this.isTransaction, 'Cannot be in a transaction')\n }\n\n onCommit(fn: () => void) {\n this.assertTransaction()\n this.txEvt.once('commit', fn)\n }\n\n async migrateToOrThrow(migration: string) {\n if (this.schema) {\n await this.db.schema.createSchema(this.schema).ifNotExists().execute()\n }\n const { error, results } = await this.migrator.migrateTo(migration)\n if (error) {\n throw error\n }\n if (!results) {\n throw new Error('An unknown failure occurred while migrating')\n }\n return results\n }\n\n async migrateToLatestOrThrow() {\n if (this.schema) {\n await this.db.schema.createSchema(this.schema).ifNotExists().execute()\n }\n const { error, results } = await this.migrator.migrateToLatest()\n if (error) {\n throw error\n }\n if (!results) {\n throw new Error('An unknown failure occurred while migrating')\n }\n return results\n }\n\n async close(): Promise<void> {\n if (this.destroyed) return\n await this.db.destroy()\n this.destroyed = true\n }\n}\n\nexport default Database\n\nconst onPoolError = (err: Error) => dbLogger.error({ err }, 'db pool error')\nconst onClientError = (err: Error) => dbLogger.error({ err }, 'db client error')\n\n// utils\n// -------\n\nclass LeakyTxPlugin implements KyselyPlugin {\n private txOver = false\n\n endTx() {\n this.txOver = true\n }\n\n transformQuery(args: PluginTransformQueryArgs): RootOperationNode {\n if (this.txOver) {\n throw new Error('tx already failed')\n }\n return args.node\n }\n\n async transformResult(\n args: PluginTransformResultArgs,\n ): Promise<QueryResult<UnknownRow>> {\n return args.result\n }\n}\n\ntype TxnEmitter = TypedEmitter.default<TxnEvents>\n\ntype TxnEvents = {\n commit: () => void\n}\n\nconst noopAsync = async () => {}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"20230309T045948368Z-init.d.ts","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/migrations/20230309T045948368Z-init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAO,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"20230309T045948368Z-init.d.ts","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/migrations/20230309T045948368Z-init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAO,MAAM,QAAQ,CAAA;AAKzC,wBAAsB,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CA4Q3D;AAED,wBAAsB,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B7D"}
|