PageSourceSearch

https://www.8desk.top/libs/indexedDB.js?v=1.99.00

js 8desk.top collected 2026-10-03 23:13:37 UTC 1,753 bytes, 65 lines download raw bytes

1let db;
2
3const DATABASE_NAME = "d2";
4const STORE_NAME = "s";
5
6const openDatabase = () => {
7  return new Promise((resolve, reject) => {
8    if (db) resolve();
9
10    if (!window.indexedDB) return reject("IndexedDB is not supported");
11    const request = window.indexedDB.open(DATABASE_NAME);
12
13    request.onsuccess = event => {
14      db = event.target.result;
15      resolve();
16    };
17
18    request.onerror = event => {
19      console.error("IndexedDB request error");
20      reject();
21    };
22
23    request.onupgradeneeded = event => {
24      db = event.target.result;
25      const objectStore = db.createObjectStore(STORE_NAME, {keyPath: "key"});
26      objectStore.transaction.oncomplete = () => {
27        db = event.target.result;
28      };
29    };
30  });
31};
32
33const ldb = {
34  get: key => {
35    return new Promise((resolve, reject) => {
36      openDatabase().then(() => {
37        const hasStore = Array.from(db.objectStoreNames).includes(STORE_NAME);
38        if (!hasStore) return reject("IndexedDB: no store found");
39
40        const transaction = db.transaction(STORE_NAME, "readonly");
41        const objectStore = transaction.objectStore(STORE_NAME);
42        const getRequest = objectStore.get(key);
43
44        getRequest.onsuccess = event => {
45          const result = event.target.result?.value || null;
46          resolve(result);
47        };
48      });
49    });
50  },
51
52  set: (keyName, value) => {
53    return new Promise(resolve => {
54      openDatabase().then(() => {
55        const transaction = db.transaction(STORE_NAME, "readwrite");
56        const objectStore = transaction.objectStore([STORE_NAME]);
57        const putRequest = objectStore.put({key: keyName, value});
58
59        putRequest.onsuccess = () => {
60          resolve();
61        };
62      });
63    });
64  }
65};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.