aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.vscode/settings.json4
-rw-r--r--packages/taler-wallet-core/src/crypto/workers/nodeThreadWorker.ts8
-rw-r--r--packages/taler-wallet-core/src/headless/helpers.ts26
-rw-r--r--packages/taler-wallet-core/src/index.ts18
-rw-r--r--packages/taler-wallet-core/src/operations/currencies.ts2
-rw-r--r--packages/taler-wallet-core/src/operations/reserves.ts15
-rw-r--r--packages/taler-wallet-core/src/util/logging.ts2
7 files changed, 46 insertions, 29 deletions
diff --git a/.vscode/settings.json b/.vscode/settings.json
index a30ba4651..52b266708 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -46,5 +46,7 @@
"api-extractor.json": "jsonc"
},
"typescript.preferences.importModuleSpecifierEnding": "js",
- "typescript.preferences.importModuleSpecifier": "project-relative"
+ "typescript.preferences.importModuleSpecifier": "project-relative",
+ "javascript.preferences.importModuleSpecifier": "project-relative",
+ "javascript.preferences.importModuleSpecifierEnding": "js"
} \ No newline at end of file
diff --git a/packages/taler-wallet-core/src/crypto/workers/nodeThreadWorker.ts b/packages/taler-wallet-core/src/crypto/workers/nodeThreadWorker.ts
index 84d83312f..66fd2de76 100644
--- a/packages/taler-wallet-core/src/crypto/workers/nodeThreadWorker.ts
+++ b/packages/taler-wallet-core/src/crypto/workers/nodeThreadWorker.ts
@@ -92,7 +92,10 @@ export function handleWorkerMessage(msg: any): void {
try {
const result = (impl as any)[operation](...args);
// eslint-disable-next-line @typescript-eslint/no-var-requires
- const worker_threads = require("worker_threads");
+ const _r = "require"
+ const worker_threads: typeof import("worker_threads") = module[_r]("worker_threads");
+ // const worker_threads = require("worker_threads");
+
const p = worker_threads.parentPort;
worker_threads.parentPort?.postMessage;
if (p) {
@@ -146,7 +149,8 @@ class NodeThreadCryptoWorker implements CryptoWorker {
constructor() {
// eslint-disable-next-line @typescript-eslint/no-var-requires
- const worker_threads = require("worker_threads");
+ const _r = "require"
+ const worker_threads = module[_r]("worker_threads");
logger.trace("starting node crypto worker");
diff --git a/packages/taler-wallet-core/src/headless/helpers.ts b/packages/taler-wallet-core/src/headless/helpers.ts
index 5007a65ac..1ae556b39 100644
--- a/packages/taler-wallet-core/src/headless/helpers.ts
+++ b/packages/taler-wallet-core/src/headless/helpers.ts
@@ -30,7 +30,6 @@ import {
} from "@gnu-taler/idb-bridge";
import { openTalerDatabase } from "../db";
import { HttpRequestLibrary } from "../util/http";
-import fs from "fs";
import { NodeThreadCryptoWorkerFactory } from "../crypto/workers/nodeThreadWorker";
import { NodeHttpLib } from "./NodeHttpLib";
import { Logger } from "../util/logging";
@@ -40,6 +39,21 @@ import { WalletNotification } from "@gnu-taler/taler-util";
const logger = new Logger("headless/helpers.ts");
+const nodejs_fs = (function () {
+ let fs: typeof import("fs");
+ return function() {
+ if (!fs) {
+ /**
+ * need to use an expression when doing a require if we want
+ * webpack not to find out about the requirement
+ */
+ const _r = "require"
+ fs = module[_r]("fs")
+ }
+ return fs
+ }
+})()
+
export interface DefaultNodeWalletArgs {
/**
* Location of the wallet database.
@@ -87,7 +101,7 @@ export async function getDefaultNodeWallet(
const storagePath = args.persistentStoragePath;
if (storagePath) {
try {
- const dbContentStr: string = fs.readFileSync(storagePath, {
+ const dbContentStr: string = nodejs_fs().readFileSync(storagePath, {
encoding: "utf-8",
});
const dbContent = JSON.parse(dbContentStr);
@@ -109,11 +123,11 @@ export async function getDefaultNodeWallet(
}
const tmpPath = `${args.persistentStoragePath}-${makeId(5)}.tmp`;
const dbContent = myBackend.exportDump();
- fs.writeFileSync(tmpPath, JSON.stringify(dbContent, undefined, 2), {
+ nodejs_fs().writeFileSync(tmpPath, JSON.stringify(dbContent, undefined, 2), {
encoding: "utf-8",
});
// Atomically move the temporary file onto the DB path.
- fs.renameSync(tmpPath, args.persistentStoragePath);
+ nodejs_fs().renameSync(tmpPath, args.persistentStoragePath);
};
}
@@ -143,7 +157,9 @@ export async function getDefaultNodeWallet(
let workerFactory;
try {
// Try if we have worker threads available, fails in older node versions.
- require("worker_threads");
+ const _r = "require"
+ const worker_threads = module[_r]("worker_threads");
+ // require("worker_threads");
workerFactory = new NodeThreadCryptoWorkerFactory();
} catch (e) {
logger.warn(
diff --git a/packages/taler-wallet-core/src/index.ts b/packages/taler-wallet-core/src/index.ts
index 1f3901273..26701256c 100644
--- a/packages/taler-wallet-core/src/index.ts
+++ b/packages/taler-wallet-core/src/index.ts
@@ -18,11 +18,16 @@
* Module entry point for the wallet when used as a node module.
*/
-export { Wallet } from "./wallet";
-
// Errors
export * from "./operations/errors";
+// Util functionality
+export { Logger } from "./util/logging";
+export { URL } from "./util/url";
+export * from "./util/promiseUtils";
+export * from "./util/query";
+export * from "./util/http";
+
// Utils for using the wallet under node
export { NodeHttpLib } from "./headless/NodeHttpLib";
export {
@@ -44,13 +49,8 @@ export type { CryptoWorker } from "./crypto/workers/cryptoWorker";
export { CryptoWorkerFactory, CryptoApi } from "./crypto/workers/cryptoApi";
export * from "./crypto/talerCrypto";
-// Util functionality
-export { Logger } from "./util/logging";
-export { URL } from "./util/url";
-export * from "./util/promiseUtils";
-export * from "./util/query";
-export * from "./util/http";
-
export * from "./pending-types";
export * from "./util/debugFlags";
+
+export { Wallet } from "./wallet";
diff --git a/packages/taler-wallet-core/src/operations/currencies.ts b/packages/taler-wallet-core/src/operations/currencies.ts
index 5371d4a54..8fd5c62c6 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 "../index.js";
+import { Logger } from "../util/logging";
import { getExchangeDetails } from "./exchanges.js";
import { InternalWalletState } from "./state.js";
diff --git a/packages/taler-wallet-core/src/operations/reserves.ts b/packages/taler-wallet-core/src/operations/reserves.ts
index d06ce31ed..885865af7 100644
--- a/packages/taler-wallet-core/src/operations/reserves.ts
+++ b/packages/taler-wallet-core/src/operations/reserves.ts
@@ -40,16 +40,6 @@ import {
ReserveRecord,
WithdrawalGroupRecord,
} from "../db.js";
-import {
- Logger,
- encodeCrock,
- getRandomBytes,
- readSuccessResponseJsonOrThrow,
- URL,
- readSuccessResponseJsonOrErrorCode,
- throwUnexpectedRequestError,
- TransactionHandle,
-} from "../index.js";
import { assertUnreachable } from "../util/assertUnreachable.js";
import { canonicalizeBaseUrl } from "@gnu-taler/taler-util";
import {
@@ -73,6 +63,11 @@ import {
getBankWithdrawalInfo,
} from "./withdraw.js";
import { getExchangeTrust } from "./currencies.js";
+import { encodeCrock, getRandomBytes } from "../crypto/talerCrypto.js";
+import { Logger } from "../util/logging.js";
+import { readSuccessResponseJsonOrErrorCode, readSuccessResponseJsonOrThrow, throwUnexpectedRequestError } from "../util/http.js";
+import { URL } from "../util/url.js";
+import { TransactionHandle } from "../util/query.js";
const logger = new Logger("reserves.ts");
diff --git a/packages/taler-wallet-core/src/util/logging.ts b/packages/taler-wallet-core/src/util/logging.ts
index 230cb7053..4f48e24da 100644
--- a/packages/taler-wallet-core/src/util/logging.ts
+++ b/packages/taler-wallet-core/src/util/logging.ts
@@ -19,7 +19,7 @@
*/
const isNode =
- typeof process !== "undefined" && process.release.name === "node";
+ typeof process !== "undefined" && typeof process.release !== "undefined" && process.release.name === "node";
function writeNodeLog(
message: any,