@atproto/bsky 0.0.241 → 0.0.243
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 +28 -0
- package/dist/api/age-assurance/const.d.ts +1 -1
- package/dist/api/age-assurance/index.d.ts.map +1 -1
- package/dist/api/age-assurance/kws/age-verified.d.ts +13 -13
- package/dist/api/age-assurance/kws/age-verified.d.ts.map +1 -1
- package/dist/api/age-assurance/kws/external-payload.d.ts +4 -4
- package/dist/api/age-assurance/redirects/kws-age-verified.d.ts.map +1 -1
- package/dist/api/age-assurance/webhooks/kws-age-verified.d.ts.map +1 -1
- 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 +7 -3
- package/dist/api/app/bsky/actor/searchActorsTypeahead.js.map +1 -1
- package/dist/api/app/bsky/bookmark/util.d.ts.map +1 -1
- 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/getListFeed.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getTimeline.d.ts.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/listNotifications.d.ts.map +1 -1
- package/dist/api/app/bsky/notification/util.d.ts.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/external.d.ts.map +1 -1
- package/dist/api/health.d.ts.map +1 -1
- package/dist/api/kws/api.d.ts.map +1 -1
- package/dist/api/kws/index.d.ts.map +1 -1
- package/dist/api/kws/types.d.ts +6 -6
- package/dist/api/kws/util.d.ts +1 -1
- package/dist/api/kws/util.d.ts.map +1 -1
- package/dist/api/kws/webhook.d.ts.map +1 -1
- package/dist/api/sitemap.d.ts.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/api/well-known.d.ts.map +1 -1
- package/dist/auth-verifier.d.ts +2 -2
- package/dist/auth-verifier.d.ts.map +1 -1
- package/dist/bsync.d.ts.map +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 +6 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +5 -0
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js.map +1 -1
- package/dist/courier.d.ts.map +1 -1
- package/dist/data-plane/bsync/index.d.ts.map +1 -1
- package/dist/data-plane/bsync/index.js.map +1 -1
- package/dist/data-plane/client/hosts.d.ts.map +1 -1
- package/dist/data-plane/client/index.d.ts.map +1 -1
- package/dist/data-plane/client/util.d.ts.map +1 -1
- package/dist/data-plane/server/background.d.ts.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 +4 -3
- 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.map +1 -1
- package/dist/data-plane/server/index.js.map +1 -1
- package/dist/data-plane/server/indexing/index.d.ts +78 -78
- 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/chat-declaration.d.ts.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/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/germ-declaration.d.ts.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/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/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-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.d.ts +13 -4
- package/dist/data-plane/server/indexing/plugins/list.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/plugins/notif-declaration.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/plugins/post-gate.d.ts.map +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.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/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/status.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/plugins/thread-gate.d.ts.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/processor.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/processor.js.map +1 -1
- package/dist/data-plane/server/routes/activity-subscription.d.ts.map +1 -1
- package/dist/data-plane/server/routes/blocks.d.ts.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/bookmarks.d.ts.map +1 -1
- package/dist/data-plane/server/routes/drafts.d.ts.map +1 -1
- package/dist/data-plane/server/routes/feed-gens.d.ts.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.d.ts.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/follows.d.ts.map +1 -1
- package/dist/data-plane/server/routes/identity.d.ts.map +1 -1
- package/dist/data-plane/server/routes/index.d.ts.map +1 -1
- package/dist/data-plane/server/routes/interactions.d.ts.map +1 -1
- package/dist/data-plane/server/routes/labels.d.ts.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/likes.d.ts.map +1 -1
- package/dist/data-plane/server/routes/lists.d.ts.map +1 -1
- package/dist/data-plane/server/routes/moderation.d.ts.map +1 -1
- package/dist/data-plane/server/routes/mutes.d.ts.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 +10 -9
- package/dist/data-plane/server/routes/notifs.js.map +1 -1
- package/dist/data-plane/server/routes/profile.d.ts.map +1 -1
- package/dist/data-plane/server/routes/quotes.d.ts.map +1 -1
- package/dist/data-plane/server/routes/records.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/data-plane/server/routes/search.d.ts.map +1 -1
- package/dist/data-plane/server/routes/site-standard.d.ts.map +1 -1
- package/dist/data-plane/server/routes/sitemap.d.ts.map +1 -1
- package/dist/data-plane/server/routes/starter-packs.d.ts.map +1 -1
- package/dist/data-plane/server/routes/suggestions.d.ts.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/routes/sync.d.ts.map +1 -1
- package/dist/data-plane/server/routes/threads.d.ts.map +1 -1
- package/dist/data-plane/server/subscription.d.ts.map +1 -1
- 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/etcd.d.ts.map +1 -1
- package/dist/etcd.js.map +1 -1
- package/dist/feature-gates/index.d.ts.map +1 -1
- package/dist/feature-gates/metrics.d.ts.map +1 -1
- package/dist/feature-gates/metrics.js.map +1 -1
- package/dist/hydration/actor.d.ts.map +1 -1
- package/dist/hydration/actor.js.map +1 -1
- package/dist/hydration/external.d.ts.map +1 -1
- package/dist/hydration/external.js.map +1 -1
- package/dist/hydration/feed.d.ts.map +1 -1
- package/dist/hydration/feed.js.map +1 -1
- package/dist/hydration/graph.d.ts.map +1 -1
- package/dist/hydration/graph.js.map +1 -1
- package/dist/hydration/hydrator.d.ts +1 -1
- package/dist/hydration/hydrator.d.ts.map +1 -1
- package/dist/hydration/hydrator.js.map +1 -1
- package/dist/hydration/label.d.ts.map +1 -1
- package/dist/hydration/label.js.map +1 -1
- package/dist/hydration/util.d.ts.map +1 -1
- package/dist/image/invalidator.d.ts.map +1 -1
- package/dist/image/invalidator.js.map +1 -1
- package/dist/image/logger.d.ts.map +1 -1
- package/dist/image/server.d.ts.map +1 -1
- package/dist/image/server.js.map +1 -1
- package/dist/image/sharp.d.ts +1 -1
- package/dist/image/uri.d.ts.map +1 -1
- package/dist/image/uri.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- 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 +75 -155
- package/dist/lexicons/app/bsky/actor/defs.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/actor/profile.defs.d.ts +100 -300
- package/dist/lexicons/app/bsky/actor/profile.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/actor/status.defs.d.ts +40 -40
- package/dist/lexicons/app/bsky/actor/status.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/draft/defs.defs.d.ts +4 -4
- package/dist/lexicons/app/bsky/draft/defs.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/embed/external.defs.d.ts +10 -10
- package/dist/lexicons/app/bsky/embed/gallery.defs.d.ts +10 -42
- package/dist/lexicons/app/bsky/embed/gallery.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/embed/images.defs.d.ts +10 -10
- package/dist/lexicons/app/bsky/embed/record.defs.d.ts +10 -10
- package/dist/lexicons/app/bsky/embed/recordWithMedia.defs.d.ts +10 -10
- package/dist/lexicons/app/bsky/embed/video.defs.d.ts +50 -162
- package/dist/lexicons/app/bsky/embed/video.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/feed/generator.defs.d.ts +80 -160
- package/dist/lexicons/app/bsky/feed/generator.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/feed/like.defs.d.ts +30 -30
- package/dist/lexicons/app/bsky/feed/like.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/feed/post.defs.d.ts +80 -200
- package/dist/lexicons/app/bsky/feed/post.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/feed/postgate.defs.d.ts +40 -80
- package/dist/lexicons/app/bsky/feed/postgate.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/feed/repost.defs.d.ts +30 -30
- package/dist/lexicons/app/bsky/feed/repost.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/feed/threadgate.defs.d.ts +30 -30
- package/dist/lexicons/app/bsky/feed/threadgate.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/graph/block.defs.d.ts +20 -20
- package/dist/lexicons/app/bsky/graph/block.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/graph/follow.defs.d.ts +30 -30
- package/dist/lexicons/app/bsky/graph/follow.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/graph/list.defs.d.ts +70 -70
- package/dist/lexicons/app/bsky/graph/list.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/graph/listblock.defs.d.ts +20 -20
- package/dist/lexicons/app/bsky/graph/listblock.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/graph/listitem.defs.d.ts +20 -20
- package/dist/lexicons/app/bsky/graph/listitem.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/graph/starterpack.defs.d.ts +50 -90
- package/dist/lexicons/app/bsky/graph/starterpack.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/graph/verification.defs.d.ts +30 -30
- package/dist/lexicons/app/bsky/graph/verification.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/labeler/service.defs.d.ts +60 -140
- package/dist/lexicons/app/bsky/labeler/service.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/notification/declaration.defs.d.ts +10 -10
- package/dist/lexicons/app/bsky/notification/declaration.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/richtext/facet.defs.d.ts +10 -10
- package/dist/lexicons/chat/bsky/actor/declaration.defs.d.ts +20 -20
- package/dist/lexicons/chat/bsky/actor/declaration.defs.d.ts.map +1 -1
- package/dist/lexicons/chat/bsky/convo/defs.defs.d.ts +17 -0
- package/dist/lexicons/chat/bsky/convo/defs.defs.d.ts.map +1 -1
- package/dist/lexicons/chat/bsky/convo/defs.defs.js +11 -0
- package/dist/lexicons/chat/bsky/convo/defs.defs.js.map +1 -1
- package/dist/lexicons/chat/bsky/convo/getUnreadCounts.defs.d.ts +7 -3
- package/dist/lexicons/chat/bsky/convo/getUnreadCounts.defs.d.ts.map +1 -1
- package/dist/lexicons/chat/bsky/convo/getUnreadCounts.defs.js +5 -2
- package/dist/lexicons/chat/bsky/convo/getUnreadCounts.defs.js.map +1 -1
- package/dist/lexicons/chat/bsky/convo/sendMessage.defs.d.ts +1 -1
- package/dist/lexicons/chat/bsky/convo/sendMessage.defs.d.ts.map +1 -1
- package/dist/lexicons/chat/bsky/convo/sendMessage.defs.js +1 -0
- package/dist/lexicons/chat/bsky/convo/sendMessage.defs.js.map +1 -1
- package/dist/lexicons/chat/bsky/convo/sendMessageBatch.defs.d.ts +1 -1
- package/dist/lexicons/chat/bsky/convo/sendMessageBatch.defs.d.ts.map +1 -1
- package/dist/lexicons/chat/bsky/convo/sendMessageBatch.defs.js +1 -0
- package/dist/lexicons/chat/bsky/convo/sendMessageBatch.defs.js.map +1 -1
- package/dist/lexicons/chat/bsky/embed/joinLink.defs.d.ts +10 -42
- package/dist/lexicons/chat/bsky/embed/joinLink.defs.d.ts.map +1 -1
- package/dist/lexicons/com/atproto/lexicon/schema.defs.d.ts +10 -10
- package/dist/lexicons/com/atproto/lexicon/schema.defs.d.ts.map +1 -1
- package/dist/lexicons/com/atproto/repo/strongRef.defs.d.ts +10 -10
- package/dist/lexicons/com/germnetwork/declaration.defs.d.ts +40 -120
- package/dist/lexicons/com/germnetwork/declaration.defs.d.ts.map +1 -1
- package/dist/lexicons/site/standard/document.defs.d.ts +140 -460
- package/dist/lexicons/site/standard/document.defs.d.ts.map +1 -1
- package/dist/lexicons/site/standard/graph/recommend.defs.d.ts +10 -10
- package/dist/lexicons/site/standard/graph/recommend.defs.d.ts.map +1 -1
- package/dist/lexicons/site/standard/graph/subscription.defs.d.ts +20 -60
- package/dist/lexicons/site/standard/graph/subscription.defs.d.ts.map +1 -1
- package/dist/lexicons/site/standard/publication.defs.d.ts +60 -220
- package/dist/lexicons/site/standard/publication.defs.d.ts.map +1 -1
- package/dist/lexicons/site/standard/theme/basic.defs.d.ts +10 -10
- package/dist/lexicons/site/standard/theme/basic.defs.d.ts.map +1 -1
- package/dist/lexicons/tools/ozone/moderation/queryStatuses.defs.d.ts +2 -2
- package/dist/lexicons/tools/ozone/set/querySets.defs.d.ts +2 -2
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/proto/bsky_connect.d.ts.map +1 -1
- package/dist/proto/bsky_pb.d.ts.map +1 -1
- package/dist/proto/bsky_pb.js.map +1 -1
- package/dist/proto/bsync_connect.d.ts.map +1 -1
- package/dist/proto/bsync_pb.d.ts.map +1 -1
- package/dist/proto/bsync_pb.js.map +1 -1
- package/dist/proto/courier_connect.d.ts.map +1 -1
- package/dist/proto/courier_pb.d.ts.map +1 -1
- package/dist/proto/courier_pb.js.map +1 -1
- package/dist/proto/rolodex_connect.d.ts.map +1 -1
- package/dist/proto/rolodex_pb.d.ts.map +1 -1
- package/dist/proto/rolodex_pb.js.map +1 -1
- package/dist/redis.d.ts.map +1 -1
- package/dist/rolodex.d.ts.map +1 -1
- package/dist/stash.d.ts.map +1 -1
- package/dist/stash.js.map +1 -1
- package/dist/util/debug.d.ts.map +1 -1
- package/dist/util/standard-site.d.ts.map +1 -1
- package/dist/util.d.ts.map +1 -1
- package/dist/views/index.d.ts.map +1 -1
- package/dist/views/types.d.ts +1 -1
- package/dist/views/types.d.ts.map +1 -1
- package/dist/views/util.d.ts.map +1 -1
- package/dist/views/util.js.map +1 -1
- package/package.json +17 -18
- package/src/api/app/bsky/actor/searchActors.ts +17 -6
- package/src/api/app/bsky/actor/searchActorsTypeahead.ts +11 -5
- 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/unspecced/getPopularFeedGenerators.ts +9 -2
- package/src/api/util.ts +17 -0
- package/src/config.ts +9 -0
- 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/indexing/plugins/post.ts +5 -4
- 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 -12
- package/src/data-plane/server/routes/relationships.ts +4 -2
- package/src/data-plane/server/routes/suggestions.ts +2 -2
- package/tests/data-plane/subscription.test.ts +18 -16
- package/tsconfig.build.tsbuildinfo +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/db/pagination.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/db/pagination.ts"],"names":[],"mappings":"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"}
|
|
@@ -82,16 +82,16 @@ export class GenericKeyset {
|
|
|
82
82
|
const { limit, cursor, direction = 'desc', tryIndex, nullsLast } = opts;
|
|
83
83
|
const keysetSql = this.getSql(this.unpack(cursor), direction, tryIndex);
|
|
84
84
|
return qb
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
.$if(!!limit, (q) => q.limit(limit))
|
|
86
|
+
.$if(!nullsLast, (q) => q.orderBy(this.primary, direction).orderBy(this.secondary, direction))
|
|
87
|
+
.$if(!!nullsLast, (q) => q
|
|
88
88
|
.orderBy(direction === 'asc'
|
|
89
89
|
? sql `${this.primary} asc nulls last`
|
|
90
90
|
: sql `${this.primary} desc nulls last`)
|
|
91
91
|
.orderBy(direction === 'asc'
|
|
92
92
|
? sql `${this.secondary} asc nulls last`
|
|
93
93
|
: sql `${this.secondary} desc nulls last`))
|
|
94
|
-
|
|
94
|
+
.$if(!!keysetSql, (qb) => (keysetSql ? qb.where(keysetSql) : qb));
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
export class TimeCidKeyset extends GenericKeyset {
|
|
@@ -185,12 +185,12 @@ export class GenericSingleKey {
|
|
|
185
185
|
const { limit, cursor, direction = 'desc', nullsLast } = opts;
|
|
186
186
|
const keySql = this.getSql(this.unpack(cursor), direction);
|
|
187
187
|
return qb
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
188
|
+
.$if(!!limit, (q) => q.limit(limit))
|
|
189
|
+
.$if(!nullsLast, (q) => q.orderBy(this.primary, direction))
|
|
190
|
+
.$if(!!nullsLast, (q) => q.orderBy(direction === 'asc'
|
|
191
191
|
? sql `${this.primary} asc nulls last`
|
|
192
192
|
: sql `${this.primary} desc nulls last`))
|
|
193
|
-
|
|
193
|
+
.$if(!!keySql, (qb) => (keySql ? qb.where(keySql) : qb));
|
|
194
194
|
}
|
|
195
195
|
}
|
|
196
196
|
export class IsoTimeKey extends GenericSingleKey {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../../../src/data-plane/server/db/pagination.ts"],"names":[],"mappings":"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","sourcesContent":["import { sql } from 'kysely'\nimport { ensureValidRecordKey } from '@atproto/syntax'\nimport { InvalidRequestError } from '@atproto/xrpc-server'\nimport { AnyQb, DbRef } from './util.js'\n\ntype KeysetCursor = { primary: string; secondary: string }\ntype KeysetLabeledResult = {\n primary: string | number\n secondary: string | number\n}\n\n/**\n * The GenericKeyset is an abstract class that sets-up the interface and partial implementation\n * of a keyset-paginated cursor with two parts. There are three types involved:\n * - Result: a raw result (i.e. a row from the db) containing data that will make-up a cursor.\n * - E.g. { createdAt: '2022-01-01T12:00:00Z', cid: 'bafyx' }\n * - LabeledResult: a Result processed such that the \"primary\" and \"secondary\" parts of the cursor are labeled.\n * - E.g. { primary: '2022-01-01T12:00:00Z', secondary: 'bafyx' }\n * - Cursor: the two string parts that make-up the packed/string cursor.\n * - E.g. packed cursor '1641038400000__bafyx' in parts { primary: '1641038400000', secondary: 'bafyx' }\n *\n * These types relate as such. Implementers define the relations marked with a *:\n * Result -*-> LabeledResult <-*-> Cursor <--> packed/string cursor\n * ↳ SQL Condition\n */\nexport abstract class GenericKeyset<R, LR extends KeysetLabeledResult> {\n constructor(\n public primary: DbRef,\n public secondary: DbRef,\n ) {}\n abstract labelResult(result: R): LR\n abstract labeledResultToCursor(labeled: LR): KeysetCursor\n abstract cursorToLabeledResult(cursor: KeysetCursor): LR\n packFromResult(results: R | R[]): string | undefined {\n const result = Array.isArray(results) ? results.at(-1) : results\n if (!result) return\n return this.pack(this.labelResult(result))\n }\n pack(labeled?: LR): string | undefined {\n if (!labeled) return\n const cursor = this.labeledResultToCursor(labeled)\n return this.packCursor(cursor)\n }\n unpack(cursorStr?: string): LR | undefined {\n const cursor = this.unpackCursor(cursorStr)\n if (!cursor) return\n return this.cursorToLabeledResult(cursor)\n }\n packCursor(cursor?: KeysetCursor): string | undefined {\n if (!cursor) return\n return `${cursor.primary}__${cursor.secondary}`\n }\n unpackCursor(cursorStr?: string): KeysetCursor | undefined {\n if (!cursorStr) return\n const result = cursorStr.split('__')\n const [primary, secondary, ...others] = result\n if (!primary || !secondary || others.length > 0) {\n throw new InvalidRequestError('Malformed cursor')\n }\n return {\n primary,\n secondary,\n }\n }\n getSql(labeled?: LR, direction?: 'asc' | 'desc', tryIndex?: boolean) {\n if (labeled === undefined) return\n if (tryIndex) {\n // The tryIndex param will likely disappear and become the default implementation: here for now for gradual rollout query-by-query.\n if (direction === 'asc') {\n return sql`((${this.primary}, ${this.secondary}) > (${labeled.primary}, ${labeled.secondary}))`\n } else {\n return sql`((${this.primary}, ${this.secondary}) < (${labeled.primary}, ${labeled.secondary}))`\n }\n } else {\n // @NOTE this implementation can struggle to use an index on (primary, secondary) for pagination due to the \"or\" usage.\n if (direction === 'asc') {\n return sql`((${this.primary} > ${labeled.primary}) or (${this.primary} = ${labeled.primary} and ${this.secondary} > ${labeled.secondary}))`\n } else {\n return sql`((${this.primary} < ${labeled.primary}) or (${this.primary} = ${labeled.primary} and ${this.secondary} < ${labeled.secondary}))`\n }\n }\n }\n paginate<QB extends AnyQb>(\n qb: QB,\n opts: {\n limit?: number\n cursor?: string\n direction?: 'asc' | 'desc'\n tryIndex?: boolean\n // By default, pg does nullsFirst\n nullsLast?: boolean\n },\n ): QB {\n const { limit, cursor, direction = 'desc', tryIndex, nullsLast } = opts\n const keysetSql = this.getSql(this.unpack(cursor), direction, tryIndex)\n return qb\n .if(!!limit, (q) => q.limit(limit as number))\n .if(!nullsLast, (q) =>\n q.orderBy(this.primary, direction).orderBy(this.secondary, direction),\n )\n .if(!!nullsLast, (q) =>\n q\n .orderBy(\n direction === 'asc'\n ? sql`${this.primary} asc nulls last`\n : sql`${this.primary} desc nulls last`,\n )\n .orderBy(\n direction === 'asc'\n ? sql`${this.secondary} asc nulls last`\n : sql`${this.secondary} desc nulls last`,\n ),\n )\n .if(!!keysetSql, (qb) => (keysetSql ? qb.where(keysetSql) : qb)) as QB\n }\n}\n\ntype SortAtCidResult = { sortAt: string; cid: string }\ntype TimeCidLabeledResult = KeysetCursor\n\nexport class TimeCidKeyset<\n TimeCidResult = SortAtCidResult,\n> extends GenericKeyset<TimeCidResult, TimeCidLabeledResult> {\n labelResult(result: TimeCidResult): TimeCidLabeledResult\n labelResult<TimeCidResult extends SortAtCidResult>(result: TimeCidResult) {\n return { primary: result.sortAt, secondary: result.cid }\n }\n labeledResultToCursor(labeled: TimeCidLabeledResult) {\n return {\n primary: new Date(labeled.primary).getTime().toString(),\n secondary: labeled.secondary,\n }\n }\n cursorToLabeledResult(cursor: KeysetCursor) {\n const primaryDate = new Date(parseInt(cursor.primary, 10))\n if (isNaN(primaryDate.getTime())) {\n throw new InvalidRequestError('Malformed cursor')\n }\n return {\n primary: primaryDate.toISOString(),\n secondary: cursor.secondary,\n }\n }\n}\n\nexport class CreatedAtDidKeyset extends TimeCidKeyset<{\n createdAt: string\n did: string // dids are treated identically to cids in TimeCidKeyset\n}> {\n labelResult(result: { createdAt: string; did: string }) {\n return { primary: result.createdAt, secondary: result.did }\n }\n}\n\nexport class IndexedAtDidKeyset extends TimeCidKeyset<{\n indexedAt: string\n did: string // dids are treated identically to cids in TimeCidKeyset\n}> {\n labelResult(result: { indexedAt: string; did: string }) {\n return { primary: result.indexedAt, secondary: result.did }\n }\n}\n\n/**\n * This is being deprecated. Use {@link GenericKeyset#paginate} instead.\n */\nexport const paginate = <\n QB extends AnyQb,\n K extends GenericKeyset<unknown, any>,\n>(\n qb: QB,\n opts: {\n limit?: number\n cursor?: string\n direction?: 'asc' | 'desc'\n keyset: K\n tryIndex?: boolean\n // By default, pg does nullsFirst\n nullsLast?: boolean\n },\n): QB => {\n return opts.keyset.paginate(qb, opts)\n}\n\ntype SingleKeyCursor = {\n primary: string\n}\n\ntype SingleKeyLabeledResult = {\n primary: string | number\n}\n\n/**\n * GenericSingleKey is similar to {@link GenericKeyset} but for a single key cursor.\n */\nexport abstract class GenericSingleKey<R, LR extends SingleKeyLabeledResult> {\n constructor(public primary: DbRef) {}\n abstract labelResult(result: R): LR\n abstract labeledResultToCursor(labeled: LR): SingleKeyCursor\n abstract cursorToLabeledResult(cursor: SingleKeyCursor): LR\n packFromResult(results: R | R[]): string | undefined {\n const result = Array.isArray(results) ? results.at(-1) : results\n if (!result) return\n return this.pack(this.labelResult(result))\n }\n pack(labeled?: LR): string | undefined {\n if (!labeled) return\n const cursor = this.labeledResultToCursor(labeled)\n return this.packCursor(cursor)\n }\n unpack(cursorStr?: string): LR | undefined {\n const cursor = this.unpackCursor(cursorStr)\n if (!cursor) return\n return this.cursorToLabeledResult(cursor)\n }\n packCursor(cursor?: SingleKeyCursor): string | undefined {\n if (!cursor) return\n return cursor.primary\n }\n unpackCursor(cursorStr?: string): SingleKeyCursor | undefined {\n if (!cursorStr) return\n const result = cursorStr.split('__')\n const [primary, ...others] = result\n if (!primary || others.length > 0) {\n throw new InvalidRequestError('Malformed cursor')\n }\n return {\n primary,\n }\n }\n getSql(labeled?: LR, direction?: 'asc' | 'desc') {\n if (labeled === undefined) return\n if (direction === 'asc') {\n return sql`${this.primary} > ${labeled.primary}`\n }\n return sql`${this.primary} < ${labeled.primary}`\n }\n paginate<QB extends AnyQb>(\n qb: QB,\n opts: {\n limit?: number\n cursor?: string\n direction?: 'asc' | 'desc'\n // By default, pg does nullsFirst\n nullsLast?: boolean\n },\n ): QB {\n const { limit, cursor, direction = 'desc', nullsLast } = opts\n const keySql = this.getSql(this.unpack(cursor), direction)\n return qb\n .if(!!limit, (q) => q.limit(limit as number))\n .if(!nullsLast, (q) => q.orderBy(this.primary, direction))\n .if(!!nullsLast, (q) =>\n q.orderBy(\n direction === 'asc'\n ? sql`${this.primary} asc nulls last`\n : sql`${this.primary} desc nulls last`,\n ),\n )\n .if(!!keySql, (qb) => (keySql ? qb.where(keySql) : qb)) as QB\n }\n}\n\ntype SortAtResult = { sortAt: string }\ntype TimeLabeledResult = SingleKeyCursor\n\nexport class IsoTimeKey<TimeResult = SortAtResult> extends GenericSingleKey<\n TimeResult,\n TimeLabeledResult\n> {\n labelResult(result: TimeResult): TimeLabeledResult\n labelResult<TimeResult extends SortAtResult>(result: TimeResult) {\n return { primary: result.sortAt }\n }\n labeledResultToCursor(labeled: TimeLabeledResult) {\n return {\n primary: new Date(labeled.primary).toISOString(),\n }\n }\n cursorToLabeledResult(cursor: SingleKeyCursor) {\n const primaryDate = new Date(cursor.primary)\n if (isNaN(primaryDate.getTime())) {\n throw new InvalidRequestError('Malformed cursor')\n }\n return {\n primary: primaryDate.toISOString(),\n }\n }\n}\n\nexport class IsoSortAtKey extends IsoTimeKey<{\n sortAt: string\n}> {\n labelResult(result: { sortAt: string }) {\n return { primary: result.sortAt }\n }\n}\n\nexport class IsoUpdatedAtKey extends IsoTimeKey<{\n updatedAt: string\n}> {\n labelResult(result: { updatedAt: string }) {\n return { primary: result.updatedAt }\n }\n}\n\ntype KeyResult = { key: string }\ntype RkeyLabeledResult = SingleKeyCursor\n\nexport class RkeyKey<RkeyResult = KeyResult> extends GenericSingleKey<\n RkeyResult,\n RkeyLabeledResult\n> {\n labelResult(result: RkeyResult): RkeyLabeledResult\n labelResult<RkeyResult extends KeyResult>(result: RkeyResult) {\n return { primary: result }\n }\n labeledResultToCursor(labeled: RkeyLabeledResult) {\n return {\n primary: labeled.primary,\n }\n }\n cursorToLabeledResult(cursor: SingleKeyCursor) {\n try {\n ensureValidRecordKey(cursor.primary)\n return {\n primary: cursor.primary,\n }\n } catch {\n throw new InvalidRequestError('Malformed cursor')\n }\n }\n}\n\nexport class StashKeyKey extends RkeyKey<{\n key: string\n}> {\n labelResult(result: { key: string }) {\n return { primary: result.key }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../../../src/data-plane/server/db/pagination.ts"],"names":[],"mappings":"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","sourcesContent":["import { SqlBool, sql } from 'kysely'\nimport { ensureValidRecordKey } from '@atproto/syntax'\nimport { InvalidRequestError } from '@atproto/xrpc-server'\nimport { AnyQb, DbRef } from './util.js'\n\ntype KeysetCursor = { primary: string; secondary: string }\ntype KeysetLabeledResult = {\n primary: string | number\n secondary: string | number\n}\n\n/**\n * The GenericKeyset is an abstract class that sets-up the interface and partial implementation\n * of a keyset-paginated cursor with two parts. There are three types involved:\n * - Result: a raw result (i.e. a row from the db) containing data that will make-up a cursor.\n * - E.g. { createdAt: '2022-01-01T12:00:00Z', cid: 'bafyx' }\n * - LabeledResult: a Result processed such that the \"primary\" and \"secondary\" parts of the cursor are labeled.\n * - E.g. { primary: '2022-01-01T12:00:00Z', secondary: 'bafyx' }\n * - Cursor: the two string parts that make-up the packed/string cursor.\n * - E.g. packed cursor '1641038400000__bafyx' in parts { primary: '1641038400000', secondary: 'bafyx' }\n *\n * These types relate as such. Implementers define the relations marked with a *:\n * Result -*-> LabeledResult <-*-> Cursor <--> packed/string cursor\n * ↳ SQL Condition\n */\nexport abstract class GenericKeyset<R, LR extends KeysetLabeledResult> {\n constructor(\n public primary: DbRef,\n public secondary: DbRef,\n ) {}\n abstract labelResult(result: R): LR\n abstract labeledResultToCursor(labeled: LR): KeysetCursor\n abstract cursorToLabeledResult(cursor: KeysetCursor): LR\n packFromResult(results: R | R[]): string | undefined {\n const result = Array.isArray(results) ? results.at(-1) : results\n if (!result) return\n return this.pack(this.labelResult(result))\n }\n pack(labeled?: LR): string | undefined {\n if (!labeled) return\n const cursor = this.labeledResultToCursor(labeled)\n return this.packCursor(cursor)\n }\n unpack(cursorStr?: string): LR | undefined {\n const cursor = this.unpackCursor(cursorStr)\n if (!cursor) return\n return this.cursorToLabeledResult(cursor)\n }\n packCursor(cursor?: KeysetCursor): string | undefined {\n if (!cursor) return\n return `${cursor.primary}__${cursor.secondary}`\n }\n unpackCursor(cursorStr?: string): KeysetCursor | undefined {\n if (!cursorStr) return\n const result = cursorStr.split('__')\n const [primary, secondary, ...others] = result\n if (!primary || !secondary || others.length > 0) {\n throw new InvalidRequestError('Malformed cursor')\n }\n return {\n primary,\n secondary,\n }\n }\n getSql(labeled?: LR, direction?: 'asc' | 'desc', tryIndex?: boolean) {\n if (labeled === undefined) return\n if (tryIndex) {\n // The tryIndex param will likely disappear and become the default implementation: here for now for gradual rollout query-by-query.\n if (direction === 'asc') {\n return sql<SqlBool>`((${this.primary}, ${this.secondary}) > (${labeled.primary}, ${labeled.secondary}))`\n } else {\n return sql<SqlBool>`((${this.primary}, ${this.secondary}) < (${labeled.primary}, ${labeled.secondary}))`\n }\n } else {\n // @NOTE this implementation can struggle to use an index on (primary, secondary) for pagination due to the \"or\" usage.\n if (direction === 'asc') {\n return sql<SqlBool>`((${this.primary} > ${labeled.primary}) or (${this.primary} = ${labeled.primary} and ${this.secondary} > ${labeled.secondary}))`\n } else {\n return sql<SqlBool>`((${this.primary} < ${labeled.primary}) or (${this.primary} = ${labeled.primary} and ${this.secondary} < ${labeled.secondary}))`\n }\n }\n }\n paginate<QB extends AnyQb>(\n qb: QB,\n opts: {\n limit?: number\n cursor?: string\n direction?: 'asc' | 'desc'\n tryIndex?: boolean\n // By default, pg does nullsFirst\n nullsLast?: boolean\n },\n ): QB {\n const { limit, cursor, direction = 'desc', tryIndex, nullsLast } = opts\n const keysetSql = this.getSql(this.unpack(cursor), direction, tryIndex)\n return qb\n .$if(!!limit, (q) => q.limit(limit as number))\n .$if(!nullsLast, (q) =>\n q.orderBy(this.primary, direction).orderBy(this.secondary, direction),\n )\n .$if(!!nullsLast, (q) =>\n q\n .orderBy(\n direction === 'asc'\n ? sql`${this.primary} asc nulls last`\n : sql`${this.primary} desc nulls last`,\n )\n .orderBy(\n direction === 'asc'\n ? sql`${this.secondary} asc nulls last`\n : sql`${this.secondary} desc nulls last`,\n ),\n )\n .$if(!!keysetSql, (qb) => (keysetSql ? qb.where(keysetSql) : qb)) as QB\n }\n}\n\ntype SortAtCidResult = { sortAt: string; cid: string }\ntype TimeCidLabeledResult = KeysetCursor\n\nexport class TimeCidKeyset<\n TimeCidResult = SortAtCidResult,\n> extends GenericKeyset<TimeCidResult, TimeCidLabeledResult> {\n labelResult(result: TimeCidResult): TimeCidLabeledResult\n labelResult<TimeCidResult extends SortAtCidResult>(result: TimeCidResult) {\n return { primary: result.sortAt, secondary: result.cid }\n }\n labeledResultToCursor(labeled: TimeCidLabeledResult) {\n return {\n primary: new Date(labeled.primary).getTime().toString(),\n secondary: labeled.secondary,\n }\n }\n cursorToLabeledResult(cursor: KeysetCursor) {\n const primaryDate = new Date(parseInt(cursor.primary, 10))\n if (isNaN(primaryDate.getTime())) {\n throw new InvalidRequestError('Malformed cursor')\n }\n return {\n primary: primaryDate.toISOString(),\n secondary: cursor.secondary,\n }\n }\n}\n\nexport class CreatedAtDidKeyset extends TimeCidKeyset<{\n createdAt: string\n did: string // dids are treated identically to cids in TimeCidKeyset\n}> {\n labelResult(result: { createdAt: string; did: string }) {\n return { primary: result.createdAt, secondary: result.did }\n }\n}\n\nexport class IndexedAtDidKeyset extends TimeCidKeyset<{\n indexedAt: string\n did: string // dids are treated identically to cids in TimeCidKeyset\n}> {\n labelResult(result: { indexedAt: string; did: string }) {\n return { primary: result.indexedAt, secondary: result.did }\n }\n}\n\n/**\n * This is being deprecated. Use {@link GenericKeyset#paginate} instead.\n */\nexport const paginate = <\n QB extends AnyQb,\n K extends GenericKeyset<unknown, any>,\n>(\n qb: QB,\n opts: {\n limit?: number\n cursor?: string\n direction?: 'asc' | 'desc'\n keyset: K\n tryIndex?: boolean\n // By default, pg does nullsFirst\n nullsLast?: boolean\n },\n): QB => {\n return opts.keyset.paginate(qb, opts)\n}\n\ntype SingleKeyCursor = {\n primary: string\n}\n\ntype SingleKeyLabeledResult = {\n primary: string | number\n}\n\n/**\n * GenericSingleKey is similar to {@link GenericKeyset} but for a single key cursor.\n */\nexport abstract class GenericSingleKey<R, LR extends SingleKeyLabeledResult> {\n constructor(public primary: DbRef) {}\n abstract labelResult(result: R): LR\n abstract labeledResultToCursor(labeled: LR): SingleKeyCursor\n abstract cursorToLabeledResult(cursor: SingleKeyCursor): LR\n packFromResult(results: R | R[]): string | undefined {\n const result = Array.isArray(results) ? results.at(-1) : results\n if (!result) return\n return this.pack(this.labelResult(result))\n }\n pack(labeled?: LR): string | undefined {\n if (!labeled) return\n const cursor = this.labeledResultToCursor(labeled)\n return this.packCursor(cursor)\n }\n unpack(cursorStr?: string): LR | undefined {\n const cursor = this.unpackCursor(cursorStr)\n if (!cursor) return\n return this.cursorToLabeledResult(cursor)\n }\n packCursor(cursor?: SingleKeyCursor): string | undefined {\n if (!cursor) return\n return cursor.primary\n }\n unpackCursor(cursorStr?: string): SingleKeyCursor | undefined {\n if (!cursorStr) return\n const result = cursorStr.split('__')\n const [primary, ...others] = result\n if (!primary || others.length > 0) {\n throw new InvalidRequestError('Malformed cursor')\n }\n return {\n primary,\n }\n }\n getSql(labeled?: LR, direction?: 'asc' | 'desc') {\n if (labeled === undefined) return\n if (direction === 'asc') {\n return sql<SqlBool>`${this.primary} > ${labeled.primary}`\n }\n return sql<SqlBool>`${this.primary} < ${labeled.primary}`\n }\n paginate<QB extends AnyQb>(\n qb: QB,\n opts: {\n limit?: number\n cursor?: string\n direction?: 'asc' | 'desc'\n // By default, pg does nullsFirst\n nullsLast?: boolean\n },\n ): QB {\n const { limit, cursor, direction = 'desc', nullsLast } = opts\n const keySql = this.getSql(this.unpack(cursor), direction)\n return qb\n .$if(!!limit, (q) => q.limit(limit as number))\n .$if(!nullsLast, (q) => q.orderBy(this.primary, direction))\n .$if(!!nullsLast, (q) =>\n q.orderBy(\n direction === 'asc'\n ? sql`${this.primary} asc nulls last`\n : sql`${this.primary} desc nulls last`,\n ),\n )\n .$if(!!keySql, (qb) => (keySql ? qb.where(keySql) : qb)) as QB\n }\n}\n\ntype SortAtResult = { sortAt: string }\ntype TimeLabeledResult = SingleKeyCursor\n\nexport class IsoTimeKey<TimeResult = SortAtResult> extends GenericSingleKey<\n TimeResult,\n TimeLabeledResult\n> {\n labelResult(result: TimeResult): TimeLabeledResult\n labelResult<TimeResult extends SortAtResult>(result: TimeResult) {\n return { primary: result.sortAt }\n }\n labeledResultToCursor(labeled: TimeLabeledResult) {\n return {\n primary: new Date(labeled.primary).toISOString(),\n }\n }\n cursorToLabeledResult(cursor: SingleKeyCursor) {\n const primaryDate = new Date(cursor.primary)\n if (isNaN(primaryDate.getTime())) {\n throw new InvalidRequestError('Malformed cursor')\n }\n return {\n primary: primaryDate.toISOString(),\n }\n }\n}\n\nexport class IsoSortAtKey extends IsoTimeKey<{\n sortAt: string\n}> {\n labelResult(result: { sortAt: string }) {\n return { primary: result.sortAt }\n }\n}\n\nexport class IsoUpdatedAtKey extends IsoTimeKey<{\n updatedAt: string\n}> {\n labelResult(result: { updatedAt: string }) {\n return { primary: result.updatedAt }\n }\n}\n\ntype KeyResult = { key: string }\ntype RkeyLabeledResult = SingleKeyCursor\n\nexport class RkeyKey<RkeyResult = KeyResult> extends GenericSingleKey<\n RkeyResult,\n RkeyLabeledResult\n> {\n labelResult(result: RkeyResult): RkeyLabeledResult\n labelResult<RkeyResult extends KeyResult>(result: RkeyResult) {\n return { primary: result }\n }\n labeledResultToCursor(labeled: RkeyLabeledResult) {\n return {\n primary: labeled.primary,\n }\n }\n cursorToLabeledResult(cursor: SingleKeyCursor) {\n try {\n ensureValidRecordKey(cursor.primary)\n return {\n primary: cursor.primary,\n }\n } catch {\n throw new InvalidRequestError('Malformed cursor')\n }\n }\n}\n\nexport class StashKeyKey extends RkeyKey<{\n key: string\n}> {\n labelResult(result: { key: string }) {\n return { primary: result.key }\n }\n}\n"]}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { DummyDriver, DynamicModule, ExpressionBuilder, RawBuilder, SelectQueryBuilder, SqliteAdapter, SqliteIntrospector, SqliteQueryCompiler } from 'kysely';
|
|
1
|
+
import { DummyDriver, DynamicModule, ExpressionBuilder, RawBuilder, SelectQueryBuilder, SqlBool, SqliteAdapter, SqliteIntrospector, SqliteQueryCompiler } from 'kysely';
|
|
2
2
|
import { DatabaseSchema, DatabaseSchemaType } from './database-schema.js';
|
|
3
3
|
export declare const actorWhereClause: (actor: string) => RawBuilder<0 | 1>;
|
|
4
|
-
export declare const notSoftDeletedClause: (alias: DbRef) => RawBuilder<
|
|
4
|
+
export declare const notSoftDeletedClause: (alias: DbRef) => RawBuilder<SqlBool>;
|
|
5
5
|
export declare const softDeleted: (actorOrRecord: {
|
|
6
6
|
takedownRef: string | null;
|
|
7
7
|
}) => boolean;
|
|
8
8
|
export declare const countAll: RawBuilder<number>;
|
|
9
9
|
export declare const excluded: <T>(db: DatabaseSchema, col: any) => RawBuilder<T>;
|
|
10
|
-
export declare const noMatch: RawBuilder<
|
|
11
|
-
export declare const valuesList: (vals: unknown[]) => RawBuilder<
|
|
10
|
+
export declare const noMatch: RawBuilder<SqlBool>;
|
|
11
|
+
export declare const valuesList: <T = unknown>(vals: unknown[]) => RawBuilder<T>;
|
|
12
12
|
export declare const dummyDialect: {
|
|
13
13
|
createAdapter(): SqliteAdapter;
|
|
14
14
|
createDriver(): DummyDriver;
|
|
15
15
|
createIntrospector(db: any): SqliteIntrospector;
|
|
16
16
|
createQueryCompiler(): SqliteQueryCompiler;
|
|
17
17
|
};
|
|
18
|
-
export type DbRef = RawBuilder | ReturnType<DynamicModule['ref']>;
|
|
18
|
+
export type DbRef = RawBuilder<unknown> | ReturnType<DynamicModule<unknown>['ref']>;
|
|
19
19
|
export type Subquery = ExpressionBuilder<DatabaseSchemaType, any>;
|
|
20
20
|
export type AnyQb = SelectQueryBuilder<any, any, any>;
|
|
21
21
|
//# sourceMappingURL=util.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/db/util.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,UAAU,EACV,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EAEpB,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAEzE,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/db/util.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,UAAU,EACV,kBAAkB,EAClB,OAAO,EACP,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EAEpB,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAEzE,eAAO,MAAM,gBAAgB,UAAW,MAAM,sBAM7C,CAAA;AAGD,eAAO,MAAM,oBAAoB,UAAW,KAAK,wBAEhD,CAAA;AAED,eAAO,MAAM,WAAW,kBAAmB;IAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,YAExE,CAAA;AAED,eAAO,MAAM,QAAQ,oBAAwB,CAAA;AAG7C,eAAO,MAAM,QAAQ,GAAI,CAAC,MAAM,cAAc,4BAE7C,CAAA;AAED,eAAO,MAAM,OAAO,qBAAsB,CAAA;AAG1C,eAAO,MAAM,UAAU,GAAI,CAAC,GAAG,OAAO,QAAQ,OAAO,EAAE,kBAEtD,CAAA;AAED,eAAO,MAAM,YAAY;;;;;CAaxB,CAAA;AAED,MAAM,MAAM,KAAK,GACb,UAAU,CAAC,OAAO,CAAC,GACnB,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;AAE7C,MAAM,MAAM,QAAQ,GAAG,iBAAiB,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAA;AAEjE,MAAM,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/data-plane/server/db/util.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/data-plane/server/db/util.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAMX,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,GAAG,GACJ,MAAM,QAAQ,CAAA;AAGf,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAa,EAAE,EAAE;IAChD,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO,GAAG,CAAO,mBAAmB,KAAK,EAAE,CAAA;IAC7C,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,CAAO,sBAAsB,KAAK,EAAE,CAAA;IAChD,CAAC;AACH,CAAC,CAAA;AAED,mCAAmC;AACnC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAY,EAAE,EAAE;IACnD,OAAO,GAAG,CAAS,GAAG,KAAK,wBAAwB,CAAA;AACrD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,aAA6C,EAAE,EAAE;IAC3E,OAAO,aAAa,CAAC,WAAW,KAAK,IAAI,CAAA;AAC3C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAQ,UAAU,CAAA;AAE7C,6BAA6B;AAC7B,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAI,EAAkB,EAAE,GAAG,EAAE,EAAE;IACrD,OAAO,GAAG,CAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,EAAE,CAAC,EAAE,CAAA;AACrD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAS,OAAO,CAAA;AAE1C,2FAA2F;AAC3F,MAAM,CAAC,MAAM,UAAU,GAAG,CAAc,IAAe,EAAE,EAAE;IACzD,OAAO,GAAG,CAAG,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAA,MAAM,CAAC,IAAI,CAAA;AACxD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,aAAa;QACX,OAAO,IAAI,aAAa,EAAE,CAAA;IAC5B,CAAC;IACD,YAAY;QACV,OAAO,IAAI,WAAW,EAAE,CAAA;IAC1B,CAAC;IACD,kBAAkB,CAAC,EAAE;QACnB,OAAO,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAA;IACnC,CAAC;IACD,mBAAmB;QACjB,OAAO,IAAI,mBAAmB,EAAE,CAAA;IAClC,CAAC;CACF,CAAA","sourcesContent":["import {\n DummyDriver,\n DynamicModule,\n ExpressionBuilder,\n RawBuilder,\n SelectQueryBuilder,\n SqlBool,\n SqliteAdapter,\n SqliteIntrospector,\n SqliteQueryCompiler,\n sql,\n} from 'kysely'\nimport { DatabaseSchema, DatabaseSchemaType } from './database-schema.js'\n\nexport const actorWhereClause = (actor: string) => {\n if (actor.startsWith('did:')) {\n return sql<0 | 1>`\"actor\".\"did\" = ${actor}`\n } else {\n return sql<0 | 1>`\"actor\".\"handle\" = ${actor}`\n }\n}\n\n// Applies to actor or record table\nexport const notSoftDeletedClause = (alias: DbRef) => {\n return sql<SqlBool>`${alias}.\"takedownRef\" is null`\n}\n\nexport const softDeleted = (actorOrRecord: { takedownRef: string | null }) => {\n return actorOrRecord.takedownRef !== null\n}\n\nexport const countAll = sql<number>`count(*)`\n\n// For use with doUpdateSet()\nexport const excluded = <T>(db: DatabaseSchema, col) => {\n return sql<T>`${db.dynamic.ref(`excluded.${col}`)}`\n}\n\nexport const noMatch = sql<SqlBool>`1 = 0`\n\n// Can be useful for large where-in clauses, to get the db to use a hash lookup on the list\nexport const valuesList = <T = unknown>(vals: unknown[]) => {\n return sql<T>`(values (${sql.join(vals, sql`), (`)}))`\n}\n\nexport const dummyDialect = {\n createAdapter() {\n return new SqliteAdapter()\n },\n createDriver() {\n return new DummyDriver()\n },\n createIntrospector(db) {\n return new SqliteIntrospector(db)\n },\n createQueryCompiler() {\n return new SqliteQueryCompiler()\n },\n}\n\nexport type DbRef =\n | RawBuilder<unknown>\n | ReturnType<DynamicModule<unknown>['ref']>\n\nexport type Subquery = ExpressionBuilder<DatabaseSchemaType, any>\n\nexport type AnyQb = SelectQueryBuilder<any, any, any>\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data-plane/server/index.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,WAAW,CAAA;AAG5B,OAAO,EAAE,UAAU,EAAe,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAGxD,YAAY,EAAE,cAAc,EAAE,CAAA;AAE9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,qBAAa,eAAe;IAEjB,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,UAAU,EAAE,UAAU;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data-plane/server/index.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,WAAW,CAAA;AAG5B,OAAO,EAAE,UAAU,EAAe,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAGxD,YAAY,EAAE,cAAc,EAAE,CAAA;AAE9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,qBAAa,eAAe;IAEjB,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,UAAU,EAAE,UAAU;IAF/B,YACS,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,UAAU,EAAE,UAAU,EAC3B;IAEJ,OAAa,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,4BAS9D;IAEK,OAAO,kBAUZ;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/data-plane/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAA;AAEhC,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAA;AACtE,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE3D,OAAO,YAAY,MAAM,mBAAmB,CAAA;AAI5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,MAAM,OAAO,eAAe;IAC1B,YACS,MAAmB,EACnB,UAAsB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/data-plane/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAA;AAEhC,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAA;AACtE,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE3D,OAAO,YAAY,MAAM,mBAAmB,CAAA;AAI5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,MAAM,OAAO,eAAe;IAC1B,YACS,MAAmB,EACnB,UAAsB;sBADtB,MAAM;0BACN,UAAU;IAChB,CAAC;IAEJ,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAY,EAAE,IAAY,EAAE,MAAe;QAC7D,MAAM,GAAG,GAAG,OAAO,EAAE,CAAA;QACrB,MAAM,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAA;QAClC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;QACvD,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;QAC3C,GAAG,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;QAC7C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC/B,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;QACtC,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAChD,CAAC;IAED,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACxB,IAAI,GAAG,EAAE,CAAC;oBACR,MAAM,CAAC,GAAG,CAAC,CAAA;gBACb,CAAC;qBAAM,CAAC;oBACN,OAAO,EAAE,CAAA;gBACX,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;CACF","sourcesContent":["import events from 'node:events'\nimport http from 'node:http'\nimport { expressConnectMiddleware } from '@connectrpc/connect-express'\nimport express from 'express'\nimport { IdResolver, MemoryCache } from '@atproto/identity'\nimport { Database, DatabaseSchema } from './db/index.js'\nimport createRoutes from './routes/index.js'\n\nexport type { DatabaseSchema }\n\nexport { RepoSubscription } from './subscription.js'\n\nexport class DataPlaneServer {\n constructor(\n public server: http.Server,\n public idResolver: IdResolver,\n ) {}\n\n static async create(db: Database, port: number, plcUrl?: string) {\n const app = express()\n const didCache = new MemoryCache()\n const idResolver = new IdResolver({ plcUrl, didCache })\n const routes = createRoutes(db, idResolver)\n app.use(expressConnectMiddleware({ routes }))\n const server = app.listen(port)\n await events.once(server, 'listening')\n return new DataPlaneServer(server, idResolver)\n }\n\n async destroy() {\n return new Promise<void>((resolve, reject) => {\n this.server.close((err) => {\n if (err) {\n reject(err)\n } else {\n resolve()\n }\n })\n })\n }\n}\n"]}
|
|
@@ -63,104 +63,59 @@ export declare class IndexingService {
|
|
|
63
63
|
cid: Cid;
|
|
64
64
|
}>>;
|
|
65
65
|
setCommitLastSeen(did: string, commit: Cid, rev: string): Promise<void>;
|
|
66
|
-
findIndexerForCollection(collection: string): import("./processor.js").RecordProcessor<l.RecordSchema<"
|
|
67
|
-
|
|
66
|
+
findIndexerForCollection(collection: string): import("./processor.js").RecordProcessor<l.RecordSchema<"any", "app.bsky.feed.generator", l.Validator<Omit<import("../../../lexicons/app/bsky/feed/generator.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/feed/generator.defs.js").Main, "$type">>>, {
|
|
67
|
+
avatarCid: string | null;
|
|
68
68
|
cid: string;
|
|
69
|
-
indexedAt: string;
|
|
70
|
-
creator: string;
|
|
71
69
|
createdAt: string;
|
|
72
|
-
sortAt: string;
|
|
73
|
-
subjectDid: string;
|
|
74
|
-
}> | import("./processor.js").RecordProcessor<l.RecordSchema<"literal:self", "chat.bsky.actor.declaration", l.Validator<Omit<import("../../../lexicons/chat/bsky/actor/declaration.defs.js").Main, "$type">, Omit<import("../../../lexicons/chat/bsky/actor/declaration.defs.js").Main, "$type">>>, unknown> | import("./processor.js").RecordProcessor<l.RecordSchema<"any", "app.bsky.feed.generator", l.Validator<Omit<import("../../../lexicons/app/bsky/feed/generator.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/feed/generator.defs.js").Main, "$type">>>, {
|
|
75
|
-
uri: string;
|
|
76
|
-
cid: string;
|
|
77
|
-
indexedAt: string;
|
|
78
70
|
creator: string;
|
|
79
|
-
displayName: string;
|
|
80
71
|
description: string | null;
|
|
81
|
-
avatarCid: string | null;
|
|
82
|
-
createdAt: string;
|
|
83
|
-
sortAt: string;
|
|
84
|
-
feedDid: string;
|
|
85
72
|
descriptionFacets: string | null;
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
cid: string;
|
|
73
|
+
displayName: string;
|
|
74
|
+
feedDid: string;
|
|
89
75
|
indexedAt: string;
|
|
90
|
-
creator: string;
|
|
91
|
-
createdAt: string;
|
|
92
76
|
sortAt: string;
|
|
93
|
-
subjectDid: string;
|
|
94
|
-
}> | import("./processor.js").RecordProcessor<l.RecordSchema<"literal:self", "com.germnetwork.declaration", l.Validator<Omit<com.germnetwork.declaration.Main, "$type">, Omit<com.germnetwork.declaration.Main, "$type">>>, unknown> | import("./processor.js").RecordProcessor<l.RecordSchema<"literal:self", "app.bsky.labeler.service", l.Validator<Omit<import("../../../lexicons/app/bsky/labeler/service.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/labeler/service.defs.js").Main, "$type">>>, {
|
|
95
77
|
uri: string;
|
|
78
|
+
}> | import("./processor.js").RecordProcessor<l.RecordSchema<"literal:self", "app.bsky.actor.profile", l.Validator<Omit<import("../../../lexicons/app/bsky/actor/profile.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/actor/profile.defs.js").Main, "$type">>>, import("../db/tables/profile.js").Profile> | import("./processor.js").RecordProcessor<l.RecordSchema<"literal:self", "app.bsky.actor.status", l.Validator<Omit<import("../../../lexicons/app/bsky/actor/status.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/actor/status.defs.js").Main, "$type">>>, unknown> | import("./processor.js").RecordProcessor<l.RecordSchema<"literal:self", "app.bsky.labeler.service", l.Validator<Omit<import("../../../lexicons/app/bsky/labeler/service.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/labeler/service.defs.js").Main, "$type">>>, {
|
|
96
79
|
cid: string;
|
|
97
|
-
indexedAt: string;
|
|
98
|
-
creator: string;
|
|
99
80
|
createdAt: string;
|
|
81
|
+
creator: string;
|
|
82
|
+
indexedAt: string;
|
|
100
83
|
sortAt: string;
|
|
101
|
-
}> | import("./processor.js").RecordProcessor<l.RecordSchema<"tid", "app.bsky.feed.like", l.Validator<Omit<import("../../../lexicons/app/bsky/feed/like.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/feed/like.defs.js").Main, "$type">>>, {
|
|
102
84
|
uri: string;
|
|
85
|
+
}> | import("./processor.js").RecordProcessor<l.RecordSchema<"literal:self", "app.bsky.notification.declaration", l.Validator<Omit<import("../../../lexicons/app/bsky/notification/declaration.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/notification/declaration.defs.js").Main, "$type">>>, unknown> | import("./processor.js").RecordProcessor<l.RecordSchema<"literal:self", "chat.bsky.actor.declaration", l.Validator<Omit<import("../../../lexicons/chat/bsky/actor/declaration.defs.js").Main, "$type">, Omit<import("../../../lexicons/chat/bsky/actor/declaration.defs.js").Main, "$type">>>, unknown> | import("./processor.js").RecordProcessor<l.RecordSchema<"literal:self", "com.germnetwork.declaration", l.Validator<Omit<com.germnetwork.declaration.Main, "$type">, Omit<com.germnetwork.declaration.Main, "$type">>>, unknown> | import("./processor.js").RecordProcessor<l.RecordSchema<"tid", "app.bsky.feed.like", l.Validator<Omit<import("../../../lexicons/app/bsky/feed/like.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/feed/like.defs.js").Main, "$type">>>, {
|
|
103
86
|
cid: string;
|
|
104
|
-
indexedAt: string;
|
|
105
|
-
creator: string;
|
|
106
87
|
createdAt: string;
|
|
88
|
+
creator: string;
|
|
89
|
+
indexedAt: string;
|
|
107
90
|
sortAt: string;
|
|
108
91
|
subject: string;
|
|
109
92
|
subjectCid: string;
|
|
93
|
+
uri: string;
|
|
110
94
|
via: string | null;
|
|
111
95
|
viaCid: string | null;
|
|
112
|
-
}> | import("./processor.js").RecordProcessor<l.RecordSchema<"tid", "app.bsky.
|
|
113
|
-
uri: string;
|
|
114
|
-
cid: string;
|
|
115
|
-
indexedAt: string;
|
|
116
|
-
creator: string;
|
|
117
|
-
createdAt: string;
|
|
118
|
-
sortAt: string;
|
|
119
|
-
subjectUri: string;
|
|
120
|
-
}> | import("./processor.js").RecordProcessor<l.RecordSchema<"tid", "app.bsky.graph.listitem", l.Validator<Omit<import("../../../lexicons/app/bsky/graph/listitem.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/graph/listitem.defs.js").Main, "$type">>>, {
|
|
121
|
-
uri: string;
|
|
122
|
-
cid: string;
|
|
123
|
-
indexedAt: string;
|
|
124
|
-
creator: string;
|
|
125
|
-
createdAt: string;
|
|
126
|
-
sortAt: string;
|
|
127
|
-
subjectDid: string;
|
|
128
|
-
listUri: string;
|
|
129
|
-
}> | import("./processor.js").RecordProcessor<l.RecordSchema<"tid", "app.bsky.graph.list", l.Validator<Omit<import("../../../lexicons/app/bsky/graph/list.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/graph/list.defs.js").Main, "$type">>>, {
|
|
130
|
-
uri: string;
|
|
131
|
-
cid: string;
|
|
132
|
-
indexedAt: string;
|
|
133
|
-
creator: string;
|
|
134
|
-
description: string | null;
|
|
135
|
-
avatarCid: string | null;
|
|
136
|
-
createdAt: string;
|
|
137
|
-
sortAt: string;
|
|
138
|
-
descriptionFacets: string | null;
|
|
139
|
-
name: string;
|
|
140
|
-
purpose: string;
|
|
141
|
-
}> | import("./processor.js").RecordProcessor<l.RecordSchema<"literal:self", "app.bsky.notification.declaration", l.Validator<Omit<import("../../../lexicons/app/bsky/notification/declaration.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/notification/declaration.defs.js").Main, "$type">>>, unknown> | import("./processor.js").RecordProcessor<l.RecordSchema<"tid", "app.bsky.feed.postgate", l.Validator<Omit<import("../../../lexicons/app/bsky/feed/postgate.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/feed/postgate.defs.js").Main, "$type">>>, import("../db/tables/post-gate.js").Postgate> | import("./processor.js").RecordProcessor<l.RecordSchema<"tid", "app.bsky.feed.post", l.Validator<Omit<import("../../../lexicons/app/bsky/feed/post.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/feed/post.defs.js").Main, "$type">>>, {
|
|
96
|
+
}> | import("./processor.js").RecordProcessor<l.RecordSchema<"tid", "app.bsky.feed.post", l.Validator<Omit<import("../../../lexicons/app/bsky/feed/post.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/feed/post.defs.js").Main, "$type">>>, {
|
|
142
97
|
post: {
|
|
143
|
-
text: string;
|
|
144
|
-
uri: string;
|
|
145
98
|
cid: string;
|
|
146
|
-
|
|
99
|
+
createdAt: string;
|
|
147
100
|
creator: string;
|
|
148
|
-
|
|
149
|
-
|
|
101
|
+
hasPostGate: boolean | null;
|
|
102
|
+
hasThreadGate: boolean | null;
|
|
103
|
+
indexedAt: string;
|
|
104
|
+
invalidReplyRoot: boolean | null;
|
|
105
|
+
langs: string[] | null;
|
|
150
106
|
replyParent: string | null;
|
|
151
107
|
replyParentCid: string | null;
|
|
152
|
-
|
|
108
|
+
replyRoot: string | null;
|
|
109
|
+
replyRootCid: string | null;
|
|
153
110
|
sortAt: string;
|
|
154
|
-
langs: string[] | null;
|
|
155
|
-
invalidReplyRoot: boolean | null;
|
|
156
|
-
violatesThreadGate: boolean | null;
|
|
157
111
|
tags: string[] | null;
|
|
112
|
+
text: string;
|
|
113
|
+
uri: string;
|
|
158
114
|
violatesEmbeddingRules: boolean | null;
|
|
159
|
-
|
|
160
|
-
hasPostGate: boolean | null;
|
|
115
|
+
violatesThreadGate: boolean | null;
|
|
161
116
|
};
|
|
162
117
|
facets?: {
|
|
163
|
-
type:
|
|
118
|
+
type: 'mention' | 'link';
|
|
164
119
|
value: string;
|
|
165
120
|
}[];
|
|
166
121
|
embeds?: (import("../db/tables/post-embed.js").PostEmbedImage[] | import("../db/tables/post-embed.js").PostEmbedExternal | import("../db/tables/post-embed.js").PostEmbedRecord | import("../db/tables/post-embed.js").PostEmbedVideo | import("../db/tables/post-embed.js").PostEmbedGalleryImage[])[];
|
|
@@ -176,36 +131,81 @@ export declare class IndexingService {
|
|
|
176
131
|
sortAt: string;
|
|
177
132
|
}[];
|
|
178
133
|
threadgate?: import("../../../lexicons/app/bsky/feed/threadgate.defs.js").Main;
|
|
179
|
-
}> | import("./processor.js").RecordProcessor<l.RecordSchema<"
|
|
180
|
-
uri: string;
|
|
134
|
+
}> | import("./processor.js").RecordProcessor<l.RecordSchema<"tid", "app.bsky.feed.postgate", l.Validator<Omit<import("../../../lexicons/app/bsky/feed/postgate.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/feed/postgate.defs.js").Main, "$type">>>, import("../db/tables/post-gate.js").Postgate> | import("./processor.js").RecordProcessor<l.RecordSchema<"tid", "app.bsky.feed.repost", l.Validator<Omit<import("../../../lexicons/app/bsky/feed/repost.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/feed/repost.defs.js").Main, "$type">>>, {
|
|
181
135
|
cid: string;
|
|
182
|
-
indexedAt: string;
|
|
183
|
-
creator: string;
|
|
184
136
|
createdAt: string;
|
|
137
|
+
creator: string;
|
|
138
|
+
indexedAt: string;
|
|
185
139
|
sortAt: string;
|
|
186
140
|
subject: string;
|
|
187
141
|
subjectCid: string;
|
|
142
|
+
uri: string;
|
|
188
143
|
via: string | null;
|
|
189
144
|
viaCid: string | null;
|
|
190
|
-
}> | import("./processor.js").RecordProcessor<l.RecordSchema<"tid", "app.bsky.graph.
|
|
145
|
+
}> | import("./processor.js").RecordProcessor<l.RecordSchema<"tid", "app.bsky.feed.threadgate", l.Validator<Omit<import("../../../lexicons/app/bsky/feed/threadgate.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/feed/threadgate.defs.js").Main, "$type">>>, import("../db/tables/thread-gate.js").ThreadGate> | import("./processor.js").RecordProcessor<l.RecordSchema<"tid", "app.bsky.graph.block", l.Validator<Omit<import("../../../lexicons/app/bsky/graph/block.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/graph/block.defs.js").Main, "$type">>>, {
|
|
146
|
+
cid: string;
|
|
147
|
+
createdAt: string;
|
|
148
|
+
creator: string;
|
|
149
|
+
indexedAt: string;
|
|
150
|
+
sortAt: string;
|
|
151
|
+
subjectDid: string;
|
|
191
152
|
uri: string;
|
|
153
|
+
}> | import("./processor.js").RecordProcessor<l.RecordSchema<"tid", "app.bsky.graph.follow", l.Validator<Omit<import("../../../lexicons/app/bsky/graph/follow.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/graph/follow.defs.js").Main, "$type">>>, {
|
|
154
|
+
cid: string;
|
|
155
|
+
createdAt: string;
|
|
156
|
+
creator: string;
|
|
157
|
+
indexedAt: string;
|
|
158
|
+
sortAt: string;
|
|
159
|
+
subjectDid: string;
|
|
160
|
+
uri: string;
|
|
161
|
+
}> | import("./processor.js").RecordProcessor<l.RecordSchema<"tid", "app.bsky.graph.list", l.Validator<Omit<import("../../../lexicons/app/bsky/graph/list.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/graph/list.defs.js").Main, "$type">>>, {
|
|
162
|
+
avatarCid: string | null;
|
|
192
163
|
cid: string;
|
|
164
|
+
createdAt: string;
|
|
165
|
+
creator: string;
|
|
166
|
+
description: string | null;
|
|
167
|
+
descriptionFacets: string | null;
|
|
193
168
|
indexedAt: string;
|
|
169
|
+
name: string;
|
|
170
|
+
purpose: string;
|
|
171
|
+
sortAt: string;
|
|
172
|
+
uri: string;
|
|
173
|
+
}> | import("./processor.js").RecordProcessor<l.RecordSchema<"tid", "app.bsky.graph.listblock", l.Validator<Omit<import("../../../lexicons/app/bsky/graph/listblock.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/graph/listblock.defs.js").Main, "$type">>>, {
|
|
174
|
+
cid: string;
|
|
175
|
+
createdAt: string;
|
|
194
176
|
creator: string;
|
|
177
|
+
indexedAt: string;
|
|
178
|
+
sortAt: string;
|
|
179
|
+
subjectUri: string;
|
|
180
|
+
uri: string;
|
|
181
|
+
}> | import("./processor.js").RecordProcessor<l.RecordSchema<"tid", "app.bsky.graph.listitem", l.Validator<Omit<import("../../../lexicons/app/bsky/graph/listitem.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/graph/listitem.defs.js").Main, "$type">>>, {
|
|
182
|
+
cid: string;
|
|
195
183
|
createdAt: string;
|
|
184
|
+
creator: string;
|
|
185
|
+
indexedAt: string;
|
|
186
|
+
listUri: string;
|
|
196
187
|
sortAt: string;
|
|
197
|
-
|
|
198
|
-
}> | import("./processor.js").RecordProcessor<l.RecordSchema<"literal:self", "app.bsky.actor.status", l.Validator<Omit<import("../../../lexicons/app/bsky/actor/status.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/actor/status.defs.js").Main, "$type">>>, unknown> | import("./processor.js").RecordProcessor<l.RecordSchema<"tid", "app.bsky.feed.threadgate", l.Validator<Omit<import("../../../lexicons/app/bsky/feed/threadgate.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/feed/threadgate.defs.js").Main, "$type">>>, import("../db/tables/thread-gate.js").ThreadGate> | import("./processor.js").RecordProcessor<l.RecordSchema<"tid", "app.bsky.graph.verification", l.Validator<Omit<import("../../../lexicons/app/bsky/graph/verification.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/graph/verification.defs.js").Main, "$type">>>, {
|
|
188
|
+
subjectDid: string;
|
|
199
189
|
uri: string;
|
|
190
|
+
}> | import("./processor.js").RecordProcessor<l.RecordSchema<"tid", "app.bsky.graph.starterpack", l.Validator<Omit<import("../../../lexicons/app/bsky/graph/starterpack.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/graph/starterpack.defs.js").Main, "$type">>>, {
|
|
200
191
|
cid: string;
|
|
192
|
+
createdAt: string;
|
|
193
|
+
creator: string;
|
|
201
194
|
indexedAt: string;
|
|
195
|
+
name: string;
|
|
196
|
+
sortAt: string;
|
|
197
|
+
uri: string;
|
|
198
|
+
}> | import("./processor.js").RecordProcessor<l.RecordSchema<"tid", "app.bsky.graph.verification", l.Validator<Omit<import("../../../lexicons/app/bsky/graph/verification.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/graph/verification.defs.js").Main, "$type">>>, {
|
|
199
|
+
cid: string;
|
|
200
|
+
createdAt: string;
|
|
202
201
|
creator: string;
|
|
203
202
|
displayName: string;
|
|
204
|
-
createdAt: string;
|
|
205
|
-
subject: string;
|
|
206
203
|
handle: string;
|
|
204
|
+
indexedAt: string;
|
|
207
205
|
rkey: string;
|
|
208
206
|
sortedAt: string;
|
|
207
|
+
subject: string;
|
|
208
|
+
uri: string;
|
|
209
209
|
}> | undefined;
|
|
210
210
|
updateActorStatus(did: DidString, active: boolean, status?: string): Promise<void>;
|
|
211
211
|
deleteActor(did: DidString): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/indexing/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAU,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,GAAG,EAAE,CAAC,EAA4B,MAAM,cAAc,CAAA;AAC/D,OAAO,EAEL,aAAa,EAId,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAA;AAGhD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,KAAK,KAAK,MAAM,oBAAoB,CAAA;AAC3C,OAAO,KAAK,eAAe,MAAM,+BAA+B,CAAA;AAChE,OAAO,KAAK,aAAa,MAAM,6BAA6B,CAAA;AAC5D,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAA;AAC7C,OAAO,KAAK,eAAe,MAAM,+BAA+B,CAAA;AAChE,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAC/C,OAAO,KAAK,IAAI,MAAM,mBAAmB,CAAA;AACzC,OAAO,KAAK,SAAS,MAAM,yBAAyB,CAAA;AACpD,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAA;AAClD,OAAO,KAAK,IAAI,MAAM,mBAAmB,CAAA;AACzC,OAAO,KAAK,gBAAgB,MAAM,gCAAgC,CAAA;AAClE,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAA;AAClD,OAAO,KAAK,IAAI,MAAM,mBAAmB,CAAA;AACzC,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAC/C,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAA;AAC7C,OAAO,KAAK,WAAW,MAAM,2BAA2B,CAAA;AACxD,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAA;AAC7C,OAAO,KAAK,UAAU,MAAM,0BAA0B,CAAA;AACtD,OAAO,KAAK,YAAY,MAAM,2BAA2B,CAAA;AAEzD,qBAAa,eAAe;IAwBjB,EAAE,EAAE,QAAQ;IACZ,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE,eAAe;IAzBpC,OAAO,EAAE;QACP,IAAI,EAAE,IAAI,CAAC,UAAU,CAAA;QACrB,UAAU,EAAE,UAAU,CAAC,UAAU,CAAA;QACjC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAA;QAC7B,IAAI,EAAE,IAAI,CAAC,UAAU,CAAA;QACrB,MAAM,EAAE,MAAM,CAAC,UAAU,CAAA;QACzB,MAAM,EAAE,MAAM,CAAC,UAAU,CAAA;QACzB,OAAO,EAAE,OAAO,CAAC,UAAU,CAAA;QAC3B,IAAI,EAAE,IAAI,CAAC,UAAU,CAAA;QACrB,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAA;QAC7B,SAAS,EAAE,SAAS,CAAC,UAAU,CAAA;QAC/B,KAAK,EAAE,KAAK,CAAC,UAAU,CAAA;QACvB,aAAa,EAAE,aAAa,CAAC,UAAU,CAAA;QACvC,WAAW,EAAE,WAAW,CAAC,UAAU,CAAA;QACnC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAA;QAC3B,gBAAgB,EAAE,gBAAgB,CAAC,UAAU,CAAA;QAC7C,eAAe,EAAE,eAAe,CAAC,UAAU,CAAA;QAC3C,eAAe,EAAE,eAAe,CAAC,UAAU,CAAA;QAC3C,YAAY,EAAE,YAAY,CAAC,UAAU,CAAA;QACrC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAA;KAC1B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/indexing/index.ts"],"names":[],"mappings":"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"}
|