A fork of pds-dash for selfhosted.social
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

I guess we displaying posts now

ari 19eb695b 3f03c121

+387 -171
+3
.env
··· 1 + DATE_START = 2025-04-15 2 + PDS_URL = https://pds.witchcraft.systems 3 + PORT = 3000
-136
.gitignore
··· 1 - # Logs 2 - logs 3 - *.log 4 - npm-debug.log* 5 - yarn-debug.log* 6 - yarn-error.log* 7 - lerna-debug.log* 8 - .pnpm-debug.log* 9 - 10 - # Diagnostic reports (https://nodejs.org/api/report.html) 11 - report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 12 - 13 - # Runtime data 14 - pids 15 - *.pid 16 - *.seed 17 - *.pid.lock 18 - 19 - # Directory for instrumented libs generated by jscoverage/JSCover 20 - lib-cov 21 - 22 - # Coverage directory used by tools like istanbul 23 - coverage 24 - *.lcov 25 - 26 - # nyc test coverage 27 - .nyc_output 28 - 29 - # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 30 - .grunt 31 - 32 - # Bower dependency directory (https://bower.io/) 33 - bower_components 34 - 35 - # node-waf configuration 36 - .lock-wscript 37 - 38 - # Compiled binary addons (https://nodejs.org/api/addons.html) 39 - build/Release 40 - 41 - # Dependency directories 42 - node_modules/ 43 - jspm_packages/ 44 - 45 - # Snowpack dependency directory (https://snowpack.dev/) 46 - web_modules/ 47 - 48 - # TypeScript cache 49 - *.tsbuildinfo 50 - 51 - # Optional npm cache directory 52 - .npm 53 - 54 - # Optional eslint cache 55 - .eslintcache 56 - 57 - # Optional stylelint cache 58 - .stylelintcache 59 - 60 - # Microbundle cache 61 - .rpt2_cache/ 62 - .rts2_cache_cjs/ 63 - .rts2_cache_es/ 64 - .rts2_cache_umd/ 65 - 66 - # Optional REPL history 67 - .node_repl_history 68 - 69 - # Output of 'npm pack' 70 - *.tgz 71 - 72 - # Yarn Integrity file 73 - .yarn-integrity 74 - 75 - # dotenv environment variable files 76 - .env 77 - .env.development.local 78 - .env.test.local 79 - .env.production.local 80 - .env.local 81 - 82 - # parcel-bundler cache (https://parceljs.org/) 83 - .cache 84 - .parcel-cache 85 - 86 - # Next.js build output 87 - .next 88 - out 89 - 90 - # Nuxt.js build / generate output 91 - .nuxt 92 - dist 93 - 94 - # Gatsby files 95 - .cache/ 96 - # Comment in the public line in if your project uses Gatsby and not Next.js 97 - # https://nextjs.org/blog/next-9-1#public-directory-support 98 - # public 99 - 100 - # vuepress build output 101 - .vuepress/dist 102 - 103 - # vuepress v2.x temp and cache directory 104 - .temp 105 - .cache 106 - 107 - # vitepress build output 108 - **/.vitepress/dist 109 - 110 - # vitepress cache directory 111 - **/.vitepress/cache 112 - 113 - # Docusaurus cache and generated files 114 - .docusaurus 115 - 116 - # Serverless directories 117 - .serverless/ 118 - 119 - # FuseBox cache 120 - .fusebox/ 121 - 122 - # DynamoDB Local files 123 - .dynamodb/ 124 - 125 - # TernJS port file 126 - .tern-port 127 - 128 - # Stores VSCode versions used for testing VSCode extensions 129 - .vscode-test 130 - 131 - # yarn v2 132 - .yarn/cache 133 - .yarn/unplugged 134 - .yarn/build-state.yml 135 - .yarn/install-state.gz 136 - .pnp.*
-11
index.html
··· 1 - <!DOCTYPE html> 2 - <html lang="en"> 3 - <head> 4 - <meta charset="UTF-8"> 5 - <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 - <title>Alpine.js Test</title> 7 - </head> 8 - <body> 9 - $POSTSPLACEHOLDER 10 - </body> 11 - </html>
+32
node_modules/.svelte2tsx-language-server-files/svelte-native-jsx.d.ts
··· 1 + declare namespace svelteNative.JSX { 2 + 3 + // Every namespace eligible for use needs to implement the following two functions 4 + function mapElementTag( 5 + tag: string 6 + ): any; 7 + 8 + function createElement<Elements extends IntrinsicElements, Key extends keyof Elements>( 9 + element: Key | undefined | null, attrs: Elements[Key] 10 + ): any; 11 + function createElement<Elements extends IntrinsicElements, Key extends keyof Elements, T>( 12 + element: Key | undefined | null, attrEnhancers: T, attrs: Elements[Key] & T 13 + ): any; 14 + 15 + 16 + /* svelte specific */ 17 + interface ElementClass { 18 + $$prop_def: any; 19 + } 20 + 21 + interface ElementAttributesProperty { 22 + $$prop_def: any; // specify the property name to use 23 + } 24 + 25 + // Add empty IntrinsicAttributes to prevent fallback to the one in the JSX namespace 26 + interface IntrinsicAttributes { 27 + } 28 + 29 + interface IntrinsicElements { 30 + [name: string]: { [name: string]: any }; 31 + } 32 + }
+287
node_modules/.svelte2tsx-language-server-files/svelte-shims-v4.d.ts
··· 1 + // Whenever a ambient declaration changes, its number should be increased 2 + // This way, we avoid the situation where multiple ambient versions of svelte2tsx 3 + // are loaded and their declarations conflict each other 4 + // See https://github.com/sveltejs/language-tools/issues/1059 for an example bug that stems from it 5 + // If you change anything in this file, think about whether or not it should be backported to svelte-shims.d.ts 6 + 7 + type AConstructorTypeOf<T, U extends any[] = any[]> = new (...args: U) => T; 8 + 9 + /** @internal PRIVATE API, DO NOT USE */ 10 + type SvelteActionReturnType = { 11 + update?: (args: any) => void, 12 + destroy?: () => void 13 + } | void 14 + 15 + /** @internal PRIVATE API, DO NOT USE */ 16 + type SvelteTransitionConfig = { 17 + delay?: number, 18 + duration?: number, 19 + easing?: (t: number) => number, 20 + css?: (t: number, u: number) => string, 21 + tick?: (t: number, u: number) => void 22 + } 23 + 24 + /** @internal PRIVATE API, DO NOT USE */ 25 + type SvelteTransitionReturnType = SvelteTransitionConfig | (() => SvelteTransitionConfig) 26 + 27 + /** @internal PRIVATE API, DO NOT USE */ 28 + type SvelteAnimationReturnType = { 29 + delay?: number, 30 + duration?: number, 31 + easing?: (t: number) => number, 32 + css?: (t: number, u: number) => string, 33 + tick?: (t: number, u: number) => void 34 + } 35 + 36 + /** @internal PRIVATE API, DO NOT USE */ 37 + type SvelteWithOptionalProps<Props, Keys extends keyof Props> = Omit<Props, Keys> & Partial<Pick<Props, Keys>>; 38 + /** @internal PRIVATE API, DO NOT USE */ 39 + type SvelteAllProps = { [index: string]: any } 40 + /** @internal PRIVATE API, DO NOT USE */ 41 + type SveltePropsAnyFallback<Props> = {[K in keyof Props]: Props[K] extends never ? never : Props[K] extends undefined ? any : Props[K]} 42 + /** @internal PRIVATE API, DO NOT USE */ 43 + type SvelteSlotsAnyFallback<Slots> = {[K in keyof Slots]: {[S in keyof Slots[K]]: Slots[K][S] extends undefined ? any : Slots[K][S]}} 44 + /** @internal PRIVATE API, DO NOT USE */ 45 + type SvelteRestProps = { [index: string]: any } 46 + /** @internal PRIVATE API, DO NOT USE */ 47 + type SvelteSlots = { [index: string]: any } 48 + /** @internal PRIVATE API, DO NOT USE */ 49 + type SvelteStore<T> = { subscribe: (run: (value: T) => any, invalidate?: any) => any } 50 + 51 + // Forces TypeScript to look into the type which results in a better representation of it 52 + // which helps for error messages and is necessary for d.ts file transformation so that 53 + // no ambient type references are left in the output 54 + /** @internal PRIVATE API, DO NOT USE */ 55 + type Expand<T> = T extends infer O ? { [K in keyof O]: O[K] } : never; 56 + 57 + /** @internal PRIVATE API, DO NOT USE */ 58 + type KeysMatching<Obj, V> = {[K in keyof Obj]-?: Obj[K] extends V ? K : never}[keyof Obj] 59 + /** @internal PRIVATE API, DO NOT USE */ 60 + declare type __sveltets_2_CustomEvents<T> = {[K in KeysMatching<T, CustomEvent>]: T[K] extends CustomEvent ? T[K]['detail']: T[K]} 61 + 62 + declare function __sveltets_2_ensureRightProps<Props>(props: Props): {}; 63 + declare function __sveltets_2_instanceOf<T = any>(type: AConstructorTypeOf<T>): T; 64 + declare function __sveltets_2_allPropsType(): SvelteAllProps 65 + declare function __sveltets_2_restPropsType(): SvelteRestProps 66 + declare function __sveltets_2_slotsType<Slots, Key extends keyof Slots>(slots: Slots): Record<Key, boolean>; 67 + 68 + // Overload of the following two functions is necessary. 69 + // An empty array of optionalProps makes OptionalProps type any, which means we lose the prop typing. 70 + // optionalProps need to be first or its type cannot be infered correctly. 71 + 72 + declare function __sveltets_2_partial<Props = {}, Events = {}, Slots = {}, Exports = {}, Bindings = string>( 73 + render: {props: Props, events: Events, slots: Slots, exports?: Exports, bindings?: Bindings } 74 + ): {props: Expand<SveltePropsAnyFallback<Props>>, events: Events, slots: Expand<SvelteSlotsAnyFallback<Slots>>, exports?: Exports, bindings?: Bindings } 75 + declare function __sveltets_2_partial<Props = {}, Events = {}, Slots = {}, Exports = {}, Bindings = string, OptionalProps extends keyof Props = any>( 76 + optionalProps: OptionalProps[], 77 + render: {props: Props, events: Events, slots: Slots, exports?: Exports, bindings?: Bindings } 78 + ): {props: Expand<SvelteWithOptionalProps<SveltePropsAnyFallback<Props>, OptionalProps>>, events: Events, slots: Expand<SvelteSlotsAnyFallback<Slots>>, exports?: Exports, bindings?: Bindings } 79 + 80 + declare function __sveltets_2_partial_with_any<Props = {}, Events = {}, Slots = {}, Exports = {}, Bindings = string>( 81 + render: {props: Props, events: Events, slots: Slots, exports?: Exports, bindings?: Bindings } 82 + ): {props: Expand<SveltePropsAnyFallback<Props> & SvelteAllProps>, events: Events, slots: Expand<SvelteSlotsAnyFallback<Slots>>, exports?: Exports, bindings?: Bindings } 83 + declare function __sveltets_2_partial_with_any<Props = {}, Events = {}, Slots = {}, Exports = {}, Bindings = string, OptionalProps extends keyof Props = any>( 84 + optionalProps: OptionalProps[], 85 + render: {props: Props, events: Events, slots: Slots, exports?: Exports, bindings?: Bindings } 86 + ): {props: Expand<SvelteWithOptionalProps<SveltePropsAnyFallback<Props>, OptionalProps> & SvelteAllProps>, events: Events, slots: Expand<SvelteSlotsAnyFallback<Slots>>, exports?: Exports, bindings?: Bindings } 87 + 88 + 89 + declare function __sveltets_2_with_any<Props = {}, Events = {}, Slots = {}, Exports = {}, Bindings = string>( 90 + render: {props: Props, events: Events, slots: Slots, exports?: Exports, bindings?: Bindings } 91 + ): {props: Expand<Props & SvelteAllProps>, events: Events, slots: Slots, exports?: Exports, bindings?: Bindings } 92 + 93 + declare function __sveltets_2_with_any_event<Props = {}, Events = {}, Slots = {}, Exports = {}, Bindings = string>( 94 + render: {props: Props, events: Events, slots: Slots, exports?: Exports, bindings?: Bindings } 95 + ): {props: Props, events: Events & {[evt: string]: CustomEvent<any>;}, slots: Slots, exports?: Exports, bindings?: Bindings } 96 + 97 + declare function __sveltets_2_store_get<T = any>(store: SvelteStore<T>): T 98 + declare function __sveltets_2_store_get<Store extends SvelteStore<any> | undefined | null>(store: Store): Store extends SvelteStore<infer T> ? T : Store; 99 + declare function __sveltets_2_any(dummy: any): any; 100 + declare function __sveltets_2_invalidate<T>(getValue: () => T): T 101 + 102 + declare function __sveltets_2_mapWindowEvent<K extends keyof HTMLBodyElementEventMap>( 103 + event: K 104 + ): HTMLBodyElementEventMap[K]; 105 + declare function __sveltets_2_mapBodyEvent<K extends keyof WindowEventMap>( 106 + event: K 107 + ): WindowEventMap[K]; 108 + declare function __sveltets_2_mapElementEvent<K extends keyof HTMLElementEventMap>( 109 + event: K 110 + ): HTMLElementEventMap[K]; 111 + 112 + declare function __sveltets_2_bubbleEventDef<Events, K extends keyof Events>( 113 + events: Events, eventKey: K 114 + ): Events[K]; 115 + declare function __sveltets_2_bubbleEventDef( 116 + events: any, eventKey: string 117 + ): any; 118 + 119 + declare const __sveltets_2_customEvent: CustomEvent<any>; 120 + declare function __sveltets_2_toEventTypings<Typings>(): {[Key in keyof Typings]: CustomEvent<Typings[Key]>}; 121 + 122 + declare function __sveltets_2_unionType<T1, T2>(t1: T1, t2: T2): T1 | T2; 123 + declare function __sveltets_2_unionType<T1, T2, T3>(t1: T1, t2: T2, t3: T3): T1 | T2 | T3; 124 + declare function __sveltets_2_unionType<T1, T2, T3, T4>(t1: T1, t2: T2, t3: T3, t4: T4): T1 | T2 | T3 | T4; 125 + declare function __sveltets_2_unionType(...types: any[]): any; 126 + 127 + declare function __sveltets_2_createSvelte2TsxComponent<Props extends {}, Events extends {}, Slots extends {}>( 128 + render: {props: Props, events: Events, slots: Slots } 129 + ): typeof import("svelte").SvelteComponent<Props, Events, Slots>; 130 + 131 + declare function __sveltets_2_unwrapArr<T>(arr: ArrayLike<T>): T 132 + declare function __sveltets_2_unwrapPromiseLike<T>(promise: PromiseLike<T> | T): T 133 + 134 + // v2 135 + declare function __sveltets_2_createCreateSlot<Slots = Record<string, Record<string, any>>>(): <SlotName extends keyof Slots>(slotName: SlotName, attrs: Slots[SlotName]) => Record<string, any>; 136 + declare function __sveltets_2_createComponentAny(props: Record<string, any>): import("svelte").SvelteComponent<any, any, any>; 137 + 138 + declare function __sveltets_2_any(...dummy: any[]): any; 139 + declare function __sveltets_2_empty(...dummy: any[]): {}; 140 + declare function __sveltets_2_union<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10>(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; 141 + declare function __sveltets_2_nonNullable<T>(type: T): NonNullable<T>; 142 + 143 + declare function __sveltets_2_cssProp(prop: Record<string, any>): {}; 144 + 145 + // @ts-ignore Svelte v3/v4 don't have this 146 + declare function __sveltets_2_ensureSnippet(val: ReturnType<import('svelte').Snippet> | undefined | null): any; 147 + 148 + /** @internal PRIVATE API, DO NOT USE */ 149 + type __sveltets_2_SvelteAnimationReturnType = { 150 + delay?: number, 151 + duration?: number, 152 + easing?: (t: number) => number, 153 + css?: (t: number, u: number) => string, 154 + tick?: (t: number, u: number) => void 155 + } 156 + declare var __sveltets_2_AnimationMove: { from: DOMRect, to: DOMRect } 157 + declare function __sveltets_2_ensureAnimation(animationCall: __sveltets_2_SvelteAnimationReturnType): {}; 158 + 159 + /** @internal PRIVATE API, DO NOT USE */ 160 + type __sveltets_2_SvelteActionReturnType = { 161 + update?: (args: any) => void, 162 + destroy?: () => void, 163 + $$_attributes?: Record<string, any>, 164 + } | void 165 + declare function __sveltets_2_ensureAction<T extends __sveltets_2_SvelteActionReturnType>(actionCall: T): T extends {$$_attributes?: any} ? T['$$_attributes'] : {}; 166 + 167 + /** @internal PRIVATE API, DO NOT USE */ 168 + type __sveltets_2_SvelteTransitionConfig = { 169 + delay?: number, 170 + duration?: number, 171 + easing?: (t: number) => number, 172 + css?: (t: number, u: number) => string, 173 + tick?: (t: number, u: number) => void 174 + } 175 + /** @internal PRIVATE API, DO NOT USE */ 176 + type __sveltets_2_SvelteTransitionReturnType = __sveltets_2_SvelteTransitionConfig | (() => __sveltets_2_SvelteTransitionConfig) 177 + declare function __sveltets_2_ensureTransition(transitionCall: __sveltets_2_SvelteTransitionReturnType): {}; 178 + 179 + // Includes undefined and null for all types as all usages also allow these 180 + declare function __sveltets_2_ensureType<T>(type: AConstructorTypeOf<T>, el: T | undefined | null): {}; 181 + declare function __sveltets_2_ensureType<T1, T2>(type1: AConstructorTypeOf<T1>, type2: AConstructorTypeOf<T2>, el: T1 | T2 | undefined | null): {}; 182 + 183 + // The following is necessary because there are two clashing errors that can't be solved at the same time 184 + // when using Svelte2TsxComponent, more precisely the event typings in 185 + // __sveltets_2_ensureComponent<T extends new (..) => _SvelteComponent<any,||any||<-this,any>>(type: T): T; 186 + // If we type it as "any", we have an error when using sth like {a: CustomEvent<any>} 187 + // If we type it as "{}", we have an error when using sth like {[evt: string]: CustomEvent<any>} 188 + // If we type it as "unknown", we get all kinds of follow up errors which we want to avoid 189 + // Therefore introduce two more base classes just for this case. 190 + /** 191 + * Ambient type only used for intellisense, DO NOT USE IN YOUR PROJECT 192 + */ 193 + declare type ATypedSvelteComponent = { 194 + /** 195 + * @internal This is for type checking capabilities only 196 + * and does not exist at runtime. Don't use this property. 197 + */ 198 + $$prop_def: any; 199 + /** 200 + * @internal This is for type checking capabilities only 201 + * and does not exist at runtime. Don't use this property. 202 + */ 203 + $$events_def: any; 204 + /** 205 + * @internal This is for type checking capabilities only 206 + * and does not exist at runtime. Don't use this property. 207 + */ 208 + $$slot_def: any; 209 + 210 + $on(event: string, handler: any): () => void; 211 + } 212 + /** 213 + * Ambient type only used for intellisense, DO NOT USE IN YOUR PROJECT. 214 + * 215 + * If you're looking for the type of a Svelte Component, use `SvelteComponent` and `ComponentType` instead: 216 + * 217 + * ```ts 218 + * import type { ComponentType, SvelteComponent } from "svelte"; 219 + * let myComponentConstructor: ComponentType<SvelteComponent> = ..; 220 + * ``` 221 + */ 222 + declare type ConstructorOfATypedSvelteComponent = new (args: {target: any, props?: any}) => ATypedSvelteComponent 223 + // Usage note: Cannot properly transform generic function components to class components due to TypeScript limitations 224 + declare function __sveltets_2_ensureComponent< 225 + T extends 226 + | ConstructorOfATypedSvelteComponent 227 + | (typeof import('svelte') extends { mount: any } 228 + ? // @ts-ignore svelte.Component doesn't exist in Svelte 4 229 + import('svelte').Component<any, any, any> 230 + : never) 231 + | null 232 + | undefined 233 + >( 234 + type: T 235 + ): NonNullable< 236 + T extends ConstructorOfATypedSvelteComponent 237 + ? T 238 + : typeof import('svelte') extends { mount: any } 239 + ? // @ts-ignore svelte.Component doesn't exist in Svelte 4 240 + T extends import('svelte').Component< 241 + infer Props extends Record<string, any>, 242 + infer Exports extends Record<string, any>, 243 + infer Bindings extends string 244 + > 245 + ? new ( 246 + options: import('svelte').ComponentConstructorOptions<Props> 247 + ) => import('svelte').SvelteComponent<Props, Props['$$events'], Props['$$slots']> & 248 + Exports & { $$bindings: Bindings } 249 + : never 250 + : never 251 + >; 252 + 253 + declare function __sveltets_2_ensureArray<T extends ArrayLike<unknown> | Iterable<unknown>>(array: T): T extends ArrayLike<infer U> ? U[] : T extends Iterable<infer U> ? Iterable<U> : any[]; 254 + 255 + type __sveltets_2_PropsWithChildren<Props, Slots> = Props & 256 + (Slots extends { default: any } 257 + // This is unfortunate because it means "accepts no props" turns into "accepts any prop" 258 + // but the alternative is non-fixable type errors because of the way TypeScript index 259 + // signatures work (they will always take precedence and make an impossible-to-satisfy children type). 260 + ? Props extends Record<string, never> 261 + ? any 262 + : { children?: any } 263 + : {}); 264 + declare function __sveltets_2_runes_constructor<Props extends {}>(render: {props: Props }): import("svelte").ComponentConstructorOptions<Props>; 265 + 266 + declare function __sveltets_2_get_set_binding<T>(get: (() => T) | null | undefined, set: (t: T) => void): T; 267 + 268 + declare function __sveltets_$$bindings<Bindings extends string[]>(...bindings: Bindings): Bindings[number]; 269 + 270 + declare function __sveltets_2_fn_component< 271 + Props extends Record<string, any>, Exports extends Record<string, any>, Bindings extends string 272 + // @ts-ignore Svelte 5 only 273 + >(klass: {props: Props, exports?: Exports, bindings?: Bindings }): import('svelte').Component<Props, Exports, Bindings>; 274 + 275 + interface __sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> { 276 + new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & { $$bindings?: Bindings } & Exports; 277 + (internal: unknown, props: Props extends Record<string, never> ? {$$events?: Events, $$slots?: Slots} : Props & {$$events?: Events, $$slots?: Slots}): Exports & { $set?: any, $on?: any }; 278 + z_$$bindings?: Bindings; 279 + } 280 + 281 + declare function __sveltets_2_isomorphic_component< 282 + Props extends Record<string, any>, Events extends Record<string, any>, Slots extends Record<string, any>, Exports extends Record<string, any>, Bindings extends string 283 + >(klass: {props: Props, events: Events, slots: Slots, exports?: Exports, bindings?: Bindings }): __sveltets_2_IsomorphicComponent<Props, Events, Slots, Exports, Bindings>; 284 + 285 + declare function __sveltets_2_isomorphic_component_slots< 286 + Props extends Record<string, any>, Events extends Record<string, any>, Slots extends Record<string, any>, Exports extends Record<string, any>, Bindings extends string 287 + >(klass: {props: Props, events: Events, slots: Slots, exports?: Exports, bindings?: Bindings }): __sveltets_2_IsomorphicComponent<__sveltets_2_PropsWithChildren<Props, Slots>, Events, Slots, Exports, Bindings>;
+1
node_modules/.vite/_svelte_metadata.json
··· 1 + {"compilerOptions":{"css":"external","dev":true,"hmr":true},"extensions":[".svelte"]}
+8
node_modules/.vite/deps/_metadata.json
··· 1 + { 2 + "hash": "cc57f64c", 3 + "configHash": "97f4d997", 4 + "lockfileHash": "e3b0c442", 5 + "browserHash": "6470842e", 6 + "optimized": {}, 7 + "chunks": {} 8 + }
+3
node_modules/.vite/deps/package.json
··· 1 + { 2 + "type": "module" 3 + }
web/README.md web/README_VITE.md
-1
web/index.html
··· 2 2 <html lang="en"> 3 3 <head> 4 4 <meta charset="UTF-8" /> 5 - <link rel="icon" type="image/svg+xml" href="/witchcraft.ico" /> 6 5 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 6 <title>ATProto PDS</title> 8 7 </head>
web/public/favicon.ico

This is a binary file and will not be displayed.

web/public/witchcraft.ico

This is a binary file and will not be displayed.

+49 -17
web/src/lib/PostComponent.svelte
··· 1 1 <script lang="ts"> 2 2 import { Post } from "./pdsfetch"; 3 - let { post } : { post : Post } = $props(); 3 + let { post }: { post: Post } = $props(); 4 4 </script> 5 5 6 - <div> 7 - <p>{post.displayName} | {post.timenotstamp}</p> 8 - <p>{post.text}</p> 9 - {#if post.replyingDid} 10 - <p>Replying to: {post.replyingDid}</p> 11 - {/if} 12 - {#if post.imagesLinksCid} 13 - {#each post.imagesLinksCid as imageLink} 14 - <img src="https://pds.witchcraft.systems/xrpc/com.atproto.sync.getBlob?did={post.authorDid}&cid={imageLink}" /> 15 - {/each} 16 - {/if} 17 - {#if post.videosLinkCid} 18 - <video src="https://pds.witchcraft.systems/xrpc/com.atproto.sync.getBlob?did={post.authorDid}&cid={post.videosLinkCid}" /> 19 - {/if} 20 - 21 - </div> 6 + <div id="postContainer"> 7 + <div id="postHeader"> 8 + {#if post.authorAvatarCid} 9 + <img 10 + id="avatar" 11 + src="https://pds.witchcraft.systems/xrpc/com.atproto.sync.getBlob?did={post.authorDid}&cid={post.authorAvatarCid}" 12 + /> 13 + {/if} 14 + <p>{post.displayName} | {post.timenotstamp}</p> 15 + </div> 16 + <div id="postContent"> 17 + <p>{post.text}</p> 18 + {#if post.replyingDid} 19 + <p>Replying to: {post.replyingDid}</p> 20 + {/if} 21 + {#if post.imagesLinksCid} 22 + {#each post.imagesLinksCid as imageLink} 23 + <img 24 + id="embedImages" 25 + src="https://pds.witchcraft.systems/xrpc/com.atproto.sync.getBlob?did={post.authorDid}&cid={imageLink}" 26 + /> 27 + {/each} 28 + {/if} 29 + {#if post.videosLinkCid} 30 + <video 31 + id="embedVideo" 32 + src="https://pds.witchcraft.systems/xrpc/com.atproto.sync.getBlob?did={post.authorDid}&cid={post.videosLinkCid}" 33 + /> 34 + {/if} 35 + </div> 36 + </div> 37 + 38 + <style> 39 + #postContainer { 40 + display: column; 41 + text-align: start; 42 + border: 2px solid black; 43 + padding: 4%; 44 + } 45 + #postHeader { 46 + text-decoration: underline; 47 + } 48 + #avatar { 49 + width: 50px; 50 + height: 50px; 51 + border-radius: 50%; 52 + } 53 + </style>
+4 -6
web/src/lib/pdsfetch.ts
··· 1 1 import { simpleFetchHandler, XRPC } from "@atcute/client"; 2 2 import "@atcute/bluesky/lexicons"; 3 - // import { ComAtprotoRepoListRecords } from "@atcute/client/lexicons"; 3 + // import { ComAtprotoRepoListRecords.Record } from "@atcute/client/lexicons"; 4 4 // import { AppBskyFeedPost } from "@atcute/client/lexicons"; 5 5 // import { AppBskyActorDefs } from "@atcute/client/lexicons"; 6 6 ··· 11 11 } 12 12 class Post { 13 13 authorDid: string; 14 + authorAvatarCid: string | null; 14 15 displayName : string; 15 16 text: string; 16 17 timestamp: number; ··· 18 19 quotingDid: string | null; 19 20 replyingDid: string | null; 20 21 imagesLinksCid: string[] | null; 21 - imagesAltText: string[] | null; 22 22 videosLinkCid: string | null; 23 - videosLinksUrls: string[] | null; 24 23 25 24 constructor(record: ComAtprotoRepoListRecords.Record, account : AccountMetadata) { 26 25 this.authorDid = account.did; 26 + this.authorAvatarCid = account.avatarCid; 27 27 this.displayName = account.displayName; 28 28 const post = record.value as AppBskyFeedPost.Record; 29 29 this.timenotstamp = post.createdAt; ··· 42 42 this.imagesLinksCid = post.embed.images.map((imageRecord) => 43 43 imageRecord.image.ref.$link 44 44 ); 45 - this.imagesAltText = post.embed.images.map((imageRecord) => imageRecord.alt || "no alt text :(") 46 45 break; 47 46 case "app.bsky.embed.video": 48 47 this.videosLinkCid = post.embed.video.ref.$link; ··· 57 56 this.imagesLinksCid = post.embed.media.images.map((imageRecord) => 58 57 imageRecord.image.ref.$link 59 58 ); 60 - this.imagesAltText = post.embed.images.map((imageRecord) => imageRecord.alt || "no alt text :(") 61 59 62 60 break; 63 61 case "app.bsky.embed.video": 64 62 this.videosLinkCid = post.embed.media.video.ref.$link; 65 - 63 + 66 64 break; 67 65 } 68 66 break;