···33## 3.4.0
4455- Adjusted search behaviour, now searches while typing (with a small delay).
66-- Allows you to make playlists public when using Fission / Webnative.
66+- Allows you to make playlists public when using Fission/ODD SDK.
77- Fixes issue with Safari where reloading after a search caused the loader to be shown indefinitely.
88-- Fixes syncing issues with Fission/Webnative.
88+- Fixes syncing issues with Fission/ODD SDK (was called Webnative before)
99+- Removes support for older browsers
91010111112## 3.3.0
···33// (◡ ‿ ◡ ✿)
44//
55// This worker is responsible for caching the application
66-// so it can be used offline.
66+// so it can be used offline and acts as a proxy that
77+// allows for example, authentication through headers
88+// when using audio elements.
99+//
1010+/// <reference lib="webworker" />
1111+1212+import { } from "../index.d"
713814915const KEY =
···45514652self.addEventListener("install", event => {
4753 if (isNativeWrapper) {
4848- return self.skipWaiting()
5454+ return globalThis.skipWaiting()
4955 }
50565157 const href = self.location.href.replace("service-worker.js", "")
···6571 const isInternal =
6672 !!event.request.url.match(new RegExp("^" + self.location.origin))
67736868- // When doing a request with basic authentication in the url, put it in the headers instead
6969- if (event.request.url.includes("service_worker_authentication=")) {
7474+ // Ping
7575+ if (event.request.url.includes("?ping=1")) {
7676+ event.respondWith(
7777+ (async () => {
7878+ const serverIsOnline = await network(event).then(_ => true).catch(_ => false)
7979+ return new Response(JSON.stringify(serverIsOnline), {
8080+ headers: { "Content-Type": "application/json" }
8181+ })
8282+ })()
8383+ )
8484+8585+ // When doing a request with basic authentication in the url, put it in the headers instead
8686+ } else if (event.request.url.includes("service_worker_authentication=")) {
7087 const url = new URL(event.request.url)
7188 const token = url.searchParams.get("service_worker_authentication")
7289···120137121138122139function cacheThenNetwork(event) {
123123- let url = new URL(event.request.url)
140140+ const url = new URL(event.request.url)
124141 url.search = ""
125142126143 return caches
···137154138155addEventListener("message", event => {
139156 if (event.data === "skipWaiting") {
140140- skipWaiting()
157157+ globalThis.skipWaiting()
141158 }
142159})
143160···160177 headers: newHeaders,
161178 credentials: request.credentials,
162179 cache: request.cache,
163163- destination: request.destination,
164180 method: request.method,
165181 mode: request.mode,
166182 redirect: request.redirect,
···55// Audio processing, getting metadata, etc.
667788-import * as musicMetadata from "music-metadata-browser"
88+import * as musicMetadata from "music-metadata"
99import { makeTokenizer } from "@tokenizer/http"
10101111import { mimeType } from "./common"