@atproto/bsky 0.0.242 → 0.0.244
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 +27 -0
- package/dist/api/app/bsky/actor/searchActors.d.ts.map +1 -1
- package/dist/api/app/bsky/actor/searchActors.js +7 -3
- package/dist/api/app/bsky/actor/searchActors.js.map +1 -1
- package/dist/api/app/bsky/actor/searchActorsTypeahead.d.ts.map +1 -1
- package/dist/api/app/bsky/actor/searchActorsTypeahead.js +12 -6
- package/dist/api/app/bsky/actor/searchActorsTypeahead.js.map +1 -1
- package/dist/api/app/bsky/feed/searchPosts.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/searchPosts.js +8 -3
- package/dist/api/app/bsky/feed/searchPosts.js.map +1 -1
- package/dist/api/app/bsky/graph/searchStarterPacks.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/searchStarterPacks.js +7 -3
- package/dist/api/app/bsky/graph/searchStarterPacks.js.map +1 -1
- package/dist/api/app/bsky/notification/putPreferencesV2.js +4 -1
- package/dist/api/app/bsky/notification/putPreferencesV2.js.map +1 -1
- package/dist/api/app/bsky/notification/util.d.ts +1 -0
- package/dist/api/app/bsky/notification/util.d.ts.map +1 -1
- package/dist/api/app/bsky/notification/util.js +7 -7
- package/dist/api/app/bsky/notification/util.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getPopularFeedGenerators.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getPopularFeedGenerators.js +3 -2
- package/dist/api/app/bsky/unspecced/getPopularFeedGenerators.js.map +1 -1
- package/dist/api/blob-dispatcher.d.ts.map +1 -1
- package/dist/api/blob-dispatcher.js +9 -8
- package/dist/api/blob-dispatcher.js.map +1 -1
- package/dist/api/blob-resolver.d.ts +1 -1
- package/dist/api/blob-resolver.d.ts.map +1 -1
- package/dist/api/blob-resolver.js +0 -1
- package/dist/api/blob-resolver.js.map +1 -1
- package/dist/api/util.d.ts +5 -0
- package/dist/api/util.d.ts.map +1 -1
- package/dist/api/util.js +11 -0
- package/dist/api/util.js.map +1 -1
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +5 -0
- package/dist/config.js.map +1 -1
- package/dist/data-plane/bsync/index.d.ts +2 -0
- package/dist/data-plane/bsync/index.d.ts.map +1 -1
- package/dist/data-plane/bsync/index.js +7 -10
- package/dist/data-plane/bsync/index.js.map +1 -1
- package/dist/data-plane/server/background.d.ts +12 -8
- package/dist/data-plane/server/background.d.ts.map +1 -1
- package/dist/data-plane/server/background.js +32 -14
- package/dist/data-plane/server/background.js.map +1 -1
- package/dist/data-plane/server/db/db.d.ts +4 -5
- package/dist/data-plane/server/db/db.d.ts.map +1 -1
- package/dist/data-plane/server/db/db.js +2 -1
- package/dist/data-plane/server/db/db.js.map +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 +2 -4
- package/dist/data-plane/server/db/migrations/20230627T212437895Z-optional-handle.js.map +1 -1
- package/dist/data-plane/server/db/migrations/provider.d.ts +2 -1
- 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 +3 -2
- package/dist/data-plane/server/db/pagination.d.ts.map +1 -1
- package/dist/data-plane/server/db/pagination.js +8 -8
- package/dist/data-plane/server/db/pagination.js.map +1 -1
- package/dist/data-plane/server/db/util.d.ts +5 -5
- 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 -0
- package/dist/data-plane/server/index.d.ts.map +1 -1
- package/dist/data-plane/server/index.js +7 -10
- package/dist/data-plane/server/index.js.map +1 -1
- package/dist/data-plane/server/indexing/index.d.ts +2 -2
- 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 +9 -4
- 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 +1 -1
- 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 +13 -4
- 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 +9 -4
- 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 +1 -1
- 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 +8 -4
- 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 +12 -4
- 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 +9 -4
- 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 +10 -4
- 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 +13 -4
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- package/dist/data-plane/server/indexing/plugins/post.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/plugins/post.js +4 -3
- package/dist/data-plane/server/indexing/plugins/post.js.map +1 -1
- package/dist/data-plane/server/indexing/plugins/profile.d.ts +1 -1
- 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 +12 -4
- 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 +9 -4
- 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 +1 -1
- 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 +1 -1
- 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 +12 -4
- 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 +1 -1
- package/dist/data-plane/server/indexing/processor.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/processor.js.map +1 -1
- package/dist/data-plane/server/routes/blocks.js +22 -14
- package/dist/data-plane/server/routes/blocks.js.map +1 -1
- package/dist/data-plane/server/routes/feed-gens.js +2 -2
- package/dist/data-plane/server/routes/feed-gens.js.map +1 -1
- package/dist/data-plane/server/routes/feeds.js +18 -16
- package/dist/data-plane/server/routes/feeds.js.map +1 -1
- package/dist/data-plane/server/routes/labels.js +1 -1
- package/dist/data-plane/server/routes/labels.js.map +1 -1
- package/dist/data-plane/server/routes/mutes.js +2 -2
- package/dist/data-plane/server/routes/mutes.js.map +1 -1
- package/dist/data-plane/server/routes/notifs.d.ts.map +1 -1
- package/dist/data-plane/server/routes/notifs.js +11 -17
- package/dist/data-plane/server/routes/notifs.js.map +1 -1
- package/dist/data-plane/server/routes/relationships.js.map +1 -1
- package/dist/data-plane/server/routes/search.js +2 -2
- package/dist/data-plane/server/routes/search.js.map +1 -1
- package/dist/data-plane/server/routes/suggestions.js +2 -2
- package/dist/data-plane/server/routes/suggestions.js.map +1 -1
- package/dist/data-plane/server/subscription.d.ts +13 -12
- package/dist/data-plane/server/subscription.d.ts.map +1 -1
- package/dist/data-plane/server/subscription.js +59 -26
- package/dist/data-plane/server/subscription.js.map +1 -1
- package/dist/data-plane/server/util.d.ts +31 -23
- package/dist/data-plane/server/util.d.ts.map +1 -1
- package/dist/feature-gates/index.d.ts +2 -1
- package/dist/feature-gates/index.d.ts.map +1 -1
- package/dist/feature-gates/index.js +9 -6
- package/dist/feature-gates/index.js.map +1 -1
- package/dist/feature-gates/metrics.d.ts +3 -3
- package/dist/feature-gates/metrics.d.ts.map +1 -1
- package/dist/feature-gates/metrics.js +8 -8
- package/dist/feature-gates/metrics.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -7
- package/dist/index.js.map +1 -1
- package/dist/lexicons/app/bsky/notification/defs.defs.d.ts +5 -0
- package/dist/lexicons/app/bsky/notification/defs.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/notification/defs.defs.js +1 -0
- package/dist/lexicons/app/bsky/notification/defs.defs.js.map +1 -1
- package/dist/lexicons/chat/bsky/notification/defs.d.ts +2 -0
- package/dist/lexicons/chat/bsky/notification/defs.d.ts.map +1 -0
- package/dist/lexicons/chat/bsky/notification/defs.defs.d.ts +20 -0
- package/dist/lexicons/chat/bsky/notification/defs.defs.d.ts.map +1 -0
- package/dist/lexicons/chat/bsky/notification/defs.defs.js +19 -0
- package/dist/lexicons/chat/bsky/notification/defs.defs.js.map +1 -0
- package/dist/lexicons/chat/bsky/notification/defs.js +5 -0
- package/dist/lexicons/chat/bsky/notification/defs.js.map +1 -0
- package/dist/lexicons/chat/bsky/notification/getPreferences.d.ts +3 -0
- package/dist/lexicons/chat/bsky/notification/getPreferences.d.ts.map +1 -0
- package/dist/lexicons/chat/bsky/notification/getPreferences.defs.d.ts +18 -0
- package/dist/lexicons/chat/bsky/notification/getPreferences.defs.d.ts.map +1 -0
- package/dist/lexicons/chat/bsky/notification/getPreferences.defs.js +16 -0
- package/dist/lexicons/chat/bsky/notification/getPreferences.defs.js.map +1 -0
- package/dist/lexicons/chat/bsky/notification/getPreferences.js +6 -0
- package/dist/lexicons/chat/bsky/notification/getPreferences.js.map +1 -0
- package/dist/lexicons/chat/bsky/notification/putPreferences.d.ts +3 -0
- package/dist/lexicons/chat/bsky/notification/putPreferences.d.ts.map +1 -0
- package/dist/lexicons/chat/bsky/notification/putPreferences.defs.d.ts +27 -0
- package/dist/lexicons/chat/bsky/notification/putPreferences.defs.d.ts.map +1 -0
- package/dist/lexicons/chat/bsky/notification/putPreferences.defs.js +22 -0
- package/dist/lexicons/chat/bsky/notification/putPreferences.defs.js.map +1 -0
- package/dist/lexicons/chat/bsky/notification/putPreferences.js +6 -0
- package/dist/lexicons/chat/bsky/notification/putPreferences.js.map +1 -0
- package/dist/lexicons/chat/bsky/notification.d.ts +4 -0
- package/dist/lexicons/chat/bsky/notification.d.ts.map +1 -0
- package/dist/lexicons/chat/bsky/notification.js +7 -0
- package/dist/lexicons/chat/bsky/notification.js.map +1 -0
- package/dist/lexicons/chat/bsky.d.ts +1 -0
- package/dist/lexicons/chat/bsky.d.ts.map +1 -1
- package/dist/lexicons/chat/bsky.js +1 -0
- package/dist/lexicons/chat/bsky.js.map +1 -1
- package/dist/lexicons/tools/ozone/report/defs.defs.d.ts +4 -0
- package/dist/lexicons/tools/ozone/report/defs.defs.d.ts.map +1 -1
- package/dist/lexicons/tools/ozone/report/defs.defs.js +2 -0
- package/dist/lexicons/tools/ozone/report/defs.defs.js.map +1 -1
- package/dist/lexicons/tools/ozone/report/queryActivities.d.ts +3 -0
- package/dist/lexicons/tools/ozone/report/queryActivities.d.ts.map +1 -0
- package/dist/lexicons/tools/ozone/report/queryActivities.defs.d.ts +42 -0
- package/dist/lexicons/tools/ozone/report/queryActivities.defs.d.ts.map +1 -0
- package/dist/lexicons/tools/ozone/report/queryActivities.defs.js +31 -0
- package/dist/lexicons/tools/ozone/report/queryActivities.defs.js.map +1 -0
- package/dist/lexicons/tools/ozone/report/queryActivities.js +6 -0
- package/dist/lexicons/tools/ozone/report/queryActivities.js.map +1 -0
- package/dist/lexicons/tools/ozone/report.d.ts +1 -0
- package/dist/lexicons/tools/ozone/report.d.ts.map +1 -1
- package/dist/lexicons/tools/ozone/report.js +1 -0
- package/dist/lexicons/tools/ozone/report.js.map +1 -1
- package/dist/proto/bsky_pb.d.ts +47 -53
- package/dist/proto/bsky_pb.d.ts.map +1 -1
- package/dist/proto/bsky_pb.js +62 -71
- package/dist/proto/bsky_pb.js.map +1 -1
- package/package.json +13 -13
- package/proto/bsky.proto +19 -17
- package/src/api/app/bsky/actor/searchActors.ts +17 -6
- package/src/api/app/bsky/actor/searchActorsTypeahead.ts +16 -8
- package/src/api/app/bsky/feed/searchPosts.ts +12 -5
- package/src/api/app/bsky/graph/searchStarterPacks.ts +14 -5
- package/src/api/app/bsky/notification/putPreferencesV2.ts +4 -1
- package/src/api/app/bsky/notification/util.ts +7 -11
- package/src/api/app/bsky/unspecced/getPopularFeedGenerators.ts +9 -2
- package/src/api/blob-dispatcher.ts +12 -8
- package/src/api/blob-resolver.ts +0 -1
- package/src/api/util.ts +17 -0
- package/src/config.ts +9 -0
- package/src/data-plane/bsync/index.ts +12 -10
- package/src/data-plane/server/background.ts +49 -18
- package/src/data-plane/server/db/db.ts +1 -1
- package/src/data-plane/server/db/migrations/20230627T212437895Z-optional-handle.ts +2 -4
- package/src/data-plane/server/db/migrations/provider.ts +2 -1
- package/src/data-plane/server/db/pagination.ts +15 -15
- package/src/data-plane/server/db/util.ts +8 -5
- package/src/data-plane/server/index.ts +12 -10
- package/src/data-plane/server/indexing/index.ts +1 -1
- package/src/data-plane/server/indexing/plugins/block.ts +4 -1
- package/src/data-plane/server/indexing/plugins/chat-declaration.ts +4 -1
- package/src/data-plane/server/indexing/plugins/feed-generator.ts +4 -1
- package/src/data-plane/server/indexing/plugins/follow.ts +4 -1
- package/src/data-plane/server/indexing/plugins/germ-declaration.ts +4 -1
- package/src/data-plane/server/indexing/plugins/labeler.ts +4 -1
- package/src/data-plane/server/indexing/plugins/like.ts +4 -1
- package/src/data-plane/server/indexing/plugins/list-block.ts +4 -1
- package/src/data-plane/server/indexing/plugins/list-item.ts +4 -1
- package/src/data-plane/server/indexing/plugins/list.ts +4 -1
- package/src/data-plane/server/indexing/plugins/notif-declaration.ts +4 -1
- package/src/data-plane/server/indexing/plugins/post-gate.ts +4 -1
- package/src/data-plane/server/indexing/plugins/post.ts +9 -5
- package/src/data-plane/server/indexing/plugins/profile.ts +4 -1
- package/src/data-plane/server/indexing/plugins/repost.ts +4 -1
- package/src/data-plane/server/indexing/plugins/starter-pack.ts +4 -1
- package/src/data-plane/server/indexing/plugins/status.ts +4 -1
- package/src/data-plane/server/indexing/plugins/thread-gate.ts +4 -1
- package/src/data-plane/server/indexing/plugins/verification.ts +4 -1
- package/src/data-plane/server/indexing/processor.ts +1 -1
- package/src/data-plane/server/routes/blocks.ts +30 -24
- package/src/data-plane/server/routes/feed-gens.ts +2 -2
- package/src/data-plane/server/routes/feeds.ts +23 -19
- package/src/data-plane/server/routes/labels.ts +2 -2
- package/src/data-plane/server/routes/mutes.ts +8 -6
- package/src/data-plane/server/routes/notifs.ts +15 -26
- package/src/data-plane/server/routes/relationships.ts +4 -2
- package/src/data-plane/server/routes/search.ts +2 -2
- package/src/data-plane/server/routes/suggestions.ts +2 -2
- package/src/data-plane/server/subscription.ts +74 -31
- package/src/feature-gates/index.ts +10 -6
- package/src/feature-gates/metrics.test.ts +12 -12
- package/src/feature-gates/metrics.ts +8 -8
- package/src/index.ts +16 -9
- package/tests/_util.ts +8 -25
- package/tests/admin/admin-auth.test.ts +2 -2
- package/tests/admin/moderation.test.ts +1 -1
- package/tests/auth.test.ts +4 -6
- package/tests/blob-resolver.test.ts +4 -5
- package/tests/data-plane/db.test.ts +1 -1
- package/tests/data-plane/duplicate-records.test.ts +1 -1
- package/tests/data-plane/handle-invalidation.test.ts +2 -2
- package/tests/data-plane/indexing.test.ts +24 -21
- package/tests/data-plane/subscription.test.ts +3 -3
- package/tests/data-plane/thread-mutes.test.ts +2 -2
- package/tests/entryway-auth.test.ts +4 -5
- package/tests/feed-generation.test.ts +5 -5
- package/tests/image/server.test.ts +1 -1
- package/tests/label-hydration.test.ts +3 -5
- package/tests/postgates.test.ts +3 -6
- package/tests/query-labels.test.ts +3 -5
- package/tests/redis-cache.test.ts +1 -3
- package/tests/server.test.ts +11 -16
- package/tests/sitemap.test.ts +3 -4
- package/tests/stash.test.ts +12 -8
- package/tests/utils.test.ts +3 -13
- package/tests/views/account-deactivation.test.ts +3 -5
- package/tests/views/actor-likes.test.ts +3 -5
- package/tests/views/actor-search.test.ts +6 -7
- package/tests/views/age-assurance-v2.test.ts +9 -6
- package/tests/views/age-assurance.test.ts +30 -36
- package/tests/views/author-feed.test.ts +4 -6
- package/tests/views/block-lists.test.ts +3 -5
- package/tests/views/blocks.test.ts +3 -5
- package/tests/views/bookmarks.test.ts +4 -4
- package/tests/views/drafts.test.ts +7 -14
- package/tests/views/feed-hidden-replies.test.ts +3 -6
- package/tests/views/feed-view-post.test.ts +3 -6
- package/tests/views/follows.test.ts +4 -6
- package/tests/views/get-config.test.ts +4 -7
- package/tests/views/get-suggested-onboarding-users.test.ts +11 -9
- package/tests/views/get-suggested-starter-packs.test.ts +11 -9
- package/tests/views/get-trends.test.ts +15 -9
- package/tests/views/internal-actor.test.ts +3 -6
- package/tests/views/known-followers.test.ts +3 -6
- package/tests/views/labeler-service.test.ts +3 -5
- package/tests/views/labels-needs-review.test.ts +3 -6
- package/tests/views/labels-takedown.test.ts +3 -4
- package/tests/views/likes.test.ts +4 -6
- package/tests/views/list-feed.test.ts +3 -5
- package/tests/views/lists.test.ts +3 -5
- package/tests/views/mute-lists.test.ts +3 -5
- package/tests/views/mutes.test.ts +4 -5
- package/tests/views/notifications.test.ts +12 -11
- package/tests/views/post-search.test.ts +3 -24
- package/tests/views/posts-debug.test.ts +11 -6
- package/tests/views/posts.test.ts +3 -4
- package/tests/views/profile-debug.test.ts +11 -5
- package/tests/views/profile.test.ts +11 -5
- package/tests/views/quotes.test.ts +4 -6
- package/tests/views/reposts.test.ts +4 -6
- package/tests/views/starter-packs.test.ts +3 -6
- package/tests/views/suggestions.test.ts +9 -13
- package/tests/views/thread-v2.test.ts +3 -5
- package/tests/views/thread.test.ts +3 -7
- package/tests/views/threadgating.test.ts +3 -5
- package/tests/views/timeline.test.ts +4 -5
- package/tests/views/verification.test.ts +4 -6
- package/tsconfig.build.tsbuildinfo +1 -1
- package/vitest.config.ts +1 -0
|
@@ -3,6 +3,6 @@ import { BackgroundQueue } from '../../background.js';
|
|
|
3
3
|
import { Database } from '../../db/index.js';
|
|
4
4
|
import { RecordProcessor } from '../processor.js';
|
|
5
5
|
export type PluginType = ReturnType<typeof makePlugin>;
|
|
6
|
-
export declare const makePlugin: (db: Database, background: BackgroundQueue) => RecordProcessor<import("@atproto/lex").RecordSchema<"literal:self", "app.bsky.actor.profile", import("@atproto/lex").Validator<Omit<app.bsky.actor.profile.Main, "$type">, Omit<app.bsky.actor.profile.Main, "$type">>>, import("../../db/tables/profile.js").Profile>;
|
|
6
|
+
export declare const makePlugin: (db: Database, background: BackgroundQueue<Database>) => RecordProcessor<import("@atproto/lex").RecordSchema<"literal:self", "app.bsky.actor.profile", import("@atproto/lex").Validator<Omit<app.bsky.actor.profile.Main, "$type">, Omit<app.bsky.actor.profile.Main, "$type">>>, import("../../db/tables/profile.js").Profile>;
|
|
7
7
|
export default makePlugin;
|
|
8
8
|
//# sourceMappingURL=profile.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/profile.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAoEjD,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;AACtD,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/profile.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAoEjD,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;AACtD,eAAO,MAAM,UAAU,OACjB,QAAQ,cACA,eAAe,CAAC,QAAQ,CAAC,2QAUtC,CAAA;eAEc,UAAU"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAA;AAInD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAIjD,MAAM,QAAQ,GAAG,KAAK,EACpB,EAAkB,EAClB,GAAU,EACV,GAAQ,EACR,GAAgC,EAChC,SAAiB,EACe,EAAE;IAClC,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAA;IACpC,MAAM,QAAQ,GAAG,MAAM,EAAE;SACtB,UAAU,CAAC,SAAS,CAAC;SACrB,MAAM,CAAC;QACN,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;QACnB,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;QACnB,OAAO,EAAE,GAAG,CAAC,IAAI;QACjB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,SAAS,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;QACvC,SAAS,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;QACvC,uBAAuB,EAAE,GAAG,CAAC,oBAAoB,EAAE,GAAG;QACtD,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACpD,SAAS,EAAE,SAAS;KACrB,CAAC;SACD,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;SAClC,YAAY,EAAE;SACd,gBAAgB,EAAE,CAAA;IACrB,OAAO,QAAQ,IAAI,IAAI,CAAA;AACzB,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,KAAK,IAA2B,EAAE;IACtD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,CAAC,GAAmB,EAAE,EAAE;IAC9C,IAAI,CAAC,GAAG,CAAC,uBAAuB;QAAE,OAAO,EAAE,CAAA;IAC3C,MAAM,cAAc,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;IAC7D,OAAO;QACL;YACE,GAAG,EAAE,cAAc,CAAC,IAAI;YACxB,MAAM,EAAE,GAAG,CAAC,OAAO;YACnB,SAAS,EAAE,GAAG,CAAC,GAAG;YAClB,SAAS,EAAE,GAAG,CAAC,GAAG;YAClB,MAAM,EAAE,oBAA6B;YACrC,aAAa,EAAE,GAAG,CAAC,uBAAuB;YAC1C,MAAM,EAAE,GAAG,CAAC,SAAS;SACtB;KACF,CAAA;AACH,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,KAAK,EACpB,EAAkB,EAClB,GAAU,EACsB,EAAE;IAClC,MAAM,OAAO,GAAG,MAAM,EAAE;SACrB,UAAU,CAAC,SAAS,CAAC;SACrB,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;SACjC,YAAY,EAAE;SACd,gBAAgB,EAAE,CAAA;IACrB,OAAO,OAAO,IAAI,IAAI,CAAA;AACxB,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,GAAG,EAAE;IAC3B,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;AACrC,CAAC,CAAA;AAGD,MAAM,CAAC,MAAM,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/profile.ts"],"names":[],"mappings":"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","sourcesContent":["import { Cid, getBlobCidString } from '@atproto/lex'\nimport { AtUri } from '@atproto/syntax'\nimport { app } from '../../../../lexicons/index.js'\nimport { BackgroundQueue } from '../../background.js'\nimport { DatabaseSchema, DatabaseSchemaType } from '../../db/database-schema.js'\nimport { Database } from '../../db/index.js'\nimport { RecordProcessor } from '../processor.js'\n\ntype IndexedProfile = DatabaseSchemaType['profile']\n\nconst insertFn = async (\n db: DatabaseSchema,\n uri: AtUri,\n cid: Cid,\n obj: app.bsky.actor.profile.Main,\n timestamp: string,\n): Promise<IndexedProfile | null> => {\n if (uri.rkey !== 'self') return null\n const inserted = await db\n .insertInto('profile')\n .values({\n uri: uri.toString(),\n cid: cid.toString(),\n creator: uri.host,\n displayName: obj.displayName,\n description: obj.description,\n avatarCid: getBlobCidString(obj.avatar),\n bannerCid: getBlobCidString(obj.banner),\n joinedViaStarterPackUri: obj.joinedViaStarterPack?.uri,\n createdAt: obj.createdAt ?? new Date().toISOString(),\n indexedAt: timestamp,\n })\n .onConflict((oc) => oc.doNothing())\n .returningAll()\n .executeTakeFirst()\n return inserted || null\n}\n\nconst findDuplicate = async (): Promise<AtUri | null> => {\n return null\n}\n\nconst notifsForInsert = (obj: IndexedProfile) => {\n if (!obj.joinedViaStarterPackUri) return []\n const starterPackUri = new AtUri(obj.joinedViaStarterPackUri)\n return [\n {\n did: starterPackUri.host,\n author: obj.creator,\n recordUri: obj.uri,\n recordCid: obj.cid,\n reason: 'starterpack-joined' as const,\n reasonSubject: obj.joinedViaStarterPackUri,\n sortAt: obj.indexedAt,\n },\n ]\n}\n\nconst deleteFn = async (\n db: DatabaseSchema,\n uri: AtUri,\n): Promise<IndexedProfile | null> => {\n const deleted = await db\n .deleteFrom('profile')\n .where('uri', '=', uri.toString())\n .returningAll()\n .executeTakeFirst()\n return deleted || null\n}\n\nconst notifsForDelete = () => {\n return { notifs: [], toDelete: [] }\n}\n\nexport type PluginType = ReturnType<typeof makePlugin>\nexport const makePlugin = (\n db: Database,\n background: BackgroundQueue<Database>,\n) => {\n return new RecordProcessor(db, background, {\n schema: app.bsky.actor.profile.main,\n insertFn,\n findDuplicate,\n deleteFn,\n notifsForInsert,\n notifsForDelete,\n })\n}\n\nexport default makePlugin\n"]}
|
|
@@ -1,11 +1,19 @@
|
|
|
1
|
-
import { Selectable } from 'kysely';
|
|
2
1
|
import { app } from '../../../../lexicons/index.js';
|
|
3
2
|
import { BackgroundQueue } from '../../background.js';
|
|
4
|
-
import { DatabaseSchemaType } from '../../db/database-schema.js';
|
|
5
3
|
import { Database } from '../../db/index.js';
|
|
6
4
|
import { RecordProcessor } from '../processor.js';
|
|
7
|
-
type IndexedRepost = Selectable<DatabaseSchemaType['repost']>;
|
|
8
5
|
export type PluginType = ReturnType<typeof makePlugin>;
|
|
9
|
-
export declare const makePlugin: (db: Database, background: BackgroundQueue) => RecordProcessor<import("@atproto/lex").RecordSchema<"tid", "app.bsky.feed.repost", import("@atproto/lex").Validator<Omit<app.bsky.feed.repost.Main, "$type">, Omit<app.bsky.feed.repost.Main, "$type">>>,
|
|
6
|
+
export declare const makePlugin: (db: Database, background: BackgroundQueue<Database>) => RecordProcessor<import("@atproto/lex").RecordSchema<"tid", "app.bsky.feed.repost", import("@atproto/lex").Validator<Omit<app.bsky.feed.repost.Main, "$type">, Omit<app.bsky.feed.repost.Main, "$type">>>, {
|
|
7
|
+
cid: string;
|
|
8
|
+
createdAt: string;
|
|
9
|
+
creator: string;
|
|
10
|
+
indexedAt: string;
|
|
11
|
+
sortAt: string;
|
|
12
|
+
subject: string;
|
|
13
|
+
subjectCid: string;
|
|
14
|
+
uri: string;
|
|
15
|
+
via: string | null;
|
|
16
|
+
viaCid: string | null;
|
|
17
|
+
}>;
|
|
10
18
|
export default makePlugin;
|
|
11
19
|
//# sourceMappingURL=repost.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repost.d.ts","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/repost.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"repost.d.ts","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/repost.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAG5C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAsJjD,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;AACtD,eAAO,MAAM,UAAU,OACjB,QAAQ,cACA,eAAe,CAAC,QAAQ,CAAC;;;;;;;;;;;EAWtC,CAAA;eAEc,UAAU"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repost.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/repost.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"repost.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/repost.ts"],"names":[],"mappings":"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","sourcesContent":["import { Insertable, Selectable } from 'kysely'\nimport { Cid } from '@atproto/lex'\nimport { AtUri, normalizeDatetimeAlways } from '@atproto/syntax'\nimport { app } from '../../../../lexicons/index.js'\nimport { BackgroundQueue } from '../../background.js'\nimport { DatabaseSchema, DatabaseSchemaType } from '../../db/database-schema.js'\nimport { Database } from '../../db/index.js'\nimport { Notification } from '../../db/tables/notification.js'\nimport { countAll, excluded } from '../../db/util.js'\nimport { RecordProcessor } from '../processor.js'\n\ntype Notif = Insertable<Notification>\ntype IndexedRepost = Selectable<DatabaseSchemaType['repost']>\n\nconst insertFn = async (\n db: DatabaseSchema,\n uri: AtUri,\n cid: Cid,\n obj: app.bsky.feed.repost.Main,\n timestamp: string,\n): Promise<IndexedRepost | null> => {\n const repost = {\n uri: uri.toString(),\n cid: cid.toString(),\n creator: uri.host,\n subject: obj.subject.uri,\n subjectCid: obj.subject.cid,\n via: obj.via?.uri,\n viaCid: obj.via?.cid,\n createdAt: normalizeDatetimeAlways(obj.createdAt),\n indexedAt: timestamp,\n }\n const [inserted] = await Promise.all([\n db\n .insertInto('repost')\n .values(repost)\n .onConflict((oc) => oc.doNothing())\n .returningAll()\n .executeTakeFirst(),\n db\n .insertInto('feed_item')\n .values({\n type: 'repost',\n uri: repost.uri,\n cid: repost.cid,\n postUri: repost.subject,\n originatorDid: repost.creator,\n sortAt:\n repost.indexedAt < repost.createdAt\n ? repost.indexedAt\n : repost.createdAt,\n })\n .onConflict((oc) => oc.doNothing())\n .executeTakeFirst(),\n ])\n\n return inserted || null\n}\n\nconst findDuplicate = async (\n db: DatabaseSchema,\n uri: AtUri,\n obj: app.bsky.feed.repost.Main,\n): Promise<AtUri | null> => {\n const found = await db\n .selectFrom('repost')\n .where('creator', '=', uri.host)\n .where('subject', '=', obj.subject.uri)\n .selectAll()\n .executeTakeFirst()\n return found ? new AtUri(found.uri) : null\n}\n\nconst notifsForInsert = (obj: IndexedRepost) => {\n const subjectUri = new AtUri(obj.subject)\n // prevent self-notifications\n const isRepostFromSubjectUser = subjectUri.host === obj.creator\n if (isRepostFromSubjectUser) {\n return []\n }\n\n const notifs: Notif[] = [\n // Notification to the author of the reposted record.\n {\n did: subjectUri.host,\n author: obj.creator,\n recordUri: obj.uri,\n recordCid: obj.cid,\n reason: 'repost' as const,\n reasonSubject: subjectUri.toString(),\n sortAt: obj.sortAt,\n },\n ]\n\n if (obj.via) {\n const viaUri = new AtUri(obj.via)\n const isRepostFromViaSubjectUser = viaUri.host === obj.creator\n // prevent self-notifications\n if (!isRepostFromViaSubjectUser) {\n notifs.push(\n // Notification to the reposter via whose repost the repost was made.\n {\n did: viaUri.host,\n author: obj.creator,\n recordUri: obj.uri,\n recordCid: obj.cid,\n reason: 'repost-via-repost' as const,\n reasonSubject: viaUri.toString(),\n sortAt: obj.sortAt,\n },\n )\n }\n }\n\n return notifs\n}\n\nconst deleteFn = async (\n db: DatabaseSchema,\n uri: AtUri,\n): Promise<IndexedRepost | null> => {\n const uriStr = uri.toString()\n const [deleted] = await Promise.all([\n db\n .deleteFrom('repost')\n .where('uri', '=', uriStr)\n .returningAll()\n .executeTakeFirst(),\n db.deleteFrom('feed_item').where('uri', '=', uriStr).executeTakeFirst(),\n ])\n return deleted || null\n}\n\nconst notifsForDelete = (\n deleted: IndexedRepost,\n replacedBy: IndexedRepost | null,\n) => {\n const toDelete = replacedBy ? [] : [deleted.uri]\n return { notifs: [], toDelete }\n}\n\nconst updateAggregates = async (db: DatabaseSchema, repost: IndexedRepost) => {\n const repostCountQb = db\n .insertInto('post_agg')\n .values({\n uri: repost.subject,\n repostCount: db\n .selectFrom('repost')\n .where('repost.subject', '=', repost.subject)\n .select(countAll.as('count')),\n })\n .onConflict((oc) =>\n oc\n .column('uri')\n .doUpdateSet({ repostCount: excluded(db, 'repostCount') }),\n )\n await repostCountQb.execute()\n}\n\nexport type PluginType = ReturnType<typeof makePlugin>\nexport const makePlugin = (\n db: Database,\n background: BackgroundQueue<Database>,\n) => {\n return new RecordProcessor(db, background, {\n schema: app.bsky.feed.repost.main,\n insertFn,\n findDuplicate,\n deleteFn,\n notifsForInsert,\n notifsForDelete,\n updateAggregates,\n })\n}\n\nexport default makePlugin\n"]}
|
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
import { Selectable } from 'kysely';
|
|
2
1
|
import { app } from '../../../../lexicons/index.js';
|
|
3
2
|
import { BackgroundQueue } from '../../background.js';
|
|
4
|
-
import { DatabaseSchemaType } from '../../db/database-schema.js';
|
|
5
3
|
import { Database } from '../../db/index.js';
|
|
6
4
|
import { RecordProcessor } from '../processor.js';
|
|
7
|
-
type IndexedStarterPack = Selectable<DatabaseSchemaType['starter_pack']>;
|
|
8
5
|
export type PluginType = ReturnType<typeof makePlugin>;
|
|
9
|
-
export declare const makePlugin: (db: Database, background: BackgroundQueue) => RecordProcessor<import("@atproto/lex").RecordSchema<"tid", "app.bsky.graph.starterpack", import("@atproto/lex").Validator<Omit<app.bsky.graph.starterpack.Main, "$type">, Omit<app.bsky.graph.starterpack.Main, "$type">>>,
|
|
6
|
+
export declare const makePlugin: (db: Database, background: BackgroundQueue<Database>) => RecordProcessor<import("@atproto/lex").RecordSchema<"tid", "app.bsky.graph.starterpack", import("@atproto/lex").Validator<Omit<app.bsky.graph.starterpack.Main, "$type">, Omit<app.bsky.graph.starterpack.Main, "$type">>>, {
|
|
7
|
+
cid: string;
|
|
8
|
+
createdAt: string;
|
|
9
|
+
creator: string;
|
|
10
|
+
indexedAt: string;
|
|
11
|
+
name: string;
|
|
12
|
+
sortAt: string;
|
|
13
|
+
uri: string;
|
|
14
|
+
}>;
|
|
10
15
|
export default makePlugin;
|
|
11
16
|
//# sourceMappingURL=starter-pack.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"starter-pack.d.ts","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/starter-pack.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"starter-pack.d.ts","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/starter-pack.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAmDjD,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;AACtD,eAAO,MAAM,UAAU,OACjB,QAAQ,cACA,eAAe,CAAC,QAAQ,CAAC;;;;;;;;EAUtC,CAAA;eAEc,UAAU"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"starter-pack.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/starter-pack.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAChE,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAA;AAInD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAIjD,MAAM,QAAQ,GAAG,KAAK,EACpB,EAAkB,EAClB,GAAU,EACV,GAAQ,EACR,GAAoC,EACpC,SAAiB,EACmB,EAAE;IACtC,MAAM,QAAQ,GAAG,MAAM,EAAE;SACtB,UAAU,CAAC,cAAc,CAAC;SAC1B,MAAM,CAAC;QACN,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;QACnB,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;QACnB,OAAO,EAAE,GAAG,CAAC,IAAI;QACjB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,SAAS,EAAE,uBAAuB,CAAC,GAAG,CAAC,SAAS,CAAC;QACjD,SAAS,EAAE,SAAS;KACrB,CAAC;SACD,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;SAClC,YAAY,EAAE;SACd,gBAAgB,EAAE,CAAA;IACrB,OAAO,QAAQ,IAAI,IAAI,CAAA;AACzB,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,KAAK,IAA2B,EAAE;IACtD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,GAAG,EAAE;IAC3B,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,KAAK,EACpB,EAAkB,EAClB,GAAU,EAC0B,EAAE;IACtC,MAAM,OAAO,GAAG,MAAM,EAAE;SACrB,UAAU,CAAC,cAAc,CAAC;SAC1B,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;SACjC,YAAY,EAAE;SACd,gBAAgB,EAAE,CAAA;IACrB,OAAO,OAAO,IAAI,IAAI,CAAA;AACxB,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,GAAG,EAAE;IAC3B,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;AACrC,CAAC,CAAA;AAGD,MAAM,CAAC,MAAM,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"starter-pack.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/starter-pack.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAChE,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAA;AAInD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAIjD,MAAM,QAAQ,GAAG,KAAK,EACpB,EAAkB,EAClB,GAAU,EACV,GAAQ,EACR,GAAoC,EACpC,SAAiB,EACmB,EAAE;IACtC,MAAM,QAAQ,GAAG,MAAM,EAAE;SACtB,UAAU,CAAC,cAAc,CAAC;SAC1B,MAAM,CAAC;QACN,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;QACnB,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;QACnB,OAAO,EAAE,GAAG,CAAC,IAAI;QACjB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,SAAS,EAAE,uBAAuB,CAAC,GAAG,CAAC,SAAS,CAAC;QACjD,SAAS,EAAE,SAAS;KACrB,CAAC;SACD,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;SAClC,YAAY,EAAE;SACd,gBAAgB,EAAE,CAAA;IACrB,OAAO,QAAQ,IAAI,IAAI,CAAA;AACzB,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,KAAK,IAA2B,EAAE;IACtD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,GAAG,EAAE;IAC3B,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,KAAK,EACpB,EAAkB,EAClB,GAAU,EAC0B,EAAE;IACtC,MAAM,OAAO,GAAG,MAAM,EAAE;SACrB,UAAU,CAAC,cAAc,CAAC;SAC1B,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;SACjC,YAAY,EAAE;SACd,gBAAgB,EAAE,CAAA;IACrB,OAAO,OAAO,IAAI,IAAI,CAAA;AACxB,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,GAAG,EAAE;IAC3B,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;AACrC,CAAC,CAAA;AAGD,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,EAAY,EACZ,UAAqC,EACrC,EAAE;IACF,OAAO,IAAI,eAAe,CAAC,EAAE,EAAE,UAAU,EAAE;QACzC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI;QACvC,QAAQ;QACR,aAAa;QACb,QAAQ;QACR,eAAe;QACf,eAAe;KAChB,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,eAAe,UAAU,CAAA","sourcesContent":["import { Selectable } from 'kysely'\nimport { Cid } from '@atproto/lex'\nimport { AtUri, normalizeDatetimeAlways } from '@atproto/syntax'\nimport { app } from '../../../../lexicons/index.js'\nimport { BackgroundQueue } from '../../background.js'\nimport { DatabaseSchema, DatabaseSchemaType } from '../../db/database-schema.js'\nimport { Database } from '../../db/index.js'\nimport { RecordProcessor } from '../processor.js'\n\ntype IndexedStarterPack = Selectable<DatabaseSchemaType['starter_pack']>\n\nconst insertFn = async (\n db: DatabaseSchema,\n uri: AtUri,\n cid: Cid,\n obj: app.bsky.graph.starterpack.Main,\n timestamp: string,\n): Promise<IndexedStarterPack | null> => {\n const inserted = await db\n .insertInto('starter_pack')\n .values({\n uri: uri.toString(),\n cid: cid.toString(),\n creator: uri.host,\n name: obj.name,\n createdAt: normalizeDatetimeAlways(obj.createdAt),\n indexedAt: timestamp,\n })\n .onConflict((oc) => oc.doNothing())\n .returningAll()\n .executeTakeFirst()\n return inserted || null\n}\n\nconst findDuplicate = async (): Promise<AtUri | null> => {\n return null\n}\n\nconst notifsForInsert = () => {\n return []\n}\n\nconst deleteFn = async (\n db: DatabaseSchema,\n uri: AtUri,\n): Promise<IndexedStarterPack | null> => {\n const deleted = await db\n .deleteFrom('starter_pack')\n .where('uri', '=', uri.toString())\n .returningAll()\n .executeTakeFirst()\n return deleted || null\n}\n\nconst notifsForDelete = () => {\n return { notifs: [], toDelete: [] }\n}\n\nexport type PluginType = ReturnType<typeof makePlugin>\nexport const makePlugin = (\n db: Database,\n background: BackgroundQueue<Database>,\n) => {\n return new RecordProcessor(db, background, {\n schema: app.bsky.graph.starterpack.main,\n insertFn,\n findDuplicate,\n deleteFn,\n notifsForInsert,\n notifsForDelete,\n })\n}\n\nexport default makePlugin\n"]}
|
|
@@ -3,6 +3,6 @@ import { BackgroundQueue } from '../../background.js';
|
|
|
3
3
|
import { Database } from '../../db/index.js';
|
|
4
4
|
import { RecordProcessor } from '../processor.js';
|
|
5
5
|
export type PluginType = ReturnType<typeof makePlugin>;
|
|
6
|
-
export declare const makePlugin: (db: Database, background: BackgroundQueue) => RecordProcessor<import("@atproto/lex").RecordSchema<"literal:self", "app.bsky.actor.status", import("@atproto/lex").Validator<Omit<app.bsky.actor.status.Main, "$type">, Omit<app.bsky.actor.status.Main, "$type">>>, unknown>;
|
|
6
|
+
export declare const makePlugin: (db: Database, background: BackgroundQueue<Database>) => RecordProcessor<import("@atproto/lex").RecordSchema<"literal:self", "app.bsky.actor.status", import("@atproto/lex").Validator<Omit<app.bsky.actor.status.Main, "$type">, Omit<app.bsky.actor.status.Main, "$type">>>, unknown>;
|
|
7
7
|
export default makePlugin;
|
|
8
8
|
//# sourceMappingURL=status.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/status.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAmCjD,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;AACtD,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/status.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAmCjD,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;AACtD,eAAO,MAAM,UAAU,OACjB,QAAQ,cACA,eAAe,CAAC,QAAQ,CAAC,mOAUtC,CAAA;eAEc,UAAU"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/status.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAA;AAInD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEjD,6FAA6F;AAE7F,MAAM,QAAQ,GAAG,KAAK,EACpB,GAAmB,EACnB,GAAU,EACV,IAAS,EACT,IAAa,EACb,UAAkB,EACO,EAAE;IAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAA;IACpC,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,KAAK,IAA2B,EAAE;IACtD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,GAAG,EAAE;IAC3B,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,KAAK,EACpB,GAAmB,EACnB,GAAU,EACe,EAAE;IAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAA;IACpC,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,GAAG,EAAE;IAC3B,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;AACrC,CAAC,CAAA;AAGD,MAAM,CAAC,MAAM,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/status.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAA;AAInD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEjD,6FAA6F;AAE7F,MAAM,QAAQ,GAAG,KAAK,EACpB,GAAmB,EACnB,GAAU,EACV,IAAS,EACT,IAAa,EACb,UAAkB,EACO,EAAE;IAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAA;IACpC,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,KAAK,IAA2B,EAAE;IACtD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,GAAG,EAAE;IAC3B,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,KAAK,EACpB,GAAmB,EACnB,GAAU,EACe,EAAE;IAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAA;IACpC,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,GAAG,EAAE;IAC3B,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;AACrC,CAAC,CAAA;AAGD,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,EAAY,EACZ,UAAqC,EACrC,EAAE;IACF,OAAO,IAAI,eAAe,CAAC,EAAE,EAAE,UAAU,EAAE;QACzC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI;QAClC,QAAQ;QACR,aAAa;QACb,QAAQ;QACR,eAAe;QACf,eAAe;KAChB,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,eAAe,UAAU,CAAA","sourcesContent":["import { Cid } from '@atproto/lex'\nimport { AtUri } from '@atproto/syntax'\nimport { app } from '../../../../lexicons/index.js'\nimport { BackgroundQueue } from '../../background.js'\nimport { DatabaseSchema } from '../../db/database-schema.js'\nimport { Database } from '../../db/index.js'\nimport { RecordProcessor } from '../processor.js'\n\n// @NOTE this indexer is a placeholder to ensure it gets indexed in the generic records table\n\nconst insertFn = async (\n _db: DatabaseSchema,\n uri: AtUri,\n _cid: Cid,\n _obj: unknown,\n _timestamp: string,\n): Promise<unknown | null> => {\n if (uri.rkey !== 'self') return null\n return true\n}\n\nconst findDuplicate = async (): Promise<AtUri | null> => {\n return null\n}\n\nconst notifsForInsert = () => {\n return []\n}\n\nconst deleteFn = async (\n _db: DatabaseSchema,\n uri: AtUri,\n): Promise<unknown | null> => {\n if (uri.rkey !== 'self') return null\n return true\n}\n\nconst notifsForDelete = () => {\n return { notifs: [], toDelete: [] }\n}\n\nexport type PluginType = ReturnType<typeof makePlugin>\nexport const makePlugin = (\n db: Database,\n background: BackgroundQueue<Database>,\n) => {\n return new RecordProcessor(db, background, {\n schema: app.bsky.actor.status.main,\n insertFn,\n findDuplicate,\n deleteFn,\n notifsForInsert,\n notifsForDelete,\n })\n}\n\nexport default makePlugin\n"]}
|
|
@@ -3,6 +3,6 @@ import { BackgroundQueue } from '../../background.js';
|
|
|
3
3
|
import { Database } from '../../db/index.js';
|
|
4
4
|
import { RecordProcessor } from '../processor.js';
|
|
5
5
|
export type PluginType = ReturnType<typeof makePlugin>;
|
|
6
|
-
export declare const makePlugin: (db: Database, background: BackgroundQueue) => RecordProcessor<import("@atproto/lex").RecordSchema<"tid", "app.bsky.feed.threadgate", import("@atproto/lex").Validator<Omit<app.bsky.feed.threadgate.Main, "$type">, Omit<app.bsky.feed.threadgate.Main, "$type">>>, import("../../db/tables/thread-gate.js").ThreadGate>;
|
|
6
|
+
export declare const makePlugin: (db: Database, background: BackgroundQueue<Database>) => RecordProcessor<import("@atproto/lex").RecordSchema<"tid", "app.bsky.feed.threadgate", import("@atproto/lex").Validator<Omit<app.bsky.feed.threadgate.Main, "$type">, Omit<app.bsky.feed.threadgate.Main, "$type">>>, import("../../db/tables/thread-gate.js").ThreadGate>;
|
|
7
7
|
export default makePlugin;
|
|
8
8
|
//# sourceMappingURL=thread-gate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread-gate.d.ts","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/thread-gate.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AA8EjD,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;AACtD,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"thread-gate.d.ts","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/thread-gate.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AA8EjD,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;AACtD,eAAO,MAAM,UAAU,OACjB,QAAQ,cACA,eAAe,CAAC,QAAQ,CAAC,+QAUtC,CAAA;eAEc,UAAU"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread-gate.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/thread-gate.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"thread-gate.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/thread-gate.ts"],"names":[],"mappings":"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","sourcesContent":["import { Cid } from '@atproto/lex'\nimport { AtUri, normalizeDatetimeAlways } from '@atproto/syntax'\nimport { InvalidRequestError } from '@atproto/xrpc-server'\nimport { app } from '../../../../lexicons/index.js'\nimport { BackgroundQueue } from '../../background.js'\nimport { DatabaseSchema, DatabaseSchemaType } from '../../db/database-schema.js'\nimport { Database } from '../../db/index.js'\nimport { RecordProcessor } from '../processor.js'\n\ntype IndexedGate = DatabaseSchemaType['thread_gate']\n\nconst insertFn = async (\n db: DatabaseSchema,\n uri: AtUri,\n cid: Cid,\n obj: app.bsky.feed.threadgate.Main,\n timestamp: string,\n): Promise<IndexedGate | null> => {\n const postUri = new AtUri(obj.post)\n if (postUri.host !== uri.host || postUri.rkey !== uri.rkey) {\n throw new InvalidRequestError(\n 'Creator and rkey of thread gate does not match its post',\n )\n }\n const inserted = await db\n .insertInto('thread_gate')\n .values({\n uri: uri.toString(),\n cid: cid.toString(),\n creator: uri.host,\n postUri: obj.post,\n createdAt: normalizeDatetimeAlways(obj.createdAt),\n indexedAt: timestamp,\n })\n .onConflict((oc) => oc.doNothing())\n .returningAll()\n .executeTakeFirst()\n await db\n .updateTable('post')\n .where('uri', '=', postUri.toString())\n .set({ hasThreadGate: true })\n .executeTakeFirst()\n return inserted || null\n}\n\nconst findDuplicate = async (\n db: DatabaseSchema,\n _uri: AtUri,\n obj: app.bsky.feed.threadgate.Main,\n): Promise<AtUri | null> => {\n const found = await db\n .selectFrom('thread_gate')\n .where('postUri', '=', obj.post)\n .selectAll()\n .executeTakeFirst()\n return found ? new AtUri(found.uri) : null\n}\n\nconst notifsForInsert = () => {\n return []\n}\n\nconst deleteFn = async (\n db: DatabaseSchema,\n uri: AtUri,\n): Promise<IndexedGate | null> => {\n const deleted = await db\n .deleteFrom('thread_gate')\n .where('uri', '=', uri.toString())\n .returningAll()\n .executeTakeFirst()\n if (deleted) {\n await db\n .updateTable('post')\n .where('uri', '=', deleted.postUri)\n .set({ hasThreadGate: false })\n .executeTakeFirst()\n }\n return deleted || null\n}\n\nconst notifsForDelete = () => {\n return { notifs: [], toDelete: [] }\n}\n\nexport type PluginType = ReturnType<typeof makePlugin>\nexport const makePlugin = (\n db: Database,\n background: BackgroundQueue<Database>,\n) => {\n return new RecordProcessor(db, background, {\n schema: app.bsky.feed.threadgate.main,\n insertFn,\n findDuplicate,\n deleteFn,\n notifsForInsert,\n notifsForDelete,\n })\n}\n\nexport default makePlugin\n"]}
|
|
@@ -1,11 +1,19 @@
|
|
|
1
|
-
import { Selectable } from 'kysely';
|
|
2
1
|
import { app } from '../../../../lexicons/index.js';
|
|
3
2
|
import { BackgroundQueue } from '../../background.js';
|
|
4
|
-
import { DatabaseSchemaType } from '../../db/database-schema.js';
|
|
5
3
|
import { Database } from '../../db/index.js';
|
|
6
4
|
import { RecordProcessor } from '../processor.js';
|
|
7
|
-
type IndexedVerification = Selectable<DatabaseSchemaType['verification']>;
|
|
8
5
|
export type PluginType = ReturnType<typeof makePlugin>;
|
|
9
|
-
export declare const makePlugin: (db: Database, background: BackgroundQueue) => RecordProcessor<import("@atproto/lex").RecordSchema<"tid", "app.bsky.graph.verification", import("@atproto/lex").Validator<Omit<app.bsky.graph.verification.Main, "$type">, Omit<app.bsky.graph.verification.Main, "$type">>>,
|
|
6
|
+
export declare const makePlugin: (db: Database, background: BackgroundQueue<Database>) => RecordProcessor<import("@atproto/lex").RecordSchema<"tid", "app.bsky.graph.verification", import("@atproto/lex").Validator<Omit<app.bsky.graph.verification.Main, "$type">, Omit<app.bsky.graph.verification.Main, "$type">>>, {
|
|
7
|
+
cid: string;
|
|
8
|
+
createdAt: string;
|
|
9
|
+
creator: string;
|
|
10
|
+
displayName: string;
|
|
11
|
+
handle: string;
|
|
12
|
+
indexedAt: string;
|
|
13
|
+
rkey: string;
|
|
14
|
+
sortedAt: string;
|
|
15
|
+
subject: string;
|
|
16
|
+
uri: string;
|
|
17
|
+
}>;
|
|
10
18
|
export default makePlugin;
|
|
11
19
|
//# sourceMappingURL=verification.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/verification.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/verification.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AA0FjD,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;AACtD,eAAO,MAAM,UAAU,OACjB,QAAQ,cACA,eAAe,CAAC,QAAQ,CAAC;;;;;;;;;;;EAUtC,CAAA;eAEc,UAAU"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/verification.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/verification.ts"],"names":[],"mappings":"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","sourcesContent":["import { Selectable } from 'kysely'\nimport { Cid } from '@atproto/lex'\nimport { AtUri, normalizeDatetimeAlways } from '@atproto/syntax'\nimport { app } from '../../../../lexicons/index.js'\nimport { BackgroundQueue } from '../../background.js'\nimport { DatabaseSchema, DatabaseSchemaType } from '../../db/database-schema.js'\nimport { Database } from '../../db/index.js'\nimport { RecordProcessor } from '../processor.js'\n\ntype IndexedVerification = Selectable<DatabaseSchemaType['verification']>\n\nconst insertFn = async (\n db: DatabaseSchema,\n uri: AtUri,\n cid: Cid,\n obj: app.bsky.graph.verification.Main,\n timestamp: string,\n): Promise<IndexedVerification | null> => {\n const inserted = await db\n .insertInto('verification')\n .values({\n uri: uri.toString(),\n cid: cid.toString(),\n rkey: uri.rkey,\n creator: uri.host,\n subject: obj.subject,\n handle: obj.handle,\n displayName: obj.displayName,\n createdAt: normalizeDatetimeAlways(obj.createdAt),\n indexedAt: timestamp,\n })\n .onConflict((oc) => oc.doNothing())\n .returningAll()\n .executeTakeFirst()\n return inserted || null\n}\n\nconst findDuplicate = async (\n db: DatabaseSchema,\n uri: AtUri,\n obj: app.bsky.graph.verification.Main,\n): Promise<AtUri | null> => {\n const found = await db\n .selectFrom('verification')\n .where('subject', '=', obj.subject)\n .where('creator', '=', uri.host)\n .selectAll()\n .executeTakeFirst()\n return found ? new AtUri(found.uri) : null\n}\n\nconst notifsForInsert = (obj: IndexedVerification) => {\n return [\n {\n did: obj.subject,\n author: obj.creator,\n recordUri: obj.uri,\n recordCid: obj.cid,\n reason: 'verified' as const,\n reasonSubject: null,\n sortAt: obj.sortedAt,\n },\n ]\n}\n\nconst deleteFn = async (\n db: DatabaseSchema,\n uri: AtUri,\n): Promise<IndexedVerification | null> => {\n const deleted = await db\n .deleteFrom('verification')\n .where('uri', '=', uri.toString())\n .returningAll()\n .executeTakeFirst()\n return deleted || null\n}\n\nconst notifsForDelete = (\n deleted: IndexedVerification,\n _replacedBy: IndexedVerification | null,\n) => {\n return {\n notifs: [\n {\n did: deleted.subject,\n author: deleted.creator,\n recordUri: deleted.uri,\n recordCid: deleted.cid,\n reason: 'unverified' as const,\n reasonSubject: null,\n sortAt: new Date().toISOString(),\n },\n ],\n toDelete: [],\n }\n}\n\nexport type PluginType = ReturnType<typeof makePlugin>\nexport const makePlugin = (\n db: Database,\n background: BackgroundQueue<Database>,\n) => {\n return new RecordProcessor(db, background, {\n schema: app.bsky.graph.verification.main,\n insertFn,\n findDuplicate,\n deleteFn,\n notifsForInsert,\n notifsForDelete,\n })\n}\n\nexport default makePlugin\n"]}
|
|
@@ -22,7 +22,7 @@ export declare class RecordProcessor<TSchema extends l.RecordSchema, TRow> {
|
|
|
22
22
|
private appDb;
|
|
23
23
|
private background;
|
|
24
24
|
private options;
|
|
25
|
-
constructor(appDb: Database, background: BackgroundQueue
|
|
25
|
+
constructor(appDb: Database, background: BackgroundQueue<Database>, options: RecordProcessorOptions<TSchema, TRow>);
|
|
26
26
|
get db(): DatabaseSchema;
|
|
27
27
|
get collection(): TSchema['$type'];
|
|
28
28
|
matchesSchema<I>(obj: I): obj is I & l.InferInput<TSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processor.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/indexing/processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAEnC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAoC,MAAM,cAAc,CAAA;AACvE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAI3D,KAAK,sBAAsB,CAAC,OAAO,SAAS,CAAC,CAAC,YAAY,EAAE,IAAI,IAAI;IAClE,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,CACR,EAAE,EAAE,cAAc,EAClB,GAAG,EAAE,KAAK,EACV,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,EAC1B,SAAS,EAAE,MAAM,KACd,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;IACzB,aAAa,EAAE,CACb,EAAE,EAAE,cAAc,EAClB,GAAG,EAAE,KAAK,EACV,GAAG,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,KACvB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAA;IAC1B,QAAQ,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;IAClE,eAAe,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,KAAK,EAAE,CAAA;IACvC,eAAe,EAAE,CACf,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,IAAI,GAAG,IAAI,KACpB;QAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;IAC5C,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpE,CAAA;AAED,KAAK,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAA;AAErC,qBAAa,eAAe,CAAC,OAAO,SAAS,CAAC,CAAC,YAAY,EAAE,IAAI;IAE7D,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,OAAO;IAHjB,YACU,KAAK,EAAE,QAAQ,EACf,UAAU,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"processor.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/indexing/processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processor.js","sourceRoot":"","sources":["../../../../src/data-plane/server/indexing/processor.ts"],"names":[],"mappings":"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","sourcesContent":["import { Insertable } from 'kysely'\nimport { chunkArray } from '@atproto/common'\nimport { Cid, l, lexParse, lexStringify, parseCid } from '@atproto/lex'\nimport { AtUri } from '@atproto/syntax'\nimport { BackgroundQueue } from '../background.js'\nimport { DatabaseSchema } from '../db/database-schema.js'\nimport { Database } from '../db/index.js'\nimport { Notification } from '../db/tables/notification.js'\n\n// @NOTE re: insertions and deletions. Due to how record updates are handled,\n// (insertFn) should have the same effect as (insertFn -> deleteFn -> insertFn).\ntype RecordProcessorOptions<TSchema extends l.RecordSchema, TRow> = {\n schema: TSchema\n insertFn: (\n db: DatabaseSchema,\n uri: AtUri,\n cid: Cid,\n obj: l.InferInput<TSchema>,\n timestamp: string,\n ) => Promise<TRow | null>\n findDuplicate: (\n db: DatabaseSchema,\n uri: AtUri,\n obj: l.InferInput<TSchema>,\n ) => Promise<AtUri | null>\n deleteFn: (db: DatabaseSchema, uri: AtUri) => Promise<TRow | null>\n notifsForInsert: (obj: TRow) => Notif[]\n notifsForDelete: (\n prev: TRow,\n replacedBy: TRow | null,\n ) => { notifs: Notif[]; toDelete: string[] }\n updateAggregates?: (db: DatabaseSchema, obj: TRow) => Promise<void>\n}\n\ntype Notif = Insertable<Notification>\n\nexport class RecordProcessor<TSchema extends l.RecordSchema, TRow> {\n constructor(\n private appDb: Database,\n private background: BackgroundQueue,\n private options: RecordProcessorOptions<TSchema, TRow>,\n ) {}\n\n get db() {\n return this.appDb.db\n }\n\n get collection(): TSchema['$type'] {\n return this.options.schema.$type\n }\n\n matchesSchema<I>(obj: I): obj is I & l.InferInput<TSchema> {\n return this.options.schema.matches(obj)\n }\n\n assertValidRecord(obj: unknown): asserts obj is l.InferInput<TSchema> {\n this.options.schema.check(obj)\n }\n\n async insertRecord(\n uri: AtUri,\n cid: Cid,\n obj: unknown,\n timestamp: string,\n opts?: { disableNotifs?: boolean },\n ) {\n this.assertValidRecord(obj)\n await this.db\n .insertInto('record')\n .values({\n uri: uri.toString(),\n cid: cid.toString(),\n did: uri.host,\n json: lexStringify(obj),\n indexedAt: timestamp,\n })\n .onConflict((oc) => oc.doNothing())\n .execute()\n const inserted = await this.options.insertFn(\n this.db,\n uri,\n cid,\n obj,\n timestamp,\n )\n if (inserted) {\n this.aggregateOnCommit(inserted)\n if (!opts?.disableNotifs) {\n await this.handleNotifs({ inserted })\n }\n return\n }\n // if duplicate, insert into duplicates table with no events\n const found = await this.options.findDuplicate(this.db, uri, obj)\n if (found && found.toString() !== uri.toString()) {\n await this.db\n .insertInto('duplicate_record')\n .values({\n uri: uri.toString(),\n cid: cid.toString(),\n duplicateOf: found.toString(),\n indexedAt: timestamp,\n })\n .onConflict((oc) => oc.doNothing())\n .execute()\n }\n }\n\n // Currently using a very simple strategy for updates: purge the existing index\n // for the uri then replace it. The main upside is that this allows the indexer\n // for each collection to avoid bespoke logic for in-place updates, which isn't\n // straightforward in the general case. We still get nice control over notifications.\n async updateRecord(\n uri: AtUri,\n cid: Cid,\n obj: unknown,\n timestamp: string,\n opts?: { disableNotifs?: boolean },\n ) {\n this.assertValidRecord(obj)\n await this.db\n .updateTable('record')\n .where('uri', '=', uri.toString())\n .set({\n cid: cid.toString(),\n json: lexStringify(obj),\n indexedAt: timestamp,\n })\n .execute()\n // If the updated record was a dupe, update dupe info for it\n const dupe = await this.options.findDuplicate(this.db, uri, obj)\n if (dupe) {\n await this.db\n .updateTable('duplicate_record')\n .where('uri', '=', uri.toString())\n .set({\n cid: cid.toString(),\n duplicateOf: dupe.toString(),\n indexedAt: timestamp,\n })\n .execute()\n } else {\n await this.db\n .deleteFrom('duplicate_record')\n .where('uri', '=', uri.toString())\n .execute()\n }\n\n const deleted = await this.options.deleteFn(this.db, uri)\n if (!deleted) {\n // If a record was updated but hadn't been indexed yet, treat it like a plain insert.\n return this.insertRecord(uri, cid, obj, timestamp)\n }\n this.aggregateOnCommit(deleted)\n const inserted = await this.options.insertFn(\n this.db,\n uri,\n cid,\n obj,\n timestamp,\n )\n if (!inserted) {\n throw new Error(\n 'Record update failed: removed from index but could not be replaced',\n )\n }\n this.aggregateOnCommit(inserted)\n if (!opts?.disableNotifs) {\n await this.handleNotifs({ inserted, deleted })\n }\n }\n\n async deleteRecord(uri: AtUri, cascading = false) {\n await this.db\n .deleteFrom('record')\n .where('uri', '=', uri.toString())\n .execute()\n await this.db\n .deleteFrom('duplicate_record')\n .where('uri', '=', uri.toString())\n .execute()\n const deleted = await this.options.deleteFn(this.db, uri)\n if (!deleted) return\n this.aggregateOnCommit(deleted)\n if (cascading) {\n await this.db\n .deleteFrom('duplicate_record')\n .where('duplicateOf', '=', uri.toString())\n .execute()\n return this.handleNotifs({ deleted })\n } else {\n const found = await this.db\n .selectFrom('duplicate_record')\n .innerJoin('record', 'record.uri', 'duplicate_record.uri')\n .where('duplicateOf', '=', uri.toString())\n .orderBy('duplicate_record.indexedAt', 'asc')\n .limit(1)\n .selectAll()\n .executeTakeFirst()\n\n if (!found) {\n return this.handleNotifs({ deleted })\n }\n const record = lexParse(found.json)\n if (!this.matchesSchema(record)) {\n return this.handleNotifs({ deleted })\n }\n const inserted = await this.options.insertFn(\n this.db,\n new AtUri(found.uri),\n parseCid(found.cid),\n record,\n found.indexedAt,\n )\n if (inserted) {\n this.aggregateOnCommit(inserted)\n }\n await this.handleNotifs({ deleted, inserted: inserted ?? undefined })\n }\n }\n\n async handleNotifs(op: { deleted?: TRow; inserted?: TRow }) {\n let notifs: Notif[] = []\n const runOnCommit: ((db: Database) => Promise<void>)[] = []\n if (op.deleted) {\n const forDelete = this.options.notifsForDelete(\n op.deleted,\n op.inserted ?? null,\n )\n if (forDelete.toDelete.length > 0) {\n // Notifs can be deleted in background: they are expensive to delete and\n // listNotifications already excludes notifs with missing records.\n runOnCommit.push(async (db) => {\n await db.db\n .deleteFrom('notification')\n .where('recordUri', 'in', forDelete.toDelete)\n .execute()\n })\n }\n notifs = forDelete.notifs\n } else if (op.inserted) {\n notifs = this.options.notifsForInsert(op.inserted)\n }\n for (const chunk of chunkArray(notifs, 500)) {\n runOnCommit.push(async (db) => {\n const filtered = await this.filterNotifsForThreadMutes(chunk)\n await db.db.insertInto('notification').values(filtered).execute()\n })\n }\n // Need to ensure notif deletion always happens before creation, otherwise delete may clobber in a race.\n for (const fn of runOnCommit) {\n await fn(this.appDb) // these could be backgrounded\n }\n }\n\n async filterNotifsForThreadMutes(notifs: Notif[]): Promise<Notif[]> {\n const isBlocked = await Promise.all(\n notifs.map((n) => this.isNotifBlockedByThreadMute(n)),\n )\n return notifs.filter((_, i) => !isBlocked[i])\n }\n\n async isNotifBlockedByThreadMute(notif: Notif): Promise<boolean> {\n const subject = notif.reasonSubject\n if (!subject) return false\n if (subject.startsWith('did:')) return false\n const post = await this.db\n .selectFrom('post')\n .select(['uri', 'replyRoot'])\n .where('uri', '=', subject)\n .executeTakeFirst()\n if (!post) return false\n const threadRoot = post.replyRoot ?? post.uri\n const threadMute = await this.db\n .selectFrom('thread_mute')\n .selectAll()\n .where('mutedByDid', '=', notif.did)\n .where('rootUri', '=', threadRoot)\n .executeTakeFirst()\n return !!threadMute\n }\n\n aggregateOnCommit(indexed: TRow) {\n const { updateAggregates } = this.options\n if (!updateAggregates) return\n this.appDb.onCommit(() => {\n this.background.add((db) => updateAggregates(db.db, indexed))\n })\n }\n}\n\nexport default RecordProcessor\n"]}
|
|
1
|
+
{"version":3,"file":"processor.js","sourceRoot":"","sources":["../../../../src/data-plane/server/indexing/processor.ts"],"names":[],"mappings":"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","sourcesContent":["import { Insertable } from 'kysely'\nimport { chunkArray } from '@atproto/common'\nimport { Cid, l, lexParse, lexStringify, parseCid } from '@atproto/lex'\nimport { AtUri } from '@atproto/syntax'\nimport { BackgroundQueue } from '../background.js'\nimport { DatabaseSchema } from '../db/database-schema.js'\nimport { Database } from '../db/index.js'\nimport { Notification } from '../db/tables/notification.js'\n\n// @NOTE re: insertions and deletions. Due to how record updates are handled,\n// (insertFn) should have the same effect as (insertFn -> deleteFn -> insertFn).\ntype RecordProcessorOptions<TSchema extends l.RecordSchema, TRow> = {\n schema: TSchema\n insertFn: (\n db: DatabaseSchema,\n uri: AtUri,\n cid: Cid,\n obj: l.InferInput<TSchema>,\n timestamp: string,\n ) => Promise<TRow | null>\n findDuplicate: (\n db: DatabaseSchema,\n uri: AtUri,\n obj: l.InferInput<TSchema>,\n ) => Promise<AtUri | null>\n deleteFn: (db: DatabaseSchema, uri: AtUri) => Promise<TRow | null>\n notifsForInsert: (obj: TRow) => Notif[]\n notifsForDelete: (\n prev: TRow,\n replacedBy: TRow | null,\n ) => { notifs: Notif[]; toDelete: string[] }\n updateAggregates?: (db: DatabaseSchema, obj: TRow) => Promise<void>\n}\n\ntype Notif = Insertable<Notification>\n\nexport class RecordProcessor<TSchema extends l.RecordSchema, TRow> {\n constructor(\n private appDb: Database,\n private background: BackgroundQueue<Database>,\n private options: RecordProcessorOptions<TSchema, TRow>,\n ) {}\n\n get db() {\n return this.appDb.db\n }\n\n get collection(): TSchema['$type'] {\n return this.options.schema.$type\n }\n\n matchesSchema<I>(obj: I): obj is I & l.InferInput<TSchema> {\n return this.options.schema.matches(obj)\n }\n\n assertValidRecord(obj: unknown): asserts obj is l.InferInput<TSchema> {\n this.options.schema.check(obj)\n }\n\n async insertRecord(\n uri: AtUri,\n cid: Cid,\n obj: unknown,\n timestamp: string,\n opts?: { disableNotifs?: boolean },\n ) {\n this.assertValidRecord(obj)\n await this.db\n .insertInto('record')\n .values({\n uri: uri.toString(),\n cid: cid.toString(),\n did: uri.host,\n json: lexStringify(obj),\n indexedAt: timestamp,\n })\n .onConflict((oc) => oc.doNothing())\n .execute()\n const inserted = await this.options.insertFn(\n this.db,\n uri,\n cid,\n obj,\n timestamp,\n )\n if (inserted) {\n this.aggregateOnCommit(inserted)\n if (!opts?.disableNotifs) {\n await this.handleNotifs({ inserted })\n }\n return\n }\n // if duplicate, insert into duplicates table with no events\n const found = await this.options.findDuplicate(this.db, uri, obj)\n if (found && found.toString() !== uri.toString()) {\n await this.db\n .insertInto('duplicate_record')\n .values({\n uri: uri.toString(),\n cid: cid.toString(),\n duplicateOf: found.toString(),\n indexedAt: timestamp,\n })\n .onConflict((oc) => oc.doNothing())\n .execute()\n }\n }\n\n // Currently using a very simple strategy for updates: purge the existing index\n // for the uri then replace it. The main upside is that this allows the indexer\n // for each collection to avoid bespoke logic for in-place updates, which isn't\n // straightforward in the general case. We still get nice control over notifications.\n async updateRecord(\n uri: AtUri,\n cid: Cid,\n obj: unknown,\n timestamp: string,\n opts?: { disableNotifs?: boolean },\n ) {\n this.assertValidRecord(obj)\n await this.db\n .updateTable('record')\n .where('uri', '=', uri.toString())\n .set({\n cid: cid.toString(),\n json: lexStringify(obj),\n indexedAt: timestamp,\n })\n .execute()\n // If the updated record was a dupe, update dupe info for it\n const dupe = await this.options.findDuplicate(this.db, uri, obj)\n if (dupe) {\n await this.db\n .updateTable('duplicate_record')\n .where('uri', '=', uri.toString())\n .set({\n cid: cid.toString(),\n duplicateOf: dupe.toString(),\n indexedAt: timestamp,\n })\n .execute()\n } else {\n await this.db\n .deleteFrom('duplicate_record')\n .where('uri', '=', uri.toString())\n .execute()\n }\n\n const deleted = await this.options.deleteFn(this.db, uri)\n if (!deleted) {\n // If a record was updated but hadn't been indexed yet, treat it like a plain insert.\n return this.insertRecord(uri, cid, obj, timestamp)\n }\n this.aggregateOnCommit(deleted)\n const inserted = await this.options.insertFn(\n this.db,\n uri,\n cid,\n obj,\n timestamp,\n )\n if (!inserted) {\n throw new Error(\n 'Record update failed: removed from index but could not be replaced',\n )\n }\n this.aggregateOnCommit(inserted)\n if (!opts?.disableNotifs) {\n await this.handleNotifs({ inserted, deleted })\n }\n }\n\n async deleteRecord(uri: AtUri, cascading = false) {\n await this.db\n .deleteFrom('record')\n .where('uri', '=', uri.toString())\n .execute()\n await this.db\n .deleteFrom('duplicate_record')\n .where('uri', '=', uri.toString())\n .execute()\n const deleted = await this.options.deleteFn(this.db, uri)\n if (!deleted) return\n this.aggregateOnCommit(deleted)\n if (cascading) {\n await this.db\n .deleteFrom('duplicate_record')\n .where('duplicateOf', '=', uri.toString())\n .execute()\n return this.handleNotifs({ deleted })\n } else {\n const found = await this.db\n .selectFrom('duplicate_record')\n .innerJoin('record', 'record.uri', 'duplicate_record.uri')\n .where('duplicateOf', '=', uri.toString())\n .orderBy('duplicate_record.indexedAt', 'asc')\n .limit(1)\n .selectAll()\n .executeTakeFirst()\n\n if (!found) {\n return this.handleNotifs({ deleted })\n }\n const record = lexParse(found.json)\n if (!this.matchesSchema(record)) {\n return this.handleNotifs({ deleted })\n }\n const inserted = await this.options.insertFn(\n this.db,\n new AtUri(found.uri),\n parseCid(found.cid),\n record,\n found.indexedAt,\n )\n if (inserted) {\n this.aggregateOnCommit(inserted)\n }\n await this.handleNotifs({ deleted, inserted: inserted ?? undefined })\n }\n }\n\n async handleNotifs(op: { deleted?: TRow; inserted?: TRow }) {\n let notifs: Notif[] = []\n const runOnCommit: ((db: Database) => Promise<void>)[] = []\n if (op.deleted) {\n const forDelete = this.options.notifsForDelete(\n op.deleted,\n op.inserted ?? null,\n )\n if (forDelete.toDelete.length > 0) {\n // Notifs can be deleted in background: they are expensive to delete and\n // listNotifications already excludes notifs with missing records.\n runOnCommit.push(async (db) => {\n await db.db\n .deleteFrom('notification')\n .where('recordUri', 'in', forDelete.toDelete)\n .execute()\n })\n }\n notifs = forDelete.notifs\n } else if (op.inserted) {\n notifs = this.options.notifsForInsert(op.inserted)\n }\n for (const chunk of chunkArray(notifs, 500)) {\n runOnCommit.push(async (db) => {\n const filtered = await this.filterNotifsForThreadMutes(chunk)\n await db.db.insertInto('notification').values(filtered).execute()\n })\n }\n // Need to ensure notif deletion always happens before creation, otherwise delete may clobber in a race.\n for (const fn of runOnCommit) {\n await fn(this.appDb) // these could be backgrounded\n }\n }\n\n async filterNotifsForThreadMutes(notifs: Notif[]): Promise<Notif[]> {\n const isBlocked = await Promise.all(\n notifs.map((n) => this.isNotifBlockedByThreadMute(n)),\n )\n return notifs.filter((_, i) => !isBlocked[i])\n }\n\n async isNotifBlockedByThreadMute(notif: Notif): Promise<boolean> {\n const subject = notif.reasonSubject\n if (!subject) return false\n if (subject.startsWith('did:')) return false\n const post = await this.db\n .selectFrom('post')\n .select(['uri', 'replyRoot'])\n .where('uri', '=', subject)\n .executeTakeFirst()\n if (!post) return false\n const threadRoot = post.replyRoot ?? post.uri\n const threadMute = await this.db\n .selectFrom('thread_mute')\n .selectAll()\n .where('mutedByDid', '=', notif.did)\n .where('rootUri', '=', threadRoot)\n .executeTakeFirst()\n return !!threadMute\n }\n\n aggregateOnCommit(indexed: TRow) {\n const { updateAggregates } = this.options\n if (!updateAggregates) return\n this.appDb.onCommit(() => {\n this.background.add((db) => updateAggregates(db.db, indexed))\n })\n }\n}\n\nexport default RecordProcessor\n"]}
|
|
@@ -4,12 +4,16 @@ export default (db) => ({
|
|
|
4
4
|
const { actorDid, targetDid } = req;
|
|
5
5
|
const res = await db.db
|
|
6
6
|
.selectFrom('actor_block')
|
|
7
|
-
.where((
|
|
8
|
-
.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
.
|
|
7
|
+
.where((eb) => eb.or([
|
|
8
|
+
eb.and([
|
|
9
|
+
eb('actor_block.creator', '=', actorDid),
|
|
10
|
+
eb('actor_block.subjectDid', '=', targetDid),
|
|
11
|
+
]),
|
|
12
|
+
eb.and([
|
|
13
|
+
eb('actor_block.creator', '=', targetDid),
|
|
14
|
+
eb('actor_block.subjectDid', '=', actorDid),
|
|
15
|
+
]),
|
|
16
|
+
]))
|
|
13
17
|
.limit(1)
|
|
14
18
|
.selectAll()
|
|
15
19
|
.executeTakeFirst();
|
|
@@ -41,12 +45,16 @@ export default (db) => ({
|
|
|
41
45
|
const res = await db.db
|
|
42
46
|
.selectFrom('list_block')
|
|
43
47
|
.innerJoin('list_item', 'list_item.listUri', 'list_block.subjectUri')
|
|
44
|
-
.where((
|
|
45
|
-
.
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
.
|
|
48
|
+
.where((eb) => eb.or([
|
|
49
|
+
eb.and([
|
|
50
|
+
eb('list_block.creator', '=', actorDid),
|
|
51
|
+
eb('list_item.subjectDid', '=', targetDid),
|
|
52
|
+
]),
|
|
53
|
+
eb.and([
|
|
54
|
+
eb('list_block.creator', '=', targetDid),
|
|
55
|
+
eb('list_item.subjectDid', '=', actorDid),
|
|
56
|
+
]),
|
|
57
|
+
]))
|
|
50
58
|
.limit(1)
|
|
51
59
|
.selectAll('list_block')
|
|
52
60
|
.executeTakeFirst();
|
|
@@ -72,11 +80,11 @@ export default (db) => ({
|
|
|
72
80
|
const { ref } = db.db.dynamic;
|
|
73
81
|
let builder = db.db
|
|
74
82
|
.selectFrom('list')
|
|
75
|
-
.
|
|
83
|
+
.where(({ exists }) => exists(db.db
|
|
76
84
|
.selectFrom('list_block')
|
|
77
85
|
.where('list_block.creator', '=', actorDid)
|
|
78
86
|
.whereRef('list_block.subjectUri', '=', ref('list.uri'))
|
|
79
|
-
.selectAll())
|
|
87
|
+
.selectAll()))
|
|
80
88
|
.selectAll('list');
|
|
81
89
|
const keyset = new TimeCidKeyset(ref('list.createdAt'), ref('list.cid'));
|
|
82
90
|
builder = paginate(builder, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../../../src/data-plane/server/routes/blocks.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE7D,eAAe,CAAC,EAAY,EAAwC,EAAE,CAAC,CAAC;IACtE,KAAK,CAAC,qBAAqB,CAAC,GAAG;QAC7B,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,GAAG,CAAA;QACnC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,EAAE;aACpB,UAAU,CAAC,aAAa,CAAC;aACzB,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CACZ,EAAE;
|
|
1
|
+
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../../../src/data-plane/server/routes/blocks.ts"],"names":[],"mappings":"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","sourcesContent":["import { ServiceImpl } from '@connectrpc/connect'\nimport { Service } from '../../../proto/bsky_connect.js'\nimport { Database } from '../db/index.js'\nimport { TimeCidKeyset, paginate } from '../db/pagination.js'\n\nexport default (db: Database): Partial<ServiceImpl<typeof Service>> => ({\n async getBidirectionalBlock(req) {\n const { actorDid, targetDid } = req\n const res = await db.db\n .selectFrom('actor_block')\n .where((eb) =>\n eb.or([\n eb.and([\n eb('actor_block.creator', '=', actorDid),\n eb('actor_block.subjectDid', '=', targetDid),\n ]),\n eb.and([\n eb('actor_block.creator', '=', targetDid),\n eb('actor_block.subjectDid', '=', actorDid),\n ]),\n ]),\n )\n .limit(1)\n .selectAll()\n .executeTakeFirst()\n\n return {\n blockUri: res?.uri,\n }\n },\n\n async getBlocks(req) {\n const { actorDid, cursor, limit } = req\n const { ref } = db.db.dynamic\n\n let builder = db.db\n .selectFrom('actor_block')\n .where('actor_block.creator', '=', actorDid)\n .selectAll()\n\n const keyset = new TimeCidKeyset(\n ref('actor_block.sortAt'),\n ref('actor_block.cid'),\n )\n builder = paginate(builder, {\n limit,\n cursor,\n keyset,\n })\n\n const blocks = await builder.execute()\n return {\n blockUris: blocks.map((b) => b.uri),\n cursor: keyset.packFromResult(blocks),\n }\n },\n\n async getBidirectionalBlockViaList(req) {\n const { actorDid, targetDid } = req\n const res = await db.db\n .selectFrom('list_block')\n .innerJoin('list_item', 'list_item.listUri', 'list_block.subjectUri')\n .where((eb) =>\n eb.or([\n eb.and([\n eb('list_block.creator', '=', actorDid),\n eb('list_item.subjectDid', '=', targetDid),\n ]),\n eb.and([\n eb('list_block.creator', '=', targetDid),\n eb('list_item.subjectDid', '=', actorDid),\n ]),\n ]),\n )\n .limit(1)\n .selectAll('list_block')\n .executeTakeFirst()\n\n return {\n listUri: res?.subjectUri,\n }\n },\n\n async getBlocklistSubscription(req) {\n const { actorDid, listUri } = req\n const res = await db.db\n .selectFrom('list_block')\n .where('creator', '=', actorDid)\n .where('subjectUri', '=', listUri)\n .selectAll()\n .limit(1)\n .executeTakeFirst()\n return {\n listblockUri: res?.uri,\n }\n },\n\n async getBlocklistSubscriptions(req) {\n const { actorDid, limit, cursor } = req\n const { ref } = db.db.dynamic\n let builder = db.db\n .selectFrom('list')\n .where(({ exists }) =>\n exists(\n db.db\n .selectFrom('list_block')\n .where('list_block.creator', '=', actorDid)\n .whereRef('list_block.subjectUri', '=', ref('list.uri'))\n .selectAll(),\n ),\n )\n .selectAll('list')\n\n const keyset = new TimeCidKeyset(ref('list.createdAt'), ref('list.cid'))\n builder = paginate(builder, {\n limit,\n cursor,\n keyset,\n })\n const lists = await builder.execute()\n\n return {\n listUris: lists.map((l) => l.uri),\n cursor: keyset.packFromResult(lists),\n }\n },\n})\n"]}
|
|
@@ -23,7 +23,7 @@ export default (db) => ({
|
|
|
23
23
|
const feeds = await db.db
|
|
24
24
|
.selectFrom('suggested_feed')
|
|
25
25
|
.orderBy('suggested_feed.order', 'asc')
|
|
26
|
-
|
|
26
|
+
.$if(!!req.cursor, (q) => q.where('order', '>', parseInt(req.cursor, 10)))
|
|
27
27
|
.limit(req.limit || 50)
|
|
28
28
|
.selectAll()
|
|
29
29
|
.execute();
|
|
@@ -51,7 +51,7 @@ const searchFeedGeneratorsImpl = async (db, query, limit) => {
|
|
|
51
51
|
const trimmed = query.trim();
|
|
52
52
|
let builder = db.db
|
|
53
53
|
.selectFrom('feed_generator')
|
|
54
|
-
|
|
54
|
+
.$if(!!trimmed, (q) => q.where('displayName', 'ilike', `%${trimmed}%`))
|
|
55
55
|
.selectAll();
|
|
56
56
|
const keyset = new TimeCidKeyset(ref('feed_generator.createdAt'), ref('feed_generator.cid'));
|
|
57
57
|
builder = paginate(builder, { limit, keyset });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feed-gens.js","sourceRoot":"","sources":["../../../../src/data-plane/server/routes/feed-gens.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE7D,eAAe,CAAC,EAAY,EAAwC,EAAE,CAAC,CAAC;IACtE,KAAK,CAAC,aAAa,CAAC,GAAG;QACrB,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;QAEvC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,CAAA;QAC7B,IAAI,OAAO,GAAG,EAAE,CAAC,EAAE;aAChB,UAAU,CAAC,gBAAgB,CAAC;aAC5B,SAAS,EAAE;aACX,KAAK,CAAC,wBAAwB,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;QAEjD,MAAM,MAAM,GAAG,IAAI,aAAa,CAC9B,GAAG,CAAC,0BAA0B,CAAC,EAC/B,GAAG,CAAC,oBAAoB,CAAC,CAC1B,CAAA;QACD,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE;YAC1B,KAAK;YACL,MAAM;YACN,MAAM;SACP,CAAC,CAAA;QACF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;QAErC,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YAC7B,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC;SACrC,CAAA;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,GAAG;QACzB,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,EAAE;aACtB,UAAU,CAAC,gBAAgB,CAAC;aAC5B,OAAO,CAAC,sBAAsB,EAAE,KAAK,CAAC;aACtC,
|
|
1
|
+
{"version":3,"file":"feed-gens.js","sourceRoot":"","sources":["../../../../src/data-plane/server/routes/feed-gens.ts"],"names":[],"mappings":"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","sourcesContent":["import { ServiceImpl } from '@connectrpc/connect'\nimport { Service } from '../../../proto/bsky_connect.js'\nimport { Database } from '../db/index.js'\nimport { TimeCidKeyset, paginate } from '../db/pagination.js'\n\nexport default (db: Database): Partial<ServiceImpl<typeof Service>> => ({\n async getActorFeeds(req) {\n const { actorDid, limit, cursor } = req\n\n const { ref } = db.db.dynamic\n let builder = db.db\n .selectFrom('feed_generator')\n .selectAll()\n .where('feed_generator.creator', '=', actorDid)\n\n const keyset = new TimeCidKeyset(\n ref('feed_generator.createdAt'),\n ref('feed_generator.cid'),\n )\n builder = paginate(builder, {\n limit,\n cursor,\n keyset,\n })\n const feeds = await builder.execute()\n\n return {\n uris: feeds.map((f) => f.uri),\n cursor: keyset.packFromResult(feeds),\n }\n },\n\n async getSuggestedFeeds(req) {\n const feeds = await db.db\n .selectFrom('suggested_feed')\n .orderBy('suggested_feed.order', 'asc')\n .$if(!!req.cursor, (q) => q.where('order', '>', parseInt(req.cursor, 10)))\n .limit(req.limit || 50)\n .selectAll()\n .execute()\n return {\n uris: feeds.map((f) => f.uri),\n cursor: feeds.at(-1)?.order.toString(),\n }\n },\n\n async searchFeedGenerators(req) {\n return searchFeedGeneratorsImpl(db, req.query, req.limit)\n },\n\n async searchFeedGeneratorsV2(req) {\n const { uris, cursor } = await searchFeedGeneratorsImpl(\n db,\n req.params?.query ?? '',\n req.params?.limit ?? 25,\n )\n return {\n feedGenerators: uris.map((uri) => ({ uri, score: 0 })),\n pageInfo: { cursor: cursor ?? '', hitsTotal: 0n },\n }\n },\n\n async getFeedGeneratorStatus() {\n throw new Error('unimplemented')\n },\n})\n\nconst searchFeedGeneratorsImpl = async (\n db: Database,\n query: string,\n limit: number,\n) => {\n const { ref } = db.db.dynamic\n const trimmed = query.trim()\n let builder = db.db\n .selectFrom('feed_generator')\n .$if(!!trimmed, (q) => q.where('displayName', 'ilike', `%${trimmed}%`))\n .selectAll()\n const keyset = new TimeCidKeyset(\n ref('feed_generator.createdAt'),\n ref('feed_generator.cid'),\n )\n builder = paginate(builder, { limit, keyset })\n const feeds = await builder.execute()\n return {\n uris: feeds.map((f) => f.uri),\n cursor: keyset.packFromResult(feeds),\n }\n}\n"]}
|