dev.js (1138B)
1 let _settings = { 2 devapi: { name: "Developer API", type: "bool", brief: "Don't use the production API" } 3 } 4 5 for (let k in _settings) { 6 switch (_settings[k].type) { 7 case "bool": 8 case "string": 9 break; 10 default: 11 console.error(`"${k}" developer setting has an invalid type (${_settings[k].type}); deleting`) 12 delete _settings[k] 13 continue 14 } 15 _settings[k].key = k 16 } 17 18 export const settings = _settings 19 20 export function setting(k, v) { 21 if (v === undefined) { 22 if (settings[k] == undefined) { 23 console.error(`Tried to access undefined setting "${k}": ${new Error("").stack}`) 24 return undefined 25 } 26 return getValue(k) 27 } 28 setValue(k, v) 29 } 30 31 function getValue(k) { 32 let v = localStorage.getItem(storageKey(k)) 33 console.log("dev.getValue", k, v) 34 if (settings[k].type === "bool") { 35 return v == "true" 36 } else if (settings[k].type === "string") { 37 return v 38 } 39 throw new Error("Invalid setting type") 40 } 41 42 function setValue(k, v) { 43 console.log("dev.setValue", k, v) 44 if (v == null) { 45 localStorage.removeItem(storageKey(k)) 46 } else { 47 localStorage.setItem(storageKey(k), v) 48 } 49 } 50 51 function storageKey(k) { 52 return "dev-" + k 53 }