From 2e1438eb048e48ec7aa71246878b1125c9e34694 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Tue, 8 Jun 2021 15:58:13 -0300 Subject: moving logger into taler-util --- .../src/crypto/workers/cryptoApi.ts | 2 +- .../src/crypto/workers/cryptoImplementation.ts | 2 +- .../src/crypto/workers/nodeThreadWorker.ts | 2 +- packages/taler-wallet-core/src/db.ts | 2 +- .../taler-wallet-core/src/headless/NodeHttpLib.ts | 2 +- packages/taler-wallet-core/src/headless/helpers.ts | 2 +- packages/taler-wallet-core/src/index.ts | 4 - .../src/operations/backup/import.ts | 2 +- .../src/operations/backup/index.ts | 2 +- .../taler-wallet-core/src/operations/balance.ts | 2 +- .../taler-wallet-core/src/operations/currencies.ts | 2 +- .../taler-wallet-core/src/operations/deposits.ts | 2 +- .../taler-wallet-core/src/operations/exchanges.ts | 2 +- packages/taler-wallet-core/src/operations/pay.ts | 2 +- .../taler-wallet-core/src/operations/recoup.ts | 2 +- .../taler-wallet-core/src/operations/refresh.ts | 2 +- .../taler-wallet-core/src/operations/refund.ts | 2 +- .../taler-wallet-core/src/operations/reserves.ts | 2 +- packages/taler-wallet-core/src/operations/state.ts | 4 +- .../taler-wallet-core/src/operations/testing.ts | 2 +- packages/taler-wallet-core/src/operations/tip.ts | 2 +- .../taler-wallet-core/src/operations/withdraw.ts | 2 +- .../taler-wallet-core/src/util/RequestThrottler.ts | 2 +- .../taler-wallet-core/src/util/coinSelection.ts | 3 +- packages/taler-wallet-core/src/util/http.ts | 2 +- packages/taler-wallet-core/src/util/logging.ts | 100 --------------------- packages/taler-wallet-core/src/util/query.ts | 3 +- packages/taler-wallet-core/src/util/timer.ts | 3 +- packages/taler-wallet-core/src/wallet.ts | 2 +- 29 files changed, 28 insertions(+), 135 deletions(-) delete mode 100644 packages/taler-wallet-core/src/util/logging.ts (limited to 'packages/taler-wallet-core/src') diff --git a/packages/taler-wallet-core/src/crypto/workers/cryptoApi.ts b/packages/taler-wallet-core/src/crypto/workers/cryptoApi.ts index c124b89d4..a38441067 100644 --- a/packages/taler-wallet-core/src/crypto/workers/cryptoApi.ts +++ b/packages/taler-wallet-core/src/crypto/workers/cryptoApi.ts @@ -37,7 +37,7 @@ import { } from "@gnu-taler/taler-util"; import * as timer from "../../util/timer"; -import { Logger } from "../../util/logging"; +import { Logger } from "@gnu-taler/taler-util"; import { DerivedRefreshSession, DerivedTipPlanchet, diff --git a/packages/taler-wallet-core/src/crypto/workers/cryptoImplementation.ts b/packages/taler-wallet-core/src/crypto/workers/cryptoImplementation.ts index 6e9427e57..d8c02cb1b 100644 --- a/packages/taler-wallet-core/src/crypto/workers/cryptoImplementation.ts +++ b/packages/taler-wallet-core/src/crypto/workers/cryptoImplementation.ts @@ -68,7 +68,7 @@ import { randomBytes } from "../primitives/nacl-fast"; import { kdf } from "../primitives/kdf"; import { Timestamp, timestampTruncateToSecond } from "@gnu-taler/taler-util"; -import { Logger } from "../../util/logging"; +import { Logger } from "@gnu-taler/taler-util"; import { DerivedRefreshSession, DerivedTipPlanchet, diff --git a/packages/taler-wallet-core/src/crypto/workers/nodeThreadWorker.ts b/packages/taler-wallet-core/src/crypto/workers/nodeThreadWorker.ts index 66fd2de76..37b93abe4 100644 --- a/packages/taler-wallet-core/src/crypto/workers/nodeThreadWorker.ts +++ b/packages/taler-wallet-core/src/crypto/workers/nodeThreadWorker.ts @@ -21,7 +21,7 @@ import { CryptoWorkerFactory } from "./cryptoApi"; import { CryptoWorker } from "./cryptoWorker"; import os from "os"; import { CryptoImplementation } from "./cryptoImplementation"; -import { Logger } from "../../util/logging"; +import { Logger } from "@gnu-taler/taler-util"; const logger = new Logger("nodeThreadWorker.ts"); diff --git a/packages/taler-wallet-core/src/db.ts b/packages/taler-wallet-core/src/db.ts index 687418097..6de23a792 100644 --- a/packages/taler-wallet-core/src/db.ts +++ b/packages/taler-wallet-core/src/db.ts @@ -12,7 +12,7 @@ import { IDBTransaction, IDBKeyPath, } from "@gnu-taler/idb-bridge"; -import { Logger } from "./util/logging"; +import { Logger } from "@gnu-taler/taler-util"; import { AmountJson, AmountString, diff --git a/packages/taler-wallet-core/src/headless/NodeHttpLib.ts b/packages/taler-wallet-core/src/headless/NodeHttpLib.ts index 74672cd3f..4d0411081 100644 --- a/packages/taler-wallet-core/src/headless/NodeHttpLib.ts +++ b/packages/taler-wallet-core/src/headless/NodeHttpLib.ts @@ -29,7 +29,7 @@ import { RequestThrottler } from "../util/RequestThrottler"; import Axios, { AxiosResponse } from "axios"; import { OperationFailedError, makeErrorDetails } from "../operations/errors"; import { URL } from "../util/url"; -import { Logger } from "../util/logging"; +import { Logger } from "@gnu-taler/taler-util"; import { bytesToString } from "../crypto/talerCrypto"; import { TalerErrorCode } from "@gnu-taler/taler-util"; diff --git a/packages/taler-wallet-core/src/headless/helpers.ts b/packages/taler-wallet-core/src/headless/helpers.ts index 1ae556b39..73196492c 100644 --- a/packages/taler-wallet-core/src/headless/helpers.ts +++ b/packages/taler-wallet-core/src/headless/helpers.ts @@ -32,7 +32,7 @@ import { openTalerDatabase } from "../db"; import { HttpRequestLibrary } from "../util/http"; import { NodeThreadCryptoWorkerFactory } from "../crypto/workers/nodeThreadWorker"; import { NodeHttpLib } from "./NodeHttpLib"; -import { Logger } from "../util/logging"; +import { Logger } from "@gnu-taler/taler-util"; import { SynchronousCryptoWorkerFactory } from "../crypto/workers/synchronousWorker"; import type { IDBFactory } from "@gnu-taler/idb-bridge"; import { WalletNotification } from "@gnu-taler/taler-util"; diff --git a/packages/taler-wallet-core/src/index.ts b/packages/taler-wallet-core/src/index.ts index 26701256c..459c4c07c 100644 --- a/packages/taler-wallet-core/src/index.ts +++ b/packages/taler-wallet-core/src/index.ts @@ -22,7 +22,6 @@ export * from "./operations/errors"; // Util functionality -export { Logger } from "./util/logging"; export { URL } from "./util/url"; export * from "./util/promiseUtils"; export * from "./util/query"; @@ -39,9 +38,6 @@ export * from "./operations/versions"; export * from "./db"; -// Internationalization -export * from "./i18n"; - // Crypto and crypto workers export * from "./crypto/workers/nodeThreadWorker"; export { CryptoImplementation } from "./crypto/workers/cryptoImplementation"; diff --git a/packages/taler-wallet-core/src/operations/backup/import.ts b/packages/taler-wallet-core/src/operations/backup/import.ts index f0a944a22..74b7a3b59 100644 --- a/packages/taler-wallet-core/src/operations/backup/import.ts +++ b/packages/taler-wallet-core/src/operations/backup/import.ts @@ -51,7 +51,7 @@ import { TransactionHandle } from "../../index.js"; import { PayCoinSelection } from "../../util/coinSelection"; import { j2s } from "@gnu-taler/taler-util"; import { checkDbInvariant, checkLogicInvariant } from "../../util/invariants"; -import { Logger } from "../../util/logging"; +import { Logger } from "@gnu-taler/taler-util"; import { initRetryInfo } from "../../util/retries"; import { InternalWalletState } from "../state"; import { provideBackupState } from "./state"; diff --git a/packages/taler-wallet-core/src/operations/backup/index.ts b/packages/taler-wallet-core/src/operations/backup/index.ts index 2314c730d..743314791 100644 --- a/packages/taler-wallet-core/src/operations/backup/index.ts +++ b/packages/taler-wallet-core/src/operations/backup/index.ts @@ -70,7 +70,7 @@ import { readSuccessResponseJsonOrThrow, readTalerErrorResponse, } from "../../util/http"; -import { Logger } from "../../util/logging"; +import { Logger } from "@gnu-taler/taler-util"; import { gunzipSync, gzipSync } from "fflate"; import { kdf } from "../../crypto/primitives/kdf"; import { initRetryInfo } from "../../util/retries"; diff --git a/packages/taler-wallet-core/src/operations/balance.ts b/packages/taler-wallet-core/src/operations/balance.ts index 741c46ebf..afa561bfb 100644 --- a/packages/taler-wallet-core/src/operations/balance.ts +++ b/packages/taler-wallet-core/src/operations/balance.ts @@ -20,7 +20,7 @@ import { AmountJson, BalancesResponse, Amounts } from "@gnu-taler/taler-util"; import { Stores, CoinStatus } from "../db.js"; import { TransactionHandle } from "../index.js"; -import { Logger } from "../util/logging"; +import { Logger } from "@gnu-taler/taler-util"; import { InternalWalletState } from "./state.js"; const logger = new Logger("withdraw.ts"); diff --git a/packages/taler-wallet-core/src/operations/currencies.ts b/packages/taler-wallet-core/src/operations/currencies.ts index 8fd5c62c6..cead07a69 100644 --- a/packages/taler-wallet-core/src/operations/currencies.ts +++ b/packages/taler-wallet-core/src/operations/currencies.ts @@ -18,7 +18,7 @@ * Imports. */ import { ExchangeRecord, Stores } from "../db.js"; -import { Logger } from "../util/logging"; +import { Logger } from "@gnu-taler/taler-util"; import { getExchangeDetails } from "./exchanges.js"; import { InternalWalletState } from "./state.js"; diff --git a/packages/taler-wallet-core/src/operations/deposits.ts b/packages/taler-wallet-core/src/operations/deposits.ts index 59c27b9cc..408ad3926 100644 --- a/packages/taler-wallet-core/src/operations/deposits.ts +++ b/packages/taler-wallet-core/src/operations/deposits.ts @@ -55,7 +55,7 @@ import { getTotalPaymentCost, } from "./pay"; import { InternalWalletState } from "./state"; -import { Logger } from "../util/logging.js"; +import { Logger } from "@gnu-taler/taler-util"; import { DepositGroupRecord, Stores } from "../db.js"; import { guardOperationException } from "./errors.js"; import { getExchangeDetails } from "./exchanges.js"; diff --git a/packages/taler-wallet-core/src/operations/exchanges.ts b/packages/taler-wallet-core/src/operations/exchanges.ts index be9a383d2..e48d12998 100644 --- a/packages/taler-wallet-core/src/operations/exchanges.ts +++ b/packages/taler-wallet-core/src/operations/exchanges.ts @@ -30,6 +30,7 @@ import { ExchangeWireJson, getTimestampNow, isTimestampExpired, + Logger, NotificationType, parsePaytoUri, Recoup, @@ -49,7 +50,6 @@ import { WireInfo, } from "../db.js"; import { - Logger, URL, readSuccessResponseJsonOrThrow, getExpiryTimestamp, diff --git a/packages/taler-wallet-core/src/operations/pay.ts b/packages/taler-wallet-core/src/operations/pay.ts index dad460b8c..0b1b30f68 100644 --- a/packages/taler-wallet-core/src/operations/pay.ts +++ b/packages/taler-wallet-core/src/operations/pay.ts @@ -50,6 +50,7 @@ import { PreparePayResult, PreparePayResultType, parsePayUri, + Logger, } from "@gnu-taler/taler-util"; import { encodeCrock, getRandomBytes } from "../crypto/talerCrypto"; import { @@ -62,7 +63,6 @@ import { getHttpResponseErrorDetails, guardOperationException, HttpResponseStatus, - Logger, makeErrorDetails, OperationFailedAndReportedError, OperationFailedError, diff --git a/packages/taler-wallet-core/src/operations/recoup.ts b/packages/taler-wallet-core/src/operations/recoup.ts index aa551e8da..da01ca825 100644 --- a/packages/taler-wallet-core/src/operations/recoup.ts +++ b/packages/taler-wallet-core/src/operations/recoup.ts @@ -45,7 +45,7 @@ import { } from "../db.js"; import { readSuccessResponseJsonOrThrow } from "../util/http"; -import { Logger } from "../util/logging"; +import { Logger } from "@gnu-taler/taler-util"; import { TransactionHandle } from "../util/query"; import { initRetryInfo, updateRetryInfoTimeout } from "../util/retries"; import { URL } from "../util/url"; diff --git a/packages/taler-wallet-core/src/operations/refresh.ts b/packages/taler-wallet-core/src/operations/refresh.ts index 9d4390abd..6f4c9725a 100644 --- a/packages/taler-wallet-core/src/operations/refresh.ts +++ b/packages/taler-wallet-core/src/operations/refresh.ts @@ -37,7 +37,7 @@ import { AmountJson, Amounts } from "@gnu-taler/taler-util"; import { amountToPretty } from "@gnu-taler/taler-util"; import { readSuccessResponseJsonOrThrow } from "../util/http"; import { checkDbInvariant } from "../util/invariants"; -import { Logger } from "../util/logging"; +import { Logger } from "@gnu-taler/taler-util"; import { TransactionHandle } from "../util/query"; import { initRetryInfo, updateRetryInfoTimeout } from "../util/retries"; import { diff --git a/packages/taler-wallet-core/src/operations/refund.ts b/packages/taler-wallet-core/src/operations/refund.ts index b9341e571..2e2ab7803 100644 --- a/packages/taler-wallet-core/src/operations/refund.ts +++ b/packages/taler-wallet-core/src/operations/refund.ts @@ -46,7 +46,7 @@ import { parseRefundUri, RefreshReason, } from "@gnu-taler/taler-util"; -import { Logger } from "../util/logging"; +import { Logger } from "@gnu-taler/taler-util"; import { readSuccessResponseJsonOrThrow } from "../util/http"; import { TransactionHandle } from "../util/query"; import { URL } from "../util/url"; diff --git a/packages/taler-wallet-core/src/operations/reserves.ts b/packages/taler-wallet-core/src/operations/reserves.ts index 885865af7..a2482db70 100644 --- a/packages/taler-wallet-core/src/operations/reserves.ts +++ b/packages/taler-wallet-core/src/operations/reserves.ts @@ -64,7 +64,7 @@ import { } from "./withdraw.js"; import { getExchangeTrust } from "./currencies.js"; import { encodeCrock, getRandomBytes } from "../crypto/talerCrypto.js"; -import { Logger } from "../util/logging.js"; +import { Logger } from "@gnu-taler/taler-util"; import { readSuccessResponseJsonOrErrorCode, readSuccessResponseJsonOrThrow, throwUnexpectedRequestError } from "../util/http.js"; import { URL } from "../util/url.js"; import { TransactionHandle } from "../util/query.js"; diff --git a/packages/taler-wallet-core/src/operations/state.ts b/packages/taler-wallet-core/src/operations/state.ts index 752a57ffb..0d07f293d 100644 --- a/packages/taler-wallet-core/src/operations/state.ts +++ b/packages/taler-wallet-core/src/operations/state.ts @@ -17,9 +17,9 @@ /** * Imports. */ -import { WalletNotification, BalancesResponse } from "@gnu-taler/taler-util"; +import { WalletNotification, BalancesResponse, Logger } from "@gnu-taler/taler-util"; import { Stores } from "../db.js"; -import { Logger, CryptoApi, OpenedPromise, Database, CryptoWorkerFactory, openPromise } from "../index.js"; +import { CryptoApi, OpenedPromise, Database, CryptoWorkerFactory, openPromise } from "../index.js"; import { PendingOperationsResponse } from "../pending-types.js"; import { AsyncOpMemoMap, AsyncOpMemoSingle } from "../util/asyncMemo.js"; import { HttpRequestLibrary } from "../util/http"; diff --git a/packages/taler-wallet-core/src/operations/testing.ts b/packages/taler-wallet-core/src/operations/testing.ts index aa9afc50d..6875a308f 100644 --- a/packages/taler-wallet-core/src/operations/testing.ts +++ b/packages/taler-wallet-core/src/operations/testing.ts @@ -17,7 +17,7 @@ /** * Imports. */ -import { Logger } from "../util/logging"; +import { Logger } from "@gnu-taler/taler-util"; import { HttpRequestLibrary, readSuccessResponseJsonOrThrow, diff --git a/packages/taler-wallet-core/src/operations/tip.ts b/packages/taler-wallet-core/src/operations/tip.ts index 6de116098..f9d7a024d 100644 --- a/packages/taler-wallet-core/src/operations/tip.ts +++ b/packages/taler-wallet-core/src/operations/tip.ts @@ -28,6 +28,7 @@ import { TipPlanchetDetail, TalerErrorCode, codecForTipResponse, + Logger, } from "@gnu-taler/taler-util"; import { DerivedTipPlanchet } from "../crypto/cryptoTypes.js"; import { @@ -38,7 +39,6 @@ import { CoinStatus, } from "../db.js"; import { - Logger, URL, readSuccessResponseJsonOrThrow, encodeCrock, diff --git a/packages/taler-wallet-core/src/operations/withdraw.ts b/packages/taler-wallet-core/src/operations/withdraw.ts index 5f050620a..36be84df0 100644 --- a/packages/taler-wallet-core/src/operations/withdraw.ts +++ b/packages/taler-wallet-core/src/operations/withdraw.ts @@ -50,7 +50,7 @@ import { codecForTalerConfigResponse, } from "@gnu-taler/taler-util"; import { InternalWalletState } from "./state"; -import { Logger } from "../util/logging"; +import { Logger } from "@gnu-taler/taler-util"; import { getExchangeDetails, updateExchangeFromUrl } from "./exchanges"; import { WALLET_EXCHANGE_PROTOCOL_VERSION, diff --git a/packages/taler-wallet-core/src/util/RequestThrottler.ts b/packages/taler-wallet-core/src/util/RequestThrottler.ts index b38e948fe..66a895750 100644 --- a/packages/taler-wallet-core/src/util/RequestThrottler.ts +++ b/packages/taler-wallet-core/src/util/RequestThrottler.ts @@ -25,9 +25,9 @@ import { getTimestampNow, timestampDifference, timestampCmp, + Logger, } from "@gnu-taler/taler-util"; import { URL } from "./url"; -import { Logger } from "./logging"; const logger = new Logger("RequestThrottler.ts"); diff --git a/packages/taler-wallet-core/src/util/coinSelection.ts b/packages/taler-wallet-core/src/util/coinSelection.ts index c5a75878f..bd90526a5 100644 --- a/packages/taler-wallet-core/src/util/coinSelection.ts +++ b/packages/taler-wallet-core/src/util/coinSelection.ts @@ -24,8 +24,7 @@ * Imports. */ import { AmountJson, AmountLike, Amounts } from "@gnu-taler/taler-util"; -import { strcmp } from "@gnu-taler/taler-util"; -import { Logger } from "./logging.js"; +import { strcmp, Logger } from "@gnu-taler/taler-util"; const logger = new Logger("coinSelection.ts"); diff --git a/packages/taler-wallet-core/src/util/http.ts b/packages/taler-wallet-core/src/util/http.ts index ee6ff80a2..649105f2e 100644 --- a/packages/taler-wallet-core/src/util/http.ts +++ b/packages/taler-wallet-core/src/util/http.ts @@ -25,8 +25,8 @@ * Imports */ import { OperationFailedError, makeErrorDetails } from "../operations/errors"; -import { Logger } from "./logging"; import { + Logger, Duration, Timestamp, getTimestampNow, diff --git a/packages/taler-wallet-core/src/util/logging.ts b/packages/taler-wallet-core/src/util/logging.ts deleted file mode 100644 index 4f48e24da..000000000 --- a/packages/taler-wallet-core/src/util/logging.ts +++ /dev/null @@ -1,100 +0,0 @@ -/* - This file is part of TALER - (C) 2019 GNUnet e.V. - - TALER is free software; you can redistribute it and/or modify it under the - terms of the GNU General Public License as published by the Free Software - Foundation; either version 3, or (at your option) any later version. - - TALER is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along with - TALER; see the file COPYING. If not, see - */ - -/** - * Check if we are running under nodejs. - */ - -const isNode = - typeof process !== "undefined" && typeof process.release !== "undefined" && process.release.name === "node"; - -function writeNodeLog( - message: any, - tag: string, - level: string, - args: any[], -): void { - try { - process.stderr.write(`${new Date().toISOString()} ${tag} ${level} `); - process.stderr.write(`${message}`); - if (args.length != 0) { - process.stderr.write(" "); - process.stderr.write(JSON.stringify(args, undefined, 2)); - } - process.stderr.write("\n"); - } catch (e) { - // This can happen when we're trying to log something that doesn't want to be - // converted to a string. - process.stderr.write(`${new Date().toISOString()} (logger) FATAL `); - if (e instanceof Error) { - process.stderr.write("failed to write log: "); - process.stderr.write(e.message); - } - process.stderr.write("\n"); - } -} - -/** - * Logger that writes to stderr when running under node, - * and uses the corresponding console.* method to log in the browser. - */ -export class Logger { - constructor(private tag: string) {} - - info(message: string, ...args: any[]): void { - if (isNode) { - writeNodeLog(message, this.tag, "INFO", args); - } else { - console.info( - `${new Date().toISOString()} ${this.tag} INFO ` + message, - ...args, - ); - } - } - - warn(message: string, ...args: any[]): void { - if (isNode) { - writeNodeLog(message, this.tag, "WARN", args); - } else { - console.warn( - `${new Date().toISOString()} ${this.tag} INFO ` + message, - ...args, - ); - } - } - - error(message: string, ...args: any[]): void { - if (isNode) { - writeNodeLog(message, this.tag, "ERROR", args); - } else { - console.info( - `${new Date().toISOString()} ${this.tag} ERROR ` + message, - ...args, - ); - } - } - - trace(message: any, ...args: any[]): void { - if (isNode) { - writeNodeLog(message, this.tag, "TRACE", args); - } else { - console.info( - `${new Date().toISOString()} ${this.tag} TRACE ` + message, - ...args, - ); - } - } -} diff --git a/packages/taler-wallet-core/src/util/query.ts b/packages/taler-wallet-core/src/util/query.ts index 7c2aea783..6a3db44d7 100644 --- a/packages/taler-wallet-core/src/util/query.ts +++ b/packages/taler-wallet-core/src/util/query.ts @@ -33,9 +33,8 @@ import { IDBVersionChangeEvent, Event, IDBCursor, - IDBKeyPath, } from "@gnu-taler/idb-bridge"; -import { Logger } from "./logging"; +import { Logger } from "@gnu-taler/taler-util"; const logger = new Logger("query.ts"); diff --git a/packages/taler-wallet-core/src/util/timer.ts b/packages/taler-wallet-core/src/util/timer.ts index 9133bd572..a7fe7dd70 100644 --- a/packages/taler-wallet-core/src/util/timer.ts +++ b/packages/taler-wallet-core/src/util/timer.ts @@ -24,8 +24,7 @@ /** * Imports. */ -import { Duration } from "@gnu-taler/taler-util"; -import { Logger } from "./logging"; +import { Logger, Duration } from "@gnu-taler/taler-util"; const logger = new Logger("timer.ts"); diff --git a/packages/taler-wallet-core/src/wallet.ts b/packages/taler-wallet-core/src/wallet.ts index d968fea47..0bb7bc971 100644 --- a/packages/taler-wallet-core/src/wallet.ts +++ b/packages/taler-wallet-core/src/wallet.ts @@ -177,7 +177,7 @@ import { AmountJson, Amounts } from "@gnu-taler/taler-util"; import { assertUnreachable } from "./util/assertUnreachable"; import { AsyncOpMemoSingle } from "./util/asyncMemo"; import { HttpRequestLibrary } from "./util/http"; -import { Logger } from "./util/logging"; +import { Logger } from "@gnu-taler/taler-util"; import { AsyncCondition } from "./util/promiseUtils"; import { Database } from "./util/query"; import { Duration, durationMin } from "@gnu-taler/taler-util"; -- cgit v1.2.3