@atproto/bsky 0.0.236 → 0.0.238
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 +17 -0
- package/dist/api/com/atproto/repo/getRecord.js +2 -2
- package/dist/api/com/atproto/repo/getRecord.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/moderation/getConvos.d.ts +3 -0
- package/dist/lexicons/chat/bsky/moderation/getConvos.d.ts.map +1 -0
- package/dist/lexicons/chat/bsky/moderation/getConvos.defs.d.ts +22 -0
- package/dist/lexicons/chat/bsky/moderation/getConvos.defs.d.ts.map +1 -0
- package/dist/lexicons/chat/bsky/moderation/getConvos.defs.js +22 -0
- package/dist/lexicons/chat/bsky/moderation/getConvos.defs.js.map +1 -0
- package/dist/lexicons/chat/bsky/moderation/getConvos.js +6 -0
- package/dist/lexicons/chat/bsky/moderation/getConvos.js.map +1 -0
- package/dist/lexicons/chat/bsky/moderation.d.ts +1 -0
- package/dist/lexicons/chat/bsky/moderation.d.ts.map +1 -1
- package/dist/lexicons/chat/bsky/moderation.js +1 -0
- package/dist/lexicons/chat/bsky/moderation.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/views/index.d.ts +4 -1
- package/dist/views/index.d.ts.map +1 -1
- package/dist/views/index.js +48 -8
- 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 +4 -4
- package/src/api/com/atproto/repo/getRecord.ts +2 -2
- package/src/hydration/hydrator.ts +3 -6
- package/src/hydration/label.ts +3 -3
- package/src/views/index.ts +74 -18
- package/src/views/types.ts +9 -0
- 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.tsbuildinfo +1 -1
package/dist/views/types.d.ts
CHANGED
|
@@ -21,6 +21,12 @@ export type ImagesEmbedView = app.bsky.embed.images.View;
|
|
|
21
21
|
export declare const isVideoEmbedType: <TValue extends Record<string, unknown>>(value: TValue) => value is import("@atproto/lex-schema").MaybeTypedObject<"app.bsky.embed.video", TValue>;
|
|
22
22
|
export type VideoEmbed = app.bsky.embed.video.Main;
|
|
23
23
|
export type VideoEmbedView = app.bsky.embed.video.View;
|
|
24
|
+
export declare const isGalleryEmbedType: <TValue extends Record<string, unknown>>(value: TValue) => value is import("@atproto/lex-schema").MaybeTypedObject<"app.bsky.embed.gallery", TValue>;
|
|
25
|
+
export type GalleryEmbed = app.bsky.embed.gallery.Main;
|
|
26
|
+
export type GalleryEmbedView = app.bsky.embed.gallery.View;
|
|
27
|
+
export declare const isGalleryImageEmbedType: <TValue extends Record<string, unknown>>(value: TValue) => value is import("@atproto/lex-schema").MaybeTypedObject<"app.bsky.embed.gallery#image", TValue>;
|
|
28
|
+
export type GalleryImageEmbed = app.bsky.embed.gallery.Image;
|
|
29
|
+
export type GalleryImageEmbedView = app.bsky.embed.gallery.ViewImage;
|
|
24
30
|
export declare const isExternalEmbedType: <TValue extends Record<string, unknown>>(value: TValue) => value is import("@atproto/lex-schema").MaybeTypedObject<"app.bsky.embed.external", TValue>;
|
|
25
31
|
export type ExternalEmbed = app.bsky.embed.external.Main;
|
|
26
32
|
export type ExternalEmbedView = app.bsky.embed.external.View;
|
|
@@ -38,8 +44,8 @@ export declare const isRecordWithMediaType: <TValue extends Record<string, unkno
|
|
|
38
44
|
export type RecordWithMedia = app.bsky.embed.recordWithMedia.Main;
|
|
39
45
|
export type RecordWithMediaView = app.bsky.embed.recordWithMedia.View;
|
|
40
46
|
export type RecordWithMediaEmbedView = app.bsky.embed.recordWithMedia.View;
|
|
41
|
-
export type Embed = ImagesEmbed | VideoEmbed | ExternalEmbed | RecordEmbed | RecordWithMedia;
|
|
42
|
-
export type EmbedView = ImagesEmbedView | VideoEmbedView | ExternalEmbedView | RecordEmbedView | RecordWithMediaView;
|
|
47
|
+
export type Embed = ImagesEmbed | VideoEmbed | GalleryEmbed | ExternalEmbed | RecordEmbed | RecordWithMedia;
|
|
48
|
+
export type EmbedView = ImagesEmbedView | VideoEmbedView | GalleryEmbedView | ExternalEmbedView | RecordEmbedView | RecordWithMediaView;
|
|
43
49
|
export type MaybePostView = PostView | NotFoundPost | BlockedPost;
|
|
44
50
|
export type RecordEmbedViewInternal = PostEmbedView | GeneratorView | ListView | LabelerView | StarterPackViewBasic;
|
|
45
51
|
export type LikeRecord = app.bsky.feed.like.Main;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/views/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAI3D,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAA;AACvD,eAAO,MAAM,mBAAmB;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/views/types.ts"],"names":[],"mappings":"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"}
|
package/dist/views/types.js
CHANGED
|
@@ -3,6 +3,8 @@ export const isProfileRecordType = app.bsky.actor.profile.$isTypeOf;
|
|
|
3
3
|
// app.bsky.embed
|
|
4
4
|
export const isImagesEmbedType = app.bsky.embed.images.$isTypeOf;
|
|
5
5
|
export const isVideoEmbedType = app.bsky.embed.video.$isTypeOf;
|
|
6
|
+
export const isGalleryEmbedType = app.bsky.embed.gallery.$isTypeOf;
|
|
7
|
+
export const isGalleryImageEmbedType = app.bsky.embed.gallery.image.$isTypeOf;
|
|
6
8
|
export const isExternalEmbedType = app.bsky.embed.external.$isTypeOf;
|
|
7
9
|
export const isRecordEmbedType = app.bsky.embed.record.$isTypeOf;
|
|
8
10
|
export const isRecordWithMediaType = app.bsky.embed.recordWithMedia.$isTypeOf;
|
package/dist/views/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/views/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAQ,GAAG,EAAQ,MAAM,sBAAsB,CAAA;AAK3D,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAA;AAoBnE,iBAAiB;AAEjB,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAA;AAIhE,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAA;AAI9D,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAA;AAQpE,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAA;AAQhE,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/views/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAQ,GAAG,EAAQ,MAAM,sBAAsB,CAAA;AAK3D,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAA;AAoBnE,iBAAiB;AAEjB,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAA;AAIhE,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAA;AAI9D,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAA;AAGlE,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAA;AAI7E,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAA;AAQpE,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAA;AAQhE,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAA;AAoC7E,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAA;AAG5D,MAAM,CAAC,MAAM,yBAAyB,GACpC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAA;AAa9C,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAA;AAGnE,MAAM,CAAC,MAAM,kBAAkB,GAC7B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAA;AACjD,MAAM,CAAC,MAAM,mBAAmB,GAC9B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAA;AAClD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAA;AACzE,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAA;AAqB/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAA;AAcrE,oBAAoB;AAEpB,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAA;AAsB3E,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAA;AAK3E,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAA","sourcesContent":["import { app, chat, com, site } from '../lexicons/index.js'\n\n// app.bsky.actor\n\nexport type ProfileRecord = app.bsky.actor.profile.Main\nexport const isProfileRecordType = app.bsky.actor.profile.$isTypeOf\n\nexport type ProfileViewer = app.bsky.actor.defs.ViewerState\nexport type KnownFollowers = app.bsky.actor.defs.KnownFollowers\nexport type ProfileAssociatedActivitySubscription =\n app.bsky.actor.defs.ProfileAssociatedActivitySubscription\nexport type ProfileAssociatedChat = app.bsky.actor.defs.ProfileAssociatedChat\nexport type ProfileView = app.bsky.actor.defs.ProfileView\nexport type ProfileViewBasic = app.bsky.actor.defs.ProfileViewBasic\nexport type ProfileViewDetailed = app.bsky.actor.defs.ProfileViewDetailed\nexport type StatusView = app.bsky.actor.defs.StatusView\nexport type VerificationState = app.bsky.actor.defs.VerificationState\nexport type VerificationView = app.bsky.actor.defs.VerificationView\n\nexport type StatusRecord = app.bsky.actor.status.Main\n\n// app.bsky.bookmark\n\nexport type BookmarkView = app.bsky.bookmark.defs.BookmarkView\n\n// app.bsky.embed\n\nexport const isImagesEmbedType = app.bsky.embed.images.$isTypeOf\nexport type ImagesEmbed = app.bsky.embed.images.Main\nexport type ImagesEmbedView = app.bsky.embed.images.View\n\nexport const isVideoEmbedType = app.bsky.embed.video.$isTypeOf\nexport type VideoEmbed = app.bsky.embed.video.Main\nexport type VideoEmbedView = app.bsky.embed.video.View\n\nexport const isGalleryEmbedType = app.bsky.embed.gallery.$isTypeOf\nexport type GalleryEmbed = app.bsky.embed.gallery.Main\nexport type GalleryEmbedView = app.bsky.embed.gallery.View\nexport const isGalleryImageEmbedType = app.bsky.embed.gallery.image.$isTypeOf\nexport type GalleryImageEmbed = app.bsky.embed.gallery.Image\nexport type GalleryImageEmbedView = app.bsky.embed.gallery.ViewImage\n\nexport const isExternalEmbedType = app.bsky.embed.external.$isTypeOf\nexport type ExternalEmbed = app.bsky.embed.external.Main\nexport type ExternalEmbedView = app.bsky.embed.external.View\nexport type ExternalEmbedSourceView = app.bsky.embed.external.ViewExternalSource\nexport type ExternalEmbedSourceThemeView =\n app.bsky.embed.external.ViewExternalSourceTheme\nexport type ExternalEmbedColorRgb = app.bsky.embed.external.ColorRgb\n\nexport const isRecordEmbedType = app.bsky.embed.record.$isTypeOf\nexport type RecordEmbed = app.bsky.embed.record.Main\nexport type RecordEmbedView = app.bsky.embed.record.View\nexport type EmbedBlocked = app.bsky.embed.record.ViewBlocked\nexport type EmbedDetached = app.bsky.embed.record.ViewDetached\nexport type EmbedNotFound = app.bsky.embed.record.ViewNotFound\nexport type PostEmbedView = app.bsky.embed.record.ViewRecord\n\nexport const isRecordWithMediaType = app.bsky.embed.recordWithMedia.$isTypeOf\nexport type RecordWithMedia = app.bsky.embed.recordWithMedia.Main\nexport type RecordWithMediaView = app.bsky.embed.recordWithMedia.View\nexport type RecordWithMediaEmbedView = app.bsky.embed.recordWithMedia.View\n\nexport type Embed =\n | ImagesEmbed\n | VideoEmbed\n | GalleryEmbed\n | ExternalEmbed\n | RecordEmbed\n | RecordWithMedia\n\nexport type EmbedView =\n | ImagesEmbedView\n | VideoEmbedView\n | GalleryEmbedView\n | ExternalEmbedView\n | RecordEmbedView\n | RecordWithMediaView\n\nexport type MaybePostView = PostView | NotFoundPost | BlockedPost\n\nexport type RecordEmbedViewInternal =\n | PostEmbedView\n | GeneratorView\n | ListView\n | LabelerView\n | StarterPackViewBasic\n\n// app.bsky.feed\n\nexport type LikeRecord = app.bsky.feed.like.Main\nexport type RepostRecord = app.bsky.feed.repost.Main\n\nexport type PostRecord = app.bsky.feed.post.Main\nexport const isPostRecordType = app.bsky.feed.post.$isTypeOf\n\nexport type PostgateRecord = app.bsky.feed.postgate.Main\nexport const isPostgateDisableRuleType =\n app.bsky.feed.postgate.disableRule.$isTypeOf\n\nexport type FeedViewPost = app.bsky.feed.defs.FeedViewPost\nexport type ReasonPin = app.bsky.feed.defs.ReasonPin\nexport type ReasonRepost = app.bsky.feed.defs.ReasonRepost\nexport type ReplyRef = app.bsky.feed.defs.ReplyRef\nexport type PostReplyRef = app.bsky.feed.post.ReplyRef\nexport type ThreadViewPost = app.bsky.feed.defs.ThreadViewPost\nexport type ThreadgateView = app.bsky.feed.defs.ThreadgateView\nexport type BlockedPost = app.bsky.feed.defs.BlockedPost\nexport type GeneratorView = app.bsky.feed.defs.GeneratorView\nexport type NotFoundPost = app.bsky.feed.defs.NotFoundPost\nexport type PostView = app.bsky.feed.defs.PostView\nexport const isPostViewType = app.bsky.feed.defs.postView.$isTypeOf\n\nexport type GateRecord = app.bsky.feed.threadgate.Main\nexport const isFollowerRuleType =\n app.bsky.feed.threadgate.followerRule.$isTypeOf\nexport const isFollowingRuleType =\n app.bsky.feed.threadgate.followingRule.$isTypeOf\nexport const isListRuleType = app.bsky.feed.threadgate.listRule.$isTypeOf\nexport const isMentionRuleType = app.bsky.feed.threadgate.mentionRule.$isTypeOf\n\nexport type FeedGenRecord = app.bsky.feed.generator.Main\n\n// app.bsky.graph\n\nexport type BlockRecord = app.bsky.graph.block.Main\nexport type FollowRecord = app.bsky.graph.follow.Main\nexport type ListItemRecord = app.bsky.graph.listitem.Main\nexport type ListItemView = app.bsky.graph.defs.ListItemView\nexport type ListRecord = app.bsky.graph.list.Main\nexport type ListView = app.bsky.graph.defs.ListView\nexport type ListViewBasic = app.bsky.graph.defs.ListViewBasic\nexport type StarterPackRecord = app.bsky.graph.starterpack.Main\nexport type StarterPackView = app.bsky.graph.defs.StarterPackView\nexport type StarterPackViewBasic = app.bsky.graph.defs.StarterPackViewBasic\nexport type VerificationRecord = app.bsky.graph.verification.Main\n\n// app.bsky.labeler\n\nexport type LabelerRecord = app.bsky.labeler.service.Main\nexport const isLabelerRecordType = app.bsky.labeler.service.$isTypeOf\nexport type LabelerView = app.bsky.labeler.defs.LabelerView\nexport type LabelerViewDetailed = app.bsky.labeler.defs.LabelerViewDetailed\n\n// app.bsky.notification\n\nexport type NotificationDeclarationRecord =\n app.bsky.notification.declaration.Main\nexport type ActivitySubscription =\n app.bsky.notification.defs.ActivitySubscription\nexport type NotificationRecordDeleted = app.bsky.notification.defs.RecordDeleted\nexport type NotificationView =\n app.bsky.notification.listNotifications.Notification\n\n// app.bsky.richtext\n\nexport const isMentionFacetType = app.bsky.richtext.facet.mention.$isTypeOf\n\n// app.bsky.unspecced\n\nexport type ThreadItemBlocked = app.bsky.unspecced.defs.ThreadItemBlocked\nexport type ThreadItemNoUnauthenticated =\n app.bsky.unspecced.defs.ThreadItemNoUnauthenticated\nexport type ThreadItemNotFound = app.bsky.unspecced.defs.ThreadItemNotFound\nexport type ThreadItemPost = app.bsky.unspecced.defs.ThreadItemPost\n\nexport type ThreadOtherItem = app.bsky.unspecced.getPostThreadOtherV2.ThreadItem\nexport type GetPostThreadV2QueryParams =\n app.bsky.unspecced.getPostThreadV2.$Params\nexport type ThreadItem = app.bsky.unspecced.getPostThreadV2.ThreadItem\n\n// chat.bsky.actor\n\nexport type ChatDeclarationRecord = chat.bsky.actor.declaration.Main\n\n// com.atproto.label\n\nexport type Label = com.atproto.label.defs.Label\nexport const isSelfLabelsType = com.atproto.label.defs.selfLabels.$isTypeOf\n\n// com.atproto.label\n\nexport type StrongRef = com.atproto.repo.strongRef.Main\nexport const validateStrongRef = com.atproto.repo.strongRef.$safeValidate\n\n// com.germnetwork.declaration\n\nexport type GermDeclarationRecord = com.germnetwork.declaration.Main\n\n// site.standard\n\nexport type SiteStandardDocumentRecord = site.standard.document.Main\nexport type SiteStandardPublicationRecord = site.standard.publication.Main\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atproto/bsky",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.238",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Reference implementation of app.bsky App View (Bluesky API)",
|
|
6
6
|
"keywords": [
|
|
@@ -48,9 +48,9 @@
|
|
|
48
48
|
"uint8arrays": "^5.0.0",
|
|
49
49
|
"undici": "^6.19.8",
|
|
50
50
|
"zod": "3.23.8",
|
|
51
|
-
"@atproto-labs/xrpc-utils": "^0.1.0",
|
|
52
51
|
"@atproto-labs/fetch-node": "^0.3.0",
|
|
53
|
-
"@atproto/
|
|
52
|
+
"@atproto-labs/xrpc-utils": "^0.1.0",
|
|
53
|
+
"@atproto/api": "^0.20.9",
|
|
54
54
|
"@atproto/common": "^0.6.1",
|
|
55
55
|
"@atproto/crypto": "^0.5.0",
|
|
56
56
|
"@atproto/did": "^0.5.0",
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"ts-node": "^10.8.2",
|
|
75
75
|
"typescript": "^6.0.3",
|
|
76
76
|
"vitest": "^4.0.16",
|
|
77
|
-
"@atproto/pds": "^0.5.
|
|
77
|
+
"@atproto/pds": "^0.5.2"
|
|
78
78
|
},
|
|
79
79
|
"type": "module",
|
|
80
80
|
"exports": {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { atUri } from '@atproto/lex'
|
|
2
2
|
import { InvalidRequestError, Server } from '@atproto/xrpc-server'
|
|
3
3
|
import { AppContext } from '../../../../context.js'
|
|
4
4
|
import { com } from '../../../../lexicons/index.js'
|
|
@@ -21,7 +21,7 @@ export default function (server: Server, ctx: AppContext) {
|
|
|
21
21
|
throw new InvalidRequestError(`Could not find repo: ${repo}`)
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
const uri =
|
|
24
|
+
const uri = atUri(did, collection, rkey)
|
|
25
25
|
const result = await ctx.hydrator.getRecord(uri, includeTakedowns)
|
|
26
26
|
|
|
27
27
|
if (!result || (cid && result.cid !== cid)) {
|
|
@@ -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, AtUriString, DidString, UriString } from '@atproto/syntax'
|
|
4
5
|
import { DataPlaneClient } from '../data-plane/client/index.js'
|
|
5
6
|
import {
|
|
@@ -1575,12 +1576,8 @@ const isModList = (
|
|
|
1575
1576
|
const labelSubjectsForDid = (dids: DidString[]) => {
|
|
1576
1577
|
return [
|
|
1577
1578
|
...dids,
|
|
1578
|
-
...dids.map((did) =>
|
|
1579
|
-
|
|
1580
|
-
),
|
|
1581
|
-
...dids.map((did) =>
|
|
1582
|
-
AtUri.make(did, app.bsky.actor.status.$type, 'self').toString(),
|
|
1583
|
-
),
|
|
1579
|
+
...dids.map((did) => atUri(did, app.bsky.actor.profile)),
|
|
1580
|
+
...dids.map((did) => atUri(did, app.bsky.actor.status)),
|
|
1584
1581
|
]
|
|
1585
1582
|
}
|
|
1586
1583
|
|
package/src/hydration/label.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AtUriString, DidString, UriString, atUri } from '@atproto/lex'
|
|
2
2
|
import { DataPlaneClient } from '../data-plane/client/index.js'
|
|
3
3
|
import { app, com } from '../lexicons/index.js'
|
|
4
4
|
import { ParsedLabelers } from '../util.js'
|
|
@@ -198,8 +198,8 @@ export class LabelHydrator {
|
|
|
198
198
|
}
|
|
199
199
|
}
|
|
200
200
|
|
|
201
|
-
|
|
202
|
-
return
|
|
201
|
+
function labelerDidToUri<T extends DidString>(did: T) {
|
|
202
|
+
return atUri(did, app.bsky.labeler.service)
|
|
203
203
|
}
|
|
204
204
|
|
|
205
205
|
const IMPERSONATION_LABEL = 'impersonation'
|
package/src/views/index.ts
CHANGED
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
Un$Typed,
|
|
5
5
|
Unknown$TypedObject,
|
|
6
6
|
UriString,
|
|
7
|
+
atUri,
|
|
7
8
|
getBlobCidString,
|
|
8
9
|
} from '@atproto/lex'
|
|
9
10
|
import {
|
|
@@ -66,6 +67,10 @@ import {
|
|
|
66
67
|
ExternalEmbedView,
|
|
67
68
|
FeedViewPost,
|
|
68
69
|
FollowRecord,
|
|
70
|
+
GalleryEmbed,
|
|
71
|
+
GalleryEmbedView,
|
|
72
|
+
GalleryImageEmbed,
|
|
73
|
+
GalleryImageEmbedView,
|
|
69
74
|
GeneratorView,
|
|
70
75
|
GetPostThreadV2QueryParams,
|
|
71
76
|
ImagesEmbed,
|
|
@@ -115,6 +120,8 @@ import {
|
|
|
115
120
|
VideoEmbed,
|
|
116
121
|
VideoEmbedView,
|
|
117
122
|
isExternalEmbedType,
|
|
123
|
+
isGalleryEmbedType,
|
|
124
|
+
isGalleryImageEmbedType,
|
|
118
125
|
isImagesEmbedType,
|
|
119
126
|
isLabelerRecordType,
|
|
120
127
|
isListRuleType,
|
|
@@ -135,6 +142,11 @@ const notificationDeletedRecord =
|
|
|
135
142
|
const notificationDeletedRecordCid =
|
|
136
143
|
'bafyreidad6nyekfa4a67yfb573ptxiv6s7kyxyg2ra6qbbemcruadvtuim'
|
|
137
144
|
|
|
145
|
+
// Soft-limit for `app.bsky.embed.gallery#main.items`. The lexicon's
|
|
146
|
+
// schema-level cap is 20, but clients are expected to enforce a soft limit
|
|
147
|
+
// of 10 today. The AppView trims defensively at the view boundary.
|
|
148
|
+
const GALLERY_SOFT_LIMIT = 10
|
|
149
|
+
|
|
138
150
|
export class Views {
|
|
139
151
|
public imgUriBuilder: ImageUriBuilder = this.opts.imgUriBuilder
|
|
140
152
|
public videoUriBuilder: VideoUriBuilder = this.opts.videoUriBuilder
|
|
@@ -348,11 +360,7 @@ export class Views {
|
|
|
348
360
|
): Un$Typed<ProfileViewBasic> | undefined {
|
|
349
361
|
const actor = state.actors?.get(did)
|
|
350
362
|
if (!actor) return
|
|
351
|
-
const profileUri =
|
|
352
|
-
did,
|
|
353
|
-
app.bsky.actor.profile.$nsid,
|
|
354
|
-
'self',
|
|
355
|
-
).toString()
|
|
363
|
+
const profileUri = atUri(did, app.bsky.actor.profile)
|
|
356
364
|
const labels = [
|
|
357
365
|
...(state.labels?.getBySubject(did) ?? []),
|
|
358
366
|
...(state.labels?.getBySubject(profileUri) ?? []),
|
|
@@ -603,7 +611,7 @@ export class Views {
|
|
|
603
611
|
return undefined
|
|
604
612
|
}
|
|
605
613
|
|
|
606
|
-
const uri =
|
|
614
|
+
const uri = atUri(did, app.bsky.actor.status)
|
|
607
615
|
const labels = state.labels?.getBySubject(uri)
|
|
608
616
|
|
|
609
617
|
const minDuration = 5 * MINUTE
|
|
@@ -838,11 +846,7 @@ export class Views {
|
|
|
838
846
|
const viewer = state.labelerViewers?.get(did)
|
|
839
847
|
const aggs = state.labelerAggs?.get(did)
|
|
840
848
|
|
|
841
|
-
const uri =
|
|
842
|
-
did,
|
|
843
|
-
app.bsky.labeler.service.$type,
|
|
844
|
-
'self',
|
|
845
|
-
).toString()
|
|
849
|
+
const uri = atUri(did, app.bsky.labeler.service)
|
|
846
850
|
const labels = [
|
|
847
851
|
...(state.labels?.getBySubject(uri) ?? []),
|
|
848
852
|
...this.selfLabels({
|
|
@@ -2090,6 +2094,8 @@ export class Views {
|
|
|
2090
2094
|
return this.imagesEmbed(creatorFromUri(postUri), embed)
|
|
2091
2095
|
} else if (isVideoEmbedType(embed)) {
|
|
2092
2096
|
return this.videoEmbed(creatorFromUri(postUri), embed)
|
|
2097
|
+
} else if (isGalleryEmbedType(embed)) {
|
|
2098
|
+
return this.galleryEmbed(creatorFromUri(postUri), embed)
|
|
2093
2099
|
} else if (isExternalEmbedType(embed)) {
|
|
2094
2100
|
return this.externalEmbed(creatorFromUri(postUri), embed, state)
|
|
2095
2101
|
} else if (isRecordEmbedType(embed)) {
|
|
@@ -2133,6 +2139,47 @@ export class Views {
|
|
|
2133
2139
|
})
|
|
2134
2140
|
}
|
|
2135
2141
|
|
|
2142
|
+
galleryEmbed(did: DidString, embed: GalleryEmbed): $Typed<GalleryEmbedView> {
|
|
2143
|
+
// The lexicon's schema-level cap is 20, but clients are expected to
|
|
2144
|
+
// enforce a soft limit of 10. Trim defensively at the view boundary so
|
|
2145
|
+
// viewers see at most 10 items regardless of what was authored.
|
|
2146
|
+
const items = embed.items.slice(0, GALLERY_SOFT_LIMIT).flatMap((item) => {
|
|
2147
|
+
const view = this.galleryItemView(did, item)
|
|
2148
|
+
return view ? [view] : []
|
|
2149
|
+
})
|
|
2150
|
+
return app.bsky.embed.gallery.view.$build({ items })
|
|
2151
|
+
}
|
|
2152
|
+
|
|
2153
|
+
private galleryItemView(
|
|
2154
|
+
did: DidString,
|
|
2155
|
+
item: GalleryEmbed['items'][number],
|
|
2156
|
+
): $Typed<GalleryImageEmbedView> | undefined {
|
|
2157
|
+
if (isGalleryImageEmbedType(item)) {
|
|
2158
|
+
return this.galleryImageView(did, item)
|
|
2159
|
+
}
|
|
2160
|
+
return undefined
|
|
2161
|
+
}
|
|
2162
|
+
|
|
2163
|
+
private galleryImageView(
|
|
2164
|
+
did: DidString,
|
|
2165
|
+
item: GalleryImageEmbed,
|
|
2166
|
+
): $Typed<GalleryImageEmbedView> {
|
|
2167
|
+
return app.bsky.embed.gallery.viewImage.$build({
|
|
2168
|
+
thumbnail: this.imgUriBuilder.getPresetUri(
|
|
2169
|
+
'feed_thumbnail',
|
|
2170
|
+
did,
|
|
2171
|
+
getBlobCidString(item.image),
|
|
2172
|
+
),
|
|
2173
|
+
fullsize: this.imgUriBuilder.getPresetUri(
|
|
2174
|
+
'feed_fullsize',
|
|
2175
|
+
did,
|
|
2176
|
+
getBlobCidString(item.image),
|
|
2177
|
+
),
|
|
2178
|
+
alt: item.alt,
|
|
2179
|
+
aspectRatio: item.aspectRatio,
|
|
2180
|
+
})
|
|
2181
|
+
}
|
|
2182
|
+
|
|
2136
2183
|
externalEmbed(
|
|
2137
2184
|
did: DidString,
|
|
2138
2185
|
embed: ExternalEmbed,
|
|
@@ -2149,19 +2196,25 @@ export class Views {
|
|
|
2149
2196
|
state,
|
|
2150
2197
|
assumedUrl: embed.external.uri,
|
|
2151
2198
|
})
|
|
2199
|
+
// The author-supplied (scraped) thumbnail always wins when present —
|
|
2200
|
+
// it's the per-article OG image. Only when the embed has no thumb do
|
|
2201
|
+
// we fall back to whatever the SS overlay provides (the document's
|
|
2202
|
+
// `coverImage`). `thumb` is set after the `...ssView` spread so the
|
|
2203
|
+
// overlay's `coverImage`-derived thumb can't clobber the embed's.
|
|
2204
|
+
const embeddedThumb = embed.external.thumb
|
|
2205
|
+
? this.imgUriBuilder.getPresetUri(
|
|
2206
|
+
'feed_thumbnail',
|
|
2207
|
+
did,
|
|
2208
|
+
getBlobCidString(embed.external.thumb),
|
|
2209
|
+
)
|
|
2210
|
+
: undefined
|
|
2152
2211
|
return app.bsky.embed.external.view.$build({
|
|
2153
2212
|
external: {
|
|
2154
2213
|
uri: embed.external.uri,
|
|
2155
2214
|
title: embed.external.title,
|
|
2156
2215
|
description: embed.external.description,
|
|
2157
|
-
thumb: embed.external.thumb
|
|
2158
|
-
? this.imgUriBuilder.getPresetUri(
|
|
2159
|
-
'feed_thumbnail',
|
|
2160
|
-
did,
|
|
2161
|
-
getBlobCidString(embed.external.thumb),
|
|
2162
|
-
)
|
|
2163
|
-
: undefined,
|
|
2164
2216
|
...ssView,
|
|
2217
|
+
thumb: embeddedThumb ?? ssView?.thumb,
|
|
2165
2218
|
associatedRefs: embed.external.associatedRefs,
|
|
2166
2219
|
},
|
|
2167
2220
|
})
|
|
@@ -2522,11 +2575,14 @@ export class Views {
|
|
|
2522
2575
|
let mediaEmbed:
|
|
2523
2576
|
| $Typed<ImagesEmbedView>
|
|
2524
2577
|
| $Typed<VideoEmbedView>
|
|
2578
|
+
| $Typed<GalleryEmbedView>
|
|
2525
2579
|
| $Typed<ExternalEmbedView>
|
|
2526
2580
|
if (isImagesEmbedType(embed.media)) {
|
|
2527
2581
|
mediaEmbed = this.imagesEmbed(creator, embed.media)
|
|
2528
2582
|
} else if (isVideoEmbedType(embed.media)) {
|
|
2529
2583
|
mediaEmbed = this.videoEmbed(creator, embed.media)
|
|
2584
|
+
} else if (isGalleryEmbedType(embed.media)) {
|
|
2585
|
+
mediaEmbed = this.galleryEmbed(creator, embed.media)
|
|
2530
2586
|
} else if (isExternalEmbedType(embed.media)) {
|
|
2531
2587
|
mediaEmbed = this.externalEmbed(creator, embed.media, state)
|
|
2532
2588
|
} else {
|
package/src/views/types.ts
CHANGED
|
@@ -33,6 +33,13 @@ export const isVideoEmbedType = app.bsky.embed.video.$isTypeOf
|
|
|
33
33
|
export type VideoEmbed = app.bsky.embed.video.Main
|
|
34
34
|
export type VideoEmbedView = app.bsky.embed.video.View
|
|
35
35
|
|
|
36
|
+
export const isGalleryEmbedType = app.bsky.embed.gallery.$isTypeOf
|
|
37
|
+
export type GalleryEmbed = app.bsky.embed.gallery.Main
|
|
38
|
+
export type GalleryEmbedView = app.bsky.embed.gallery.View
|
|
39
|
+
export const isGalleryImageEmbedType = app.bsky.embed.gallery.image.$isTypeOf
|
|
40
|
+
export type GalleryImageEmbed = app.bsky.embed.gallery.Image
|
|
41
|
+
export type GalleryImageEmbedView = app.bsky.embed.gallery.ViewImage
|
|
42
|
+
|
|
36
43
|
export const isExternalEmbedType = app.bsky.embed.external.$isTypeOf
|
|
37
44
|
export type ExternalEmbed = app.bsky.embed.external.Main
|
|
38
45
|
export type ExternalEmbedView = app.bsky.embed.external.View
|
|
@@ -57,6 +64,7 @@ export type RecordWithMediaEmbedView = app.bsky.embed.recordWithMedia.View
|
|
|
57
64
|
export type Embed =
|
|
58
65
|
| ImagesEmbed
|
|
59
66
|
| VideoEmbed
|
|
67
|
+
| GalleryEmbed
|
|
60
68
|
| ExternalEmbed
|
|
61
69
|
| RecordEmbed
|
|
62
70
|
| RecordWithMedia
|
|
@@ -64,6 +72,7 @@ export type Embed =
|
|
|
64
72
|
export type EmbedView =
|
|
65
73
|
| ImagesEmbedView
|
|
66
74
|
| VideoEmbedView
|
|
75
|
+
| GalleryEmbedView
|
|
67
76
|
| ExternalEmbedView
|
|
68
77
|
| RecordEmbedView
|
|
69
78
|
| RecordWithMediaView
|
|
@@ -1,5 +1,256 @@
|
|
|
1
1
|
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
|
2
2
|
|
|
3
|
+
exports[`pds posts views > embeds gallery with record. 1`] = `
|
|
4
|
+
{
|
|
5
|
+
"author": {
|
|
6
|
+
"associated": {
|
|
7
|
+
"activitySubscription": {
|
|
8
|
+
"allowSubscriptions": "followers",
|
|
9
|
+
},
|
|
10
|
+
},
|
|
11
|
+
"avatar": "https://bsky.public.url/img/avatar/plain/user(1)/cids(1)",
|
|
12
|
+
"createdAt": "1970-01-01T00:00:00.000Z",
|
|
13
|
+
"did": "user(0)",
|
|
14
|
+
"displayName": "ali",
|
|
15
|
+
"handle": "alice.test",
|
|
16
|
+
"labels": [
|
|
17
|
+
{
|
|
18
|
+
"cid": "cids(2)",
|
|
19
|
+
"cts": "1970-01-01T00:00:00.000Z",
|
|
20
|
+
"src": "user(0)",
|
|
21
|
+
"uri": "record(1)",
|
|
22
|
+
"val": "self-label-a",
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"cid": "cids(2)",
|
|
26
|
+
"cts": "1970-01-01T00:00:00.000Z",
|
|
27
|
+
"src": "user(0)",
|
|
28
|
+
"uri": "record(1)",
|
|
29
|
+
"val": "self-label-b",
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
"bookmarkCount": 0,
|
|
34
|
+
"cid": "cids(0)",
|
|
35
|
+
"embed": {
|
|
36
|
+
"$type": "app.bsky.embed.recordWithMedia#view",
|
|
37
|
+
"media": {
|
|
38
|
+
"$type": "app.bsky.embed.gallery#view",
|
|
39
|
+
"items": [
|
|
40
|
+
{
|
|
41
|
+
"$type": "app.bsky.embed.gallery#viewImage",
|
|
42
|
+
"alt": "landscape",
|
|
43
|
+
"aspectRatio": {
|
|
44
|
+
"height": 3,
|
|
45
|
+
"width": 4,
|
|
46
|
+
},
|
|
47
|
+
"fullsize": "https://bsky.public.url/img/feed_fullsize/plain/user(1)/cids(3)",
|
|
48
|
+
"thumbnail": "https://bsky.public.url/img/feed_thumbnail/plain/user(1)/cids(3)",
|
|
49
|
+
},
|
|
50
|
+
],
|
|
51
|
+
},
|
|
52
|
+
"record": {
|
|
53
|
+
"record": {
|
|
54
|
+
"$type": "app.bsky.embed.record#viewRecord",
|
|
55
|
+
"author": {
|
|
56
|
+
"associated": {
|
|
57
|
+
"activitySubscription": {
|
|
58
|
+
"allowSubscriptions": "followers",
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
"avatar": "https://bsky.public.url/img/avatar/plain/user(1)/cids(1)",
|
|
62
|
+
"createdAt": "1970-01-01T00:00:00.000Z",
|
|
63
|
+
"did": "user(0)",
|
|
64
|
+
"displayName": "ali",
|
|
65
|
+
"handle": "alice.test",
|
|
66
|
+
"labels": [
|
|
67
|
+
{
|
|
68
|
+
"cid": "cids(2)",
|
|
69
|
+
"cts": "1970-01-01T00:00:00.000Z",
|
|
70
|
+
"src": "user(0)",
|
|
71
|
+
"uri": "record(1)",
|
|
72
|
+
"val": "self-label-a",
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"cid": "cids(2)",
|
|
76
|
+
"cts": "1970-01-01T00:00:00.000Z",
|
|
77
|
+
"src": "user(0)",
|
|
78
|
+
"uri": "record(1)",
|
|
79
|
+
"val": "self-label-b",
|
|
80
|
+
},
|
|
81
|
+
],
|
|
82
|
+
},
|
|
83
|
+
"cid": "cids(4)",
|
|
84
|
+
"embeds": [],
|
|
85
|
+
"indexedAt": "1970-01-01T00:00:00.000Z",
|
|
86
|
+
"labels": [],
|
|
87
|
+
"likeCount": 0,
|
|
88
|
+
"quoteCount": 1,
|
|
89
|
+
"replyCount": 0,
|
|
90
|
+
"repostCount": 0,
|
|
91
|
+
"uri": "record(2)",
|
|
92
|
+
"value": {
|
|
93
|
+
"$type": "app.bsky.feed.post",
|
|
94
|
+
"createdAt": "1970-01-01T00:00:00.000Z",
|
|
95
|
+
"text": "embedded",
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
"indexedAt": "1970-01-01T00:00:00.000Z",
|
|
101
|
+
"labels": [],
|
|
102
|
+
"likeCount": 0,
|
|
103
|
+
"quoteCount": 0,
|
|
104
|
+
"record": {
|
|
105
|
+
"$type": "app.bsky.feed.post",
|
|
106
|
+
"createdAt": "1970-01-01T00:00:00.000Z",
|
|
107
|
+
"embed": {
|
|
108
|
+
"$type": "app.bsky.embed.recordWithMedia",
|
|
109
|
+
"media": {
|
|
110
|
+
"$type": "app.bsky.embed.gallery",
|
|
111
|
+
"items": [
|
|
112
|
+
{
|
|
113
|
+
"$type": "app.bsky.embed.gallery#image",
|
|
114
|
+
"alt": "landscape",
|
|
115
|
+
"aspectRatio": {
|
|
116
|
+
"height": 3,
|
|
117
|
+
"width": 4,
|
|
118
|
+
},
|
|
119
|
+
"image": {
|
|
120
|
+
"$type": "blob",
|
|
121
|
+
"mimeType": "image/jpeg",
|
|
122
|
+
"ref": {
|
|
123
|
+
"$link": "cids(3)",
|
|
124
|
+
},
|
|
125
|
+
"size": 4114,
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
},
|
|
130
|
+
"record": {
|
|
131
|
+
"record": {
|
|
132
|
+
"cid": "cids(4)",
|
|
133
|
+
"uri": "record(2)",
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
"text": "gallery + record",
|
|
138
|
+
},
|
|
139
|
+
"replyCount": 0,
|
|
140
|
+
"repostCount": 0,
|
|
141
|
+
"uri": "record(0)",
|
|
142
|
+
}
|
|
143
|
+
`;
|
|
144
|
+
|
|
145
|
+
exports[`pds posts views > embeds gallery. 1`] = `
|
|
146
|
+
{
|
|
147
|
+
"author": {
|
|
148
|
+
"associated": {
|
|
149
|
+
"activitySubscription": {
|
|
150
|
+
"allowSubscriptions": "followers",
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
"avatar": "https://bsky.public.url/img/avatar/plain/user(1)/cids(1)",
|
|
154
|
+
"createdAt": "1970-01-01T00:00:00.000Z",
|
|
155
|
+
"did": "user(0)",
|
|
156
|
+
"displayName": "ali",
|
|
157
|
+
"handle": "alice.test",
|
|
158
|
+
"labels": [
|
|
159
|
+
{
|
|
160
|
+
"cid": "cids(2)",
|
|
161
|
+
"cts": "1970-01-01T00:00:00.000Z",
|
|
162
|
+
"src": "user(0)",
|
|
163
|
+
"uri": "record(1)",
|
|
164
|
+
"val": "self-label-a",
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"cid": "cids(2)",
|
|
168
|
+
"cts": "1970-01-01T00:00:00.000Z",
|
|
169
|
+
"src": "user(0)",
|
|
170
|
+
"uri": "record(1)",
|
|
171
|
+
"val": "self-label-b",
|
|
172
|
+
},
|
|
173
|
+
],
|
|
174
|
+
},
|
|
175
|
+
"bookmarkCount": 0,
|
|
176
|
+
"cid": "cids(0)",
|
|
177
|
+
"embed": {
|
|
178
|
+
"$type": "app.bsky.embed.gallery#view",
|
|
179
|
+
"items": [
|
|
180
|
+
{
|
|
181
|
+
"$type": "app.bsky.embed.gallery#viewImage",
|
|
182
|
+
"alt": "landscape",
|
|
183
|
+
"aspectRatio": {
|
|
184
|
+
"height": 3,
|
|
185
|
+
"width": 4,
|
|
186
|
+
},
|
|
187
|
+
"fullsize": "https://bsky.public.url/img/feed_fullsize/plain/user(1)/cids(3)",
|
|
188
|
+
"thumbnail": "https://bsky.public.url/img/feed_thumbnail/plain/user(1)/cids(3)",
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"$type": "app.bsky.embed.gallery#viewImage",
|
|
192
|
+
"alt": "portrait",
|
|
193
|
+
"aspectRatio": {
|
|
194
|
+
"height": 4,
|
|
195
|
+
"width": 3,
|
|
196
|
+
},
|
|
197
|
+
"fullsize": "https://bsky.public.url/img/feed_fullsize/plain/user(1)/cids(1)",
|
|
198
|
+
"thumbnail": "https://bsky.public.url/img/feed_thumbnail/plain/user(1)/cids(1)",
|
|
199
|
+
},
|
|
200
|
+
],
|
|
201
|
+
},
|
|
202
|
+
"indexedAt": "1970-01-01T00:00:00.000Z",
|
|
203
|
+
"labels": [],
|
|
204
|
+
"likeCount": 0,
|
|
205
|
+
"quoteCount": 0,
|
|
206
|
+
"record": {
|
|
207
|
+
"$type": "app.bsky.feed.post",
|
|
208
|
+
"createdAt": "1970-01-01T00:00:00.000Z",
|
|
209
|
+
"embed": {
|
|
210
|
+
"$type": "app.bsky.embed.gallery",
|
|
211
|
+
"items": [
|
|
212
|
+
{
|
|
213
|
+
"$type": "app.bsky.embed.gallery#image",
|
|
214
|
+
"alt": "landscape",
|
|
215
|
+
"aspectRatio": {
|
|
216
|
+
"height": 3,
|
|
217
|
+
"width": 4,
|
|
218
|
+
},
|
|
219
|
+
"image": {
|
|
220
|
+
"$type": "blob",
|
|
221
|
+
"mimeType": "image/jpeg",
|
|
222
|
+
"ref": {
|
|
223
|
+
"$link": "cids(3)",
|
|
224
|
+
},
|
|
225
|
+
"size": 4114,
|
|
226
|
+
},
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"$type": "app.bsky.embed.gallery#image",
|
|
230
|
+
"alt": "portrait",
|
|
231
|
+
"aspectRatio": {
|
|
232
|
+
"height": 4,
|
|
233
|
+
"width": 3,
|
|
234
|
+
},
|
|
235
|
+
"image": {
|
|
236
|
+
"$type": "blob",
|
|
237
|
+
"mimeType": "image/jpeg",
|
|
238
|
+
"ref": {
|
|
239
|
+
"$link": "cids(1)",
|
|
240
|
+
},
|
|
241
|
+
"size": 3976,
|
|
242
|
+
},
|
|
243
|
+
},
|
|
244
|
+
],
|
|
245
|
+
},
|
|
246
|
+
"text": "gallery",
|
|
247
|
+
},
|
|
248
|
+
"replyCount": 0,
|
|
249
|
+
"repostCount": 0,
|
|
250
|
+
"uri": "record(0)",
|
|
251
|
+
}
|
|
252
|
+
`;
|
|
253
|
+
|
|
3
254
|
exports[`pds posts views > embeds video with record. 1`] = `
|
|
4
255
|
{
|
|
5
256
|
"author": {
|