A music player that connects to your cloud/distributed storage.
1//
2// Common stuff
3// ʕ•ᴥ•ʔ
4
5
6import * as localforage from "localforage"
7
8
9// 🌳
10
11
12export type CoverPrep = {
13 cacheKey: string
14 trackFilename: string
15 trackPath: string
16 trackSourceId: string
17 variousArtists: string
18}
19
20
21
22// FUNCTIONS
23
24
25export function db(storeName: string = "main"): LocalForage {
26 return localforage.createInstance({
27 name: "diffuse",
28 storeName
29 })
30}
31
32
33export function fileExtension(mimeType: string): string | undefined {
34 const audioId = mimeType.toLowerCase().split("/")[ 1 ]
35
36 switch (audioId) {
37 case "mp3": return "mp3";
38 case "mpeg": return "mp3";
39
40 case "mp4a-latm": return "m4a";
41 case "mp4": return "m4a";
42 case "x-m4a": return "m4a";
43
44 case "flac": return "flac";
45 case "x-flac": return "flac";
46 case "ogg": return "ogg";
47 case "opus": return "opus";
48
49 case "wav": return "wav";
50 case "wave": return "wav";
51
52 case "webm": return "webm";
53 }
54}
55
56
57export function mimeType(fileExt: string): string | undefined {
58 switch (fileExt) {
59 case "mp3": return "audio/mpeg";
60 case "mp4": return "audio/mp4";
61 case "m4a": return "audio/mp4";
62 case "flac": return "audio/flac";
63 case "ogg": return "audio/ogg";
64 case "wav": return "audio/wave";
65 case "webm": return "audio/webm";
66 }
67}