A music player that connects to your cloud/distributed storage.
0
fork

Configure Feed

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

at v4 98 lines 3.2 kB view raw
1import type { Signal, SignalReader } from "~/common/signal.d.ts"; 2import type { DiffuseElement } from "~/common/element.js"; 3import type { 4 Facet, 5 PlaylistItem, 6 Setting, 7 Track, 8} from "~/definitions/types.d.ts"; 9 10export type OutputElement<Encoding = null> = 11 & DiffuseElement 12 & OutputManagerDeputy<Encoding>; 13 14export type OutputManagerDeputy<Encoding = null> = 15 & Omit<OutputManager<Encoding>, "signals"> 16 & { ready: SignalReader<boolean> }; 17 18export type OutputManager<Encoding = null> = { 19 facets: { 20 collection: SignalReader< 21 | { state: "loading" } 22 | { state: "loaded"; data: Encoding extends null ? Facet[] : Encoding } 23 >; 24 reload: () => Promise<void>; 25 save: ( 26 facets: Encoding extends null ? Facet[] : Encoding, 27 ) => Promise<void>; 28 }; 29 playlistItems: { 30 collection: SignalReader< 31 | { state: "loading" } 32 | { state: "loaded"; data: Encoding extends null ? PlaylistItem[] : Encoding } 33 >; 34 reload: () => Promise<void>; 35 save: ( 36 playlistItems: Encoding extends null ? PlaylistItem[] : Encoding, 37 ) => Promise<void>; 38 }; 39 settings: { 40 collection: SignalReader< 41 | { state: "loading" } 42 | { state: "loaded"; data: Encoding extends null ? Setting[] : Encoding } 43 >; 44 reload: () => Promise<void>; 45 save: ( 46 settings: Encoding extends null ? Setting[] : Encoding, 47 ) => Promise<void>; 48 }; 49 signals: { 50 facets: Signal<Encoding extends null ? Facet[] : Encoding>; 51 playlistItems: Signal<Encoding extends null ? PlaylistItem[] : Encoding>; 52 settings: Signal<Encoding extends null ? Setting[] : Encoding>; 53 tracks: Signal<Encoding extends null ? Track[] : Encoding>; 54 }; 55 tracks: { 56 collection: SignalReader< 57 | { state: "loading" } 58 | { state: "loaded"; data: Encoding extends null ? Track[] : Encoding } 59 >; 60 reload: () => Promise<void>; 61 save: (tracks: Encoding extends null ? Track[] : Encoding) => Promise<void>; 62 }; 63}; 64 65export type OutputManagerProperties<Encoding = null> = { 66 facets: { 67 empty(): Encoding extends null ? Facet[] : Encoding; 68 get(): Promise<Encoding extends null ? Facet[] : Encoding>; 69 put( 70 facets: Encoding extends null ? Facet[] : Encoding, 71 ): Promise<void>; 72 }; 73 init?: () => Promise<boolean>; 74 playlistItems: { 75 empty(): Encoding extends null ? PlaylistItem[] : Encoding; 76 get(): Promise<Encoding extends null ? PlaylistItem[] : Encoding>; 77 put( 78 playlistItems: Encoding extends null ? PlaylistItem[] : Encoding, 79 ): Promise<void>; 80 }; 81 settings: { 82 empty(): Encoding extends null ? Setting[] : Encoding; 83 get(): Promise<Encoding extends null ? Setting[] : Encoding>; 84 put( 85 settings: Encoding extends null ? Setting[] : Encoding, 86 ): Promise<void>; 87 }; 88 tracks: { 89 empty(): Encoding extends null ? Track[] : Encoding; 90 get(): Promise<Encoding extends null ? Track[] : Encoding>; 91 put(tracks: Encoding extends null ? Track[] : Encoding): Promise<void>; 92 }; 93}; 94 95export type OutputWorkerActions<DataType> = { 96 get(args: { name: string }): Promise<DataType>; 97 put(args: { data: DataType; name: string }): Promise<void>; 98};