@atproto/bsky 0.0.223 → 0.0.225
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 +26 -0
- package/dist/api/app/bsky/actor/getProfile.d.ts.map +1 -1
- package/dist/api/app/bsky/actor/getProfile.js +2 -1
- package/dist/api/app/bsky/actor/getProfile.js.map +1 -1
- package/dist/api/app/bsky/actor/getProfiles.d.ts.map +1 -1
- package/dist/api/app/bsky/actor/getProfiles.js +2 -1
- package/dist/api/app/bsky/actor/getProfiles.js.map +1 -1
- package/dist/api/app/bsky/actor/searchActors.d.ts.map +1 -1
- package/dist/api/app/bsky/actor/searchActors.js +2 -1
- package/dist/api/app/bsky/actor/searchActors.js.map +1 -1
- package/dist/api/app/bsky/feed/getAuthorFeed.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getAuthorFeed.js +2 -1
- package/dist/api/app/bsky/feed/getAuthorFeed.js.map +1 -1
- package/dist/api/app/bsky/feed/getLikes.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getLikes.js +2 -1
- package/dist/api/app/bsky/feed/getLikes.js.map +1 -1
- package/dist/api/app/bsky/feed/getPostThread.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getPostThread.js +2 -1
- package/dist/api/app/bsky/feed/getPostThread.js.map +1 -1
- package/dist/api/app/bsky/feed/getQuotes.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getQuotes.js +2 -1
- package/dist/api/app/bsky/feed/getQuotes.js.map +1 -1
- package/dist/api/app/bsky/feed/getRepostedBy.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getRepostedBy.js +2 -1
- package/dist/api/app/bsky/feed/getRepostedBy.js.map +1 -1
- package/dist/api/app/bsky/feed/searchPosts.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/searchPosts.js +2 -1
- package/dist/api/app/bsky/feed/searchPosts.js.map +1 -1
- package/dist/api/app/bsky/graph/getActorStarterPacks.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/getActorStarterPacks.js +2 -1
- package/dist/api/app/bsky/graph/getActorStarterPacks.js.map +1 -1
- package/dist/api/app/bsky/graph/getFollowers.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/getFollowers.js +2 -1
- package/dist/api/app/bsky/graph/getFollowers.js.map +1 -1
- package/dist/api/app/bsky/graph/getFollows.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/getFollows.js +2 -1
- package/dist/api/app/bsky/graph/getFollows.js.map +1 -1
- package/dist/api/app/bsky/graph/getList.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/getList.js +2 -1
- package/dist/api/app/bsky/graph/getList.js.map +1 -1
- package/dist/api/app/bsky/graph/getLists.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/getLists.js +2 -1
- package/dist/api/app/bsky/graph/getLists.js.map +1 -1
- package/dist/api/app/bsky/graph/getStarterPack.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/getStarterPack.js +2 -1
- package/dist/api/app/bsky/graph/getStarterPack.js.map +1 -1
- package/dist/api/app/bsky/graph/getStarterPacks.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/getStarterPacks.js +2 -1
- package/dist/api/app/bsky/graph/getStarterPacks.js.map +1 -1
- package/dist/api/app/bsky/graph/searchStarterPacks.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/searchStarterPacks.js +2 -1
- package/dist/api/app/bsky/graph/searchStarterPacks.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getPostThreadOtherV2.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getPostThreadOtherV2.js +2 -1
- package/dist/api/app/bsky/unspecced/getPostThreadOtherV2.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getPostThreadV2.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getPostThreadV2.js +2 -1
- package/dist/api/app/bsky/unspecced/getPostThreadV2.js.map +1 -1
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +6 -0
- package/dist/api/index.js.map +1 -1
- package/dist/auth-verifier.d.ts +1 -0
- package/dist/auth-verifier.d.ts.map +1 -1
- package/dist/auth-verifier.js +1 -0
- package/dist/auth-verifier.js.map +1 -1
- package/dist/data-plane/server/indexing/plugins/feed-generator.js +2 -1
- package/dist/data-plane/server/indexing/plugins/feed-generator.js.map +1 -1
- package/dist/data-plane/server/indexing/plugins/list.js +2 -1
- package/dist/data-plane/server/indexing/plugins/list.js.map +1 -1
- package/dist/data-plane/server/indexing/plugins/post.js +3 -3
- package/dist/data-plane/server/indexing/plugins/post.js.map +1 -1
- package/dist/data-plane/server/indexing/plugins/profile.js +3 -2
- package/dist/data-plane/server/indexing/plugins/profile.js.map +1 -1
- package/dist/hydration/hydrator.d.ts +2 -0
- package/dist/hydration/hydrator.d.ts.map +1 -1
- package/dist/hydration/hydrator.js +8 -0
- package/dist/hydration/hydrator.js.map +1 -1
- package/dist/hydration/util.d.ts +13 -7
- package/dist/hydration/util.d.ts.map +1 -1
- package/dist/hydration/util.js +30 -10
- package/dist/hydration/util.js.map +1 -1
- package/dist/lexicons/app/bsky/actor/defs.defs.d.ts +1 -0
- package/dist/lexicons/app/bsky/actor/defs.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/actor/defs.defs.js +1 -0
- package/dist/lexicons/app/bsky/actor/defs.defs.js.map +1 -1
- package/dist/lexicons/app/bsky/actor/profile.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/actor/profile.defs.js +2 -10
- package/dist/lexicons/app/bsky/actor/profile.defs.js.map +1 -1
- package/dist/lexicons/app/bsky/embed/external.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/embed/external.defs.js +1 -1
- package/dist/lexicons/app/bsky/embed/external.defs.js.map +1 -1
- package/dist/lexicons/app/bsky/embed/images.defs.d.ts +3 -0
- package/dist/lexicons/app/bsky/embed/images.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/embed/images.defs.js +1 -5
- package/dist/lexicons/app/bsky/embed/images.defs.js.map +1 -1
- package/dist/lexicons/app/bsky/embed/video.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/embed/video.defs.js +2 -6
- package/dist/lexicons/app/bsky/embed/video.defs.js.map +1 -1
- package/dist/lexicons/app/bsky/feed/generator.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/feed/generator.defs.js +1 -5
- package/dist/lexicons/app/bsky/feed/generator.defs.js.map +1 -1
- package/dist/lexicons/app/bsky/graph/list.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/graph/list.defs.js +1 -5
- package/dist/lexicons/app/bsky/graph/list.defs.js.map +1 -1
- package/dist/lexicons/app/bsky/video/defs.defs.js +1 -1
- package/dist/lexicons/app/bsky/video/defs.defs.js.map +1 -1
- package/dist/lexicons/com/atproto/repo/uploadBlob.defs.d.ts +2 -6
- package/dist/lexicons/com/atproto/repo/uploadBlob.defs.d.ts.map +1 -1
- package/dist/lexicons/com/atproto/repo/uploadBlob.defs.js +1 -1
- package/dist/lexicons/com/atproto/repo/uploadBlob.defs.js.map +1 -1
- package/dist/views/index.d.ts.map +1 -1
- package/dist/views/index.js +13 -8
- package/dist/views/index.js.map +1 -1
- package/dist/views/util.d.ts +1 -2
- package/dist/views/util.d.ts.map +1 -1
- package/dist/views/util.js +1 -5
- package/dist/views/util.js.map +1 -1
- package/package.json +9 -9
- package/src/api/app/bsky/actor/getProfile.ts +3 -1
- package/src/api/app/bsky/actor/getProfiles.ts +3 -1
- package/src/api/app/bsky/actor/searchActors.ts +3 -1
- package/src/api/app/bsky/feed/getAuthorFeed.ts +3 -1
- package/src/api/app/bsky/feed/getLikes.ts +3 -1
- package/src/api/app/bsky/feed/getPostThread.ts +2 -1
- package/src/api/app/bsky/feed/getQuotes.ts +3 -1
- package/src/api/app/bsky/feed/getRepostedBy.ts +3 -1
- package/src/api/app/bsky/feed/searchPosts.ts +3 -1
- package/src/api/app/bsky/graph/getActorStarterPacks.ts +3 -1
- package/src/api/app/bsky/graph/getFollowers.ts +3 -1
- package/src/api/app/bsky/graph/getFollows.ts +3 -1
- package/src/api/app/bsky/graph/getList.ts +3 -1
- package/src/api/app/bsky/graph/getLists.ts +3 -1
- package/src/api/app/bsky/graph/getStarterPack.ts +3 -1
- package/src/api/app/bsky/graph/getStarterPacks.ts +3 -1
- package/src/api/app/bsky/graph/searchStarterPacks.ts +3 -1
- package/src/api/app/bsky/unspecced/getPostThreadOtherV2.ts +2 -1
- package/src/api/app/bsky/unspecced/getPostThreadV2.ts +2 -1
- package/src/api/index.ts +6 -0
- package/src/auth-verifier.ts +1 -0
- package/src/data-plane/server/indexing/plugins/feed-generator.ts +2 -2
- package/src/data-plane/server/indexing/plugins/list.ts +2 -2
- package/src/data-plane/server/indexing/plugins/post.ts +4 -4
- package/src/data-plane/server/indexing/plugins/profile.ts +3 -3
- package/src/hydration/hydrator.ts +6 -0
- package/src/hydration/util.ts +40 -21
- package/src/views/index.ts +19 -15
- package/src/views/util.ts +1 -5
- package/tests/views/__snapshots__/profile.test.ts.snap +3 -0
- package/tests/views/blocks.test.ts +69 -0
- package/tests/views/profile.test.ts +77 -0
|
@@ -12,7 +12,7 @@ function default_1(server, ctx) {
|
|
|
12
12
|
server.add(index_js_1.app.bsky.unspecced.getPostThreadV2, {
|
|
13
13
|
auth: ctx.authVerifier.optionalStandardOrRole,
|
|
14
14
|
handler: async ({ params, auth, req }) => {
|
|
15
|
-
const { viewer, includeTakedowns, include3pBlocks } = ctx.authVerifier.parseCreds(auth);
|
|
15
|
+
const { viewer, includeTakedowns, include3pBlocks, skipViewerBlocks } = ctx.authVerifier.parseCreds(auth);
|
|
16
16
|
const labelers = ctx.reqLabelers(req);
|
|
17
17
|
const features = ctx.featureGatesClient.scope(ctx.featureGatesClient.parseUserContextFromHandler({
|
|
18
18
|
viewer,
|
|
@@ -25,6 +25,7 @@ function default_1(server, ctx) {
|
|
|
25
25
|
viewer,
|
|
26
26
|
includeTakedowns,
|
|
27
27
|
include3pBlocks,
|
|
28
|
+
skipViewerBlocks,
|
|
28
29
|
features,
|
|
29
30
|
});
|
|
30
31
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPostThreadV2.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/unspecced/getPostThreadV2.ts"],"names":[],"mappings":";;AAkBA,
|
|
1
|
+
{"version":3,"file":"getPostThreadV2.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/unspecced/getPostThreadV2.ts"],"names":[],"mappings":"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","sourcesContent":["import { AtUriString } from '@atproto/syntax'\nimport { Server } from '@atproto/xrpc-server'\nimport { ServerConfig } from '../../../../config'\nimport { AppContext } from '../../../../context'\nimport { Code, DataPlaneClient, isDataplaneError } from '../../../../data-plane'\nimport { HydrateCtx, Hydrator } from '../../../../hydration/hydrator'\nimport { app } from '../../../../lexicons/index.js'\nimport {\n HydrationFnInput,\n PresentationFnInput,\n SkeletonFnInput,\n createPipeline,\n noRules,\n} from '../../../../pipeline'\nimport { postUriToThreadgateUri } from '../../../../util/uris'\nimport { Views } from '../../../../views'\nimport { resHeaders } from '../../../util'\n\nexport default function (server: Server, ctx: AppContext) {\n const getPostThread = createPipeline(\n skeleton,\n hydration,\n noRules, // handled in presentation: 3p block-violating replies are turned to #blockedPost, viewer blocks turned to #notFoundPost.\n presentation,\n )\n server.add(app.bsky.unspecced.getPostThreadV2, {\n auth: ctx.authVerifier.optionalStandardOrRole,\n handler: async ({ params, auth, req }) => {\n const { viewer, includeTakedowns, include3pBlocks, skipViewerBlocks } =\n ctx.authVerifier.parseCreds(auth)\n const labelers = ctx.reqLabelers(req)\n const features = ctx.featureGatesClient.scope(\n ctx.featureGatesClient.parseUserContextFromHandler({\n viewer,\n req,\n }),\n )\n // temp\n void features.checkGate(features.Gate.AATest)\n const hydrateCtx = await ctx.hydrator.createContext({\n labelers,\n viewer,\n includeTakedowns,\n include3pBlocks,\n skipViewerBlocks,\n features,\n })\n\n return {\n encoding: 'application/json',\n body: await getPostThread({ ...params, hydrateCtx }, ctx),\n headers: resHeaders({\n labelers: hydrateCtx.labelers,\n }),\n }\n },\n })\n}\n\nconst skeleton = async (\n inputs: SkeletonFnInput<Context, Params>,\n): Promise<Skeleton> => {\n const { ctx, params } = inputs\n const anchor = await ctx.hydrator.resolveUri(params.anchor)\n try {\n const res = await ctx.dataplane.getThread({\n postUri: anchor,\n above: calculateAbove(ctx, params),\n below: calculateBelow(ctx, anchor, params),\n })\n return {\n anchor,\n uris: res.uris as AtUriString[],\n }\n } catch (err) {\n if (isDataplaneError(err, Code.NotFound)) {\n return {\n anchor,\n uris: [],\n }\n } else {\n throw err\n }\n }\n}\n\nconst hydration = async (\n inputs: HydrationFnInput<Context, Params, Skeleton>,\n) => {\n const { ctx, params, skeleton } = inputs\n return ctx.hydrator.hydrateThreadPosts(\n skeleton.uris.map((uri) => ({ uri })),\n params.hydrateCtx,\n )\n}\n\nconst presentation = (\n inputs: PresentationFnInput<Context, Params, Skeleton>,\n) => {\n const { ctx, params, skeleton, hydration } = inputs\n const { hasOtherReplies, thread } = ctx.views.threadV2(skeleton, hydration, {\n above: calculateAbove(ctx, params),\n below: calculateBelow(ctx, skeleton.anchor, params),\n branchingFactor: params.branchingFactor,\n sort: params.sort,\n })\n\n const rootUri =\n hydration.posts?.get(skeleton.anchor)?.record.reply?.root.uri ??\n skeleton.anchor\n const threadgate = ctx.views.threadgate(\n postUriToThreadgateUri(rootUri),\n hydration,\n )\n return { hasOtherReplies, thread, threadgate }\n}\n\ntype Context = {\n dataplane: DataPlaneClient\n hydrator: Hydrator\n views: Views\n cfg: ServerConfig\n}\n\ntype Params = app.bsky.unspecced.getPostThreadV2.$Params & {\n hydrateCtx: HydrateCtx\n}\n\ntype Skeleton = {\n anchor: AtUriString\n uris: AtUriString[]\n}\n\nconst calculateAbove = (ctx: Context, params: Params) => {\n return params.above ? ctx.cfg.maxThreadParents : 0\n}\n\nconst calculateBelow = (ctx: Context, anchor: string, params: Params) => {\n let maxDepth = ctx.cfg.maxThreadDepth\n if (ctx.cfg.bigThreadUris.has(anchor) && ctx.cfg.bigThreadDepth) {\n maxDepth = ctx.cfg.bigThreadDepth\n }\n return maxDepth ? Math.min(maxDepth, params.below) : params.below\n}\n"]}
|
package/dist/api/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAkGvC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAA;AAElC,OAAO,KAAK,SAAS,MAAM,cAAc,CAAA;AAEzC,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAA;AAE/C,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAA;AAEtC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAA;AAEpC,MAAM,CAAC,OAAO,WAAW,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,QAmGvD"}
|
package/dist/api/index.js
CHANGED
|
@@ -120,6 +120,9 @@ const getSuggestedFeeds_2 = __importDefault(require("./app/bsky/unspecced/getSug
|
|
|
120
120
|
const getSuggestedOnboardingUsers_1 = __importDefault(require("./app/bsky/unspecced/getSuggestedOnboardingUsers"));
|
|
121
121
|
const getSuggestedStarterPacks_1 = __importDefault(require("./app/bsky/unspecced/getSuggestedStarterPacks"));
|
|
122
122
|
const getSuggestedUsers_1 = __importDefault(require("./app/bsky/unspecced/getSuggestedUsers"));
|
|
123
|
+
const getSuggestedUsersForDiscover_1 = __importDefault(require("./app/bsky/unspecced/getSuggestedUsersForDiscover"));
|
|
124
|
+
const getSuggestedUsersForExplore_1 = __importDefault(require("./app/bsky/unspecced/getSuggestedUsersForExplore"));
|
|
125
|
+
const getSuggestedUsersForSeeMore_1 = __importDefault(require("./app/bsky/unspecced/getSuggestedUsersForSeeMore"));
|
|
123
126
|
const getTaggedSuggestions_1 = __importDefault(require("./app/bsky/unspecced/getTaggedSuggestions"));
|
|
124
127
|
const getTrendingTopics_1 = __importDefault(require("./app/bsky/unspecced/getTrendingTopics"));
|
|
125
128
|
const getTrends_1 = __importDefault(require("./app/bsky/unspecced/getTrends"));
|
|
@@ -201,6 +204,9 @@ function default_1(server, ctx) {
|
|
|
201
204
|
(0, getSuggestedOnboardingUsers_1.default)(server, ctx);
|
|
202
205
|
(0, getSuggestedStarterPacks_1.default)(server, ctx);
|
|
203
206
|
(0, getSuggestedUsers_1.default)(server, ctx);
|
|
207
|
+
(0, getSuggestedUsersForDiscover_1.default)(server, ctx);
|
|
208
|
+
(0, getSuggestedUsersForExplore_1.default)(server, ctx);
|
|
209
|
+
(0, getSuggestedUsersForSeeMore_1.default)(server, ctx);
|
|
204
210
|
(0, getSuggestedFeeds_2.default)(server, ctx);
|
|
205
211
|
(0, getServices_1.default)(server, ctx);
|
|
206
212
|
(0, searchActors_1.default)(server, ctx);
|
package/dist/api/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0GA,4BAgGC;AAxMD,6EAAoD;AACpD,+EAAsD;AACtD,qFAA4D;AAC5D,iFAAwD;AACxD,mGAA0E;AAC1E,0EAAmD;AACnD,kFAA2D;AAC3D,gFAAyD;AACzD,wFAA+D;AAC/D,wFAA+D;AAC/D,oFAA2D;AAC3D,mFAA0D;AAC1D,+EAAsD;AACtD,qFAA4D;AAC5D,uFAA8D;AAC9D,+EAAsD;AACtD,2FAAkE;AAClE,uGAA8E;AAC9E,iFAAwD;AACxD,+EAAsD;AACtD,+EAAsD;AACtD,2EAAkD;AAClD,+EAAsD;AACtD,kFAAyD;AACzD,kFAAyD;AACzD,kFAAyD;AACzD,sEAA6C;AAC7C,wFAA+D;AAC/D,0FAAiE;AACjE,wEAA+C;AAC/C,8EAAqD;AACrD,kFAAyD;AACzD,wEAA+C;AAC/C,0EAAiD;AACjD,kFAAyD;AACzD,0FAAiE;AACjE,8EAAqD;AACrD,8EAAqD;AACrD,iGAAwE;AACxE,2EAAkD;AAClD,iFAAwD;AACxD,6EAAoD;AACpD,2FAAkE;AAClE,uEAA8C;AAC9C,mFAA0D;AAC1D,iFAAwD;AACxD,yEAAgD;AAChD,qGAA4E;AAC5E,yEAAgD;AAChD,yFAAgE;AAChE,qFAA4D;AAC5D,uFAA8D;AAC9D,mHAA0F;AAC1F,6GAAoF;AACpF,2EAAkD;AAClD,mFAA0D;AAC1D,6EAAoD;AACpD,6FAAoE;AACpE,+EAAsD;AACtD,uFAA8D;AAC9D,iFAAwD;AACxD,iFAA+D;AAC/D,4FAAmE;AACnE,4FAAmE;AACnE,kHAAyF;AACzF,kGAAyE;AACzE,8GAAqF;AACrF,4FAAmE;AACnE,gGAAuE;AACvE,wFAA+D;AAC/D,4FAAmE;AACnE,oFAA2D;AAC3D,qGAA4E;AAC5E,+EAAsD;AACtD,iIAAwG;AACxG,6GAAoF;AACpF,qGAA4E;AAC5E,2FAAkE;AAClE,+FAA+E;AAC/E,mHAA0F;AAC1F,6GAAoF;AACpF,+FAAsE;AACtE,qGAA4E;AAC5E,+FAAsE;AACtE,+EAAsD;AACtD,6FAAoE;AACpE,0FAAiE;AACjE,4FAAmE;AACnE,kGAAyE;AACzE,yFAAgE;AAChE,kFAAyD;AACzD,6EAAoD;AACpD,iFAAwD;AAExD,mDAAkC;AAElC,0DAAyC;AAEzC,gEAA+C;AAE/C,uDAAsC;AAEtC,qDAAoC;AAEpC,mBAAyB,MAAc,EAAE,GAAe;IACtD,WAAW;IACX,IAAA,qBAAW,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACxB,IAAA,wBAAc,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,IAAA,wBAAc,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,IAAA,sBAAY,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACzB,IAAA,qBAAW,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACxB,IAAA,qBAAW,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACxB,IAAA,mBAAS,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACtB,IAAA,qBAAW,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACxB,IAAA,sBAAY,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACzB,IAAA,oBAAU,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACvB,IAAA,uBAAa,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC1B,IAAA,wBAAc,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,IAAA,oBAAU,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACvB,IAAA,0BAAgB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,IAAA,gCAAsB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACnC,IAAA,qBAAW,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACxB,IAAA,uBAAa,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC1B,IAAA,2BAAiB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC9B,IAAA,uBAAa,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC1B,IAAA,iBAAO,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACpB,IAAA,0BAAgB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,IAAA,2BAAiB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC9B,IAAA,kBAAQ,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACrB,IAAA,qBAAW,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACxB,IAAA,mBAAS,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACtB,IAAA,uBAAa,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC1B,IAAA,8BAAoB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACjC,IAAA,yBAAe,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,IAAA,kBAAQ,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACrB,IAAA,qBAAW,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACxB,IAAA,uBAAa,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC1B,IAAA,oBAAU,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACvB,IAAA,qBAAW,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACxB,IAAA,uBAAa,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC1B,IAAA,8BAAoB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACjC,IAAA,mBAAS,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACtB,IAAA,uBAAa,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC1B,IAAA,sBAAY,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACzB,IAAA,2BAAiB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC9B,IAAA,oBAAU,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACvB,IAAA,iBAAO,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACpB,IAAA,kBAAQ,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACrB,IAAA,gCAAsB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACnC,IAAA,sBAAY,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACzB,IAAA,kBAAQ,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACrB,IAAA,0BAAgB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,IAAA,wBAAc,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,IAAA,yBAAe,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,IAAA,uCAA6B,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC1C,IAAA,4BAAkB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC/B,IAAA,mBAAS,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACtB,IAAA,qBAAW,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACxB,IAAA,uBAAa,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC1B,IAAA,yBAAe,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,IAAA,oBAAU,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACvB,IAAA,sBAAY,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACzB,IAAA,oCAA0B,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACvC,IAAA,2BAAiB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC9B,IAAA,mBAAS,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACtB,IAAA,4CAAkC,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC/C,IAAA,qCAA2B,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACxC,IAAA,kCAAwB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACrC,IAAA,2BAAiB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC9B,IAAA,2BAA0B,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACvC,IAAA,qBAAkB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC/B,IAAA,sBAAY,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACzB,IAAA,+BAAqB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAClC,IAAA,wBAAc,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,IAAA,wBAAc,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,IAAA,wBAAc,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,IAAA,mCAAyB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACtC,IAAA,2BAAiB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC9B,IAAA,iCAAuB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACpC,IAAA,oBAAU,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACvB,IAAA,wBAAc,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,IAAA,0BAAgB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,IAAA,sBAAY,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACzB,IAAA,wBAAc,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,IAAA,mBAAS,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACtB,IAAA,kCAAwB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACrC,IAAA,8BAAoB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACjC,IAAA,8BAAoB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACjC,IAAA,0BAAgB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,IAAA,mBAAW,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACxB,IAAA,kBAAU,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACvB,IAAA,eAAO,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACpB,cAAc;IACd,IAAA,0BAAgB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,IAAA,6BAAmB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAChC,IAAA,yBAAe,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,IAAA,uBAAa,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC1B,IAAA,mBAAS,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACtB,IAAA,qBAAW,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACxB,IAAA,qBAAW,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAC1B,CAAC","sourcesContent":["import { Server } from '@atproto/xrpc-server'\nimport { AppContext } from '../context'\nimport getProfile from './app/bsky/actor/getProfile'\nimport getProfiles from './app/bsky/actor/getProfiles'\nimport getSuggestions from './app/bsky/actor/getSuggestions'\nimport searchActors from './app/bsky/actor/searchActors'\nimport searchActorsTypeahead from './app/bsky/actor/searchActorsTypeahead'\nimport aaBegin from './app/bsky/ageassurance/begin'\nimport aaGetConfig from './app/bsky/ageassurance/getConfig'\nimport aaGetState from './app/bsky/ageassurance/getState'\nimport createBookmark from './app/bsky/bookmark/createBookmark'\nimport deleteBookmark from './app/bsky/bookmark/deleteBookmark'\nimport getBookmarks from './app/bsky/bookmark/getBookmarks'\nimport dismissMatch from './app/bsky/contact/dismissMatch'\nimport getMatches from './app/bsky/contact/getMatches'\nimport getSyncStatus from './app/bsky/contact/getSyncStatus'\nimport importContacts from './app/bsky/contact/importContacts'\nimport removeData from './app/bsky/contact/removeData'\nimport sendNotification from './app/bsky/contact/sendNotification'\nimport startPhoneVerification from './app/bsky/contact/startPhoneVerification'\nimport verifyPhone from './app/bsky/contact/verifyPhone'\nimport createDraft from './app/bsky/draft/createDraft'\nimport deleteDraft from './app/bsky/draft/deleteDraft'\nimport getDrafts from './app/bsky/draft/getDrafts'\nimport updateDraft from './app/bsky/draft/updateDraft'\nimport getActorFeeds from './app/bsky/feed/getActorFeeds'\nimport getActorLikes from './app/bsky/feed/getActorLikes'\nimport getAuthorFeed from './app/bsky/feed/getAuthorFeed'\nimport getFeed from './app/bsky/feed/getFeed'\nimport getFeedGenerator from './app/bsky/feed/getFeedGenerator'\nimport getFeedGenerators from './app/bsky/feed/getFeedGenerators'\nimport getLikes from './app/bsky/feed/getLikes'\nimport getListFeed from './app/bsky/feed/getListFeed'\nimport getPostThread from './app/bsky/feed/getPostThread'\nimport getPosts from './app/bsky/feed/getPosts'\nimport getQuotes from './app/bsky/feed/getQuotes'\nimport getRepostedBy from './app/bsky/feed/getRepostedBy'\nimport getSuggestedFeeds from './app/bsky/feed/getSuggestedFeeds'\nimport getTimeline from './app/bsky/feed/getTimeline'\nimport searchPosts from './app/bsky/feed/searchPosts'\nimport getActorStarterPacks from './app/bsky/graph/getActorStarterPacks'\nimport getBlocks from './app/bsky/graph/getBlocks'\nimport getFollowers from './app/bsky/graph/getFollowers'\nimport getFollows from './app/bsky/graph/getFollows'\nimport getKnownFollowers from './app/bsky/graph/getKnownFollowers'\nimport getList from './app/bsky/graph/getList'\nimport getListBlocks from './app/bsky/graph/getListBlocks'\nimport getListMutes from './app/bsky/graph/getListMutes'\nimport getLists from './app/bsky/graph/getLists'\nimport getListsWithMembership from './app/bsky/graph/getListsWithMembership'\nimport getMutes from './app/bsky/graph/getMutes'\nimport getRelationships from './app/bsky/graph/getRelationships'\nimport getStarterPack from './app/bsky/graph/getStarterPack'\nimport getStarterPacks from './app/bsky/graph/getStarterPacks'\nimport getStarterPacksWithMembership from './app/bsky/graph/getStarterPacksWithMembership'\nimport getSuggestedFollowsByActor from './app/bsky/graph/getSuggestedFollowsByActor'\nimport muteActor from './app/bsky/graph/muteActor'\nimport muteActorList from './app/bsky/graph/muteActorList'\nimport muteThread from './app/bsky/graph/muteThread'\nimport searchStarterPacks from './app/bsky/graph/searchStarterPacks'\nimport unmuteActor from './app/bsky/graph/unmuteActor'\nimport unmuteActorList from './app/bsky/graph/unmuteActorList'\nimport unmuteThread from './app/bsky/graph/unmuteThread'\nimport getLabelerServices from './app/bsky/labeler/getServices'\nimport getPreferences from './app/bsky/notification/getPreferences'\nimport getUnreadCount from './app/bsky/notification/getUnreadCount'\nimport listActivitySubscriptions from './app/bsky/notification/listActivitySubscriptions'\nimport listNotifications from './app/bsky/notification/listNotifications'\nimport putActivitySubscription from './app/bsky/notification/putActivitySubscription'\nimport putPreferences from './app/bsky/notification/putPreferences'\nimport putPreferencesV2 from './app/bsky/notification/putPreferencesV2'\nimport registerPush from './app/bsky/notification/registerPush'\nimport unregisterPush from './app/bsky/notification/unregisterPush'\nimport updateSeen from './app/bsky/notification/updateSeen'\nimport getAgeAssuranceState from './app/bsky/unspecced/getAgeAssuranceState'\nimport getConfig from './app/bsky/unspecced/getConfig'\nimport getOnboardingSuggestedStarterPacks from './app/bsky/unspecced/getOnboardingSuggestedStarterPacks'\nimport getPopularFeedGenerators from './app/bsky/unspecced/getPopularFeedGenerators'\nimport getPostThreadOtherV2 from './app/bsky/unspecced/getPostThreadOtherV2'\nimport getPostThreadV2 from './app/bsky/unspecced/getPostThreadV2'\nimport getUnspeccedSuggestedFeeds from './app/bsky/unspecced/getSuggestedFeeds'\nimport getSuggestedOnboardingUsers from './app/bsky/unspecced/getSuggestedOnboardingUsers'\nimport getSuggestedStarterPacks from './app/bsky/unspecced/getSuggestedStarterPacks'\nimport getSuggestedUsers from './app/bsky/unspecced/getSuggestedUsers'\nimport getTaggedSuggestions from './app/bsky/unspecced/getTaggedSuggestions'\nimport getTrendingTopics from './app/bsky/unspecced/getTrendingTopics'\nimport getTrends from './app/bsky/unspecced/getTrends'\nimport initAgeAssurance from './app/bsky/unspecced/initAgeAssurance'\nimport getAccountInfos from './com/atproto/admin/getAccountInfos'\nimport getSubjectStatus from './com/atproto/admin/getSubjectStatus'\nimport updateSubjectStatus from './com/atproto/admin/updateSubjectStatus'\nimport resolveHandle from './com/atproto/identity/resolveHandle'\nimport queryLabels from './com/atproto/label/queryLabels'\nimport getRecord from './com/atproto/repo/getRecord'\nimport fetchLabels from './com/atproto/temp/fetchLabels'\n\nexport * as health from './health'\n\nexport * as wellKnown from './well-known'\n\nexport * as blobResolver from './blob-resolver'\n\nexport * as external from './external'\n\nexport * as sitemap from './sitemap'\n\nexport default function (server: Server, ctx: AppContext) {\n // app.bsky\n getTimeline(server, ctx)\n createBookmark(server, ctx)\n deleteBookmark(server, ctx)\n getBookmarks(server, ctx)\n createDraft(server, ctx)\n deleteDraft(server, ctx)\n getDrafts(server, ctx)\n updateDraft(server, ctx)\n dismissMatch(server, ctx)\n getMatches(server, ctx)\n getSyncStatus(server, ctx)\n importContacts(server, ctx)\n removeData(server, ctx)\n sendNotification(server, ctx)\n startPhoneVerification(server, ctx)\n verifyPhone(server, ctx)\n getActorFeeds(server, ctx)\n getSuggestedFeeds(server, ctx)\n getAuthorFeed(server, ctx)\n getFeed(server, ctx)\n getFeedGenerator(server, ctx)\n getFeedGenerators(server, ctx)\n getLikes(server, ctx)\n getListFeed(server, ctx)\n getQuotes(server, ctx)\n getPostThread(server, ctx)\n getPostThreadOtherV2(server, ctx)\n getPostThreadV2(server, ctx)\n getPosts(server, ctx)\n searchPosts(server, ctx)\n getActorLikes(server, ctx)\n getProfile(server, ctx)\n getProfiles(server, ctx)\n getRepostedBy(server, ctx)\n getActorStarterPacks(server, ctx)\n getBlocks(server, ctx)\n getListBlocks(server, ctx)\n getFollowers(server, ctx)\n getKnownFollowers(server, ctx)\n getFollows(server, ctx)\n getList(server, ctx)\n getLists(server, ctx)\n getListsWithMembership(server, ctx)\n getListMutes(server, ctx)\n getMutes(server, ctx)\n getRelationships(server, ctx)\n getStarterPack(server, ctx)\n getStarterPacks(server, ctx)\n getStarterPacksWithMembership(server, ctx)\n searchStarterPacks(server, ctx)\n muteActor(server, ctx)\n unmuteActor(server, ctx)\n muteActorList(server, ctx)\n unmuteActorList(server, ctx)\n muteThread(server, ctx)\n unmuteThread(server, ctx)\n getSuggestedFollowsByActor(server, ctx)\n getTrendingTopics(server, ctx)\n getTrends(server, ctx)\n getOnboardingSuggestedStarterPacks(server, ctx)\n getSuggestedOnboardingUsers(server, ctx)\n getSuggestedStarterPacks(server, ctx)\n getSuggestedUsers(server, ctx)\n getUnspeccedSuggestedFeeds(server, ctx)\n getLabelerServices(server, ctx)\n searchActors(server, ctx)\n searchActorsTypeahead(server, ctx)\n getSuggestions(server, ctx)\n getPreferences(server, ctx)\n getUnreadCount(server, ctx)\n listActivitySubscriptions(server, ctx)\n listNotifications(server, ctx)\n putActivitySubscription(server, ctx)\n updateSeen(server, ctx)\n putPreferences(server, ctx)\n putPreferencesV2(server, ctx)\n registerPush(server, ctx)\n unregisterPush(server, ctx)\n getConfig(server, ctx)\n getPopularFeedGenerators(server, ctx)\n getTaggedSuggestions(server, ctx)\n getAgeAssuranceState(server, ctx)\n initAgeAssurance(server, ctx)\n aaGetConfig(server, ctx)\n aaGetState(server, ctx)\n aaBegin(server, ctx)\n // com.atproto\n getSubjectStatus(server, ctx)\n updateSubjectStatus(server, ctx)\n getAccountInfos(server, ctx)\n resolveHandle(server, ctx)\n getRecord(server, ctx)\n fetchLabels(server, ctx)\n queryLabels(server, ctx)\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { Server } from '@atproto/xrpc-server'\nimport { AppContext } from '../context'\nimport getProfile from './app/bsky/actor/getProfile'\nimport getProfiles from './app/bsky/actor/getProfiles'\nimport getSuggestions from './app/bsky/actor/getSuggestions'\nimport searchActors from './app/bsky/actor/searchActors'\nimport searchActorsTypeahead from './app/bsky/actor/searchActorsTypeahead'\nimport aaBegin from './app/bsky/ageassurance/begin'\nimport aaGetConfig from './app/bsky/ageassurance/getConfig'\nimport aaGetState from './app/bsky/ageassurance/getState'\nimport createBookmark from './app/bsky/bookmark/createBookmark'\nimport deleteBookmark from './app/bsky/bookmark/deleteBookmark'\nimport getBookmarks from './app/bsky/bookmark/getBookmarks'\nimport dismissMatch from './app/bsky/contact/dismissMatch'\nimport getMatches from './app/bsky/contact/getMatches'\nimport getSyncStatus from './app/bsky/contact/getSyncStatus'\nimport importContacts from './app/bsky/contact/importContacts'\nimport removeData from './app/bsky/contact/removeData'\nimport sendNotification from './app/bsky/contact/sendNotification'\nimport startPhoneVerification from './app/bsky/contact/startPhoneVerification'\nimport verifyPhone from './app/bsky/contact/verifyPhone'\nimport createDraft from './app/bsky/draft/createDraft'\nimport deleteDraft from './app/bsky/draft/deleteDraft'\nimport getDrafts from './app/bsky/draft/getDrafts'\nimport updateDraft from './app/bsky/draft/updateDraft'\nimport getActorFeeds from './app/bsky/feed/getActorFeeds'\nimport getActorLikes from './app/bsky/feed/getActorLikes'\nimport getAuthorFeed from './app/bsky/feed/getAuthorFeed'\nimport getFeed from './app/bsky/feed/getFeed'\nimport getFeedGenerator from './app/bsky/feed/getFeedGenerator'\nimport getFeedGenerators from './app/bsky/feed/getFeedGenerators'\nimport getLikes from './app/bsky/feed/getLikes'\nimport getListFeed from './app/bsky/feed/getListFeed'\nimport getPostThread from './app/bsky/feed/getPostThread'\nimport getPosts from './app/bsky/feed/getPosts'\nimport getQuotes from './app/bsky/feed/getQuotes'\nimport getRepostedBy from './app/bsky/feed/getRepostedBy'\nimport getSuggestedFeeds from './app/bsky/feed/getSuggestedFeeds'\nimport getTimeline from './app/bsky/feed/getTimeline'\nimport searchPosts from './app/bsky/feed/searchPosts'\nimport getActorStarterPacks from './app/bsky/graph/getActorStarterPacks'\nimport getBlocks from './app/bsky/graph/getBlocks'\nimport getFollowers from './app/bsky/graph/getFollowers'\nimport getFollows from './app/bsky/graph/getFollows'\nimport getKnownFollowers from './app/bsky/graph/getKnownFollowers'\nimport getList from './app/bsky/graph/getList'\nimport getListBlocks from './app/bsky/graph/getListBlocks'\nimport getListMutes from './app/bsky/graph/getListMutes'\nimport getLists from './app/bsky/graph/getLists'\nimport getListsWithMembership from './app/bsky/graph/getListsWithMembership'\nimport getMutes from './app/bsky/graph/getMutes'\nimport getRelationships from './app/bsky/graph/getRelationships'\nimport getStarterPack from './app/bsky/graph/getStarterPack'\nimport getStarterPacks from './app/bsky/graph/getStarterPacks'\nimport getStarterPacksWithMembership from './app/bsky/graph/getStarterPacksWithMembership'\nimport getSuggestedFollowsByActor from './app/bsky/graph/getSuggestedFollowsByActor'\nimport muteActor from './app/bsky/graph/muteActor'\nimport muteActorList from './app/bsky/graph/muteActorList'\nimport muteThread from './app/bsky/graph/muteThread'\nimport searchStarterPacks from './app/bsky/graph/searchStarterPacks'\nimport unmuteActor from './app/bsky/graph/unmuteActor'\nimport unmuteActorList from './app/bsky/graph/unmuteActorList'\nimport unmuteThread from './app/bsky/graph/unmuteThread'\nimport getLabelerServices from './app/bsky/labeler/getServices'\nimport getPreferences from './app/bsky/notification/getPreferences'\nimport getUnreadCount from './app/bsky/notification/getUnreadCount'\nimport listActivitySubscriptions from './app/bsky/notification/listActivitySubscriptions'\nimport listNotifications from './app/bsky/notification/listNotifications'\nimport putActivitySubscription from './app/bsky/notification/putActivitySubscription'\nimport putPreferences from './app/bsky/notification/putPreferences'\nimport putPreferencesV2 from './app/bsky/notification/putPreferencesV2'\nimport registerPush from './app/bsky/notification/registerPush'\nimport unregisterPush from './app/bsky/notification/unregisterPush'\nimport updateSeen from './app/bsky/notification/updateSeen'\nimport getAgeAssuranceState from './app/bsky/unspecced/getAgeAssuranceState'\nimport getConfig from './app/bsky/unspecced/getConfig'\nimport getOnboardingSuggestedStarterPacks from './app/bsky/unspecced/getOnboardingSuggestedStarterPacks'\nimport getPopularFeedGenerators from './app/bsky/unspecced/getPopularFeedGenerators'\nimport getPostThreadOtherV2 from './app/bsky/unspecced/getPostThreadOtherV2'\nimport getPostThreadV2 from './app/bsky/unspecced/getPostThreadV2'\nimport getUnspeccedSuggestedFeeds from './app/bsky/unspecced/getSuggestedFeeds'\nimport getSuggestedOnboardingUsers from './app/bsky/unspecced/getSuggestedOnboardingUsers'\nimport getSuggestedStarterPacks from './app/bsky/unspecced/getSuggestedStarterPacks'\nimport getSuggestedUsers from './app/bsky/unspecced/getSuggestedUsers'\nimport getSuggestedUsersForDiscover from './app/bsky/unspecced/getSuggestedUsersForDiscover'\nimport getSuggestedUsersForExplore from './app/bsky/unspecced/getSuggestedUsersForExplore'\nimport getSuggestedUsersForSeeMore from './app/bsky/unspecced/getSuggestedUsersForSeeMore'\nimport getTaggedSuggestions from './app/bsky/unspecced/getTaggedSuggestions'\nimport getTrendingTopics from './app/bsky/unspecced/getTrendingTopics'\nimport getTrends from './app/bsky/unspecced/getTrends'\nimport initAgeAssurance from './app/bsky/unspecced/initAgeAssurance'\nimport getAccountInfos from './com/atproto/admin/getAccountInfos'\nimport getSubjectStatus from './com/atproto/admin/getSubjectStatus'\nimport updateSubjectStatus from './com/atproto/admin/updateSubjectStatus'\nimport resolveHandle from './com/atproto/identity/resolveHandle'\nimport queryLabels from './com/atproto/label/queryLabels'\nimport getRecord from './com/atproto/repo/getRecord'\nimport fetchLabels from './com/atproto/temp/fetchLabels'\n\nexport * as health from './health'\n\nexport * as wellKnown from './well-known'\n\nexport * as blobResolver from './blob-resolver'\n\nexport * as external from './external'\n\nexport * as sitemap from './sitemap'\n\nexport default function (server: Server, ctx: AppContext) {\n // app.bsky\n getTimeline(server, ctx)\n createBookmark(server, ctx)\n deleteBookmark(server, ctx)\n getBookmarks(server, ctx)\n createDraft(server, ctx)\n deleteDraft(server, ctx)\n getDrafts(server, ctx)\n updateDraft(server, ctx)\n dismissMatch(server, ctx)\n getMatches(server, ctx)\n getSyncStatus(server, ctx)\n importContacts(server, ctx)\n removeData(server, ctx)\n sendNotification(server, ctx)\n startPhoneVerification(server, ctx)\n verifyPhone(server, ctx)\n getActorFeeds(server, ctx)\n getSuggestedFeeds(server, ctx)\n getAuthorFeed(server, ctx)\n getFeed(server, ctx)\n getFeedGenerator(server, ctx)\n getFeedGenerators(server, ctx)\n getLikes(server, ctx)\n getListFeed(server, ctx)\n getQuotes(server, ctx)\n getPostThread(server, ctx)\n getPostThreadOtherV2(server, ctx)\n getPostThreadV2(server, ctx)\n getPosts(server, ctx)\n searchPosts(server, ctx)\n getActorLikes(server, ctx)\n getProfile(server, ctx)\n getProfiles(server, ctx)\n getRepostedBy(server, ctx)\n getActorStarterPacks(server, ctx)\n getBlocks(server, ctx)\n getListBlocks(server, ctx)\n getFollowers(server, ctx)\n getKnownFollowers(server, ctx)\n getFollows(server, ctx)\n getList(server, ctx)\n getLists(server, ctx)\n getListsWithMembership(server, ctx)\n getListMutes(server, ctx)\n getMutes(server, ctx)\n getRelationships(server, ctx)\n getStarterPack(server, ctx)\n getStarterPacks(server, ctx)\n getStarterPacksWithMembership(server, ctx)\n searchStarterPacks(server, ctx)\n muteActor(server, ctx)\n unmuteActor(server, ctx)\n muteActorList(server, ctx)\n unmuteActorList(server, ctx)\n muteThread(server, ctx)\n unmuteThread(server, ctx)\n getSuggestedFollowsByActor(server, ctx)\n getTrendingTopics(server, ctx)\n getTrends(server, ctx)\n getOnboardingSuggestedStarterPacks(server, ctx)\n getSuggestedOnboardingUsers(server, ctx)\n getSuggestedStarterPacks(server, ctx)\n getSuggestedUsers(server, ctx)\n getSuggestedUsersForDiscover(server, ctx)\n getSuggestedUsersForExplore(server, ctx)\n getSuggestedUsersForSeeMore(server, ctx)\n getUnspeccedSuggestedFeeds(server, ctx)\n getLabelerServices(server, ctx)\n searchActors(server, ctx)\n searchActorsTypeahead(server, ctx)\n getSuggestions(server, ctx)\n getPreferences(server, ctx)\n getUnreadCount(server, ctx)\n listActivitySubscriptions(server, ctx)\n listNotifications(server, ctx)\n putActivitySubscription(server, ctx)\n updateSeen(server, ctx)\n putPreferences(server, ctx)\n putPreferencesV2(server, ctx)\n registerPush(server, ctx)\n unregisterPush(server, ctx)\n getConfig(server, ctx)\n getPopularFeedGenerators(server, ctx)\n getTaggedSuggestions(server, ctx)\n getAgeAssuranceState(server, ctx)\n initAgeAssurance(server, ctx)\n aaGetConfig(server, ctx)\n aaGetState(server, ctx)\n aaBegin(server, ctx)\n // com.atproto\n getSubjectStatus(server, ctx)\n updateSubjectStatus(server, ctx)\n getAccountInfos(server, ctx)\n resolveHandle(server, ctx)\n getRecord(server, ctx)\n fetchLabels(server, ctx)\n queryLabels(server, ctx)\n}\n"]}
|
package/dist/auth-verifier.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-verifier.d.ts","sourceRoot":"","sources":["../src/auth-verifier.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"auth-verifier.d.ts","sourceRoot":"","sources":["../src/auth-verifier.ts"],"names":[],"mappings":"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"}
|
package/dist/auth-verifier.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-verifier.js","sourceRoot":"","sources":["../src/auth-verifier.ts"],"names":[],"mappings":"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","sourcesContent":["import crypto, { KeyObject } from 'node:crypto'\nimport express from 'express'\nimport * as jose from 'jose'\nimport KeyEncoder from 'key-encoder'\nimport * as ui8 from 'uint8arrays'\nimport { SECP256K1_JWT_ALG, parseDidKey } from '@atproto/crypto'\nimport { DidString, isDidString } from '@atproto/lex'\nimport {\n AuthRequiredError,\n VerifySignatureWithKeyFn,\n cryptoVerifySignatureWithKey,\n parseReqNsid,\n verifyJwt as verifyServiceJwt,\n} from '@atproto/xrpc-server'\nimport {\n Code,\n DataPlaneClient,\n getKeyAsDidKey,\n isDataplaneError,\n unpackIdentityKeys,\n} from './data-plane'\nimport { GetIdentityByDidResponse } from './proto/bsky_pb'\n\ntype ReqCtx = {\n req: express.Request\n}\n\ntype StandardAuthOpts = {\n skipAudCheck?: boolean\n lxmCheck?: (method?: string) => boolean\n}\n\nexport enum RoleStatus {\n Valid,\n Invalid,\n Missing,\n}\n\ntype NullOutput = {\n credentials: {\n type: 'none'\n iss: null\n }\n}\n\ntype StandardOutput = {\n credentials: {\n type: 'standard'\n aud: string\n iss: DidString | `${DidString}#${string}`\n }\n}\n\ntype RoleOutput = {\n credentials: {\n type: 'role'\n admin: boolean\n }\n}\n\ntype ModServiceOutput = {\n credentials: {\n type: 'mod_service'\n aud: string\n iss: string\n }\n}\n\nconst ALLOWED_AUTH_SCOPES = new Set([\n 'com.atproto.access',\n 'com.atproto.appPass',\n 'com.atproto.appPassPrivileged',\n])\n\nexport type AuthVerifierOpts = {\n ownDid: string\n alternateAudienceDids: string[]\n modServiceDid: string\n adminPasses: string[]\n entrywayJwtPublicKey?: KeyObject\n}\n\nexport class AuthVerifier {\n public ownDid: string\n public standardAudienceDids: Set<string>\n public modServiceDid: string\n private adminPasses: Set<string>\n private entrywayJwtPublicKey?: KeyObject\n\n constructor(\n public dataplane: DataPlaneClient,\n opts: AuthVerifierOpts,\n ) {\n this.ownDid = opts.ownDid\n this.standardAudienceDids = new Set([\n opts.ownDid,\n ...opts.alternateAudienceDids,\n ])\n this.modServiceDid = opts.modServiceDid\n this.adminPasses = new Set(opts.adminPasses)\n this.entrywayJwtPublicKey = opts.entrywayJwtPublicKey\n }\n\n // verifiers (arrow fns to preserve scope)\n standardOptionalParameterized =\n (opts: StandardAuthOpts) =>\n async (ctx: ReqCtx): Promise<StandardOutput | NullOutput> => {\n // @TODO remove! basic auth + did supported just for testing.\n if (isBasicToken(ctx.req)) {\n const aud = this.ownDid\n const iss = ctx.req.headers['appview-as-did']\n if (typeof iss !== 'string' || !isDidString(iss)) {\n throw new AuthRequiredError('bad issuer')\n }\n if (!this.parseRoleCreds(ctx.req).admin) {\n throw new AuthRequiredError('bad credentials')\n }\n return {\n credentials: { type: 'standard', iss, aud },\n }\n } else if (isBearerToken(ctx.req)) {\n // @NOTE temporarily accept entryway session tokens to shed load from PDS instances\n const token = bearerTokenFromReq(ctx.req)\n const header = token ? jose.decodeProtectedHeader(token) : undefined\n if (header?.typ === 'at+jwt') {\n // we should never use entryway session tokens in the case of flexible auth audiences (namely in the case of getFeed)\n if (opts.skipAudCheck) {\n throw new AuthRequiredError('Malformed token', 'InvalidToken')\n }\n return this.entrywaySession(ctx)\n }\n\n const { iss, aud } = await this.verifyServiceJwt(ctx, {\n lxmCheck: opts.lxmCheck,\n iss: null,\n aud: null,\n })\n if (!opts.skipAudCheck && !this.standardAudienceDids.has(aud)) {\n throw new AuthRequiredError(\n 'jwt audience does not match service did',\n 'BadJwtAudience',\n )\n }\n return {\n credentials: {\n type: 'standard',\n iss,\n aud,\n },\n }\n } else {\n return this.nullCreds()\n }\n }\n\n standardOptional: (ctx: ReqCtx) => Promise<StandardOutput | NullOutput> =\n this.standardOptionalParameterized({})\n\n standard = async (ctx: ReqCtx): Promise<StandardOutput> => {\n const output = await this.standardOptional(ctx)\n if (output.credentials.type === 'none') {\n throw new AuthRequiredError(undefined, 'AuthMissing')\n }\n return output as StandardOutput\n }\n\n role = (ctx: ReqCtx): RoleOutput => {\n const creds = this.parseRoleCreds(ctx.req)\n if (creds.status !== RoleStatus.Valid) {\n throw new AuthRequiredError()\n }\n return {\n credentials: {\n ...creds,\n type: 'role',\n },\n }\n }\n\n standardOrRole = async (\n ctx: ReqCtx,\n ): Promise<StandardOutput | RoleOutput> => {\n if (isBearerToken(ctx.req)) {\n return this.standard(ctx)\n } else {\n return this.role(ctx)\n }\n }\n\n optionalStandardOrRole = async (\n ctx: ReqCtx,\n ): Promise<StandardOutput | RoleOutput | NullOutput> => {\n if (isBearerToken(ctx.req)) {\n return await this.standard(ctx)\n } else {\n const creds = this.parseRoleCreds(ctx.req)\n if (creds.status === RoleStatus.Valid) {\n return {\n credentials: {\n ...creds,\n type: 'role',\n },\n }\n } else if (creds.status === RoleStatus.Missing) {\n return this.nullCreds()\n } else {\n throw new AuthRequiredError()\n }\n }\n }\n\n // @NOTE this auth verifier method is not recommended to be implemented by most appviews\n // this is a short term fix to remove proxy load from Bluesky's PDS and in line with possible\n // future plans to have the client talk directly with the appview\n entrywaySession = async (reqCtx: ReqCtx): Promise<StandardOutput> => {\n const token = bearerTokenFromReq(reqCtx.req)\n if (!token) {\n throw new AuthRequiredError(undefined, 'AuthMissing')\n }\n\n // if entryway jwt key not configured then do not parsed these tokens\n if (!this.entrywayJwtPublicKey) {\n throw new AuthRequiredError('Malformed token', 'InvalidToken')\n }\n\n const res = await jose\n .jwtVerify(token, this.entrywayJwtPublicKey)\n .catch((err) => {\n if (err?.['code'] === 'ERR_JWT_EXPIRED') {\n throw new AuthRequiredError('Token has expired', 'ExpiredToken')\n }\n throw new AuthRequiredError(\n 'Token could not be verified',\n 'InvalidToken',\n )\n })\n\n const { sub, aud, scope, cnf } = res.payload\n if (typeof cnf !== 'undefined') {\n // Proof-of-Possession (PoP) tokens are not allowed here\n // https://www.rfc-editor.org/rfc/rfc7800.html\n throw new AuthRequiredError(\n 'Malformed token: DPoP not supported',\n 'InvalidToken',\n )\n }\n if (typeof sub !== 'string' || !sub.startsWith('did:')) {\n throw new AuthRequiredError('Malformed token', 'InvalidToken')\n } else if (\n typeof aud !== 'string' ||\n !aud.startsWith('did:web:') ||\n !aud.endsWith('.bsky.network')\n ) {\n throw new AuthRequiredError('Bad token aud', 'InvalidToken')\n } else if (typeof scope !== 'string' || !ALLOWED_AUTH_SCOPES.has(scope)) {\n throw new AuthRequiredError('Bad token scope', 'InvalidToken')\n }\n\n return {\n credentials: {\n type: 'standard',\n aud: this.ownDid,\n iss: sub as DidString | `${DidString}#${string}`,\n },\n }\n }\n\n modService = async (reqCtx: ReqCtx): Promise<ModServiceOutput> => {\n const { iss, aud } = await this.verifyServiceJwt(reqCtx, {\n aud: this.ownDid,\n iss: [this.modServiceDid, `${this.modServiceDid}#atproto_labeler`],\n })\n return { credentials: { type: 'mod_service', aud, iss } }\n }\n\n roleOrModService = async (\n reqCtx: ReqCtx,\n ): Promise<RoleOutput | ModServiceOutput> => {\n if (isBearerToken(reqCtx.req)) {\n return this.modService(reqCtx)\n } else {\n return this.role(reqCtx)\n }\n }\n\n parseRoleCreds(req: express.Request) {\n const parsed = parseBasicAuth(req.headers.authorization || '')\n const { Missing, Valid, Invalid } = RoleStatus\n if (!parsed) {\n return { status: Missing, admin: false, moderator: false, triage: false }\n }\n const { username, password } = parsed\n if (username === 'admin' && this.adminPasses.has(password)) {\n return { status: Valid, admin: true }\n }\n return { status: Invalid, admin: false }\n }\n\n async verifyServiceJwt(\n reqCtx: ReqCtx,\n opts: {\n iss: string[] | null\n aud: string | null\n lxmCheck?: (method?: string) => boolean\n },\n ): Promise<{\n iss: DidString | `${DidString}#${string}`\n aud: string\n }> {\n const getSigningKey = async (\n iss: string,\n _forceRefresh: boolean, // @TODO consider propagating to dataplane\n ): Promise<string> => {\n if (opts.iss !== null && !opts.iss.includes(iss)) {\n throw new AuthRequiredError('Untrusted issuer', 'UntrustedIss')\n }\n const [did, serviceId] = iss.split('#')\n const keyId =\n serviceId === 'atproto_labeler' ? 'atproto_label' : 'atproto'\n let identity: GetIdentityByDidResponse\n try {\n identity = await this.dataplane.getIdentityByDid({ did })\n } catch (err) {\n if (isDataplaneError(err, Code.NotFound)) {\n throw new AuthRequiredError('identity unknown')\n }\n throw err\n }\n const keys = unpackIdentityKeys(identity.keys)\n const didKey = getKeyAsDidKey(keys, { id: keyId })\n if (!didKey) {\n throw new AuthRequiredError('missing or bad key')\n }\n return didKey\n }\n const assertLxmCheck = () => {\n const lxm = parseReqNsid(reqCtx.req)\n if (\n (opts.lxmCheck && !opts.lxmCheck(payload.lxm)) ||\n (!opts.lxmCheck && payload.lxm !== lxm)\n ) {\n throw new AuthRequiredError(\n payload.lxm !== undefined\n ? `bad jwt lexicon method (\"lxm\"). must match: ${lxm}`\n : `missing jwt lexicon method (\"lxm\"). must match: ${lxm}`,\n 'BadJwtLexiconMethod',\n )\n }\n }\n\n const jwtStr = bearerTokenFromReq(reqCtx.req)\n if (!jwtStr) {\n throw new AuthRequiredError('missing jwt', 'MissingJwt')\n }\n // if validating additional scopes, skip scope check in initial validation & follow up afterwards\n const payload = await verifyServiceJwt(\n jwtStr,\n opts.aud,\n null,\n getSigningKey,\n verifySignatureWithKey,\n )\n if (\n !payload.iss.endsWith('#atproto_labeler') ||\n payload.lxm !== undefined\n ) {\n // @TODO currently permissive of labelers who dont set lxm yet.\n // we'll allow ozone self-hosters to upgrade before removing this condition.\n assertLxmCheck()\n }\n return { iss: payload.iss, aud: payload.aud }\n }\n\n isModService(iss: string): boolean {\n return [\n this.modServiceDid,\n `${this.modServiceDid}#atproto_labeler`,\n ].includes(iss)\n }\n\n nullCreds(): NullOutput {\n return {\n credentials: {\n type: 'none',\n iss: null,\n },\n }\n }\n\n parseCreds(\n creds: StandardOutput | RoleOutput | ModServiceOutput | NullOutput,\n ) {\n const viewer =\n creds.credentials.type === 'standard' ? creds.credentials.iss : null\n const includeTakedownsAnd3pBlocks =\n (creds.credentials.type === 'role' && creds.credentials.admin) ||\n creds.credentials.type === 'mod_service' ||\n (creds.credentials.type === 'standard' &&\n this.isModService(creds.credentials.iss))\n const canPerformTakedown =\n (creds.credentials.type === 'role' && creds.credentials.admin) ||\n creds.credentials.type === 'mod_service'\n const isModService =\n creds.credentials.type === 'mod_service' ||\n (creds.credentials.type === 'standard' &&\n this.isModService(creds.credentials.iss))\n\n return {\n viewer,\n includeTakedowns: includeTakedownsAnd3pBlocks,\n include3pBlocks: includeTakedownsAnd3pBlocks,\n canPerformTakedown,\n isModService,\n }\n }\n}\n\n// HELPERS\n// ---------\n\nconst BEARER = 'Bearer '\nconst BASIC = 'Basic '\n\nconst isBearerToken = (req: express.Request): boolean => {\n return req.headers.authorization?.startsWith(BEARER) ?? false\n}\n\nconst isBasicToken = (req: express.Request): boolean => {\n return req.headers.authorization?.startsWith(BASIC) ?? false\n}\n\nconst bearerTokenFromReq = (req: express.Request) => {\n const header = req.headers.authorization || ''\n if (!header.startsWith(BEARER)) return null\n return header.slice(BEARER.length).trim()\n}\n\nexport const parseBasicAuth = (\n token: string,\n): { username: string; password: string } | null => {\n if (!token.startsWith(BASIC)) return null\n const b64 = token.slice(BASIC.length)\n let parsed: string[]\n try {\n parsed = ui8.toString(ui8.fromString(b64, 'base64pad'), 'utf8').split(':')\n } catch (err) {\n return null\n }\n const [username, password] = parsed\n if (!username || !password) return null\n return { username, password }\n}\n\nexport const buildBasicAuth = (username: string, password: string): string => {\n return (\n BASIC +\n ui8.toString(ui8.fromString(`${username}:${password}`, 'utf8'), 'base64pad')\n )\n}\n\nconst keyEncoder = new KeyEncoder('secp256k1')\nexport const createPublicKeyObject = (publicKeyHex: string): KeyObject => {\n const key = keyEncoder.encodePublic(publicKeyHex, 'raw', 'pem')\n return crypto.createPublicKey({ format: 'pem', key })\n}\n\nconst verifySig = (\n publicKey: Uint8Array,\n data: Uint8Array,\n sig: Uint8Array,\n) => {\n const keyEncoder = new KeyEncoder('secp256k1')\n\n const pemKey = keyEncoder.encodePublic(\n ui8.toString(publicKey, 'hex'),\n 'raw',\n 'pem',\n )\n const key = crypto.createPublicKey({ format: 'pem', key: pemKey })\n\n return crypto.verify(\n 'sha256',\n data,\n {\n key,\n dsaEncoding: 'ieee-p1363',\n },\n sig,\n )\n}\n\nexport const verifySignatureWithKey: VerifySignatureWithKeyFn = async (\n didKey: string,\n msgBytes: Uint8Array,\n sigBytes: Uint8Array,\n alg: string,\n) => {\n if (alg === SECP256K1_JWT_ALG) {\n const parsed = parseDidKey(didKey)\n if (alg !== parsed.jwtAlg) {\n throw new Error(`Expected key alg ${alg}, got ${parsed.jwtAlg}`)\n }\n\n return verifySig(parsed.keyBytes, msgBytes, sigBytes)\n }\n\n return cryptoVerifySignatureWithKey(didKey, msgBytes, sigBytes, alg)\n}\n"]}
|
|
1
|
+
{"version":3,"file":"auth-verifier.js","sourceRoot":"","sources":["../src/auth-verifier.ts"],"names":[],"mappings":"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","sourcesContent":["import crypto, { KeyObject } from 'node:crypto'\nimport express from 'express'\nimport * as jose from 'jose'\nimport KeyEncoder from 'key-encoder'\nimport * as ui8 from 'uint8arrays'\nimport { SECP256K1_JWT_ALG, parseDidKey } from '@atproto/crypto'\nimport { DidString, isDidString } from '@atproto/lex'\nimport {\n AuthRequiredError,\n VerifySignatureWithKeyFn,\n cryptoVerifySignatureWithKey,\n parseReqNsid,\n verifyJwt as verifyServiceJwt,\n} from '@atproto/xrpc-server'\nimport {\n Code,\n DataPlaneClient,\n getKeyAsDidKey,\n isDataplaneError,\n unpackIdentityKeys,\n} from './data-plane'\nimport { GetIdentityByDidResponse } from './proto/bsky_pb'\n\ntype ReqCtx = {\n req: express.Request\n}\n\ntype StandardAuthOpts = {\n skipAudCheck?: boolean\n lxmCheck?: (method?: string) => boolean\n}\n\nexport enum RoleStatus {\n Valid,\n Invalid,\n Missing,\n}\n\ntype NullOutput = {\n credentials: {\n type: 'none'\n iss: null\n }\n}\n\ntype StandardOutput = {\n credentials: {\n type: 'standard'\n aud: string\n iss: DidString | `${DidString}#${string}`\n }\n}\n\ntype RoleOutput = {\n credentials: {\n type: 'role'\n admin: boolean\n }\n}\n\ntype ModServiceOutput = {\n credentials: {\n type: 'mod_service'\n aud: string\n iss: string\n }\n}\n\nconst ALLOWED_AUTH_SCOPES = new Set([\n 'com.atproto.access',\n 'com.atproto.appPass',\n 'com.atproto.appPassPrivileged',\n])\n\nexport type AuthVerifierOpts = {\n ownDid: string\n alternateAudienceDids: string[]\n modServiceDid: string\n adminPasses: string[]\n entrywayJwtPublicKey?: KeyObject\n}\n\nexport class AuthVerifier {\n public ownDid: string\n public standardAudienceDids: Set<string>\n public modServiceDid: string\n private adminPasses: Set<string>\n private entrywayJwtPublicKey?: KeyObject\n\n constructor(\n public dataplane: DataPlaneClient,\n opts: AuthVerifierOpts,\n ) {\n this.ownDid = opts.ownDid\n this.standardAudienceDids = new Set([\n opts.ownDid,\n ...opts.alternateAudienceDids,\n ])\n this.modServiceDid = opts.modServiceDid\n this.adminPasses = new Set(opts.adminPasses)\n this.entrywayJwtPublicKey = opts.entrywayJwtPublicKey\n }\n\n // verifiers (arrow fns to preserve scope)\n standardOptionalParameterized =\n (opts: StandardAuthOpts) =>\n async (ctx: ReqCtx): Promise<StandardOutput | NullOutput> => {\n // @TODO remove! basic auth + did supported just for testing.\n if (isBasicToken(ctx.req)) {\n const aud = this.ownDid\n const iss = ctx.req.headers['appview-as-did']\n if (typeof iss !== 'string' || !isDidString(iss)) {\n throw new AuthRequiredError('bad issuer')\n }\n if (!this.parseRoleCreds(ctx.req).admin) {\n throw new AuthRequiredError('bad credentials')\n }\n return {\n credentials: { type: 'standard', iss, aud },\n }\n } else if (isBearerToken(ctx.req)) {\n // @NOTE temporarily accept entryway session tokens to shed load from PDS instances\n const token = bearerTokenFromReq(ctx.req)\n const header = token ? jose.decodeProtectedHeader(token) : undefined\n if (header?.typ === 'at+jwt') {\n // we should never use entryway session tokens in the case of flexible auth audiences (namely in the case of getFeed)\n if (opts.skipAudCheck) {\n throw new AuthRequiredError('Malformed token', 'InvalidToken')\n }\n return this.entrywaySession(ctx)\n }\n\n const { iss, aud } = await this.verifyServiceJwt(ctx, {\n lxmCheck: opts.lxmCheck,\n iss: null,\n aud: null,\n })\n if (!opts.skipAudCheck && !this.standardAudienceDids.has(aud)) {\n throw new AuthRequiredError(\n 'jwt audience does not match service did',\n 'BadJwtAudience',\n )\n }\n return {\n credentials: {\n type: 'standard',\n iss,\n aud,\n },\n }\n } else {\n return this.nullCreds()\n }\n }\n\n standardOptional: (ctx: ReqCtx) => Promise<StandardOutput | NullOutput> =\n this.standardOptionalParameterized({})\n\n standard = async (ctx: ReqCtx): Promise<StandardOutput> => {\n const output = await this.standardOptional(ctx)\n if (output.credentials.type === 'none') {\n throw new AuthRequiredError(undefined, 'AuthMissing')\n }\n return output as StandardOutput\n }\n\n role = (ctx: ReqCtx): RoleOutput => {\n const creds = this.parseRoleCreds(ctx.req)\n if (creds.status !== RoleStatus.Valid) {\n throw new AuthRequiredError()\n }\n return {\n credentials: {\n ...creds,\n type: 'role',\n },\n }\n }\n\n standardOrRole = async (\n ctx: ReqCtx,\n ): Promise<StandardOutput | RoleOutput> => {\n if (isBearerToken(ctx.req)) {\n return this.standard(ctx)\n } else {\n return this.role(ctx)\n }\n }\n\n optionalStandardOrRole = async (\n ctx: ReqCtx,\n ): Promise<StandardOutput | RoleOutput | NullOutput> => {\n if (isBearerToken(ctx.req)) {\n return await this.standard(ctx)\n } else {\n const creds = this.parseRoleCreds(ctx.req)\n if (creds.status === RoleStatus.Valid) {\n return {\n credentials: {\n ...creds,\n type: 'role',\n },\n }\n } else if (creds.status === RoleStatus.Missing) {\n return this.nullCreds()\n } else {\n throw new AuthRequiredError()\n }\n }\n }\n\n // @NOTE this auth verifier method is not recommended to be implemented by most appviews\n // this is a short term fix to remove proxy load from Bluesky's PDS and in line with possible\n // future plans to have the client talk directly with the appview\n entrywaySession = async (reqCtx: ReqCtx): Promise<StandardOutput> => {\n const token = bearerTokenFromReq(reqCtx.req)\n if (!token) {\n throw new AuthRequiredError(undefined, 'AuthMissing')\n }\n\n // if entryway jwt key not configured then do not parsed these tokens\n if (!this.entrywayJwtPublicKey) {\n throw new AuthRequiredError('Malformed token', 'InvalidToken')\n }\n\n const res = await jose\n .jwtVerify(token, this.entrywayJwtPublicKey)\n .catch((err) => {\n if (err?.['code'] === 'ERR_JWT_EXPIRED') {\n throw new AuthRequiredError('Token has expired', 'ExpiredToken')\n }\n throw new AuthRequiredError(\n 'Token could not be verified',\n 'InvalidToken',\n )\n })\n\n const { sub, aud, scope, cnf } = res.payload\n if (typeof cnf !== 'undefined') {\n // Proof-of-Possession (PoP) tokens are not allowed here\n // https://www.rfc-editor.org/rfc/rfc7800.html\n throw new AuthRequiredError(\n 'Malformed token: DPoP not supported',\n 'InvalidToken',\n )\n }\n if (typeof sub !== 'string' || !sub.startsWith('did:')) {\n throw new AuthRequiredError('Malformed token', 'InvalidToken')\n } else if (\n typeof aud !== 'string' ||\n !aud.startsWith('did:web:') ||\n !aud.endsWith('.bsky.network')\n ) {\n throw new AuthRequiredError('Bad token aud', 'InvalidToken')\n } else if (typeof scope !== 'string' || !ALLOWED_AUTH_SCOPES.has(scope)) {\n throw new AuthRequiredError('Bad token scope', 'InvalidToken')\n }\n\n return {\n credentials: {\n type: 'standard',\n aud: this.ownDid,\n iss: sub as DidString | `${DidString}#${string}`,\n },\n }\n }\n\n modService = async (reqCtx: ReqCtx): Promise<ModServiceOutput> => {\n const { iss, aud } = await this.verifyServiceJwt(reqCtx, {\n aud: this.ownDid,\n iss: [this.modServiceDid, `${this.modServiceDid}#atproto_labeler`],\n })\n return { credentials: { type: 'mod_service', aud, iss } }\n }\n\n roleOrModService = async (\n reqCtx: ReqCtx,\n ): Promise<RoleOutput | ModServiceOutput> => {\n if (isBearerToken(reqCtx.req)) {\n return this.modService(reqCtx)\n } else {\n return this.role(reqCtx)\n }\n }\n\n parseRoleCreds(req: express.Request) {\n const parsed = parseBasicAuth(req.headers.authorization || '')\n const { Missing, Valid, Invalid } = RoleStatus\n if (!parsed) {\n return { status: Missing, admin: false, moderator: false, triage: false }\n }\n const { username, password } = parsed\n if (username === 'admin' && this.adminPasses.has(password)) {\n return { status: Valid, admin: true }\n }\n return { status: Invalid, admin: false }\n }\n\n async verifyServiceJwt(\n reqCtx: ReqCtx,\n opts: {\n iss: string[] | null\n aud: string | null\n lxmCheck?: (method?: string) => boolean\n },\n ): Promise<{\n iss: DidString | `${DidString}#${string}`\n aud: string\n }> {\n const getSigningKey = async (\n iss: string,\n _forceRefresh: boolean, // @TODO consider propagating to dataplane\n ): Promise<string> => {\n if (opts.iss !== null && !opts.iss.includes(iss)) {\n throw new AuthRequiredError('Untrusted issuer', 'UntrustedIss')\n }\n const [did, serviceId] = iss.split('#')\n const keyId =\n serviceId === 'atproto_labeler' ? 'atproto_label' : 'atproto'\n let identity: GetIdentityByDidResponse\n try {\n identity = await this.dataplane.getIdentityByDid({ did })\n } catch (err) {\n if (isDataplaneError(err, Code.NotFound)) {\n throw new AuthRequiredError('identity unknown')\n }\n throw err\n }\n const keys = unpackIdentityKeys(identity.keys)\n const didKey = getKeyAsDidKey(keys, { id: keyId })\n if (!didKey) {\n throw new AuthRequiredError('missing or bad key')\n }\n return didKey\n }\n const assertLxmCheck = () => {\n const lxm = parseReqNsid(reqCtx.req)\n if (\n (opts.lxmCheck && !opts.lxmCheck(payload.lxm)) ||\n (!opts.lxmCheck && payload.lxm !== lxm)\n ) {\n throw new AuthRequiredError(\n payload.lxm !== undefined\n ? `bad jwt lexicon method (\"lxm\"). must match: ${lxm}`\n : `missing jwt lexicon method (\"lxm\"). must match: ${lxm}`,\n 'BadJwtLexiconMethod',\n )\n }\n }\n\n const jwtStr = bearerTokenFromReq(reqCtx.req)\n if (!jwtStr) {\n throw new AuthRequiredError('missing jwt', 'MissingJwt')\n }\n // if validating additional scopes, skip scope check in initial validation & follow up afterwards\n const payload = await verifyServiceJwt(\n jwtStr,\n opts.aud,\n null,\n getSigningKey,\n verifySignatureWithKey,\n )\n if (\n !payload.iss.endsWith('#atproto_labeler') ||\n payload.lxm !== undefined\n ) {\n // @TODO currently permissive of labelers who dont set lxm yet.\n // we'll allow ozone self-hosters to upgrade before removing this condition.\n assertLxmCheck()\n }\n return { iss: payload.iss, aud: payload.aud }\n }\n\n isModService(iss: string): boolean {\n return [\n this.modServiceDid,\n `${this.modServiceDid}#atproto_labeler`,\n ].includes(iss)\n }\n\n nullCreds(): NullOutput {\n return {\n credentials: {\n type: 'none',\n iss: null,\n },\n }\n }\n\n parseCreds(\n creds: StandardOutput | RoleOutput | ModServiceOutput | NullOutput,\n ) {\n const viewer =\n creds.credentials.type === 'standard' ? creds.credentials.iss : null\n const includeTakedownsAnd3pBlocks =\n (creds.credentials.type === 'role' && creds.credentials.admin) ||\n creds.credentials.type === 'mod_service' ||\n (creds.credentials.type === 'standard' &&\n this.isModService(creds.credentials.iss))\n const canPerformTakedown =\n (creds.credentials.type === 'role' && creds.credentials.admin) ||\n creds.credentials.type === 'mod_service'\n const isModService =\n creds.credentials.type === 'mod_service' ||\n (creds.credentials.type === 'standard' &&\n this.isModService(creds.credentials.iss))\n\n return {\n viewer,\n includeTakedowns: includeTakedownsAnd3pBlocks,\n include3pBlocks: includeTakedownsAnd3pBlocks,\n canPerformTakedown,\n isModService,\n skipViewerBlocks: isModService && viewer !== null,\n }\n }\n}\n\n// HELPERS\n// ---------\n\nconst BEARER = 'Bearer '\nconst BASIC = 'Basic '\n\nconst isBearerToken = (req: express.Request): boolean => {\n return req.headers.authorization?.startsWith(BEARER) ?? false\n}\n\nconst isBasicToken = (req: express.Request): boolean => {\n return req.headers.authorization?.startsWith(BASIC) ?? false\n}\n\nconst bearerTokenFromReq = (req: express.Request) => {\n const header = req.headers.authorization || ''\n if (!header.startsWith(BEARER)) return null\n return header.slice(BEARER.length).trim()\n}\n\nexport const parseBasicAuth = (\n token: string,\n): { username: string; password: string } | null => {\n if (!token.startsWith(BASIC)) return null\n const b64 = token.slice(BASIC.length)\n let parsed: string[]\n try {\n parsed = ui8.toString(ui8.fromString(b64, 'base64pad'), 'utf8').split(':')\n } catch (err) {\n return null\n }\n const [username, password] = parsed\n if (!username || !password) return null\n return { username, password }\n}\n\nexport const buildBasicAuth = (username: string, password: string): string => {\n return (\n BASIC +\n ui8.toString(ui8.fromString(`${username}:${password}`, 'utf8'), 'base64pad')\n )\n}\n\nconst keyEncoder = new KeyEncoder('secp256k1')\nexport const createPublicKeyObject = (publicKeyHex: string): KeyObject => {\n const key = keyEncoder.encodePublic(publicKeyHex, 'raw', 'pem')\n return crypto.createPublicKey({ format: 'pem', key })\n}\n\nconst verifySig = (\n publicKey: Uint8Array,\n data: Uint8Array,\n sig: Uint8Array,\n) => {\n const keyEncoder = new KeyEncoder('secp256k1')\n\n const pemKey = keyEncoder.encodePublic(\n ui8.toString(publicKey, 'hex'),\n 'raw',\n 'pem',\n )\n const key = crypto.createPublicKey({ format: 'pem', key: pemKey })\n\n return crypto.verify(\n 'sha256',\n data,\n {\n key,\n dsaEncoding: 'ieee-p1363',\n },\n sig,\n )\n}\n\nexport const verifySignatureWithKey: VerifySignatureWithKeyFn = async (\n didKey: string,\n msgBytes: Uint8Array,\n sigBytes: Uint8Array,\n alg: string,\n) => {\n if (alg === SECP256K1_JWT_ALG) {\n const parsed = parseDidKey(didKey)\n if (alg !== parsed.jwtAlg) {\n throw new Error(`Expected key alg ${alg}, got ${parsed.jwtAlg}`)\n }\n\n return verifySig(parsed.keyBytes, msgBytes, sigBytes)\n }\n\n return cryptoVerifySignatureWithKey(didKey, msgBytes, sigBytes, alg)\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makePlugin = void 0;
|
|
4
|
+
const lex_1 = require("@atproto/lex");
|
|
4
5
|
const syntax_1 = require("@atproto/syntax");
|
|
5
6
|
const lexicons_1 = require("../../../../lexicons");
|
|
6
7
|
const processor_1 = require("../processor");
|
|
@@ -17,7 +18,7 @@ const insertFn = async (db, uri, cid, obj, timestamp) => {
|
|
|
17
18
|
descriptionFacets: obj.descriptionFacets
|
|
18
19
|
? JSON.stringify(obj.descriptionFacets)
|
|
19
20
|
: undefined,
|
|
20
|
-
avatarCid: obj.avatar
|
|
21
|
+
avatarCid: (0, lex_1.getBlobCidString)(obj.avatar),
|
|
21
22
|
createdAt: (0, syntax_1.normalizeDatetimeAlways)(obj.createdAt),
|
|
22
23
|
indexedAt: timestamp,
|
|
23
24
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feed-generator.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/feed-generator.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"feed-generator.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/feed-generator.ts"],"names":[],"mappings":";;;AACA,sCAAoD;AACpD,4CAAgE;AAChE,mDAA0C;AAI1C,4CAA8C;AAI9C,MAAM,QAAQ,GAAG,KAAK,EACpB,EAAkB,EAClB,GAAU,EACV,GAAQ,EACR,GAAiC,EACjC,SAAiB,EACqB,EAAE;IACxC,MAAM,QAAQ,GAAG,MAAM,EAAE;SACtB,UAAU,CAAC,gBAAgB,CAAC;SAC5B,MAAM,CAAC;QACN,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;QACnB,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;QACnB,OAAO,EAAE,GAAG,CAAC,IAAI;QACjB,OAAO,EAAE,GAAG,CAAC,GAAG;QAChB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACtC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC;YACvC,CAAC,CAAC,SAAS;QACb,SAAS,EAAE,IAAA,sBAAgB,EAAC,GAAG,CAAC,MAAM,CAAC;QACvC,SAAS,EAAE,IAAA,gCAAuB,EAAC,GAAG,CAAC,SAAS,CAAC;QACjD,SAAS,EAAE,SAAS;KACrB,CAAC;SACD,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;SAClC,YAAY,EAAE;SACd,gBAAgB,EAAE,CAAA;IACrB,OAAO,QAAQ,IAAI,IAAI,CAAA;AACzB,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,KAAK,IAA2B,EAAE;IACtD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,GAAG,EAAE;IAC3B,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,KAAK,EACpB,EAAkB,EAClB,GAAU,EAC4B,EAAE;IACxC,MAAM,OAAO,GAAG,MAAM,EAAE;SACrB,UAAU,CAAC,gBAAgB,CAAC;SAC5B,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;SACjC,YAAY,EAAE;SACd,gBAAgB,EAAE,CAAA;IACrB,OAAO,OAAO,IAAI,IAAI,CAAA;AACxB,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,GAAG,EAAE;IAC3B,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;AACrC,CAAC,CAAA;AAGM,MAAM,UAAU,GAAG,CAAC,EAAY,EAAE,UAA2B,EAAE,EAAE;IACtE,OAAO,IAAI,2BAAe,CAAC,EAAE,EAAE,UAAU,EAAE;QACzC,MAAM,EAAE,cAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI;QACpC,QAAQ;QACR,aAAa;QACb,QAAQ;QACR,eAAe;QACf,eAAe;KAChB,CAAC,CAAA;AACJ,CAAC,CAAA;AATY,QAAA,UAAU,cAStB;AAED,kBAAe,kBAAU,CAAA","sourcesContent":["import { Selectable } from 'kysely'\nimport { Cid, getBlobCidString } from '@atproto/lex'\nimport { AtUri, normalizeDatetimeAlways } from '@atproto/syntax'\nimport { app } from '../../../../lexicons'\nimport { BackgroundQueue } from '../../background'\nimport { Database } from '../../db'\nimport { DatabaseSchema, DatabaseSchemaType } from '../../db/database-schema'\nimport { RecordProcessor } from '../processor'\n\ntype IndexedFeedGenerator = Selectable<DatabaseSchemaType['feed_generator']>\n\nconst insertFn = async (\n db: DatabaseSchema,\n uri: AtUri,\n cid: Cid,\n obj: app.bsky.feed.generator.Main,\n timestamp: string,\n): Promise<IndexedFeedGenerator | null> => {\n const inserted = await db\n .insertInto('feed_generator')\n .values({\n uri: uri.toString(),\n cid: cid.toString(),\n creator: uri.host,\n feedDid: obj.did,\n displayName: obj.displayName,\n description: obj.description,\n descriptionFacets: obj.descriptionFacets\n ? JSON.stringify(obj.descriptionFacets)\n : undefined,\n avatarCid: getBlobCidString(obj.avatar),\n createdAt: normalizeDatetimeAlways(obj.createdAt),\n indexedAt: timestamp,\n })\n .onConflict((oc) => oc.doNothing())\n .returningAll()\n .executeTakeFirst()\n return inserted || null\n}\n\nconst findDuplicate = async (): Promise<AtUri | null> => {\n return null\n}\n\nconst notifsForInsert = () => {\n return []\n}\n\nconst deleteFn = async (\n db: DatabaseSchema,\n uri: AtUri,\n): Promise<IndexedFeedGenerator | null> => {\n const deleted = await db\n .deleteFrom('feed_generator')\n .where('uri', '=', uri.toString())\n .returningAll()\n .executeTakeFirst()\n return deleted || null\n}\n\nconst notifsForDelete = () => {\n return { notifs: [], toDelete: [] }\n}\n\nexport type PluginType = ReturnType<typeof makePlugin>\nexport const makePlugin = (db: Database, background: BackgroundQueue) => {\n return new RecordProcessor(db, background, {\n schema: app.bsky.feed.generator.main,\n insertFn,\n findDuplicate,\n deleteFn,\n notifsForInsert,\n notifsForDelete,\n })\n}\n\nexport default makePlugin\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makePlugin = void 0;
|
|
4
|
+
const lex_1 = require("@atproto/lex");
|
|
4
5
|
const syntax_1 = require("@atproto/syntax");
|
|
5
6
|
const lexicons_1 = require("../../../../lexicons");
|
|
6
7
|
const processor_1 = require("../processor");
|
|
@@ -17,7 +18,7 @@ const insertFn = async (db, uri, cid, obj, timestamp) => {
|
|
|
17
18
|
descriptionFacets: obj.descriptionFacets
|
|
18
19
|
? JSON.stringify(obj.descriptionFacets)
|
|
19
20
|
: undefined,
|
|
20
|
-
avatarCid: obj.avatar
|
|
21
|
+
avatarCid: (0, lex_1.getBlobCidString)(obj.avatar),
|
|
21
22
|
createdAt: (0, syntax_1.normalizeDatetimeAlways)(obj.createdAt),
|
|
22
23
|
indexedAt: timestamp,
|
|
23
24
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/list.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/indexing/plugins/list.ts"],"names":[],"mappings":";;;AACA,sCAAoD;AACpD,4CAAgE;AAChE,mDAA0C;AAI1C,4CAA8C;AAI9C,MAAM,QAAQ,GAAG,KAAK,EACpB,EAAkB,EAClB,GAAU,EACV,GAAQ,EACR,GAA6B,EAC7B,SAAiB,EACY,EAAE;IAC/B,MAAM,QAAQ,GAAG,MAAM,EAAE;SACtB,UAAU,CAAC,MAAM,CAAC;SAClB,MAAM,CAAC;QACN,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;QACnB,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;QACnB,OAAO,EAAE,GAAG,CAAC,IAAI;QACjB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACtC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC;YACvC,CAAC,CAAC,SAAS;QACb,SAAS,EAAE,IAAA,sBAAgB,EAAC,GAAG,CAAC,MAAM,CAAC;QACvC,SAAS,EAAE,IAAA,gCAAuB,EAAC,GAAG,CAAC,SAAS,CAAC;QACjD,SAAS,EAAE,SAAS;KACrB,CAAC;SACD,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;SAClC,YAAY,EAAE;SACd,gBAAgB,EAAE,CAAA;IACrB,OAAO,QAAQ,IAAI,IAAI,CAAA;AACzB,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,KAAK,IAA2B,EAAE;IACtD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,GAAG,EAAE;IAC3B,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,KAAK,EACpB,EAAkB,EAClB,GAAU,EACmB,EAAE;IAC/B,MAAM,OAAO,GAAG,MAAM,EAAE;SACrB,UAAU,CAAC,MAAM,CAAC;SAClB,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;SACjC,YAAY,EAAE;SACd,gBAAgB,EAAE,CAAA;IACrB,OAAO,OAAO,IAAI,IAAI,CAAA;AACxB,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,GAAG,EAAE;IAC3B,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;AACrC,CAAC,CAAA;AAGM,MAAM,UAAU,GAAG,CAAC,EAAY,EAAE,UAA2B,EAAE,EAAE;IACtE,OAAO,IAAI,2BAAe,CAAC,EAAE,EAAE,UAAU,EAAE;QACzC,MAAM,EAAE,cAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI;QAChC,QAAQ;QACR,aAAa;QACb,QAAQ;QACR,eAAe;QACf,eAAe;KAChB,CAAC,CAAA;AACJ,CAAC,CAAA;AATY,QAAA,UAAU,cAStB;AAED,kBAAe,kBAAU,CAAA","sourcesContent":["import { Selectable } from 'kysely'\nimport { Cid, getBlobCidString } from '@atproto/lex'\nimport { AtUri, normalizeDatetimeAlways } from '@atproto/syntax'\nimport { app } from '../../../../lexicons'\nimport { BackgroundQueue } from '../../background'\nimport { Database } from '../../db'\nimport { DatabaseSchema, DatabaseSchemaType } from '../../db/database-schema'\nimport { RecordProcessor } from '../processor'\n\ntype IndexedList = Selectable<DatabaseSchemaType['list']>\n\nconst insertFn = async (\n db: DatabaseSchema,\n uri: AtUri,\n cid: Cid,\n obj: app.bsky.graph.list.Main,\n timestamp: string,\n): Promise<IndexedList | null> => {\n const inserted = await db\n .insertInto('list')\n .values({\n uri: uri.toString(),\n cid: cid.toString(),\n creator: uri.host,\n name: obj.name,\n purpose: obj.purpose,\n description: obj.description,\n descriptionFacets: obj.descriptionFacets\n ? JSON.stringify(obj.descriptionFacets)\n : undefined,\n avatarCid: getBlobCidString(obj.avatar),\n createdAt: normalizeDatetimeAlways(obj.createdAt),\n indexedAt: timestamp,\n })\n .onConflict((oc) => oc.doNothing())\n .returningAll()\n .executeTakeFirst()\n return inserted || null\n}\n\nconst findDuplicate = async (): Promise<AtUri | null> => {\n return null\n}\n\nconst notifsForInsert = () => {\n return []\n}\n\nconst deleteFn = async (\n db: DatabaseSchema,\n uri: AtUri,\n): Promise<IndexedList | null> => {\n const deleted = await db\n .deleteFrom('list')\n .where('uri', '=', uri.toString())\n .returningAll()\n .executeTakeFirst()\n return deleted || null\n}\n\nconst notifsForDelete = () => {\n return { notifs: [], toDelete: [] }\n}\n\nexport type PluginType = ReturnType<typeof makePlugin>\nexport const makePlugin = (db: Database, background: BackgroundQueue) => {\n return new RecordProcessor(db, background, {\n schema: app.bsky.graph.list.main,\n insertFn,\n findDuplicate,\n deleteFn,\n notifsForInsert,\n notifsForDelete,\n })\n}\n\nexport default makePlugin\n"]}
|
|
@@ -90,7 +90,7 @@ const insertFn = async (db, uri, cid, obj, timestamp) => {
|
|
|
90
90
|
const imagesEmbed = images.map((img, i) => ({
|
|
91
91
|
postUri: uri.toString(),
|
|
92
92
|
position: i,
|
|
93
|
-
imageCid: img.image
|
|
93
|
+
imageCid: (0, lex_1.getBlobCidString)(img.image),
|
|
94
94
|
alt: img.alt,
|
|
95
95
|
}));
|
|
96
96
|
embeds.push(imagesEmbed);
|
|
@@ -103,7 +103,7 @@ const insertFn = async (db, uri, cid, obj, timestamp) => {
|
|
|
103
103
|
uri: external.uri,
|
|
104
104
|
title: external.title,
|
|
105
105
|
description: external.description,
|
|
106
|
-
thumbCid: external.thumb
|
|
106
|
+
thumbCid: (0, lex_1.getBlobCidString)(external.thumb) || null,
|
|
107
107
|
};
|
|
108
108
|
embeds.push(externalEmbed);
|
|
109
109
|
await db.insertInto('post_embed_external').values(externalEmbed).execute();
|
|
@@ -163,7 +163,7 @@ const insertFn = async (db, uri, cid, obj, timestamp) => {
|
|
|
163
163
|
const { video } = postEmbed;
|
|
164
164
|
const videoEmbed = {
|
|
165
165
|
postUri: uri.toString(),
|
|
166
|
-
videoCid:
|
|
166
|
+
videoCid: (0, lex_1.getBlobCidString)(video),
|
|
167
167
|
// @NOTE: alt is required for image but not for video on the lexicon.
|
|
168
168
|
alt: postEmbed.alt ?? null,
|
|
169
169
|
};
|