map-storage
なにこれ
WebExtensionsのstorageをMap APIで扱う。
- 自動同期
- 同じstorage実体から生成したインスタンス間で同期する。
- 自動永続化
- よしなにstorage実体へ永続化する。
使い方
$ npm i map-storage
map-storage.jsを読み込む。
ChromeExtensionsでは別途mozilla/webextension-polyfillが必要。
// manifest.json // example: ContentScripts "content_scripts": "matches": "<all_urls>" "js": "map-storage.js" "content-scripts.js" "run_at": "document_start" // example: Background page "background": "page": "background.html" "permissions": "storage" "unlimitedStorage" // or
<!-- example: background.html -->
global.MapStorageから扱う。
// background.jsconst mapstorage = await 'foobar'; mapstorage;
// content-scripts.jsconst mapstorage = await 'foobar'; mapstorage; // {value: true}
あるいは
// for Bundle; // Dynamic import & CDNconst default: MapStorage = await import'https://rawcdn.githack.com/honeo/map-storage/d519a64e613e0f9a594745a468a2d19a992a3ddd/map-storage.mjs';
API
Map - JavaScript | MDNを継承している。
MapStorage(name [, options])
引数1文字列の名でインスタンスを作成する。
既に同名のStorage実体があれば内容を読み込む。
インスタンスを引数に解决するpromiseを返す。
const mapstorage = await 'hoge'; // optionsconst mapstorage = await 'fuga' saveInterval: 0 // 実体に保存する間隔 type: 'local' // or sync, managed;
MapStorage#bytes()
Storage実体の使用量を数値で取得する。
取得した数値を引数に解决するpromiseを返す。
const number = await mapstorage;
MapStorage#disconnect()
同じStorage実体から生成されたインスタンス間の同期を終了する。
同期の終了後に解決するpromiseを返す。
*同期中のインスタンスはGCの対象にならない
const bool = await mapstorage;
MapStorage#toJSON()
自身の内容をオブジェクトで返す。
const obj = mapstorage;
MapStorage#lastModified
最終更新時のDateインスタンス。
mapstoragelastModified; // date