目次
(async () => {
const dbName = "XSavedDB_user_45991221";
const storeName = "bookmarks";
const db = await new Promise((resolve, reject) => {
const req = indexedDB.open(dbName);
req.onsuccess = () => resolve(req.result);
req.onerror = () => reject(req.error);
});
const records = await new Promise((resolve, reject) => {
const tx = db.transaction(storeName, "readonly");
const store = tx.objectStore(storeName);
const req = store.getAll();
req.onsuccess = () => resolve(req.result);
req.onerror = () => reject(req.error);
});
db.close();
console.log(`ブックマーク取得: ${records.length}件`);
const json = JSON.stringify(records, (key, value) =>
typeof value === "bigint" ? value.toString() : value
, 2);
const dataUrl =
"data:application/json;charset=utf-8," +
encodeURIComponent(json);
const downloadId = await chrome.downloads.download({
url: dataUrl,
filename: `xsaved-bookmarks-${records.length}.json`,
saveAs: true
});
console.log(`ダウンロード開始: ${downloadId}`);
console.log(`ファイル名: xsaved-bookmarks-${records.length}.json`);
})();