From 1dd7e97f94c4537d7bd308cef2b395a62343a360 Mon Sep 17 00:00:00 2001 From: uimaxbai <61615730+uimaxbai@users.noreply.github.com> Date: Sat, 18 Apr 2026 13:00:33 +0100 Subject: [PATCH] add files --- .../miniflare-CacheObject/metadata.sqlite | Bin 0 -> 4096 bytes .../miniflare-CacheObject/metadata.sqlite-shm | Bin 0 -> 32768 bytes .../miniflare-CacheObject/metadata.sqlite-wal | Bin 0 -> 8272 bytes .../generated_indexed_rulesets/_ruleset1 | Bin 0 -> 1267 bytes extension/content.js | 4 ++ extension/icons/128.png | Bin 0 -> 1765 bytes extension/icons/16.png | Bin 0 -> 1284 bytes extension/icons/48.png | Bin 0 -> 1447 bytes extension/inject.js | 1 + extension/manifest.json | 47 +++++++++++++ extension/rules.json | 55 +++++++++++++++ functions/proxy-audio.js | 65 ++++++++++++++++++ js/HiFi.ts.rej | 53 ++++++++++++++ js/proxy-utils.js | 4 ++ test-search.js | 33 --------- 15 files changed, 229 insertions(+), 33 deletions(-) create mode 100644 .wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite create mode 100644 .wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-shm create mode 100644 .wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-wal create mode 100644 extension/_metadata/generated_indexed_rulesets/_ruleset1 create mode 100644 extension/content.js create mode 100644 extension/icons/128.png create mode 100644 extension/icons/16.png create mode 100644 extension/icons/48.png create mode 100644 extension/inject.js create mode 100644 extension/manifest.json create mode 100644 extension/rules.json create mode 100644 functions/proxy-audio.js create mode 100644 js/HiFi.ts.rej create mode 100644 js/proxy-utils.js delete mode 100644 test-search.js diff --git a/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite b/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..0b58f0dca7d6ce95907cb0b322dc4802f04688c0 GIT binary patch literal 4096 zcmWFz^vNtqRY=P(%1ta$FlG>7U}9o$P*7lCU|@t|AVoG{WYDXN;00+HAlr;ljiVtj n8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O6ovo**AfQj literal 0 HcmV?d00001 diff --git a/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-shm b/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-shm new file mode 100644 index 0000000000000000000000000000000000000000..881ccc6fafe11e11f53185b07b57c2ca5d175261 GIT binary patch literal 32768 zcmeI)u?fOJ6b9ha2~q}YtAMzGtvH08ofFukPA6`V5mH(>j#Jne%@YpN+6D6caNOPF zcn`h-u6%A%&LX8^Ib32LAN_t^oZ3Ux^w;g{cD}#6dbhfif4hfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72+Tnsew`2k^Aw0bS%d%q0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZU|IrSxEUrT literal 0 HcmV?d00001 diff --git a/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-wal b/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-wal new file mode 100644 index 0000000000000000000000000000000000000000..0315217b27b2c3388ca0f177b5abeb876025e18f GIT binary patch literal 8272 zcmXr7XKP~6eI&uaAiw|u?pkgCdi8(wU(VHylJ+&}0SYl9i*qd6u6%d?`fI^~KA9z{ z3TgR8xrrqT#z5UnObiYR3P80?Pz=%r0wDb?U>1Y`n}@{5#$;m9tBc?T$}sYmFaXgg z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fe{k|jhu|^;_~v0jfo|RNja(U z$!YP9K8``Ya0ZiekgH>et3rsQlaH$cTv$PaO92cLlS}f8;xkheLR=$46as=geI0`$ z6}(*|b)X80lQU9NN^??E;!84fQx!b@LR{TlgTRuS3gMn19{!;r3PJwio-V*Z2lw+~ z;{~q&c16!i5>Vj+#Rg<3VZ_ACs7FUbU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!n KMnhnvg#ZAHeMrXu literal 0 HcmV?d00001 diff --git a/extension/_metadata/generated_indexed_rulesets/_ruleset1 b/extension/_metadata/generated_indexed_rulesets/_ruleset1 new file mode 100644 index 0000000000000000000000000000000000000000..1dba9298253d6423da795e180ebf41d81190271a GIT binary patch literal 1267 zcmbtTv2N5r5S=?r&Y%Oi2+|=aT%0ISe20XT0)Z4nEP{06PQ;)T6tQdvTe7{8Z3)p+ zP*6}%q@EF|PeRh~N^67A zF>J_-0PkG}c!qHqpT1AO*7e(C_`iq$r(^gV-|Cw6d<0k%bGlyts;6pg5IW}&avN9! zwg3-U05hPe%fdPG+UThtCX4~vG=C;o==RCQga;rwcxDaL9&*}0l*7Mr`T_n!+|zZJ zdHrvH#^830ToA(G8(=JQ#6g{PQ{Tloh#qTVuW8$cZ2(zBJ5do8avtlrs&>n3(`lNN zRg_PvB=plspt33U-W?I+HEc`RQ$_M9$(z`Jih*PDs)@1G>)U<4w-?}(d1`VY*z0}R z-T*HFzI{`eC2OiB7@ z9y@X5hxh}rEqjN2yS_gAn{O6Xu?n^CCHUWVy%l>g-{gEB)4DrzJr~MN@7BhOJzsct z=65%nx(29>{i4RcVD!id?`{4+L)UWw`jL6Jq?3!w0EdllAgA@(lv9w+4b6=s?CPQU zA7jaT>EBGEJ%2VGLCG!i>D~+@rYi8$Se5*5&H$OpRS*{{izd|$^mD)4N!lvI6-E$sR$z z3=CCjKy@t)48K6?UobF~8Za=tN?>5Hn!&&zUNC1@pbb!BQEG%|ny)W|7Ld)sz{)7a z05X9Qh`ku4;p`wr4F+bgIM7-~Lk5uLfJ~j1RJQ9!NA#s6G(9uctjR6 zFz_7#VaBQ2e9{aIOs6wLB1$5BeXNr6bM+Ea@{>~aDsl@zx)^LKtboki)RIJnirk#M zVyg;UC9n!BAR8pCucQE0Qj%?}6yY17;GAESs$iyPpl6_D$EBd4U{jQmW)z9|8>y;bpKhp88yV>WRp=I1=9MH?=;jqGLkxkLMfuL^+7WFhI$72*t7vX3wIxi zu8PD0oSITAGI7`il7VOg2L{BAHXs*RMFyo7=jW7y{9iXg&M5DgL7G$0G2 zYe1+E&C4vYGlJTICXA#D=y@yWqSVBa{GyQj{2V*;+&t8Uld%Bn4D^72vv?G1XXRL4~lN2=!c{&uqZHb*>M4#21}@RT+i7* zuLmaUYo0ESAr*{o=NRTGIf}SMG7Fh2C@88cv{WmsGh}@JfXgGMrG;anf{K%pkOh;F zLjDH9O<(TzzF76~*TkFu{jZ;?*0Yw}dGP@=BZmV6lRyIlivj~C^T2<<2mW{E3XEo! z?7q9}Zs?=GYp%aO{BXjKn9E!L*8TsPY#$o>H0ke&y$inl`&y+d8~E@-@W0c0+T?3T0-A)Mh*jEgX5POSY~j}c$~?=bcW^3M-v9dG^S@2QVk5ojKwy* z4h=IKEa$N)9Pl|Hsxx0n2`$b4C2_dG7#n(_2gqwkWJzMIcJn_=R0Up(iNxdVe`mxF_g zyMc29Ly<^hLq}gi8w2AL4JJlG*@HZcOeX?an3SxVB$-$yEaqTwDPb{Y;ZSfF&Ja?N@c%@aFpE>%&&B sT6J&QdfOL8J2RL)o3SS{xM=UOczopr0CD*<(f|Me literal 0 HcmV?d00001 diff --git a/extension/icons/16.png b/extension/icons/16.png new file mode 100644 index 0000000000000000000000000000000000000000..91837c53aad5b51ea4d7ae4a401a7f941907ac63 GIT binary patch literal 1284 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD6uFt!ZXd+mq822=3roD zlwtsxzzD=%jM8v+5TgbIGgusGEu$d=$Z|m-j%v?jU;&FWFysJf5J&)GkbW>7keHcQ zqUYxtqF}0LsAp&h6la;hz`zco4UCKp7BE811?pJ91UE}y0W*RPRLkHq!?6cQaTa() z7BevL9RXp+soH$f3=B-CGeaUuB7A+UlJj%*5>xV%QuQiw3qZOUY$~jP%-qzHM1_jn zoV;SI3R@+x3M(KRB&@Hb09I0xZL1XF8=&BvUzDm~re~mMpk&9TprBw=l#*r@P?Wt5Z@Sn2DRmzV368|&p4rRy77T3YHG80i}s=>k>g7FXt#Bv$C=6)Qswftlly zTAW;zSx}OhpQivaH!&%{w8U0P31kr*K-^i9nTD__uNdkrpa=CqGWv#k2Kv~v0X++M zABwJu!~&d}QY$iX*aeb-XaffZ#Emu}7g$9Gr55Msl!E+XXK7{wb{2{t!c!0p5!f^! z3!-a4s1MD{EU`0!+JPpFqzmYIE9aur#FG4?ko^1{JM^??qmQlvNi)c+R<1xIEVZZ@ z z**~ubrroceE{-7@qFX2K=52NmaOwToAvQrl*pStX*xChVULx)>x?{Cj-ZcC2TIv^1i+HCC`eC2pyN~D>uaEU})XlSS0 zRRI=9nd5iTWRCB9ztE7Y#pLU%a}B+jf^AYB3QO3GTU}fE~tH1^)tyCEK>v9IG7168c?-14*j ZBimuayw(MipErVXucxb@%Q~loCIGp7fgS(= literal 0 HcmV?d00001 diff --git a/extension/icons/48.png b/extension/icons/48.png new file mode 100644 index 0000000000000000000000000000000000000000..5e05a0cffff7348db2170a8e97a9644c198bcc9d GIT binary patch literal 1447 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1SD@H!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)pT}UnMXwSj}Ky5HFasE6@fgu_!gdGtJkRK?}&{U|?mG zVgQ-I2*h5D(r|VVqXq*rSR80Aqag#xazP-DYR_a~0gE#*R7-8H_KoFGlC6N%dq%YOc9XcEbxdd zW?X?_wfUqO7?@6HhD4M^`1)8S=jZArrsOB3>Q&?xfOIj~R9FF-xv3?I3Kh9I zdBs*0wn|_XRzNmLSYJs2tfVB{Rw=?aK*2e`C{@8s&p^*W$&O1wLBXadCCw_x#SN+* z$g@?-C@Cqh($_C9FV`zK*2^zS*Eh7ZwA42+(l;{F1**_3uFNY*tkBIXR)!b?Gsh*h zIJqdZpd>RtPXT0ZVp4u-iLH_n$Rap^xU(cP4PjGWG1OZ?59)(t^bPe4^s#9JdKT_J z6kQdG1voXOR%GI^3nT;41`Z5}8*M-?u!;;yEzZv=1^LC!(#!_zEEGY6ryv?4uxUUR zMAv{&ADWk0VrK-k15Fr77tr%o&PAz-CHX}m`T03^=xNVJA6*5KW{_8{T!BPbYEd!B zQ=rsoqmLnsuEjY&C%-7TATc@B&Jd~`NeHUiMjsU2NYM{TTVPRO;U%5IQ&nS0ys@|EwkZfm51rak>y z6)O1bPT`zwx%U5UKG_`S%Hhd%l2q267n>?FfGr_GLs = [ + [ + q, + `https://openapi.tidal.com/v2/searchResults/${encodeURIComponent(q || '')}`, + { + limit, + offset, +- include: 'albums,artists,tracks,videos,playlists,topHits', ++ include: includeAll, + countryCode: this.#countryCode, + }, + ], + [ + s, + `https://openapi.tidal.com/v2/searchResults/${encodeURIComponent(s || '')}`, +- { limit, offset, include: 'tracks', countryCode: this.#countryCode }, ++ { limit, offset, include: includeAll, countryCode: this.#countryCode }, + ], + [ + a, + `https://openapi.tidal.com/v2/searchResults/${encodeURIComponent(a || '')}`, +- { limit, offset, include: 'artists,tracks', countryCode: this.#countryCode }, ++ { limit, offset, include: includeAll, countryCode: this.#countryCode }, + ], + [ + al, + `https://openapi.tidal.com/v2/searchResults/${encodeURIComponent(al || '')}`, +- { limit, offset, include: 'albums', countryCode: this.#countryCode }, ++ { limit, offset, include: includeAll, countryCode: this.#countryCode }, + ], + [ + v, + `https://openapi.tidal.com/v2/searchResults/${encodeURIComponent(v || '')}`, +- { limit, offset, include: 'videos', countryCode: this.#countryCode }, ++ { limit, offset, include: includeAll, countryCode: this.#countryCode }, + ], + [ + p, + `https://openapi.tidal.com/v2/searchResults/${encodeURIComponent(p || '')}`, diff --git a/js/proxy-utils.js b/js/proxy-utils.js new file mode 100644 index 0000000..8ef1aae --- /dev/null +++ b/js/proxy-utils.js @@ -0,0 +1,4 @@ +export const getProxyUrl = (url) => { + if (window.__tidalOriginExtension) return url; + return `/proxy-audio?url=${encodeURIComponent(url)}`; +}; diff --git a/test-search.js b/test-search.js deleted file mode 100644 index a4f6345..0000000 --- a/test-search.js +++ /dev/null @@ -1,33 +0,0 @@ -import { HiFiClient } from './js/HiFi.ts'; -import { LosslessAPI } from './js/api.js'; - -// mock out modules to make LosslessAPI load in bun -import { mock } from 'bun:test'; -mock.module('./js/icons.ts', () => ({})); -mock.module('./js/settings.js', () => ({ - devModeSettings: { isEnabled: () => false }, - syncManager: {}, - musicProviderSettings: {}, - audioSettings: {}, - apiSettings: {}, -})); - -globalThis.localStorage = { getItem: () => null, setItem: () => {}, removeItem: () => {} }; -globalThis.window = { matchMedia: () => ({ matches: false }) }; - -async function test() { - await HiFiClient.initialize(); - const api = new LosslessAPI({ getInstances: () => [] }); - - // mock cache - api.cache = { get: () => null, set: () => {} }; - - api.fetchWithRetry = async function (relativePath, options) { - console.log('fetchWithRetry called:', relativePath); - return HiFiClient.instance.query(relativePath); - }; - - const res = await api.search('coldplay'); - console.log('Returned tracks:', res.tracks?.items?.length); -} -test().catch(console.error);