From 5f8714091aac80144be118fa6427d65222e7509c Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Mon, 10 Aug 2020 14:37:20 +0530 Subject: use API extractor for cleaner package separation --- packages/taler-wallet-core/package.json | 1 + packages/taler-wallet-core/src/db.ts | 10 ++--- packages/taler-wallet-core/src/types/dbTypes.ts | 4 +- packages/taler-wallet-core/src/util/query.ts | 56 +++++++++++++++---------- packages/taler-wallet-core/tsconfig.json | 2 +- 5 files changed, 42 insertions(+), 31 deletions(-) (limited to 'packages/taler-wallet-core') diff --git a/packages/taler-wallet-core/package.json b/packages/taler-wallet-core/package.json index 68bf45d0a..981504e4c 100644 --- a/packages/taler-wallet-core/package.json +++ b/packages/taler-wallet-core/package.json @@ -31,6 +31,7 @@ "types": "./lib/index.d.ts", "devDependencies": { "@ava/typescript": "^1.1.1", + "@microsoft/api-extractor": "^7.9.3", "@typescript-eslint/eslint-plugin": "^3.6.1", "@typescript-eslint/parser": "^3.6.1", "ava": "^3.10.1", diff --git a/packages/taler-wallet-core/src/db.ts b/packages/taler-wallet-core/src/db.ts index a6eeb1205..f4d0b911e 100644 --- a/packages/taler-wallet-core/src/db.ts +++ b/packages/taler-wallet-core/src/db.ts @@ -1,6 +1,6 @@ import { Stores } from "./types/dbTypes"; import { openDatabase, Database, Store, Index } from "./util/query"; -import type { idbtypes } from "idb-bridge"; +import { IDBFactory, IDBDatabase } from "idb-bridge"; /** * Name of the Taler database. The name includes the @@ -24,11 +24,11 @@ export const WALLET_DB_MINOR_VERSION = 1; * to the taler wallet db. */ export function openTalerDatabase( - idbFactory: idbtypes.IDBFactory, + idbFactory: IDBFactory, onVersionChange: () => void, -): Promise { +): Promise { const onUpgradeNeeded = ( - db: idbtypes.IDBDatabase, + db: IDBDatabase, oldVersion: number, newVersion: number, ): void => { @@ -61,6 +61,6 @@ export function openTalerDatabase( ); } -export function deleteTalerDatabase(idbFactory: idbtypes.IDBFactory): void { +export function deleteTalerDatabase(idbFactory: IDBFactory): void { Database.deleteDatabase(idbFactory, TALER_DB_NAME); } diff --git a/packages/taler-wallet-core/src/types/dbTypes.ts b/packages/taler-wallet-core/src/types/dbTypes.ts index 3e1fdfe25..26cf6915d 100644 --- a/packages/taler-wallet-core/src/types/dbTypes.ts +++ b/packages/taler-wallet-core/src/types/dbTypes.ts @@ -44,7 +44,7 @@ import { } from "./ReserveTransaction"; import { Timestamp, Duration, getTimestampNow } from "../util/time"; import { PayCoinSelection, PayCostInfo } from "../operations/pay"; -import { idbtypes } from "idb-bridge"; +import { IDBKeyPath } from "idb-bridge"; export enum ReserveRecordStatus { /** @@ -1666,7 +1666,7 @@ class DenominationsStore extends Store { constructor() { // cast needed because of bug in type annotations super("denominations", { - keyPath: (["exchangeBaseUrl", "denomPub"] as any) as idbtypes.IDBKeyPath, + keyPath: (["exchangeBaseUrl", "denomPub"] as any) as IDBKeyPath, }); } diff --git a/packages/taler-wallet-core/src/util/query.ts b/packages/taler-wallet-core/src/util/query.ts index 53359752e..f6e689f49 100644 --- a/packages/taler-wallet-core/src/util/query.ts +++ b/packages/taler-wallet-core/src/util/query.ts @@ -24,7 +24,17 @@ * Imports. */ import { openPromise } from "./promiseUtils"; -import type { idbtypes } from "idb-bridge"; +import { + IDBObjectStoreParameters, + IDBRequest, + IDBTransaction, + IDBValidKey, + IDBDatabase, + IDBFactory, + IDBVersionChangeEvent, + Event, + IDBCursor, +} from "idb-bridge"; /** * Exception that should be thrown by client code to abort a transaction. @@ -37,7 +47,7 @@ export const TransactionAbort = Symbol("transaction_abort"); export class Store { constructor( public name: string, - public storeParams?: idbtypes.IDBObjectStoreParameters, + public storeParams?: IDBObjectStoreParameters, public validator?: (v: T) => T, ) {} } @@ -55,7 +65,7 @@ export interface IndexOptions { multiEntry?: boolean; } -function requestToPromise(req: idbtypes.IDBRequest): Promise { +function requestToPromise(req: IDBRequest): Promise { const stack = Error("Failed request was started here."); return new Promise((resolve, reject) => { req.onsuccess = () => { @@ -69,7 +79,7 @@ function requestToPromise(req: idbtypes.IDBRequest): Promise { }); } -function transactionToPromise(tx: idbtypes.IDBTransaction): Promise { +function transactionToPromise(tx: IDBTransaction): Promise { const stack = Error("Failed transaction was started here."); return new Promise((resolve, reject) => { tx.onabort = () => { @@ -86,7 +96,7 @@ function transactionToPromise(tx: idbtypes.IDBTransaction): Promise { } function applyMutation( - req: idbtypes.IDBRequest, + req: IDBRequest, f: (x: T) => T | undefined, ): Promise { return new Promise((resolve, reject) => { @@ -96,7 +106,7 @@ function applyMutation( const val = cursor.value; const modVal = f(val); if (modVal !== undefined && modVal !== null) { - const req2: idbtypes.IDBRequest = cursor.update(modVal); + const req2: IDBRequest = cursor.update(modVal); req2.onerror = () => { reject(req2.error); }; @@ -132,7 +142,7 @@ class ResultStream { private gotCursorEnd = false; private awaitingResult = false; - constructor(private req: idbtypes.IDBRequest) { + constructor(private req: IDBRequest) { this.awaitingResult = true; let p = openPromise(); this.currentPromise = p.promise; @@ -224,7 +234,7 @@ class ResultStream { return { hasValue: false }; } if (!this.awaitingResult) { - const cursor: idbtypes.IDBCursor | undefined = this.req.result; + const cursor: IDBCursor | undefined = this.req.result; if (!cursor) { throw Error("assertion failed"); } @@ -244,7 +254,7 @@ class ResultStream { } export class TransactionHandle { - constructor(private tx: idbtypes.IDBTransaction) {} + constructor(private tx: IDBTransaction) {} put(store: Store, value: T, key?: any): Promise { const req = this.tx.objectStore(store.name).put(value, key); @@ -261,7 +271,7 @@ export class TransactionHandle { return requestToPromise(req); } - getIndexed( + getIndexed( index: Index, key: any, ): Promise { @@ -277,7 +287,7 @@ export class TransactionHandle { return new ResultStream(req); } - iterIndexed( + iterIndexed( index: Index, key?: any, ): ResultStream { @@ -304,7 +314,7 @@ export class TransactionHandle { } function runWithTransaction( - db: idbtypes.IDBDatabase, + db: IDBDatabase, stores: Store[], f: (t: TransactionHandle) => Promise, mode: "readonly" | "readwrite", @@ -367,7 +377,7 @@ function runWithTransaction( /** * Definition of an index. */ -export class Index { +export class Index { /** * Name of the store that this index is associated with. */ @@ -404,24 +414,24 @@ export class Index { * to the taler wallet db. */ export function openDatabase( - idbFactory: idbtypes.IDBFactory, + idbFactory: IDBFactory, databaseName: string, databaseVersion: number, onVersionChange: () => void, onUpgradeNeeded: ( - db: idbtypes.IDBDatabase, + db: IDBDatabase, oldVersion: number, newVersion: number, ) => void, -): Promise { - return new Promise((resolve, reject) => { +): Promise { + return new Promise((resolve, reject) => { const req = idbFactory.open(databaseName, databaseVersion); req.onerror = (e) => { console.log("taler database error", e); reject(new Error("database error")); }; req.onsuccess = (e) => { - req.result.onversionchange = (evt: idbtypes.IDBVersionChangeEvent) => { + req.result.onversionchange = (evt: IDBVersionChangeEvent) => { console.log( `handling live db version change from ${evt.oldVersion} to ${evt.newVersion}`, ); @@ -442,9 +452,9 @@ export function openDatabase( } export class Database { - constructor(private db: idbtypes.IDBDatabase) {} + constructor(private db: IDBDatabase) {} - static deleteDatabase(idbFactory: idbtypes.IDBFactory, dbName: string): void { + static deleteDatabase(idbFactory: IDBFactory, dbName: string): void { idbFactory.deleteDatabase(dbName); } @@ -468,7 +478,7 @@ export class Database { dump.stores[name] = storeDump; tx.objectStore(name) .openCursor() - .addEventListener("success", (e: idbtypes.Event) => { + .addEventListener("success", (e: Event) => { const cursor = (e.target as any).result; if (cursor) { storeDump[cursor.key] = cursor.value; @@ -512,7 +522,7 @@ export class Database { return v; } - async getIndexed( + async getIndexed( index: Index, key: any, ): Promise { @@ -548,7 +558,7 @@ export class Database { return new ResultStream(req); } - iterIndex( + iterIndex( index: Index, query?: any, ): ResultStream { diff --git a/packages/taler-wallet-core/tsconfig.json b/packages/taler-wallet-core/tsconfig.json index 07e8ab0bf..e3bfd31a7 100644 --- a/packages/taler-wallet-core/tsconfig.json +++ b/packages/taler-wallet-core/tsconfig.json @@ -28,5 +28,5 @@ "path": "../idb-bridge/" } ], - "include": ["src/**/*"] + "include": ["src/**/*"], } -- cgit v1.2.3