()
| 394 | }); |
| 395 | } |
| 396 | async function loadMapping() { |
| 397 | try { |
| 398 | const cachedMapping = await dbStorage.getItem("mappings", "mapping"); |
| 399 | if (cachedMapping) return cachedMapping; |
| 400 | try { |
| 401 | const localMapping = localStorage.getItem("mapping"); |
| 402 | if (localMapping) { |
| 403 | const mappingData = JSON.parse(localMapping); |
| 404 | try { |
| 405 | await dbStorage.setItem("mappings", "mapping", mappingData); |
| 406 | localStorage.removeItem("mapping"); |
| 407 | } catch (e) {} |
| 408 | return mappingData; |
| 409 | } |
| 410 | } catch (e) {} |
| 411 | const response = await fetch("./mapping.json", { |
| 412 | referrerPolicy: "no-referrer", |
| 413 | mode: "cors", |
| 414 | credentials: "omit", |
| 415 | }); |
| 416 | if (!response.ok) throw new Error("Failed to load mapping.json"); |
| 417 | const mappingData = await response.json(); |
| 418 | try { |
| 419 | await dbStorage.setItem("mappings", "mapping", mappingData); |
| 420 | } catch (e) { |
| 421 | try { |
| 422 | localStorage.setItem("mapping", JSON.stringify(mappingData)); |
| 423 | } catch (e) {} |
| 424 | } |
| 425 | return mappingData; |
| 426 | } catch (error) { |
| 427 | return {}; |
| 428 | } |
| 429 | } |
| 430 | const AppState = { |
| 431 | isSearching: false, |
| 432 | randomStringDisplayed: false, |
no test coverage detected