@atproto/bsky 0.0.237 → 0.0.239
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 +22 -0
- package/dist/api/app/bsky/actor/searchActors.d.ts.map +1 -1
- package/dist/api/app/bsky/actor/searchActors.js +26 -1
- package/dist/api/app/bsky/actor/searchActors.js.map +1 -1
- package/dist/api/app/bsky/actor/searchActorsTypeahead.d.ts.map +1 -1
- package/dist/api/app/bsky/actor/searchActorsTypeahead.js +26 -2
- package/dist/api/app/bsky/actor/searchActorsTypeahead.js.map +1 -1
- package/dist/api/app/bsky/feed/getFeed.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getFeed.js +1 -0
- package/dist/api/app/bsky/feed/getFeed.js.map +1 -1
- package/dist/api/app/bsky/feed/searchPosts.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/searchPosts.js +56 -1
- package/dist/api/app/bsky/feed/searchPosts.js.map +1 -1
- package/dist/api/app/bsky/graph/searchStarterPacks.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/searchStarterPacks.js +26 -1
- package/dist/api/app/bsky/graph/searchStarterPacks.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getPopularFeedGenerators.d.ts.map +1 -1
- package/dist/api/app/bsky/unspecced/getPopularFeedGenerators.js +27 -6
- package/dist/api/app/bsky/unspecced/getPopularFeedGenerators.js.map +1 -1
- package/dist/api/com/atproto/repo/getRecord.js +2 -2
- package/dist/api/com/atproto/repo/getRecord.js.map +1 -1
- package/dist/data-plane/server/routes/feed-gens.d.ts.map +1 -1
- package/dist/data-plane/server/routes/feed-gens.js +21 -12
- package/dist/data-plane/server/routes/feed-gens.js.map +1 -1
- package/dist/data-plane/server/routes/search.d.ts.map +1 -1
- package/dist/data-plane/server/routes/search.js +62 -12
- package/dist/data-plane/server/routes/search.js.map +1 -1
- package/dist/feature-gates/gates.d.ts +1 -0
- package/dist/feature-gates/gates.d.ts.map +1 -1
- package/dist/feature-gates/gates.js +1 -0
- package/dist/feature-gates/gates.js.map +1 -1
- package/dist/hydration/hydrator.d.ts.map +1 -1
- package/dist/hydration/hydrator.js +3 -2
- package/dist/hydration/hydrator.js.map +1 -1
- package/dist/hydration/label.d.ts +1 -1
- package/dist/hydration/label.d.ts.map +1 -1
- package/dist/hydration/label.js +4 -4
- package/dist/hydration/label.js.map +1 -1
- package/dist/lexicons/app/bsky/actor/profile.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/actor/status.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/draft/defs.defs.d.ts +22 -0
- package/dist/lexicons/app/bsky/draft/defs.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/draft/defs.defs.js +11 -0
- package/dist/lexicons/app/bsky/draft/defs.defs.js.map +1 -1
- package/dist/lexicons/app/bsky/embed/gallery.d.ts +3 -0
- package/dist/lexicons/app/bsky/embed/gallery.d.ts.map +1 -0
- package/dist/lexicons/app/bsky/embed/gallery.defs.d.ts +130 -0
- package/dist/lexicons/app/bsky/embed/gallery.defs.d.ts.map +1 -0
- package/dist/lexicons/app/bsky/embed/gallery.defs.js +47 -0
- package/dist/lexicons/app/bsky/embed/gallery.defs.js.map +1 -0
- package/dist/lexicons/app/bsky/embed/gallery.js +6 -0
- package/dist/lexicons/app/bsky/embed/gallery.js.map +1 -0
- package/dist/lexicons/app/bsky/embed/record.defs.d.ts +2 -1
- package/dist/lexicons/app/bsky/embed/record.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/embed/record.defs.js +2 -0
- package/dist/lexicons/app/bsky/embed/record.defs.js.map +1 -1
- package/dist/lexicons/app/bsky/embed/recordWithMedia.defs.d.ts +13 -12
- package/dist/lexicons/app/bsky/embed/recordWithMedia.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/embed/recordWithMedia.defs.js +3 -0
- package/dist/lexicons/app/bsky/embed/recordWithMedia.defs.js.map +1 -1
- package/dist/lexicons/app/bsky/embed.d.ts +1 -0
- package/dist/lexicons/app/bsky/embed.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/embed.js +1 -0
- package/dist/lexicons/app/bsky/embed.js.map +1 -1
- package/dist/lexicons/app/bsky/feed/defs.defs.d.ts +2 -1
- package/dist/lexicons/app/bsky/feed/defs.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/feed/defs.defs.js +2 -0
- package/dist/lexicons/app/bsky/feed/defs.defs.js.map +1 -1
- package/dist/lexicons/app/bsky/feed/generator.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/feed/like.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/feed/post.defs.d.ts +12 -11
- package/dist/lexicons/app/bsky/feed/post.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/feed/post.defs.js +2 -0
- package/dist/lexicons/app/bsky/feed/post.defs.js.map +1 -1
- package/dist/lexicons/app/bsky/feed/postgate.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/feed/repost.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/feed/threadgate.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/graph/block.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/graph/follow.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/graph/list.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/graph/listblock.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/graph/listitem.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/graph/starterpack.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/graph/verification.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/labeler/service.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/notification/declaration.defs.d.ts.map +1 -1
- package/dist/lexicons/chat/bsky/actor/declaration.defs.d.ts.map +1 -1
- package/dist/lexicons/chat/bsky/group/createGroup.defs.d.ts +4 -4
- package/dist/lexicons/chat/bsky/group/createGroup.defs.js +2 -2
- package/dist/lexicons/chat/bsky/group/createGroup.defs.js.map +1 -1
- package/dist/lexicons/chat/bsky/group/defs.defs.d.ts +8 -1
- package/dist/lexicons/chat/bsky/group/defs.defs.d.ts.map +1 -1
- package/dist/lexicons/chat/bsky/group/defs.defs.js +5 -1
- package/dist/lexicons/chat/bsky/group/defs.defs.js.map +1 -1
- package/dist/lexicons/com/atproto/lexicon/schema.defs.d.ts.map +1 -1
- package/dist/lexicons/com/germnetwork/declaration.defs.d.ts.map +1 -1
- package/dist/lexicons/site/standard/document.defs.d.ts.map +1 -1
- package/dist/lexicons/site/standard/graph/recommend.defs.d.ts.map +1 -1
- package/dist/lexicons/site/standard/graph/subscription.defs.d.ts.map +1 -1
- package/dist/lexicons/site/standard/publication.defs.d.ts.map +1 -1
- package/dist/lexicons/site/standard/theme/basic.defs.d.ts.map +1 -1
- package/dist/proto/bsky_connect.d.ts +49 -2
- package/dist/proto/bsky_connect.d.ts.map +1 -1
- package/dist/proto/bsky_connect.js +49 -2
- package/dist/proto/bsky_connect.js.map +1 -1
- package/dist/proto/bsky_pb.d.ts +482 -0
- package/dist/proto/bsky_pb.d.ts.map +1 -1
- package/dist/proto/bsky_pb.js +608 -0
- package/dist/proto/bsky_pb.js.map +1 -1
- package/dist/views/index.d.ts +4 -1
- package/dist/views/index.d.ts.map +1 -1
- package/dist/views/index.js +39 -5
- package/dist/views/index.js.map +1 -1
- package/dist/views/types.d.ts +8 -2
- package/dist/views/types.d.ts.map +1 -1
- package/dist/views/types.js +2 -0
- package/dist/views/types.js.map +1 -1
- package/package.json +7 -7
- package/proto/bsky.proto +166 -2
- package/src/api/app/bsky/actor/searchActors.ts +35 -1
- package/src/api/app/bsky/actor/searchActorsTypeahead.ts +35 -2
- package/src/api/app/bsky/feed/getFeed.ts +1 -0
- package/src/api/app/bsky/feed/searchPosts.ts +60 -1
- package/src/api/app/bsky/graph/searchStarterPacks.ts +35 -1
- package/src/api/app/bsky/unspecced/getPopularFeedGenerators.ts +28 -6
- package/src/api/com/atproto/repo/getRecord.ts +2 -2
- package/src/data-plane/server/routes/feed-gens.ts +33 -14
- package/src/data-plane/server/routes/search.ts +81 -13
- package/src/feature-gates/gates.ts +1 -0
- package/src/hydration/hydrator.ts +3 -6
- package/src/hydration/label.ts +3 -3
- package/src/views/index.ts +61 -11
- package/src/views/types.ts +9 -0
- package/tests/data-plane/handle-invalidation.test.ts +2 -1
- package/tests/views/__snapshots__/posts.test.ts.snap +251 -0
- package/tests/views/drafts.test.ts +105 -0
- package/tests/views/posts.test.ts +134 -0
- package/tsconfig.build.json +2 -2
- package/tsconfig.build.tsbuildinfo +1 -1
- package/tsconfig.json +2 -2
- package/tsconfig.tests.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPopularFeedGenerators.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/unspecced/getPopularFeedGenerators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAI5C,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE/D,sCAAsC;AACtC,2EAA2E;AAC3E,gGAAgG;AAChG,MAAM,CAAC,OAAO,WAAW,MAAc,EAAE,GAAe;IACtD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,wBAAwB,EAAE;QACtD,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,gBAAgB;QACvC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE;YACvC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAA;YACnC,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;YACrC,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"getPopularFeedGenerators.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/unspecced/getPopularFeedGenerators.ts"],"names":[],"mappings":"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","sourcesContent":["import { mapDefined } from '@atproto/common'\nimport { AtUriString } from '@atproto/syntax'\nimport { Server } from '@atproto/xrpc-server'\nimport { AppContext } from '../../../../context.js'\nimport { parseString } from '../../../../hydration/util.js'\nimport { app } from '../../../../lexicons/index.js'\nimport { clearlyBadCursor, resHeaders } from '../../../util.js'\n\n// THIS IS A TEMPORARY UNSPECCED ROUTE\n// @TODO currently mirrors getSuggestedFeeds and ignores the \"query\" param.\n// In the future may take into consideration popularity via likes w/ its own dataplane endpoint.\nexport default function (server: Server, ctx: AppContext) {\n server.add(app.bsky.unspecced.getPopularFeedGenerators, {\n auth: ctx.authVerifier.standardOptional,\n handler: async ({ auth, params, req }) => {\n const viewer = auth.credentials.iss\n const labelers = ctx.reqLabelers(req)\n const features = ctx.featureGatesClient.scope(\n ctx.featureGatesClient.parseUserContextFromHandler({\n viewer,\n req,\n }),\n )\n const hydrateCtx = await ctx.hydrator.createContext({\n viewer,\n labelers,\n features,\n })\n\n if (clearlyBadCursor(params.cursor)) {\n return {\n encoding: 'application/json',\n body: { feeds: [] },\n }\n }\n\n let uris: AtUriString[]\n let cursor: string | undefined\n\n const query = params.query?.trim() ?? ''\n if (query) {\n const useV2 = features.checkGate(features.Gate.SearchV2Enable)\n if (useV2) {\n const res = await ctx.dataplane.searchFeedGeneratorsV2({\n params: {\n query,\n viewer: viewer ?? undefined,\n limit: params.limit,\n },\n })\n uris = res.feedGenerators.map(({ uri }) => uri) as AtUriString[]\n } else {\n const res = await ctx.dataplane.searchFeedGenerators({\n query,\n limit: params.limit,\n })\n uris = res.uris as AtUriString[]\n }\n } else {\n const res = await ctx.dataplane.getSuggestedFeeds({\n actorDid: viewer ?? undefined,\n limit: params.limit,\n cursor: params.cursor,\n })\n uris = res.uris as AtUriString[]\n cursor = parseString(res.cursor)\n }\n\n const hydration = await ctx.hydrator.hydrateFeedGens(uris, hydrateCtx)\n const feedViews = mapDefined(uris, (uri) =>\n ctx.views.feedGenerator(uri, hydration),\n )\n\n return {\n encoding: 'application/json',\n body: {\n feeds: feedViews,\n cursor,\n },\n headers: resHeaders({ labelers: hydrateCtx.labelers }),\n }\n },\n })\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { atUri } from '@atproto/lex';
|
|
2
2
|
import { InvalidRequestError } from '@atproto/xrpc-server';
|
|
3
3
|
import { com } from '../../../../lexicons/index.js';
|
|
4
4
|
export default function (server, ctx) {
|
|
@@ -17,7 +17,7 @@ export default function (server, ctx) {
|
|
|
17
17
|
if (!actors.get(did)) {
|
|
18
18
|
throw new InvalidRequestError(`Could not find repo: ${repo}`);
|
|
19
19
|
}
|
|
20
|
-
const uri =
|
|
20
|
+
const uri = atUri(did, collection, rkey);
|
|
21
21
|
const result = await ctx.hydrator.getRecord(uri, includeTakedowns);
|
|
22
22
|
if (!result || (cid && result.cid !== cid)) {
|
|
23
23
|
throw new InvalidRequestError(`Could not locate record: ${uri}`, 'RecordNotFound');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getRecord.js","sourceRoot":"","sources":["../../../../../src/api/com/atproto/repo/getRecord.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"getRecord.js","sourceRoot":"","sources":["../../../../../src/api/com/atproto/repo/getRecord.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,EAAE,mBAAmB,EAAU,MAAM,sBAAsB,CAAA;AAElE,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAA;AAEnD,MAAM,CAAC,OAAO,WAAW,MAAc,EAAE,GAAe;IACtD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE;QACrC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,sBAAsB;QAC7C,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;YAClC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAAA;YAC9C,MAAM,EAAE,gBAAgB,EAAE,GAAG,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;YAC9D,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;YACtD,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,MAAM,IAAI,mBAAmB,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAA;YAC/D,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE;gBACvD,gBAAgB;aACjB,CAAC,CAAA;YACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,mBAAmB,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAA;YAC/D,CAAC;YAED,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;YACxC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAA;YAElE,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;gBAC3C,MAAM,IAAI,mBAAmB,CAC3B,4BAA4B,GAAG,EAAE,EACjC,gBAAgB,CACjB,CAAA;YACH,CAAC;YAED,OAAO;gBACL,QAAQ,EAAE,kBAA2B;gBACrC,IAAI,EAAE;oBACJ,GAAG,EAAE,GAAG;oBACR,GAAG,EAAE,MAAM,CAAC,GAAG;oBACf,KAAK,EAAE,MAAM,CAAC,MAAM;iBACrB;aACF,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import { atUri } from '@atproto/lex'\nimport { InvalidRequestError, Server } from '@atproto/xrpc-server'\nimport { AppContext } from '../../../../context.js'\nimport { com } from '../../../../lexicons/index.js'\n\nexport default function (server: Server, ctx: AppContext) {\n server.add(com.atproto.repo.getRecord, {\n auth: ctx.authVerifier.optionalStandardOrRole,\n handler: async ({ auth, params }) => {\n const { repo, collection, rkey, cid } = params\n const { includeTakedowns } = ctx.authVerifier.parseCreds(auth)\n const [did] = await ctx.hydrator.actor.getDids([repo])\n if (!did) {\n throw new InvalidRequestError(`Could not find repo: ${repo}`)\n }\n\n const actors = await ctx.hydrator.actor.getActors([did], {\n includeTakedowns,\n })\n if (!actors.get(did)) {\n throw new InvalidRequestError(`Could not find repo: ${repo}`)\n }\n\n const uri = atUri(did, collection, rkey)\n const result = await ctx.hydrator.getRecord(uri, includeTakedowns)\n\n if (!result || (cid && result.cid !== cid)) {\n throw new InvalidRequestError(\n `Could not locate record: ${uri}`,\n 'RecordNotFound',\n )\n }\n\n return {\n encoding: 'application/json' as const,\n body: {\n uri: uri,\n cid: result.cid,\n value: result.record,\n },\n }\n },\n })\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feed-gens.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/routes/feed-gens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;yBAGzB,IAAI,QAAQ,KAAG,OAAO,CAAC,WAAW,CAAC,OAAO,OAAO,CAAC,CAAC;AAAnE,
|
|
1
|
+
{"version":3,"file":"feed-gens.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/routes/feed-gens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;yBAGzB,IAAI,QAAQ,KAAG,OAAO,CAAC,WAAW,CAAC,OAAO,OAAO,CAAC,CAAC;AAAnE,wBA4DE"}
|
|
@@ -33,23 +33,32 @@ export default (db) => ({
|
|
|
33
33
|
};
|
|
34
34
|
},
|
|
35
35
|
async searchFeedGenerators(req) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
.selectFrom('feed_generator')
|
|
41
|
-
.if(!!query, (q) => q.where('displayName', 'ilike', `%${query}%`))
|
|
42
|
-
.selectAll();
|
|
43
|
-
const keyset = new TimeCidKeyset(ref('feed_generator.createdAt'), ref('feed_generator.cid'));
|
|
44
|
-
builder = paginate(builder, { limit, keyset });
|
|
45
|
-
const feeds = await builder.execute();
|
|
36
|
+
return searchFeedGeneratorsImpl(db, req.query, req.limit);
|
|
37
|
+
},
|
|
38
|
+
async searchFeedGeneratorsV2(req) {
|
|
39
|
+
const { uris, cursor } = await searchFeedGeneratorsImpl(db, req.params?.query ?? '', req.params?.limit ?? 25);
|
|
46
40
|
return {
|
|
47
|
-
|
|
48
|
-
cursor:
|
|
41
|
+
feedGenerators: uris.map((uri) => ({ uri, score: 0 })),
|
|
42
|
+
pageInfo: { cursor: cursor ?? '', hitsTotal: 0n },
|
|
49
43
|
};
|
|
50
44
|
},
|
|
51
45
|
async getFeedGeneratorStatus() {
|
|
52
46
|
throw new Error('unimplemented');
|
|
53
47
|
},
|
|
54
48
|
});
|
|
49
|
+
const searchFeedGeneratorsImpl = async (db, query, limit) => {
|
|
50
|
+
const { ref } = db.db.dynamic;
|
|
51
|
+
const trimmed = query.trim();
|
|
52
|
+
let builder = db.db
|
|
53
|
+
.selectFrom('feed_generator')
|
|
54
|
+
.if(!!trimmed, (q) => q.where('displayName', 'ilike', `%${trimmed}%`))
|
|
55
|
+
.selectAll();
|
|
56
|
+
const keyset = new TimeCidKeyset(ref('feed_generator.createdAt'), ref('feed_generator.cid'));
|
|
57
|
+
builder = paginate(builder, { limit, keyset });
|
|
58
|
+
const feeds = await builder.execute();
|
|
59
|
+
return {
|
|
60
|
+
uris: feeds.map((f) => f.uri),
|
|
61
|
+
cursor: keyset.packFromResult(feeds),
|
|
62
|
+
};
|
|
63
|
+
};
|
|
55
64
|
//# sourceMappingURL=feed-gens.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feed-gens.js","sourceRoot":"","sources":["../../../../src/data-plane/server/routes/feed-gens.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE7D,eAAe,CAAC,EAAY,EAAwC,EAAE,CAAC,CAAC;IACtE,KAAK,CAAC,aAAa,CAAC,GAAG;QACrB,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;QAEvC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,CAAA;QAC7B,IAAI,OAAO,GAAG,EAAE,CAAC,EAAE;aAChB,UAAU,CAAC,gBAAgB,CAAC;aAC5B,SAAS,EAAE;aACX,KAAK,CAAC,wBAAwB,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;QAEjD,MAAM,MAAM,GAAG,IAAI,aAAa,CAC9B,GAAG,CAAC,0BAA0B,CAAC,EAC/B,GAAG,CAAC,oBAAoB,CAAC,CAC1B,CAAA;QACD,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE;YAC1B,KAAK;YACL,MAAM;YACN,MAAM;SACP,CAAC,CAAA;QACF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;QAErC,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YAC7B,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC;SACrC,CAAA;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,GAAG;QACzB,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,EAAE;aACtB,UAAU,CAAC,gBAAgB,CAAC;aAC5B,OAAO,CAAC,sBAAsB,EAAE,KAAK,CAAC;aACtC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;aACxE,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;aACtB,SAAS,EAAE;aACX,OAAO,EAAE,CAAA;QACZ,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YAC7B,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAE;SACvC,CAAA;IACH,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,GAAG;QAC5B,
|
|
1
|
+
{"version":3,"file":"feed-gens.js","sourceRoot":"","sources":["../../../../src/data-plane/server/routes/feed-gens.ts"],"names":[],"mappings":"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","sourcesContent":["import { ServiceImpl } from '@connectrpc/connect'\nimport { Service } from '../../../proto/bsky_connect.js'\nimport { Database } from '../db/index.js'\nimport { TimeCidKeyset, paginate } from '../db/pagination.js'\n\nexport default (db: Database): Partial<ServiceImpl<typeof Service>> => ({\n async getActorFeeds(req) {\n const { actorDid, limit, cursor } = req\n\n const { ref } = db.db.dynamic\n let builder = db.db\n .selectFrom('feed_generator')\n .selectAll()\n .where('feed_generator.creator', '=', actorDid)\n\n const keyset = new TimeCidKeyset(\n ref('feed_generator.createdAt'),\n ref('feed_generator.cid'),\n )\n builder = paginate(builder, {\n limit,\n cursor,\n keyset,\n })\n const feeds = await builder.execute()\n\n return {\n uris: feeds.map((f) => f.uri),\n cursor: keyset.packFromResult(feeds),\n }\n },\n\n async getSuggestedFeeds(req) {\n const feeds = await db.db\n .selectFrom('suggested_feed')\n .orderBy('suggested_feed.order', 'asc')\n .if(!!req.cursor, (q) => q.where('order', '>', parseInt(req.cursor, 10)))\n .limit(req.limit || 50)\n .selectAll()\n .execute()\n return {\n uris: feeds.map((f) => f.uri),\n cursor: feeds.at(-1)?.order.toString(),\n }\n },\n\n async searchFeedGenerators(req) {\n return searchFeedGeneratorsImpl(db, req.query, req.limit)\n },\n\n async searchFeedGeneratorsV2(req) {\n const { uris, cursor } = await searchFeedGeneratorsImpl(\n db,\n req.params?.query ?? '',\n req.params?.limit ?? 25,\n )\n return {\n feedGenerators: uris.map((uri) => ({ uri, score: 0 })),\n pageInfo: { cursor: cursor ?? '', hitsTotal: 0n },\n }\n },\n\n async getFeedGeneratorStatus() {\n throw new Error('unimplemented')\n },\n})\n\nconst searchFeedGeneratorsImpl = async (\n db: Database,\n query: string,\n limit: number,\n) => {\n const { ref } = db.db.dynamic\n const trimmed = query.trim()\n let builder = db.db\n .selectFrom('feed_generator')\n .if(!!trimmed, (q) => q.where('displayName', 'ilike', `%${trimmed}%`))\n .selectAll()\n const keyset = new TimeCidKeyset(\n ref('feed_generator.createdAt'),\n ref('feed_generator.cid'),\n )\n builder = paginate(builder, { limit, keyset })\n const feeds = await builder.execute()\n return {\n uris: feeds.map((f) => f.uri),\n cursor: keyset.packFromResult(feeds),\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/routes/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;yBAQzB,IAAI,QAAQ,KAAG,OAAO,CAAC,WAAW,CAAC,OAAO,OAAO,CAAC,CAAC;AAAnE,
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/routes/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;yBAQzB,IAAI,QAAQ,KAAG,OAAO,CAAC,WAAW,CAAC,OAAO,OAAO,CAAC,CAAC;AAAnE,wBAsKC"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { IndexedAtDidKeyset, TimeCidKeyset, paginate, } from '../db/pagination.js';
|
|
2
2
|
import { parsePostSearchQuery } from '../util.js';
|
|
3
|
-
export default (db) =>
|
|
4
|
-
|
|
5
|
-
async searchActors(req) {
|
|
3
|
+
export default (db) => {
|
|
4
|
+
const searchActorsImpl = async (req) => {
|
|
6
5
|
const { term, limit, cursor } = req;
|
|
7
6
|
const { ref } = db.db.dynamic;
|
|
8
7
|
let builder = db.db
|
|
@@ -21,9 +20,8 @@ export default (db) => ({
|
|
|
21
20
|
dids: res.map((row) => row.did),
|
|
22
21
|
cursor: keyset.packFromResult(res),
|
|
23
22
|
};
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
async searchPosts(req) {
|
|
23
|
+
};
|
|
24
|
+
const searchPostsImpl = async (req) => {
|
|
27
25
|
const { term, limit, cursor } = req;
|
|
28
26
|
const { q, author } = parsePostSearchQuery(term);
|
|
29
27
|
let authorDid = author;
|
|
@@ -55,8 +53,8 @@ export default (db) => ({
|
|
|
55
53
|
uris: res.map((row) => row.uri),
|
|
56
54
|
cursor: keyset.packFromResult(res),
|
|
57
55
|
};
|
|
58
|
-
}
|
|
59
|
-
async
|
|
56
|
+
};
|
|
57
|
+
const searchStarterPacksImpl = async (req) => {
|
|
60
58
|
const { term, limit, cursor } = req;
|
|
61
59
|
const { ref } = db.db.dynamic;
|
|
62
60
|
let builder = db.db
|
|
@@ -71,13 +69,65 @@ export default (db) => ({
|
|
|
71
69
|
tryIndex: true,
|
|
72
70
|
});
|
|
73
71
|
const res = await builder.execute();
|
|
74
|
-
const cur = keyset.packFromResult(res);
|
|
75
72
|
return {
|
|
76
73
|
uris: res.map((row) => row.uri),
|
|
77
|
-
cursor:
|
|
74
|
+
cursor: keyset.packFromResult(res),
|
|
78
75
|
};
|
|
79
|
-
}
|
|
80
|
-
|
|
76
|
+
};
|
|
77
|
+
return {
|
|
78
|
+
// @TODO actor search endpoints still fall back to search service
|
|
79
|
+
searchActors: searchActorsImpl,
|
|
80
|
+
// @TODO post search endpoint still falls back to search service
|
|
81
|
+
searchPosts: searchPostsImpl,
|
|
82
|
+
searchStarterPacks: searchStarterPacksImpl,
|
|
83
|
+
// V2 endpoints reuse the V1 SQL for dev env and reshape the response.
|
|
84
|
+
async searchActorsV2(req) {
|
|
85
|
+
const { dids, cursor } = await searchActorsImpl({
|
|
86
|
+
term: req.params?.query ?? '',
|
|
87
|
+
limit: req.params?.limit ?? 25,
|
|
88
|
+
cursor: req.params?.cursor,
|
|
89
|
+
});
|
|
90
|
+
return {
|
|
91
|
+
actors: dids.map((did) => ({ did, score: 0 })),
|
|
92
|
+
pageInfo: { cursor: cursor ?? '', hitsTotal: 0n },
|
|
93
|
+
};
|
|
94
|
+
},
|
|
95
|
+
async searchActorsTypeahead(req) {
|
|
96
|
+
const { dids } = await searchActorsImpl({
|
|
97
|
+
term: req.query,
|
|
98
|
+
limit: req.limit || 10,
|
|
99
|
+
});
|
|
100
|
+
return {
|
|
101
|
+
actors: dids.map((did) => ({ did, score: 0 })),
|
|
102
|
+
};
|
|
103
|
+
},
|
|
104
|
+
async searchPostsV2(req) {
|
|
105
|
+
const author = req.filters?.authors?.[0];
|
|
106
|
+
const baseQuery = req.params?.query ?? '';
|
|
107
|
+
const term = author ? `${baseQuery} from:${author}` : baseQuery;
|
|
108
|
+
const { uris, cursor } = await searchPostsImpl({
|
|
109
|
+
term,
|
|
110
|
+
limit: req.params?.limit ?? 25,
|
|
111
|
+
cursor: req.params?.cursor,
|
|
112
|
+
});
|
|
113
|
+
return {
|
|
114
|
+
posts: uris.map((uri) => ({ uri, score: 0 })),
|
|
115
|
+
pageInfo: { cursor: cursor ?? '', hitsTotal: 0n },
|
|
116
|
+
};
|
|
117
|
+
},
|
|
118
|
+
async searchStarterPacksV2(req) {
|
|
119
|
+
const { uris, cursor } = await searchStarterPacksImpl({
|
|
120
|
+
term: req.params?.query ?? '',
|
|
121
|
+
limit: req.params?.limit ?? 25,
|
|
122
|
+
cursor: req.params?.cursor,
|
|
123
|
+
});
|
|
124
|
+
return {
|
|
125
|
+
starterPacks: uris.map((uri) => ({ uri, score: 0 })),
|
|
126
|
+
pageInfo: { cursor: cursor ?? '', hitsTotal: 0n },
|
|
127
|
+
};
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
};
|
|
81
131
|
// Remove leading @ in case a handle is input that way
|
|
82
132
|
const cleanQuery = (query) => query.trim().replace(/^@/g, '');
|
|
83
133
|
//# sourceMappingURL=search.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../../src/data-plane/server/routes/search.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,QAAQ,GACT,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEjD,eAAe,CAAC,EAAY,EAAwC,EAAE,
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../../src/data-plane/server/routes/search.ts"],"names":[],"mappings":"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","sourcesContent":["import { ServiceImpl } from '@connectrpc/connect'\nimport { Service } from '../../../proto/bsky_connect.js'\nimport { Database } from '../db/index.js'\nimport {\n IndexedAtDidKeyset,\n TimeCidKeyset,\n paginate,\n} from '../db/pagination.js'\nimport { parsePostSearchQuery } from '../util.js'\n\nexport default (db: Database): Partial<ServiceImpl<typeof Service>> => {\n const searchActorsImpl = async (req: {\n term: string\n limit: number\n cursor?: string\n }) => {\n const { term, limit, cursor } = req\n const { ref } = db.db.dynamic\n let builder = db.db\n .selectFrom('actor')\n .where('actor.handle', 'like', `%${cleanQuery(term)}%`)\n .selectAll()\n\n const keyset = new IndexedAtDidKeyset(\n ref('actor.indexedAt'),\n ref('actor.did'),\n )\n builder = paginate(builder, {\n limit,\n cursor,\n keyset,\n tryIndex: true,\n })\n\n const res = await builder.execute()\n\n return {\n dids: res.map((row) => row.did),\n cursor: keyset.packFromResult(res),\n }\n }\n\n const searchPostsImpl = async (req: {\n term: string\n limit: number\n cursor?: string\n }) => {\n const { term, limit, cursor } = req\n const { q, author } = parsePostSearchQuery(term)\n\n let authorDid = author\n if (author && !author?.startsWith('did:')) {\n const res = await db.db\n .selectFrom('actor')\n .where('handle', '=', author)\n .selectAll()\n .executeTakeFirst()\n authorDid = res?.did\n }\n\n const { ref } = db.db.dynamic\n let builder = db.db\n .selectFrom('post')\n .where('post.text', 'like', `%${q}%`)\n .selectAll()\n\n if (authorDid) {\n builder = builder.where('post.creator', '=', authorDid)\n }\n\n const keyset = new TimeCidKeyset(ref('post.sortAt'), ref('post.cid'))\n builder = paginate(builder, {\n limit,\n cursor,\n keyset,\n tryIndex: true,\n })\n\n const res = await builder.execute()\n return {\n uris: res.map((row) => row.uri),\n cursor: keyset.packFromResult(res),\n }\n }\n\n const searchStarterPacksImpl = async (req: {\n term: string\n limit: number\n cursor?: string\n }) => {\n const { term, limit, cursor } = req\n const { ref } = db.db.dynamic\n let builder = db.db\n .selectFrom('starter_pack')\n .where('starter_pack.name', 'ilike', `%${term}%`)\n .selectAll()\n\n const keyset = new TimeCidKeyset(\n ref('starter_pack.sortAt'),\n ref('starter_pack.cid'),\n )\n\n builder = paginate(builder, {\n limit,\n cursor,\n keyset,\n tryIndex: true,\n })\n\n const res = await builder.execute()\n\n return {\n uris: res.map((row) => row.uri),\n cursor: keyset.packFromResult(res),\n }\n }\n\n return {\n // @TODO actor search endpoints still fall back to search service\n searchActors: searchActorsImpl,\n\n // @TODO post search endpoint still falls back to search service\n searchPosts: searchPostsImpl,\n\n searchStarterPacks: searchStarterPacksImpl,\n\n // V2 endpoints reuse the V1 SQL for dev env and reshape the response.\n async searchActorsV2(req) {\n const { dids, cursor } = await searchActorsImpl({\n term: req.params?.query ?? '',\n limit: req.params?.limit ?? 25,\n cursor: req.params?.cursor,\n })\n return {\n actors: dids.map((did) => ({ did, score: 0 })),\n pageInfo: { cursor: cursor ?? '', hitsTotal: 0n },\n }\n },\n\n async searchActorsTypeahead(req) {\n const { dids } = await searchActorsImpl({\n term: req.query,\n limit: req.limit || 10,\n })\n return {\n actors: dids.map((did) => ({ did, score: 0 })),\n }\n },\n\n async searchPostsV2(req) {\n const author = req.filters?.authors?.[0]\n const baseQuery = req.params?.query ?? ''\n const term = author ? `${baseQuery} from:${author}` : baseQuery\n const { uris, cursor } = await searchPostsImpl({\n term,\n limit: req.params?.limit ?? 25,\n cursor: req.params?.cursor,\n })\n return {\n posts: uris.map((uri) => ({ uri, score: 0 })),\n pageInfo: { cursor: cursor ?? '', hitsTotal: 0n },\n }\n },\n\n async searchStarterPacksV2(req) {\n const { uris, cursor } = await searchStarterPacksImpl({\n term: req.params?.query ?? '',\n limit: req.params?.limit ?? 25,\n cursor: req.params?.cursor,\n })\n return {\n starterPacks: uris.map((uri) => ({ uri, score: 0 })),\n pageInfo: { cursor: cursor ?? '', hitsTotal: 0n },\n }\n },\n }\n}\n\n// Remove leading @ in case a handle is input that way\nconst cleanQuery = (query: string) => query.trim().replace(/^@/g, '')\n"]}
|
|
@@ -11,6 +11,7 @@ export declare enum Gate {
|
|
|
11
11
|
SuggestedUsersForExploreEnable = "suggested_users:for_explore:enable",
|
|
12
12
|
SuggestedUsersForDiscoverEnable = "suggested_users:for_discover:enable",
|
|
13
13
|
SuggestedUsersForSeeMoreEnable = "suggested_users:for_see_more:enable",
|
|
14
|
+
SearchV2Enable = "search:v2:enable",
|
|
14
15
|
AATest = "aa-test-appview"
|
|
15
16
|
}
|
|
16
17
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gates.d.ts","sourceRoot":"","sources":["../../src/feature-gates/gates.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,oBAAY,IAAI;IACd,4BAA4B,0CAA0C;IACtE,+BAA+B,wCAAwC;IACvE,oCAAoC,6CAA6C;IACjF,gCAAgC,wCAAwC;IACxE,8BAA8B,uCAAuC;IACrE,+BAA+B,wCAAwC;IACvE,8BAA8B,wCAAwC;
|
|
1
|
+
{"version":3,"file":"gates.d.ts","sourceRoot":"","sources":["../../src/feature-gates/gates.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,oBAAY,IAAI;IACd,4BAA4B,0CAA0C;IACtE,+BAA+B,wCAAwC;IACvE,oCAAoC,6CAA6C;IACjF,gCAAgC,wCAAwC;IACxE,8BAA8B,uCAAuC;IACrE,+BAA+B,wCAAwC;IACvE,8BAA8B,wCAAwC;IACtE,cAAc,qBAAqB;IAGnC,MAAM,oBAAoB;CAC3B;AAED;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,GAAG,CAAC,IAAI,CAAe,CAAA"}
|
|
@@ -12,6 +12,7 @@ export var Gate;
|
|
|
12
12
|
Gate["SuggestedUsersForExploreEnable"] = "suggested_users:for_explore:enable";
|
|
13
13
|
Gate["SuggestedUsersForDiscoverEnable"] = "suggested_users:for_discover:enable";
|
|
14
14
|
Gate["SuggestedUsersForSeeMoreEnable"] = "suggested_users:for_see_more:enable";
|
|
15
|
+
Gate["SearchV2Enable"] = "search:v2:enable";
|
|
15
16
|
// temp
|
|
16
17
|
Gate["AATest"] = "aa-test-appview";
|
|
17
18
|
})(Gate || (Gate = {}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gates.js","sourceRoot":"","sources":["../../src/feature-gates/gates.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"gates.js","sourceRoot":"","sources":["../../src/feature-gates/gates.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAN,IAAY,IAYX;AAZD,WAAY,IAAI;IACd,8EAAsE,CAAA;IACtE,+EAAuE,CAAA;IACvE,yFAAiF,CAAA;IACjF,gFAAwE,CAAA;IACxE,6EAAqE,CAAA;IACrE,+EAAuE,CAAA;IACvE,8EAAsE,CAAA;IACtE,2CAAmC,CAAA;IAEnC,OAAO;IACP,kCAA0B,CAAA;AAC5B,CAAC,EAZW,IAAI,KAAJ,IAAI,QAYf;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAc,IAAI,GAAG,CAAC,EAAE,CAAC,CAAA","sourcesContent":["/**\n * Enum of all gates in the system. This should be the single source of truth\n * for all gates, and should be used in all places where gates are checked or\n * defined.\n */\nexport enum Gate {\n SuggestedUsersDiscoverEnable = 'suggested_users:discover_agent:enable',\n SuggestedUsersSocialProofEnable = 'suggested_users:social_proof:enable',\n ThreadsReplyRankingExplorationEnable = 'threads:reply_ranking_exploration:enable',\n SearchFilteringExplorationEnable = 'search:filtering_exploration:enable',\n SuggestedUsersForExploreEnable = 'suggested_users:for_explore:enable',\n SuggestedUsersForDiscoverEnable = 'suggested_users:for_discover:enable',\n SuggestedUsersForSeeMoreEnable = 'suggested_users:for_see_more:enable',\n SearchV2Enable = 'search:v2:enable',\n\n // temp\n AATest = 'aa-test-appview',\n}\n\n/**\n * Set of gates that should be ignored when tracking gate evaluations for\n * analytics purposes. This is useful for gates that are not user-facing or are\n * overly noisy.\n */\nexport const IGNORE_METRICS_FOR_GATES: Set<Gate> = new Set([])\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydrator.d.ts","sourceRoot":"","sources":["../../src/hydration/hydrator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hydrator.d.ts","sourceRoot":"","sources":["../../src/hydration/hydrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import assert from 'node:assert';
|
|
2
2
|
import { dedupeStrs, mapDefined } from '@atproto/common';
|
|
3
|
+
import { atUri } from '@atproto/lex';
|
|
3
4
|
import { AtUri } from '@atproto/syntax';
|
|
4
5
|
import { app, chat, com } from '../lexicons/index.js';
|
|
5
6
|
import { hydrationLogger } from '../logger.js';
|
|
@@ -1070,8 +1071,8 @@ const isModList = (listUri, state) => {
|
|
|
1070
1071
|
const labelSubjectsForDid = (dids) => {
|
|
1071
1072
|
return [
|
|
1072
1073
|
...dids,
|
|
1073
|
-
...dids.map((did) =>
|
|
1074
|
-
...dids.map((did) =>
|
|
1074
|
+
...dids.map((did) => atUri(did, app.bsky.actor.profile)),
|
|
1075
|
+
...dids.map((did) => atUri(did, app.bsky.actor.status)),
|
|
1075
1076
|
];
|
|
1076
1077
|
};
|
|
1077
1078
|
const rootUrisFromPosts = (posts) => {
|