state:State = new Proxy(overlay, {/** Give defaults if overlay doesn't have the key */get(target, property) {if (notBackground())throw "State object must be accessed with getAsync in content"if (property in target) {return target[property]} else {return defaults[property]}},/** Persist sets to storage "immediately" */set(target, property, value) {// Ensure we don't accidentally store anything sensitiveif (browser.extension.inIncognitoContext) return falselogger.debug("State changed!", property, value)if (notBackground()) {browser.runtime.sendMessage({type: "state",command: "stateUpdate",args: { property, value },})return true}// Do we need a global storage lock?target[property] = valuebrowser.storage.local.set({ state: target } as any)return true},})