map-storage

拡張機能storageをMap APIで扱う

Usage no npm install needed!

<script type="module">
  import mapStorage from 'https://cdn.skypack.dev/map-storage';
</script>

README

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 -->
<script src="./map-storage.js"></script>
<script src="./background.js"></script>

global.MapStorageから扱う。

// background.js
const mapstorage = await new MapStorage('foobar');

mapstorage.set('key', {value: true});
// content-scripts.js
const mapstorage = await new MapStorage('foobar');

mapstorage.get('key'); // {value: true}

あるいは

// for Bundle
import MapStorage from 'map-storage';


// Dynamic import & CDN
const {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 new MapStorage('hoge');

// options
const mapstorage = await new MapStorage('fuga', {
    saveInterval: 0, // 実体に保存する間隔
    type: 'local' // or sync, managed
});

MapStorage#bytes()

Storage実体の使用量を数値で取得する。
取得した数値を引数に解决するpromiseを返す。

const number = await mapstorage.bytes();

MapStorage#disconnect()

同じStorage実体から生成されたインスタンス間の同期を終了する。
同期の終了後に解決するpromiseを返す。
*同期中のインスタンスはGCの対象にならない

const bool = await mapstorage.disconnect();

MapStorage#toJSON()

自身の内容をオブジェクトで返す。

const obj = mapstorage.toJSON();

MapStorage#lastModified

最終更新時のDateインスタンス。

mapstorage.lastModified; // date