summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2020-08-10 14:37:20 +0530
committerFlorian Dold <florian.dold@gmail.com>2020-08-10 14:37:20 +0530
commit5f8714091aac80144be118fa6427d65222e7509c (patch)
treea897f42a894b299a78a44e8d9b96a2a9a8342d0c /packages/taler-wallet-core
parent6990b3b5ec09ed5c1cc9d3eab4c5f8ad31d351ff (diff)
downloadwallet-core-5f8714091aac80144be118fa6427d65222e7509c.tar.gz
wallet-core-5f8714091aac80144be118fa6427d65222e7509c.tar.bz2
wallet-core-5f8714091aac80144be118fa6427d65222e7509c.zip
use API extractor for cleaner package separation
Diffstat (limited to 'packages/taler-wallet-core')
-rw-r--r--packages/taler-wallet-core/package.json1
-rw-r--r--packages/taler-wallet-core/src/db.ts10
-rw-r--r--packages/taler-wallet-core/src/types/dbTypes.ts4
-rw-r--r--packages/taler-wallet-core/src/util/query.ts56
-rw-r--r--packages/taler-wallet-core/tsconfig.json2
5 files changed, 42 insertions, 31 deletions
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<idbtypes.IDBDatabase> {
+): Promise<IDBDatabase> {
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<DenominationRecord> {
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<T> {
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<any> {
+function requestToPromise(req: IDBRequest): Promise<any> {
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<any> {
});
}
-function transactionToPromise(tx: idbtypes.IDBTransaction): Promise<void> {
+function transactionToPromise(tx: IDBTransaction): Promise<void> {
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<void> {
}
function applyMutation<T>(
- req: idbtypes.IDBRequest,
+ req: IDBRequest,
f: (x: T) => T | undefined,
): Promise<void> {
return new Promise((resolve, reject) => {
@@ -96,7 +106,7 @@ function applyMutation<T>(
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<T> {
private gotCursorEnd = false;
private awaitingResult = false;
- constructor(private req: idbtypes.IDBRequest) {
+ constructor(private req: IDBRequest) {
this.awaitingResult = true;
let p = openPromise<void>();
this.currentPromise = p.promise;
@@ -224,7 +234,7 @@ class ResultStream<T> {
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<T> {
}
export class TransactionHandle {
- constructor(private tx: idbtypes.IDBTransaction) {}
+ constructor(private tx: IDBTransaction) {}
put<T>(store: Store<T>, value: T, key?: any): Promise<any> {
const req = this.tx.objectStore(store.name).put(value, key);
@@ -261,7 +271,7 @@ export class TransactionHandle {
return requestToPromise(req);
}
- getIndexed<S extends idbtypes.IDBValidKey, T>(
+ getIndexed<S extends IDBValidKey, T>(
index: Index<S, T>,
key: any,
): Promise<T | undefined> {
@@ -277,7 +287,7 @@ export class TransactionHandle {
return new ResultStream<T>(req);
}
- iterIndexed<S extends idbtypes.IDBValidKey, T>(
+ iterIndexed<S extends IDBValidKey, T>(
index: Index<S, T>,
key?: any,
): ResultStream<T> {
@@ -304,7 +314,7 @@ export class TransactionHandle {
}
function runWithTransaction<T>(
- db: idbtypes.IDBDatabase,
+ db: IDBDatabase,
stores: Store<any>[],
f: (t: TransactionHandle) => Promise<T>,
mode: "readonly" | "readwrite",
@@ -367,7 +377,7 @@ function runWithTransaction<T>(
/**
* Definition of an index.
*/
-export class Index<S extends idbtypes.IDBValidKey, T> {
+export class Index<S extends IDBValidKey, T> {
/**
* Name of the store that this index is associated with.
*/
@@ -404,24 +414,24 @@ export class Index<S extends idbtypes.IDBValidKey, T> {
* 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<idbtypes.IDBDatabase> {
- return new Promise<idbtypes.IDBDatabase>((resolve, reject) => {
+): Promise<IDBDatabase> {
+ return new Promise<IDBDatabase>((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<S extends idbtypes.IDBValidKey, T>(
+ async getIndexed<S extends IDBValidKey, T>(
index: Index<S, T>,
key: any,
): Promise<T | undefined> {
@@ -548,7 +558,7 @@ export class Database {
return new ResultStream<T>(req);
}
- iterIndex<S extends idbtypes.IDBValidKey, T>(
+ iterIndex<S extends IDBValidKey, T>(
index: Index<S, T>,
query?: any,
): ResultStream<T> {
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/**/*"],
}