diff options
| author | Özgür Kesim <oec-taler@kesim.org> | 2023-09-09 07:34:11 +0200 | 
|---|---|---|
| committer | Özgür Kesim <oec-taler@kesim.org> | 2023-09-09 07:34:11 +0200 | 
| commit | 5495551071a3fdc36c38deb4c1cf6f4aa5b98bd4 (patch) | |
| tree | adf7730b190618a0499e50a2d43cf1b850cddd16 /packages/idb-bridge | |
| parent | 94cfcc875065f988815c31aaf8ebf36f75ac5983 (diff) | |
| parent | 6c3cfa9be7a332c2cc8490f25ebd6c73c8244842 (diff) | |
Merge branch 'master' into age-withdraw
Diffstat (limited to 'packages/idb-bridge')
| -rw-r--r-- | packages/idb-bridge/package.json | 2 | ||||
| -rw-r--r-- | packages/idb-bridge/src/SqliteBackend.ts | 27 | ||||
| -rw-r--r-- | packages/idb-bridge/src/backend-interface.ts | 2 | ||||
| -rw-r--r-- | packages/idb-bridge/src/bridge-idb.ts | 7 | ||||
| -rw-r--r-- | packages/idb-bridge/tsconfig.json | 4 | 
5 files changed, 35 insertions, 7 deletions
| diff --git a/packages/idb-bridge/package.json b/packages/idb-bridge/package.json index 1c9c46b02..ce64314ff 100644 --- a/packages/idb-bridge/package.json +++ b/packages/idb-bridge/package.json @@ -29,7 +29,7 @@      "ava": "^5.3.1",      "prettier": "^2.8.8",      "rimraf": "^5.0.1", -    "typescript": "^5.1.6" +    "typescript": "^5.2.2"    },    "dependencies": {      "tslib": "^2.6.0" diff --git a/packages/idb-bridge/src/SqliteBackend.ts b/packages/idb-bridge/src/SqliteBackend.ts index c40281861..a25ec0045 100644 --- a/packages/idb-bridge/src/SqliteBackend.ts +++ b/packages/idb-bridge/src/SqliteBackend.ts @@ -1882,7 +1882,7 @@ export class SqliteBackend implements Backend {      }    } -  clearObjectStore( +  async clearObjectStore(      btx: DatabaseTransaction,      objectStoreName: string,    ): Promise<void> { @@ -1906,7 +1906,21 @@ export class SqliteBackend implements Backend {        );      } -    throw new Error("Method not implemented."); +    this._prep(sqlClearObjectStore).run({ +      object_store_id: scopeInfo.objectStoreId, +    }); + +    for (const index of scopeInfo.indexMap.values()) { +      let stmt: Sqlite3Statement; +      if (index.unique) { +        stmt = this._prep(sqlClearUniqueIndexData); +      } else { +        stmt = this._prep(sqlClearIndexData); +      } +      stmt.run({ +        index_id: index.indexId, +      }); +    }    }  } @@ -1963,6 +1977,15 @@ CREATE TABLE IF NOT EXISTS unique_index_data  );  `; +const sqlClearObjectStore = ` +DELETE FROM object_data WHERE object_store_id=$object_store_id`; + +const sqlClearIndexData = ` +DELETE FROM index_data WHERE index_id=$index_id`; + +const sqlClearUniqueIndexData = ` +DELETE FROM unique_index_data WHERE index_id=$index_id`; +  const sqlListDatabases = `  SELECT name, version FROM databases;  `; diff --git a/packages/idb-bridge/src/backend-interface.ts b/packages/idb-bridge/src/backend-interface.ts index 3255261e2..690f92f54 100644 --- a/packages/idb-bridge/src/backend-interface.ts +++ b/packages/idb-bridge/src/backend-interface.ts @@ -144,7 +144,7 @@ export interface IndexMeta {    unique: boolean;  } -// FIXME: Instead of refering to an object store by name, +// FIXME: Instead of referring to an object store by name,  // maybe refer to it via some internal, numeric ID?  // This would simplify renaming.  export interface Backend { diff --git a/packages/idb-bridge/src/bridge-idb.ts b/packages/idb-bridge/src/bridge-idb.ts index 8cecba534..f3749c77c 100644 --- a/packages/idb-bridge/src/bridge-idb.ts +++ b/packages/idb-bridge/src/bridge-idb.ts @@ -735,7 +735,9 @@ export class BridgeIDBDatabase extends FakeEventTarget implements IDBDatabase {      }      if (this._closePending) { -      throw new InvalidStateError(); +      throw new InvalidStateError( +        `tried to start transaction on ${this._name}, but a close is pending`, +      );      }      if (!Array.isArray(storeNames)) { @@ -930,6 +932,9 @@ export class BridgeIDBFactory {          // http://www.w3.org/TR/2015/REC-IndexedDB-20150108/#dfn-steps-for-running-a-versionchange-transaction          for (const otherConn of this.connections) { +          if (otherConn._name != db._name) { +            continue; +          }            if (otherConn._closePending) {              continue;            } diff --git a/packages/idb-bridge/tsconfig.json b/packages/idb-bridge/tsconfig.json index 19e9c2a74..44a27284b 100644 --- a/packages/idb-bridge/tsconfig.json +++ b/packages/idb-bridge/tsconfig.json @@ -1,8 +1,8 @@  {    "compilerOptions": {      "composite": true, -    "lib": ["es6"], -    "module": "ES2020", +    "lib": ["ES2020"], +    "module": "Node16",      "moduleResolution": "Node16",      "target": "ES2020",      "allowJs": true, | 
