@atproto/bsky 0.0.269 → 0.0.271
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 +41 -0
- package/dist/api/app/bsky/feed/getFeed.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getFeed.js +2 -0
- package/dist/api/app/bsky/feed/getFeed.js.map +1 -1
- package/dist/api/app/bsky/feed/getListFeed.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getListFeed.js +2 -0
- package/dist/api/app/bsky/feed/getListFeed.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 -0
- package/dist/api/app/bsky/feed/getTimeline.js.map +1 -1
- package/dist/api/app/bsky/graph/getMutes.js +29 -9
- package/dist/api/app/bsky/graph/getMutes.js.map +1 -1
- package/dist/api/app/bsky/graph/muteActor.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/muteActor.js +3 -1
- package/dist/api/app/bsky/graph/muteActor.js.map +1 -1
- package/dist/api/app/bsky/notification/updateSeen.js +3 -4
- package/dist/api/app/bsky/notification/updateSeen.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getPostThreadV2.js +3 -0
- package/dist/api/app/bsky/unspecced/getPostThreadV2.js.map +1 -1
- package/dist/data-plane/server/bsync-subscription.d.ts.map +1 -1
- package/dist/data-plane/server/bsync-subscription.js +6 -2
- package/dist/data-plane/server/bsync-subscription.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/db.d.ts +3 -4
- package/dist/data-plane/server/db/db.d.ts.map +1 -1
- package/dist/data-plane/server/db/db.js +0 -2
- package/dist/data-plane/server/db/db.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20260618T200000000Z-add-mute-scope.d.ts +4 -0
- package/dist/data-plane/server/db/migrations/20260618T200000000Z-add-mute-scope.d.ts.map +1 -0
- package/dist/data-plane/server/db/migrations/20260618T200000000Z-add-mute-scope.js +17 -0
- package/dist/data-plane/server/db/migrations/20260618T200000000Z-add-mute-scope.js.map +1 -0
- package/dist/data-plane/server/db/migrations/20260729T223157563Z-add-op-thread-reply.d.ts +4 -0
- package/dist/data-plane/server/db/migrations/20260729T223157563Z-add-op-thread-reply.d.ts.map +1 -0
- package/dist/data-plane/server/db/migrations/20260729T223157563Z-add-op-thread-reply.js +14 -0
- package/dist/data-plane/server/db/migrations/20260729T223157563Z-add-op-thread-reply.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/mute.d.ts +2 -0
- package/dist/data-plane/server/db/tables/mute.d.ts.map +1 -1
- package/dist/data-plane/server/db/tables/mute.js.map +1 -1
- package/dist/data-plane/server/db/tables/op-thread-reply.d.ts +12 -0
- package/dist/data-plane/server/db/tables/op-thread-reply.d.ts.map +1 -0
- package/dist/data-plane/server/db/tables/op-thread-reply.js +3 -0
- package/dist/data-plane/server/db/tables/op-thread-reply.js.map +1 -0
- package/dist/data-plane/server/db/types.d.ts.map +1 -1
- package/dist/data-plane/server/db/types.js.map +1 -1
- package/dist/data-plane/server/db/util.d.ts.map +1 -1
- package/dist/data-plane/server/db/util.js.map +1 -1
- package/dist/data-plane/server/index.d.ts.map +1 -1
- package/dist/data-plane/server/index.js +2 -3
- package/dist/data-plane/server/index.js.map +1 -1
- package/dist/data-plane/server/indexing/plugins/post.d.ts.map +1 -1
- package/dist/data-plane/server/indexing/plugins/post.js +22 -0
- package/dist/data-plane/server/indexing/plugins/post.js.map +1 -1
- package/dist/data-plane/server/routes/activity-subscription.d.ts +1 -1
- package/dist/data-plane/server/routes/activity-subscription.d.ts.map +1 -1
- package/dist/data-plane/server/routes/blocks.d.ts +1 -1
- package/dist/data-plane/server/routes/blocks.d.ts.map +1 -1
- package/dist/data-plane/server/routes/bookmarks.d.ts +1 -1
- package/dist/data-plane/server/routes/bookmarks.d.ts.map +1 -1
- package/dist/data-plane/server/routes/drafts.d.ts +1 -1
- package/dist/data-plane/server/routes/drafts.d.ts.map +1 -1
- package/dist/data-plane/server/routes/drafts.js.map +1 -1
- package/dist/data-plane/server/routes/feed-gens.d.ts +1 -1
- package/dist/data-plane/server/routes/feed-gens.d.ts.map +1 -1
- package/dist/data-plane/server/routes/feeds.d.ts +1 -1
- package/dist/data-plane/server/routes/feeds.d.ts.map +1 -1
- package/dist/data-plane/server/routes/follows.d.ts +1 -1
- package/dist/data-plane/server/routes/follows.d.ts.map +1 -1
- package/dist/data-plane/server/routes/identity.d.ts +1 -1
- package/dist/data-plane/server/routes/identity.d.ts.map +1 -1
- package/dist/data-plane/server/routes/index.d.ts +1 -1
- package/dist/data-plane/server/routes/index.d.ts.map +1 -1
- package/dist/data-plane/server/routes/interactions.d.ts +1 -1
- package/dist/data-plane/server/routes/interactions.d.ts.map +1 -1
- package/dist/data-plane/server/routes/labels.d.ts +1 -1
- package/dist/data-plane/server/routes/labels.d.ts.map +1 -1
- package/dist/data-plane/server/routes/likes.d.ts +1 -1
- package/dist/data-plane/server/routes/likes.d.ts.map +1 -1
- package/dist/data-plane/server/routes/lists.d.ts +1 -1
- package/dist/data-plane/server/routes/lists.d.ts.map +1 -1
- package/dist/data-plane/server/routes/moderation.d.ts +1 -1
- package/dist/data-plane/server/routes/moderation.d.ts.map +1 -1
- package/dist/data-plane/server/routes/mutes.d.ts +1 -1
- package/dist/data-plane/server/routes/mutes.d.ts.map +1 -1
- package/dist/data-plane/server/routes/mutes.js +17 -4
- package/dist/data-plane/server/routes/mutes.js.map +1 -1
- package/dist/data-plane/server/routes/notifs.d.ts +1 -1
- package/dist/data-plane/server/routes/notifs.d.ts.map +1 -1
- package/dist/data-plane/server/routes/profile.d.ts +1 -1
- package/dist/data-plane/server/routes/profile.d.ts.map +1 -1
- package/dist/data-plane/server/routes/quotes.d.ts +1 -1
- package/dist/data-plane/server/routes/quotes.d.ts.map +1 -1
- package/dist/data-plane/server/routes/records.d.ts +1 -1
- package/dist/data-plane/server/routes/records.d.ts.map +1 -1
- package/dist/data-plane/server/routes/relationships.d.ts +1 -1
- package/dist/data-plane/server/routes/relationships.d.ts.map +1 -1
- package/dist/data-plane/server/routes/relationships.js +14 -3
- package/dist/data-plane/server/routes/relationships.js.map +1 -1
- package/dist/data-plane/server/routes/reposts.d.ts +1 -1
- package/dist/data-plane/server/routes/reposts.d.ts.map +1 -1
- package/dist/data-plane/server/routes/search.d.ts +1 -1
- package/dist/data-plane/server/routes/search.d.ts.map +1 -1
- package/dist/data-plane/server/routes/site-standard.d.ts +1 -1
- package/dist/data-plane/server/routes/site-standard.d.ts.map +1 -1
- package/dist/data-plane/server/routes/sitemap.d.ts +1 -1
- package/dist/data-plane/server/routes/sitemap.d.ts.map +1 -1
- package/dist/data-plane/server/routes/starter-packs.d.ts +1 -1
- package/dist/data-plane/server/routes/starter-packs.d.ts.map +1 -1
- package/dist/data-plane/server/routes/suggestions.d.ts +1 -1
- package/dist/data-plane/server/routes/suggestions.d.ts.map +1 -1
- package/dist/data-plane/server/routes/sync.d.ts +1 -1
- package/dist/data-plane/server/routes/sync.d.ts.map +1 -1
- package/dist/data-plane/server/routes/threads.d.ts +1 -1
- package/dist/data-plane/server/routes/threads.d.ts.map +1 -1
- package/dist/data-plane/server/routes/threads.js +89 -2
- package/dist/data-plane/server/routes/threads.js.map +1 -1
- package/dist/data-plane/server/util.d.ts +4 -4
- package/dist/hydration/actor.d.ts +2 -0
- package/dist/hydration/actor.d.ts.map +1 -1
- package/dist/hydration/actor.js +2 -0
- package/dist/hydration/actor.js.map +1 -1
- package/dist/hydration/external.d.ts.map +1 -1
- package/dist/hydration/external.js.map +1 -1
- package/dist/hydration/graph.d.ts.map +1 -1
- package/dist/hydration/graph.js.map +1 -1
- package/dist/hydration/hydrator.d.ts.map +1 -1
- package/dist/hydration/hydrator.js +4 -1
- package/dist/hydration/hydrator.js.map +1 -1
- package/dist/image/uri.d.ts.map +1 -1
- package/dist/image/uri.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -3
- package/dist/index.js.map +1 -1
- package/dist/lexicons/app/bsky/actor/defs.defs.d.ts +11 -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/authCreatePosts.defs.d.ts +1 -1
- package/dist/lexicons/app/bsky/authCreatePosts.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/authDeleteContent.defs.d.ts +1 -1
- package/dist/lexicons/app/bsky/authDeleteContent.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/authFullApp.defs.d.ts +1 -1
- package/dist/lexicons/app/bsky/authFullApp.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/authManageFeedDeclarations.defs.d.ts +1 -1
- package/dist/lexicons/app/bsky/authManageFeedDeclarations.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/authManageLabelerService.defs.d.ts +1 -1
- package/dist/lexicons/app/bsky/authManageLabelerService.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/authManageModeration.defs.d.ts +1 -1
- package/dist/lexicons/app/bsky/authManageModeration.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/authManageNotifications.defs.d.ts +1 -1
- package/dist/lexicons/app/bsky/authManageNotifications.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/authManageProfile.defs.d.ts +1 -1
- package/dist/lexicons/app/bsky/authManageProfile.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/authViewAll.defs.d.ts +1 -1
- package/dist/lexicons/app/bsky/authViewAll.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/draft/defs.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/draft/defs.defs.js.map +1 -1
- package/dist/lexicons/app/bsky/graph/getMutes.defs.d.ts +1 -1
- package/dist/lexicons/app/bsky/graph/getMutes.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/graph/getMutes.defs.js +1 -1
- package/dist/lexicons/app/bsky/graph/getMutes.defs.js.map +1 -1
- package/dist/lexicons/app/bsky/graph/muteActor.defs.d.ts +5 -1
- package/dist/lexicons/app/bsky/graph/muteActor.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/graph/muteActor.defs.js +3 -1
- package/dist/lexicons/app/bsky/graph/muteActor.defs.js.map +1 -1
- package/dist/lexicons/app/bsky/richtext/facet.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/richtext/facet.defs.js.map +1 -1
- package/dist/lexicons/app/bsky/unspecced/defs.defs.d.ts +9 -1
- package/dist/lexicons/app/bsky/unspecced/defs.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/unspecced/defs.defs.js +2 -0
- package/dist/lexicons/app/bsky/unspecced/defs.defs.js.map +1 -1
- package/dist/lexicons/chat/bsky/authFullChatClient.defs.d.ts +1 -1
- package/dist/lexicons/chat/bsky/authFullChatClient.defs.d.ts.map +1 -1
- package/dist/lexicons/chat/bsky/convo/defs.defs.d.ts.map +1 -1
- package/dist/lexicons/chat/bsky/convo/defs.defs.js.map +1 -1
- package/dist/lexicons/chat/bsky/group/createGroup.defs.js +1 -1
- package/dist/lexicons/chat/bsky/group/createGroup.defs.js.map +1 -1
- package/dist/lexicons/com/atproto/sync/defs.defs.d.ts.map +1 -1
- package/dist/lexicons/com/atproto/sync/defs.defs.js.map +1 -1
- package/dist/lexicons/tools/ozone/moderation/defs.defs.d.ts.map +1 -1
- package/dist/lexicons/tools/ozone/moderation/defs.defs.js.map +1 -1
- package/dist/lexicons/tools/ozone/queue/createQueue.defs.d.ts +3 -1
- package/dist/lexicons/tools/ozone/queue/createQueue.defs.d.ts.map +1 -1
- package/dist/lexicons/tools/ozone/queue/createQueue.defs.js +3 -0
- package/dist/lexicons/tools/ozone/queue/createQueue.defs.js.map +1 -1
- package/dist/lexicons/tools/ozone/queue/defs.defs.d.ts +4 -0
- package/dist/lexicons/tools/ozone/queue/defs.defs.d.ts.map +1 -1
- package/dist/lexicons/tools/ozone/queue/defs.defs.js +2 -0
- package/dist/lexicons/tools/ozone/queue/defs.defs.js.map +1 -1
- package/dist/lexicons/tools/ozone/queue/updateQueue.defs.d.ts +4 -2
- package/dist/lexicons/tools/ozone/queue/updateQueue.defs.d.ts.map +1 -1
- package/dist/lexicons/tools/ozone/queue/updateQueue.defs.js +6 -2
- package/dist/lexicons/tools/ozone/queue/updateQueue.defs.js.map +1 -1
- package/dist/lexicons/tools/ozone/report/defs.defs.d.ts.map +1 -1
- package/dist/lexicons/tools/ozone/report/defs.defs.js.map +1 -1
- package/dist/proto/bsky_pb.d.ts +81 -1
- package/dist/proto/bsky_pb.d.ts.map +1 -1
- package/dist/proto/bsky_pb.js +104 -1
- package/dist/proto/bsky_pb.js.map +1 -1
- package/dist/proto/bsync_pb.d.ts +23 -0
- package/dist/proto/bsync_pb.d.ts.map +1 -1
- package/dist/proto/bsync_pb.js +27 -0
- package/dist/proto/bsync_pb.js.map +1 -1
- package/dist/util/standard-site.d.ts.map +1 -1
- package/dist/util/standard-site.js.map +1 -1
- package/dist/views/index.d.ts +5 -0
- package/dist/views/index.d.ts.map +1 -1
- package/dist/views/index.js +59 -3
- package/dist/views/index.js.map +1 -1
- package/dist/views/threads-v2.d.ts +1 -0
- package/dist/views/threads-v2.d.ts.map +1 -1
- package/dist/views/threads-v2.js +8 -2
- package/dist/views/threads-v2.js.map +1 -1
- package/dist/views/types.d.ts.map +1 -1
- package/dist/views/types.js.map +1 -1
- package/package.json +16 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bsync-subscription.js","sourceRoot":"","sources":["../../../src/data-plane/server/bsync-subscription.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'node:assert'\nimport { lexParse } from '@atproto/lex'\nimport { AtUri } from '@atproto/syntax'\nimport {\n type BsyncClient,\n authWithApiKey,\n createBsyncClient,\n} from '../../bsync.js'\nimport type { ServerConfig } from '../../config.js'\nimport { app } from '../../lexicons/index.js'\nimport { subLogger as log } from '../../logger.js'\nimport {\n Method,\n type MuteOperation,\n MuteOperation_Type,\n type NotifOperation,\n type Operation,\n} from '../../proto/bsync_pb.js'\nimport { Namespaces } from '../../stash.js'\nimport type { Database } from './db/index.js'\nimport { countAll, excluded } from './db/util.js'\n\nexport type BsyncCursors = {\n op?: string\n mute?: string\n notif?: string\n}\n\nexport class BsyncSubscription {\n private ac: AbortController | undefined\n private pendingScans = new Set<Promise<void>>()\n private bsyncClient: BsyncClient\n private db: Database\n // Latest cursor processed for each stream, used to wait until caught up.\n private cursors: BsyncCursors = {}\n\n constructor(public opts: { db: Database; config: ServerConfig }) {\n const { config, db } = opts\n\n this.db = db\n this.bsyncClient = createBsyncClient({\n baseUrl: config.bsyncUrl,\n httpVersion: config.bsyncHttpVersion ?? '2',\n nodeOptions: { rejectUnauthorized: !config.bsyncIgnoreBadTls },\n interceptors: config.bsyncApiKey\n ? [authWithApiKey(config.bsyncApiKey)]\n : [],\n })\n }\n\n get running() {\n return !!this.ac\n }\n\n start() {\n if (this.ac) return\n this.ac = new AbortController()\n this.scanMuteOperations()\n this.scanNotifOperations()\n this.scanOperations()\n }\n\n /**\n * Waits until the subscription has processed every operation that existed in\n * bsync at the time `targets` was read (one cursor per stream). Returns as\n * soon as the cursors catch up - it does not wait for the bsync long-poll\n * timeout. Intended for tests/dev.\n */\n async processAll(targets: BsyncCursors, timeout = 5000) {\n if (!this.ac) return\n const start = Date.now()\n while (!this.isCaughtUp(targets)) {\n if (Date.now() - start > timeout) {\n throw new Error(\n `bsync subscription was not caught up within ${timeout}ms`,\n )\n }\n await wait(5)\n }\n }\n\n private isCaughtUp(targets: BsyncCursors) {\n return (\n gteCursor(this.cursors.op, targets.op) &&\n gteCursor(this.cursors.mute, targets.mute) &&\n gteCursor(this.cursors.notif, targets.notif)\n )\n }\n\n async destroy() {\n // Aborting cancels any in-flight long-poll scan immediately, so we don't\n // have to wait for the bsync long-poll timeout to elapse.\n this.ac?.abort()\n this.ac = undefined\n // Wait for the ongoing scans to unwind cleanly.\n await Promise.all(this.pendingScans)\n }\n\n /**\n * starts a scanner in the background, killing it when this instance is\n * destroyed, and storing its promise in `this.pendingScans` to allow\n * awaiting.\n */\n private startScanning(\n scanner: (\n cursor: undefined | string,\n signal: AbortSignal,\n ) => Promise<string | undefined>,\n ) {\n if (!this.ac) return\n const signal = this.ac.signal\n\n const scanPromise = this.runScanner(scanner, signal)\n\n this.pendingScans.add(scanPromise)\n void scanPromise\n .catch(() => {})\n .finally(() => {\n this.pendingScans.delete(scanPromise)\n })\n }\n\n private async runScanner(\n scanner: (\n cursor: undefined | string,\n signal: AbortSignal,\n ) => Promise<string | undefined>,\n signal: AbortSignal,\n ) {\n let cursor: undefined | string\n\n while (!signal.aborted) {\n try {\n cursor = await scanner(cursor, signal)\n } catch (err) {\n if (signal.aborted) break\n\n log.error({ err }, 'error in bsync scan')\n\n // retry in a bit, but bail out early if we're shutting down\n await wait(100, signal)\n }\n }\n }\n\n private scanMuteOperations() {\n this.startScanning(async (cursor, signal) => {\n const res = await this.bsyncClient.scanMuteOperations(\n { cursor },\n { signal },\n )\n\n await this.processMuteOperations(res.operations)\n this.cursors.mute = res.cursor\n\n return res.cursor\n })\n }\n\n private async processMuteOperations(operations: MuteOperation[]) {\n for (const op of operations) {\n const { type, actorDid, subject } = op\n if (type === MuteOperation_Type.ADD) {\n if (subject.startsWith('did:')) {\n await this.db.db\n .insertInto('mute')\n .values({\n mutedByDid: actorDid,\n subjectDid: subject,\n createdAt: new Date().toISOString(),\n })\n .onConflict((oc) => oc.doNothing())\n .execute()\n } else {\n const uri = new AtUri(subject)\n if (uri.collection === app.bsky.graph.list.$type) {\n await this.db.db\n .insertInto('list_mute')\n .values({\n mutedByDid: actorDid,\n listUri: subject,\n createdAt: new Date().toISOString(),\n })\n .onConflict((oc) => oc.doNothing())\n .execute()\n } else {\n await this.db.db\n .insertInto('thread_mute')\n .values({\n mutedByDid: actorDid,\n rootUri: subject,\n createdAt: new Date().toISOString(),\n })\n .onConflict((oc) => oc.doNothing())\n .execute()\n }\n }\n } else if (type === MuteOperation_Type.REMOVE) {\n if (subject.startsWith('did:')) {\n await this.db.db\n .deleteFrom('mute')\n .where('mutedByDid', '=', actorDid)\n .where('subjectDid', '=', subject)\n .execute()\n } else {\n const uri = new AtUri(subject)\n if (uri.collection === app.bsky.graph.list.$type) {\n await this.db.db\n .deleteFrom('list_mute')\n .where('mutedByDid', '=', actorDid)\n .where('listUri', '=', subject)\n .execute()\n } else {\n await this.db.db\n .deleteFrom('thread_mute')\n .where('mutedByDid', '=', actorDid)\n .where('rootUri', '=', subject)\n .execute()\n }\n }\n } else if (type === MuteOperation_Type.CLEAR) {\n await this.db.db\n .deleteFrom('mute')\n .where('mutedByDid', '=', actorDid)\n .execute()\n await this.db.db\n .deleteFrom('list_mute')\n .where('mutedByDid', '=', actorDid)\n .execute()\n }\n }\n }\n\n private scanNotifOperations() {\n this.startScanning(async (cursor, signal) => {\n const res = await this.bsyncClient.scanNotifOperations(\n { cursor },\n { signal },\n )\n\n await this.processNotifOperations(res.operations)\n this.cursors.notif = res.cursor\n\n return res.cursor\n })\n }\n\n private async processNotifOperations(operations: NotifOperation[]) {\n for (const op of operations) {\n const { actorDid, priority } = op\n if (priority !== undefined) {\n await this.db.db\n .insertInto('actor_state')\n .values({\n did: actorDid,\n priorityNotifs: priority,\n lastSeenNotifs: new Date().toISOString(),\n })\n .onConflict((oc) =>\n oc.column('did').doUpdateSet({ priorityNotifs: priority }),\n )\n .execute()\n }\n }\n }\n\n private scanOperations() {\n this.startScanning(async (cursor, signal) => {\n const res = await this.bsyncClient.scanOperations({ cursor }, { signal })\n\n await this.processOperations(res.operations)\n this.cursors.op = res.cursor\n\n return res.cursor\n })\n }\n\n private async processOperations(operations: Operation[]) {\n for (const op of operations) {\n const { namespace } = op\n\n const now = new Date().toISOString()\n\n // Index all items into private_data.\n await handleGenericOperation(this.db, op, now)\n\n // Maintain bespoke indexes for certain namespaces. A failure here must\n // not stall the stream, so log and move on (matching bsync behavior).\n try {\n if (\n namespace ===\n Namespaces.AppBskyNotificationDefsSubjectActivitySubscription.$type\n ) {\n await handleSubjectActivitySubscriptionOperation(this.db, op, now)\n } else if (\n namespace === Namespaces.AppBskyUnspeccedDefsAgeAssuranceEvent.$type\n ) {\n await handleAgeAssuranceEventOperation(this.db, op, now)\n } else if (\n namespace === Namespaces.AppBskyAgeassuranceDefsEvent.$type\n ) {\n await handleAgeAssuranceV2EventOperation(this.db, op, now)\n } else if (namespace === Namespaces.AppBskyBookmarkDefsBookmark.$type) {\n await handleBookmarkOperation(this.db, op, now)\n } else if (namespace === Namespaces.AppBskyDraftDefsDraftWithId.$type) {\n await handleDraftOperation(this.db, op, now)\n }\n } catch (err) {\n log.warn({ err, namespace }, 'bsync put operation indexing failed')\n }\n }\n }\n}\n\ntype HandleOperation = (\n db: Database,\n op: Operation,\n now: string,\n) => Promise<void>\n\n// upsert into or remove from private_data\nconst handleGenericOperation: HandleOperation = async (\n db: Database,\n op: Operation,\n now: string,\n) => {\n const { actorDid, namespace, key, method, payload } = op\n if (method === Method.CREATE || method === Method.UPDATE) {\n await db.db\n .insertInto('private_data')\n .values({\n actorDid,\n namespace,\n key,\n payload: Buffer.from(payload).toString('utf8'),\n indexedAt: now,\n updatedAt: now,\n })\n .onConflict((oc) =>\n oc.columns(['actorDid', 'namespace', 'key']).doUpdateSet({\n payload: excluded(db.db, 'payload'),\n updatedAt: excluded(db.db, 'updatedAt'),\n }),\n )\n .execute()\n } else if (method === Method.DELETE) {\n await db.db\n .deleteFrom('private_data')\n .where('actorDid', '=', actorDid)\n .where('namespace', '=', namespace)\n .where('key', '=', key)\n .execute()\n } else {\n assert.fail(`unexpected method ${method}`)\n }\n}\n\nconst handleSubjectActivitySubscriptionOperation: HandleOperation = async (\n db: Database,\n op: Operation,\n now: string,\n) => {\n const { actorDid, key, method, payload } = op\n\n if (method === Method.DELETE) {\n await db.db\n .deleteFrom('activity_subscription')\n .where('creator', '=', actorDid)\n .where('key', '=', key)\n .execute()\n return\n }\n\n const parsed =\n lexParse<app.bsky.notification.defs.SubjectActivitySubscription>(\n Buffer.from(payload).toString('utf8'),\n )\n const {\n subject,\n activitySubscription: { post, reply },\n } = parsed\n\n if (method === Method.CREATE) {\n await db.db\n .insertInto('activity_subscription')\n .values({\n creator: actorDid,\n subjectDid: subject,\n key,\n indexedAt: now,\n post,\n reply,\n })\n .execute()\n return\n }\n\n await db.db\n .updateTable('activity_subscription')\n .where('creator', '=', actorDid)\n .where('key', '=', key)\n .set({\n indexedAt: now,\n post,\n reply,\n })\n .execute()\n}\n\nconst handleAgeAssuranceEventOperation: HandleOperation = async (\n db: Database,\n op: Operation,\n) => {\n const { actorDid, method, payload } = op\n if (method !== Method.CREATE) return\n\n const parsed = lexParse<app.bsky.unspecced.defs.AgeAssuranceEvent>(\n Buffer.from(payload).toString('utf8'),\n )\n const { status, createdAt } = parsed\n\n const update = {\n ageAssuranceStatus: status,\n ageAssuranceLastInitiatedAt: status === 'pending' ? createdAt : undefined,\n }\n\n await db.db\n .updateTable('actor')\n .set(update)\n .where('did', '=', actorDid)\n .execute()\n}\n\nconst handleAgeAssuranceV2EventOperation: HandleOperation = async (\n db: Database,\n op: Operation,\n) => {\n const { actorDid, method, payload } = op\n if (method !== Method.CREATE) return\n\n const parsed = lexParse<app.bsky.ageassurance.defs.Event>(\n Buffer.from(payload).toString('utf8'),\n )\n const { status, createdAt, access, countryCode, regionCode } = parsed\n\n const update = {\n ageAssuranceStatus: status,\n ageAssuranceLastInitiatedAt: status === 'pending' ? createdAt : undefined,\n ageAssuranceAccess: access,\n ageAssuranceCountryCode: countryCode,\n ageAssuranceRegionCode: regionCode,\n }\n\n await db.db\n .updateTable('actor')\n .set(update)\n .where('did', '=', actorDid)\n .execute()\n}\n\nconst handleBookmarkOperation: HandleOperation = async (\n db: Database,\n op: Operation,\n now: string,\n) => {\n const { actorDid, key, method, payload } = op\n\n const updateAgg = (uri: string, dbTxn: Database) => {\n return dbTxn.db\n .insertInto('post_agg')\n .values({\n uri,\n bookmarkCount: dbTxn.db\n .selectFrom('bookmark')\n .where('bookmark.subjectUri', '=', uri)\n .select(countAll.as('count')),\n })\n .onConflict((oc) =>\n oc\n .column('uri')\n .doUpdateSet({ bookmarkCount: excluded(dbTxn.db, 'bookmarkCount') }),\n )\n .execute()\n }\n\n if (method === Method.CREATE) {\n const parsed = lexParse<app.bsky.bookmark.defs.Bookmark>(\n Buffer.from(payload).toString('utf8'),\n )\n const {\n subject: { uri, cid },\n } = parsed\n\n await db.transaction(async (dbTxn) => {\n await dbTxn.db\n .insertInto('bookmark')\n .values({\n creator: actorDid,\n key,\n indexedAt: now,\n subjectUri: uri,\n subjectCid: cid,\n })\n .execute()\n\n await updateAgg(uri, dbTxn)\n })\n }\n\n if (method === Method.DELETE) {\n await db.transaction(async (dbTxn) => {\n const bookmark = await dbTxn.db\n .selectFrom('bookmark')\n .selectAll()\n .where('creator', '=', actorDid)\n .where('key', '=', key)\n .executeTakeFirst()\n\n if (bookmark) {\n await dbTxn.db\n .deleteFrom('bookmark')\n .where('creator', '=', actorDid)\n .where('key', '=', key)\n .execute()\n\n await updateAgg(bookmark.subjectUri, dbTxn)\n }\n })\n }\n}\n\nconst handleDraftOperation: HandleOperation = async (\n db: Database,\n op: Operation,\n now: string,\n) => {\n const { actorDid, key, method, payload } = op\n\n if (method === Method.CREATE) {\n const payloadString = Buffer.from(payload).toString('utf8')\n\n await db.db\n .insertInto('draft')\n .values({\n creator: actorDid,\n key,\n createdAt: now,\n updatedAt: now,\n payload: payloadString,\n })\n .execute()\n }\n\n if (method === Method.UPDATE) {\n const payloadString = Buffer.from(payload).toString('utf8')\n\n await db.db\n .updateTable('draft')\n .where('creator', '=', actorDid)\n .where('key', '=', key)\n .set({\n updatedAt: now,\n payload: payloadString,\n })\n .execute()\n }\n\n if (method === Method.DELETE) {\n await db.db\n .deleteFrom('draft')\n .where('creator', '=', actorDid)\n .where('key', '=', key)\n .execute()\n }\n}\n\n// compares numeric (bigint) cursor ids; an undefined target is always satisfied\nconst gteCursor = (current: string | undefined, target: string | undefined) => {\n if (!target) return true\n return BigInt(current || '0') >= BigInt(target)\n}\n\n// resolves after `ms`, or early if `signal` aborts\nconst wait = (ms: number, signal?: AbortSignal) =>\n new Promise<void>((resolve) => {\n if (signal?.aborted) return resolve()\n const done = () => {\n clearTimeout(timer)\n signal?.removeEventListener('abort', done)\n resolve()\n }\n const timer = setTimeout(done, ms)\n signal?.addEventListener('abort', done, { once: true })\n })\n"]}
|
|
1
|
+
{"version":3,"file":"bsync-subscription.js","sourceRoot":"","sources":["../../../src/data-plane/server/bsync-subscription.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'node:assert'\nimport { lexParse } from '@atproto/lex'\nimport { AtUri } from '@atproto/syntax'\nimport {\n type BsyncClient,\n authWithApiKey,\n createBsyncClient,\n} from '../../bsync.js'\nimport type { ServerConfig } from '../../config.js'\nimport { app } from '../../lexicons/index.js'\nimport { subLogger as log } from '../../logger.js'\nimport {\n Method,\n type MuteOperation,\n MuteOperation_Type,\n type NotifOperation,\n type Operation,\n} from '../../proto/bsync_pb.js'\nimport { Namespaces } from '../../stash.js'\nimport type { Database } from './db/index.js'\nimport { countAll, excluded } from './db/util.js'\n\nexport type BsyncCursors = {\n op?: string\n mute?: string\n notif?: string\n}\n\nexport class BsyncSubscription {\n private ac: AbortController | undefined\n private pendingScans = new Set<Promise<void>>()\n private bsyncClient: BsyncClient\n private db: Database\n // Latest cursor processed for each stream, used to wait until caught up.\n private cursors: BsyncCursors = {}\n\n constructor(public opts: { db: Database; config: ServerConfig }) {\n const { config, db } = opts\n\n this.db = db\n this.bsyncClient = createBsyncClient({\n baseUrl: config.bsyncUrl,\n httpVersion: config.bsyncHttpVersion ?? '2',\n nodeOptions: { rejectUnauthorized: !config.bsyncIgnoreBadTls },\n interceptors: config.bsyncApiKey\n ? [authWithApiKey(config.bsyncApiKey)]\n : [],\n })\n }\n\n get running() {\n return !!this.ac\n }\n\n start() {\n if (this.ac) return\n this.ac = new AbortController()\n this.scanMuteOperations()\n this.scanNotifOperations()\n this.scanOperations()\n }\n\n /**\n * Waits until the subscription has processed every operation that existed in\n * bsync at the time `targets` was read (one cursor per stream). Returns as\n * soon as the cursors catch up - it does not wait for the bsync long-poll\n * timeout. Intended for tests/dev.\n */\n async processAll(targets: BsyncCursors, timeout = 5000) {\n if (!this.ac) return\n const start = Date.now()\n while (!this.isCaughtUp(targets)) {\n if (Date.now() - start > timeout) {\n throw new Error(\n `bsync subscription was not caught up within ${timeout}ms`,\n )\n }\n await wait(5)\n }\n }\n\n private isCaughtUp(targets: BsyncCursors) {\n return (\n gteCursor(this.cursors.op, targets.op) &&\n gteCursor(this.cursors.mute, targets.mute) &&\n gteCursor(this.cursors.notif, targets.notif)\n )\n }\n\n async destroy() {\n // Aborting cancels any in-flight long-poll scan immediately, so we don't\n // have to wait for the bsync long-poll timeout to elapse.\n this.ac?.abort()\n this.ac = undefined\n // Wait for the ongoing scans to unwind cleanly.\n await Promise.all(this.pendingScans)\n }\n\n /**\n * starts a scanner in the background, killing it when this instance is\n * destroyed, and storing its promise in `this.pendingScans` to allow\n * awaiting.\n */\n private startScanning(\n scanner: (\n cursor: undefined | string,\n signal: AbortSignal,\n ) => Promise<string | undefined>,\n ) {\n if (!this.ac) return\n const signal = this.ac.signal\n\n const scanPromise = this.runScanner(scanner, signal)\n\n this.pendingScans.add(scanPromise)\n void scanPromise\n .catch(() => {})\n .finally(() => {\n this.pendingScans.delete(scanPromise)\n })\n }\n\n private async runScanner(\n scanner: (\n cursor: undefined | string,\n signal: AbortSignal,\n ) => Promise<string | undefined>,\n signal: AbortSignal,\n ) {\n let cursor: undefined | string\n\n while (!signal.aborted) {\n try {\n cursor = await scanner(cursor, signal)\n } catch (err) {\n if (signal.aborted) break\n\n log.error({ err }, 'error in bsync scan')\n\n // retry in a bit, but bail out early if we're shutting down\n await wait(100, signal)\n }\n }\n }\n\n private scanMuteOperations() {\n this.startScanning(async (cursor, signal) => {\n const res = await this.bsyncClient.scanMuteOperations(\n { cursor },\n { signal },\n )\n\n await this.processMuteOperations(res.operations)\n this.cursors.mute = res.cursor\n\n return res.cursor\n })\n }\n\n private async processMuteOperations(operations: MuteOperation[]) {\n for (const op of operations) {\n const { type, actorDid, subject, onlyReposts, onlyQuoteposts } = op\n if (type === MuteOperation_Type.ADD) {\n if (subject.startsWith('did:')) {\n await this.db.db\n .insertInto('mute')\n .values({\n mutedByDid: actorDid,\n subjectDid: subject,\n createdAt: new Date().toISOString(),\n onlyReposts,\n onlyQuoteposts,\n })\n .onConflict((oc) =>\n oc\n .columns(['mutedByDid', 'subjectDid'])\n .doUpdateSet({ onlyReposts, onlyQuoteposts }),\n )\n .execute()\n } else {\n const uri = new AtUri(subject)\n if (uri.collection === app.bsky.graph.list.$type) {\n await this.db.db\n .insertInto('list_mute')\n .values({\n mutedByDid: actorDid,\n listUri: subject,\n createdAt: new Date().toISOString(),\n })\n .onConflict((oc) => oc.doNothing())\n .execute()\n } else {\n await this.db.db\n .insertInto('thread_mute')\n .values({\n mutedByDid: actorDid,\n rootUri: subject,\n createdAt: new Date().toISOString(),\n })\n .onConflict((oc) => oc.doNothing())\n .execute()\n }\n }\n } else if (type === MuteOperation_Type.REMOVE) {\n if (subject.startsWith('did:')) {\n await this.db.db\n .deleteFrom('mute')\n .where('mutedByDid', '=', actorDid)\n .where('subjectDid', '=', subject)\n .execute()\n } else {\n const uri = new AtUri(subject)\n if (uri.collection === app.bsky.graph.list.$type) {\n await this.db.db\n .deleteFrom('list_mute')\n .where('mutedByDid', '=', actorDid)\n .where('listUri', '=', subject)\n .execute()\n } else {\n await this.db.db\n .deleteFrom('thread_mute')\n .where('mutedByDid', '=', actorDid)\n .where('rootUri', '=', subject)\n .execute()\n }\n }\n } else if (type === MuteOperation_Type.CLEAR) {\n await this.db.db\n .deleteFrom('mute')\n .where('mutedByDid', '=', actorDid)\n .execute()\n await this.db.db\n .deleteFrom('list_mute')\n .where('mutedByDid', '=', actorDid)\n .execute()\n }\n }\n }\n\n private scanNotifOperations() {\n this.startScanning(async (cursor, signal) => {\n const res = await this.bsyncClient.scanNotifOperations(\n { cursor },\n { signal },\n )\n\n await this.processNotifOperations(res.operations)\n this.cursors.notif = res.cursor\n\n return res.cursor\n })\n }\n\n private async processNotifOperations(operations: NotifOperation[]) {\n for (const op of operations) {\n const { actorDid, priority } = op\n if (priority !== undefined) {\n await this.db.db\n .insertInto('actor_state')\n .values({\n did: actorDid,\n priorityNotifs: priority,\n lastSeenNotifs: new Date().toISOString(),\n })\n .onConflict((oc) =>\n oc.column('did').doUpdateSet({ priorityNotifs: priority }),\n )\n .execute()\n }\n }\n }\n\n private scanOperations() {\n this.startScanning(async (cursor, signal) => {\n const res = await this.bsyncClient.scanOperations({ cursor }, { signal })\n\n await this.processOperations(res.operations)\n this.cursors.op = res.cursor\n\n return res.cursor\n })\n }\n\n private async processOperations(operations: Operation[]) {\n for (const op of operations) {\n const { namespace } = op\n\n const now = new Date().toISOString()\n\n // Index all items into private_data.\n await handleGenericOperation(this.db, op, now)\n\n // Maintain bespoke indexes for certain namespaces. A failure here must\n // not stall the stream, so log and move on (matching bsync behavior).\n try {\n if (\n namespace ===\n Namespaces.AppBskyNotificationDefsSubjectActivitySubscription.$type\n ) {\n await handleSubjectActivitySubscriptionOperation(this.db, op, now)\n } else if (\n namespace === Namespaces.AppBskyUnspeccedDefsAgeAssuranceEvent.$type\n ) {\n await handleAgeAssuranceEventOperation(this.db, op, now)\n } else if (\n namespace === Namespaces.AppBskyAgeassuranceDefsEvent.$type\n ) {\n await handleAgeAssuranceV2EventOperation(this.db, op, now)\n } else if (namespace === Namespaces.AppBskyBookmarkDefsBookmark.$type) {\n await handleBookmarkOperation(this.db, op, now)\n } else if (namespace === Namespaces.AppBskyDraftDefsDraftWithId.$type) {\n await handleDraftOperation(this.db, op, now)\n }\n } catch (err) {\n log.warn({ err, namespace }, 'bsync put operation indexing failed')\n }\n }\n }\n}\n\ntype HandleOperation = (\n db: Database,\n op: Operation,\n now: string,\n) => Promise<void>\n\n// upsert into or remove from private_data\nconst handleGenericOperation: HandleOperation = async (\n db: Database,\n op: Operation,\n now: string,\n) => {\n const { actorDid, namespace, key, method, payload } = op\n if (method === Method.CREATE || method === Method.UPDATE) {\n await db.db\n .insertInto('private_data')\n .values({\n actorDid,\n namespace,\n key,\n payload: Buffer.from(payload).toString('utf8'),\n indexedAt: now,\n updatedAt: now,\n })\n .onConflict((oc) =>\n oc.columns(['actorDid', 'namespace', 'key']).doUpdateSet({\n payload: excluded(db.db, 'payload'),\n updatedAt: excluded(db.db, 'updatedAt'),\n }),\n )\n .execute()\n } else if (method === Method.DELETE) {\n await db.db\n .deleteFrom('private_data')\n .where('actorDid', '=', actorDid)\n .where('namespace', '=', namespace)\n .where('key', '=', key)\n .execute()\n } else {\n assert.fail(`unexpected method ${method}`)\n }\n}\n\nconst handleSubjectActivitySubscriptionOperation: HandleOperation = async (\n db: Database,\n op: Operation,\n now: string,\n) => {\n const { actorDid, key, method, payload } = op\n\n if (method === Method.DELETE) {\n await db.db\n .deleteFrom('activity_subscription')\n .where('creator', '=', actorDid)\n .where('key', '=', key)\n .execute()\n return\n }\n\n const parsed =\n lexParse<app.bsky.notification.defs.SubjectActivitySubscription>(\n Buffer.from(payload).toString('utf8'),\n )\n const {\n subject,\n activitySubscription: { post, reply },\n } = parsed\n\n if (method === Method.CREATE) {\n await db.db\n .insertInto('activity_subscription')\n .values({\n creator: actorDid,\n subjectDid: subject,\n key,\n indexedAt: now,\n post,\n reply,\n })\n .execute()\n return\n }\n\n await db.db\n .updateTable('activity_subscription')\n .where('creator', '=', actorDid)\n .where('key', '=', key)\n .set({\n indexedAt: now,\n post,\n reply,\n })\n .execute()\n}\n\nconst handleAgeAssuranceEventOperation: HandleOperation = async (\n db: Database,\n op: Operation,\n) => {\n const { actorDid, method, payload } = op\n if (method !== Method.CREATE) return\n\n const parsed = lexParse<app.bsky.unspecced.defs.AgeAssuranceEvent>(\n Buffer.from(payload).toString('utf8'),\n )\n const { status, createdAt } = parsed\n\n const update = {\n ageAssuranceStatus: status,\n ageAssuranceLastInitiatedAt: status === 'pending' ? createdAt : undefined,\n }\n\n await db.db\n .updateTable('actor')\n .set(update)\n .where('did', '=', actorDid)\n .execute()\n}\n\nconst handleAgeAssuranceV2EventOperation: HandleOperation = async (\n db: Database,\n op: Operation,\n) => {\n const { actorDid, method, payload } = op\n if (method !== Method.CREATE) return\n\n const parsed = lexParse<app.bsky.ageassurance.defs.Event>(\n Buffer.from(payload).toString('utf8'),\n )\n const { status, createdAt, access, countryCode, regionCode } = parsed\n\n const update = {\n ageAssuranceStatus: status,\n ageAssuranceLastInitiatedAt: status === 'pending' ? createdAt : undefined,\n ageAssuranceAccess: access,\n ageAssuranceCountryCode: countryCode,\n ageAssuranceRegionCode: regionCode,\n }\n\n await db.db\n .updateTable('actor')\n .set(update)\n .where('did', '=', actorDid)\n .execute()\n}\n\nconst handleBookmarkOperation: HandleOperation = async (\n db: Database,\n op: Operation,\n now: string,\n) => {\n const { actorDid, key, method, payload } = op\n\n const updateAgg = (uri: string, dbTxn: Database) => {\n return dbTxn.db\n .insertInto('post_agg')\n .values({\n uri,\n bookmarkCount: dbTxn.db\n .selectFrom('bookmark')\n .where('bookmark.subjectUri', '=', uri)\n .select(countAll.as('count')),\n })\n .onConflict((oc) =>\n oc\n .column('uri')\n .doUpdateSet({ bookmarkCount: excluded(dbTxn.db, 'bookmarkCount') }),\n )\n .execute()\n }\n\n if (method === Method.CREATE) {\n const parsed = lexParse<app.bsky.bookmark.defs.Bookmark>(\n Buffer.from(payload).toString('utf8'),\n )\n const {\n subject: { uri, cid },\n } = parsed\n\n await db.transaction(async (dbTxn) => {\n await dbTxn.db\n .insertInto('bookmark')\n .values({\n creator: actorDid,\n key,\n indexedAt: now,\n subjectUri: uri,\n subjectCid: cid,\n })\n .execute()\n\n await updateAgg(uri, dbTxn)\n })\n }\n\n if (method === Method.DELETE) {\n await db.transaction(async (dbTxn) => {\n const bookmark = await dbTxn.db\n .selectFrom('bookmark')\n .selectAll()\n .where('creator', '=', actorDid)\n .where('key', '=', key)\n .executeTakeFirst()\n\n if (bookmark) {\n await dbTxn.db\n .deleteFrom('bookmark')\n .where('creator', '=', actorDid)\n .where('key', '=', key)\n .execute()\n\n await updateAgg(bookmark.subjectUri, dbTxn)\n }\n })\n }\n}\n\nconst handleDraftOperation: HandleOperation = async (\n db: Database,\n op: Operation,\n now: string,\n) => {\n const { actorDid, key, method, payload } = op\n\n if (method === Method.CREATE) {\n const payloadString = Buffer.from(payload).toString('utf8')\n\n await db.db\n .insertInto('draft')\n .values({\n creator: actorDid,\n key,\n createdAt: now,\n updatedAt: now,\n payload: payloadString,\n })\n .execute()\n }\n\n if (method === Method.UPDATE) {\n const payloadString = Buffer.from(payload).toString('utf8')\n\n await db.db\n .updateTable('draft')\n .where('creator', '=', actorDid)\n .where('key', '=', key)\n .set({\n updatedAt: now,\n payload: payloadString,\n })\n .execute()\n }\n\n if (method === Method.DELETE) {\n await db.db\n .deleteFrom('draft')\n .where('creator', '=', actorDid)\n .where('key', '=', key)\n .execute()\n }\n}\n\n// compares numeric (bigint) cursor ids; an undefined target is always satisfied\nconst gteCursor = (current: string | undefined, target: string | undefined) => {\n if (!target) return true\n return BigInt(current || '0') >= BigInt(target)\n}\n\n// resolves after `ms`, or early if `signal` aborts\nconst wait = (ms: number, signal?: AbortSignal) =>\n new Promise<void>((resolve) => {\n if (signal?.aborted) return resolve()\n const done = () => {\n clearTimeout(timer)\n signal?.removeEventListener('abort', done)\n resolve()\n }\n const timer = setTimeout(done, ms)\n signal?.addEventListener('abort', done, { once: true })\n })\n"]}
|
|
@@ -23,6 +23,7 @@ import type * as list from './tables/list.js';
|
|
|
23
23
|
import type * as mute from './tables/mute.js';
|
|
24
24
|
import type * as notificationPushToken from './tables/notification-push-token.js';
|
|
25
25
|
import type * as notification from './tables/notification.js';
|
|
26
|
+
import type * as opThreadReply from './tables/op-thread-reply.js';
|
|
26
27
|
import type * as postAgg from './tables/post-agg.js';
|
|
27
28
|
import type * as postEmbed from './tables/post-embed.js';
|
|
28
29
|
import type * as postgate from './tables/post-gate.js';
|
|
@@ -42,6 +43,6 @@ import type * as threadgate from './tables/thread-gate.js';
|
|
|
42
43
|
import type * as threadMute from './tables/thread-mute.js';
|
|
43
44
|
import type * as verification from './tables/verification.js';
|
|
44
45
|
import type * as viewParam from './tables/view-param.js';
|
|
45
|
-
export type DatabaseSchemaType = duplicateRecord.PartialDB & profile.PartialDB & profileAgg.PartialDB & post.PartialDB & postEmbed.PartialDB & postAgg.PartialDB & repost.PartialDB & threadgate.PartialDB & postgate.PartialDB & feedItem.PartialDB & follow.PartialDB & like.PartialDB & list.PartialDB & listItem.PartialDB & listMute.PartialDB & listBlock.PartialDB & mute.PartialDB & actorBlock.PartialDB & threadMute.PartialDB & feedGenerator.PartialDB & subscription.PartialDB & actor.PartialDB & actorState.PartialDB & actorSync.PartialDB & record.PartialDB & notification.PartialDB & notificationPushToken.PartialDB & didCache.PartialDB & label.PartialDB & algo.PartialDB & viewParam.PartialDB & suggestedFollow.PartialDB & suggestedFeed.PartialDB & blobTakedown.PartialDB & labeler.PartialDB & starterPack.PartialDB & taggedSuggestion.PartialDB & quote.PartialDB & verification.PartialDB & privateData.PartialDB & activitySubscription.PartialDB & bookmark.PartialDB & draft.PartialDB;
|
|
46
|
+
export type DatabaseSchemaType = duplicateRecord.PartialDB & profile.PartialDB & profileAgg.PartialDB & post.PartialDB & postEmbed.PartialDB & postAgg.PartialDB & repost.PartialDB & threadgate.PartialDB & postgate.PartialDB & feedItem.PartialDB & follow.PartialDB & like.PartialDB & list.PartialDB & listItem.PartialDB & listMute.PartialDB & listBlock.PartialDB & mute.PartialDB & actorBlock.PartialDB & threadMute.PartialDB & feedGenerator.PartialDB & subscription.PartialDB & actor.PartialDB & actorState.PartialDB & actorSync.PartialDB & record.PartialDB & notification.PartialDB & notificationPushToken.PartialDB & didCache.PartialDB & label.PartialDB & algo.PartialDB & viewParam.PartialDB & suggestedFollow.PartialDB & suggestedFeed.PartialDB & blobTakedown.PartialDB & labeler.PartialDB & starterPack.PartialDB & taggedSuggestion.PartialDB & quote.PartialDB & verification.PartialDB & privateData.PartialDB & activitySubscription.PartialDB & bookmark.PartialDB & draft.PartialDB & opThreadReply.PartialDB;
|
|
46
47
|
export type DatabaseSchema = Kysely<DatabaseSchemaType>;
|
|
47
48
|
//# sourceMappingURL=database-schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-schema.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/db/database-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,KAAK,KAAK,oBAAoB,MAAM,mCAAmC,CAAA;AAC9E,OAAO,KAAK,KAAK,UAAU,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,KAAK,UAAU,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,KAAK,SAAS,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,KAAK,KAAK,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,KAAK,IAAI,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,KAAK,YAAY,MAAM,2BAA2B,CAAA;AAC9D,OAAO,KAAK,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AACrD,OAAO,KAAK,KAAK,QAAQ,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,KAAK,KAAK,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,KAAK,eAAe,MAAM,8BAA8B,CAAA;AACpE,OAAO,KAAK,KAAK,aAAa,MAAM,4BAA4B,CAAA;AAChE,OAAO,KAAK,KAAK,QAAQ,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,KAAK,MAAM,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,KAAK,KAAK,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,KAAK,OAAO,MAAM,qBAAqB,CAAA;AACnD,OAAO,KAAK,KAAK,IAAI,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,KAAK,SAAS,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,KAAK,QAAQ,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,KAAK,QAAQ,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,KAAK,IAAI,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,KAAK,IAAI,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,KAAK,qBAAqB,MAAM,qCAAqC,CAAA;AACjF,OAAO,KAAK,KAAK,YAAY,MAAM,0BAA0B,CAAA;AAC7D,OAAO,KAAK,KAAK,OAAO,MAAM,sBAAsB,CAAA;AACpD,OAAO,KAAK,KAAK,SAAS,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,KAAK,QAAQ,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,KAAK,IAAI,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,KAAK,WAAW,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,KAAK,UAAU,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,KAAK,OAAO,MAAM,qBAAqB,CAAA;AACnD,OAAO,KAAK,KAAK,KAAK,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,KAAK,MAAM,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,KAAK,MAAM,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,KAAK,WAAW,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,KAAK,YAAY,MAAM,0BAA0B,CAAA;AAC7D,OAAO,KAAK,KAAK,aAAa,MAAM,4BAA4B,CAAA;AAChE,OAAO,KAAK,KAAK,eAAe,MAAM,8BAA8B,CAAA;AACpE,OAAO,KAAK,KAAK,gBAAgB,MAAM,+BAA+B,CAAA;AACtE,OAAO,KAAK,KAAK,UAAU,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,KAAK,UAAU,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,KAAK,YAAY,MAAM,0BAA0B,CAAA;AAC7D,OAAO,KAAK,KAAK,SAAS,MAAM,wBAAwB,CAAA;AAExD,MAAM,MAAM,kBAAkB,GAAG,eAAe,CAAC,SAAS,GACxD,OAAO,CAAC,SAAS,GACjB,UAAU,CAAC,SAAS,GACpB,IAAI,CAAC,SAAS,GACd,SAAS,CAAC,SAAS,GACnB,OAAO,CAAC,SAAS,GACjB,MAAM,CAAC,SAAS,GAChB,UAAU,CAAC,SAAS,GACpB,QAAQ,CAAC,SAAS,GAClB,QAAQ,CAAC,SAAS,GAClB,MAAM,CAAC,SAAS,GAChB,IAAI,CAAC,SAAS,GACd,IAAI,CAAC,SAAS,GACd,QAAQ,CAAC,SAAS,GAClB,QAAQ,CAAC,SAAS,GAClB,SAAS,CAAC,SAAS,GACnB,IAAI,CAAC,SAAS,GACd,UAAU,CAAC,SAAS,GACpB,UAAU,CAAC,SAAS,GACpB,aAAa,CAAC,SAAS,GACvB,YAAY,CAAC,SAAS,GACtB,KAAK,CAAC,SAAS,GACf,UAAU,CAAC,SAAS,GACpB,SAAS,CAAC,SAAS,GACnB,MAAM,CAAC,SAAS,GAChB,YAAY,CAAC,SAAS,GACtB,qBAAqB,CAAC,SAAS,GAC/B,QAAQ,CAAC,SAAS,GAClB,KAAK,CAAC,SAAS,GACf,IAAI,CAAC,SAAS,GACd,SAAS,CAAC,SAAS,GACnB,eAAe,CAAC,SAAS,GACzB,aAAa,CAAC,SAAS,GACvB,YAAY,CAAC,SAAS,GACtB,OAAO,CAAC,SAAS,GACjB,WAAW,CAAC,SAAS,GACrB,gBAAgB,CAAC,SAAS,GAC1B,KAAK,CAAC,SAAS,GACf,YAAY,CAAC,SAAS,GACtB,WAAW,CAAC,SAAS,GACrB,oBAAoB,CAAC,SAAS,GAC9B,QAAQ,CAAC,SAAS,GAClB,KAAK,CAAC,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"database-schema.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/db/database-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-schema.js","sourceRoot":"","sources":["../../../../src/data-plane/server/db/database-schema.ts"],"names":[],"mappings":"","sourcesContent":["import type { Kysely } from 'kysely'\nimport type * as activitySubscription from './tables/activity-subscription.js'\nimport type * as actorBlock from './tables/actor-block.js'\nimport type * as actorState from './tables/actor-state.js'\nimport type * as actorSync from './tables/actor-sync.js'\nimport type * as actor from './tables/actor.js'\nimport type * as algo from './tables/algo.js'\nimport type * as blobTakedown from './tables/blob-takedown.js'\nimport type * as bookmark from './tables/bookmark.js'\nimport type * as didCache from './tables/did-cache.js'\nimport type * as draft from './tables/draft.js'\nimport type * as duplicateRecord from './tables/duplicate-record.js'\nimport type * as feedGenerator from './tables/feed-generator.js'\nimport type * as feedItem from './tables/feed-item.js'\nimport type * as follow from './tables/follow.js'\nimport type * as label from './tables/label.js'\nimport type * as labeler from './tables/labeler.js'\nimport type * as like from './tables/like.js'\nimport type * as listBlock from './tables/list-block.js'\nimport type * as listItem from './tables/list-item.js'\nimport type * as listMute from './tables/list-mute.js'\nimport type * as list from './tables/list.js'\nimport type * as mute from './tables/mute.js'\nimport type * as notificationPushToken from './tables/notification-push-token.js'\nimport type * as notification from './tables/notification.js'\nimport type * as postAgg from './tables/post-agg.js'\nimport type * as postEmbed from './tables/post-embed.js'\nimport type * as postgate from './tables/post-gate.js'\nimport type * as post from './tables/post.js'\nimport type * as privateData from './tables/private-data.js'\nimport type * as profileAgg from './tables/profile-agg.js'\nimport type * as profile from './tables/profile.js'\nimport type * as quote from './tables/quote.js'\nimport type * as record from './tables/record.js'\nimport type * as repost from './tables/repost.js'\nimport type * as starterPack from './tables/starter-pack.js'\nimport type * as subscription from './tables/subscription.js'\nimport type * as suggestedFeed from './tables/suggested-feed.js'\nimport type * as suggestedFollow from './tables/suggested-follow.js'\nimport type * as taggedSuggestion from './tables/tagged-suggestion.js'\nimport type * as threadgate from './tables/thread-gate.js'\nimport type * as threadMute from './tables/thread-mute.js'\nimport type * as verification from './tables/verification.js'\nimport type * as viewParam from './tables/view-param.js'\n\nexport type DatabaseSchemaType = duplicateRecord.PartialDB &\n profile.PartialDB &\n profileAgg.PartialDB &\n post.PartialDB &\n postEmbed.PartialDB &\n postAgg.PartialDB &\n repost.PartialDB &\n threadgate.PartialDB &\n postgate.PartialDB &\n feedItem.PartialDB &\n follow.PartialDB &\n like.PartialDB &\n list.PartialDB &\n listItem.PartialDB &\n listMute.PartialDB &\n listBlock.PartialDB &\n mute.PartialDB &\n actorBlock.PartialDB &\n threadMute.PartialDB &\n feedGenerator.PartialDB &\n subscription.PartialDB &\n actor.PartialDB &\n actorState.PartialDB &\n actorSync.PartialDB &\n record.PartialDB &\n notification.PartialDB &\n notificationPushToken.PartialDB &\n didCache.PartialDB &\n label.PartialDB &\n algo.PartialDB &\n viewParam.PartialDB &\n suggestedFollow.PartialDB &\n suggestedFeed.PartialDB &\n blobTakedown.PartialDB &\n labeler.PartialDB &\n starterPack.PartialDB &\n taggedSuggestion.PartialDB &\n quote.PartialDB &\n verification.PartialDB &\n privateData.PartialDB &\n activitySubscription.PartialDB &\n bookmark.PartialDB &\n draft.PartialDB\n\nexport type DatabaseSchema = Kysely<DatabaseSchemaType>\n"]}
|
|
1
|
+
{"version":3,"file":"database-schema.js","sourceRoot":"","sources":["../../../../src/data-plane/server/db/database-schema.ts"],"names":[],"mappings":"","sourcesContent":["import type { Kysely } from 'kysely'\nimport type * as activitySubscription from './tables/activity-subscription.js'\nimport type * as actorBlock from './tables/actor-block.js'\nimport type * as actorState from './tables/actor-state.js'\nimport type * as actorSync from './tables/actor-sync.js'\nimport type * as actor from './tables/actor.js'\nimport type * as algo from './tables/algo.js'\nimport type * as blobTakedown from './tables/blob-takedown.js'\nimport type * as bookmark from './tables/bookmark.js'\nimport type * as didCache from './tables/did-cache.js'\nimport type * as draft from './tables/draft.js'\nimport type * as duplicateRecord from './tables/duplicate-record.js'\nimport type * as feedGenerator from './tables/feed-generator.js'\nimport type * as feedItem from './tables/feed-item.js'\nimport type * as follow from './tables/follow.js'\nimport type * as label from './tables/label.js'\nimport type * as labeler from './tables/labeler.js'\nimport type * as like from './tables/like.js'\nimport type * as listBlock from './tables/list-block.js'\nimport type * as listItem from './tables/list-item.js'\nimport type * as listMute from './tables/list-mute.js'\nimport type * as list from './tables/list.js'\nimport type * as mute from './tables/mute.js'\nimport type * as notificationPushToken from './tables/notification-push-token.js'\nimport type * as notification from './tables/notification.js'\nimport type * as opThreadReply from './tables/op-thread-reply.js'\nimport type * as postAgg from './tables/post-agg.js'\nimport type * as postEmbed from './tables/post-embed.js'\nimport type * as postgate from './tables/post-gate.js'\nimport type * as post from './tables/post.js'\nimport type * as privateData from './tables/private-data.js'\nimport type * as profileAgg from './tables/profile-agg.js'\nimport type * as profile from './tables/profile.js'\nimport type * as quote from './tables/quote.js'\nimport type * as record from './tables/record.js'\nimport type * as repost from './tables/repost.js'\nimport type * as starterPack from './tables/starter-pack.js'\nimport type * as subscription from './tables/subscription.js'\nimport type * as suggestedFeed from './tables/suggested-feed.js'\nimport type * as suggestedFollow from './tables/suggested-follow.js'\nimport type * as taggedSuggestion from './tables/tagged-suggestion.js'\nimport type * as threadgate from './tables/thread-gate.js'\nimport type * as threadMute from './tables/thread-mute.js'\nimport type * as verification from './tables/verification.js'\nimport type * as viewParam from './tables/view-param.js'\n\nexport type DatabaseSchemaType = duplicateRecord.PartialDB &\n profile.PartialDB &\n profileAgg.PartialDB &\n post.PartialDB &\n postEmbed.PartialDB &\n postAgg.PartialDB &\n repost.PartialDB &\n threadgate.PartialDB &\n postgate.PartialDB &\n feedItem.PartialDB &\n follow.PartialDB &\n like.PartialDB &\n list.PartialDB &\n listItem.PartialDB &\n listMute.PartialDB &\n listBlock.PartialDB &\n mute.PartialDB &\n actorBlock.PartialDB &\n threadMute.PartialDB &\n feedGenerator.PartialDB &\n subscription.PartialDB &\n actor.PartialDB &\n actorState.PartialDB &\n actorSync.PartialDB &\n record.PartialDB &\n notification.PartialDB &\n notificationPushToken.PartialDB &\n didCache.PartialDB &\n label.PartialDB &\n algo.PartialDB &\n viewParam.PartialDB &\n suggestedFollow.PartialDB &\n suggestedFeed.PartialDB &\n blobTakedown.PartialDB &\n labeler.PartialDB &\n starterPack.PartialDB &\n taggedSuggestion.PartialDB &\n quote.PartialDB &\n verification.PartialDB &\n privateData.PartialDB &\n activitySubscription.PartialDB &\n bookmark.PartialDB &\n draft.PartialDB &\n opThreadReply.PartialDB\n\nexport type DatabaseSchema = Kysely<DatabaseSchemaType>\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import EventEmitter from 'node:events';
|
|
1
2
|
import { Migrator } from 'kysely/migration';
|
|
2
3
|
declare const PgPool: typeof import("pg").Pool;
|
|
3
4
|
type PgPool = InstanceType<typeof PgPool>;
|
|
4
|
-
import type TypedEmitter from 'typed-emitter';
|
|
5
5
|
import type { DatabaseSchema } from './database-schema.js';
|
|
6
6
|
import type { PgOptions } from './types.js';
|
|
7
7
|
export type { DatabaseSchema };
|
|
@@ -10,7 +10,7 @@ export declare class Database {
|
|
|
10
10
|
pool: PgPool;
|
|
11
11
|
db: DatabaseSchema;
|
|
12
12
|
migrator: Migrator;
|
|
13
|
-
txEvt:
|
|
13
|
+
txEvt: EventEmitter<TxnEvents>;
|
|
14
14
|
destroyed: boolean;
|
|
15
15
|
constructor(opts: PgOptions, instances?: {
|
|
16
16
|
db: DatabaseSchema;
|
|
@@ -28,8 +28,7 @@ export declare class Database {
|
|
|
28
28
|
close(): Promise<void>;
|
|
29
29
|
}
|
|
30
30
|
export default Database;
|
|
31
|
-
type TxnEmitter = TypedEmitter.default<TxnEvents>;
|
|
32
31
|
type TxnEvents = {
|
|
33
|
-
commit:
|
|
32
|
+
commit: [];
|
|
34
33
|
};
|
|
35
34
|
//# sourceMappingURL=db.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/db/db.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/db/db.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,MAAM,aAAa,CAAA;AAWtC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,QAAA,MAAc,MAAM,0BAAuB,CAAA;AAC3C,KAAK,MAAM,GAAG,YAAY,CAAC,OAAO,MAAM,CAAC,CAAA;AAEzC,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,sBAAsB,CAAA;AAG9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3C,YAAY,EAAE,cAAc,EAAE,CAAA;AAE9B,qBAAa,QAAQ;IAQV,IAAI,EAAE,SAAS;IAPxB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,cAAc,CAAA;IAClB,QAAQ,EAAE,QAAQ,CAAA;IAClB,KAAK,0BAAgC;IACrC,SAAS,UAAQ;IAEjB,YACS,IAAI,EAAE,SAAS,EACtB,SAAS,CAAC,EAAE;QAAE,EAAE,EAAE,cAAc,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAA;KAAE,EAiDrE;IAED,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAE/B;IAEK,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAuBjE;IAED,IAAI,aAAa,YAEhB;IAED,iBAAiB,SAEhB;IAED,oBAAoB,SAEnB;IAED,QAAQ,CAAC,EAAE,EAAE,MAAM,IAAI,QAGtB;IAEK,gBAAgB,CAAC,SAAS,EAAE,MAAM,yDAYvC;IAEK,sBAAsB,0DAY3B;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAI3B;CACF;eAEc,QAAQ;AA6BvB,KAAK,SAAS,GAAG;IACf,MAAM,EAAE,EAAE,CAAA;CACX,CAAA"}
|
|
@@ -2,9 +2,7 @@ import assert from 'node:assert';
|
|
|
2
2
|
import EventEmitter from 'node:events';
|
|
3
3
|
import { Kysely, PostgresDialect, } from 'kysely';
|
|
4
4
|
import { Migrator } from 'kysely/migration';
|
|
5
|
-
// eslint-disable-next-line import/default
|
|
6
5
|
import pg from 'pg';
|
|
7
|
-
// eslint-disable-next-line import/no-named-as-default-member
|
|
8
6
|
const { Pool: PgPool, types: pgTypes } = pg;
|
|
9
7
|
import { dbLogger } from '../../../logger.js';
|
|
10
8
|
import * as migrations from './migrations/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../../../src/data-plane/server/db/db.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'node:assert'\nimport EventEmitter from 'node:events'\nimport {\n Kysely,\n type KyselyPlugin,\n type PluginTransformQueryArgs,\n type PluginTransformResultArgs,\n PostgresDialect,\n type QueryResult,\n type RootOperationNode,\n type UnknownRow,\n} from 'kysely'\nimport { Migrator } from 'kysely/migration'\n// eslint-disable-next-line import/default\nimport pg from 'pg'\n// eslint-disable-next-line import/no-named-as-default-member\nconst { Pool: PgPool, types: pgTypes } = pg\ntype PgPool = InstanceType<typeof PgPool>\nimport type TypedEmitter from 'typed-emitter'\nimport { dbLogger } from '../../../logger.js'\nimport type { DatabaseSchema, DatabaseSchemaType } from './database-schema.js'\nimport * as migrations from './migrations/index.js'\nimport { CtxMigrationProvider } from './migrations/provider.js'\nimport type { PgOptions } from './types.js'\n\nexport type { DatabaseSchema }\n\nexport class Database {\n pool: PgPool\n db: DatabaseSchema\n migrator: Migrator\n txEvt = new EventEmitter() as TxnEmitter\n destroyed = false\n\n constructor(\n public opts: PgOptions,\n instances?: { db: DatabaseSchema; pool: PgPool; migrator: Migrator },\n ) {\n // if instances are provided, use those\n if (instances) {\n this.db = instances.db\n this.pool = instances.pool\n this.migrator = instances.migrator\n return\n }\n\n // else create a pool & connect\n const { schema, url } = opts\n const pool =\n opts.pool ??\n new PgPool({\n connectionString: url,\n max: opts.poolSize,\n maxUses: opts.poolMaxUses,\n idleTimeoutMillis: opts.poolIdleTimeoutMs,\n })\n\n // Select count(*) and other pg bigints as js integer\n pgTypes.setTypeParser(pgTypes.builtins.INT8, (n) => parseInt(n, 10))\n\n // Setup schema usage, primarily for test parallelism (each test suite runs in its own pg schema)\n if (schema && !/^[a-z_]+$/i.test(schema)) {\n throw new Error(`Postgres schema must only contain [A-Za-z_]: ${schema}`)\n }\n\n pool.on('error', onPoolError)\n pool.on('connect', (client) => {\n client.on('error', onClientError)\n // Used for trigram indexes, e.g. on actor search\n client.query('SET pg_trgm.word_similarity_threshold TO .4;')\n if (schema) {\n // Shared objects such as extensions will go in the public schema\n client.query(`SET search_path TO \"${schema}\",public;`)\n }\n })\n\n this.pool = pool\n this.db = new Kysely<DatabaseSchemaType>({\n dialect: new PostgresDialect({ pool }),\n })\n this.migrator = new Migrator({\n db: this.db,\n migrationTableSchema: opts.schema,\n provider: new CtxMigrationProvider(migrations, 'pg'),\n })\n }\n\n get schema(): string | undefined {\n return this.opts.schema\n }\n\n async transaction<T>(fn: (db: Database) => Promise<T>): Promise<T> {\n const leakyTxPlugin = new LeakyTxPlugin()\n const { dbTxn, txRes } = await this.db\n .withPlugin(leakyTxPlugin)\n .transaction()\n .execute(async (txn) => {\n const dbTxn = new Database(this.opts, {\n db: txn,\n pool: this.pool,\n migrator: this.migrator,\n })\n const txRes = await fn(dbTxn)\n .catch(async (err) => {\n leakyTxPlugin.endTx()\n // ensure that all in-flight queries are flushed & the connection is open\n await dbTxn.db.getExecutor().provideConnection(noopAsync)\n throw err\n })\n .finally(() => leakyTxPlugin.endTx())\n return { dbTxn, txRes }\n })\n dbTxn?.txEvt.emit('commit')\n return txRes\n }\n\n get isTransaction() {\n return this.db.isTransaction\n }\n\n assertTransaction() {\n assert(this.isTransaction, 'Transaction required')\n }\n\n assertNotTransaction() {\n assert(!this.isTransaction, 'Cannot be in a transaction')\n }\n\n onCommit(fn: () => void) {\n this.assertTransaction()\n this.txEvt.once('commit', fn)\n }\n\n async migrateToOrThrow(migration: string) {\n if (this.schema) {\n await this.db.schema.createSchema(this.schema).ifNotExists().execute()\n }\n const { error, results } = await this.migrator.migrateTo(migration)\n if (error) {\n throw error\n }\n if (!results) {\n throw new Error('An unknown failure occurred while migrating')\n }\n return results\n }\n\n async migrateToLatestOrThrow() {\n if (this.schema) {\n await this.db.schema.createSchema(this.schema).ifNotExists().execute()\n }\n const { error, results } = await this.migrator.migrateToLatest()\n if (error) {\n throw error\n }\n if (!results) {\n throw new Error('An unknown failure occurred while migrating')\n }\n return results\n }\n\n async close(): Promise<void> {\n if (this.destroyed) return\n await this.db.destroy()\n this.destroyed = true\n }\n}\n\nexport default Database\n\nconst onPoolError = (err: Error) => dbLogger.error({ err }, 'db pool error')\nconst onClientError = (err: Error) => dbLogger.error({ err }, 'db client error')\n\n// utils\n// -------\n\nclass LeakyTxPlugin implements KyselyPlugin {\n private txOver = false\n\n endTx() {\n this.txOver = true\n }\n\n transformQuery(args: PluginTransformQueryArgs): RootOperationNode {\n if (this.txOver) {\n throw new Error('tx already failed')\n }\n return args.node\n }\n\n async transformResult(\n args: PluginTransformResultArgs,\n ): Promise<QueryResult<UnknownRow>> {\n return args.result\n }\n}\n\ntype TxnEmitter = TypedEmitter.default<TxnEvents>\n\ntype TxnEvents = {\n commit: () => void\n}\n\nconst noopAsync = async () => {}\n"]}
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../../../src/data-plane/server/db/db.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'node:assert'\nimport EventEmitter from 'node:events'\nimport {\n Kysely,\n type KyselyPlugin,\n type PluginTransformQueryArgs,\n type PluginTransformResultArgs,\n PostgresDialect,\n type QueryResult,\n type RootOperationNode,\n type UnknownRow,\n} from 'kysely'\nimport { Migrator } from 'kysely/migration'\nimport pg from 'pg'\nconst { Pool: PgPool, types: pgTypes } = pg\ntype PgPool = InstanceType<typeof PgPool>\nimport { dbLogger } from '../../../logger.js'\nimport type { DatabaseSchema, DatabaseSchemaType } from './database-schema.js'\nimport * as migrations from './migrations/index.js'\nimport { CtxMigrationProvider } from './migrations/provider.js'\nimport type { PgOptions } from './types.js'\n\nexport type { DatabaseSchema }\n\nexport class Database {\n pool: PgPool\n db: DatabaseSchema\n migrator: Migrator\n txEvt = new EventEmitter<TxnEvents>()\n destroyed = false\n\n constructor(\n public opts: PgOptions,\n instances?: { db: DatabaseSchema; pool: PgPool; migrator: Migrator },\n ) {\n // if instances are provided, use those\n if (instances) {\n this.db = instances.db\n this.pool = instances.pool\n this.migrator = instances.migrator\n return\n }\n\n // else create a pool & connect\n const { schema, url } = opts\n const pool =\n opts.pool ??\n new PgPool({\n connectionString: url,\n max: opts.poolSize,\n maxUses: opts.poolMaxUses,\n idleTimeoutMillis: opts.poolIdleTimeoutMs,\n })\n\n // Select count(*) and other pg bigints as js integer\n pgTypes.setTypeParser(pgTypes.builtins.INT8, (n) => parseInt(n, 10))\n\n // Setup schema usage, primarily for test parallelism (each test suite runs in its own pg schema)\n if (schema && !/^[a-z_]+$/i.test(schema)) {\n throw new Error(`Postgres schema must only contain [A-Za-z_]: ${schema}`)\n }\n\n pool.on('error', onPoolError)\n pool.on('connect', (client) => {\n client.on('error', onClientError)\n // Used for trigram indexes, e.g. on actor search\n client.query('SET pg_trgm.word_similarity_threshold TO .4;')\n if (schema) {\n // Shared objects such as extensions will go in the public schema\n client.query(`SET search_path TO \"${schema}\",public;`)\n }\n })\n\n this.pool = pool\n this.db = new Kysely<DatabaseSchemaType>({\n dialect: new PostgresDialect({ pool }),\n })\n this.migrator = new Migrator({\n db: this.db,\n migrationTableSchema: opts.schema,\n provider: new CtxMigrationProvider(migrations, 'pg'),\n })\n }\n\n get schema(): string | undefined {\n return this.opts.schema\n }\n\n async transaction<T>(fn: (db: Database) => Promise<T>): Promise<T> {\n const leakyTxPlugin = new LeakyTxPlugin()\n const { dbTxn, txRes } = await this.db\n .withPlugin(leakyTxPlugin)\n .transaction()\n .execute(async (txn) => {\n const dbTxn = new Database(this.opts, {\n db: txn,\n pool: this.pool,\n migrator: this.migrator,\n })\n const txRes = await fn(dbTxn)\n .catch(async (err) => {\n leakyTxPlugin.endTx()\n // ensure that all in-flight queries are flushed & the connection is open\n await dbTxn.db.getExecutor().provideConnection(noopAsync)\n throw err\n })\n .finally(() => leakyTxPlugin.endTx())\n return { dbTxn, txRes }\n })\n dbTxn?.txEvt.emit('commit')\n return txRes\n }\n\n get isTransaction() {\n return this.db.isTransaction\n }\n\n assertTransaction() {\n assert(this.isTransaction, 'Transaction required')\n }\n\n assertNotTransaction() {\n assert(!this.isTransaction, 'Cannot be in a transaction')\n }\n\n onCommit(fn: () => void) {\n this.assertTransaction()\n this.txEvt.once('commit', fn)\n }\n\n async migrateToOrThrow(migration: string) {\n if (this.schema) {\n await this.db.schema.createSchema(this.schema).ifNotExists().execute()\n }\n const { error, results } = await this.migrator.migrateTo(migration)\n if (error) {\n throw error\n }\n if (!results) {\n throw new Error('An unknown failure occurred while migrating')\n }\n return results\n }\n\n async migrateToLatestOrThrow() {\n if (this.schema) {\n await this.db.schema.createSchema(this.schema).ifNotExists().execute()\n }\n const { error, results } = await this.migrator.migrateToLatest()\n if (error) {\n throw error\n }\n if (!results) {\n throw new Error('An unknown failure occurred while migrating')\n }\n return results\n }\n\n async close(): Promise<void> {\n if (this.destroyed) return\n await this.db.destroy()\n this.destroyed = true\n }\n}\n\nexport default Database\n\nconst onPoolError = (err: Error) => dbLogger.error({ err }, 'db pool error')\nconst onClientError = (err: Error) => dbLogger.error({ err }, 'db client error')\n\n// utils\n// -------\n\nclass LeakyTxPlugin implements KyselyPlugin {\n private txOver = false\n\n endTx() {\n this.txOver = true\n }\n\n transformQuery(args: PluginTransformQueryArgs): RootOperationNode {\n if (this.txOver) {\n throw new Error('tx already failed')\n }\n return args.node\n }\n\n async transformResult(\n args: PluginTransformResultArgs,\n ): Promise<QueryResult<UnknownRow>> {\n return args.result\n }\n}\n\ntype TxnEvents = {\n commit: []\n}\n\nconst noopAsync = async () => {}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260618T200000000Z-add-mute-scope.d.ts","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/migrations/20260618T200000000Z-add-mute-scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAIpC,wBAAsB,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAU3D;AAED,wBAAsB,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAM7D"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// scope restrictions: when any is set, just the scoped content is muted;
|
|
2
|
+
// when none are set, the subject is fully muted
|
|
3
|
+
export async function up(db) {
|
|
4
|
+
await db.schema
|
|
5
|
+
.alterTable('mute')
|
|
6
|
+
.addColumn('onlyReposts', 'boolean', (col) => col.notNull().defaultTo(false))
|
|
7
|
+
.addColumn('onlyQuoteposts', 'boolean', (col) => col.notNull().defaultTo(false))
|
|
8
|
+
.execute();
|
|
9
|
+
}
|
|
10
|
+
export async function down(db) {
|
|
11
|
+
await db.schema
|
|
12
|
+
.alterTable('mute')
|
|
13
|
+
.dropColumn('onlyReposts')
|
|
14
|
+
.dropColumn('onlyQuoteposts')
|
|
15
|
+
.execute();
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=20260618T200000000Z-add-mute-scope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260618T200000000Z-add-mute-scope.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/migrations/20260618T200000000Z-add-mute-scope.ts"],"names":[],"mappings":"AAEA,yEAAyE;AACzE,gDAAgD;AAChD,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,EAAmB;IAC1C,MAAM,EAAE,CAAC,MAAM;SACZ,UAAU,CAAC,MAAM,CAAC;SAClB,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAC3C,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAC/B;SACA,SAAS,CAAC,gBAAgB,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAC9C,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAC/B;SACA,OAAO,EAAE,CAAA;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,EAAmB;IAC5C,MAAM,EAAE,CAAC,MAAM;SACZ,UAAU,CAAC,MAAM,CAAC;SAClB,UAAU,CAAC,aAAa,CAAC;SACzB,UAAU,CAAC,gBAAgB,CAAC;SAC5B,OAAO,EAAE,CAAA;AACd,CAAC","sourcesContent":["import type { Kysely } from 'kysely'\n\n// scope restrictions: when any is set, just the scoped content is muted;\n// when none are set, the subject is fully muted\nexport async function up(db: Kysely<unknown>): Promise<void> {\n await db.schema\n .alterTable('mute')\n .addColumn('onlyReposts', 'boolean', (col) =>\n col.notNull().defaultTo(false),\n )\n .addColumn('onlyQuoteposts', 'boolean', (col) =>\n col.notNull().defaultTo(false),\n )\n .execute()\n}\n\nexport async function down(db: Kysely<unknown>): Promise<void> {\n await db.schema\n .alterTable('mute')\n .dropColumn('onlyReposts')\n .dropColumn('onlyQuoteposts')\n .execute()\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260729T223157563Z-add-op-thread-reply.d.ts","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/migrations/20260729T223157563Z-add-op-thread-reply.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEpC,wBAAsB,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAS3D;AAED,wBAAsB,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7D"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export async function up(db) {
|
|
2
|
+
await db.schema
|
|
3
|
+
.createTable('op_thread_reply')
|
|
4
|
+
.addColumn('rootUri', 'varchar', (col) => col.notNull())
|
|
5
|
+
.addColumn('parentUri', 'varchar', (col) => col.notNull())
|
|
6
|
+
.addColumn('uri', 'varchar', (col) => col.notNull())
|
|
7
|
+
.addColumn('deletedAt', 'varchar')
|
|
8
|
+
.addPrimaryKeyConstraint('op_thread_reply_pkey', ['rootUri', 'uri'])
|
|
9
|
+
.execute();
|
|
10
|
+
}
|
|
11
|
+
export async function down(db) {
|
|
12
|
+
await db.schema.dropTable('op_thread_reply').execute();
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=20260729T223157563Z-add-op-thread-reply.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260729T223157563Z-add-op-thread-reply.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/migrations/20260729T223157563Z-add-op-thread-reply.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,EAAmB;IAC1C,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,iBAAiB,CAAC;SAC9B,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACvD,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACzD,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACnD,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC;SACjC,uBAAuB,CAAC,sBAAsB,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;SACnE,OAAO,EAAE,CAAA;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,EAAmB;IAC5C,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE,CAAA;AACxD,CAAC","sourcesContent":["import type { Kysely } from 'kysely'\n\nexport async function up(db: Kysely<unknown>): Promise<void> {\n await db.schema\n .createTable('op_thread_reply')\n .addColumn('rootUri', 'varchar', (col) => col.notNull())\n .addColumn('parentUri', 'varchar', (col) => col.notNull())\n .addColumn('uri', 'varchar', (col) => col.notNull())\n .addColumn('deletedAt', 'varchar')\n .addPrimaryKeyConstraint('op_thread_reply_pkey', ['rootUri', 'uri'])\n .execute()\n}\n\nexport async function down(db: Kysely<unknown>): Promise<void> {\n await db.schema.dropTable('op_thread_reply').execute()\n}\n"]}
|
|
@@ -54,4 +54,6 @@ export * as _20250813T174955711Z from './20250813T174955711Z-add-post-agg-bookma
|
|
|
54
54
|
export * as _20251120T004738098Z from './20251120T004738098Z-update-actor-age-assurance-v2.js';
|
|
55
55
|
export * as _20260112T133951271Z from './20260112T133951271Z-add-drafts.js';
|
|
56
56
|
export * as _20260604T224952774Z from './20260604T224952774Z-post-embed-gallery-image.js';
|
|
57
|
+
export * as _20260618T200000000Z from './20260618T200000000Z-add-mute-scope.js';
|
|
58
|
+
export * as _20260729T223157563Z from './20260729T223157563Z-add-op-thread-reply.js';
|
|
57
59
|
//# 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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"}
|
|
@@ -57,4 +57,6 @@ export * as _20250813T174955711Z from './20250813T174955711Z-add-post-agg-bookma
|
|
|
57
57
|
export * as _20251120T004738098Z from './20251120T004738098Z-update-actor-age-assurance-v2.js';
|
|
58
58
|
export * as _20260112T133951271Z from './20260112T133951271Z-add-drafts.js';
|
|
59
59
|
export * as _20260604T224952774Z from './20260604T224952774Z-post-embed-gallery-image.js';
|
|
60
|
+
export * as _20260618T200000000Z from './20260618T200000000Z-add-mute-scope.js';
|
|
61
|
+
export * as _20260729T223157563Z from './20260729T223157563Z-add-op-thread-reply.js';
|
|
60
62
|
//# 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'\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'\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mute.d.ts","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/tables/mute.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"mute.d.ts","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/tables/mute.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IAGjB,WAAW,EAAE,OAAO,CAAA;IACpB,cAAc,EAAE,OAAO,CAAA;CACxB;AAED,eAAO,MAAM,SAAS,SAAS,CAAA;AAE/B,MAAM,MAAM,SAAS,GAAG;IAAE,CAAC,SAAS,CAAC,EAAE,IAAI,CAAA;CAAE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mute.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/tables/mute.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mute.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/tables/mute.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAA","sourcesContent":["export interface Mute {\n subjectDid: string\n mutedByDid: string\n createdAt: string\n // scope restrictions: when any is set, just the scoped content is muted;\n // when none are set, the subject is fully muted\n onlyReposts: boolean\n onlyQuoteposts: boolean\n}\n\nexport const tableName = 'mute'\n\nexport type PartialDB = { [tableName]: Mute }\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
declare const tableName = "op_thread_reply";
|
|
2
|
+
export interface OpThreadReply {
|
|
3
|
+
rootUri: string;
|
|
4
|
+
parentUri: string;
|
|
5
|
+
uri: string;
|
|
6
|
+
deletedAt: string | null;
|
|
7
|
+
}
|
|
8
|
+
export type PartialDB = {
|
|
9
|
+
[tableName]: OpThreadReply;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=op-thread-reply.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"op-thread-reply.d.ts","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/tables/op-thread-reply.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,SAAS,oBAAoB,CAAA;AAMnC,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB;AAED,MAAM,MAAM,SAAS,GAAG;IAAE,CAAC,SAAS,CAAC,EAAE,aAAa,CAAA;CAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"op-thread-reply.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/tables/op-thread-reply.ts"],"names":[],"mappings":"AAAA,MAAM,SAAS,GAAG,iBAAiB,CAAA","sourcesContent":["const tableName = 'op_thread_reply'\n\n// Denormalized OP replies per thread, mirroring the production dataplane's\n// op_thread_replies table. Rows are soft deleted (deletedAt) rather than\n// removed so the OP thread walk can still route through a deleted reply to\n// replies that outlive it.\nexport interface OpThreadReply {\n rootUri: string\n parentUri: string\n uri: string\n deletedAt: string | null\n}\n\nexport type PartialDB = { [tableName]: OpThreadReply }\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/db/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/db/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,KAAK,MAAM,GAAG,EAAE,CAAC,IAAI,CAAA;AAErB,MAAM,MAAM,SAAS,GAAG;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/data-plane/server/db/types.ts"],"names":[],"mappings":"","sourcesContent":["
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/data-plane/server/db/types.ts"],"names":[],"mappings":"","sourcesContent":["import type pg from 'pg'\ntype PgPool = pg.Pool\n\nexport type PgOptions = {\n url: string\n pool?: PgPool\n schema?: string\n poolSize?: number\n poolMaxUses?: number\n poolIdleTimeoutMs?: number\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/db/util.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,OAAO,EACZ,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EAEpB,MAAM,QAAQ,CAAA;AACf,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAE9E,eAAO,MAAM,gBAAgB,UAAW,MAAM,sBAM7C,CAAA;AAGD,eAAO,MAAM,oBAAoB,UAAW,KAAK,wBAEhD,CAAA;AAED,eAAO,MAAM,WAAW,kBAAmB;IAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,YAExE,CAAA;AAED,eAAO,MAAM,QAAQ,oBAAwB,CAAA;AAG7C,eAAO,MAAM,QAAQ,GAAI,CAAC,MAAM,cAAc,4BAE7C,CAAA;AAED,eAAO,MAAM,OAAO,qBAAsB,CAAA;AAG1C,eAAO,MAAM,UAAU,GAAI,CAAC,GAAG,OAAO,QAAQ,OAAO,EAAE,kBAEtD,CAAA;AAED,eAAO,MAAM,YAAY;;;;;CAaxB,CAAA;AAED,MAAM,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/db/util.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,OAAO,EACZ,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EAEpB,MAAM,QAAQ,CAAA;AACf,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAE9E,eAAO,MAAM,gBAAgB,UAAW,MAAM,sBAM7C,CAAA;AAGD,eAAO,MAAM,oBAAoB,UAAW,KAAK,wBAEhD,CAAA;AAED,eAAO,MAAM,WAAW,kBAAmB;IAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,YAExE,CAAA;AAED,eAAO,MAAM,QAAQ,oBAAwB,CAAA;AAG7C,eAAO,MAAM,QAAQ,GAAI,CAAC,MAAM,cAAc,4BAE7C,CAAA;AAED,eAAO,MAAM,OAAO,qBAAsB,CAAA;AAG1C,eAAO,MAAM,UAAU,GAAI,CAAC,GAAG,OAAO,QAAQ,OAAO,EAAE,kBAEtD,CAAA;AAED,eAAO,MAAM,YAAY;;;;;CAaxB,CAAA;AAED,MAAM,MAAM,KAAK,GACf,UAAU,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;AAEjE,MAAM,MAAM,QAAQ,GAAG,iBAAiB,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAA;AAEjE,MAAM,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/data-plane/server/db/util.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAMX,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,GAAG,GACJ,MAAM,QAAQ,CAAA;AAGf,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAa,EAAE,EAAE;IAChD,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO,GAAG,CAAO,mBAAmB,KAAK,EAAE,CAAA;IAC7C,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,CAAO,sBAAsB,KAAK,EAAE,CAAA;IAChD,CAAC;AACH,CAAC,CAAA;AAED,mCAAmC;AACnC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAY,EAAE,EAAE;IACnD,OAAO,GAAG,CAAS,GAAG,KAAK,wBAAwB,CAAA;AACrD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,aAA6C,EAAE,EAAE;IAC3E,OAAO,aAAa,CAAC,WAAW,KAAK,IAAI,CAAA;AAC3C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAQ,UAAU,CAAA;AAE7C,6BAA6B;AAC7B,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAI,EAAkB,EAAE,GAAG,EAAE,EAAE;IACrD,OAAO,GAAG,CAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,EAAE,CAAC,EAAE,CAAA;AACrD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAS,OAAO,CAAA;AAE1C,2FAA2F;AAC3F,MAAM,CAAC,MAAM,UAAU,GAAG,CAAc,IAAe,EAAE,EAAE;IACzD,OAAO,GAAG,CAAG,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAA,MAAM,CAAC,IAAI,CAAA;AACxD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,aAAa;QACX,OAAO,IAAI,aAAa,EAAE,CAAA;IAC5B,CAAC;IACD,YAAY;QACV,OAAO,IAAI,WAAW,EAAE,CAAA;IAC1B,CAAC;IACD,kBAAkB,CAAC,EAAE;QACnB,OAAO,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAA;IACnC,CAAC;IACD,mBAAmB;QACjB,OAAO,IAAI,mBAAmB,EAAE,CAAA;IAClC,CAAC;CACF,CAAA","sourcesContent":["import {\n DummyDriver,\n type DynamicModule,\n type ExpressionBuilder,\n type RawBuilder,\n type SelectQueryBuilder,\n type SqlBool,\n SqliteAdapter,\n SqliteIntrospector,\n SqliteQueryCompiler,\n sql,\n} from 'kysely'\nimport type { DatabaseSchema, DatabaseSchemaType } from './database-schema.js'\n\nexport const actorWhereClause = (actor: string) => {\n if (actor.startsWith('did:')) {\n return sql<0 | 1>`\"actor\".\"did\" = ${actor}`\n } else {\n return sql<0 | 1>`\"actor\".\"handle\" = ${actor}`\n }\n}\n\n// Applies to actor or record table\nexport const notSoftDeletedClause = (alias: DbRef) => {\n return sql<SqlBool>`${alias}.\"takedownRef\" is null`\n}\n\nexport const softDeleted = (actorOrRecord: { takedownRef: string | null }) => {\n return actorOrRecord.takedownRef !== null\n}\n\nexport const countAll = sql<number>`count(*)`\n\n// For use with doUpdateSet()\nexport const excluded = <T>(db: DatabaseSchema, col) => {\n return sql<T>`${db.dynamic.ref(`excluded.${col}`)}`\n}\n\nexport const noMatch = sql<SqlBool>`1 = 0`\n\n// Can be useful for large where-in clauses, to get the db to use a hash lookup on the list\nexport const valuesList = <T = unknown>(vals: unknown[]) => {\n return sql<T>`(values (${sql.join(vals, sql`), (`)}))`\n}\n\nexport const dummyDialect = {\n createAdapter() {\n return new SqliteAdapter()\n },\n createDriver() {\n return new DummyDriver()\n },\n createIntrospector(db) {\n return new SqliteIntrospector(db)\n },\n createQueryCompiler() {\n return new SqliteQueryCompiler()\n },\n}\n\nexport type DbRef =\n
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/data-plane/server/db/util.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAMX,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,GAAG,GACJ,MAAM,QAAQ,CAAA;AAGf,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAa,EAAE,EAAE;IAChD,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO,GAAG,CAAO,mBAAmB,KAAK,EAAE,CAAA;IAC7C,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,CAAO,sBAAsB,KAAK,EAAE,CAAA;IAChD,CAAC;AACH,CAAC,CAAA;AAED,mCAAmC;AACnC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAY,EAAE,EAAE;IACnD,OAAO,GAAG,CAAS,GAAG,KAAK,wBAAwB,CAAA;AACrD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,aAA6C,EAAE,EAAE;IAC3E,OAAO,aAAa,CAAC,WAAW,KAAK,IAAI,CAAA;AAC3C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAQ,UAAU,CAAA;AAE7C,6BAA6B;AAC7B,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAI,EAAkB,EAAE,GAAG,EAAE,EAAE;IACrD,OAAO,GAAG,CAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,EAAE,CAAC,EAAE,CAAA;AACrD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAS,OAAO,CAAA;AAE1C,2FAA2F;AAC3F,MAAM,CAAC,MAAM,UAAU,GAAG,CAAc,IAAe,EAAE,EAAE;IACzD,OAAO,GAAG,CAAG,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAA,MAAM,CAAC,IAAI,CAAA;AACxD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,aAAa;QACX,OAAO,IAAI,aAAa,EAAE,CAAA;IAC5B,CAAC;IACD,YAAY;QACV,OAAO,IAAI,WAAW,EAAE,CAAA;IAC1B,CAAC;IACD,kBAAkB,CAAC,EAAE;QACnB,OAAO,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAA;IACnC,CAAC;IACD,mBAAmB;QACjB,OAAO,IAAI,mBAAmB,EAAE,CAAA;IAClC,CAAC;CACF,CAAA","sourcesContent":["import {\n DummyDriver,\n type DynamicModule,\n type ExpressionBuilder,\n type RawBuilder,\n type SelectQueryBuilder,\n type SqlBool,\n SqliteAdapter,\n SqliteIntrospector,\n SqliteQueryCompiler,\n sql,\n} from 'kysely'\nimport type { DatabaseSchema, DatabaseSchemaType } from './database-schema.js'\n\nexport const actorWhereClause = (actor: string) => {\n if (actor.startsWith('did:')) {\n return sql<0 | 1>`\"actor\".\"did\" = ${actor}`\n } else {\n return sql<0 | 1>`\"actor\".\"handle\" = ${actor}`\n }\n}\n\n// Applies to actor or record table\nexport const notSoftDeletedClause = (alias: DbRef) => {\n return sql<SqlBool>`${alias}.\"takedownRef\" is null`\n}\n\nexport const softDeleted = (actorOrRecord: { takedownRef: string | null }) => {\n return actorOrRecord.takedownRef !== null\n}\n\nexport const countAll = sql<number>`count(*)`\n\n// For use with doUpdateSet()\nexport const excluded = <T>(db: DatabaseSchema, col) => {\n return sql<T>`${db.dynamic.ref(`excluded.${col}`)}`\n}\n\nexport const noMatch = sql<SqlBool>`1 = 0`\n\n// Can be useful for large where-in clauses, to get the db to use a hash lookup on the list\nexport const valuesList = <T = unknown>(vals: unknown[]) => {\n return sql<T>`(values (${sql.join(vals, sql`), (`)}))`\n}\n\nexport const dummyDialect = {\n createAdapter() {\n return new SqliteAdapter()\n },\n createDriver() {\n return new DummyDriver()\n },\n createIntrospector(db) {\n return new SqliteIntrospector(db)\n },\n createQueryCompiler() {\n return new SqliteQueryCompiler()\n },\n}\n\nexport type DbRef =\n RawBuilder<unknown> | ReturnType<DynamicModule<unknown>['ref']>\n\nexport type Subquery = ExpressionBuilder<DatabaseSchemaType, any>\n\nexport type AnyQb = SelectQueryBuilder<any, any, any>\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data-plane/server/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;
|
|
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,8 +1,7 @@
|
|
|
1
1
|
import events from 'node:events';
|
|
2
2
|
import { expressConnectMiddleware } from '@connectrpc/connect-express';
|
|
3
3
|
import express from 'express';
|
|
4
|
-
|
|
5
|
-
import httpTerminator from 'http-terminator';
|
|
4
|
+
import { createHttpTerminator } from 'http-terminator';
|
|
6
5
|
import { IdResolver, MemoryCache } from '@atproto/identity';
|
|
7
6
|
import createRoutes from './routes/index.js';
|
|
8
7
|
export { BsyncSubscription } from './bsync-subscription.js';
|
|
@@ -11,7 +10,7 @@ export class DataPlaneServer {
|
|
|
11
10
|
constructor(server, idResolver) {
|
|
12
11
|
this.server = server;
|
|
13
12
|
this.idResolver = idResolver;
|
|
14
|
-
this.terminator =
|
|
13
|
+
this.terminator = createHttpTerminator({ server });
|
|
15
14
|
}
|
|
16
15
|
static async create(db, port, plcUrl) {
|
|
17
16
|
const app = express();
|