@atproto/bsky 0.0.274 → 0.0.276
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +41 -0
- package/dist/api/app/bsky/feed/getActorLikes.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getActorLikes.js +5 -1
- package/dist/api/app/bsky/feed/getActorLikes.js.map +1 -1
- package/dist/api/app/bsky/feed/getAuthorFeed.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getAuthorFeed.js +7 -1
- package/dist/api/app/bsky/feed/getAuthorFeed.js.map +1 -1
- package/dist/api/app/bsky/feed/getFeed.d.ts +7 -0
- package/dist/api/app/bsky/feed/getFeed.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getFeed.js +14 -1
- package/dist/api/app/bsky/feed/getFeed.js.map +1 -1
- package/dist/api/app/bsky/feed/getListFeed.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getListFeed.js +5 -1
- package/dist/api/app/bsky/feed/getListFeed.js.map +1 -1
- package/dist/api/app/bsky/feed/getTimeline.d.ts.map +1 -1
- package/dist/api/app/bsky/feed/getTimeline.js +11 -2
- package/dist/api/app/bsky/feed/getTimeline.js.map +1 -1
- package/dist/api/app/bsky/unspecced/getPostThreadV2.js +5 -1
- package/dist/api/app/bsky/unspecced/getPostThreadV2.js.map +1 -1
- package/dist/auth-verifier.d.ts.map +1 -1
- package/dist/auth-verifier.js +16 -9
- package/dist/auth-verifier.js.map +1 -1
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +10 -0
- package/dist/config.js.map +1 -1
- package/dist/data-plane/client/index.js +2 -2
- package/dist/data-plane/client/index.js.map +1 -1
- package/dist/data-plane/client/util.d.ts +1 -0
- package/dist/data-plane/client/util.d.ts.map +1 -1
- package/dist/data-plane/client/util.js +45 -0
- package/dist/data-plane/client/util.js.map +1 -1
- package/dist/data-plane/server/db/migrations/20260819T170000000Z-add-like-subject-sort-index.d.ts +4 -0
- package/dist/data-plane/server/db/migrations/20260819T170000000Z-add-like-subject-sort-index.d.ts.map +1 -0
- package/dist/data-plane/server/db/migrations/20260819T170000000Z-add-like-subject-sort-index.js +12 -0
- package/dist/data-plane/server/db/migrations/20260819T170000000Z-add-like-subject-sort-index.js.map +1 -0
- package/dist/data-plane/server/db/migrations/index.d.ts +1 -0
- package/dist/data-plane/server/db/migrations/index.d.ts.map +1 -1
- package/dist/data-plane/server/db/migrations/index.js +1 -0
- package/dist/data-plane/server/db/migrations/index.js.map +1 -1
- package/dist/data-plane/server/routes/likes.d.ts.map +1 -1
- package/dist/data-plane/server/routes/likes.js +46 -0
- package/dist/data-plane/server/routes/likes.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/actor.d.ts +5 -0
- package/dist/hydration/actor.d.ts.map +1 -1
- package/dist/hydration/actor.js.map +1 -1
- package/dist/hydration/hydrator.d.ts +16 -4
- package/dist/hydration/hydrator.d.ts.map +1 -1
- package/dist/hydration/hydrator.js +70 -6
- package/dist/hydration/hydrator.js.map +1 -1
- package/dist/lexicons/app/bsky/actor/status.defs.d.ts +5 -3
- package/dist/lexicons/app/bsky/actor/status.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/actor/status.defs.js +3 -0
- package/dist/lexicons/app/bsky/actor/status.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 -4
- package/dist/lexicons/app/bsky/embed/video.defs.js.map +1 -1
- package/dist/lexicons/app/bsky/feed/defs.defs.d.ts +84 -42
- package/dist/lexicons/app/bsky/feed/defs.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/feed/defs.defs.js +52 -0
- package/dist/lexicons/app/bsky/feed/defs.defs.js.map +1 -1
- package/dist/lexicons/app/bsky/graph/defs.defs.d.ts +15 -9
- package/dist/lexicons/app/bsky/graph/defs.defs.d.ts.map +1 -1
- package/dist/lexicons/app/bsky/graph/defs.defs.js +9 -0
- package/dist/lexicons/app/bsky/graph/defs.defs.js.map +1 -1
- package/dist/lexicons/com/atproto/moderation/defs.defs.d.ts +35 -21
- package/dist/lexicons/com/atproto/moderation/defs.defs.d.ts.map +1 -1
- package/dist/lexicons/com/atproto/moderation/defs.defs.js +21 -0
- package/dist/lexicons/com/atproto/moderation/defs.defs.js.map +1 -1
- package/dist/lexicons/tools/ozone/moderation/defs.defs.d.ts +35 -21
- package/dist/lexicons/tools/ozone/moderation/defs.defs.d.ts.map +1 -1
- package/dist/lexicons/tools/ozone/moderation/defs.defs.js +21 -0
- package/dist/lexicons/tools/ozone/moderation/defs.defs.js.map +1 -1
- package/dist/lexicons/tools/ozone/report/defs.defs.d.ts +200 -120
- package/dist/lexicons/tools/ozone/report/defs.defs.d.ts.map +1 -1
- package/dist/lexicons/tools/ozone/report/defs.defs.js +126 -0
- package/dist/lexicons/tools/ozone/report/defs.defs.js.map +1 -1
- package/dist/lexicons/tools/ozone/team/defs.defs.d.ts +20 -12
- package/dist/lexicons/tools/ozone/team/defs.defs.d.ts.map +1 -1
- package/dist/lexicons/tools/ozone/team/defs.defs.js +12 -0
- package/dist/lexicons/tools/ozone/team/defs.defs.js.map +1 -1
- package/dist/proto/bsky_connect.d.ts +10 -1
- package/dist/proto/bsky_connect.d.ts.map +1 -1
- package/dist/proto/bsky_connect.js +10 -1
- package/dist/proto/bsky_connect.js.map +1 -1
- package/dist/proto/bsky_pb.d.ts +67 -0
- package/dist/proto/bsky_pb.d.ts.map +1 -1
- package/dist/proto/bsky_pb.js +110 -0
- package/dist/proto/bsky_pb.js.map +1 -1
- package/dist/telemetry.d.ts +2 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +7 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/views/index.d.ts +6 -2
- package/dist/views/index.d.ts.map +1 -1
- package/dist/views/index.js +26 -10
- package/dist/views/index.js.map +1 -1
- package/dist/views/types.d.ts +1 -0
- package/dist/views/types.d.ts.map +1 -1
- package/dist/views/types.js.map +1 -1
- package/package.json +20 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/data-plane/client/util.ts"],"names":[],"mappings":"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","sourcesContent":["import { Code, ConnectError, type Interceptor } from '@connectrpc/connect'\nimport * as ui8 from 'uint8arrays'\nimport { getDidKeyFromMultibase } from '@atproto/identity'\nimport { InvalidRequestError } from '@atproto/xrpc-server'\n\nexport const callerInterceptor =\n (caller: string): Interceptor =>\n (next) =>\n (req) => {\n req.header.set('x-atlantis-caller', caller)\n return next(req)\n }\n\nexport const isDataplaneError = (\n err: unknown,\n code?: Code,\n): err is ConnectError => {\n if (err instanceof ConnectError) {\n return !code || err.code === code\n }\n return false\n}\n\n// Rethrows a dataplane InvalidArgument error as a client-facing 400, with an\n// optional message. Use as a `.catch()` handler on a dataplane call whose args\n// come from user input. Returns `never`, so the awaited result keeps its type.\n// Any other error passes through unchanged.\nexport const asInvalidRequest =\n (message = 'Invalid request') =>\n (err: unknown): never => {\n if (isDataplaneError(err, Code.InvalidArgument)) {\n throw new InvalidRequestError(message)\n }\n throw err\n }\n\nexport const unpackIdentityServices = (servicesBytes: Uint8Array) => {\n const servicesStr = ui8.toString(servicesBytes, 'utf8')\n if (!servicesStr) return {}\n return JSON.parse(servicesStr) as UnpackedServices\n}\n\nexport const unpackIdentityKeys = (keysBytes: Uint8Array) => {\n const keysStr = ui8.toString(keysBytes, 'utf8')\n if (!keysStr) return {}\n return JSON.parse(keysStr) as UnpackedKeys\n}\n\nexport const getServiceEndpoint = (\n services: UnpackedServices,\n opts: { id: string; type: string },\n) => {\n const endpoint =\n services[opts.id] &&\n services[opts.id].Type === opts.type &&\n validateUrl(services[opts.id].URL)\n return endpoint || undefined\n}\n\nexport const getKeyAsDidKey = (keys: UnpackedKeys, opts: { id: string }) => {\n const key =\n keys[opts.id] &&\n getDidKeyFromMultibase({\n type: keys[opts.id].Type,\n publicKeyMultibase: keys[opts.id].PublicKeyMultibase,\n })\n return key || undefined\n}\n\ntype UnpackedServices = Record<string, { Type: string; URL: string }>\n\ntype UnpackedKeys = Record<string, { Type: string; PublicKeyMultibase: string }>\n\nconst validateUrl = (urlStr: string): string | undefined => {\n let url\n try {\n url = new URL(urlStr)\n } catch {\n return undefined\n }\n if (!['http:', 'https:'].includes(url.protocol)) {\n return undefined\n } else if (!url.hostname) {\n return undefined\n } else {\n return urlStr\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/data-plane/client/util.ts"],"names":[],"mappings":"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","sourcesContent":["import { performance } from 'node:perf_hooks'\nimport { Code, ConnectError, type Interceptor } from '@connectrpc/connect'\nimport {\n type Attributes,\n SpanKind,\n SpanStatusCode,\n type TextMapSetter,\n ValueType,\n context,\n metrics,\n propagation,\n trace,\n} from '@opentelemetry/api'\nimport * as ui8 from 'uint8arrays'\nimport { getDidKeyFromMultibase } from '@atproto/identity'\nimport { InvalidRequestError } from '@atproto/xrpc-server'\n\nconst tracer = trace.getTracer('@atproto/bsky')\nconst meter = metrics.getMeter('@atproto/bsky')\nconst rpcClientDuration = meter.createHistogram('rpc.client.duration', {\n description: 'Measures the duration of outbound RPC requests',\n unit: 'ms',\n valueType: ValueType.DOUBLE,\n})\n\nconst headersSetter: TextMapSetter<Headers> = {\n set(carrier, key, value) {\n carrier.set(key, value)\n },\n}\n\nexport const otelInterceptor: Interceptor = (next) => async (req) => {\n const attributes: Attributes = {\n 'rpc.system': 'grpc',\n 'rpc.service': req.service.typeName,\n 'rpc.method': req.method.name,\n }\n const spanName = `${req.service.typeName}/${req.method.name}`\n const start = performance.now()\n\n return tracer.startActiveSpan(\n spanName,\n { kind: SpanKind.CLIENT, attributes },\n async (span) => {\n propagation.inject(context.active(), req.header, headersSetter)\n let statusCode = 0\n try {\n return await next(req)\n } catch (err) {\n statusCode = err instanceof ConnectError ? err.code : Code.Unknown\n span.setStatus({ code: SpanStatusCode.ERROR })\n span.recordException(err instanceof Error ? err : String(err))\n throw err\n } finally {\n const completedAttributes = {\n ...attributes,\n 'rpc.grpc.status_code': statusCode,\n }\n span.setAttributes(completedAttributes)\n rpcClientDuration.record(performance.now() - start, completedAttributes)\n span.end()\n }\n },\n )\n}\n\nexport const callerInterceptor =\n (caller: string): Interceptor =>\n (next) =>\n (req) => {\n req.header.set('x-atlantis-caller', caller)\n return next(req)\n }\n\nexport const isDataplaneError = (\n err: unknown,\n code?: Code,\n): err is ConnectError => {\n if (err instanceof ConnectError) {\n return !code || err.code === code\n }\n return false\n}\n\n// Rethrows a dataplane InvalidArgument error as a client-facing 400, with an\n// optional message. Use as a `.catch()` handler on a dataplane call whose args\n// come from user input. Returns `never`, so the awaited result keeps its type.\n// Any other error passes through unchanged.\nexport const asInvalidRequest =\n (message = 'Invalid request') =>\n (err: unknown): never => {\n if (isDataplaneError(err, Code.InvalidArgument)) {\n throw new InvalidRequestError(message)\n }\n throw err\n }\n\nexport const unpackIdentityServices = (servicesBytes: Uint8Array) => {\n const servicesStr = ui8.toString(servicesBytes, 'utf8')\n if (!servicesStr) return {}\n return JSON.parse(servicesStr) as UnpackedServices\n}\n\nexport const unpackIdentityKeys = (keysBytes: Uint8Array) => {\n const keysStr = ui8.toString(keysBytes, 'utf8')\n if (!keysStr) return {}\n return JSON.parse(keysStr) as UnpackedKeys\n}\n\nexport const getServiceEndpoint = (\n services: UnpackedServices,\n opts: { id: string; type: string },\n) => {\n const endpoint =\n services[opts.id] &&\n services[opts.id].Type === opts.type &&\n validateUrl(services[opts.id].URL)\n return endpoint || undefined\n}\n\nexport const getKeyAsDidKey = (keys: UnpackedKeys, opts: { id: string }) => {\n const key =\n keys[opts.id] &&\n getDidKeyFromMultibase({\n type: keys[opts.id].Type,\n publicKeyMultibase: keys[opts.id].PublicKeyMultibase,\n })\n return key || undefined\n}\n\ntype UnpackedServices = Record<string, { Type: string; URL: string }>\n\ntype UnpackedKeys = Record<string, { Type: string; PublicKeyMultibase: string }>\n\nconst validateUrl = (urlStr: string): string | undefined => {\n let url\n try {\n url = new URL(urlStr)\n } catch {\n return undefined\n }\n if (!['http:', 'https:'].includes(url.protocol)) {\n return undefined\n } else if (!url.hostname) {\n return undefined\n } else {\n return urlStr\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260819T170000000Z-add-like-subject-sort-index.d.ts","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/migrations/20260819T170000000Z-add-like-subject-sort-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAO,MAAM,QAAQ,CAAA;AAEzC,wBAAsB,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAM3D;AAED,wBAAsB,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7D"}
|
package/dist/data-plane/server/db/migrations/20260819T170000000Z-add-like-subject-sort-index.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { sql } from 'kysely';
|
|
2
|
+
export async function up(db) {
|
|
3
|
+
await sql `
|
|
4
|
+
CREATE INDEX like_subject_sort_at_creator_idx
|
|
5
|
+
ON "like" ("subject", "sortAt" DESC)
|
|
6
|
+
INCLUDE ("creator")
|
|
7
|
+
`.execute(db);
|
|
8
|
+
}
|
|
9
|
+
export async function down(db) {
|
|
10
|
+
await db.schema.dropIndex('like_subject_sort_at_creator_idx').execute();
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=20260819T170000000Z-add-like-subject-sort-index.js.map
|
package/dist/data-plane/server/db/migrations/20260819T170000000Z-add-like-subject-sort-index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260819T170000000Z-add-like-subject-sort-index.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/migrations/20260819T170000000Z-add-like-subject-sort-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,GAAG,EAAE,MAAM,QAAQ,CAAA;AAEzC,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,EAAmB;IAC1C,MAAM,GAAG,CAAA;;;;GAIR,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,EAAmB;IAC5C,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC,OAAO,EAAE,CAAA;AACzE,CAAC","sourcesContent":["import { type Kysely, sql } from 'kysely'\n\nexport async function up(db: Kysely<unknown>): Promise<void> {\n await sql`\n CREATE INDEX like_subject_sort_at_creator_idx\n ON \"like\" (\"subject\", \"sortAt\" DESC)\n INCLUDE (\"creator\")\n `.execute(db)\n}\n\nexport async function down(db: Kysely<unknown>): Promise<void> {\n await db.schema.dropIndex('like_subject_sort_at_creator_idx').execute()\n}\n"]}
|
|
@@ -56,4 +56,5 @@ export * as _20260112T133951271Z from './20260112T133951271Z-add-drafts.js';
|
|
|
56
56
|
export * as _20260604T224952774Z from './20260604T224952774Z-post-embed-gallery-image.js';
|
|
57
57
|
export * as _20260618T200000000Z from './20260618T200000000Z-add-mute-scope.js';
|
|
58
58
|
export * as _20260729T223157563Z from './20260729T223157563Z-add-op-thread-reply.js';
|
|
59
|
+
export * as _20260819T170000000Z from './20260819T170000000Z-add-like-subject-sort-index.js';
|
|
59
60
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/migrations/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/migrations/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,4 +59,5 @@ export * as _20260112T133951271Z from './20260112T133951271Z-add-drafts.js';
|
|
|
59
59
|
export * as _20260604T224952774Z from './20260604T224952774Z-post-embed-gallery-image.js';
|
|
60
60
|
export * as _20260618T200000000Z from './20260618T200000000Z-add-mute-scope.js';
|
|
61
61
|
export * as _20260729T223157563Z from './20260729T223157563Z-add-op-thread-reply.js';
|
|
62
|
+
export * as _20260819T170000000Z from './20260819T170000000Z-add-like-subject-sort-index.js';
|
|
62
63
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/migrations/index.ts"],"names":[],"mappings":"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","sourcesContent":["// NOTE this file can be edited by hand, but it is also appended to by the migration:create command.\n// It's important that every migration is exported from here with the proper name. We'd simplify\n// this with kysely's FileMigrationProvider, but it doesn't play nicely with the build process.\n\nexport * as _20230309T045948368Z from './20230309T045948368Z-init.js'\nexport * as _20230408T152211201Z from './20230408T152211201Z-notification-init.js'\nexport * as _20230417T210628672Z from './20230417T210628672Z-moderation-init.js'\nexport * as _20230420T211446071Z from './20230420T211446071Z-did-cache.js'\nexport * as _20230427T194702079Z from './20230427T194702079Z-notif-record-index.js'\nexport * as _20230605T144730094Z from './20230605T144730094Z-post-profile-aggs.js'\nexport * as _20230607T211442112Z from './20230607T211442112Z-feed-generator-init.js'\nexport * as _20230608T155101190Z from './20230608T155101190Z-algo-whats-hot-view.js'\nexport * as _20230608T201813132Z from './20230608T201813132Z-mute-lists.js'\nexport * as _20230608T205147239Z from './20230608T205147239Z-mutes.js'\nexport * as _20230609T153623961Z from './20230609T153623961Z-blocks.js'\nexport * as _20230609T232122649Z from './20230609T232122649Z-actor-deletion-indexes.js'\nexport * as _20230610T203555962Z from './20230610T203555962Z-suggested-follows.js'\nexport * as _20230611T215300060Z from './20230611T215300060Z-actor-state.js'\nexport * as _20230620T161134972Z from './20230620T161134972Z-post-langs.js'\nexport * as _20230627T212437895Z from './20230627T212437895Z-optional-handle.js'\nexport * as _20230629T220835893Z from './20230629T220835893Z-remove-post-hierarchy.js'\nexport * as _20230703T045536691Z from './20230703T045536691Z-feed-and-label-indices.js'\nexport * as _20230720T164800037Z from './20230720T164800037Z-posts-cursor-idx.js'\nexport * as _20230807T035309811Z from './20230807T035309811Z-feed-item-delete-invite-for-user-idx.js'\nexport * as _20230808T172902639Z from './20230808T172902639Z-repo-rev.js'\nexport * as _20230810T203349843Z from './20230810T203349843Z-action-duration.js'\nexport * as _20230817T195936007Z from './20230817T195936007Z-native-notifications.js'\nexport * as _20230830T205507322Z from './20230830T205507322Z-suggested-feeds.js'\nexport * as _20230904T211011773Z from './20230904T211011773Z-block-lists.js'\nexport * as _20230906T222220386Z from './20230906T222220386Z-thread-gating.js'\nexport * as _20230920T213858047Z from './20230920T213858047Z-add-tags-to-post.js'\nexport * as _20230929T192920807Z from './20230929T192920807Z-record-cursor-indexes.js'\nexport * as _20231003T202833377Z from './20231003T202833377Z-create-moderation-subject-status.js'\nexport * as _20231220T225126090Z from './20231220T225126090Z-blob-takedowns.js'\nexport * as _20240124T023719200Z from './20240124T023719200Z-tagged-suggestions.js'\nexport * as _20240226T225725627Z from './20240226T225725627Z-labelers.js'\nexport * as _20240530T170337073Z from './20240530T170337073Z-account-deactivation.js'\nexport * as _20240606T171229898Z from './20240606T171229898Z-thread-mutes.js'\nexport * as _20240606T222548219Z from './20240606T222548219Z-starter-packs.js'\nexport * as _20240719T203853939Z from './20240719T203853939Z-priority-notifs.js'\nexport * as _20240723T220700077Z from './20240723T220700077Z-quotes-post-aggs.js'\nexport * as _20240723T220703655Z from './20240723T220703655Z-quotes.js'\nexport * as _20240801T193939827Z from './20240801T193939827Z-post-gate.js'\nexport * as _20240808T224251220Z from './20240808T224251220Z-post-gate-flags.js'\nexport * as _20240829T211238293Z from './20240829T211238293Z-simplify-actor-sync.js'\nexport * as _20240831T134810923Z from './20240831T134810923Z-pinned-posts.js'\nexport * as _20241114T153108102Z from './20241114T153108102Z-add-starter-packs-name.js'\nexport * as _20250116T222618297Z from './20250116T222618297Z-post-embed-video.js'\nexport * as _20250207T174822012Z from './20250207T174822012Z-add-label-exp.js'\nexport * as _20250404T163421487Z from './20250404T163421487Z-verifications.js'\nexport * as _20250526T023712742Z from './20250526T023712742Z-like-repost-via.js'\nexport * as _20250528T221913281Z from './20250528T221913281Z-add-record-tags.js'\nexport * as _20250602T190357447Z from './20250602T190357447Z-add-private-data.js'\nexport * as _20250611T140649895Z from './20250611T140649895Z-add-activity-subscription.js'\nexport * as _20250627T025331240Z from './20250627T025331240Z-add-actor-age-assurance-columns.js'\nexport * as _20250812T183735692Z from './20250812T183735692Z-add-bookmarks.js'\nexport * as _20250813T174955711Z from './20250813T174955711Z-add-post-agg-bookmarks.js'\nexport * as _20251120T004738098Z from './20251120T004738098Z-update-actor-age-assurance-v2.js'\nexport * as _20260112T133951271Z from './20260112T133951271Z-add-drafts.js'\nexport * as _20260604T224952774Z from './20260604T224952774Z-post-embed-gallery-image.js'\nexport * as _20260618T200000000Z from './20260618T200000000Z-add-mute-scope.js'\nexport * as _20260729T223157563Z from './20260729T223157563Z-add-op-thread-reply.js'\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/data-plane/server/db/migrations/index.ts"],"names":[],"mappings":"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","sourcesContent":["// NOTE this file can be edited by hand, but it is also appended to by the migration:create command.\n// It's important that every migration is exported from here with the proper name. We'd simplify\n// this with kysely's FileMigrationProvider, but it doesn't play nicely with the build process.\n\nexport * as _20230309T045948368Z from './20230309T045948368Z-init.js'\nexport * as _20230408T152211201Z from './20230408T152211201Z-notification-init.js'\nexport * as _20230417T210628672Z from './20230417T210628672Z-moderation-init.js'\nexport * as _20230420T211446071Z from './20230420T211446071Z-did-cache.js'\nexport * as _20230427T194702079Z from './20230427T194702079Z-notif-record-index.js'\nexport * as _20230605T144730094Z from './20230605T144730094Z-post-profile-aggs.js'\nexport * as _20230607T211442112Z from './20230607T211442112Z-feed-generator-init.js'\nexport * as _20230608T155101190Z from './20230608T155101190Z-algo-whats-hot-view.js'\nexport * as _20230608T201813132Z from './20230608T201813132Z-mute-lists.js'\nexport * as _20230608T205147239Z from './20230608T205147239Z-mutes.js'\nexport * as _20230609T153623961Z from './20230609T153623961Z-blocks.js'\nexport * as _20230609T232122649Z from './20230609T232122649Z-actor-deletion-indexes.js'\nexport * as _20230610T203555962Z from './20230610T203555962Z-suggested-follows.js'\nexport * as _20230611T215300060Z from './20230611T215300060Z-actor-state.js'\nexport * as _20230620T161134972Z from './20230620T161134972Z-post-langs.js'\nexport * as _20230627T212437895Z from './20230627T212437895Z-optional-handle.js'\nexport * as _20230629T220835893Z from './20230629T220835893Z-remove-post-hierarchy.js'\nexport * as _20230703T045536691Z from './20230703T045536691Z-feed-and-label-indices.js'\nexport * as _20230720T164800037Z from './20230720T164800037Z-posts-cursor-idx.js'\nexport * as _20230807T035309811Z from './20230807T035309811Z-feed-item-delete-invite-for-user-idx.js'\nexport * as _20230808T172902639Z from './20230808T172902639Z-repo-rev.js'\nexport * as _20230810T203349843Z from './20230810T203349843Z-action-duration.js'\nexport * as _20230817T195936007Z from './20230817T195936007Z-native-notifications.js'\nexport * as _20230830T205507322Z from './20230830T205507322Z-suggested-feeds.js'\nexport * as _20230904T211011773Z from './20230904T211011773Z-block-lists.js'\nexport * as _20230906T222220386Z from './20230906T222220386Z-thread-gating.js'\nexport * as _20230920T213858047Z from './20230920T213858047Z-add-tags-to-post.js'\nexport * as _20230929T192920807Z from './20230929T192920807Z-record-cursor-indexes.js'\nexport * as _20231003T202833377Z from './20231003T202833377Z-create-moderation-subject-status.js'\nexport * as _20231220T225126090Z from './20231220T225126090Z-blob-takedowns.js'\nexport * as _20240124T023719200Z from './20240124T023719200Z-tagged-suggestions.js'\nexport * as _20240226T225725627Z from './20240226T225725627Z-labelers.js'\nexport * as _20240530T170337073Z from './20240530T170337073Z-account-deactivation.js'\nexport * as _20240606T171229898Z from './20240606T171229898Z-thread-mutes.js'\nexport * as _20240606T222548219Z from './20240606T222548219Z-starter-packs.js'\nexport * as _20240719T203853939Z from './20240719T203853939Z-priority-notifs.js'\nexport * as _20240723T220700077Z from './20240723T220700077Z-quotes-post-aggs.js'\nexport * as _20240723T220703655Z from './20240723T220703655Z-quotes.js'\nexport * as _20240801T193939827Z from './20240801T193939827Z-post-gate.js'\nexport * as _20240808T224251220Z from './20240808T224251220Z-post-gate-flags.js'\nexport * as _20240829T211238293Z from './20240829T211238293Z-simplify-actor-sync.js'\nexport * as _20240831T134810923Z from './20240831T134810923Z-pinned-posts.js'\nexport * as _20241114T153108102Z from './20241114T153108102Z-add-starter-packs-name.js'\nexport * as _20250116T222618297Z from './20250116T222618297Z-post-embed-video.js'\nexport * as _20250207T174822012Z from './20250207T174822012Z-add-label-exp.js'\nexport * as _20250404T163421487Z from './20250404T163421487Z-verifications.js'\nexport * as _20250526T023712742Z from './20250526T023712742Z-like-repost-via.js'\nexport * as _20250528T221913281Z from './20250528T221913281Z-add-record-tags.js'\nexport * as _20250602T190357447Z from './20250602T190357447Z-add-private-data.js'\nexport * as _20250611T140649895Z from './20250611T140649895Z-add-activity-subscription.js'\nexport * as _20250627T025331240Z from './20250627T025331240Z-add-actor-age-assurance-columns.js'\nexport * as _20250812T183735692Z from './20250812T183735692Z-add-bookmarks.js'\nexport * as _20250813T174955711Z from './20250813T174955711Z-add-post-agg-bookmarks.js'\nexport * as _20251120T004738098Z from './20251120T004738098Z-update-actor-age-assurance-v2.js'\nexport * as _20260112T133951271Z from './20260112T133951271Z-add-drafts.js'\nexport * as _20260604T224952774Z from './20260604T224952774Z-post-embed-gallery-image.js'\nexport * as _20260618T200000000Z from './20260618T200000000Z-add-mute-scope.js'\nexport * as _20260729T223157563Z from './20260729T223157563Z-add-op-thread-reply.js'\nexport * as _20260819T170000000Z from './20260819T170000000Z-add-like-subject-sort-index.js'\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"likes.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/routes/likes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"likes.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/routes/likes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAGtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;;0BAG9B,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,OAAO,CAAC,CAAC"}
|
|
@@ -1,7 +1,53 @@
|
|
|
1
1
|
import assert from 'node:assert';
|
|
2
|
+
import { sql } from 'kysely';
|
|
2
3
|
import { keyBy } from '@atproto/common';
|
|
3
4
|
import { TimeCidKeyset, paginate } from '../db/pagination.js';
|
|
4
5
|
export default (db) => ({
|
|
6
|
+
async getKnownLikers(req) {
|
|
7
|
+
const { actorDid, subjectUris, limit } = req;
|
|
8
|
+
const results = subjectUris.map((subjectUri) => ({
|
|
9
|
+
subjectUri,
|
|
10
|
+
count: 0,
|
|
11
|
+
dids: [],
|
|
12
|
+
}));
|
|
13
|
+
if (limit <= 0 || subjectUris.length === 0)
|
|
14
|
+
return { results };
|
|
15
|
+
const { rows } = await sql `
|
|
16
|
+
with "rankedKnownLikers" as (
|
|
17
|
+
select
|
|
18
|
+
subjects.ordinal,
|
|
19
|
+
"recentLikes".creator,
|
|
20
|
+
count(*) over (partition by subjects.ordinal)::int as count,
|
|
21
|
+
row_number() over (
|
|
22
|
+
partition by subjects.ordinal
|
|
23
|
+
order by "recentLikes"."sortAt" desc
|
|
24
|
+
) as rank
|
|
25
|
+
from unnest(${subjectUris}::varchar[]) with ordinality
|
|
26
|
+
as subjects("subjectUri", ordinal)
|
|
27
|
+
cross join lateral (
|
|
28
|
+
select "like".creator, "like"."sortAt"
|
|
29
|
+
from "like"
|
|
30
|
+
where "like".subject = subjects."subjectUri"
|
|
31
|
+
order by "like"."sortAt" desc
|
|
32
|
+
limit 500
|
|
33
|
+
) as "recentLikes"
|
|
34
|
+
inner join follow on
|
|
35
|
+
follow."subjectDid" = "recentLikes".creator
|
|
36
|
+
and follow.creator = ${actorDid}
|
|
37
|
+
)
|
|
38
|
+
select ordinal, creator, count
|
|
39
|
+
from "rankedKnownLikers"
|
|
40
|
+
where rank <= ${limit}
|
|
41
|
+
order by ordinal, rank
|
|
42
|
+
`.execute(db.db);
|
|
43
|
+
for (const row of rows) {
|
|
44
|
+
const result = results[Number(row.ordinal) - 1];
|
|
45
|
+
assert(result);
|
|
46
|
+
result.count = row.count;
|
|
47
|
+
result.dids.push(row.creator);
|
|
48
|
+
}
|
|
49
|
+
return { results };
|
|
50
|
+
},
|
|
5
51
|
async getLikesBySubjectSorted(req) {
|
|
6
52
|
const { subject, cursor, limit } = req;
|
|
7
53
|
const { ref } = db.db.dynamic;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"likes.js","sourceRoot":"","sources":["../../../../src/data-plane/server/routes/likes.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'node:assert'\nimport type { ServiceImpl } from '@connectrpc/connect'\nimport { keyBy } from '@atproto/common'\nimport type { Service } from '../../../proto/bsky_connect.js'\nimport type { Database } from '../db/index.js'\nimport { TimeCidKeyset, paginate } from '../db/pagination.js'\n\nexport default (db: Database): Partial<ServiceImpl<typeof Service>> => ({\n async getLikesBySubjectSorted(req) {\n const { subject, cursor, limit } = req\n const { ref } = db.db.dynamic\n\n if (!subject?.uri) {\n return { uris: [] }\n }\n\n // @NOTE ignoring subject.cid\n let builder = db.db\n .selectFrom('like')\n .where('like.subject', '=', subject?.uri)\n .selectAll('like')\n\n const keyset = new TimeCidKeyset(ref('like.sortAt'), ref('like.cid'))\n builder = paginate(builder, {\n limit,\n cursor,\n keyset,\n })\n\n const page = keyset.page(await builder.execute(), limit)\n\n return {\n uris: page.items.map((l) => l.uri),\n cursor: page.cursor,\n }\n },\n\n // @NOTE deprecated in favor of getLikesBySubjectSorted\n async getLikesBySubject(req, context) {\n assert(this.getLikesBySubjectSorted)\n return this.getLikesBySubjectSorted(req, context)\n },\n\n async getLikesByActorAndSubjects(req) {\n const { actorDid, refs } = req\n if (refs.length === 0) {\n return { uris: [] }\n }\n // @NOTE ignoring ref.cid\n const res = await db.db\n .selectFrom('like')\n .where('creator', '=', actorDid)\n .where(\n 'subject',\n 'in',\n refs.map(({ uri }) => uri),\n )\n .selectAll()\n .execute()\n const bySubject = keyBy(res, 'subject')\n const uris = refs.map(({ uri }) => bySubject.get(uri)?.uri ?? '')\n return { uris }\n },\n\n async getActorLikes(req) {\n const { actorDid, limit, cursor } = req\n const { ref } = db.db.dynamic\n\n let builder = db.db\n .selectFrom('like')\n .where('like.creator', '=', actorDid)\n .selectAll()\n\n const keyset = new TimeCidKeyset(ref('like.sortAt'), ref('like.cid'))\n\n builder = paginate(builder, {\n limit,\n cursor,\n keyset,\n })\n\n const page = keyset.page(await builder.execute(), limit)\n\n return {\n likes: page.items.map((l) => ({\n uri: l.uri,\n subject: l.subject,\n })),\n cursor: page.cursor,\n }\n },\n})\n"]}
|
|
1
|
+
{"version":3,"file":"likes.js","sourceRoot":"","sources":["../../../../src/data-plane/server/routes/likes.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'node:assert'\nimport type { ServiceImpl } from '@connectrpc/connect'\nimport { sql } from 'kysely'\nimport { keyBy } from '@atproto/common'\nimport type { Service } from '../../../proto/bsky_connect.js'\nimport type { Database } from '../db/index.js'\nimport { TimeCidKeyset, paginate } from '../db/pagination.js'\n\nexport default (db: Database): Partial<ServiceImpl<typeof Service>> => ({\n async getKnownLikers(req) {\n const { actorDid, subjectUris, limit } = req\n const results = subjectUris.map((subjectUri) => ({\n subjectUri,\n count: 0,\n dids: [] as string[],\n }))\n if (limit <= 0 || subjectUris.length === 0) return { results }\n\n const { rows } = await sql<{\n ordinal: string\n creator: string\n count: number\n }>`\n with \"rankedKnownLikers\" as (\n select\n subjects.ordinal,\n \"recentLikes\".creator,\n count(*) over (partition by subjects.ordinal)::int as count,\n row_number() over (\n partition by subjects.ordinal\n order by \"recentLikes\".\"sortAt\" desc\n ) as rank\n from unnest(${subjectUris}::varchar[]) with ordinality\n as subjects(\"subjectUri\", ordinal)\n cross join lateral (\n select \"like\".creator, \"like\".\"sortAt\"\n from \"like\"\n where \"like\".subject = subjects.\"subjectUri\"\n order by \"like\".\"sortAt\" desc\n limit 500\n ) as \"recentLikes\"\n inner join follow on\n follow.\"subjectDid\" = \"recentLikes\".creator\n and follow.creator = ${actorDid}\n )\n select ordinal, creator, count\n from \"rankedKnownLikers\"\n where rank <= ${limit}\n order by ordinal, rank\n `.execute(db.db)\n\n for (const row of rows) {\n const result = results[Number(row.ordinal) - 1]\n assert(result)\n result.count = row.count\n result.dids.push(row.creator)\n }\n return { results }\n },\n\n async getLikesBySubjectSorted(req) {\n const { subject, cursor, limit } = req\n const { ref } = db.db.dynamic\n\n if (!subject?.uri) {\n return { uris: [] }\n }\n\n // @NOTE ignoring subject.cid\n let builder = db.db\n .selectFrom('like')\n .where('like.subject', '=', subject?.uri)\n .selectAll('like')\n\n const keyset = new TimeCidKeyset(ref('like.sortAt'), ref('like.cid'))\n builder = paginate(builder, {\n limit,\n cursor,\n keyset,\n })\n\n const page = keyset.page(await builder.execute(), limit)\n\n return {\n uris: page.items.map((l) => l.uri),\n cursor: page.cursor,\n }\n },\n\n // @NOTE deprecated in favor of getLikesBySubjectSorted\n async getLikesBySubject(req, context) {\n assert(this.getLikesBySubjectSorted)\n return this.getLikesBySubjectSorted(req, context)\n },\n\n async getLikesByActorAndSubjects(req) {\n const { actorDid, refs } = req\n if (refs.length === 0) {\n return { uris: [] }\n }\n // @NOTE ignoring ref.cid\n const res = await db.db\n .selectFrom('like')\n .where('creator', '=', actorDid)\n .where(\n 'subject',\n 'in',\n refs.map(({ uri }) => uri),\n )\n .selectAll()\n .execute()\n const bySubject = keyBy(res, 'subject')\n const uris = refs.map(({ uri }) => bySubject.get(uri)?.uri ?? '')\n return { uris }\n },\n\n async getActorLikes(req) {\n const { actorDid, limit, cursor } = req\n const { ref } = db.db.dynamic\n\n let builder = db.db\n .selectFrom('like')\n .where('like.creator', '=', actorDid)\n .selectAll()\n\n const keyset = new TimeCidKeyset(ref('like.sortAt'), ref('like.cid'))\n\n builder = paginate(builder, {\n limit,\n cursor,\n keyset,\n })\n\n const page = keyset.page(await builder.execute(), limit)\n\n return {\n likes: page.items.map((l) => ({\n uri: l.uri,\n subject: l.subject,\n })),\n cursor: page.cursor,\n }\n },\n})\n"]}
|
|
@@ -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;IACtE,cAAc,qBAAqB;IACnC,QAAQ,qBAAqB;IAC7B,sBAAsB,8BAA8B;
|
|
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;IACnC,QAAQ,qBAAqB;IAC7B,sBAAsB,8BAA8B;IACpD,qBAAqB,6BAA6B;IAGlD,MAAM,oBAAoB;CAC3B;AAED;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,GAAG,CAAC,IAAI,CAAe,CAAA"}
|
|
@@ -15,6 +15,7 @@ export var Gate;
|
|
|
15
15
|
Gate["SearchV2Enable"] = "search:v2:enable";
|
|
16
16
|
Gate["IrisFeed"] = "iris:feed:enable";
|
|
17
17
|
Gate["OpThreadMetadataEnable"] = "op_thread_metadata:enable";
|
|
18
|
+
Gate["KnownLikersFeedEnable"] = "known_likers:feed:enable";
|
|
18
19
|
// temp
|
|
19
20
|
Gate["AATest"] = "aa-test-appview";
|
|
20
21
|
})(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,IAeX;AAfD,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;IACnC,qCAA6B,CAAA;IAC7B,4DAAoD,CAAA;IACpD,0DAAkD,CAAA;IAElD,OAAO;IACP,kCAA0B,CAAA;AAC5B,CAAC,EAfW,IAAI,KAAJ,IAAI,QAef;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 IrisFeed = 'iris:feed:enable',\n OpThreadMetadataEnable = 'op_thread_metadata:enable',\n KnownLikersFeedEnable = 'known_likers:feed: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"]}
|
|
@@ -77,6 +77,11 @@ type KnownFollowersState = {
|
|
|
77
77
|
followers: DidString[];
|
|
78
78
|
};
|
|
79
79
|
export type KnownFollowersStates = HydrationMap<DidString, KnownFollowersState | undefined>;
|
|
80
|
+
type KnownLikersState = {
|
|
81
|
+
count: number;
|
|
82
|
+
actors: DidString[];
|
|
83
|
+
};
|
|
84
|
+
export type KnownLikersStates = HydrationMap<AtUriString, KnownLikersState | undefined>;
|
|
80
85
|
export type ProfileAgg = {
|
|
81
86
|
followers: number;
|
|
82
87
|
follows: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actor.d.ts","sourceRoot":"","sources":["../../src/hydration/actor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"actor.d.ts","sourceRoot":"","sources":["../../src/hydration/actor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actor.js","sourceRoot":"","sources":["../../src/hydration/actor.ts"],"names":[],"mappings":"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","sourcesContent":["import { mapDefined } from '@atproto/common'\nimport {\n type AtIdentifierString,\n type AtUriString,\n type DatetimeString,\n type DidString,\n type HandleString,\n isDidIdentifier,\n isHandleIdentifier,\n normalizeHandle,\n} from '@atproto/syntax'\nimport type { DataPlaneClient } from '../data-plane/client/index.js'\nimport { app, chat, com } from '../lexicons/index.js'\nimport type {\n ActivitySubscription,\n VerificationMeta,\n} from '../proto/bsky_pb.js'\nimport type {\n ChatDeclarationRecord,\n GermDeclarationRecord,\n NotificationDeclarationRecord,\n ProfileRecord,\n StatusRecord,\n} from '../views/types.js'\nimport {\n HydrationMap,\n type RecordInfo,\n isActivitySubscriptionEnabled,\n parseDate,\n parseRecord,\n parseString,\n safeTakedownRef,\n} from './util.js'\n\ntype AllowActivitySubscriptions = Extract<\n app.bsky.notification.declaration.Main['allowSubscriptions'],\n 'followers' | 'mutuals' | 'none'\n>\n\nexport type Actor = {\n did: DidString\n handle?: HandleString\n profile?: ProfileRecord\n profileCid?: string\n profileTakedownRef?: string\n sortedAt?: Date\n indexedAt?: Date\n takedownRef?: string\n isLabeler: boolean\n allowIncomingChatsFrom?: string\n allowGroupChatInvitesFrom?: string\n upstreamStatus?: string\n createdAt?: Date\n priorityNotifications: boolean\n trustedVerifier?: boolean\n verifications: VerificationHydrationState[]\n status?: RecordInfo<StatusRecord>\n germ?: RecordInfo<GermDeclarationRecord>\n allowActivitySubscriptionsFrom: AllowActivitySubscriptions\n accountModerationTags: Set<string>\n profileModerationTags: Set<string>\n /**\n * Debug information for internal development\n */\n debug?: {\n pagerank?: string\n accountTags?: string[]\n profileTags?: string[]\n }\n}\n\nexport type VerificationHydrationState = {\n issuer: DidString\n uri: AtUriString\n handle: HandleString\n displayName: string\n createdAt: DatetimeString\n}\n\nexport type VerificationMetaRequired = Required<VerificationMeta>\n\nexport type Actors = HydrationMap<DidString, Actor>\n\nexport type ChatDeclaration = RecordInfo<ChatDeclarationRecord>\nexport type ChatDeclarations = HydrationMap<AtUriString, ChatDeclaration>\n\nexport type GermDeclaration = RecordInfo<GermDeclarationRecord>\nexport type GermDeclarations = HydrationMap<AtUriString, GermDeclaration>\n\nexport type NotificationDeclaration = RecordInfo<NotificationDeclarationRecord>\nexport type NotificationDeclarations = HydrationMap<\n AtUriString,\n NotificationDeclaration\n>\n\nexport type Status = RecordInfo<StatusRecord>\nexport type Statuses = HydrationMap<AtUriString, Status>\n\nexport type ProfileViewerState = {\n did: DidString\n muted?: boolean\n mutedOnlyReposts?: boolean\n mutedOnlyQuoteposts?: boolean\n mutedByList?: AtUriString\n blockedBy?: AtUriString\n blocking?: AtUriString\n blockedByList?: AtUriString\n blockingByList?: AtUriString\n following?: AtUriString\n followedBy?: AtUriString\n}\n\nexport type ProfileViewerStates = HydrationMap<\n AtIdentifierString,\n ProfileViewerState\n>\n\ntype ActivitySubscriptionState = {\n post: boolean\n reply: boolean\n}\n\nexport type ActivitySubscriptionStates = HydrationMap<\n DidString,\n ActivitySubscriptionState | undefined\n>\n\ntype KnownFollowersState = {\n count: number\n followers: DidString[]\n}\n\nexport type KnownFollowersStates = HydrationMap<\n DidString,\n KnownFollowersState | undefined\n>\n\nexport type ProfileAgg = {\n followers: number\n follows: number\n posts: number\n lists: number\n feeds: number\n starterPacks: number\n}\n\nexport type ProfileAggs = HydrationMap<DidString, ProfileAgg>\n\nexport class ActorHydrator {\n constructor(public dataplane: DataPlaneClient) {}\n\n async getRepoRevSafe(did: string | null): Promise<string | null> {\n if (!did) return null\n try {\n const res = await this.dataplane.getLatestRev({ actorDid: did })\n return parseString(res.rev) ?? null\n } catch {\n return null\n }\n }\n\n /**\n * @note handles do not need to be normalized\n */\n async getDids(\n handleOrDids: AtIdentifierString[],\n opts?: { lookupUnidirectional?: boolean },\n ): Promise<(DidString | undefined)[]> {\n const didByHandle = new Map<HandleString, DidString>()\n\n const handles = handleOrDids.filter(isHandleIdentifier)\n if (handles.length) {\n const { dids } = await this.dataplane.getDidsByHandles({\n handles: handles.map(normalizeHandle),\n lookupUnidirectional: opts?.lookupUnidirectional,\n })\n\n for (let i = 0; i < handles.length; i++) {\n const did = parseString<DidString>(dids[i])\n if (did) didByHandle.set(handles[i], did)\n }\n }\n\n return handleOrDids.map((id) =>\n isDidIdentifier(id) ? id : didByHandle.get(id),\n )\n }\n\n async getDidsDefined(\n handleOrDids: AtIdentifierString[],\n ): Promise<DidString[]> {\n const res = await this.getDids(handleOrDids)\n return res.filter((v) => v != null)\n }\n\n async getActors(\n dids: DidString[],\n opts: {\n includeTakedowns?: boolean\n skipCacheForDids?: DidString[]\n } = {},\n ): Promise<Actors> {\n const map: Actors = new HydrationMap()\n if (!dids.length) return map\n\n const { includeTakedowns = false, skipCacheForDids } = opts\n\n const res = await this.dataplane.getActors({ dids, skipCacheForDids })\n for (let i = 0; i < dids.length; i++) {\n const did = dids[i]\n\n const actor = res.actors[i]\n const isNoHosted =\n actor.takenDown ||\n (actor.upstreamStatus && actor.upstreamStatus !== 'active')\n if (\n !actor.exists ||\n (isNoHosted && !includeTakedowns) ||\n !!actor.tombstonedAt\n ) {\n map.set(did, null)\n continue\n }\n\n const profile = actor.profile?.record\n ? parseRecord(\n app.bsky.actor.profile.main,\n actor.profile,\n includeTakedowns,\n )\n : undefined\n\n const status = actor.statusRecord\n ? parseRecord(\n app.bsky.actor.status.main,\n actor.statusRecord,\n /*\n * Always true, we filter this out in the `Views.status()`. If we\n * ever remove that filter, we'll want to reinstate this here.\n */\n true,\n )\n : undefined\n\n const germ = actor.germRecord\n ? parseRecord(\n com.germnetwork.declaration.main,\n actor.germRecord,\n includeTakedowns,\n )\n : undefined\n\n const verifications = mapDefined(\n Object.entries(actor.verifiedBy) as [DidString, VerificationMeta][],\n ([actorDid, verificationMeta]):\n VerificationHydrationState | undefined => {\n if (\n verificationMeta.handle &&\n verificationMeta.rkey &&\n verificationMeta.sortedAt\n ) {\n return {\n issuer: actorDid,\n uri: `at://${actorDid}/app.bsky.graph.verification/${verificationMeta.rkey}`,\n handle: verificationMeta.handle as HandleString,\n displayName: verificationMeta.displayName,\n createdAt: (\n parseDate(verificationMeta.sortedAt) ?? new Date(0)\n ).toISOString() as DatetimeString,\n }\n }\n // Filter out the verification meta that doesn't contain all info.\n return undefined\n },\n )\n\n const allowActivitySubscriptionsFrom = (\n val: string,\n ): AllowActivitySubscriptions => {\n switch (val) {\n case 'followers':\n case 'mutuals':\n case 'none':\n return val\n default:\n // The dataplane should set the default of \"FOLLOWERS\". Just in case.\n return 'followers'\n }\n }\n\n const debug = {\n pagerank: actor.pagerank ? actor.pagerank.toString() : undefined,\n accountTags: actor.tags,\n profileTags: actor.profileTags,\n }\n\n map.set(did, {\n did,\n handle: parseString<HandleString>(actor.handle),\n profile: profile?.record,\n profileCid: profile?.cid,\n profileTakedownRef: profile?.takedownRef,\n sortedAt: profile?.sortedAt,\n indexedAt: profile?.indexedAt,\n takedownRef: safeTakedownRef(actor),\n isLabeler: actor.labeler ?? false,\n allowIncomingChatsFrom: actor.allowIncomingChatsFrom || undefined,\n allowGroupChatInvitesFrom: actor.allowGroupChatInvitesFrom || undefined,\n upstreamStatus: actor.upstreamStatus || undefined,\n createdAt: parseDate(actor.createdAt),\n priorityNotifications: actor.priorityNotifications,\n trustedVerifier: actor.trustedVerifier,\n verifications,\n status: status,\n germ: germ,\n allowActivitySubscriptionsFrom: allowActivitySubscriptionsFrom(\n actor.allowActivitySubscriptionsFrom,\n ),\n accountModerationTags: new Set(actor.tags),\n profileModerationTags: new Set(actor.profileTags),\n debug,\n })\n }\n\n return map\n }\n\n async getChatDeclarations(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<ChatDeclarations> {\n const map: ChatDeclarations = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getActorChatDeclarationRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const uri = uris[i]\n const record = parseRecord(\n chat.bsky.actor.declaration.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uri, record ?? null)\n }\n\n return map\n }\n\n async getGermDeclarations(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<GermDeclarations> {\n const map: GermDeclarations = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getGermDeclarationRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const record = parseRecord(\n com.germnetwork.declaration.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uris[i], record ?? null)\n }\n\n return map\n }\n\n async getNotificationDeclarations(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<NotificationDeclarations> {\n const map: NotificationDeclarations = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getNotificationDeclarationRecords({\n uris,\n })\n for (let i = 0; i < uris.length; i++) {\n const uri = uris[i]\n const record = parseRecord(\n app.bsky.notification.declaration.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uri, record ?? null)\n }\n\n return map\n }\n\n async getStatus(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<Statuses> {\n const map: Statuses = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getStatusRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const uri = uris[i]\n const record = parseRecord(\n app.bsky.actor.status.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uri, record ?? null)\n }\n\n return map\n }\n\n // \"naive\" because this method does not verify the existence of the list itself\n // a later check in the main hydrator will remove list uris that have been deleted or\n // repurposed to \"curate lists\"\n async getProfileViewerStatesNaive(\n actors: AtIdentifierString[],\n viewer: DidString,\n ): Promise<ProfileViewerStates> {\n const map: ProfileViewerStates = new HydrationMap()\n if (!actors.length) return map\n\n // @TODO we could use \"await this.getDids(actors)\" here to resolve the\n // handles (no other code change should be needed). This was not done as\n // part of this PR to avoid changing the behavior of this method.\n const actorDids = actors.map((a) => (isDidIdentifier(a) ? a : undefined))\n\n // getRelationships requires DidString so we remove anything that isn't one\n const actorDidsDefined = Array.from(\n new Set(\n actorDids\n .filter((did) => did != null)\n // Since we special case self-relationship below, we can skip querying\n // the dataplane for the viewer's own DID if it's included in the\n // input.\n .filter((did) => did !== viewer),\n ),\n )\n\n const res = await this.dataplane.getRelationships({\n actorDid: viewer,\n targetDids: actorDidsDefined,\n })\n\n const actorToDid = new Map<AtIdentifierString, DidString | undefined>(\n actors.map((actor, i) => [actor, actorDids[i]]),\n )\n\n for (let i = 0; i < actors.length; i++) {\n const actor = actors[i]\n\n const did = actorToDid.get(actor)\n // ignore unresolved handles\n if (!did) continue\n\n if (did === viewer) {\n // ignore self-follows, self-mutes, self-blocks, self-activity-subscriptions\n map.set(actor, { did })\n continue\n }\n\n // Get the index that was used to query the relationships for this actor\n const index = actorDidsDefined.indexOf(did)\n if (index === -1) continue\n\n const rels = res.relationships[index]\n map.set(actor, {\n did,\n muted: rels.muted ?? false,\n mutedOnlyReposts: rels.mutedOnlyReposts ?? false,\n mutedOnlyQuoteposts: rels.mutedOnlyQuoteposts ?? false,\n mutedByList: parseString(rels.mutedByList),\n blockedBy: parseString(rels.blockedBy),\n blocking: parseString<AtUriString>(rels.blocking),\n blockedByList: parseString(rels.blockedByList),\n blockingByList: parseString(rels.blockingByList),\n following: parseString<AtUriString>(rels.following),\n followedBy: parseString(rels.followedBy),\n })\n }\n\n return map\n }\n\n async getKnownFollowers(\n dids: DidString[],\n viewer: DidString | null,\n ): Promise<KnownFollowersStates> {\n const map: KnownFollowersStates = new HydrationMap()\n if (!viewer) return map\n if (!dids.length) return map\n\n try {\n const { results: knownFollowersResults } =\n await this.dataplane.getFollowsFollowing(\n {\n actorDid: viewer,\n targetDids: dids,\n },\n {\n signal: AbortSignal.timeout(100),\n },\n )\n\n for (let i = 0; i < dids.length; i++) {\n const did = dids[i]\n\n const result = knownFollowersResults[i]?.dids\n\n map.set(\n did,\n result && result.length > 0\n ? {\n count: result.length,\n followers: result.slice(0, 5) as DidString[],\n }\n : undefined,\n )\n }\n } catch {\n // ignore errors and return empty map\n }\n\n return map\n }\n\n async getActivitySubscriptions(\n dids: DidString[],\n viewer: DidString | null,\n ): Promise<ActivitySubscriptionStates> {\n const map: ActivitySubscriptionStates = new HydrationMap()\n if (!viewer) return map\n if (!dids.length) return map\n\n try {\n const { subscriptions } =\n await this.dataplane.getActivitySubscriptionsByActorAndSubjects(\n { actorDid: viewer, subjectDids: dids },\n { signal: AbortSignal.timeout(100) },\n )\n\n for (let i = 0; i < dids.length; i++) {\n // @NOTE Although not typed as nullable, the code here used to defend\n // against potentially missing subscription objects in the response, so\n // we keep that defense in place.\n const subscription = subscriptions[i] as\n ActivitySubscription | undefined\n\n const state = {\n post: subscription?.post != null,\n reply: subscription?.reply != null,\n }\n\n const did = dids[i]!\n if (isActivitySubscriptionEnabled(state)) {\n map.set(did, state)\n } else {\n map.set(did, undefined)\n }\n }\n } catch {\n // ignore errors and return empty map\n }\n\n return map\n }\n\n async getProfileAggregates(dids: DidString[]): Promise<ProfileAggs> {\n const map: ProfileAggs = new HydrationMap()\n if (!dids.length) return map\n\n const counts = await this.dataplane.getCountsForUsers({ dids })\n for (let i = 0; i < dids.length; i++) {\n const did = dids[i]\n map.set(did, {\n followers: counts.followers[i] ?? 0,\n follows: counts.following[i] ?? 0,\n posts: counts.posts[i] ?? 0,\n lists: counts.lists[i] ?? 0,\n feeds: counts.feeds[i] ?? 0,\n starterPacks: counts.starterPacks[i] ?? 0,\n })\n }\n\n return map\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"actor.js","sourceRoot":"","sources":["../../src/hydration/actor.ts"],"names":[],"mappings":"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","sourcesContent":["import { mapDefined } from '@atproto/common'\nimport {\n type AtIdentifierString,\n type AtUriString,\n type DatetimeString,\n type DidString,\n type HandleString,\n isDidIdentifier,\n isHandleIdentifier,\n normalizeHandle,\n} from '@atproto/syntax'\nimport type { DataPlaneClient } from '../data-plane/client/index.js'\nimport { app, chat, com } from '../lexicons/index.js'\nimport type {\n ActivitySubscription,\n VerificationMeta,\n} from '../proto/bsky_pb.js'\nimport type {\n ChatDeclarationRecord,\n GermDeclarationRecord,\n NotificationDeclarationRecord,\n ProfileRecord,\n StatusRecord,\n} from '../views/types.js'\nimport {\n HydrationMap,\n type RecordInfo,\n isActivitySubscriptionEnabled,\n parseDate,\n parseRecord,\n parseString,\n safeTakedownRef,\n} from './util.js'\n\ntype AllowActivitySubscriptions = Extract<\n app.bsky.notification.declaration.Main['allowSubscriptions'],\n 'followers' | 'mutuals' | 'none'\n>\n\nexport type Actor = {\n did: DidString\n handle?: HandleString\n profile?: ProfileRecord\n profileCid?: string\n profileTakedownRef?: string\n sortedAt?: Date\n indexedAt?: Date\n takedownRef?: string\n isLabeler: boolean\n allowIncomingChatsFrom?: string\n allowGroupChatInvitesFrom?: string\n upstreamStatus?: string\n createdAt?: Date\n priorityNotifications: boolean\n trustedVerifier?: boolean\n verifications: VerificationHydrationState[]\n status?: RecordInfo<StatusRecord>\n germ?: RecordInfo<GermDeclarationRecord>\n allowActivitySubscriptionsFrom: AllowActivitySubscriptions\n accountModerationTags: Set<string>\n profileModerationTags: Set<string>\n /**\n * Debug information for internal development\n */\n debug?: {\n pagerank?: string\n accountTags?: string[]\n profileTags?: string[]\n }\n}\n\nexport type VerificationHydrationState = {\n issuer: DidString\n uri: AtUriString\n handle: HandleString\n displayName: string\n createdAt: DatetimeString\n}\n\nexport type VerificationMetaRequired = Required<VerificationMeta>\n\nexport type Actors = HydrationMap<DidString, Actor>\n\nexport type ChatDeclaration = RecordInfo<ChatDeclarationRecord>\nexport type ChatDeclarations = HydrationMap<AtUriString, ChatDeclaration>\n\nexport type GermDeclaration = RecordInfo<GermDeclarationRecord>\nexport type GermDeclarations = HydrationMap<AtUriString, GermDeclaration>\n\nexport type NotificationDeclaration = RecordInfo<NotificationDeclarationRecord>\nexport type NotificationDeclarations = HydrationMap<\n AtUriString,\n NotificationDeclaration\n>\n\nexport type Status = RecordInfo<StatusRecord>\nexport type Statuses = HydrationMap<AtUriString, Status>\n\nexport type ProfileViewerState = {\n did: DidString\n muted?: boolean\n mutedOnlyReposts?: boolean\n mutedOnlyQuoteposts?: boolean\n mutedByList?: AtUriString\n blockedBy?: AtUriString\n blocking?: AtUriString\n blockedByList?: AtUriString\n blockingByList?: AtUriString\n following?: AtUriString\n followedBy?: AtUriString\n}\n\nexport type ProfileViewerStates = HydrationMap<\n AtIdentifierString,\n ProfileViewerState\n>\n\ntype ActivitySubscriptionState = {\n post: boolean\n reply: boolean\n}\n\nexport type ActivitySubscriptionStates = HydrationMap<\n DidString,\n ActivitySubscriptionState | undefined\n>\n\ntype KnownFollowersState = {\n count: number\n followers: DidString[]\n}\n\nexport type KnownFollowersStates = HydrationMap<\n DidString,\n KnownFollowersState | undefined\n>\n\ntype KnownLikersState = {\n count: number\n actors: DidString[]\n}\n\nexport type KnownLikersStates = HydrationMap<\n AtUriString,\n KnownLikersState | undefined\n>\n\nexport type ProfileAgg = {\n followers: number\n follows: number\n posts: number\n lists: number\n feeds: number\n starterPacks: number\n}\n\nexport type ProfileAggs = HydrationMap<DidString, ProfileAgg>\n\nexport class ActorHydrator {\n constructor(public dataplane: DataPlaneClient) {}\n\n async getRepoRevSafe(did: string | null): Promise<string | null> {\n if (!did) return null\n try {\n const res = await this.dataplane.getLatestRev({ actorDid: did })\n return parseString(res.rev) ?? null\n } catch {\n return null\n }\n }\n\n /**\n * @note handles do not need to be normalized\n */\n async getDids(\n handleOrDids: AtIdentifierString[],\n opts?: { lookupUnidirectional?: boolean },\n ): Promise<(DidString | undefined)[]> {\n const didByHandle = new Map<HandleString, DidString>()\n\n const handles = handleOrDids.filter(isHandleIdentifier)\n if (handles.length) {\n const { dids } = await this.dataplane.getDidsByHandles({\n handles: handles.map(normalizeHandle),\n lookupUnidirectional: opts?.lookupUnidirectional,\n })\n\n for (let i = 0; i < handles.length; i++) {\n const did = parseString<DidString>(dids[i])\n if (did) didByHandle.set(handles[i], did)\n }\n }\n\n return handleOrDids.map((id) =>\n isDidIdentifier(id) ? id : didByHandle.get(id),\n )\n }\n\n async getDidsDefined(\n handleOrDids: AtIdentifierString[],\n ): Promise<DidString[]> {\n const res = await this.getDids(handleOrDids)\n return res.filter((v) => v != null)\n }\n\n async getActors(\n dids: DidString[],\n opts: {\n includeTakedowns?: boolean\n skipCacheForDids?: DidString[]\n } = {},\n ): Promise<Actors> {\n const map: Actors = new HydrationMap()\n if (!dids.length) return map\n\n const { includeTakedowns = false, skipCacheForDids } = opts\n\n const res = await this.dataplane.getActors({ dids, skipCacheForDids })\n for (let i = 0; i < dids.length; i++) {\n const did = dids[i]\n\n const actor = res.actors[i]\n const isNoHosted =\n actor.takenDown ||\n (actor.upstreamStatus && actor.upstreamStatus !== 'active')\n if (\n !actor.exists ||\n (isNoHosted && !includeTakedowns) ||\n !!actor.tombstonedAt\n ) {\n map.set(did, null)\n continue\n }\n\n const profile = actor.profile?.record\n ? parseRecord(\n app.bsky.actor.profile.main,\n actor.profile,\n includeTakedowns,\n )\n : undefined\n\n const status = actor.statusRecord\n ? parseRecord(\n app.bsky.actor.status.main,\n actor.statusRecord,\n /*\n * Always true, we filter this out in the `Views.status()`. If we\n * ever remove that filter, we'll want to reinstate this here.\n */\n true,\n )\n : undefined\n\n const germ = actor.germRecord\n ? parseRecord(\n com.germnetwork.declaration.main,\n actor.germRecord,\n includeTakedowns,\n )\n : undefined\n\n const verifications = mapDefined(\n Object.entries(actor.verifiedBy) as [DidString, VerificationMeta][],\n ([actorDid, verificationMeta]):\n VerificationHydrationState | undefined => {\n if (\n verificationMeta.handle &&\n verificationMeta.rkey &&\n verificationMeta.sortedAt\n ) {\n return {\n issuer: actorDid,\n uri: `at://${actorDid}/app.bsky.graph.verification/${verificationMeta.rkey}`,\n handle: verificationMeta.handle as HandleString,\n displayName: verificationMeta.displayName,\n createdAt: (\n parseDate(verificationMeta.sortedAt) ?? new Date(0)\n ).toISOString() as DatetimeString,\n }\n }\n // Filter out the verification meta that doesn't contain all info.\n return undefined\n },\n )\n\n const allowActivitySubscriptionsFrom = (\n val: string,\n ): AllowActivitySubscriptions => {\n switch (val) {\n case 'followers':\n case 'mutuals':\n case 'none':\n return val\n default:\n // The dataplane should set the default of \"FOLLOWERS\". Just in case.\n return 'followers'\n }\n }\n\n const debug = {\n pagerank: actor.pagerank ? actor.pagerank.toString() : undefined,\n accountTags: actor.tags,\n profileTags: actor.profileTags,\n }\n\n map.set(did, {\n did,\n handle: parseString<HandleString>(actor.handle),\n profile: profile?.record,\n profileCid: profile?.cid,\n profileTakedownRef: profile?.takedownRef,\n sortedAt: profile?.sortedAt,\n indexedAt: profile?.indexedAt,\n takedownRef: safeTakedownRef(actor),\n isLabeler: actor.labeler ?? false,\n allowIncomingChatsFrom: actor.allowIncomingChatsFrom || undefined,\n allowGroupChatInvitesFrom: actor.allowGroupChatInvitesFrom || undefined,\n upstreamStatus: actor.upstreamStatus || undefined,\n createdAt: parseDate(actor.createdAt),\n priorityNotifications: actor.priorityNotifications,\n trustedVerifier: actor.trustedVerifier,\n verifications,\n status: status,\n germ: germ,\n allowActivitySubscriptionsFrom: allowActivitySubscriptionsFrom(\n actor.allowActivitySubscriptionsFrom,\n ),\n accountModerationTags: new Set(actor.tags),\n profileModerationTags: new Set(actor.profileTags),\n debug,\n })\n }\n\n return map\n }\n\n async getChatDeclarations(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<ChatDeclarations> {\n const map: ChatDeclarations = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getActorChatDeclarationRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const uri = uris[i]\n const record = parseRecord(\n chat.bsky.actor.declaration.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uri, record ?? null)\n }\n\n return map\n }\n\n async getGermDeclarations(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<GermDeclarations> {\n const map: GermDeclarations = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getGermDeclarationRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const record = parseRecord(\n com.germnetwork.declaration.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uris[i], record ?? null)\n }\n\n return map\n }\n\n async getNotificationDeclarations(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<NotificationDeclarations> {\n const map: NotificationDeclarations = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getNotificationDeclarationRecords({\n uris,\n })\n for (let i = 0; i < uris.length; i++) {\n const uri = uris[i]\n const record = parseRecord(\n app.bsky.notification.declaration.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uri, record ?? null)\n }\n\n return map\n }\n\n async getStatus(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<Statuses> {\n const map: Statuses = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getStatusRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const uri = uris[i]\n const record = parseRecord(\n app.bsky.actor.status.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uri, record ?? null)\n }\n\n return map\n }\n\n // \"naive\" because this method does not verify the existence of the list itself\n // a later check in the main hydrator will remove list uris that have been deleted or\n // repurposed to \"curate lists\"\n async getProfileViewerStatesNaive(\n actors: AtIdentifierString[],\n viewer: DidString,\n ): Promise<ProfileViewerStates> {\n const map: ProfileViewerStates = new HydrationMap()\n if (!actors.length) return map\n\n // @TODO we could use \"await this.getDids(actors)\" here to resolve the\n // handles (no other code change should be needed). This was not done as\n // part of this PR to avoid changing the behavior of this method.\n const actorDids = actors.map((a) => (isDidIdentifier(a) ? a : undefined))\n\n // getRelationships requires DidString so we remove anything that isn't one\n const actorDidsDefined = Array.from(\n new Set(\n actorDids\n .filter((did) => did != null)\n // Since we special case self-relationship below, we can skip querying\n // the dataplane for the viewer's own DID if it's included in the\n // input.\n .filter((did) => did !== viewer),\n ),\n )\n\n const res = await this.dataplane.getRelationships({\n actorDid: viewer,\n targetDids: actorDidsDefined,\n })\n\n const actorToDid = new Map<AtIdentifierString, DidString | undefined>(\n actors.map((actor, i) => [actor, actorDids[i]]),\n )\n\n for (let i = 0; i < actors.length; i++) {\n const actor = actors[i]\n\n const did = actorToDid.get(actor)\n // ignore unresolved handles\n if (!did) continue\n\n if (did === viewer) {\n // ignore self-follows, self-mutes, self-blocks, self-activity-subscriptions\n map.set(actor, { did })\n continue\n }\n\n // Get the index that was used to query the relationships for this actor\n const index = actorDidsDefined.indexOf(did)\n if (index === -1) continue\n\n const rels = res.relationships[index]\n map.set(actor, {\n did,\n muted: rels.muted ?? false,\n mutedOnlyReposts: rels.mutedOnlyReposts ?? false,\n mutedOnlyQuoteposts: rels.mutedOnlyQuoteposts ?? false,\n mutedByList: parseString(rels.mutedByList),\n blockedBy: parseString(rels.blockedBy),\n blocking: parseString<AtUriString>(rels.blocking),\n blockedByList: parseString(rels.blockedByList),\n blockingByList: parseString(rels.blockingByList),\n following: parseString<AtUriString>(rels.following),\n followedBy: parseString(rels.followedBy),\n })\n }\n\n return map\n }\n\n async getKnownFollowers(\n dids: DidString[],\n viewer: DidString | null,\n ): Promise<KnownFollowersStates> {\n const map: KnownFollowersStates = new HydrationMap()\n if (!viewer) return map\n if (!dids.length) return map\n\n try {\n const { results: knownFollowersResults } =\n await this.dataplane.getFollowsFollowing(\n {\n actorDid: viewer,\n targetDids: dids,\n },\n {\n signal: AbortSignal.timeout(100),\n },\n )\n\n for (let i = 0; i < dids.length; i++) {\n const did = dids[i]\n\n const result = knownFollowersResults[i]?.dids\n\n map.set(\n did,\n result && result.length > 0\n ? {\n count: result.length,\n followers: result.slice(0, 5) as DidString[],\n }\n : undefined,\n )\n }\n } catch {\n // ignore errors and return empty map\n }\n\n return map\n }\n\n async getActivitySubscriptions(\n dids: DidString[],\n viewer: DidString | null,\n ): Promise<ActivitySubscriptionStates> {\n const map: ActivitySubscriptionStates = new HydrationMap()\n if (!viewer) return map\n if (!dids.length) return map\n\n try {\n const { subscriptions } =\n await this.dataplane.getActivitySubscriptionsByActorAndSubjects(\n { actorDid: viewer, subjectDids: dids },\n { signal: AbortSignal.timeout(100) },\n )\n\n for (let i = 0; i < dids.length; i++) {\n // @NOTE Although not typed as nullable, the code here used to defend\n // against potentially missing subscription objects in the response, so\n // we keep that defense in place.\n const subscription = subscriptions[i] as\n ActivitySubscription | undefined\n\n const state = {\n post: subscription?.post != null,\n reply: subscription?.reply != null,\n }\n\n const did = dids[i]!\n if (isActivitySubscriptionEnabled(state)) {\n map.set(did, state)\n } else {\n map.set(did, undefined)\n }\n }\n } catch {\n // ignore errors and return empty map\n }\n\n return map\n }\n\n async getProfileAggregates(dids: DidString[]): Promise<ProfileAggs> {\n const map: ProfileAggs = new HydrationMap()\n if (!dids.length) return map\n\n const counts = await this.dataplane.getCountsForUsers({ dids })\n for (let i = 0; i < dids.length; i++) {\n const did = dids[i]\n map.set(did, {\n followers: counts.followers[i] ?? 0,\n follows: counts.following[i] ?? 0,\n posts: counts.posts[i] ?? 0,\n lists: counts.lists[i] ?? 0,\n feeds: counts.feeds[i] ?? 0,\n starterPacks: counts.starterPacks[i] ?? 0,\n })\n }\n\n return map\n }\n}\n"]}
|
|
@@ -4,7 +4,7 @@ import type { FeatureGatesClient, ScopedFeatureGatesClient } from '../feature-ga
|
|
|
4
4
|
import { app } from '../lexicons/index.js';
|
|
5
5
|
import type { BookmarkInfo, Notification } from '../proto/bsky_pb.js';
|
|
6
6
|
import type { ParsedLabelers } from '../util.js';
|
|
7
|
-
import { type ActivitySubscriptionStates, ActorHydrator, type Actors, type KnownFollowersStates, type ProfileAggs, type ProfileViewerStates } from './actor.js';
|
|
7
|
+
import { type ActivitySubscriptionStates, ActorHydrator, type Actors, type KnownFollowersStates, type KnownLikersStates, type ProfileAggs, type ProfileViewerStates } from './actor.js';
|
|
8
8
|
import { ExternalHydrator, type SiteStandardDocuments, type SiteStandardPublications } from './external.js';
|
|
9
9
|
import { type FeedGenAggs, type FeedGenViewerStates, type FeedGens, FeedHydrator, type FeedItem, type GetPostsHydrationOptions, type Likes, type Post, type PostAggs, type PostViewerStates, type Postgates, type Posts, type Reposts, type ThreadContexts, type Threadgates } from './feed.js';
|
|
10
10
|
import { type Follows, GraphHydrator, type ListAggs, type ListItems, type ListMembershipStates, type ListViewerStates, type Lists, type StarterPackAggs, type StarterPacks, type Verifications } from './graph.js';
|
|
@@ -69,6 +69,7 @@ export type HydrationState = {
|
|
|
69
69
|
labelerViewers?: LabelerViewerStates;
|
|
70
70
|
labelerAggs?: LabelerAggs;
|
|
71
71
|
knownFollowers?: KnownFollowersStates;
|
|
72
|
+
knownLikers?: KnownLikersStates;
|
|
72
73
|
activitySubscriptions?: ActivitySubscriptionStates;
|
|
73
74
|
bidirectionalBlocks?: BidirectionalBlocks;
|
|
74
75
|
verifications?: Verifications;
|
|
@@ -76,6 +77,15 @@ export type HydrationState = {
|
|
|
76
77
|
siteStandardDocuments?: SiteStandardDocuments;
|
|
77
78
|
siteStandardPublications?: SiteStandardPublications;
|
|
78
79
|
};
|
|
80
|
+
type HydrateKnownLikersOptions = {
|
|
81
|
+
subjectUris: AtUriString[];
|
|
82
|
+
};
|
|
83
|
+
type HydratePostsOptions = Pick<GetPostsHydrationOptions, 'processDynamicTagsForView'> & {
|
|
84
|
+
knownLikers?: HydrateKnownLikersOptions;
|
|
85
|
+
};
|
|
86
|
+
type HydrateFeedItemsOptions = {
|
|
87
|
+
knownLikers?: HydrateKnownLikersOptions;
|
|
88
|
+
};
|
|
79
89
|
export type PostBlock = {
|
|
80
90
|
embed: boolean;
|
|
81
91
|
parent: boolean;
|
|
@@ -128,9 +138,9 @@ export declare class Hydrator {
|
|
|
128
138
|
hydrateListsMembership(uris: AtUriString[], did: DidString, ctx: HydrateCtx): Promise<HydrationState>;
|
|
129
139
|
hydratePosts(refs: {
|
|
130
140
|
uri: AtUriString;
|
|
131
|
-
}[], ctx: HydrateCtx, state?: HydrationState, options?:
|
|
141
|
+
}[], ctx: HydrateCtx, state?: HydrationState, options?: HydratePostsOptions): Promise<HydrationState>;
|
|
132
142
|
private hydratePostBlocks;
|
|
133
|
-
hydrateFeedItems(items: FeedItem[], ctx: HydrateCtx): Promise<HydrationState>;
|
|
143
|
+
hydrateFeedItems(items: FeedItem[], ctx: HydrateCtx, options?: HydrateFeedItemsOptions): Promise<HydrationState>;
|
|
134
144
|
/**
|
|
135
145
|
* Hydrate the state needed to build an `app.bsky.embed.external#view` for
|
|
136
146
|
* a set of `site.standard.*` AT-URIs at compose-time. Filters input URIs to
|
|
@@ -138,7 +148,8 @@ export declare class Hydrator {
|
|
|
138
148
|
* taken-down records.
|
|
139
149
|
*/
|
|
140
150
|
hydrateEmbedExternalViewFromUris(uris: AtUriString[], ctx: HydrateCtx): Promise<HydrationState>;
|
|
141
|
-
hydrateThreadPosts(refs: ItemRef[], ctx: HydrateCtx): Promise<HydrationState>;
|
|
151
|
+
hydrateThreadPosts(refs: ItemRef[], ctx: HydrateCtx, options?: Pick<HydratePostsOptions, 'knownLikers'>): Promise<HydrationState>;
|
|
152
|
+
private hydrateKnownLikers;
|
|
142
153
|
hydrateFeedGens(uris: AtUriString[], // @TODO any way to get refs here?
|
|
143
154
|
ctx: HydrateCtx): Promise<HydrationState>;
|
|
144
155
|
hydrateStarterPacksBasic(uris: AtUriString[], ctx: HydrateCtx): Promise<HydrationState>;
|
|
@@ -161,4 +172,5 @@ export declare class Hydrator {
|
|
|
161
172
|
}
|
|
162
173
|
export declare const mergeStates: (stateA: HydrationState, stateB: HydrationState) => HydrationState;
|
|
163
174
|
export declare const mergeManyStates: (...states: HydrationState[]) => HydrationState;
|
|
175
|
+
export {};
|
|
164
176
|
//# sourceMappingURL=hydrator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydrator.d.ts","sourceRoot":"","sources":["../../src/hydration/hydrator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"hydrator.d.ts","sourceRoot":"","sources":["../../src/hydration/hydrator.ts"],"names":[],"mappings":"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"}
|