From 19eb695b086cff62ad460c518c9348f191c41c74 Mon Sep 17 00:00:00 2001 From: ari Date: Sun, 20 Apr 2025 00:42:56 -0400 Subject: [PATCH] I guess we displaying posts now --- .env | 3 + .gitignore | 136 --------- index.html | 11 - .../svelte-native-jsx.d.ts | 32 ++ .../svelte-shims-v4.d.ts | 287 ++++++++++++++++++ node_modules/.vite/_svelte_metadata.json | 1 + node_modules/.vite/deps/_metadata.json | 8 + node_modules/.vite/deps/package.json | 3 + web/{README.md => README_VITE.md} | 0 web/index.html | 1 - web/public/favicon.ico | Bin 0 -> 15406 bytes web/public/witchcraft.ico | Bin 111836 -> 0 bytes web/src/lib/PostComponent.svelte | 66 ++-- web/src/lib/pdsfetch.ts | 10 +- 14 files changed, 387 insertions(+), 171 deletions(-) create mode 100644 .env delete mode 100644 .gitignore delete mode 100644 index.html create mode 100644 node_modules/.svelte2tsx-language-server-files/svelte-native-jsx.d.ts create mode 100644 node_modules/.svelte2tsx-language-server-files/svelte-shims-v4.d.ts create mode 100644 node_modules/.vite/_svelte_metadata.json create mode 100644 node_modules/.vite/deps/_metadata.json create mode 100644 node_modules/.vite/deps/package.json rename web/{README.md => README_VITE.md} (100%) create mode 100644 web/public/favicon.ico delete mode 100644 web/public/witchcraft.ico diff --git a/.env b/.env new file mode 100644 index 0000000..163714d --- /dev/null +++ b/.env @@ -0,0 +1,3 @@ +DATE_START = 2025-04-15 +PDS_URL = https://pds.witchcraft.systems +PORT = 3000 diff --git a/.gitignore b/.gitignore deleted file mode 100644 index b9ed5c4..0000000 --- a/.gitignore +++ /dev/null @@ -1,136 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-debug.log* -.pnpm-debug.log* - -# Diagnostic reports (https://nodejs.org/api/report.html) -report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage -*.lcov - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# Snowpack dependency directory (https://snowpack.dev/) -web_modules/ - -# TypeScript cache -*.tsbuildinfo - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional stylelint cache -.stylelintcache - -# Microbundle cache -.rpt2_cache/ -.rts2_cache_cjs/ -.rts2_cache_es/ -.rts2_cache_umd/ - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variable files -.env -.env.development.local -.env.test.local -.env.production.local -.env.local - -# parcel-bundler cache (https://parceljs.org/) -.cache -.parcel-cache - -# Next.js build output -.next -out - -# Nuxt.js build / generate output -.nuxt -dist - -# Gatsby files -.cache/ -# Comment in the public line in if your project uses Gatsby and not Next.js -# https://nextjs.org/blog/next-9-1#public-directory-support -# public - -# vuepress build output -.vuepress/dist - -# vuepress v2.x temp and cache directory -.temp -.cache - -# vitepress build output -**/.vitepress/dist - -# vitepress cache directory -**/.vitepress/cache - -# Docusaurus cache and generated files -.docusaurus - -# Serverless directories -.serverless/ - -# FuseBox cache -.fusebox/ - -# DynamoDB Local files -.dynamodb/ - -# TernJS port file -.tern-port - -# Stores VSCode versions used for testing VSCode extensions -.vscode-test - -# yarn v2 -.yarn/cache -.yarn/unplugged -.yarn/build-state.yml -.yarn/install-state.gz -.pnp.* \ No newline at end of file diff --git a/index.html b/index.html deleted file mode 100644 index e9cd8ac..0000000 --- a/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - Alpine.js Test - - - $POSTSPLACEHOLDER - - \ No newline at end of file diff --git a/node_modules/.svelte2tsx-language-server-files/svelte-native-jsx.d.ts b/node_modules/.svelte2tsx-language-server-files/svelte-native-jsx.d.ts new file mode 100644 index 0000000..0c08d71 --- /dev/null +++ b/node_modules/.svelte2tsx-language-server-files/svelte-native-jsx.d.ts @@ -0,0 +1,32 @@ +declare namespace svelteNative.JSX { + + // Every namespace eligible for use needs to implement the following two functions + function mapElementTag( + tag: string + ): any; + + function createElement( + element: Key | undefined | null, attrs: Elements[Key] + ): any; + function createElement( + element: Key | undefined | null, attrEnhancers: T, attrs: Elements[Key] & T + ): any; + + + /* svelte specific */ + interface ElementClass { + $$prop_def: any; + } + + interface ElementAttributesProperty { + $$prop_def: any; // specify the property name to use + } + + // Add empty IntrinsicAttributes to prevent fallback to the one in the JSX namespace + interface IntrinsicAttributes { + } + + interface IntrinsicElements { + [name: string]: { [name: string]: any }; + } +} \ No newline at end of file diff --git a/node_modules/.svelte2tsx-language-server-files/svelte-shims-v4.d.ts b/node_modules/.svelte2tsx-language-server-files/svelte-shims-v4.d.ts new file mode 100644 index 0000000..fcaf92f --- /dev/null +++ b/node_modules/.svelte2tsx-language-server-files/svelte-shims-v4.d.ts @@ -0,0 +1,287 @@ +// Whenever a ambient declaration changes, its number should be increased +// This way, we avoid the situation where multiple ambient versions of svelte2tsx +// are loaded and their declarations conflict each other +// See https://github.com/sveltejs/language-tools/issues/1059 for an example bug that stems from it +// If you change anything in this file, think about whether or not it should be backported to svelte-shims.d.ts + +type AConstructorTypeOf = new (...args: U) => T; + +/** @internal PRIVATE API, DO NOT USE */ +type SvelteActionReturnType = { + update?: (args: any) => void, + destroy?: () => void +} | void + +/** @internal PRIVATE API, DO NOT USE */ +type SvelteTransitionConfig = { + delay?: number, + duration?: number, + easing?: (t: number) => number, + css?: (t: number, u: number) => string, + tick?: (t: number, u: number) => void +} + +/** @internal PRIVATE API, DO NOT USE */ +type SvelteTransitionReturnType = SvelteTransitionConfig | (() => SvelteTransitionConfig) + +/** @internal PRIVATE API, DO NOT USE */ +type SvelteAnimationReturnType = { + delay?: number, + duration?: number, + easing?: (t: number) => number, + css?: (t: number, u: number) => string, + tick?: (t: number, u: number) => void +} + +/** @internal PRIVATE API, DO NOT USE */ +type SvelteWithOptionalProps = Omit & Partial>; +/** @internal PRIVATE API, DO NOT USE */ +type SvelteAllProps = { [index: string]: any } +/** @internal PRIVATE API, DO NOT USE */ +type SveltePropsAnyFallback = {[K in keyof Props]: Props[K] extends never ? never : Props[K] extends undefined ? any : Props[K]} +/** @internal PRIVATE API, DO NOT USE */ +type SvelteSlotsAnyFallback = {[K in keyof Slots]: {[S in keyof Slots[K]]: Slots[K][S] extends undefined ? any : Slots[K][S]}} +/** @internal PRIVATE API, DO NOT USE */ +type SvelteRestProps = { [index: string]: any } +/** @internal PRIVATE API, DO NOT USE */ +type SvelteSlots = { [index: string]: any } +/** @internal PRIVATE API, DO NOT USE */ +type SvelteStore = { subscribe: (run: (value: T) => any, invalidate?: any) => any } + +// Forces TypeScript to look into the type which results in a better representation of it +// which helps for error messages and is necessary for d.ts file transformation so that +// no ambient type references are left in the output +/** @internal PRIVATE API, DO NOT USE */ +type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; + +/** @internal PRIVATE API, DO NOT USE */ +type KeysMatching = {[K in keyof Obj]-?: Obj[K] extends V ? K : never}[keyof Obj] +/** @internal PRIVATE API, DO NOT USE */ +declare type __sveltets_2_CustomEvents = {[K in KeysMatching]: T[K] extends CustomEvent ? T[K]['detail']: T[K]} + +declare function __sveltets_2_ensureRightProps(props: Props): {}; +declare function __sveltets_2_instanceOf(type: AConstructorTypeOf): T; +declare function __sveltets_2_allPropsType(): SvelteAllProps +declare function __sveltets_2_restPropsType(): SvelteRestProps +declare function __sveltets_2_slotsType(slots: Slots): Record; + +// Overload of the following two functions is necessary. +// An empty array of optionalProps makes OptionalProps type any, which means we lose the prop typing. +// optionalProps need to be first or its type cannot be infered correctly. + +declare function __sveltets_2_partial( + render: {props: Props, events: Events, slots: Slots, exports?: Exports, bindings?: Bindings } +): {props: Expand>, events: Events, slots: Expand>, exports?: Exports, bindings?: Bindings } +declare function __sveltets_2_partial( + optionalProps: OptionalProps[], + render: {props: Props, events: Events, slots: Slots, exports?: Exports, bindings?: Bindings } +): {props: Expand, OptionalProps>>, events: Events, slots: Expand>, exports?: Exports, bindings?: Bindings } + +declare function __sveltets_2_partial_with_any( + render: {props: Props, events: Events, slots: Slots, exports?: Exports, bindings?: Bindings } +): {props: Expand & SvelteAllProps>, events: Events, slots: Expand>, exports?: Exports, bindings?: Bindings } +declare function __sveltets_2_partial_with_any( + optionalProps: OptionalProps[], + render: {props: Props, events: Events, slots: Slots, exports?: Exports, bindings?: Bindings } +): {props: Expand, OptionalProps> & SvelteAllProps>, events: Events, slots: Expand>, exports?: Exports, bindings?: Bindings } + + +declare function __sveltets_2_with_any( + render: {props: Props, events: Events, slots: Slots, exports?: Exports, bindings?: Bindings } +): {props: Expand, events: Events, slots: Slots, exports?: Exports, bindings?: Bindings } + +declare function __sveltets_2_with_any_event( + render: {props: Props, events: Events, slots: Slots, exports?: Exports, bindings?: Bindings } +): {props: Props, events: Events & {[evt: string]: CustomEvent;}, slots: Slots, exports?: Exports, bindings?: Bindings } + +declare function __sveltets_2_store_get(store: SvelteStore): T +declare function __sveltets_2_store_get | undefined | null>(store: Store): Store extends SvelteStore ? T : Store; +declare function __sveltets_2_any(dummy: any): any; +declare function __sveltets_2_invalidate(getValue: () => T): T + +declare function __sveltets_2_mapWindowEvent( + event: K +): HTMLBodyElementEventMap[K]; +declare function __sveltets_2_mapBodyEvent( + event: K +): WindowEventMap[K]; +declare function __sveltets_2_mapElementEvent( + event: K +): HTMLElementEventMap[K]; + +declare function __sveltets_2_bubbleEventDef( + events: Events, eventKey: K +): Events[K]; +declare function __sveltets_2_bubbleEventDef( + events: any, eventKey: string +): any; + +declare const __sveltets_2_customEvent: CustomEvent; +declare function __sveltets_2_toEventTypings(): {[Key in keyof Typings]: CustomEvent}; + +declare function __sveltets_2_unionType(t1: T1, t2: T2): T1 | T2; +declare function __sveltets_2_unionType(t1: T1, t2: T2, t3: T3): T1 | T2 | T3; +declare function __sveltets_2_unionType(t1: T1, t2: T2, t3: T3, t4: T4): T1 | T2 | T3 | T4; +declare function __sveltets_2_unionType(...types: any[]): any; + +declare function __sveltets_2_createSvelte2TsxComponent( + render: {props: Props, events: Events, slots: Slots } +): typeof import("svelte").SvelteComponent; + +declare function __sveltets_2_unwrapArr(arr: ArrayLike): T +declare function __sveltets_2_unwrapPromiseLike(promise: PromiseLike | T): T + +// v2 +declare function __sveltets_2_createCreateSlot>>(): (slotName: SlotName, attrs: Slots[SlotName]) => Record; +declare function __sveltets_2_createComponentAny(props: Record): import("svelte").SvelteComponent; + +declare function __sveltets_2_any(...dummy: any[]): any; +declare function __sveltets_2_empty(...dummy: any[]): {}; +declare function __sveltets_2_union(t1:T1,t2?:T2,t3?:T3,t4?:T4,t5?:T5,t6?:T6,t7?:T7,t8?:T8,t9?:T9,t10?:T10): T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8 & T9 & T10; +declare function __sveltets_2_nonNullable(type: T): NonNullable; + +declare function __sveltets_2_cssProp(prop: Record): {}; + +// @ts-ignore Svelte v3/v4 don't have this +declare function __sveltets_2_ensureSnippet(val: ReturnType | undefined | null): any; + +/** @internal PRIVATE API, DO NOT USE */ +type __sveltets_2_SvelteAnimationReturnType = { + delay?: number, + duration?: number, + easing?: (t: number) => number, + css?: (t: number, u: number) => string, + tick?: (t: number, u: number) => void +} +declare var __sveltets_2_AnimationMove: { from: DOMRect, to: DOMRect } +declare function __sveltets_2_ensureAnimation(animationCall: __sveltets_2_SvelteAnimationReturnType): {}; + +/** @internal PRIVATE API, DO NOT USE */ +type __sveltets_2_SvelteActionReturnType = { + update?: (args: any) => void, + destroy?: () => void, + $$_attributes?: Record, +} | void +declare function __sveltets_2_ensureAction(actionCall: T): T extends {$$_attributes?: any} ? T['$$_attributes'] : {}; + +/** @internal PRIVATE API, DO NOT USE */ +type __sveltets_2_SvelteTransitionConfig = { + delay?: number, + duration?: number, + easing?: (t: number) => number, + css?: (t: number, u: number) => string, + tick?: (t: number, u: number) => void +} +/** @internal PRIVATE API, DO NOT USE */ +type __sveltets_2_SvelteTransitionReturnType = __sveltets_2_SvelteTransitionConfig | (() => __sveltets_2_SvelteTransitionConfig) +declare function __sveltets_2_ensureTransition(transitionCall: __sveltets_2_SvelteTransitionReturnType): {}; + +// Includes undefined and null for all types as all usages also allow these +declare function __sveltets_2_ensureType(type: AConstructorTypeOf, el: T | undefined | null): {}; +declare function __sveltets_2_ensureType(type1: AConstructorTypeOf, type2: AConstructorTypeOf, el: T1 | T2 | undefined | null): {}; + +// The following is necessary because there are two clashing errors that can't be solved at the same time +// when using Svelte2TsxComponent, more precisely the event typings in +// __sveltets_2_ensureComponent _SvelteComponent>(type: T): T; +// If we type it as "any", we have an error when using sth like {a: CustomEvent} +// If we type it as "{}", we have an error when using sth like {[evt: string]: CustomEvent} +// If we type it as "unknown", we get all kinds of follow up errors which we want to avoid +// Therefore introduce two more base classes just for this case. +/** + * Ambient type only used for intellisense, DO NOT USE IN YOUR PROJECT + */ +declare type ATypedSvelteComponent = { + /** + * @internal This is for type checking capabilities only + * and does not exist at runtime. Don't use this property. + */ + $$prop_def: any; + /** + * @internal This is for type checking capabilities only + * and does not exist at runtime. Don't use this property. + */ + $$events_def: any; + /** + * @internal This is for type checking capabilities only + * and does not exist at runtime. Don't use this property. + */ + $$slot_def: any; + + $on(event: string, handler: any): () => void; +} +/** + * Ambient type only used for intellisense, DO NOT USE IN YOUR PROJECT. + * + * If you're looking for the type of a Svelte Component, use `SvelteComponent` and `ComponentType` instead: + * + * ```ts + * import type { ComponentType, SvelteComponent } from "svelte"; + * let myComponentConstructor: ComponentType = ..; + * ``` + */ +declare type ConstructorOfATypedSvelteComponent = new (args: {target: any, props?: any}) => ATypedSvelteComponent +// Usage note: Cannot properly transform generic function components to class components due to TypeScript limitations +declare function __sveltets_2_ensureComponent< + T extends + | ConstructorOfATypedSvelteComponent + | (typeof import('svelte') extends { mount: any } + ? // @ts-ignore svelte.Component doesn't exist in Svelte 4 + import('svelte').Component + : never) + | null + | undefined +>( + type: T +): NonNullable< + T extends ConstructorOfATypedSvelteComponent + ? T + : typeof import('svelte') extends { mount: any } + ? // @ts-ignore svelte.Component doesn't exist in Svelte 4 + T extends import('svelte').Component< + infer Props extends Record, + infer Exports extends Record, + infer Bindings extends string + > + ? new ( + options: import('svelte').ComponentConstructorOptions + ) => import('svelte').SvelteComponent & + Exports & { $$bindings: Bindings } + : never + : never +>; + +declare function __sveltets_2_ensureArray | Iterable>(array: T): T extends ArrayLike ? U[] : T extends Iterable ? Iterable : any[]; + +type __sveltets_2_PropsWithChildren = Props & + (Slots extends { default: any } + // This is unfortunate because it means "accepts no props" turns into "accepts any prop" + // but the alternative is non-fixable type errors because of the way TypeScript index + // signatures work (they will always take precedence and make an impossible-to-satisfy children type). + ? Props extends Record + ? any + : { children?: any } + : {}); +declare function __sveltets_2_runes_constructor(render: {props: Props }): import("svelte").ComponentConstructorOptions; + +declare function __sveltets_2_get_set_binding(get: (() => T) | null | undefined, set: (t: T) => void): T; + +declare function __sveltets_$$bindings(...bindings: Bindings): Bindings[number]; + +declare function __sveltets_2_fn_component< + Props extends Record, Exports extends Record, Bindings extends string + // @ts-ignore Svelte 5 only +>(klass: {props: Props, exports?: Exports, bindings?: Bindings }): import('svelte').Component; + +interface __sveltets_2_IsomorphicComponent = any, Events extends Record = any, Slots extends Record = any, Exports = {}, Bindings = string> { + new (options: import('svelte').ComponentConstructorOptions): import('svelte').SvelteComponent & { $$bindings?: Bindings } & Exports; + (internal: unknown, props: Props extends Record ? {$$events?: Events, $$slots?: Slots} : Props & {$$events?: Events, $$slots?: Slots}): Exports & { $set?: any, $on?: any }; + z_$$bindings?: Bindings; +} + +declare function __sveltets_2_isomorphic_component< + Props extends Record, Events extends Record, Slots extends Record, Exports extends Record, Bindings extends string +>(klass: {props: Props, events: Events, slots: Slots, exports?: Exports, bindings?: Bindings }): __sveltets_2_IsomorphicComponent; + +declare function __sveltets_2_isomorphic_component_slots< + Props extends Record, Events extends Record, Slots extends Record, Exports extends Record, Bindings extends string +>(klass: {props: Props, events: Events, slots: Slots, exports?: Exports, bindings?: Bindings }): __sveltets_2_IsomorphicComponent<__sveltets_2_PropsWithChildren, Events, Slots, Exports, Bindings>; diff --git a/node_modules/.vite/_svelte_metadata.json b/node_modules/.vite/_svelte_metadata.json new file mode 100644 index 0000000..57cd1d8 --- /dev/null +++ b/node_modules/.vite/_svelte_metadata.json @@ -0,0 +1 @@ +{"compilerOptions":{"css":"external","dev":true,"hmr":true},"extensions":[".svelte"]} \ No newline at end of file diff --git a/node_modules/.vite/deps/_metadata.json b/node_modules/.vite/deps/_metadata.json new file mode 100644 index 0000000..0411d82 --- /dev/null +++ b/node_modules/.vite/deps/_metadata.json @@ -0,0 +1,8 @@ +{ + "hash": "cc57f64c", + "configHash": "97f4d997", + "lockfileHash": "e3b0c442", + "browserHash": "6470842e", + "optimized": {}, + "chunks": {} +} \ No newline at end of file diff --git a/node_modules/.vite/deps/package.json b/node_modules/.vite/deps/package.json new file mode 100644 index 0000000..3dbc1ca --- /dev/null +++ b/node_modules/.vite/deps/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/web/README.md b/web/README_VITE.md similarity index 100% rename from web/README.md rename to web/README_VITE.md diff --git a/web/index.html b/web/index.html index 3eb2a08..f71d006 100644 --- a/web/index.html +++ b/web/index.html @@ -2,7 +2,6 @@ - ATProto PDS diff --git a/web/public/favicon.ico b/web/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1d8448eb32ba70c5facfd422c6daf732ab0c3597 GIT binary patch literal 15406 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 diff --git a/web/src/lib/PostComponent.svelte b/web/src/lib/PostComponent.svelte index 6a4cd16..8f78f0f 100644 --- a/web/src/lib/PostComponent.svelte +++ b/web/src/lib/PostComponent.svelte @@ -1,21 +1,53 @@ -
-

{post.displayName} | {post.timenotstamp}

-

{post.text}

- {#if post.replyingDid} -

Replying to: {post.replyingDid}

- {/if} - {#if post.imagesLinksCid} - {#each post.imagesLinksCid as imageLink} - - {/each} - {/if} - {#if post.videosLinkCid} -
\ No newline at end of file +
+
+ {#if post.authorAvatarCid} + + {/if} +

{post.displayName} | {post.timenotstamp}

+
+
+

{post.text}

+ {#if post.replyingDid} +

Replying to: {post.replyingDid}

+ {/if} + {#if post.imagesLinksCid} + {#each post.imagesLinksCid as imageLink} + + {/each} + {/if} + {#if post.videosLinkCid} +
+
+ + diff --git a/web/src/lib/pdsfetch.ts b/web/src/lib/pdsfetch.ts index e2ae36d..4efe622 100644 --- a/web/src/lib/pdsfetch.ts +++ b/web/src/lib/pdsfetch.ts @@ -1,6 +1,6 @@ import { simpleFetchHandler, XRPC } from "@atcute/client"; import "@atcute/bluesky/lexicons"; -// import { ComAtprotoRepoListRecords } from "@atcute/client/lexicons"; +// import { ComAtprotoRepoListRecords.Record } from "@atcute/client/lexicons"; // import { AppBskyFeedPost } from "@atcute/client/lexicons"; // import { AppBskyActorDefs } from "@atcute/client/lexicons"; @@ -11,6 +11,7 @@ interface AccountMetadata { } class Post { authorDid: string; + authorAvatarCid: string | null; displayName : string; text: string; timestamp: number; @@ -18,12 +19,11 @@ class Post { quotingDid: string | null; replyingDid: string | null; imagesLinksCid: string[] | null; - imagesAltText: string[] | null; videosLinkCid: string | null; - videosLinksUrls: string[] | null; constructor(record: ComAtprotoRepoListRecords.Record, account : AccountMetadata) { this.authorDid = account.did; + this.authorAvatarCid = account.avatarCid; this.displayName = account.displayName; const post = record.value as AppBskyFeedPost.Record; this.timenotstamp = post.createdAt; @@ -42,7 +42,6 @@ class Post { this.imagesLinksCid = post.embed.images.map((imageRecord) => imageRecord.image.ref.$link ); - this.imagesAltText = post.embed.images.map((imageRecord) => imageRecord.alt || "no alt text :(") break; case "app.bsky.embed.video": this.videosLinkCid = post.embed.video.ref.$link; @@ -57,12 +56,11 @@ class Post { this.imagesLinksCid = post.embed.media.images.map((imageRecord) => imageRecord.image.ref.$link ); - this.imagesAltText = post.embed.images.map((imageRecord) => imageRecord.alt || "no alt text :(") break; case "app.bsky.embed.video": this.videosLinkCid = post.embed.media.video.ref.$link; - + break; } break;