@atproto/bsky 0.0.277 → 0.0.279
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 +65 -0
- package/dist/api/app/bsky/actor/getSuggestions.d.ts.map +1 -1
- package/dist/api/app/bsky/actor/getSuggestions.js +5 -5
- package/dist/api/app/bsky/actor/getSuggestions.js.map +1 -1
- package/dist/api/app/bsky/actor/searchActors.d.ts.map +1 -1
- package/dist/api/app/bsky/actor/searchActors.js +3 -2
- 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 +3 -2
- package/dist/api/app/bsky/actor/searchActorsTypeahead.js.map +1 -1
- package/dist/api/app/bsky/feed/getAuthorFeed.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getAuthorFeed.js +2 -4
- package/dist/api/app/bsky/feed/getAuthorFeed.js.map +1 -1
- package/dist/api/app/bsky/feed/getFeed.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getFeed.js +10 -10
- package/dist/api/app/bsky/feed/getFeed.js.map +1 -1
- package/dist/api/app/bsky/feed/getTimeline.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getTimeline.js +2 -4
- package/dist/api/app/bsky/feed/getTimeline.js.map +1 -1
- package/dist/api/app/bsky/feed/searchPosts.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/searchPosts.js +3 -2
- package/dist/api/app/bsky/feed/searchPosts.js.map +1 -1
- package/dist/api/app/bsky/graph/getList.js +4 -1
- package/dist/api/app/bsky/graph/getList.js.map +1 -1
- package/dist/api/app/bsky/graph/getSuggestedFollowsByActor.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/getSuggestedFollowsByActor.js +5 -5
- package/dist/api/app/bsky/graph/getSuggestedFollowsByActor.js.map +1 -1
- package/dist/api/app/bsky/graph/searchStarterPacks.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/searchStarterPacks.js +3 -2
- package/dist/api/app/bsky/graph/searchStarterPacks.js.map +1 -1
- package/dist/api/app/bsky/notification/getUnreadCount.js +0 -8
- package/dist/api/app/bsky/notification/getUnreadCount.js.map +1 -1
- package/dist/api/app/bsky/notification/listNotifications.d.ts.map +1 -1
- package/dist/api/app/bsky/notification/listNotifications.js +22 -20
- package/dist/api/app/bsky/notification/listNotifications.js.map +1 -1
- package/dist/api/app/bsky/notification/updateSeen.d.ts.map +1 -1
- package/dist/api/app/bsky/notification/updateSeen.js +2 -11
- package/dist/api/app/bsky/notification/updateSeen.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getOnboardingSuggestedStarterPacks.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getOnboardingSuggestedStarterPacks.js +5 -5
- package/dist/api/app/bsky/unspecced/getOnboardingSuggestedStarterPacks.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getSuggestedFeeds.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getSuggestedFeeds.js +5 -4
- package/dist/api/app/bsky/unspecced/getSuggestedFeeds.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getSuggestedOnboardingUsers.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getSuggestedOnboardingUsers.js +5 -4
- package/dist/api/app/bsky/unspecced/getSuggestedOnboardingUsers.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getSuggestedStarterPacks.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getSuggestedStarterPacks.js +5 -4
- package/dist/api/app/bsky/unspecced/getSuggestedStarterPacks.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getSuggestedUsers.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getSuggestedUsers.js +6 -4
- package/dist/api/app/bsky/unspecced/getSuggestedUsers.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getSuggestedUsersForDiscover.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getSuggestedUsersForDiscover.js +4 -1
- package/dist/api/app/bsky/unspecced/getSuggestedUsersForDiscover.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getSuggestedUsersForExplore.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getSuggestedUsersForExplore.js +4 -1
- package/dist/api/app/bsky/unspecced/getSuggestedUsersForExplore.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getSuggestedUsersForSeeMore.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getSuggestedUsersForSeeMore.js +4 -1
- package/dist/api/app/bsky/unspecced/getSuggestedUsersForSeeMore.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getTrendingTopics.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getTrendingTopics.js +3 -1
- package/dist/api/app/bsky/unspecced/getTrendingTopics.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getTrends.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getTrends.js +5 -4
- package/dist/api/app/bsky/unspecced/getTrends.js.map +1 -1
- package/dist/api/blob-dispatcher.d.ts.map +1 -1
- package/dist/api/blob-dispatcher.js +1 -0
- package/dist/api/blob-dispatcher.js.map +1 -1
- package/dist/api/util.d.ts.map +1 -1
- package/dist/api/util.js +4 -1
- package/dist/api/util.js.map +1 -1
- package/dist/bsync.d.ts.map +1 -1
- package/dist/bsync.js +18 -1
- package/dist/bsync.js.map +1 -1
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +13 -1
- package/dist/config.js.map +1 -1
- package/dist/data-plane/client/index.d.ts.map +1 -1
- package/dist/data-plane/client/index.js +3 -2
- package/dist/data-plane/client/index.js.map +1 -1
- package/dist/data-plane/client/util.d.ts +0 -1
- package/dist/data-plane/client/util.d.ts.map +1 -1
- package/dist/data-plane/client/util.js +0 -45
- package/dist/data-plane/client/util.js.map +1 -1
- package/dist/data-plane/server/db/database-schema.d.ts +2 -1
- package/dist/data-plane/server/db/database-schema.d.ts.map +1 -1
- package/dist/data-plane/server/db/database-schema.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20260827T200000000Z-reference-list-opt-outs.d.ts +4 -0
- package/dist/data-plane/server/db/migrations/20260827T200000000Z-reference-list-opt-outs.d.ts.map +1 -0
- package/dist/data-plane/server/db/migrations/20260827T200000000Z-reference-list-opt-outs.js +24 -0
- package/dist/data-plane/server/db/migrations/20260827T200000000Z-reference-list-opt-outs.js.map +1 -0
- package/dist/data-plane/server/db/migrations/20260904T130000000Z-remove-last-seen-priority-notifs.d.ts +4 -0
- package/dist/data-plane/server/db/migrations/20260904T130000000Z-remove-last-seen-priority-notifs.d.ts.map +1 -0
- package/dist/data-plane/server/db/migrations/20260904T130000000Z-remove-last-seen-priority-notifs.js +13 -0
- package/dist/data-plane/server/db/migrations/20260904T130000000Z-remove-last-seen-priority-notifs.js.map +1 -0
- package/dist/data-plane/server/db/migrations/index.d.ts +2 -0
- package/dist/data-plane/server/db/migrations/index.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/index.js +2 -0
- package/dist/data-plane/server/db/migrations/index.js.map +1 -1
- package/dist/data-plane/server/db/tables/actor-state.d.ts +0 -1
- package/dist/data-plane/server/db/tables/actor-state.d.ts.map +1 -1
- package/dist/data-plane/server/db/tables/actor-state.js.map +1 -1
- package/dist/data-plane/server/db/tables/reference-list-opt-out.d.ts +15 -0
- package/dist/data-plane/server/db/tables/reference-list-opt-out.d.ts.map +1 -0
- package/dist/data-plane/server/db/tables/reference-list-opt-out.js +2 -0
- package/dist/data-plane/server/db/tables/reference-list-opt-out.js.map +1 -0
- package/dist/data-plane/server/indexing/index.d.ts +10 -0
- package/dist/data-plane/server/indexing/index.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/index.js +6 -0
- package/dist/data-plane/server/indexing/index.js.map +1 -1
- package/dist/data-plane/server/indexing/plugins/reference-list-opt-out.d.ts +16 -0
- package/dist/data-plane/server/indexing/plugins/reference-list-opt-out.d.ts.map +1 -0
- package/dist/data-plane/server/indexing/plugins/reference-list-opt-out.js +73 -0
- package/dist/data-plane/server/indexing/plugins/reference-list-opt-out.js.map +1 -0
- package/dist/data-plane/server/indexing/processor.d.ts +1 -0
- package/dist/data-plane/server/indexing/processor.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/processor.js +3 -0
- package/dist/data-plane/server/indexing/processor.js.map +1 -1
- package/dist/data-plane/server/routes/feeds.d.ts.map +1 -1
- package/dist/data-plane/server/routes/feeds.js +13 -0
- package/dist/data-plane/server/routes/feeds.js.map +1 -1
- package/dist/data-plane/server/routes/lists.d.ts.map +1 -1
- package/dist/data-plane/server/routes/lists.js +45 -1
- package/dist/data-plane/server/routes/lists.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 -32
- package/dist/data-plane/server/routes/notifs.js.map +1 -1
- package/dist/data-plane/server/util.d.ts +4 -4
- package/dist/hydration/actor.d.ts.map +1 -1
- package/dist/hydration/actor.js +7 -4
- package/dist/hydration/actor.js.map +1 -1
- package/dist/hydration/graph.d.ts +1 -0
- package/dist/hydration/graph.d.ts.map +1 -1
- package/dist/hydration/graph.js +12 -5
- package/dist/hydration/graph.js.map +1 -1
- package/dist/hydration/hydrator.d.ts +9 -1
- package/dist/hydration/hydrator.d.ts.map +1 -1
- package/dist/hydration/hydrator.js +28 -3
- package/dist/hydration/hydrator.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -2
- package/dist/index.js.map +1 -1
- package/dist/lexicons/app/bsky/actor/defs.defs.d.ts +6 -0
- package/dist/lexicons/app/bsky/actor/defs.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/actor/defs.defs.js +2 -0
- package/dist/lexicons/app/bsky/actor/defs.defs.js.map +1 -1
- package/dist/lexicons/app/bsky/authFullApp.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/authFullApp.defs.js +1 -0
- package/dist/lexicons/app/bsky/authFullApp.defs.js.map +1 -1
- package/dist/lexicons/app/bsky/graph/defs.defs.d.ts +8 -0
- package/dist/lexicons/app/bsky/graph/defs.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/graph/defs.defs.js +3 -0
- package/dist/lexicons/app/bsky/graph/defs.defs.js.map +1 -1
- package/dist/lexicons/app/bsky/graph/referencelistoptout.d.ts +3 -0
- package/dist/lexicons/app/bsky/graph/referencelistoptout.d.ts.map +1 -0
- package/dist/lexicons/app/bsky/graph/referencelistoptout.defs.d.ts +77 -0
- package/dist/lexicons/app/bsky/graph/referencelistoptout.defs.d.ts.map +1 -0
- package/dist/lexicons/app/bsky/graph/referencelistoptout.defs.js +27 -0
- package/dist/lexicons/app/bsky/graph/referencelistoptout.defs.js.map +1 -0
- package/dist/lexicons/app/bsky/graph/referencelistoptout.js +6 -0
- package/dist/lexicons/app/bsky/graph/referencelistoptout.js.map +1 -0
- package/dist/lexicons/app/bsky/graph.d.ts +1 -0
- package/dist/lexicons/app/bsky/graph.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/graph.js +1 -0
- package/dist/lexicons/app/bsky/graph.js.map +1 -1
- package/dist/lexicons/tools/ozone/moderation/getAccountPreferences.d.ts +3 -0
- package/dist/lexicons/tools/ozone/moderation/getAccountPreferences.d.ts.map +1 -0
- package/dist/lexicons/tools/ozone/moderation/getAccountPreferences.defs.d.ts +29 -0
- package/dist/lexicons/tools/ozone/moderation/getAccountPreferences.defs.d.ts.map +1 -0
- package/dist/lexicons/tools/ozone/moderation/getAccountPreferences.defs.js +19 -0
- package/dist/lexicons/tools/ozone/moderation/getAccountPreferences.defs.js.map +1 -0
- package/dist/lexicons/tools/ozone/moderation/getAccountPreferences.js +6 -0
- package/dist/lexicons/tools/ozone/moderation/getAccountPreferences.js.map +1 -0
- package/dist/lexicons/tools/ozone/moderation.d.ts +1 -0
- package/dist/lexicons/tools/ozone/moderation.d.ts.map +1 -1
- package/dist/lexicons/tools/ozone/moderation.js +1 -0
- package/dist/lexicons/tools/ozone/moderation.js.map +1 -1
- package/dist/logger.d.ts +1 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +1 -0
- package/dist/logger.js.map +1 -1
- package/dist/proto/bsky_connect.d.ts +10 -1
- package/dist/proto/bsky_connect.d.ts.map +1 -1
- package/dist/proto/bsky_connect.js +11 -2
- package/dist/proto/bsky_connect.js.map +1 -1
- package/dist/proto/bsky_pb.d.ts +46 -12
- package/dist/proto/bsky_pb.d.ts.map +1 -1
- package/dist/proto/bsky_pb.js +75 -15
- package/dist/proto/bsky_pb.js.map +1 -1
- package/dist/proto/bsync_connect.d.ts +10 -1
- package/dist/proto/bsync_connect.d.ts.map +1 -1
- package/dist/proto/bsync_connect.js +11 -2
- package/dist/proto/bsync_connect.js.map +1 -1
- package/dist/proto/bsync_pb.d.ts +35 -1
- package/dist/proto/bsync_pb.d.ts.map +1 -1
- package/dist/proto/bsync_pb.js +56 -1
- package/dist/proto/bsync_pb.js.map +1 -1
- package/dist/proto/courier_connect.js +1 -1
- package/dist/proto/courier_connect.js.map +1 -1
- package/dist/proto/dataplane_connect.d.ts +20 -0
- package/dist/proto/dataplane_connect.d.ts.map +1 -0
- package/dist/proto/dataplane_connect.js +24 -0
- package/dist/proto/dataplane_connect.js.map +1 -0
- package/dist/proto/dataplane_pb.d.ts +37 -0
- package/dist/proto/dataplane_pb.d.ts.map +1 -0
- package/dist/proto/dataplane_pb.js +61 -0
- package/dist/proto/dataplane_pb.js.map +1 -0
- package/dist/proto/rolodex_connect.js +1 -1
- package/dist/proto/rolodex_connect.js.map +1 -1
- package/dist/telemetry/events.d.ts +31 -0
- package/dist/telemetry/events.d.ts.map +1 -0
- package/dist/telemetry/events.js +65 -0
- package/dist/telemetry/events.js.map +1 -0
- package/dist/telemetry/rpc.d.ts +21 -0
- package/dist/telemetry/rpc.d.ts.map +1 -0
- package/dist/telemetry/rpc.js +70 -0
- package/dist/telemetry/rpc.js.map +1 -0
- package/dist/{telemetry.d.ts.map → telemetry/telemetry.d.ts.map} +1 -1
- package/dist/{telemetry.js → telemetry/telemetry.js} +1 -1
- package/dist/telemetry/telemetry.js.map +1 -0
- package/dist/telemetry/util.d.ts +14 -0
- package/dist/telemetry/util.d.ts.map +1 -0
- package/dist/telemetry/util.js +23 -0
- package/dist/telemetry/util.js.map +1 -0
- package/dist/undici.d.ts +29 -0
- package/dist/undici.d.ts.map +1 -0
- package/dist/undici.js +43 -0
- package/dist/undici.js.map +1 -0
- package/dist/util/headers.d.ts +5 -0
- package/dist/util/headers.d.ts.map +1 -0
- package/dist/util/headers.js +19 -0
- package/dist/util/headers.js.map +1 -0
- package/dist/util/uris.js +1 -1
- package/dist/util/uris.js.map +1 -1
- package/dist/views/index.d.ts +4 -2
- package/dist/views/index.d.ts.map +1 -1
- package/dist/views/index.js +24 -11
- package/dist/views/index.js.map +1 -1
- package/package.json +24 -19
- package/dist/telemetry.js.map +0 -1
- /package/dist/{telemetry.d.ts → telemetry/telemetry.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260904T130000000Z-remove-last-seen-priority-notifs.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/migrations/20260904T130000000Z-remove-last-seen-priority-notifs.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,EAAmB;IAC1C,MAAM,EAAE,CAAC,MAAM;SACZ,UAAU,CAAC,aAAa,CAAC;SACzB,UAAU,CAAC,wBAAwB,CAAC;SACpC,OAAO,EAAE,CAAA;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,EAAmB;IAC5C,MAAM,EAAE,CAAC,MAAM;SACZ,UAAU,CAAC,aAAa,CAAC;SACzB,SAAS,CAAC,wBAAwB,EAAE,SAAS,CAAC;SAC9C,OAAO,EAAE,CAAA;AACd,CAAC","sourcesContent":["import type { Kysely } from 'kysely'\n\nexport async function up(db: Kysely<unknown>): Promise<void> {\n await db.schema\n .alterTable('actor_state')\n .dropColumn('lastSeenPriorityNotifs')\n .execute()\n}\n\nexport async function down(db: Kysely<unknown>): Promise<void> {\n await db.schema\n .alterTable('actor_state')\n .addColumn('lastSeenPriorityNotifs', 'varchar')\n .execute()\n}\n"]}
|
|
@@ -57,4 +57,6 @@ export * as _20260604T224952774Z from './20260604T224952774Z-post-embed-gallery-
|
|
|
57
57
|
export * as _20260618T200000000Z from './20260618T200000000Z-add-mute-scope.js';
|
|
58
58
|
export * as _20260729T223157563Z from './20260729T223157563Z-add-op-thread-reply.js';
|
|
59
59
|
export * as _20260819T170000000Z from './20260819T170000000Z-add-like-subject-sort-index.js';
|
|
60
|
+
export * as _20260827T200000000Z from './20260827T200000000Z-reference-list-opt-outs.js';
|
|
61
|
+
export * as _20260904T130000000Z from './20260904T130000000Z-remove-last-seen-priority-notifs.js';
|
|
60
62
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/migrations/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/migrations/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,4 +60,6 @@ export * as _20260604T224952774Z from './20260604T224952774Z-post-embed-gallery-
|
|
|
60
60
|
export * as _20260618T200000000Z from './20260618T200000000Z-add-mute-scope.js';
|
|
61
61
|
export * as _20260729T223157563Z from './20260729T223157563Z-add-op-thread-reply.js';
|
|
62
62
|
export * as _20260819T170000000Z from './20260819T170000000Z-add-like-subject-sort-index.js';
|
|
63
|
+
export * as _20260827T200000000Z from './20260827T200000000Z-reference-list-opt-outs.js';
|
|
64
|
+
export * as _20260904T130000000Z from './20260904T130000000Z-remove-last-seen-priority-notifs.js';
|
|
63
65
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/migrations/index.ts"],"names":[],"mappings":"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","sourcesContent":["// NOTE this file can be edited by hand, but it is also appended to by the migration:create command.\n// It's important that every migration is exported from here with the proper name. We'd simplify\n// this with kysely's FileMigrationProvider, but it doesn't play nicely with the build process.\n\nexport * as _20230309T045948368Z from './20230309T045948368Z-init.js'\nexport * as _20230408T152211201Z from './20230408T152211201Z-notification-init.js'\nexport * as _20230417T210628672Z from './20230417T210628672Z-moderation-init.js'\nexport * as _20230420T211446071Z from './20230420T211446071Z-did-cache.js'\nexport * as _20230427T194702079Z from './20230427T194702079Z-notif-record-index.js'\nexport * as _20230605T144730094Z from './20230605T144730094Z-post-profile-aggs.js'\nexport * as _20230607T211442112Z from './20230607T211442112Z-feed-generator-init.js'\nexport * as _20230608T155101190Z from './20230608T155101190Z-algo-whats-hot-view.js'\nexport * as _20230608T201813132Z from './20230608T201813132Z-mute-lists.js'\nexport * as _20230608T205147239Z from './20230608T205147239Z-mutes.js'\nexport * as _20230609T153623961Z from './20230609T153623961Z-blocks.js'\nexport * as _20230609T232122649Z from './20230609T232122649Z-actor-deletion-indexes.js'\nexport * as _20230610T203555962Z from './20230610T203555962Z-suggested-follows.js'\nexport * as _20230611T215300060Z from './20230611T215300060Z-actor-state.js'\nexport * as _20230620T161134972Z from './20230620T161134972Z-post-langs.js'\nexport * as _20230627T212437895Z from './20230627T212437895Z-optional-handle.js'\nexport * as _20230629T220835893Z from './20230629T220835893Z-remove-post-hierarchy.js'\nexport * as _20230703T045536691Z from './20230703T045536691Z-feed-and-label-indices.js'\nexport * as _20230720T164800037Z from './20230720T164800037Z-posts-cursor-idx.js'\nexport * as _20230807T035309811Z from './20230807T035309811Z-feed-item-delete-invite-for-user-idx.js'\nexport * as _20230808T172902639Z from './20230808T172902639Z-repo-rev.js'\nexport * as _20230810T203349843Z from './20230810T203349843Z-action-duration.js'\nexport * as _20230817T195936007Z from './20230817T195936007Z-native-notifications.js'\nexport * as _20230830T205507322Z from './20230830T205507322Z-suggested-feeds.js'\nexport * as _20230904T211011773Z from './20230904T211011773Z-block-lists.js'\nexport * as _20230906T222220386Z from './20230906T222220386Z-thread-gating.js'\nexport * as _20230920T213858047Z from './20230920T213858047Z-add-tags-to-post.js'\nexport * as _20230929T192920807Z from './20230929T192920807Z-record-cursor-indexes.js'\nexport * as _20231003T202833377Z from './20231003T202833377Z-create-moderation-subject-status.js'\nexport * as _20231220T225126090Z from './20231220T225126090Z-blob-takedowns.js'\nexport * as _20240124T023719200Z from './20240124T023719200Z-tagged-suggestions.js'\nexport * as _20240226T225725627Z from './20240226T225725627Z-labelers.js'\nexport * as _20240530T170337073Z from './20240530T170337073Z-account-deactivation.js'\nexport * as _20240606T171229898Z from './20240606T171229898Z-thread-mutes.js'\nexport * as _20240606T222548219Z from './20240606T222548219Z-starter-packs.js'\nexport * as _20240719T203853939Z from './20240719T203853939Z-priority-notifs.js'\nexport * as _20240723T220700077Z from './20240723T220700077Z-quotes-post-aggs.js'\nexport * as _20240723T220703655Z from './20240723T220703655Z-quotes.js'\nexport * as _20240801T193939827Z from './20240801T193939827Z-post-gate.js'\nexport * as _20240808T224251220Z from './20240808T224251220Z-post-gate-flags.js'\nexport * as _20240829T211238293Z from './20240829T211238293Z-simplify-actor-sync.js'\nexport * as _20240831T134810923Z from './20240831T134810923Z-pinned-posts.js'\nexport * as _20241114T153108102Z from './20241114T153108102Z-add-starter-packs-name.js'\nexport * as _20250116T222618297Z from './20250116T222618297Z-post-embed-video.js'\nexport * as _20250207T174822012Z from './20250207T174822012Z-add-label-exp.js'\nexport * as _20250404T163421487Z from './20250404T163421487Z-verifications.js'\nexport * as _20250526T023712742Z from './20250526T023712742Z-like-repost-via.js'\nexport * as _20250528T221913281Z from './20250528T221913281Z-add-record-tags.js'\nexport * as _20250602T190357447Z from './20250602T190357447Z-add-private-data.js'\nexport * as _20250611T140649895Z from './20250611T140649895Z-add-activity-subscription.js'\nexport * as _20250627T025331240Z from './20250627T025331240Z-add-actor-age-assurance-columns.js'\nexport * as _20250812T183735692Z from './20250812T183735692Z-add-bookmarks.js'\nexport * as _20250813T174955711Z from './20250813T174955711Z-add-post-agg-bookmarks.js'\nexport * as _20251120T004738098Z from './20251120T004738098Z-update-actor-age-assurance-v2.js'\nexport * as _20260112T133951271Z from './20260112T133951271Z-add-drafts.js'\nexport * as _20260604T224952774Z from './20260604T224952774Z-post-embed-gallery-image.js'\nexport * as _20260618T200000000Z from './20260618T200000000Z-add-mute-scope.js'\nexport * as _20260729T223157563Z from './20260729T223157563Z-add-op-thread-reply.js'\nexport * as _20260819T170000000Z from './20260819T170000000Z-add-like-subject-sort-index.js'\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/migrations/index.ts"],"names":[],"mappings":"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","sourcesContent":["// NOTE this file can be edited by hand, but it is also appended to by the migration:create command.\n// It's important that every migration is exported from here with the proper name. We'd simplify\n// this with kysely's FileMigrationProvider, but it doesn't play nicely with the build process.\n\nexport * as _20230309T045948368Z from './20230309T045948368Z-init.js'\nexport * as _20230408T152211201Z from './20230408T152211201Z-notification-init.js'\nexport * as _20230417T210628672Z from './20230417T210628672Z-moderation-init.js'\nexport * as _20230420T211446071Z from './20230420T211446071Z-did-cache.js'\nexport * as _20230427T194702079Z from './20230427T194702079Z-notif-record-index.js'\nexport * as _20230605T144730094Z from './20230605T144730094Z-post-profile-aggs.js'\nexport * as _20230607T211442112Z from './20230607T211442112Z-feed-generator-init.js'\nexport * as _20230608T155101190Z from './20230608T155101190Z-algo-whats-hot-view.js'\nexport * as _20230608T201813132Z from './20230608T201813132Z-mute-lists.js'\nexport * as _20230608T205147239Z from './20230608T205147239Z-mutes.js'\nexport * as _20230609T153623961Z from './20230609T153623961Z-blocks.js'\nexport * as _20230609T232122649Z from './20230609T232122649Z-actor-deletion-indexes.js'\nexport * as _20230610T203555962Z from './20230610T203555962Z-suggested-follows.js'\nexport * as _20230611T215300060Z from './20230611T215300060Z-actor-state.js'\nexport * as _20230620T161134972Z from './20230620T161134972Z-post-langs.js'\nexport * as _20230627T212437895Z from './20230627T212437895Z-optional-handle.js'\nexport * as _20230629T220835893Z from './20230629T220835893Z-remove-post-hierarchy.js'\nexport * as _20230703T045536691Z from './20230703T045536691Z-feed-and-label-indices.js'\nexport * as _20230720T164800037Z from './20230720T164800037Z-posts-cursor-idx.js'\nexport * as _20230807T035309811Z from './20230807T035309811Z-feed-item-delete-invite-for-user-idx.js'\nexport * as _20230808T172902639Z from './20230808T172902639Z-repo-rev.js'\nexport * as _20230810T203349843Z from './20230810T203349843Z-action-duration.js'\nexport * as _20230817T195936007Z from './20230817T195936007Z-native-notifications.js'\nexport * as _20230830T205507322Z from './20230830T205507322Z-suggested-feeds.js'\nexport * as _20230904T211011773Z from './20230904T211011773Z-block-lists.js'\nexport * as _20230906T222220386Z from './20230906T222220386Z-thread-gating.js'\nexport * as _20230920T213858047Z from './20230920T213858047Z-add-tags-to-post.js'\nexport * as _20230929T192920807Z from './20230929T192920807Z-record-cursor-indexes.js'\nexport * as _20231003T202833377Z from './20231003T202833377Z-create-moderation-subject-status.js'\nexport * as _20231220T225126090Z from './20231220T225126090Z-blob-takedowns.js'\nexport * as _20240124T023719200Z from './20240124T023719200Z-tagged-suggestions.js'\nexport * as _20240226T225725627Z from './20240226T225725627Z-labelers.js'\nexport * as _20240530T170337073Z from './20240530T170337073Z-account-deactivation.js'\nexport * as _20240606T171229898Z from './20240606T171229898Z-thread-mutes.js'\nexport * as _20240606T222548219Z from './20240606T222548219Z-starter-packs.js'\nexport * as _20240719T203853939Z from './20240719T203853939Z-priority-notifs.js'\nexport * as _20240723T220700077Z from './20240723T220700077Z-quotes-post-aggs.js'\nexport * as _20240723T220703655Z from './20240723T220703655Z-quotes.js'\nexport * as _20240801T193939827Z from './20240801T193939827Z-post-gate.js'\nexport * as _20240808T224251220Z from './20240808T224251220Z-post-gate-flags.js'\nexport * as _20240829T211238293Z from './20240829T211238293Z-simplify-actor-sync.js'\nexport * as _20240831T134810923Z from './20240831T134810923Z-pinned-posts.js'\nexport * as _20241114T153108102Z from './20241114T153108102Z-add-starter-packs-name.js'\nexport * as _20250116T222618297Z from './20250116T222618297Z-post-embed-video.js'\nexport * as _20250207T174822012Z from './20250207T174822012Z-add-label-exp.js'\nexport * as _20250404T163421487Z from './20250404T163421487Z-verifications.js'\nexport * as _20250526T023712742Z from './20250526T023712742Z-like-repost-via.js'\nexport * as _20250528T221913281Z from './20250528T221913281Z-add-record-tags.js'\nexport * as _20250602T190357447Z from './20250602T190357447Z-add-private-data.js'\nexport * as _20250611T140649895Z from './20250611T140649895Z-add-activity-subscription.js'\nexport * as _20250627T025331240Z from './20250627T025331240Z-add-actor-age-assurance-columns.js'\nexport * as _20250812T183735692Z from './20250812T183735692Z-add-bookmarks.js'\nexport * as _20250813T174955711Z from './20250813T174955711Z-add-post-agg-bookmarks.js'\nexport * as _20251120T004738098Z from './20251120T004738098Z-update-actor-age-assurance-v2.js'\nexport * as _20260112T133951271Z from './20260112T133951271Z-add-drafts.js'\nexport * as _20260604T224952774Z from './20260604T224952774Z-post-embed-gallery-image.js'\nexport * as _20260618T200000000Z from './20260618T200000000Z-add-mute-scope.js'\nexport * as _20260729T223157563Z from './20260729T223157563Z-add-op-thread-reply.js'\nexport * as _20260819T170000000Z from './20260819T170000000Z-add-like-subject-sort-index.js'\nexport * as _20260827T200000000Z from './20260827T200000000Z-reference-list-opt-outs.js'\nexport * as _20260904T130000000Z from './20260904T130000000Z-remove-last-seen-priority-notifs.js'\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actor-state.d.ts","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/tables/actor-state.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"actor-state.d.ts","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/tables/actor-state.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,OAAO,CAAA;CACxB;AAED,eAAO,MAAM,SAAS,gBAAgB,CAAA;AAEtC,MAAM,MAAM,SAAS,GAAG;IAAE,CAAC,SAAS,CAAC,EAAE,UAAU,CAAA;CAAE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actor-state.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/tables/actor-state.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"actor-state.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/tables/actor-state.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,SAAS,GAAG,aAAa,CAAA","sourcesContent":["export interface ActorState {\n did: string\n lastSeenNotifs: string\n priorityNotifs: boolean\n}\n\nexport const tableName = 'actor_state'\n\nexport type PartialDB = { [tableName]: ActorState }\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { GeneratedAlways } from 'kysely';
|
|
2
|
+
export declare const tableName = "reference_list_opt_out";
|
|
3
|
+
export interface ReferenceListOptOut {
|
|
4
|
+
uri: string;
|
|
5
|
+
cid: string;
|
|
6
|
+
creator: string;
|
|
7
|
+
subjectUri: string;
|
|
8
|
+
createdAt: string;
|
|
9
|
+
indexedAt: string;
|
|
10
|
+
sortAt: GeneratedAlways<string>;
|
|
11
|
+
}
|
|
12
|
+
export type PartialDB = {
|
|
13
|
+
[tableName]: ReferenceListOptOut;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=reference-list-opt-out.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference-list-opt-out.d.ts","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/tables/reference-list-opt-out.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AAE7C,eAAO,MAAM,SAAS,2BAA2B,CAAA;AAEjD,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,CAAA;CAChC;AAED,MAAM,MAAM,SAAS,GAAG;IAAE,CAAC,SAAS,CAAC,EAAE,mBAAmB,CAAA;CAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference-list-opt-out.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/tables/reference-list-opt-out.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAG,wBAAwB,CAAA","sourcesContent":["import type { GeneratedAlways } from 'kysely'\n\nexport const tableName = 'reference_list_opt_out'\n\nexport interface ReferenceListOptOut {\n uri: string\n cid: string\n creator: string\n subjectUri: string\n createdAt: string\n indexedAt: string\n sortAt: GeneratedAlways<string>\n}\n\nexport type PartialDB = { [tableName]: ReferenceListOptOut }\n"]}
|
|
@@ -19,6 +19,7 @@ import * as NotifDeclaration from './plugins/notif-declaration.js';
|
|
|
19
19
|
import * as Postgate from './plugins/post-gate.js';
|
|
20
20
|
import * as Post from './plugins/post.js';
|
|
21
21
|
import * as Profile from './plugins/profile.js';
|
|
22
|
+
import * as ReferenceListOptOut from './plugins/reference-list-opt-out.js';
|
|
22
23
|
import * as Repost from './plugins/repost.js';
|
|
23
24
|
import * as StarterPack from './plugins/starter-pack.js';
|
|
24
25
|
import * as Status from './plugins/status.js';
|
|
@@ -38,6 +39,7 @@ export declare class IndexingService {
|
|
|
38
39
|
profile: Profile.PluginType;
|
|
39
40
|
list: List.PluginType;
|
|
40
41
|
listItem: ListItem.PluginType;
|
|
42
|
+
referenceListOptOut: ReferenceListOptOut.PluginType;
|
|
41
43
|
listBlock: ListBlock.PluginType;
|
|
42
44
|
block: Block.PluginType;
|
|
43
45
|
feedGenerator: FeedGenerator.PluginType;
|
|
@@ -187,6 +189,14 @@ export declare class IndexingService {
|
|
|
187
189
|
sortAt: string;
|
|
188
190
|
subjectDid: string;
|
|
189
191
|
uri: string;
|
|
192
|
+
}> | import("./processor.js").RecordProcessor<l.RecordSchema<"tid", "app.bsky.graph.referencelistoptout", l.Validator<Omit<import("../../../lexicons/app/bsky/graph/referencelistoptout.defs.js").Main, "$type">, Omit<import("../../../lexicons/app/bsky/graph/referencelistoptout.defs.js").Main, "$type">>>, {
|
|
193
|
+
cid: string;
|
|
194
|
+
createdAt: string;
|
|
195
|
+
creator: string;
|
|
196
|
+
indexedAt: string;
|
|
197
|
+
sortAt: string;
|
|
198
|
+
subjectUri: string;
|
|
199
|
+
uri: string;
|
|
190
200
|
}> | 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">>>, {
|
|
191
201
|
cid: string;
|
|
192
202
|
createdAt: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/indexing/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAU,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,KAAK,GAAG,EAAE,CAAC,EAA4B,MAAM,cAAc,CAAA;AACpE,OAAO,EAEL,aAAa,EAId,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,KAAK,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAA;AAGhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAE9C,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;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/indexing/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,7 @@ import * as NotifDeclaration from './plugins/notif-declaration.js';
|
|
|
21
21
|
import * as Postgate from './plugins/post-gate.js';
|
|
22
22
|
import * as Post from './plugins/post.js';
|
|
23
23
|
import * as Profile from './plugins/profile.js';
|
|
24
|
+
import * as ReferenceListOptOut from './plugins/reference-list-opt-out.js';
|
|
24
25
|
import * as Repost from './plugins/repost.js';
|
|
25
26
|
import * as StarterPack from './plugins/starter-pack.js';
|
|
26
27
|
import * as Status from './plugins/status.js';
|
|
@@ -41,6 +42,7 @@ export class IndexingService {
|
|
|
41
42
|
profile: Profile.makePlugin(this.db, this.background),
|
|
42
43
|
list: List.makePlugin(this.db, this.background),
|
|
43
44
|
listItem: ListItem.makePlugin(this.db, this.background),
|
|
45
|
+
referenceListOptOut: ReferenceListOptOut.makePlugin(this.db, this.background),
|
|
44
46
|
listBlock: ListBlock.makePlugin(this.db, this.background),
|
|
45
47
|
block: Block.makePlugin(this.db, this.background),
|
|
46
48
|
feedGenerator: FeedGenerator.makePlugin(this.db, this.background),
|
|
@@ -252,6 +254,10 @@ export class IndexingService {
|
|
|
252
254
|
.deleteFrom('list_item')
|
|
253
255
|
.where('creator', '=', did)
|
|
254
256
|
.execute();
|
|
257
|
+
await this.db.db
|
|
258
|
+
.deleteFrom('reference_list_opt_out')
|
|
259
|
+
.where('creator', '=', did)
|
|
260
|
+
.execute();
|
|
255
261
|
await this.db.db.deleteFrom('list').where('creator', '=', did).execute();
|
|
256
262
|
// blocks
|
|
257
263
|
await this.db.db
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/data-plane/server/indexing/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Selectable, sql } from 'kysely'\nimport { DAY, HOUR } from '@atproto/common'\nimport { type IdResolver, getPds } from '@atproto/identity'\nimport { type Cid, l, parseCid, xrpc, xrpcSafe } from '@atproto/lex'\nimport {\n type VerifiedRepo,\n WriteOpAction,\n getAndParseRecord,\n readCarWithRoot,\n verifyRepo,\n} from '@atproto/repo'\nimport { AtUri, type DidString } from '@atproto/syntax'\nimport { com } from '../../../lexicons/index.js'\nimport { subLogger } from '../../../logger.js'\nimport { retryXrpc } from '../../../util/retry.js'\nimport type { BackgroundQueue } from '../background.js'\nimport type { Database } from '../db/index.js'\nimport type { Actor } from '../db/tables/actor.js'\nimport * as Block from './plugins/block.js'\nimport * as ChatDeclaration from './plugins/chat-declaration.js'\nimport * as FeedGenerator from './plugins/feed-generator.js'\nimport * as Follow from './plugins/follow.js'\nimport * as GermDeclaration from './plugins/germ-declaration.js'\nimport * as Labeler from './plugins/labeler.js'\nimport * as Like from './plugins/like.js'\nimport * as ListBlock from './plugins/list-block.js'\nimport * as ListItem from './plugins/list-item.js'\nimport * as List from './plugins/list.js'\nimport * as NotifDeclaration from './plugins/notif-declaration.js'\nimport * as Postgate from './plugins/post-gate.js'\nimport * as Post from './plugins/post.js'\nimport * as Profile from './plugins/profile.js'\nimport * as Repost from './plugins/repost.js'\nimport * as StarterPack from './plugins/starter-pack.js'\nimport * as Status from './plugins/status.js'\nimport * as Threadgate from './plugins/thread-gate.js'\nimport * as Verification from './plugins/verification.js'\n\nexport class IndexingService {\n records: {\n post: Post.PluginType\n threadGate: Threadgate.PluginType\n postGate: Postgate.PluginType\n like: Like.PluginType\n repost: Repost.PluginType\n follow: Follow.PluginType\n profile: Profile.PluginType\n list: List.PluginType\n listItem: ListItem.PluginType\n listBlock: ListBlock.PluginType\n block: Block.PluginType\n feedGenerator: FeedGenerator.PluginType\n starterPack: StarterPack.PluginType\n labeler: Labeler.PluginType\n notifDeclaration: NotifDeclaration.PluginType\n chatDeclaration: ChatDeclaration.PluginType\n germDeclaration: GermDeclaration.PluginType\n verification: Verification.PluginType\n status: Status.PluginType\n }\n\n constructor(\n public db: Database,\n public idResolver: IdResolver,\n public background: BackgroundQueue<Database>,\n ) {\n this.records = {\n post: Post.makePlugin(this.db, this.background),\n threadGate: Threadgate.makePlugin(this.db, this.background),\n postGate: Postgate.makePlugin(this.db, this.background),\n like: Like.makePlugin(this.db, this.background),\n repost: Repost.makePlugin(this.db, this.background),\n follow: Follow.makePlugin(this.db, this.background),\n profile: Profile.makePlugin(this.db, this.background),\n list: List.makePlugin(this.db, this.background),\n listItem: ListItem.makePlugin(this.db, this.background),\n listBlock: ListBlock.makePlugin(this.db, this.background),\n block: Block.makePlugin(this.db, this.background),\n feedGenerator: FeedGenerator.makePlugin(this.db, this.background),\n starterPack: StarterPack.makePlugin(this.db, this.background),\n labeler: Labeler.makePlugin(this.db, this.background),\n notifDeclaration: NotifDeclaration.makePlugin(this.db, this.background),\n chatDeclaration: ChatDeclaration.makePlugin(this.db, this.background),\n germDeclaration: GermDeclaration.makePlugin(this.db, this.background),\n verification: Verification.makePlugin(this.db, this.background),\n status: Status.makePlugin(this.db, this.background),\n }\n }\n\n transact(txn: Database) {\n txn.assertTransaction()\n return new IndexingService(txn, this.idResolver, this.background)\n }\n\n async indexRecord(\n uri: AtUri,\n cid: Cid,\n obj: unknown,\n action: WriteOpAction.Create | WriteOpAction.Update,\n timestamp: string,\n opts?: { disableNotifs?: boolean; disableLabels?: boolean },\n ) {\n this.db.assertNotTransaction()\n return this.db.transaction(async (txn) => {\n const indexingTx = this.transact(txn)\n const indexer = indexingTx.findIndexerForCollection(uri.collection)\n if (!indexer) return\n if (action === WriteOpAction.Create) {\n await indexer.insertRecord(uri, cid, obj, timestamp, opts)\n } else {\n await indexer.updateRecord(uri, cid, obj, timestamp)\n }\n })\n }\n\n async deleteRecord(uri: AtUri, cascading = false) {\n this.db.assertNotTransaction()\n await this.db.transaction(async (txn) => {\n const indexingTx = this.transact(txn)\n const indexer = indexingTx.findIndexerForCollection(uri.collection)\n if (!indexer) return\n await indexer.deleteRecord(uri, cascading)\n })\n }\n\n async indexHandle(did: string, timestamp: string, force = false) {\n this.db.assertNotTransaction()\n const actor = await this.db.db\n .selectFrom('actor')\n .where('did', '=', did)\n .selectAll()\n .executeTakeFirst()\n if (!force && !needsHandleReindex(actor, timestamp)) {\n return\n }\n const atpData = await this.idResolver.did.resolveAtprotoData(did, true)\n const handleToDid = await this.idResolver.handle.resolve(atpData.handle)\n\n const handle: string | null =\n did === handleToDid ? atpData.handle.toLowerCase() : null\n\n const actorWithHandle =\n handle !== null\n ? await this.db.db\n .selectFrom('actor')\n .where('handle', '=', handle)\n .selectAll()\n .executeTakeFirst()\n : null\n\n // handle contention\n if (handle && actorWithHandle && did !== actorWithHandle.did) {\n await this.db.db\n .updateTable('actor')\n .where('actor.did', '=', actorWithHandle.did)\n .set({ handle: null })\n .execute()\n }\n\n const actorInfo = { handle, indexedAt: timestamp }\n await this.db.db\n .insertInto('actor')\n .values({ did, ...actorInfo })\n .onConflict((oc) => oc.column('did').doUpdateSet(actorInfo))\n .returning('did')\n .executeTakeFirst()\n }\n\n async indexRepo(did: DidString, commit?: string) {\n this.db.assertNotTransaction()\n const now = new Date().toISOString()\n const { pds, signingKey } = await this.idResolver.did.resolveAtprotoData(\n did,\n true,\n )\n\n const { body: car } = await retryXrpc(() => {\n return xrpc(pds, com.atproto.sync.getRepo, { params: { did } })\n })\n const { root, blocks } = await readCarWithRoot(car)\n const verifiedRepo = await verifyRepo(blocks, root, did, signingKey)\n\n const currRecords = await this.getCurrentRecords(did)\n const repoRecords = formatCheckout(did, verifiedRepo)\n const diff = findDiffFromCheckout(currRecords, repoRecords)\n\n await Promise.all(\n diff.map(async (op) => {\n const { uri, cid } = op\n try {\n if (op.op === 'delete') {\n await this.deleteRecord(uri)\n } else {\n const parsed = await getAndParseRecord(blocks, cid)\n await this.indexRecord(\n uri,\n cid,\n parsed.record,\n op.op === 'create' ? WriteOpAction.Create : WriteOpAction.Update,\n now,\n )\n }\n } catch (err) {\n if (err instanceof l.LexValidationError) {\n subLogger.warn(\n { did, commit, uri: uri.toString(), cid: cid.toString() },\n 'skipping indexing of invalid record',\n )\n } else {\n subLogger.error(\n { err, did, commit, uri: uri.toString(), cid: cid.toString() },\n 'skipping indexing due to error processing record',\n )\n }\n }\n }),\n )\n }\n\n async getCurrentRecords(did: string) {\n const res = await this.db.db\n .selectFrom('record')\n .where('did', '=', did)\n .select(['uri', 'cid'])\n .execute()\n return res.reduce(\n (acc, cur) => {\n acc[cur.uri] = {\n uri: new AtUri(cur.uri),\n cid: parseCid(cur.cid),\n }\n return acc\n },\n {} as Record<string, { uri: AtUri; cid: Cid }>,\n )\n }\n\n async setCommitLastSeen(did: string, commit: Cid, rev: string) {\n const { ref } = this.db.db.dynamic\n await this.db.db\n .insertInto('actor_sync')\n .values({\n did,\n commitCid: commit.toString(),\n repoRev: rev ?? null,\n })\n .onConflict((oc) => {\n const excluded = (col: string) => ref(`excluded.${col}`)\n return oc.column('did').doUpdateSet({\n commitCid: sql`${excluded('commitCid')}`,\n repoRev: sql`${excluded('repoRev')}`,\n })\n })\n .execute()\n }\n\n findIndexerForCollection(collection: string) {\n for (const indexer of Object.values(this.records)) {\n if (indexer.collection === collection) {\n return indexer\n }\n }\n }\n\n async updateActorStatus(\n did: DidString,\n active: boolean,\n status: string = '',\n ) {\n let upstreamStatus: string | null\n if (active) {\n upstreamStatus = null\n } else if (['deactivated', 'suspended', 'takendown'].includes(status)) {\n upstreamStatus = status\n } else {\n throw new Error(`Unrecognized account status: ${status}`)\n }\n await this.db.db\n .updateTable('actor')\n .set({ upstreamStatus })\n .where('did', '=', did)\n .execute()\n }\n\n async deleteActor(did: DidString) {\n this.db.assertNotTransaction()\n const actorIsHosted = await this.getActorIsHosted(did)\n if (actorIsHosted === false) {\n await this.db.db.deleteFrom('actor').where('did', '=', did).execute()\n await this.unindexActor(did)\n await this.db.db\n .deleteFrom('notification')\n .where('did', '=', did)\n .execute()\n }\n }\n\n private async getActorIsHosted(did: DidString): Promise<boolean> {\n const doc = await this.idResolver.did.resolve(did, true)\n const pds = doc && getPds(doc)\n if (!pds) return false\n\n return retryXrpc(async () => {\n const res = await xrpcSafe(pds, com.atproto.sync.getLatestCommit, {\n params: { did },\n })\n if (res.success) return true\n if (res.error === 'RepoNotFound') return false\n throw res.reason // let retryXrpc() handle retries for transient errors\n })\n }\n\n async unindexActor(did: DidString) {\n this.db.assertNotTransaction()\n // per-record-type indexes\n await this.db.db.deleteFrom('profile').where('creator', '=', did).execute()\n await this.db.db.deleteFrom('follow').where('creator', '=', did).execute()\n await this.db.db.deleteFrom('repost').where('creator', '=', did).execute()\n await this.db.db.deleteFrom('like').where('creator', '=', did).execute()\n await this.db.db\n .deleteFrom('feed_generator')\n .where('creator', '=', did)\n .execute()\n await this.db.db.deleteFrom('labeler').where('creator', '=', did).execute()\n // lists\n await this.db.db\n .deleteFrom('list_item')\n .where('creator', '=', did)\n .execute()\n await this.db.db.deleteFrom('list').where('creator', '=', did).execute()\n // blocks\n await this.db.db\n .deleteFrom('actor_block')\n .where('creator', '=', did)\n .execute()\n await this.db.db\n .deleteFrom('list_block')\n .where('creator', '=', did)\n .execute()\n // posts\n const postByUser = (qb) =>\n qb\n .selectFrom('post')\n .where('post.creator', '=', did)\n .select('post.uri as uri')\n await this.db.db\n .deleteFrom('post_embed_image')\n .where('post_embed_image.postUri', 'in', postByUser)\n .execute()\n await this.db.db\n .deleteFrom('post_embed_external')\n .where('post_embed_external.postUri', 'in', postByUser)\n .execute()\n await this.db.db\n .deleteFrom('post_embed_record')\n .where('post_embed_record.postUri', 'in', postByUser)\n .execute()\n await this.db.db\n .deleteFrom('post_embed_video')\n .where('post_embed_video.postUri', 'in', postByUser)\n .execute()\n await this.db.db\n .deleteFrom('post_embed_gallery_image')\n .where('post_embed_gallery_image.postUri', 'in', postByUser)\n .execute()\n await this.db.db.deleteFrom('post').where('creator', '=', did).execute()\n await this.db.db\n .deleteFrom('thread_gate')\n .where('creator', '=', did)\n .execute()\n await this.db.db\n .deleteFrom('post_gate')\n .where('creator', '=', did)\n .execute()\n // notifications\n await this.db.db\n .deleteFrom('notification')\n .where('notification.author', '=', did)\n .execute()\n // generic record indexes\n await this.db.db\n .deleteFrom('duplicate_record')\n .where('duplicate_record.duplicateOf', 'in', (qb) =>\n qb\n .selectFrom('record')\n .where('record.did', '=', did)\n .select('record.uri as uri'),\n )\n .execute()\n await this.db.db.deleteFrom('record').where('did', '=', did).execute()\n }\n}\n\ntype UriAndCid = {\n uri: AtUri\n cid: Cid\n}\n\ntype IndexOp =\n | ({\n op: 'create' | 'update'\n } & UriAndCid)\n | ({ op: 'delete' } & UriAndCid)\n\nconst findDiffFromCheckout = (\n curr: Record<string, UriAndCid>,\n checkout: Record<string, UriAndCid>,\n): IndexOp[] => {\n const ops: IndexOp[] = []\n for (const uri of Object.keys(checkout)) {\n const record = checkout[uri]\n if (!curr[uri]) {\n ops.push({ op: 'create', ...record })\n } else {\n if (curr[uri].cid.equals(record.cid)) {\n // no-op\n continue\n }\n ops.push({ op: 'update', ...record })\n }\n }\n for (const uri of Object.keys(curr)) {\n const record = curr[uri]\n if (!checkout[uri]) {\n ops.push({ op: 'delete', ...record })\n }\n }\n return ops\n}\n\nconst formatCheckout = (\n did: string,\n verifiedRepo: VerifiedRepo,\n): Record<string, UriAndCid> => {\n const records: Record<string, UriAndCid> = {}\n for (const create of verifiedRepo.creates) {\n const uri = AtUri.make(did, create.collection, create.rkey)\n records[uri.toString()] = {\n uri,\n cid: create.cid,\n }\n }\n return records\n}\n\nconst needsHandleReindex = (\n actor: Selectable<Actor> | undefined,\n timestamp: string,\n) => {\n if (!actor) return true\n const timeDiff =\n new Date(timestamp).getTime() - new Date(actor.indexedAt).getTime()\n // revalidate daily\n if (timeDiff > DAY) return true\n // revalidate more aggressively for invalidated handles\n if (actor.handle === null && timeDiff > HOUR) return true\n return false\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/data-plane/server/indexing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,GAAG,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAmB,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAY,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACpE,OAAO,EAEL,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,UAAU,GACX,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,KAAK,EAAkB,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAIlD,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,mBAAmB,MAAM,qCAAqC,CAAA;AAC1E,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,MAAM,OAAO,eAAe;IAwB1B,YACS,EAAY,EACZ,UAAsB,EACtB,UAAqC;kBAFrC,EAAE;0BACF,UAAU;0BACV,UAAU;QAEjB,IAAI,CAAC,OAAO,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC;YAC/C,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC;YAC3D,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC;YACvD,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC;YAC/C,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC;YACnD,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC;YACnD,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC;YACrD,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC;YAC/C,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC;YACvD,mBAAmB,EAAE,mBAAmB,CAAC,UAAU,CACjD,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,UAAU,CAChB;YACD,SAAS,EAAE,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC;YACzD,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC;YACjD,aAAa,EAAE,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC;YACjE,WAAW,EAAE,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC;YAC7D,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC;YACrD,gBAAgB,EAAE,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC;YACvE,eAAe,EAAE,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC;YACrE,eAAe,EAAE,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC;YACrE,YAAY,EAAE,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC;YAC/D,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC;SACpD,CAAA;IACH,CAAC;IAED,QAAQ,CAAC,GAAa;QACpB,GAAG,CAAC,iBAAiB,EAAE,CAAA;QACvB,OAAO,IAAI,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IACnE,CAAC;IAED,KAAK,CAAC,WAAW,CACf,GAAU,EACV,GAAQ,EACR,GAAY,EACZ,MAAmD,EACnD,SAAiB,EACjB,IAA2D;QAE3D,IAAI,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAA;QAC9B,OAAO,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACvC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;YACrC,MAAM,OAAO,GAAG,UAAU,CAAC,wBAAwB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;YACnE,IAAI,CAAC,OAAO;gBAAE,OAAM;YACpB,IAAI,MAAM,KAAK,aAAa,CAAC,MAAM,EAAE,CAAC;gBACpC,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;YAC5D,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAA;YACtD,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAU,EAAE,SAAS,GAAG,KAAK;QAC9C,IAAI,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAA;QAC9B,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACtC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;YACrC,MAAM,OAAO,GAAG,UAAU,CAAC,wBAAwB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;YACnE,IAAI,CAAC,OAAO;gBAAE,OAAM;YACpB,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;QAC5C,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,GAAW,EAAE,SAAiB,EAAE,KAAK,GAAG,KAAK;QAC7D,IAAI,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAA;QAC9B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE;aAC3B,UAAU,CAAC,OAAO,CAAC;aACnB,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC;aACtB,SAAS,EAAE;aACX,gBAAgB,EAAE,CAAA;QACrB,IAAI,CAAC,KAAK,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;YACpD,OAAM;QACR,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACvE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAExE,MAAM,MAAM,GACV,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;QAE3D,MAAM,eAAe,GACnB,MAAM,KAAK,IAAI;YACb,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE;iBACb,UAAU,CAAC,OAAO,CAAC;iBACnB,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC;iBAC5B,SAAS,EAAE;iBACX,gBAAgB,EAAE;YACvB,CAAC,CAAC,IAAI,CAAA;QAEV,oBAAoB;QACpB,IAAI,MAAM,IAAI,eAAe,IAAI,GAAG,KAAK,eAAe,CAAC,GAAG,EAAE,CAAC;YAC7D,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE;iBACb,WAAW,CAAC,OAAO,CAAC;iBACpB,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,eAAe,CAAC,GAAG,CAAC;iBAC5C,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;iBACrB,OAAO,EAAE,CAAA;QACd,CAAC;QAED,MAAM,SAAS,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,CAAA;QAClD,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE;aACb,UAAU,CAAC,OAAO,CAAC;aACnB,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;aAC7B,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;aAC3D,SAAS,CAAC,KAAK,CAAC;aAChB,gBAAgB,EAAE,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAc,EAAE,MAAe;QAC7C,IAAI,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAA;QAC9B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QACpC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,kBAAkB,CACtE,GAAG,EACH,IAAI,CACL,CAAA;QAED,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;YACzC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAA;QACjE,CAAC,CAAC,CAAA;QACF,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAA;QACnD,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;QAEpE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAA;QACrD,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;QACrD,MAAM,IAAI,GAAG,oBAAoB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;QAE3D,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;YACpB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;YACvB,IAAI,CAAC;gBACH,IAAI,EAAE,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;oBACvB,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;gBAC9B,CAAC;qBAAM,CAAC;oBACN,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;oBACnD,MAAM,IAAI,CAAC,WAAW,CACpB,GAAG,EACH,GAAG,EACH,MAAM,CAAC,MAAM,EACb,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,EAChE,GAAG,CACJ,CAAA;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,CAAC,CAAC,kBAAkB,EAAE,CAAC;oBACxC,SAAS,CAAC,IAAI,CACZ,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,EACzD,qCAAqC,CACtC,CAAA;gBACH,CAAC;qBAAM,CAAC;oBACN,SAAS,CAAC,KAAK,CACb,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,EAC9D,kDAAkD,CACnD,CAAA;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CACH,CAAA;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,GAAW;QACjC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE;aACzB,UAAU,CAAC,QAAQ,CAAC;aACpB,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC;aACtB,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;aACtB,OAAO,EAAE,CAAA;QACZ,OAAO,GAAG,CAAC,MAAM,CACf,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACX,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG;gBACb,GAAG,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;gBACvB,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;aACvB,CAAA;YACD,OAAO,GAAG,CAAA;QACZ,CAAC,EACD,EAA8C,CAC/C,CAAA;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,GAAW,EAAE,MAAW,EAAE,GAAW;QAC3D,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAA;QAClC,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE;aACb,UAAU,CAAC,YAAY,CAAC;aACxB,MAAM,CAAC;YACN,GAAG;YACH,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE;YAC5B,OAAO,EAAE,GAAG,IAAI,IAAI;SACrB,CAAC;aACD,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE;YACjB,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,GAAG,EAAE,CAAC,CAAA;YACxD,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;gBAClC,SAAS,EAAE,GAAG,CAAA,GAAG,QAAQ,CAAC,WAAW,CAAC,EAAE;gBACxC,OAAO,EAAE,GAAG,CAAA,GAAG,QAAQ,CAAC,SAAS,CAAC,EAAE;aACrC,CAAC,CAAA;QACJ,CAAC,CAAC;aACD,OAAO,EAAE,CAAA;IACd,CAAC;IAED,wBAAwB,CAAC,UAAkB;QACzC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAClD,IAAI,OAAO,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;gBACtC,OAAO,OAAO,CAAA;YAChB,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,GAAc,EACd,MAAe,EACf,MAAM,GAAW,EAAE;QAEnB,IAAI,cAA6B,CAAA;QACjC,IAAI,MAAM,EAAE,CAAC;YACX,cAAc,GAAG,IAAI,CAAA;QACvB,CAAC;aAAM,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACtE,cAAc,GAAG,MAAM,CAAA;QACzB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,gCAAgC,MAAM,EAAE,CAAC,CAAA;QAC3D,CAAC;QACD,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE;aACb,WAAW,CAAC,OAAO,CAAC;aACpB,GAAG,CAAC,EAAE,cAAc,EAAE,CAAC;aACvB,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC;aACtB,OAAO,EAAE,CAAA;IACd,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,GAAc;QAC9B,IAAI,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAA;QAC9B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;QACtD,IAAI,aAAa,KAAK,KAAK,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAA;YACrE,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC5B,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE;iBACb,UAAU,CAAC,cAAc,CAAC;iBAC1B,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC;iBACtB,OAAO,EAAE,CAAA;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,GAAc;QAC3C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACxD,MAAM,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAA;QAEtB,OAAO,SAAS,CAAC,KAAK,IAAI,EAAE;YAC1B,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE;gBAChE,MAAM,EAAE,EAAE,GAAG,EAAE;aAChB,CAAC,CAAA;YACF,IAAI,GAAG,CAAC,OAAO;gBAAE,OAAO,IAAI,CAAA;YAC5B,IAAI,GAAG,CAAC,KAAK,KAAK,cAAc;gBAAE,OAAO,KAAK,CAAA;YAC9C,MAAM,GAAG,CAAC,MAAM,CAAA,CAAC,sDAAsD;QACzE,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAc;QAC/B,IAAI,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAA;QAC9B,0BAA0B;QAC1B,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAA;QAC3E,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAA;QAC1E,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAA;QAC1E,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAA;QACxE,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE;aACb,UAAU,CAAC,gBAAgB,CAAC;aAC5B,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC;aAC1B,OAAO,EAAE,CAAA;QACZ,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAA;QAC3E,QAAQ;QACR,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE;aACb,UAAU,CAAC,WAAW,CAAC;aACvB,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC;aAC1B,OAAO,EAAE,CAAA;QACZ,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE;aACb,UAAU,CAAC,wBAAwB,CAAC;aACpC,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC;aAC1B,OAAO,EAAE,CAAA;QACZ,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAA;QACxE,SAAS;QACT,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE;aACb,UAAU,CAAC,aAAa,CAAC;aACzB,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC;aAC1B,OAAO,EAAE,CAAA;QACZ,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE;aACb,UAAU,CAAC,YAAY,CAAC;aACxB,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC;aAC1B,OAAO,EAAE,CAAA;QACZ,QAAQ;QACR,MAAM,UAAU,GAAG,CAAC,EAAE,EAAE,EAAE,CACxB,EAAE;aACC,UAAU,CAAC,MAAM,CAAC;aAClB,KAAK,CAAC,cAAc,EAAE,GAAG,EAAE,GAAG,CAAC;aAC/B,MAAM,CAAC,iBAAiB,CAAC,CAAA;QAC9B,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE;aACb,UAAU,CAAC,kBAAkB,CAAC;aAC9B,KAAK,CAAC,0BAA0B,EAAE,IAAI,EAAE,UAAU,CAAC;aACnD,OAAO,EAAE,CAAA;QACZ,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE;aACb,UAAU,CAAC,qBAAqB,CAAC;aACjC,KAAK,CAAC,6BAA6B,EAAE,IAAI,EAAE,UAAU,CAAC;aACtD,OAAO,EAAE,CAAA;QACZ,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE;aACb,UAAU,CAAC,mBAAmB,CAAC;aAC/B,KAAK,CAAC,2BAA2B,EAAE,IAAI,EAAE,UAAU,CAAC;aACpD,OAAO,EAAE,CAAA;QACZ,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE;aACb,UAAU,CAAC,kBAAkB,CAAC;aAC9B,KAAK,CAAC,0BAA0B,EAAE,IAAI,EAAE,UAAU,CAAC;aACnD,OAAO,EAAE,CAAA;QACZ,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE;aACb,UAAU,CAAC,0BAA0B,CAAC;aACtC,KAAK,CAAC,kCAAkC,EAAE,IAAI,EAAE,UAAU,CAAC;aAC3D,OAAO,EAAE,CAAA;QACZ,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAA;QACxE,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE;aACb,UAAU,CAAC,aAAa,CAAC;aACzB,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC;aAC1B,OAAO,EAAE,CAAA;QACZ,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE;aACb,UAAU,CAAC,WAAW,CAAC;aACvB,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC;aAC1B,OAAO,EAAE,CAAA;QACZ,gBAAgB;QAChB,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE;aACb,UAAU,CAAC,cAAc,CAAC;aAC1B,KAAK,CAAC,qBAAqB,EAAE,GAAG,EAAE,GAAG,CAAC;aACtC,OAAO,EAAE,CAAA;QACZ,yBAAyB;QACzB,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE;aACb,UAAU,CAAC,kBAAkB,CAAC;aAC9B,KAAK,CAAC,8BAA8B,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAClD,EAAE;aACC,UAAU,CAAC,QAAQ,CAAC;aACpB,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC;aAC7B,MAAM,CAAC,mBAAmB,CAAC,CAC/B;aACA,OAAO,EAAE,CAAA;QACZ,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAA;IACxE,CAAC;CACF;AAaD,MAAM,oBAAoB,GAAG,CAC3B,IAA+B,EAC/B,QAAmC,EACxB,EAAE;IACb,MAAM,GAAG,GAAc,EAAE,CAAA;IACzB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACf,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;QACvC,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrC,QAAQ;gBACR,SAAQ;YACV,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;QACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,CACrB,GAAW,EACX,YAA0B,EACC,EAAE;IAC7B,MAAM,OAAO,GAA8B,EAAE,CAAA;IAC7C,KAAK,MAAM,MAAM,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;QAC3D,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG;YACxB,GAAG;YACH,GAAG,EAAE,MAAM,CAAC,GAAG;SAChB,CAAA;IACH,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,CACzB,KAAoC,EACpC,SAAiB,EACjB,EAAE;IACF,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAA;IACvB,MAAM,QAAQ,GACZ,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAA;IACrE,mBAAmB;IACnB,IAAI,QAAQ,GAAG,GAAG;QAAE,OAAO,IAAI,CAAA;IAC/B,uDAAuD;IACvD,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,QAAQ,GAAG,IAAI;QAAE,OAAO,IAAI,CAAA;IACzD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA","sourcesContent":["import { type Selectable, sql } from 'kysely'\nimport { DAY, HOUR } from '@atproto/common'\nimport { type IdResolver, getPds } from '@atproto/identity'\nimport { type Cid, l, parseCid, xrpc, xrpcSafe } from '@atproto/lex'\nimport {\n type VerifiedRepo,\n WriteOpAction,\n getAndParseRecord,\n readCarWithRoot,\n verifyRepo,\n} from '@atproto/repo'\nimport { AtUri, type DidString } from '@atproto/syntax'\nimport { com } from '../../../lexicons/index.js'\nimport { subLogger } from '../../../logger.js'\nimport { retryXrpc } from '../../../util/retry.js'\nimport type { BackgroundQueue } from '../background.js'\nimport type { Database } from '../db/index.js'\nimport type { Actor } from '../db/tables/actor.js'\nimport * as Block from './plugins/block.js'\nimport * as ChatDeclaration from './plugins/chat-declaration.js'\nimport * as FeedGenerator from './plugins/feed-generator.js'\nimport * as Follow from './plugins/follow.js'\nimport * as GermDeclaration from './plugins/germ-declaration.js'\nimport * as Labeler from './plugins/labeler.js'\nimport * as Like from './plugins/like.js'\nimport * as ListBlock from './plugins/list-block.js'\nimport * as ListItem from './plugins/list-item.js'\nimport * as List from './plugins/list.js'\nimport * as NotifDeclaration from './plugins/notif-declaration.js'\nimport * as Postgate from './plugins/post-gate.js'\nimport * as Post from './plugins/post.js'\nimport * as Profile from './plugins/profile.js'\nimport * as ReferenceListOptOut from './plugins/reference-list-opt-out.js'\nimport * as Repost from './plugins/repost.js'\nimport * as StarterPack from './plugins/starter-pack.js'\nimport * as Status from './plugins/status.js'\nimport * as Threadgate from './plugins/thread-gate.js'\nimport * as Verification from './plugins/verification.js'\n\nexport class IndexingService {\n records: {\n post: Post.PluginType\n threadGate: Threadgate.PluginType\n postGate: Postgate.PluginType\n like: Like.PluginType\n repost: Repost.PluginType\n follow: Follow.PluginType\n profile: Profile.PluginType\n list: List.PluginType\n listItem: ListItem.PluginType\n referenceListOptOut: ReferenceListOptOut.PluginType\n listBlock: ListBlock.PluginType\n block: Block.PluginType\n feedGenerator: FeedGenerator.PluginType\n starterPack: StarterPack.PluginType\n labeler: Labeler.PluginType\n notifDeclaration: NotifDeclaration.PluginType\n chatDeclaration: ChatDeclaration.PluginType\n germDeclaration: GermDeclaration.PluginType\n verification: Verification.PluginType\n status: Status.PluginType\n }\n\n constructor(\n public db: Database,\n public idResolver: IdResolver,\n public background: BackgroundQueue<Database>,\n ) {\n this.records = {\n post: Post.makePlugin(this.db, this.background),\n threadGate: Threadgate.makePlugin(this.db, this.background),\n postGate: Postgate.makePlugin(this.db, this.background),\n like: Like.makePlugin(this.db, this.background),\n repost: Repost.makePlugin(this.db, this.background),\n follow: Follow.makePlugin(this.db, this.background),\n profile: Profile.makePlugin(this.db, this.background),\n list: List.makePlugin(this.db, this.background),\n listItem: ListItem.makePlugin(this.db, this.background),\n referenceListOptOut: ReferenceListOptOut.makePlugin(\n this.db,\n this.background,\n ),\n listBlock: ListBlock.makePlugin(this.db, this.background),\n block: Block.makePlugin(this.db, this.background),\n feedGenerator: FeedGenerator.makePlugin(this.db, this.background),\n starterPack: StarterPack.makePlugin(this.db, this.background),\n labeler: Labeler.makePlugin(this.db, this.background),\n notifDeclaration: NotifDeclaration.makePlugin(this.db, this.background),\n chatDeclaration: ChatDeclaration.makePlugin(this.db, this.background),\n germDeclaration: GermDeclaration.makePlugin(this.db, this.background),\n verification: Verification.makePlugin(this.db, this.background),\n status: Status.makePlugin(this.db, this.background),\n }\n }\n\n transact(txn: Database) {\n txn.assertTransaction()\n return new IndexingService(txn, this.idResolver, this.background)\n }\n\n async indexRecord(\n uri: AtUri,\n cid: Cid,\n obj: unknown,\n action: WriteOpAction.Create | WriteOpAction.Update,\n timestamp: string,\n opts?: { disableNotifs?: boolean; disableLabels?: boolean },\n ) {\n this.db.assertNotTransaction()\n return this.db.transaction(async (txn) => {\n const indexingTx = this.transact(txn)\n const indexer = indexingTx.findIndexerForCollection(uri.collection)\n if (!indexer) return\n if (action === WriteOpAction.Create) {\n await indexer.insertRecord(uri, cid, obj, timestamp, opts)\n } else {\n await indexer.updateRecord(uri, cid, obj, timestamp)\n }\n })\n }\n\n async deleteRecord(uri: AtUri, cascading = false) {\n this.db.assertNotTransaction()\n await this.db.transaction(async (txn) => {\n const indexingTx = this.transact(txn)\n const indexer = indexingTx.findIndexerForCollection(uri.collection)\n if (!indexer) return\n await indexer.deleteRecord(uri, cascading)\n })\n }\n\n async indexHandle(did: string, timestamp: string, force = false) {\n this.db.assertNotTransaction()\n const actor = await this.db.db\n .selectFrom('actor')\n .where('did', '=', did)\n .selectAll()\n .executeTakeFirst()\n if (!force && !needsHandleReindex(actor, timestamp)) {\n return\n }\n const atpData = await this.idResolver.did.resolveAtprotoData(did, true)\n const handleToDid = await this.idResolver.handle.resolve(atpData.handle)\n\n const handle: string | null =\n did === handleToDid ? atpData.handle.toLowerCase() : null\n\n const actorWithHandle =\n handle !== null\n ? await this.db.db\n .selectFrom('actor')\n .where('handle', '=', handle)\n .selectAll()\n .executeTakeFirst()\n : null\n\n // handle contention\n if (handle && actorWithHandle && did !== actorWithHandle.did) {\n await this.db.db\n .updateTable('actor')\n .where('actor.did', '=', actorWithHandle.did)\n .set({ handle: null })\n .execute()\n }\n\n const actorInfo = { handle, indexedAt: timestamp }\n await this.db.db\n .insertInto('actor')\n .values({ did, ...actorInfo })\n .onConflict((oc) => oc.column('did').doUpdateSet(actorInfo))\n .returning('did')\n .executeTakeFirst()\n }\n\n async indexRepo(did: DidString, commit?: string) {\n this.db.assertNotTransaction()\n const now = new Date().toISOString()\n const { pds, signingKey } = await this.idResolver.did.resolveAtprotoData(\n did,\n true,\n )\n\n const { body: car } = await retryXrpc(() => {\n return xrpc(pds, com.atproto.sync.getRepo, { params: { did } })\n })\n const { root, blocks } = await readCarWithRoot(car)\n const verifiedRepo = await verifyRepo(blocks, root, did, signingKey)\n\n const currRecords = await this.getCurrentRecords(did)\n const repoRecords = formatCheckout(did, verifiedRepo)\n const diff = findDiffFromCheckout(currRecords, repoRecords)\n\n await Promise.all(\n diff.map(async (op) => {\n const { uri, cid } = op\n try {\n if (op.op === 'delete') {\n await this.deleteRecord(uri)\n } else {\n const parsed = await getAndParseRecord(blocks, cid)\n await this.indexRecord(\n uri,\n cid,\n parsed.record,\n op.op === 'create' ? WriteOpAction.Create : WriteOpAction.Update,\n now,\n )\n }\n } catch (err) {\n if (err instanceof l.LexValidationError) {\n subLogger.warn(\n { did, commit, uri: uri.toString(), cid: cid.toString() },\n 'skipping indexing of invalid record',\n )\n } else {\n subLogger.error(\n { err, did, commit, uri: uri.toString(), cid: cid.toString() },\n 'skipping indexing due to error processing record',\n )\n }\n }\n }),\n )\n }\n\n async getCurrentRecords(did: string) {\n const res = await this.db.db\n .selectFrom('record')\n .where('did', '=', did)\n .select(['uri', 'cid'])\n .execute()\n return res.reduce(\n (acc, cur) => {\n acc[cur.uri] = {\n uri: new AtUri(cur.uri),\n cid: parseCid(cur.cid),\n }\n return acc\n },\n {} as Record<string, { uri: AtUri; cid: Cid }>,\n )\n }\n\n async setCommitLastSeen(did: string, commit: Cid, rev: string) {\n const { ref } = this.db.db.dynamic\n await this.db.db\n .insertInto('actor_sync')\n .values({\n did,\n commitCid: commit.toString(),\n repoRev: rev ?? null,\n })\n .onConflict((oc) => {\n const excluded = (col: string) => ref(`excluded.${col}`)\n return oc.column('did').doUpdateSet({\n commitCid: sql`${excluded('commitCid')}`,\n repoRev: sql`${excluded('repoRev')}`,\n })\n })\n .execute()\n }\n\n findIndexerForCollection(collection: string) {\n for (const indexer of Object.values(this.records)) {\n if (indexer.collection === collection) {\n return indexer\n }\n }\n }\n\n async updateActorStatus(\n did: DidString,\n active: boolean,\n status: string = '',\n ) {\n let upstreamStatus: string | null\n if (active) {\n upstreamStatus = null\n } else if (['deactivated', 'suspended', 'takendown'].includes(status)) {\n upstreamStatus = status\n } else {\n throw new Error(`Unrecognized account status: ${status}`)\n }\n await this.db.db\n .updateTable('actor')\n .set({ upstreamStatus })\n .where('did', '=', did)\n .execute()\n }\n\n async deleteActor(did: DidString) {\n this.db.assertNotTransaction()\n const actorIsHosted = await this.getActorIsHosted(did)\n if (actorIsHosted === false) {\n await this.db.db.deleteFrom('actor').where('did', '=', did).execute()\n await this.unindexActor(did)\n await this.db.db\n .deleteFrom('notification')\n .where('did', '=', did)\n .execute()\n }\n }\n\n private async getActorIsHosted(did: DidString): Promise<boolean> {\n const doc = await this.idResolver.did.resolve(did, true)\n const pds = doc && getPds(doc)\n if (!pds) return false\n\n return retryXrpc(async () => {\n const res = await xrpcSafe(pds, com.atproto.sync.getLatestCommit, {\n params: { did },\n })\n if (res.success) return true\n if (res.error === 'RepoNotFound') return false\n throw res.reason // let retryXrpc() handle retries for transient errors\n })\n }\n\n async unindexActor(did: DidString) {\n this.db.assertNotTransaction()\n // per-record-type indexes\n await this.db.db.deleteFrom('profile').where('creator', '=', did).execute()\n await this.db.db.deleteFrom('follow').where('creator', '=', did).execute()\n await this.db.db.deleteFrom('repost').where('creator', '=', did).execute()\n await this.db.db.deleteFrom('like').where('creator', '=', did).execute()\n await this.db.db\n .deleteFrom('feed_generator')\n .where('creator', '=', did)\n .execute()\n await this.db.db.deleteFrom('labeler').where('creator', '=', did).execute()\n // lists\n await this.db.db\n .deleteFrom('list_item')\n .where('creator', '=', did)\n .execute()\n await this.db.db\n .deleteFrom('reference_list_opt_out')\n .where('creator', '=', did)\n .execute()\n await this.db.db.deleteFrom('list').where('creator', '=', did).execute()\n // blocks\n await this.db.db\n .deleteFrom('actor_block')\n .where('creator', '=', did)\n .execute()\n await this.db.db\n .deleteFrom('list_block')\n .where('creator', '=', did)\n .execute()\n // posts\n const postByUser = (qb) =>\n qb\n .selectFrom('post')\n .where('post.creator', '=', did)\n .select('post.uri as uri')\n await this.db.db\n .deleteFrom('post_embed_image')\n .where('post_embed_image.postUri', 'in', postByUser)\n .execute()\n await this.db.db\n .deleteFrom('post_embed_external')\n .where('post_embed_external.postUri', 'in', postByUser)\n .execute()\n await this.db.db\n .deleteFrom('post_embed_record')\n .where('post_embed_record.postUri', 'in', postByUser)\n .execute()\n await this.db.db\n .deleteFrom('post_embed_video')\n .where('post_embed_video.postUri', 'in', postByUser)\n .execute()\n await this.db.db\n .deleteFrom('post_embed_gallery_image')\n .where('post_embed_gallery_image.postUri', 'in', postByUser)\n .execute()\n await this.db.db.deleteFrom('post').where('creator', '=', did).execute()\n await this.db.db\n .deleteFrom('thread_gate')\n .where('creator', '=', did)\n .execute()\n await this.db.db\n .deleteFrom('post_gate')\n .where('creator', '=', did)\n .execute()\n // notifications\n await this.db.db\n .deleteFrom('notification')\n .where('notification.author', '=', did)\n .execute()\n // generic record indexes\n await this.db.db\n .deleteFrom('duplicate_record')\n .where('duplicate_record.duplicateOf', 'in', (qb) =>\n qb\n .selectFrom('record')\n .where('record.did', '=', did)\n .select('record.uri as uri'),\n )\n .execute()\n await this.db.db.deleteFrom('record').where('did', '=', did).execute()\n }\n}\n\ntype UriAndCid = {\n uri: AtUri\n cid: Cid\n}\n\ntype IndexOp =\n | ({\n op: 'create' | 'update'\n } & UriAndCid)\n | ({ op: 'delete' } & UriAndCid)\n\nconst findDiffFromCheckout = (\n curr: Record<string, UriAndCid>,\n checkout: Record<string, UriAndCid>,\n): IndexOp[] => {\n const ops: IndexOp[] = []\n for (const uri of Object.keys(checkout)) {\n const record = checkout[uri]\n if (!curr[uri]) {\n ops.push({ op: 'create', ...record })\n } else {\n if (curr[uri].cid.equals(record.cid)) {\n // no-op\n continue\n }\n ops.push({ op: 'update', ...record })\n }\n }\n for (const uri of Object.keys(curr)) {\n const record = curr[uri]\n if (!checkout[uri]) {\n ops.push({ op: 'delete', ...record })\n }\n }\n return ops\n}\n\nconst formatCheckout = (\n did: string,\n verifiedRepo: VerifiedRepo,\n): Record<string, UriAndCid> => {\n const records: Record<string, UriAndCid> = {}\n for (const create of verifiedRepo.creates) {\n const uri = AtUri.make(did, create.collection, create.rkey)\n records[uri.toString()] = {\n uri,\n cid: create.cid,\n }\n }\n return records\n}\n\nconst needsHandleReindex = (\n actor: Selectable<Actor> | undefined,\n timestamp: string,\n) => {\n if (!actor) return true\n const timeDiff =\n new Date(timestamp).getTime() - new Date(actor.indexedAt).getTime()\n // revalidate daily\n if (timeDiff > DAY) return true\n // revalidate more aggressively for invalidated handles\n if (actor.handle === null && timeDiff > HOUR) return true\n return false\n}\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { app } from '../../../../lexicons/index.js';
|
|
2
|
+
import type { BackgroundQueue } from '../../background.js';
|
|
3
|
+
import type { Database } from '../../db/index.js';
|
|
4
|
+
import { RecordProcessor } from '../processor.js';
|
|
5
|
+
export type PluginType = ReturnType<typeof makePlugin>;
|
|
6
|
+
export declare const makePlugin: (db: Database, background: BackgroundQueue<Database>) => RecordProcessor<import("@atproto/lex").RecordSchema<"tid", "app.bsky.graph.referencelistoptout", import("@atproto/lex").Validator<Omit<app.bsky.graph.referencelistoptout.Main, "$type">, Omit<app.bsky.graph.referencelistoptout.Main, "$type">>>, {
|
|
7
|
+
cid: string;
|
|
8
|
+
createdAt: string;
|
|
9
|
+
creator: string;
|
|
10
|
+
indexedAt: string;
|
|
11
|
+
sortAt: string;
|
|
12
|
+
subjectUri: string;
|
|
13
|
+
uri: string;
|
|
14
|
+
}>;
|
|
15
|
+
export default makePlugin;
|
|
16
|
+
//# sourceMappingURL=reference-list-opt-out.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference-list-opt-out.d.ts","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/reference-list-opt-out.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAA;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAK1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AA+EjD,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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { AtUri, normalizeDatetimeAlways } from '@atproto/syntax';
|
|
2
|
+
import { app } from '../../../../lexicons/index.js';
|
|
3
|
+
import { RecordProcessor } from '../processor.js';
|
|
4
|
+
const parseSubject = (subject) => {
|
|
5
|
+
try {
|
|
6
|
+
const uri = new AtUri(subject);
|
|
7
|
+
if (!uri.did ||
|
|
8
|
+
!uri.rkeySafe ||
|
|
9
|
+
uri.collection !== app.bsky.graph.list.$type ||
|
|
10
|
+
uri.pathname.split('/').filter(Boolean).length !== 2 ||
|
|
11
|
+
uri.search ||
|
|
12
|
+
uri.hash ||
|
|
13
|
+
uri.toString() !== subject) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
return uri;
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
const insertFn = async (db, uri, cid, obj, timestamp) => {
|
|
23
|
+
const subject = parseSubject(obj.subject);
|
|
24
|
+
if (!subject)
|
|
25
|
+
return null;
|
|
26
|
+
const inserted = await db
|
|
27
|
+
.insertInto('reference_list_opt_out')
|
|
28
|
+
.values({
|
|
29
|
+
uri: uri.toString(),
|
|
30
|
+
cid: cid.toString(),
|
|
31
|
+
creator: uri.host,
|
|
32
|
+
subjectUri: subject.toString(),
|
|
33
|
+
createdAt: normalizeDatetimeAlways(obj.createdAt),
|
|
34
|
+
indexedAt: timestamp,
|
|
35
|
+
})
|
|
36
|
+
.onConflict((oc) => oc.doNothing())
|
|
37
|
+
.returningAll()
|
|
38
|
+
.executeTakeFirst();
|
|
39
|
+
return inserted || null;
|
|
40
|
+
};
|
|
41
|
+
const findDuplicate = async (db, uri, obj) => {
|
|
42
|
+
const subject = parseSubject(obj.subject);
|
|
43
|
+
if (!subject)
|
|
44
|
+
return null;
|
|
45
|
+
const found = await db
|
|
46
|
+
.selectFrom('reference_list_opt_out')
|
|
47
|
+
.where('creator', '=', uri.host)
|
|
48
|
+
.where('subjectUri', '=', subject.toString())
|
|
49
|
+
.select('uri')
|
|
50
|
+
.executeTakeFirst();
|
|
51
|
+
return found ? new AtUri(found.uri) : null;
|
|
52
|
+
};
|
|
53
|
+
const deleteFn = async (db, uri) => {
|
|
54
|
+
const deleted = await db
|
|
55
|
+
.deleteFrom('reference_list_opt_out')
|
|
56
|
+
.where('uri', '=', uri.toString())
|
|
57
|
+
.returningAll()
|
|
58
|
+
.executeTakeFirst();
|
|
59
|
+
return deleted || null;
|
|
60
|
+
};
|
|
61
|
+
export const makePlugin = (db, background) => {
|
|
62
|
+
return new RecordProcessor(db, background, {
|
|
63
|
+
schema: app.bsky.graph.referencelistoptout.main,
|
|
64
|
+
insertFn,
|
|
65
|
+
findDuplicate,
|
|
66
|
+
deleteFn,
|
|
67
|
+
notifsForInsert: () => [],
|
|
68
|
+
notifsForDelete: () => ({ notifs: [], toDelete: [] }),
|
|
69
|
+
promoteDuplicateOnDelete: false,
|
|
70
|
+
});
|
|
71
|
+
};
|
|
72
|
+
export default makePlugin;
|
|
73
|
+
//# sourceMappingURL=reference-list-opt-out.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference-list-opt-out.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/reference-list-opt-out.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Selectable } from 'kysely'\nimport type { Cid } from '@atproto/lex'\nimport { AtUri, normalizeDatetimeAlways } from '@atproto/syntax'\nimport { app } from '../../../../lexicons/index.js'\nimport type { BackgroundQueue } from '../../background.js'\nimport type {\n DatabaseSchema,\n DatabaseSchemaType,\n} from '../../db/database-schema.js'\nimport type { Database } from '../../db/index.js'\nimport { RecordProcessor } from '../processor.js'\n\ntype IndexedReferenceListOptOut = Selectable<\n DatabaseSchemaType['reference_list_opt_out']\n>\n\nconst parseSubject = (subject: string): AtUri | null => {\n try {\n const uri = new AtUri(subject)\n if (\n !uri.did ||\n !uri.rkeySafe ||\n uri.collection !== app.bsky.graph.list.$type ||\n uri.pathname.split('/').filter(Boolean).length !== 2 ||\n uri.search ||\n uri.hash ||\n uri.toString() !== subject\n ) {\n return null\n }\n return uri\n } catch {\n return null\n }\n}\n\nconst insertFn = async (\n db: DatabaseSchema,\n uri: AtUri,\n cid: Cid,\n obj: app.bsky.graph.referencelistoptout.Main,\n timestamp: string,\n): Promise<IndexedReferenceListOptOut | null> => {\n const subject = parseSubject(obj.subject)\n if (!subject) return null\n const inserted = await db\n .insertInto('reference_list_opt_out')\n .values({\n uri: uri.toString(),\n cid: cid.toString(),\n creator: uri.host,\n subjectUri: subject.toString(),\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.referencelistoptout.Main,\n): Promise<AtUri | null> => {\n const subject = parseSubject(obj.subject)\n if (!subject) return null\n const found = await db\n .selectFrom('reference_list_opt_out')\n .where('creator', '=', uri.host)\n .where('subjectUri', '=', subject.toString())\n .select('uri')\n .executeTakeFirst()\n return found ? new AtUri(found.uri) : null\n}\n\nconst deleteFn = async (\n db: DatabaseSchema,\n uri: AtUri,\n): Promise<IndexedReferenceListOptOut | null> => {\n const deleted = await db\n .deleteFrom('reference_list_opt_out')\n .where('uri', '=', uri.toString())\n .returningAll()\n .executeTakeFirst()\n return deleted || null\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.referencelistoptout.main,\n insertFn,\n findDuplicate,\n deleteFn,\n notifsForInsert: () => [],\n notifsForDelete: () => ({ notifs: [], toDelete: [] }),\n promoteDuplicateOnDelete: false,\n })\n}\n\nexport default makePlugin\n"]}
|
|
@@ -16,6 +16,7 @@ type RecordProcessorOptions<TSchema extends l.RecordSchema, TRow> = {
|
|
|
16
16
|
toDelete: string[];
|
|
17
17
|
};
|
|
18
18
|
updateAggregates?: (db: DatabaseSchema, obj: TRow) => Promise<void>;
|
|
19
|
+
promoteDuplicateOnDelete?: boolean;
|
|
19
20
|
};
|
|
20
21
|
type Notif = Insertable<Notification>;
|
|
21
22
|
export declare class RecordProcessor<TSchema extends l.RecordSchema, TRow> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processor.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/indexing/processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAExC,OAAO,EACL,KAAK,GAAG,EACR,KAAK,CAAC,EAIP,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAIhE,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;
|
|
1
|
+
{"version":3,"file":"processor.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/indexing/processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -125,6 +125,9 @@ export class RecordProcessor {
|
|
|
125
125
|
return this.handleNotifs({ deleted });
|
|
126
126
|
}
|
|
127
127
|
else {
|
|
128
|
+
if (this.options.promoteDuplicateOnDelete === false) {
|
|
129
|
+
return this.handleNotifs({ deleted });
|
|
130
|
+
}
|
|
128
131
|
const found = await this.db
|
|
129
132
|
.selectFrom('duplicate_record')
|
|
130
133
|
.innerJoin('record', 'record.uri', 'duplicate_record.uri')
|
|
@@ -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 type { Insertable } from 'kysely'\nimport { chunkArray } from '@atproto/common'\nimport {\n type Cid,\n type l,\n lexParse,\n lexStringify,\n parseCid,\n} from '@atproto/lex'\nimport { AtUri } from '@atproto/syntax'\nimport type { BackgroundQueue } from '../background.js'\nimport type { DatabaseSchema } from '../db/database-schema.js'\nimport type { Database } from '../db/index.js'\nimport type { 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"]}
|
|
1
|
+
{"version":3,"file":"processor.js","sourceRoot":"","sources":["../../../../src/data-plane/server/indexing/processor.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Insertable } from 'kysely'\nimport { chunkArray } from '@atproto/common'\nimport {\n type Cid,\n type l,\n lexParse,\n lexStringify,\n parseCid,\n} from '@atproto/lex'\nimport { AtUri } from '@atproto/syntax'\nimport type { BackgroundQueue } from '../background.js'\nimport type { DatabaseSchema } from '../db/database-schema.js'\nimport type { Database } from '../db/index.js'\nimport type { 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 promoteDuplicateOnDelete?: boolean\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 if (this.options.promoteDuplicateOnDelete === false) {\n return this.handleNotifs({ deleted })\n }\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"]}
|