Sets a maximum age (minimum one day) for script storage values, after which they are deleted
Este script não deve ser instalado diretamente. É uma biblioteca destinada a ser incluída por outros scripts através da diretiva de metadados // @require https://update.greasyfork.org/scripts/562172/1881822/Temporary-Script-Storage.js
O armazenamento definido e acessado através de uma instância dessa classe só viverá enquanto a duração que você definir no construtor, embora deva ser de pelo menos um dia. O padrão é 30 dias. Depois disso, ele expirará e será excluído quando sweepExpiredEntries() for chamado, o que você pode agendar com setInterval().
Esta biblioteca não tem efeito no armazenamento de script definido diretamente através do setValue() do GM da maneira usual. Tal armazenamento se comportará normalmente.
Exemplo de uso:
const persistentStorage = new TTLStorage();
await persistentStorage.ready();
setInterval(() => persistentStorage.sweepExpiredEntries(), 1000 * 60 * 60 * 24);
try {
await persistentStorage.set("key1", "hello"); // throws
const msg = persistentStorage.get("key1"); // fast memory read
await persistentStorage.delete("key1"); // throws
} catch {}
Além disso, qualquer script que use esta biblioteca deve incluir os seguintes metadados:
// @grant GM.getValue
// @grant GM.setValue
// @grant GM.deleteValue
// @grant GM.listValues
// @grant GM.info
Isso é necessário porque colocar o que cada biblioteca precisa em seus próprios metadados não é suficiente. O script de nível superior deve fornecer os @requires e @grants necessários para todas as suas dependências.