Greasy Fork is available in English.
none
Dieses Skript sollte nicht direkt installiert werden. Es handelt sich hier um eine Bibliothek für andere Skripte, welche über folgenden Befehl in den Metadaten eines Skriptes eingebunden wird // @require https://update.greasyfork.org/scripts/491829/1671236/tampermonkey%20storage%20proxy.js
// ==UserScript==
// @name tampermonkey storage proxy
// @version 2
// @description none
// @run-at document-start
// @author You
// @license GPLv3
// @match *://*/*
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAMAAABiM0N1AAAAAXNSR0IB2cksfwAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAHJQTFRFAAAAEIijAo2yAI60BYyuF4WaFIifAY6zBI2wB4usGIaZEYigIoiZCIyrE4igG4iYD4mjEomhFoedCoqpDIqnDomlBYyvE4efEYmiDYqlA42xBoytD4mkCYqqGYSUFYidC4qoC4upAo6yCoupDYqmCYur4zowOQAAACZ0Uk5TAO////9vr////1+/D/+/L+/Pf/////+f3///////H4////////+5G91rAAACgUlEQVR4nM2Y22KjIBCGidg1264liZqDadK03X3/V2wNKHMC7MpF/xthHD5mgERAqZhWhfYqH6K+Qf2qNNf625hCoFj9/gblMUi5q5jLkXLCKudgyiRm0FMK82cWJp1fLbV5VmvJbCIc0GCYaFqqlDJgADdBjncqAXYobm1xh72aFMflbysteFfdy2Yi1XGOm5HGBzQ1dq7TzEoxjeNTjQZb7VA3e1c7+ImgasAgQ9+xusNVNZIo5xmOMgihIS2PbCQIiHEUdTvhxCcS/kPomfFI2zHy2PkWmA6aNatIJpKFJyekyy02xh5Y3DI9T4aOT6VhIUrsNTFp1pf79Z4SIIVDegl6IJO6cHiL/GimIZDhgTu/BlYWCQzHMl0zBWT/T3KAhtxOuUB9FtBrpsz0RV4xsjHmW+UCaffcSy/5viMGer0/6HdFNMZBq/vjJL38H9Dqx4Fuy0Em12DbZy+9pGtiDijbglwAehyj11n0tRD3WUBm+lwulE/8h4BuA+iWAQQnteg2Xm63WQLTpnMnpjdge0Mgu/GRPsV4xdjQ94Lfi624fabhDkfUqIKNrM64Q837v8yL0prasepCgrtvw1sJpoqanGEX7b5mQboNW8eawXaWXTMfMGxub472hzWzHSn6Sg2G9+6TAyRruE71s+zAzjWaknoyJCQzwxrghH2k5FDT4eqWunuNxyN9QCGcxVod5oADbYnIUkDTGZEf1xDJnSFteQ3KdsT8zYDMQXcHxsevcLH1TrsABzkNPyA/L7b0jg704viMMlpQI96WsHknCt/3YH0kOEo9zcGkwrFK39ck72rmoehmKqo2RKlilzSy/nJKEV45CT38myJp456fezktHjN5aeMAAAAASUVORK5CYII=
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_addValueChangeListener
// ==/UserScript==
class storageproxy {
#mainstoragekey
#lastGotData
updateRequired = false
onupdate
constructor(mainstoragekey = "storageproxy") {
this.#mainstoragekey = mainstoragekey
this.updateRequired = false
GM_addValueChangeListener(
mainstoragekey,
((key, oldValue, newValue, remote) => {
this.updateRequired = true
this.onupdate?.(key, oldValue, newValue, remote)
}).bind(this)
)
}
update() {
if (this.updateRequired) {
this.updateRequired = false
return this.get()
}
return this.#lastGotData
}
get() {
var mainstoragekey = this.#mainstoragekey
var mainobj = GM_getValue(mainstoragekey)
if (mainobj) {
mainobj = JSON.parse(mainobj)
} else {
GM_setValue(mainstoragekey, "{}")
mainobj = {}
}
return (this.#lastGotData = p(mainobj))
function p(container) {
return new Proxy(container, {
get(obj, prop) {
var val = Reflect.get(obj, prop)
if (
["[object Array]", "[object Object]"].includes(
Object.prototype.toString.call(val)
)
)
return p(val)
return val
},
set(obj, prop, val) {
if (prop == "__all") {
GM_setValue(
mainstoragekey,
JSON.stringify((mainobj = val))
)
return val
}
var temp = Reflect.set(obj, prop, val)
GM_setValue(mainstoragekey, JSON.stringify(mainobj))
return temp
},
deleteProperty(obj, prop) {
var temp = Reflect.deleteProperty(obj, prop)
GM_setValue(mainstoragekey, JSON.stringify(mainobj))
return temp
},
})
}
}
}