@atproto/bsky 0.0.277 → 0.0.280

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/dist/api/app/bsky/actor/getSuggestions.d.ts.map +1 -1
  3. package/dist/api/app/bsky/actor/getSuggestions.js +5 -5
  4. package/dist/api/app/bsky/actor/getSuggestions.js.map +1 -1
  5. package/dist/api/app/bsky/actor/searchActors.d.ts.map +1 -1
  6. package/dist/api/app/bsky/actor/searchActors.js +3 -2
  7. package/dist/api/app/bsky/actor/searchActors.js.map +1 -1
  8. package/dist/api/app/bsky/actor/searchActorsTypeahead.d.ts.map +1 -1
  9. package/dist/api/app/bsky/actor/searchActorsTypeahead.js +3 -2
  10. package/dist/api/app/bsky/actor/searchActorsTypeahead.js.map +1 -1
  11. package/dist/api/app/bsky/feed/getAuthorFeed.d.ts.map +1 -1
  12. package/dist/api/app/bsky/feed/getAuthorFeed.js +2 -4
  13. package/dist/api/app/bsky/feed/getAuthorFeed.js.map +1 -1
  14. package/dist/api/app/bsky/feed/getFeed.d.ts.map +1 -1
  15. package/dist/api/app/bsky/feed/getFeed.js +10 -10
  16. package/dist/api/app/bsky/feed/getFeed.js.map +1 -1
  17. package/dist/api/app/bsky/feed/getTimeline.d.ts.map +1 -1
  18. package/dist/api/app/bsky/feed/getTimeline.js +2 -4
  19. package/dist/api/app/bsky/feed/getTimeline.js.map +1 -1
  20. package/dist/api/app/bsky/feed/searchPosts.d.ts.map +1 -1
  21. package/dist/api/app/bsky/feed/searchPosts.js +3 -2
  22. package/dist/api/app/bsky/feed/searchPosts.js.map +1 -1
  23. package/dist/api/app/bsky/graph/getList.js +4 -1
  24. package/dist/api/app/bsky/graph/getList.js.map +1 -1
  25. package/dist/api/app/bsky/graph/getSuggestedFollowsByActor.d.ts.map +1 -1
  26. package/dist/api/app/bsky/graph/getSuggestedFollowsByActor.js +5 -5
  27. package/dist/api/app/bsky/graph/getSuggestedFollowsByActor.js.map +1 -1
  28. package/dist/api/app/bsky/graph/searchStarterPacks.d.ts.map +1 -1
  29. package/dist/api/app/bsky/graph/searchStarterPacks.js +3 -2
  30. package/dist/api/app/bsky/graph/searchStarterPacks.js.map +1 -1
  31. package/dist/api/app/bsky/notification/getUnreadCount.js +0 -8
  32. package/dist/api/app/bsky/notification/getUnreadCount.js.map +1 -1
  33. package/dist/api/app/bsky/notification/listNotifications.d.ts.map +1 -1
  34. package/dist/api/app/bsky/notification/listNotifications.js +22 -20
  35. package/dist/api/app/bsky/notification/listNotifications.js.map +1 -1
  36. package/dist/api/app/bsky/notification/updateSeen.d.ts.map +1 -1
  37. package/dist/api/app/bsky/notification/updateSeen.js +2 -11
  38. package/dist/api/app/bsky/notification/updateSeen.js.map +1 -1
  39. package/dist/api/app/bsky/unspecced/getOnboardingSuggestedStarterPacks.d.ts.map +1 -1
  40. package/dist/api/app/bsky/unspecced/getOnboardingSuggestedStarterPacks.js +5 -5
  41. package/dist/api/app/bsky/unspecced/getOnboardingSuggestedStarterPacks.js.map +1 -1
  42. package/dist/api/app/bsky/unspecced/getSuggestedFeeds.d.ts.map +1 -1
  43. package/dist/api/app/bsky/unspecced/getSuggestedFeeds.js +5 -4
  44. package/dist/api/app/bsky/unspecced/getSuggestedFeeds.js.map +1 -1
  45. package/dist/api/app/bsky/unspecced/getSuggestedOnboardingUsers.d.ts.map +1 -1
  46. package/dist/api/app/bsky/unspecced/getSuggestedOnboardingUsers.js +5 -4
  47. package/dist/api/app/bsky/unspecced/getSuggestedOnboardingUsers.js.map +1 -1
  48. package/dist/api/app/bsky/unspecced/getSuggestedStarterPacks.d.ts.map +1 -1
  49. package/dist/api/app/bsky/unspecced/getSuggestedStarterPacks.js +5 -4
  50. package/dist/api/app/bsky/unspecced/getSuggestedStarterPacks.js.map +1 -1
  51. package/dist/api/app/bsky/unspecced/getSuggestedUsers.d.ts.map +1 -1
  52. package/dist/api/app/bsky/unspecced/getSuggestedUsers.js +6 -4
  53. package/dist/api/app/bsky/unspecced/getSuggestedUsers.js.map +1 -1
  54. package/dist/api/app/bsky/unspecced/getSuggestedUsersForDiscover.d.ts.map +1 -1
  55. package/dist/api/app/bsky/unspecced/getSuggestedUsersForDiscover.js +4 -1
  56. package/dist/api/app/bsky/unspecced/getSuggestedUsersForDiscover.js.map +1 -1
  57. package/dist/api/app/bsky/unspecced/getSuggestedUsersForExplore.d.ts.map +1 -1
  58. package/dist/api/app/bsky/unspecced/getSuggestedUsersForExplore.js +4 -1
  59. package/dist/api/app/bsky/unspecced/getSuggestedUsersForExplore.js.map +1 -1
  60. package/dist/api/app/bsky/unspecced/getSuggestedUsersForSeeMore.d.ts.map +1 -1
  61. package/dist/api/app/bsky/unspecced/getSuggestedUsersForSeeMore.js +4 -1
  62. package/dist/api/app/bsky/unspecced/getSuggestedUsersForSeeMore.js.map +1 -1
  63. package/dist/api/app/bsky/unspecced/getTrendingTopics.d.ts.map +1 -1
  64. package/dist/api/app/bsky/unspecced/getTrendingTopics.js +3 -1
  65. package/dist/api/app/bsky/unspecced/getTrendingTopics.js.map +1 -1
  66. package/dist/api/app/bsky/unspecced/getTrends.d.ts.map +1 -1
  67. package/dist/api/app/bsky/unspecced/getTrends.js +5 -4
  68. package/dist/api/app/bsky/unspecced/getTrends.js.map +1 -1
  69. package/dist/api/blob-dispatcher.d.ts.map +1 -1
  70. package/dist/api/blob-dispatcher.js +1 -0
  71. package/dist/api/blob-dispatcher.js.map +1 -1
  72. package/dist/api/util.d.ts.map +1 -1
  73. package/dist/api/util.js +4 -1
  74. package/dist/api/util.js.map +1 -1
  75. package/dist/bsync.d.ts.map +1 -1
  76. package/dist/bsync.js +18 -1
  77. package/dist/bsync.js.map +1 -1
  78. package/dist/config.d.ts +4 -0
  79. package/dist/config.d.ts.map +1 -1
  80. package/dist/config.js +13 -1
  81. package/dist/config.js.map +1 -1
  82. package/dist/data-plane/client/index.d.ts.map +1 -1
  83. package/dist/data-plane/client/index.js +3 -2
  84. package/dist/data-plane/client/index.js.map +1 -1
  85. package/dist/data-plane/client/util.d.ts +0 -1
  86. package/dist/data-plane/client/util.d.ts.map +1 -1
  87. package/dist/data-plane/client/util.js +0 -45
  88. package/dist/data-plane/client/util.js.map +1 -1
  89. package/dist/data-plane/server/db/database-schema.d.ts +2 -1
  90. package/dist/data-plane/server/db/database-schema.d.ts.map +1 -1
  91. package/dist/data-plane/server/db/database-schema.js.map +1 -1
  92. package/dist/data-plane/server/db/migrations/20260827T200000000Z-reference-list-opt-outs.d.ts +4 -0
  93. package/dist/data-plane/server/db/migrations/20260827T200000000Z-reference-list-opt-outs.d.ts.map +1 -0
  94. package/dist/data-plane/server/db/migrations/20260827T200000000Z-reference-list-opt-outs.js +24 -0
  95. package/dist/data-plane/server/db/migrations/20260827T200000000Z-reference-list-opt-outs.js.map +1 -0
  96. package/dist/data-plane/server/db/migrations/20260904T130000000Z-remove-last-seen-priority-notifs.d.ts +4 -0
  97. package/dist/data-plane/server/db/migrations/20260904T130000000Z-remove-last-seen-priority-notifs.d.ts.map +1 -0
  98. package/dist/data-plane/server/db/migrations/20260904T130000000Z-remove-last-seen-priority-notifs.js +13 -0
  99. package/dist/data-plane/server/db/migrations/20260904T130000000Z-remove-last-seen-priority-notifs.js.map +1 -0
  100. package/dist/data-plane/server/db/migrations/index.d.ts +2 -0
  101. package/dist/data-plane/server/db/migrations/index.d.ts.map +1 -1
  102. package/dist/data-plane/server/db/migrations/index.js +2 -0
  103. package/dist/data-plane/server/db/migrations/index.js.map +1 -1
  104. package/dist/data-plane/server/db/tables/actor-state.d.ts +0 -1
  105. package/dist/data-plane/server/db/tables/actor-state.d.ts.map +1 -1
  106. package/dist/data-plane/server/db/tables/actor-state.js.map +1 -1
  107. package/dist/data-plane/server/db/tables/reference-list-opt-out.d.ts +15 -0
  108. package/dist/data-plane/server/db/tables/reference-list-opt-out.d.ts.map +1 -0
  109. package/dist/data-plane/server/db/tables/reference-list-opt-out.js +2 -0
  110. package/dist/data-plane/server/db/tables/reference-list-opt-out.js.map +1 -0
  111. package/dist/data-plane/server/index.d.ts +2 -2
  112. package/dist/data-plane/server/index.d.ts.map +1 -1
  113. package/dist/data-plane/server/index.js +2 -2
  114. package/dist/data-plane/server/index.js.map +1 -1
  115. package/dist/data-plane/server/indexing/index.d.ts +10 -0
  116. package/dist/data-plane/server/indexing/index.d.ts.map +1 -1
  117. package/dist/data-plane/server/indexing/index.js +6 -0
  118. package/dist/data-plane/server/indexing/index.js.map +1 -1
  119. package/dist/data-plane/server/indexing/plugins/reference-list-opt-out.d.ts +16 -0
  120. package/dist/data-plane/server/indexing/plugins/reference-list-opt-out.d.ts.map +1 -0
  121. package/dist/data-plane/server/indexing/plugins/reference-list-opt-out.js +73 -0
  122. package/dist/data-plane/server/indexing/plugins/reference-list-opt-out.js.map +1 -0
  123. package/dist/data-plane/server/indexing/processor.d.ts +1 -0
  124. package/dist/data-plane/server/indexing/processor.d.ts.map +1 -1
  125. package/dist/data-plane/server/indexing/processor.js +3 -0
  126. package/dist/data-plane/server/indexing/processor.js.map +1 -1
  127. package/dist/data-plane/server/routes/feeds.d.ts.map +1 -1
  128. package/dist/data-plane/server/routes/feeds.js +13 -0
  129. package/dist/data-plane/server/routes/feeds.js.map +1 -1
  130. package/dist/data-plane/server/routes/lists.d.ts.map +1 -1
  131. package/dist/data-plane/server/routes/lists.js +45 -1
  132. package/dist/data-plane/server/routes/lists.js.map +1 -1
  133. package/dist/data-plane/server/routes/notifs.d.ts.map +1 -1
  134. package/dist/data-plane/server/routes/notifs.js +10 -32
  135. package/dist/data-plane/server/routes/notifs.js.map +1 -1
  136. package/dist/data-plane/server/util.d.ts +4 -4
  137. package/dist/hydration/actor.d.ts.map +1 -1
  138. package/dist/hydration/actor.js +7 -4
  139. package/dist/hydration/actor.js.map +1 -1
  140. package/dist/hydration/graph.d.ts +1 -0
  141. package/dist/hydration/graph.d.ts.map +1 -1
  142. package/dist/hydration/graph.js +12 -5
  143. package/dist/hydration/graph.js.map +1 -1
  144. package/dist/hydration/hydrator.d.ts +9 -1
  145. package/dist/hydration/hydrator.d.ts.map +1 -1
  146. package/dist/hydration/hydrator.js +28 -3
  147. package/dist/hydration/hydrator.js.map +1 -1
  148. package/dist/index.d.ts +3 -0
  149. package/dist/index.d.ts.map +1 -1
  150. package/dist/index.js +22 -2
  151. package/dist/index.js.map +1 -1
  152. package/dist/lexicons/app/bsky/actor/defs.defs.d.ts +6 -0
  153. package/dist/lexicons/app/bsky/actor/defs.defs.d.ts.map +1 -1
  154. package/dist/lexicons/app/bsky/actor/defs.defs.js +2 -0
  155. package/dist/lexicons/app/bsky/actor/defs.defs.js.map +1 -1
  156. package/dist/lexicons/app/bsky/authFullApp.defs.d.ts.map +1 -1
  157. package/dist/lexicons/app/bsky/authFullApp.defs.js +1 -0
  158. package/dist/lexicons/app/bsky/authFullApp.defs.js.map +1 -1
  159. package/dist/lexicons/app/bsky/graph/defs.defs.d.ts +8 -0
  160. package/dist/lexicons/app/bsky/graph/defs.defs.d.ts.map +1 -1
  161. package/dist/lexicons/app/bsky/graph/defs.defs.js +3 -0
  162. package/dist/lexicons/app/bsky/graph/defs.defs.js.map +1 -1
  163. package/dist/lexicons/app/bsky/graph/referencelistoptout.d.ts +3 -0
  164. package/dist/lexicons/app/bsky/graph/referencelistoptout.d.ts.map +1 -0
  165. package/dist/lexicons/app/bsky/graph/referencelistoptout.defs.d.ts +77 -0
  166. package/dist/lexicons/app/bsky/graph/referencelistoptout.defs.d.ts.map +1 -0
  167. package/dist/lexicons/app/bsky/graph/referencelistoptout.defs.js +27 -0
  168. package/dist/lexicons/app/bsky/graph/referencelistoptout.defs.js.map +1 -0
  169. package/dist/lexicons/app/bsky/graph/referencelistoptout.js +6 -0
  170. package/dist/lexicons/app/bsky/graph/referencelistoptout.js.map +1 -0
  171. package/dist/lexicons/app/bsky/graph.d.ts +1 -0
  172. package/dist/lexicons/app/bsky/graph.d.ts.map +1 -1
  173. package/dist/lexicons/app/bsky/graph.js +1 -0
  174. package/dist/lexicons/app/bsky/graph.js.map +1 -1
  175. package/dist/lexicons/tools/ozone/moderation/getAccountPreferences.d.ts +3 -0
  176. package/dist/lexicons/tools/ozone/moderation/getAccountPreferences.d.ts.map +1 -0
  177. package/dist/lexicons/tools/ozone/moderation/getAccountPreferences.defs.d.ts +29 -0
  178. package/dist/lexicons/tools/ozone/moderation/getAccountPreferences.defs.d.ts.map +1 -0
  179. package/dist/lexicons/tools/ozone/moderation/getAccountPreferences.defs.js +19 -0
  180. package/dist/lexicons/tools/ozone/moderation/getAccountPreferences.defs.js.map +1 -0
  181. package/dist/lexicons/tools/ozone/moderation/getAccountPreferences.js +6 -0
  182. package/dist/lexicons/tools/ozone/moderation/getAccountPreferences.js.map +1 -0
  183. package/dist/lexicons/tools/ozone/moderation.d.ts +1 -0
  184. package/dist/lexicons/tools/ozone/moderation.d.ts.map +1 -1
  185. package/dist/lexicons/tools/ozone/moderation.js +1 -0
  186. package/dist/lexicons/tools/ozone/moderation.js.map +1 -1
  187. package/dist/logger.d.ts +1 -0
  188. package/dist/logger.d.ts.map +1 -1
  189. package/dist/logger.js +1 -0
  190. package/dist/logger.js.map +1 -1
  191. package/dist/proto/bsky_connect.d.ts +10 -1
  192. package/dist/proto/bsky_connect.d.ts.map +1 -1
  193. package/dist/proto/bsky_connect.js +11 -2
  194. package/dist/proto/bsky_connect.js.map +1 -1
  195. package/dist/proto/bsky_pb.d.ts +46 -12
  196. package/dist/proto/bsky_pb.d.ts.map +1 -1
  197. package/dist/proto/bsky_pb.js +75 -15
  198. package/dist/proto/bsky_pb.js.map +1 -1
  199. package/dist/proto/bsync_connect.d.ts +10 -1
  200. package/dist/proto/bsync_connect.d.ts.map +1 -1
  201. package/dist/proto/bsync_connect.js +11 -2
  202. package/dist/proto/bsync_connect.js.map +1 -1
  203. package/dist/proto/bsync_pb.d.ts +35 -1
  204. package/dist/proto/bsync_pb.d.ts.map +1 -1
  205. package/dist/proto/bsync_pb.js +56 -1
  206. package/dist/proto/bsync_pb.js.map +1 -1
  207. package/dist/proto/courier_connect.js +1 -1
  208. package/dist/proto/courier_connect.js.map +1 -1
  209. package/dist/proto/dataplane_connect.d.ts +20 -0
  210. package/dist/proto/dataplane_connect.d.ts.map +1 -0
  211. package/dist/proto/dataplane_connect.js +24 -0
  212. package/dist/proto/dataplane_connect.js.map +1 -0
  213. package/dist/proto/dataplane_pb.d.ts +37 -0
  214. package/dist/proto/dataplane_pb.d.ts.map +1 -0
  215. package/dist/proto/dataplane_pb.js +61 -0
  216. package/dist/proto/dataplane_pb.js.map +1 -0
  217. package/dist/proto/rolodex_connect.js +1 -1
  218. package/dist/proto/rolodex_connect.js.map +1 -1
  219. package/dist/telemetry/events.d.ts +31 -0
  220. package/dist/telemetry/events.d.ts.map +1 -0
  221. package/dist/telemetry/events.js +65 -0
  222. package/dist/telemetry/events.js.map +1 -0
  223. package/dist/telemetry/rpc.d.ts +21 -0
  224. package/dist/telemetry/rpc.d.ts.map +1 -0
  225. package/dist/telemetry/rpc.js +70 -0
  226. package/dist/telemetry/rpc.js.map +1 -0
  227. package/dist/{telemetry.d.ts.map → telemetry/telemetry.d.ts.map} +1 -1
  228. package/dist/{telemetry.js → telemetry/telemetry.js} +1 -1
  229. package/dist/telemetry/telemetry.js.map +1 -0
  230. package/dist/telemetry/util.d.ts +14 -0
  231. package/dist/telemetry/util.d.ts.map +1 -0
  232. package/dist/telemetry/util.js +23 -0
  233. package/dist/telemetry/util.js.map +1 -0
  234. package/dist/undici.d.ts +29 -0
  235. package/dist/undici.d.ts.map +1 -0
  236. package/dist/undici.js +43 -0
  237. package/dist/undici.js.map +1 -0
  238. package/dist/util/headers.d.ts +5 -0
  239. package/dist/util/headers.d.ts.map +1 -0
  240. package/dist/util/headers.js +19 -0
  241. package/dist/util/headers.js.map +1 -0
  242. package/dist/util/uris.js +1 -1
  243. package/dist/util/uris.js.map +1 -1
  244. package/dist/views/index.d.ts +4 -2
  245. package/dist/views/index.d.ts.map +1 -1
  246. package/dist/views/index.js +24 -11
  247. package/dist/views/index.js.map +1 -1
  248. package/package.json +25 -20
  249. package/dist/telemetry.js.map +0 -1
  250. /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"]}
@@ -2,7 +2,6 @@ export interface ActorState {
2
2
  did: string;
3
3
  lastSeenNotifs: string;
4
4
  priorityNotifs: boolean;
5
- lastSeenPriorityNotifs: string | undefined;
6
5
  }
7
6
  export declare const tableName = "actor_state";
8
7
  export type PartialDB = {
@@ -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;IACvB,sBAAsB,EAAE,MAAM,GAAG,SAAS,CAAA;CAC3C;AAED,eAAO,MAAM,SAAS,gBAAgB,CAAA;AAEtC,MAAM,MAAM,SAAS,GAAG;IAAE,CAAC,SAAS,CAAC,EAAE,UAAU,CAAA;CAAE,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":"AAOA,MAAM,CAAC,MAAM,SAAS,GAAG,aAAa,CAAA","sourcesContent":["export interface ActorState {\n did: string\n lastSeenNotifs: string\n priorityNotifs: boolean\n lastSeenPriorityNotifs: string | undefined\n}\n\nexport const tableName = 'actor_state'\n\nexport type PartialDB = { [tableName]: ActorState }\n"]}
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,2 @@
1
+ export const tableName = 'reference_list_opt_out';
2
+ //# 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/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"]}
@@ -1,5 +1,5 @@
1
1
  import type http from 'node:http';
2
- import { IdResolver } from '@atproto/identity';
2
+ import { type Fetch, IdResolver } from '@atproto/identity';
3
3
  import type { Database, DatabaseSchema } from './db/index.js';
4
4
  export type { DatabaseSchema };
5
5
  export { BsyncSubscription } from './bsync-subscription.js';
@@ -9,7 +9,7 @@ export declare class DataPlaneServer {
9
9
  idResolver: IdResolver;
10
10
  private terminator;
11
11
  constructor(server: http.Server, idResolver: IdResolver);
12
- static create(db: Database, port: number, plcUrl?: string): Promise<DataPlaneServer>;
12
+ static create(db: Database, port: number, plcUrl?: string, fetch?: Fetch): Promise<DataPlaneServer>;
13
13
  destroy(): Promise<void>;
14
14
  [Symbol.asyncDispose](): Promise<void>;
15
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data-plane/server/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAIjC,OAAO,EAAE,UAAU,EAAe,MAAM,mBAAmB,CAAA;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAG7D,YAAY,EAAE,cAAc,EAAE,CAAA;AAE9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,qBAAa,eAAe;IAIjB,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,UAAU,EAAE,UAAU;IAJ/B,OAAO,CAAC,UAAU,CAAgB;IAElC,YACS,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,UAAU,EAAE,UAAU,EAG9B;IAED,OAAa,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,4BAS9D;IAEK,OAAO,kBAEZ;IAEK,CAAC,MAAM,CAAC,YAAY,CAAC,kBAE1B;CACF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data-plane/server/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAIjC,OAAO,EAAE,KAAK,KAAK,EAAE,UAAU,EAAe,MAAM,mBAAmB,CAAA;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAG7D,YAAY,EAAE,cAAc,EAAE,CAAA;AAE9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,qBAAa,eAAe;IAIjB,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,UAAU,EAAE,UAAU;IAJ/B,OAAO,CAAC,UAAU,CAAgB;IAElC,YACS,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,UAAU,EAAE,UAAU,EAG9B;IAED,OAAa,MAAM,CACjB,EAAE,EAAE,QAAQ,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,KAAK,4BAUd;IAEK,OAAO,kBAEZ;IAEK,CAAC,MAAM,CAAC,YAAY,CAAC,kBAE1B;CACF"}
@@ -12,10 +12,10 @@ export class DataPlaneServer {
12
12
  this.idResolver = idResolver;
13
13
  this.terminator = createHttpTerminator({ server });
14
14
  }
15
- static async create(db, port, plcUrl) {
15
+ static async create(db, port, plcUrl, fetch) {
16
16
  const app = express();
17
17
  const didCache = new MemoryCache();
18
- const idResolver = new IdResolver({ plcUrl, didCache });
18
+ const idResolver = new IdResolver({ plcUrl, didCache, fetch });
19
19
  const routes = createRoutes(db, idResolver);
20
20
  app.use(expressConnectMiddleware({ routes }));
21
21
  const server = app.listen(port);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/data-plane/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAA;AAEhC,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAA;AACtE,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAuB,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAC3E,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE3D,OAAO,YAAY,MAAM,mBAAmB,CAAA;AAI5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,MAAM,OAAO,eAAe;IAG1B,YACS,MAAmB,EACnB,UAAsB;sBADtB,MAAM;0BACN,UAAU;QAEjB,IAAI,CAAC,UAAU,GAAG,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;IACpD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAY,EAAE,IAAY,EAAE,MAAe;QAC7D,MAAM,GAAG,GAAG,OAAO,EAAE,CAAA;QACrB,MAAM,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAA;QAClC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;QACvD,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;QAC3C,GAAG,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;QAC7C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC/B,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;QACtC,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAChD,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACzB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;IACtB,CAAC;CACF","sourcesContent":["import events from 'node:events'\nimport type http from 'node:http'\nimport { expressConnectMiddleware } from '@connectrpc/connect-express'\nimport express from 'express'\nimport { type HttpTerminator, createHttpTerminator } from 'http-terminator'\nimport { IdResolver, MemoryCache } from '@atproto/identity'\nimport type { Database, DatabaseSchema } from './db/index.js'\nimport createRoutes from './routes/index.js'\n\nexport type { DatabaseSchema }\n\nexport { BsyncSubscription } from './bsync-subscription.js'\nexport { RepoSubscription } from './subscription.js'\n\nexport class DataPlaneServer {\n private terminator: HttpTerminator\n\n constructor(\n public server: http.Server,\n public idResolver: IdResolver,\n ) {\n this.terminator = createHttpTerminator({ server })\n }\n\n static async create(db: Database, port: number, plcUrl?: string) {\n const app = express()\n const didCache = new MemoryCache()\n const idResolver = new IdResolver({ plcUrl, didCache })\n const routes = createRoutes(db, idResolver)\n app.use(expressConnectMiddleware({ routes }))\n const server = app.listen(port)\n await events.once(server, 'listening')\n return new DataPlaneServer(server, idResolver)\n }\n\n async destroy() {\n await this.terminator.terminate()\n }\n\n async [Symbol.asyncDispose]() {\n await this.destroy()\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/data-plane/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAA;AAEhC,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAA;AACtE,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAuB,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAC3E,OAAO,EAAc,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEvE,OAAO,YAAY,MAAM,mBAAmB,CAAA;AAI5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,MAAM,OAAO,eAAe;IAG1B,YACS,MAAmB,EACnB,UAAsB;sBADtB,MAAM;0BACN,UAAU;QAEjB,IAAI,CAAC,UAAU,GAAG,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;IACpD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,EAAY,EACZ,IAAY,EACZ,MAAe,EACf,KAAa;QAEb,MAAM,GAAG,GAAG,OAAO,EAAE,CAAA;QACrB,MAAM,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAA;QAClC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAA;QAC9D,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;QAC3C,GAAG,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;QAC7C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC/B,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;QACtC,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAChD,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACzB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;IACtB,CAAC;CACF","sourcesContent":["import events from 'node:events'\nimport type http from 'node:http'\nimport { expressConnectMiddleware } from '@connectrpc/connect-express'\nimport express from 'express'\nimport { type HttpTerminator, createHttpTerminator } from 'http-terminator'\nimport { type Fetch, IdResolver, MemoryCache } from '@atproto/identity'\nimport type { Database, DatabaseSchema } from './db/index.js'\nimport createRoutes from './routes/index.js'\n\nexport type { DatabaseSchema }\n\nexport { BsyncSubscription } from './bsync-subscription.js'\nexport { RepoSubscription } from './subscription.js'\n\nexport class DataPlaneServer {\n private terminator: HttpTerminator\n\n constructor(\n public server: http.Server,\n public idResolver: IdResolver,\n ) {\n this.terminator = createHttpTerminator({ server })\n }\n\n static async create(\n db: Database,\n port: number,\n plcUrl?: string,\n fetch?: Fetch,\n ) {\n const app = express()\n const didCache = new MemoryCache()\n const idResolver = new IdResolver({ plcUrl, didCache, fetch })\n const routes = createRoutes(db, idResolver)\n app.use(expressConnectMiddleware({ routes }))\n const server = app.listen(port)\n await events.once(server, 'listening')\n return new DataPlaneServer(server, idResolver)\n }\n\n async destroy() {\n await this.terminator.terminate()\n }\n\n async [Symbol.asyncDispose]() {\n await this.destroy()\n }\n}\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":"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"}
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,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,qBAAa,eAAe;IAyBjB,EAAE,EAAE,QAAQ;IACZ,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE,eAAe,CAAC,QAAQ,CAAC;IA1B9C,OAAO,EAAE;QACP,IAAI,EAAE,IAAI,CAAC,UAAU,CAAA;QACrB,UAAU,EAAE,UAAU,CAAC,UAAU,CAAA;QACjC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAA;QAC7B,IAAI,EAAE,IAAI,CAAC,UAAU,CAAA;QACrB,MAAM,EAAE,MAAM,CAAC,UAAU,CAAA;QACzB,MAAM,EAAE,MAAM,CAAC,UAAU,CAAA;QACzB,OAAO,EAAE,OAAO,CAAC,UAAU,CAAA;QAC3B,IAAI,EAAE,IAAI,CAAC,UAAU,CAAA;QACrB,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAA;QAC7B,mBAAmB,EAAE,mBAAmB,CAAC,UAAU,CAAA;QACnD,SAAS,EAAE,SAAS,CAAC,UAAU,CAAA;QAC/B,KAAK,EAAE,KAAK,CAAC,UAAU,CAAA;QACvB,aAAa,EAAE,aAAa,CAAC,UAAU,CAAA;QACvC,WAAW,EAAE,WAAW,CAAC,UAAU,CAAA;QACnC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAA;QAC3B,gBAAgB,EAAE,gBAAgB,CAAC,UAAU,CAAA;QAC7C,eAAe,EAAE,eAAe,CAAC,UAAU,CAAA;QAC3C,eAAe,EAAE,eAAe,CAAC,UAAU,CAAA;QAC3C,YAAY,EAAE,YAAY,CAAC,UAAU,CAAA;QACrC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAA;KAC1B,CAAA;IAED,YACS,EAAE,EAAE,QAAQ,EACZ,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,eAAe,CAAC,QAAQ,CAAC,EA2B7C;IAED,QAAQ,CAAC,GAAG,EAAE,QAAQ,mBAGrB;IAEK,WAAW,CACf,GAAG,EAAE,KAAK,EACV,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,EACnD,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,iBAa5D;IAEK,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,UAAQ,iBAQ/C;IAEK,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,UAAQ,iBAyC9D;IAEK,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,iBAiD9C;IAEK,iBAAiB,CAAC,GAAG,EAAE,MAAM;aAcH,KAAK;aAAO,GAAG;QAE9C;IAEK,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,iBAiB5D;IAED,wBAAwB,CAAC,UAAU,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAM1C;IAEK,iBAAiB,CACrB,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,OAAO,EACf,MAAM,GAAE,MAAW,iBAepB;IAEK,WAAW,CAAC,GAAG,EAAE,SAAS,iBAW/B;YAEa,gBAAgB;IAexB,YAAY,CAAC,GAAG,EAAE,SAAS,iBAkFhC;CACF"}
@@ -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":"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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 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":"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"}
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')