gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-wallet-core] branch master updated: put taler wallet RPC into tal


From: gnunet
Subject: [taler-wallet-core] branch master updated: put taler wallet RPC into taler-util, make it cross-platform
Date: Thu, 26 Jan 2023 12:48:38 +0100

This is an automated email from the git hooks/post-receive script.

dold pushed a commit to branch master
in repository wallet-core.

The following commit(s) were added to refs/heads/master by this push:
     new 3cc26d00f put taler wallet RPC into taler-util, make it cross-platform
3cc26d00f is described below

commit 3cc26d00f85209c804d9f356598c0f749367ea74
Author: Florian Dold <florian@dold.me>
AuthorDate: Thu Jan 26 12:48:35 2023 +0100

    put taler wallet RPC into taler-util, make it cross-platform
---
 packages/anastasis-core/package.json         |   2 +-
 packages/anastasis-webui/package.json        |   2 +-
 packages/demobank-ui/package.json            |   2 +-
 packages/idb-bridge/package.json             |   2 +-
 packages/merchant-backend-ui/package.json    |   2 +-
 packages/merchant-backoffice-ui/package.json |   2 +-
 packages/pogen/package.json                  |   2 +-
 packages/taler-harness/package.json          |   4 +-
 packages/taler-util/package.json             |  11 +-
 packages/taler-util/tsconfig.json            |   8 +-
 packages/taler-wallet-cli/package.json       |   2 +-
 packages/taler-wallet-cli/src/index.ts       |   8 +-
 packages/taler-wallet-cli/src/rpc.ts         | 266 ---------------------------
 packages/taler-wallet-cli/tsconfig.json      |   2 +-
 packages/taler-wallet-core/package.json      |   2 +-
 packages/taler-wallet-embedded/package.json  |   2 +-
 packages/web-util/package.json               |   2 +-
 pnpm-lock.yaml                               | 252 +++++++++++++------------
 18 files changed, 156 insertions(+), 417 deletions(-)

diff --git a/packages/anastasis-core/package.json 
b/packages/anastasis-core/package.json
index 33d7898eb..77d10e131 100644
--- a/packages/anastasis-core/package.json
+++ b/packages/anastasis-core/package.json
@@ -19,7 +19,7 @@
   "devDependencies": {
     "ava": "^4.3.3",
     "rimraf": "^3.0.2",
-    "typescript": "^4.8.4"
+    "typescript": "^4.9.4"
   },
   "dependencies": {
     "@gnu-taler/taler-util": "workspace:*",
diff --git a/packages/anastasis-webui/package.json 
b/packages/anastasis-webui/package.json
index c01856243..631e75369 100644
--- a/packages/anastasis-webui/package.json
+++ b/packages/anastasis-webui/package.json
@@ -45,6 +45,6 @@
     "jssha": "^3.2.0",
     "mocha": "^9.2.0",
     "sass": "1.56.1",
-    "typescript": "^4.8.4"
+    "typescript": "^4.9.4"
   }
 }
\ No newline at end of file
diff --git a/packages/demobank-ui/package.json 
b/packages/demobank-ui/package.json
index d915ee31b..cdf457ed4 100644
--- a/packages/demobank-ui/package.json
+++ b/packages/demobank-ui/package.json
@@ -61,7 +61,7 @@
     "po2json": "^0.4.5",
     "preact-render-to-string": "^5.2.6",
     "sass": "1.56.1",
-    "typescript": "4.8.4"
+    "typescript": "4.9.4"
   },
   "pogen": {
     "domain": "bank"
diff --git a/packages/idb-bridge/package.json b/packages/idb-bridge/package.json
index 9a58b8695..63f1a5bbf 100644
--- a/packages/idb-bridge/package.json
+++ b/packages/idb-bridge/package.json
@@ -27,7 +27,7 @@
     "esm": "^3.2.25",
     "prettier": "^2.5.1",
     "rimraf": "^3.0.2",
-    "typescript": "^4.8.4"
+    "typescript": "^4.9.4"
   },
   "dependencies": {
     "tslib": "^2.4.0"
diff --git a/packages/merchant-backend-ui/package.json 
b/packages/merchant-backend-ui/package.json
index 4789b96e9..ddba985aa 100644
--- a/packages/merchant-backend-ui/package.json
+++ b/packages/merchant-backend-ui/package.json
@@ -87,6 +87,6 @@
     "script-ext-html-webpack-plugin": "^2.1.5",
     "sirv-cli": "^1.0.11",
     "tslib": "2.4.0",
-    "typescript": "4.8.4"
+    "typescript": "4.9.4"
   }
 }
diff --git a/packages/merchant-backoffice-ui/package.json 
b/packages/merchant-backoffice-ui/package.json
index 6ea09572b..fa717fc3e 100644
--- a/packages/merchant-backoffice-ui/package.json
+++ b/packages/merchant-backoffice-ui/package.json
@@ -76,6 +76,6 @@
     "sass": "1.56.1",
     "source-map-support": "^0.5.21",
     "typedoc": "^0.20.36",
-    "typescript": "4.8.4"
+    "typescript": "4.9.4"
   }
 }
diff --git a/packages/pogen/package.json b/packages/pogen/package.json
index 11033c5de..6bb3ac7a8 100644
--- a/packages/pogen/package.json
+++ b/packages/pogen/package.json
@@ -12,7 +12,7 @@
   },
   "devDependencies": {
     "po2json": "^0.4.5",
-    "typescript": "^4.8.4"
+    "typescript": "^4.9.4"
   },
   "dependencies": {
     "@types/node": "^18.11.17",
diff --git a/packages/taler-harness/package.json 
b/packages/taler-harness/package.json
index 520df530a..28ea93830 100644
--- a/packages/taler-harness/package.json
+++ b/packages/taler-harness/package.json
@@ -31,10 +31,10 @@
   ],
   "devDependencies": {
     "@types/node": "^18.11.17",
+    "esbuild": "^0.15.13",
     "prettier": "^2.5.1",
     "rimraf": "^3.0.2",
-    "typescript": "^4.8.4",
-    "esbuild": "^0.15.13"
+    "typescript": "^4.9.4"
   },
   "dependencies": {
     "@gnu-taler/taler-util": "workspace:*",
diff --git a/packages/taler-util/package.json b/packages/taler-util/package.json
index 15197c086..005d66123 100644
--- a/packages/taler-util/package.json
+++ b/packages/taler-util/package.json
@@ -12,6 +12,15 @@
       "node": "./lib/index.node.js",
       "browser": "./lib/index.browser.js",
       "default": "./lib/index.js"
+    },
+    "./twrpc": {
+      "default": "./lib/twrpc.js"
+    }
+  },
+  "imports": {
+    "#twrpc-impl": {
+      "node": "./lib/twrpc-impl.node.js",
+      "default": "./lib/twrpc-impl.missing.js"
     }
   },
   "scripts": {
@@ -27,7 +36,7 @@
     "esbuild": "^0.14.21",
     "prettier": "^2.5.1",
     "rimraf": "^3.0.2",
-    "typescript": "^4.8.4"
+    "typescript": "^4.9.4"
   },
   "dependencies": {
     "big-integer": "^1.6.51",
diff --git a/packages/taler-util/tsconfig.json 
b/packages/taler-util/tsconfig.json
index cbf393f5a..34f35d253 100644
--- a/packages/taler-util/tsconfig.json
+++ b/packages/taler-util/tsconfig.json
@@ -4,11 +4,11 @@
     "composite": true,
     "declaration": true,
     "declarationMap": false,
-    "target": "ES6",
-    "module": "ESNext",
-    "moduleResolution": "Node16",
+    "target": "ES2020",
+    "module": "ES2020",
+    "moduleResolution": "node16",
     "sourceMap": true,
-    "lib": ["es6"],
+    "lib": ["ES2020"],
     "types": ["node"],
     "noImplicitReturns": true,
     "noFallthroughCasesInSwitch": true,
diff --git a/packages/taler-wallet-cli/package.json 
b/packages/taler-wallet-cli/package.json
index 1e0586afd..2caf3487f 100644
--- a/packages/taler-wallet-cli/package.json
+++ b/packages/taler-wallet-cli/package.json
@@ -42,7 +42,7 @@
     "rollup-plugin-sourcemaps": "^0.6.3",
     "rollup-plugin-terser": "^7.0.2",
     "typedoc": "^0.23.16",
-    "typescript": "^4.8.4"
+    "typescript": "^4.9.4"
   },
   "dependencies": {
     "@gnu-taler/taler-util": "workspace:*",
diff --git a/packages/taler-wallet-cli/src/index.ts 
b/packages/taler-wallet-cli/src/index.ts
index 14000aefd..67d0e3784 100644
--- a/packages/taler-wallet-cli/src/index.ts
+++ b/packages/taler-wallet-cli/src/index.ts
@@ -24,7 +24,6 @@ import {
   clk,
   codecForList,
   codecForString,
-  CoreApiMessageEnvelope,
   CoreApiRequestEnvelope,
   CoreApiResponse,
   decodeCrock,
@@ -45,7 +44,6 @@ import {
   openPromise,
   TalerCryptoInterface,
   TalerError,
-  WalletCoreResponseType,
 } from "@gnu-taler/taler-wallet-core";
 import {
   CryptoDispatcher,
@@ -64,7 +62,11 @@ import {
 } from "@gnu-taler/taler-wallet-core";
 import fs from "fs";
 import os from "os";
-import { connectRpc, JsonMessage, runRpcServer } from "./rpc.js";
+import {
+  connectRpc,
+  JsonMessage,
+  runRpcServer,
+} from "@gnu-taler/taler-util/twrpc";
 
 // This module also serves as the entry point for the crypto
 // thread worker, and thus must expose these two handlers.
diff --git a/packages/taler-wallet-cli/src/rpc.ts 
b/packages/taler-wallet-cli/src/rpc.ts
deleted file mode 100644
index 8070b96c5..000000000
--- a/packages/taler-wallet-cli/src/rpc.ts
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- This file is part of GNU Taler
- (C) 2023 Taler Systems S.A.
-
- GNU 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.
-
- GNU 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
- GNU Taler; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
- */
-
-/**
- * Implementation for the wallet-core IPC protocol.
- *
- * Currently the protcol is completely unstable and only used internally
- * by the wallet for testing purposes.
- */
-
-/**
- * Imports.
- */
-import * as net from "node:net";
-import * as fs from "node:fs";
-import { bytesToString, Logger, typedArrayConcat } from 
"@gnu-taler/taler-util";
-
-const logger = new Logger("rpc.ts");
-
-export type JsonMessage =
-  | string
-  | number
-  | boolean
-  | null
-  | JsonMessage[]
-  | { [key: string]: JsonMessage };
-
-export interface RpcServerClientHandlers {
-  onMessage(msg: JsonMessage): void;
-  onDisconnect(): void;
-}
-
-export interface RpcServerClient {
-  sendResponse(message: JsonMessage): void;
-}
-
-export interface RpcServerArgs {
-  socketFilename: string;
-  onConnect(client: RpcServerClient): RpcServerClientHandlers;
-}
-
-export interface RpcClientServerConnection {
-  sendMessage(m: JsonMessage): void;
-  close(): void;
-}
-
-export interface RpcConnectArgs<T> {
-  socketFilename: string;
-  onEstablished(connection: RpcClientServerConnection): {
-    result: T;
-    onDisconnect(): void;
-    onMessage(m: JsonMessage): void;
-  };
-}
-
-export interface ReadLinewiseArgs {
-  onLine(lineData: Uint8Array): void;
-  sock: net.Socket;
-}
-
-function readStreamLinewise(args: ReadLinewiseArgs): void {
-  let chunks: Uint8Array[] = [];
-  args.sock.on("data", (buf: Uint8Array) => {
-    logger.info(`received ${buf.length} bytes`);
-    // Process all newlines in the newly received buffer
-    while (1) {
-      const newlineIdx = buf.indexOf("\n".charCodeAt(0));
-      if (newlineIdx >= 0) {
-        let left = buf.subarray(0, newlineIdx + 1);
-        let right = buf.subarray(newlineIdx + 1);
-        chunks.push(left);
-        const line = typedArrayConcat(chunks);
-        args.onLine(line);
-        chunks = [];
-        buf = right;
-      } else {
-        chunks.push(buf);
-        break;
-      }
-    }
-  });
-}
-
-export async function connectRpc<T>(args: RpcConnectArgs<T>): Promise<T> {
-  let sockFilename = args.socketFilename;
-  return new Promise((resolve, reject) => {
-    const client = net.createConnection(sockFilename);
-    client.on("connect", () => {
-      let parsingBody: string | undefined = undefined;
-      let bodyChunks: string[] = [];
-
-      logger.info("connected!");
-      client.write("%hello-from-client\n");
-      const res = args.onEstablished({
-        sendMessage(m) {
-          client.write("%request\n");
-          client.write(JSON.stringify(m));
-          client.write("\n");
-          client.write("%end\n");
-        },
-        close() {
-          client.destroy();
-        },
-      });
-      readStreamLinewise({
-        sock: client,
-        onLine(line) {
-          const lineStr = bytesToString(line);
-          logger.info(`got line from server: ${lineStr}`);
-          // Are we currently parsing the body of a request?
-          if (!parsingBody) {
-            const strippedLine = lineStr.trim();
-            if (strippedLine == "%message") {
-              logger.info("got message start");
-              parsingBody = "message";
-            } else if (strippedLine == "%hello-from-server") {
-              logger.info("got hello from server");
-            } else if (strippedLine.startsWith("%error:")) {
-              logger.info("got error from server, disconnecting");
-              client.end();
-              res.onDisconnect();
-            } else {
-              logger.info("got unknown request");
-              client.write("%error: invalid message\n");
-              client.end();
-            }
-          } else if (parsingBody == "message") {
-            const strippedLine = lineStr.trim();
-            if (strippedLine == "%end") {
-              logger.info("finished request");
-              let req = bodyChunks.join("");
-              let reqJson: any = undefined;
-              try {
-                reqJson = JSON.parse(req);
-              } catch (e) {
-                logger.warn("JSON request was invalid");
-              }
-              if (reqJson !== undefined) {
-                logger.info(`request: ${req}`);
-                res.onMessage(reqJson);
-              } else {
-                client.write("%error: invalid JSON");
-                client.end();
-              }
-              bodyChunks = [];
-            } else {
-              bodyChunks.push(lineStr);
-            }
-          } else {
-            logger.info("invalid parser state");
-            client.write("%error: internal error\n");
-            client.end();
-          }
-        },
-      });
-      client.on("close", () => {
-        res.onDisconnect();
-      });
-      client.on("data", () => {});
-      resolve(res.result);
-    });
-  });
-}
-
-export async function runRpcServer(args: RpcServerArgs): Promise<void> {
-  let sockFilename = args.socketFilename;
-  try {
-    fs.unlinkSync(sockFilename);
-  } catch (e) {
-    // Do nothing!
-  }
-  return new Promise((resolve, reject) => {
-    const server = net.createServer((sock) => {
-      // Are we currently parsing the body of a request?
-      let parsingBody: string | undefined = undefined;
-      let bodyChunks: string[] = [];
-
-      logger.info("got new connection");
-      sock.write("%hello-from-server\n");
-      const handlers = args.onConnect({
-        sendResponse(message) {
-          sock.write("%message\n");
-          sock.write(JSON.stringify(message));
-          sock.write("\n");
-          sock.write("%end\n");
-        },
-      });
-
-      sock.on("error", (err) => {
-        logger.info(`connection error: ${err}`);
-      });
-
-      function processLine(line: Uint8Array) {
-        const lineStr = bytesToString(line);
-        logger.info(`got line: ${lineStr}`);
-        if (!parsingBody) {
-          const strippedLine = lineStr.trim();
-          if (strippedLine == "%request") {
-            logger.info("got request start");
-            parsingBody = "request";
-          } else if (strippedLine === "%hello-from-client") {
-            console.log("got hello from client");
-          } else if (strippedLine.startsWith("%error:")) {
-            console.log("got error from client");
-            sock.end();
-            handlers.onDisconnect();
-          } else {
-            logger.info("got unknown request");
-            sock.write("%error: invalid request\n");
-            sock.end();
-          }
-        } else if (parsingBody == "request") {
-          const strippedLine = lineStr.trim();
-          if (strippedLine == "%end") {
-            logger.info("finished request");
-            let req = bodyChunks.join("");
-            let reqJson: any = undefined;
-            try {
-              reqJson = JSON.parse(req);
-            } catch (e) {
-              logger.warn("JSON request was invalid");
-            }
-            if (reqJson !== undefined) {
-              logger.info(`request: ${req}`);
-              handlers.onMessage(reqJson);
-            } else {
-              sock.write("%error: invalid JSON");
-              sock.end();
-            }
-            bodyChunks = [];
-          } else {
-            bodyChunks.push(lineStr);
-          }
-        } else {
-          logger.info("invalid parser state");
-          sock.write("%error: internal error\n");
-          sock.end();
-        }
-      }
-
-      readStreamLinewise({
-        sock,
-        onLine: processLine,
-      });
-
-      sock.on("close", (hadError: boolean) => {
-        logger.info(`connection closed, hadError=${hadError}`);
-        handlers.onDisconnect();
-      });
-    });
-    server.listen("wallet-core.sock");
-  });
-}
diff --git a/packages/taler-wallet-cli/tsconfig.json 
b/packages/taler-wallet-cli/tsconfig.json
index 447d3f946..100339e43 100644
--- a/packages/taler-wallet-cli/tsconfig.json
+++ b/packages/taler-wallet-cli/tsconfig.json
@@ -21,7 +21,7 @@
     "baseUrl": "./src",
     "typeRoots": ["./node_modules/@types"]
   },
-  "include": ["src/**/*"],
+  "include": ["src/**/*", "../taler-util/src/twrpc.ts"],
   "references": [
     {
       "path": "../taler-wallet-core/"
diff --git a/packages/taler-wallet-core/package.json 
b/packages/taler-wallet-core/package.json
index 24ea22d39..a0047a03f 100644
--- a/packages/taler-wallet-core/package.json
+++ b/packages/taler-wallet-core/package.json
@@ -56,7 +56,7 @@
     "prettier": "^2.5.1",
     "rimraf": "^3.0.2",
     "typedoc": "^0.23.16",
-    "typescript": "^4.8.4"
+    "typescript": "^4.9.4"
   },
   "dependencies": {
     "@gnu-taler/idb-bridge": "workspace:*",
diff --git a/packages/taler-wallet-embedded/package.json 
b/packages/taler-wallet-embedded/package.json
index e79176210..64fb4d604 100644
--- a/packages/taler-wallet-embedded/package.json
+++ b/packages/taler-wallet-embedded/package.json
@@ -39,7 +39,7 @@
     "rollup": "^2.79.0",
     "rollup-plugin-sourcemaps": "^0.6.3",
     "rollup-plugin-terser": "^7.0.2",
-    "typescript": "^4.8.4"
+    "typescript": "^4.9.4"
   },
   "dependencies": {
     "@gnu-taler/idb-bridge": "workspace:*",
diff --git a/packages/web-util/package.json b/packages/web-util/package.json
index a4589d4ee..1df2852b0 100644
--- a/packages/web-util/package.json
+++ b/packages/web-util/package.json
@@ -39,7 +39,7 @@
     "rimraf": "^3.0.2",
     "swr": "1.3.0",
     "tslib": "^2.4.0",
-    "typescript": "^4.8.4",
+    "typescript": "^4.9.4",
     "ws": "7.4.5"
   }
 }
\ No newline at end of file
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 6d59121db..ebd352a8c 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -32,7 +32,7 @@ importers:
       node-fetch: ^3.2.0
       rimraf: ^3.0.2
       tslib: ^2.4.0
-      typescript: ^4.8.4
+      typescript: ^4.9.4
     dependencies:
       '@gnu-taler/taler-util': link:../taler-util
       fetch-ponyfill: 7.1.0
@@ -43,7 +43,7 @@ importers:
     devDependencies:
       ava: 4.3.3
       rimraf: 3.0.2
-      typescript: 4.8.4
+      typescript: 4.9.4
 
   packages/anastasis-webui:
     specifiers:
@@ -66,7 +66,7 @@ importers:
       preact-router: ^3.2.1
       qrcode-generator: ^1.4.4
       sass: 1.56.1
-      typescript: ^4.8.4
+      typescript: ^4.9.4
     dependencies:
       '@gnu-taler/anastasis-core': link:../anastasis-core
       '@gnu-taler/taler-util': link:../taler-util
@@ -88,7 +88,7 @@ importers:
       jssha: 3.3.0
       mocha: 9.2.2
       sass: 1.56.1
-      typescript: 4.8.4
+      typescript: 4.9.4
 
   packages/demobank-ui:
     specifiers:
@@ -120,7 +120,7 @@ importers:
       qrcode-generator: ^1.4.4
       sass: 1.56.1
       swr: 1.3.0
-      typescript: 4.8.4
+      typescript: 4.9.4
     dependencies:
       '@gnu-taler/taler-util': link:../taler-util
       '@gnu-taler/web-util': link:../web-util
@@ -138,20 +138,20 @@ importers:
       '@types/history': 4.7.11
       '@types/mocha': 10.0.1
       '@types/node': 18.11.17
-      '@typescript-eslint/eslint-plugin': 5.41.0_2dmizcyfdgb4npqs6z4fehioli
-      '@typescript-eslint/parser': 5.41.0_typescript@4.8.4
+      '@typescript-eslint/eslint-plugin': 5.41.0_2kpzrn7ygxrevwp2scfdydbp5u
+      '@typescript-eslint/parser': 5.41.0_typescript@4.9.4
       async_hooks: 1.0.0
       bulma: 0.9.4
       bulma-checkbox: 1.2.1
       bulma-radio: 1.2.0
       chai: 4.3.6
       esbuild: 0.15.12
-      eslint-config-preact: 1.3.0_qqbgcrpnpybc6dh47gt272vyy4
+      eslint-config-preact: 1.3.0_lil2cmm3hdnj5md4t7zvysxria
       mocha: 9.2.2
       po2json: 0.4.5
       preact-render-to-string: 5.2.6_preact@10.11.3
       sass: 1.56.1
-      typescript: 4.8.4
+      typescript: 4.9.4
 
   packages/idb-bridge:
     specifiers:
@@ -161,7 +161,7 @@ importers:
       prettier: ^2.5.1
       rimraf: ^3.0.2
       tslib: ^2.4.0
-      typescript: ^4.8.4
+      typescript: ^4.9.4
     dependencies:
       tslib: 2.4.0
     devDependencies:
@@ -170,7 +170,7 @@ importers:
       esm: 3.2.25
       prettier: 2.7.1
       rimraf: 3.0.2
-      typescript: 4.8.4
+      typescript: 4.9.4
 
   packages/merchant-backend-ui:
     specifiers:
@@ -220,7 +220,7 @@ importers:
       sirv-cli: ^1.0.11
       swr: ^0.5.5
       tslib: 2.4.0
-      typescript: 4.8.4
+      typescript: 4.9.4
       yup: ^0.32.9
     dependencies:
       '@gnu-taler/taler-util': link:../taler-util
@@ -250,16 +250,16 @@ importers:
       '@rollup/plugin-image': 2.1.1_rollup@2.79.1
       '@rollup/plugin-json': 4.1.0_rollup@2.79.1
       '@rollup/plugin-replace': 3.1.0_rollup@2.79.1
-      '@rollup/plugin-typescript': 11.0.0_hafrwlgfjmvsm7253l3bfjzhnq
+      '@rollup/plugin-typescript': 11.0.0_ds5km5eydjug3un6mvhihxeysu
       '@types/history': 4.7.11
       '@types/mocha': 8.2.3
       '@types/mustache': 4.2.1
-      '@typescript-eslint/eslint-plugin': 4.33.0_k4l66av2tbo6kxzw52jzgbfzii
-      '@typescript-eslint/parser': 4.33.0_3rubbgt5ekhqrcgx4uwls3neim
+      '@typescript-eslint/eslint-plugin': 4.33.0_thyv6urrmcfyirt6hwk42bhgva
+      '@typescript-eslint/parser': 4.33.0_yfqovispp7u7jaktymfaqwl2py
       babel-loader: 8.2.5_@babel+core@7.18.9
       base64-inline-loader: 1.1.1
       eslint: 7.32.0
-      eslint-config-preact: 1.3.0_pycg7frr72nxxf2dj537ozbyqq
+      eslint-config-preact: 1.3.0_5pwk54o5tlhc4soplldymjdyka
       eslint-plugin-header: 3.1.1_eslint@7.32.0
       mustache: 4.2.0
       po2json: 0.4.5
@@ -271,7 +271,7 @@ importers:
       script-ext-html-webpack-plugin: 2.1.5
       sirv-cli: 1.0.14
       tslib: 2.4.0
-      typescript: 4.8.4
+      typescript: 4.9.4
 
   packages/merchant-backoffice-ui:
     specifiers:
@@ -315,7 +315,7 @@ importers:
       source-map-support: ^0.5.21
       swr: 1.3.0
       typedoc: ^0.20.36
-      typescript: 4.8.4
+      typescript: 4.9.4
       yup: ^0.32.9
     dependencies:
       '@gnu-taler/taler-util': link:../taler-util
@@ -335,8 +335,8 @@ importers:
       '@types/history': 4.7.11
       '@types/mocha': 8.2.3
       '@types/node': 18.11.17
-      '@typescript-eslint/eslint-plugin': 4.33.0_k4l66av2tbo6kxzw52jzgbfzii
-      '@typescript-eslint/parser': 4.33.0_3rubbgt5ekhqrcgx4uwls3neim
+      '@typescript-eslint/eslint-plugin': 4.33.0_thyv6urrmcfyirt6hwk42bhgva
+      '@typescript-eslint/parser': 4.33.0_yfqovispp7u7jaktymfaqwl2py
       base64-inline-loader: 1.1.1
       bulma: 0.9.4
       bulma-checkbox: 1.2.1
@@ -348,7 +348,7 @@ importers:
       chai: 4.3.6
       dotenv: 8.6.0
       eslint: 7.32.0
-      eslint-config-preact: 1.3.0_pycg7frr72nxxf2dj537ozbyqq
+      eslint-config-preact: 1.3.0_5pwk54o5tlhc4soplldymjdyka
       eslint-plugin-header: 3.1.1_eslint@7.32.0
       html-webpack-inline-chunk-plugin: 1.1.1
       html-webpack-inline-source-plugin: 0.0.10
@@ -359,21 +359,21 @@ importers:
       rimraf: 3.0.2
       sass: 1.56.1
       source-map-support: 0.5.21
-      typedoc: 0.20.37_typescript@4.8.4
-      typescript: 4.8.4
+      typedoc: 0.20.37_typescript@4.9.4
+      typescript: 4.9.4
 
   packages/pogen:
     specifiers:
       '@types/node': ^18.11.17
       glob: ^7.2.0
       po2json: ^0.4.5
-      typescript: ^4.8.4
+      typescript: ^4.9.4
     dependencies:
       '@types/node': 18.11.17
       glob: 7.2.3
     devDependencies:
       po2json: 0.4.5
-      typescript: 4.8.4
+      typescript: 4.9.4
 
   packages/taler-harness:
     specifiers:
@@ -385,7 +385,7 @@ importers:
       prettier: ^2.5.1
       rimraf: ^3.0.2
       tslib: ^2.4.0
-      typescript: ^4.8.4
+      typescript: ^4.9.4
     dependencies:
       '@gnu-taler/taler-util': link:../taler-util
       '@gnu-taler/taler-wallet-core': link:../taler-wallet-core
@@ -396,7 +396,7 @@ importers:
       esbuild: 0.15.13
       prettier: 2.7.1
       rimraf: 3.0.2
-      typescript: 4.8.4
+      typescript: 4.9.4
 
   packages/taler-util:
     specifiers:
@@ -409,7 +409,7 @@ importers:
       prettier: ^2.5.1
       rimraf: ^3.0.2
       tslib: ^2.4.0
-      typescript: ^4.8.4
+      typescript: ^4.9.4
     dependencies:
       big-integer: 1.6.51
       fflate: 0.7.4
@@ -421,7 +421,7 @@ importers:
       esbuild: 0.14.54
       prettier: 2.7.1
       rimraf: 3.0.2
-      typescript: 4.8.4
+      typescript: 4.9.4
 
   packages/taler-wallet-cli:
     specifiers:
@@ -439,7 +439,7 @@ importers:
       rollup-plugin-terser: ^7.0.2
       tslib: ^2.4.0
       typedoc: ^0.23.16
-      typescript: ^4.8.4
+      typescript: ^4.9.4
     dependencies:
       '@gnu-taler/taler-util': link:../taler-util
       '@gnu-taler/taler-wallet-core': link:../taler-wallet-core
@@ -455,8 +455,8 @@ importers:
       rollup: 2.79.1
       rollup-plugin-sourcemaps: 0.6.3_bipou45jdaxtftg6fcql4vnhdm
       rollup-plugin-terser: 7.0.2_rollup@2.79.1
-      typedoc: 0.23.18_typescript@4.8.4
-      typescript: 4.8.4
+      typedoc: 0.23.18_typescript@4.9.4
+      typescript: 4.9.4
 
   packages/taler-wallet-core:
     specifiers:
@@ -484,7 +484,7 @@ importers:
       rimraf: ^3.0.2
       tslib: ^2.4.0
       typedoc: ^0.23.16
-      typescript: ^4.8.4
+      typescript: ^4.9.4
     dependencies:
       '@gnu-taler/idb-bridge': link:../idb-bridge
       '@gnu-taler/taler-util': link:../taler-util
@@ -496,8 +496,8 @@ importers:
     devDependencies:
       '@ava/typescript': 3.0.1
       '@gnu-taler/pogen': link:../pogen
-      '@typescript-eslint/eslint-plugin': 5.41.0_huremdigmcnkianavgfk3x6iou
-      '@typescript-eslint/parser': 5.41.0_wyqvi574yv7oiwfeinomdzmc3m
+      '@typescript-eslint/eslint-plugin': 5.41.0_b5xhfrgxhcelhgpcwhcuffyfeu
+      '@typescript-eslint/parser': 5.41.0_v5bglvupnukcksncywgdzapdrq
       ava: 4.3.3_@ava+typescript@3.0.1
       c8: 7.12.0
       eslint: 8.26.0
@@ -510,8 +510,8 @@ importers:
       po2json: 0.4.5
       prettier: 2.7.1
       rimraf: 3.0.2
-      typedoc: 0.23.18_typescript@4.8.4
-      typescript: 4.8.4
+      typedoc: 0.23.18_typescript@4.9.4
+      typescript: 4.9.4
 
   packages/taler-wallet-embedded:
     specifiers:
@@ -529,7 +529,7 @@ importers:
       rollup-plugin-sourcemaps: ^0.6.3
       rollup-plugin-terser: ^7.0.2
       tslib: ^2.4.0
-      typescript: ^4.8.4
+      typescript: ^4.9.4
     dependencies:
       '@gnu-taler/idb-bridge': link:../idb-bridge
       '@gnu-taler/taler-util': link:../taler-util
@@ -546,7 +546,7 @@ importers:
       rollup: 2.79.1
       rollup-plugin-sourcemaps: 0.6.3_bipou45jdaxtftg6fcql4vnhdm
       rollup-plugin-terser: 7.0.2_rollup@2.79.1
-      typescript: 4.8.4
+      typescript: 4.9.4
 
   packages/taler-wallet-webextension:
     specifiers:
@@ -642,7 +642,7 @@ importers:
       rimraf: ^3.0.2
       swr: 1.3.0
       tslib: ^2.4.0
-      typescript: ^4.8.4
+      typescript: ^4.9.4
       ws: 7.4.5
     devDependencies:
       '@gnu-taler/taler-util': link:../taler-util
@@ -660,7 +660,7 @@ importers:
       rimraf: 3.0.2
       swr: 1.3.0
       tslib: 2.4.1
-      typescript: 4.8.4
+      typescript: 4.9.4
       ws: 7.4.5
 
 packages:
@@ -3646,7 +3646,7 @@ packages:
       rollup: 2.79.1
     dev: true
 
-  /@rollup/plugin-typescript/11.0.0_hafrwlgfjmvsm7253l3bfjzhnq:
+  /@rollup/plugin-typescript/11.0.0_ds5km5eydjug3un6mvhihxeysu:
     resolution: {integrity: 
sha512-goPyCWBiimk1iJgSTgsehFD5OOFHiAknrRJjqFCudcW8JtWiBlK284Xnn4flqMqg6YAjVG/EE+3aVzrL5qNSzQ==}
     engines: {node: '>=14.0.0'}
     peerDependencies:
@@ -3663,7 +3663,7 @@ packages:
       resolve: 1.22.1
       rollup: 2.79.1
       tslib: 2.4.0
-      typescript: 4.8.4
+      typescript: 4.9.4
     dev: true
 
   /@rollup/pluginutils/3.1.0_rollup@2.79.1:
@@ -3963,7 +3963,7 @@ packages:
       '@types/node': 18.11.17
     dev: true
 
-  /@typescript-eslint/eslint-plugin/4.33.0_k4l66av2tbo6kxzw52jzgbfzii:
+  /@typescript-eslint/eslint-plugin/4.33.0_thyv6urrmcfyirt6hwk42bhgva:
     resolution: {integrity: 
sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==}
     engines: {node: ^10.12.0 || >=12.0.0}
     peerDependencies:
@@ -3974,8 +3974,8 @@ packages:
       typescript:
         optional: true
     dependencies:
-      '@typescript-eslint/experimental-utils': 
4.33.0_3rubbgt5ekhqrcgx4uwls3neim
-      '@typescript-eslint/parser': 4.33.0_3rubbgt5ekhqrcgx4uwls3neim
+      '@typescript-eslint/experimental-utils': 
4.33.0_yfqovispp7u7jaktymfaqwl2py
+      '@typescript-eslint/parser': 4.33.0_yfqovispp7u7jaktymfaqwl2py
       '@typescript-eslint/scope-manager': 4.33.0
       debug: 4.3.4
       eslint: 7.32.0
@@ -3983,13 +3983,13 @@ packages:
       ignore: 5.2.0
       regexpp: 3.2.0
       semver: 7.3.8
-      tsutils: 3.21.0_typescript@4.8.4
-      typescript: 4.8.4
+      tsutils: 3.21.0_typescript@4.9.4
+      typescript: 4.9.4
     transitivePeerDependencies:
       - supports-color
     dev: true
 
-  /@typescript-eslint/eslint-plugin/5.41.0_2dmizcyfdgb4npqs6z4fehioli:
+  /@typescript-eslint/eslint-plugin/5.41.0_2kpzrn7ygxrevwp2scfdydbp5u:
     resolution: {integrity: 
sha512-DXUS22Y57/LAFSg3x7Vi6RNAuLpTXwxB9S2nIA7msBb/Zt8p7XqMwdpdc1IU7CkOQUPgAqR5fWvxuKCbneKGmA==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     peerDependencies:
@@ -4000,21 +4000,21 @@ packages:
       typescript:
         optional: true
     dependencies:
-      '@typescript-eslint/parser': 5.41.0_typescript@4.8.4
+      '@typescript-eslint/parser': 5.41.0_typescript@4.9.4
       '@typescript-eslint/scope-manager': 5.41.0
-      '@typescript-eslint/type-utils': 5.41.0_typescript@4.8.4
-      '@typescript-eslint/utils': 5.41.0_typescript@4.8.4
+      '@typescript-eslint/type-utils': 5.41.0_typescript@4.9.4
+      '@typescript-eslint/utils': 5.41.0_typescript@4.9.4
       debug: 4.3.4
       ignore: 5.2.0
       regexpp: 3.2.0
       semver: 7.3.8
-      tsutils: 3.21.0_typescript@4.8.4
-      typescript: 4.8.4
+      tsutils: 3.21.0_typescript@4.9.4
+      typescript: 4.9.4
     transitivePeerDependencies:
       - supports-color
     dev: true
 
-  /@typescript-eslint/eslint-plugin/5.41.0_huremdigmcnkianavgfk3x6iou:
+  /@typescript-eslint/eslint-plugin/5.41.0_b5xhfrgxhcelhgpcwhcuffyfeu:
     resolution: {integrity: 
sha512-DXUS22Y57/LAFSg3x7Vi6RNAuLpTXwxB9S2nIA7msBb/Zt8p7XqMwdpdc1IU7CkOQUPgAqR5fWvxuKCbneKGmA==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     peerDependencies:
@@ -4025,22 +4025,22 @@ packages:
       typescript:
         optional: true
     dependencies:
-      '@typescript-eslint/parser': 5.41.0_wyqvi574yv7oiwfeinomdzmc3m
+      '@typescript-eslint/parser': 5.41.0_v5bglvupnukcksncywgdzapdrq
       '@typescript-eslint/scope-manager': 5.41.0
-      '@typescript-eslint/type-utils': 5.41.0_wyqvi574yv7oiwfeinomdzmc3m
-      '@typescript-eslint/utils': 5.41.0_wyqvi574yv7oiwfeinomdzmc3m
+      '@typescript-eslint/type-utils': 5.41.0_v5bglvupnukcksncywgdzapdrq
+      '@typescript-eslint/utils': 5.41.0_v5bglvupnukcksncywgdzapdrq
       debug: 4.3.4
       eslint: 8.26.0
       ignore: 5.2.0
       regexpp: 3.2.0
       semver: 7.3.8
-      tsutils: 3.21.0_typescript@4.8.4
-      typescript: 4.8.4
+      tsutils: 3.21.0_typescript@4.9.4
+      typescript: 4.9.4
     transitivePeerDependencies:
       - supports-color
     dev: true
 
-  /@typescript-eslint/experimental-utils/4.33.0_3rubbgt5ekhqrcgx4uwls3neim:
+  /@typescript-eslint/experimental-utils/4.33.0_yfqovispp7u7jaktymfaqwl2py:
     resolution: {integrity: 
sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==}
     engines: {node: ^10.12.0 || >=12.0.0}
     peerDependencies:
@@ -4049,7 +4049,7 @@ packages:
       '@types/json-schema': 7.0.11
       '@typescript-eslint/scope-manager': 4.33.0
       '@typescript-eslint/types': 4.33.0
-      '@typescript-eslint/typescript-estree': 4.33.0_typescript@4.8.4
+      '@typescript-eslint/typescript-estree': 4.33.0_typescript@4.9.4
       eslint: 7.32.0
       eslint-scope: 5.1.1
       eslint-utils: 3.0.0_eslint@7.32.0
@@ -4058,32 +4058,32 @@ packages:
       - typescript
     dev: true
 
-  /@typescript-eslint/experimental-utils/5.41.0_3rubbgt5ekhqrcgx4uwls3neim:
+  /@typescript-eslint/experimental-utils/5.41.0_typescript@4.9.4:
     resolution: {integrity: 
sha512-/qxT2Kd2q/A22JVIllvws4rvc00/3AT4rAo/0YgEN28y+HPhbJbk6X4+MAHEoZzpNyAOugIT7D/OLnKBW8FfhA==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     peerDependencies:
       eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
     dependencies:
-      '@typescript-eslint/utils': 5.41.0_3rubbgt5ekhqrcgx4uwls3neim
-      eslint: 7.32.0
+      '@typescript-eslint/utils': 5.41.0_typescript@4.9.4
     transitivePeerDependencies:
       - supports-color
       - typescript
     dev: true
 
-  /@typescript-eslint/experimental-utils/5.41.0_typescript@4.8.4:
+  /@typescript-eslint/experimental-utils/5.41.0_yfqovispp7u7jaktymfaqwl2py:
     resolution: {integrity: 
sha512-/qxT2Kd2q/A22JVIllvws4rvc00/3AT4rAo/0YgEN28y+HPhbJbk6X4+MAHEoZzpNyAOugIT7D/OLnKBW8FfhA==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     peerDependencies:
       eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
     dependencies:
-      '@typescript-eslint/utils': 5.41.0_typescript@4.8.4
+      '@typescript-eslint/utils': 5.41.0_yfqovispp7u7jaktymfaqwl2py
+      eslint: 7.32.0
     transitivePeerDependencies:
       - supports-color
       - typescript
     dev: true
 
-  /@typescript-eslint/parser/4.33.0_3rubbgt5ekhqrcgx4uwls3neim:
+  /@typescript-eslint/parser/4.33.0_yfqovispp7u7jaktymfaqwl2py:
     resolution: {integrity: 
sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==}
     engines: {node: ^10.12.0 || >=12.0.0}
     peerDependencies:
@@ -4095,15 +4095,15 @@ packages:
     dependencies:
       '@typescript-eslint/scope-manager': 4.33.0
       '@typescript-eslint/types': 4.33.0
-      '@typescript-eslint/typescript-estree': 4.33.0_typescript@4.8.4
+      '@typescript-eslint/typescript-estree': 4.33.0_typescript@4.9.4
       debug: 4.3.4
       eslint: 7.32.0
-      typescript: 4.8.4
+      typescript: 4.9.4
     transitivePeerDependencies:
       - supports-color
     dev: true
 
-  /@typescript-eslint/parser/5.41.0_typescript@4.8.4:
+  /@typescript-eslint/parser/5.41.0_typescript@4.9.4:
     resolution: {integrity: 
sha512-HQVfix4+RL5YRWZboMD1pUfFN8MpRH4laziWkkAzyO1fvNOY/uinZcvo3QiFJVS/siNHupV8E5+xSwQZrl6PZA==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     peerDependencies:
@@ -4115,14 +4115,14 @@ packages:
     dependencies:
       '@typescript-eslint/scope-manager': 5.41.0
       '@typescript-eslint/types': 5.41.0
-      '@typescript-eslint/typescript-estree': 5.41.0_typescript@4.8.4
+      '@typescript-eslint/typescript-estree': 5.41.0_typescript@4.9.4
       debug: 4.3.4
-      typescript: 4.8.4
+      typescript: 4.9.4
     transitivePeerDependencies:
       - supports-color
     dev: true
 
-  /@typescript-eslint/parser/5.41.0_wyqvi574yv7oiwfeinomdzmc3m:
+  /@typescript-eslint/parser/5.41.0_v5bglvupnukcksncywgdzapdrq:
     resolution: {integrity: 
sha512-HQVfix4+RL5YRWZboMD1pUfFN8MpRH4laziWkkAzyO1fvNOY/uinZcvo3QiFJVS/siNHupV8E5+xSwQZrl6PZA==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     peerDependencies:
@@ -4134,10 +4134,10 @@ packages:
     dependencies:
       '@typescript-eslint/scope-manager': 5.41.0
       '@typescript-eslint/types': 5.41.0
-      '@typescript-eslint/typescript-estree': 5.41.0_typescript@4.8.4
+      '@typescript-eslint/typescript-estree': 5.41.0_typescript@4.9.4
       debug: 4.3.4
       eslint: 8.26.0
-      typescript: 4.8.4
+      typescript: 4.9.4
     transitivePeerDependencies:
       - supports-color
     dev: true
@@ -4158,7 +4158,7 @@ packages:
       '@typescript-eslint/visitor-keys': 5.41.0
     dev: true
 
-  /@typescript-eslint/type-utils/5.41.0_typescript@4.8.4:
+  /@typescript-eslint/type-utils/5.41.0_typescript@4.9.4:
     resolution: {integrity: 
sha512-L30HNvIG6A1Q0R58e4hu4h+fZqaO909UcnnPbwKiN6Rc3BUEx6ez2wgN7aC0cBfcAjZfwkzE+E2PQQ9nEuoqfA==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     peerDependencies:
@@ -4168,16 +4168,16 @@ packages:
       typescript:
         optional: true
     dependencies:
-      '@typescript-eslint/typescript-estree': 5.41.0_typescript@4.8.4
-      '@typescript-eslint/utils': 5.41.0_typescript@4.8.4
+      '@typescript-eslint/typescript-estree': 5.41.0_typescript@4.9.4
+      '@typescript-eslint/utils': 5.41.0_typescript@4.9.4
       debug: 4.3.4
-      tsutils: 3.21.0_typescript@4.8.4
-      typescript: 4.8.4
+      tsutils: 3.21.0_typescript@4.9.4
+      typescript: 4.9.4
     transitivePeerDependencies:
       - supports-color
     dev: true
 
-  /@typescript-eslint/type-utils/5.41.0_wyqvi574yv7oiwfeinomdzmc3m:
+  /@typescript-eslint/type-utils/5.41.0_v5bglvupnukcksncywgdzapdrq:
     resolution: {integrity: 
sha512-L30HNvIG6A1Q0R58e4hu4h+fZqaO909UcnnPbwKiN6Rc3BUEx6ez2wgN7aC0cBfcAjZfwkzE+E2PQQ9nEuoqfA==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     peerDependencies:
@@ -4187,12 +4187,12 @@ packages:
       typescript:
         optional: true
     dependencies:
-      '@typescript-eslint/typescript-estree': 5.41.0_typescript@4.8.4
-      '@typescript-eslint/utils': 5.41.0_wyqvi574yv7oiwfeinomdzmc3m
+      '@typescript-eslint/typescript-estree': 5.41.0_typescript@4.9.4
+      '@typescript-eslint/utils': 5.41.0_v5bglvupnukcksncywgdzapdrq
       debug: 4.3.4
       eslint: 8.26.0
-      tsutils: 3.21.0_typescript@4.8.4
-      typescript: 4.8.4
+      tsutils: 3.21.0_typescript@4.9.4
+      typescript: 4.9.4
     transitivePeerDependencies:
       - supports-color
     dev: true
@@ -4207,7 +4207,7 @@ packages:
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     dev: true
 
-  /@typescript-eslint/typescript-estree/4.33.0_typescript@4.8.4:
+  /@typescript-eslint/typescript-estree/4.33.0_typescript@4.9.4:
     resolution: {integrity: 
sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==}
     engines: {node: ^10.12.0 || >=12.0.0}
     peerDependencies:
@@ -4222,13 +4222,13 @@ packages:
       globby: 11.1.0
       is-glob: 4.0.3
       semver: 7.3.8
-      tsutils: 3.21.0_typescript@4.8.4
-      typescript: 4.8.4
+      tsutils: 3.21.0_typescript@4.9.4
+      typescript: 4.9.4
     transitivePeerDependencies:
       - supports-color
     dev: true
 
-  /@typescript-eslint/typescript-estree/5.41.0_typescript@4.8.4:
+  /@typescript-eslint/typescript-estree/5.41.0_typescript@4.9.4:
     resolution: {integrity: 
sha512-SlzFYRwFSvswzDSQ/zPkIWcHv8O5y42YUskko9c4ki+fV6HATsTODUPbRbcGDFYP86gaJL5xohUEytvyNNcXWg==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     peerDependencies:
@@ -4243,13 +4243,13 @@ packages:
       globby: 11.1.0
       is-glob: 4.0.3
       semver: 7.3.8
-      tsutils: 3.21.0_typescript@4.8.4
-      typescript: 4.8.4
+      tsutils: 3.21.0_typescript@4.9.4
+      typescript: 4.9.4
     transitivePeerDependencies:
       - supports-color
     dev: true
 
-  /@typescript-eslint/utils/5.41.0_3rubbgt5ekhqrcgx4uwls3neim:
+  /@typescript-eslint/utils/5.41.0_typescript@4.9.4:
     resolution: {integrity: 
sha512-QlvfwaN9jaMga9EBazQ+5DDx/4sAdqDkcs05AsQHMaopluVCUyu1bTRUVKzXbgjDlrRAQrYVoi/sXJ9fmG+KLQ==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     peerDependencies:
@@ -4259,17 +4259,16 @@ packages:
       '@types/semver': 7.3.12
       '@typescript-eslint/scope-manager': 5.41.0
       '@typescript-eslint/types': 5.41.0
-      '@typescript-eslint/typescript-estree': 5.41.0_typescript@4.8.4
-      eslint: 7.32.0
+      '@typescript-eslint/typescript-estree': 5.41.0_typescript@4.9.4
       eslint-scope: 5.1.1
-      eslint-utils: 3.0.0_eslint@7.32.0
+      eslint-utils: 3.0.0
       semver: 7.3.8
     transitivePeerDependencies:
       - supports-color
       - typescript
     dev: true
 
-  /@typescript-eslint/utils/5.41.0_typescript@4.8.4:
+  /@typescript-eslint/utils/5.41.0_v5bglvupnukcksncywgdzapdrq:
     resolution: {integrity: 
sha512-QlvfwaN9jaMga9EBazQ+5DDx/4sAdqDkcs05AsQHMaopluVCUyu1bTRUVKzXbgjDlrRAQrYVoi/sXJ9fmG+KLQ==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     peerDependencies:
@@ -4279,16 +4278,17 @@ packages:
       '@types/semver': 7.3.12
       '@typescript-eslint/scope-manager': 5.41.0
       '@typescript-eslint/types': 5.41.0
-      '@typescript-eslint/typescript-estree': 5.41.0_typescript@4.8.4
+      '@typescript-eslint/typescript-estree': 5.41.0_typescript@4.9.4
+      eslint: 8.26.0
       eslint-scope: 5.1.1
-      eslint-utils: 3.0.0
+      eslint-utils: 3.0.0_eslint@8.26.0
       semver: 7.3.8
     transitivePeerDependencies:
       - supports-color
       - typescript
     dev: true
 
-  /@typescript-eslint/utils/5.41.0_wyqvi574yv7oiwfeinomdzmc3m:
+  /@typescript-eslint/utils/5.41.0_yfqovispp7u7jaktymfaqwl2py:
     resolution: {integrity: 
sha512-QlvfwaN9jaMga9EBazQ+5DDx/4sAdqDkcs05AsQHMaopluVCUyu1bTRUVKzXbgjDlrRAQrYVoi/sXJ9fmG+KLQ==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     peerDependencies:
@@ -4298,10 +4298,10 @@ packages:
       '@types/semver': 7.3.12
       '@typescript-eslint/scope-manager': 5.41.0
       '@typescript-eslint/types': 5.41.0
-      '@typescript-eslint/typescript-estree': 5.41.0_typescript@4.8.4
-      eslint: 8.26.0
+      '@typescript-eslint/typescript-estree': 5.41.0_typescript@4.9.4
+      eslint: 7.32.0
       eslint-scope: 5.1.1
-      eslint-utils: 3.0.0_eslint@8.26.0
+      eslint-utils: 3.0.0_eslint@7.32.0
       semver: 7.3.8
     transitivePeerDependencies:
       - supports-color
@@ -8074,14 +8074,14 @@ packages:
       eslint: ^7.32.0 || ^8.2.0
       eslint-plugin-import: ^2.25.3
     dependencies:
-      '@typescript-eslint/eslint-plugin': 5.41.0_huremdigmcnkianavgfk3x6iou
-      '@typescript-eslint/parser': 5.41.0_wyqvi574yv7oiwfeinomdzmc3m
+      '@typescript-eslint/eslint-plugin': 5.41.0_b5xhfrgxhcelhgpcwhcuffyfeu
+      '@typescript-eslint/parser': 5.41.0_v5bglvupnukcksncywgdzapdrq
       eslint: 8.26.0
       eslint-config-airbnb-base: 15.0.0_mynvxvmq5qtyojffiqgev4x7mm
       eslint-plugin-import: 2.26.0_c2flhriocdzler6lrwbyxxyoca
     dev: true
 
-  /eslint-config-preact/1.3.0_pycg7frr72nxxf2dj537ozbyqq:
+  /eslint-config-preact/1.3.0_5pwk54o5tlhc4soplldymjdyka:
     resolution: {integrity: 
sha512-yHYXg5qNzEJd3D/30AmsIW0W8MuY858KpApXp7xxBF08IYUljSKCOqMx+dVucXHQnAm7+11wOnMkgVHIBAechw==}
     peerDependencies:
       eslint: 6.x || 7.x || 8.x
@@ -8093,7 +8093,7 @@ packages:
       '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.18.9
       eslint: 7.32.0
       eslint-plugin-compat: 4.0.2_eslint@7.32.0
-      eslint-plugin-jest: 25.7.0_pycg7frr72nxxf2dj537ozbyqq
+      eslint-plugin-jest: 25.7.0_5pwk54o5tlhc4soplldymjdyka
       eslint-plugin-react: 7.31.10_eslint@7.32.0
       eslint-plugin-react-hooks: 4.6.0_eslint@7.32.0
     transitivePeerDependencies:
@@ -8103,7 +8103,7 @@ packages:
       - typescript
     dev: true
 
-  /eslint-config-preact/1.3.0_qqbgcrpnpybc6dh47gt272vyy4:
+  /eslint-config-preact/1.3.0_lil2cmm3hdnj5md4t7zvysxria:
     resolution: {integrity: 
sha512-yHYXg5qNzEJd3D/30AmsIW0W8MuY858KpApXp7xxBF08IYUljSKCOqMx+dVucXHQnAm7+11wOnMkgVHIBAechw==}
     peerDependencies:
       eslint: 6.x || 7.x || 8.x
@@ -8114,7 +8114,7 @@ packages:
       '@babel/plugin-syntax-decorators': 7.19.0_@babel+core@7.18.9
       '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.18.9
       eslint-plugin-compat: 4.0.2
-      eslint-plugin-jest: 25.7.0_qqbgcrpnpybc6dh47gt272vyy4
+      eslint-plugin-jest: 25.7.0_lil2cmm3hdnj5md4t7zvysxria
       eslint-plugin-react: 7.31.10
       eslint-plugin-react-hooks: 4.6.0
     transitivePeerDependencies:
@@ -8163,7 +8163,7 @@ packages:
       eslint-import-resolver-webpack:
         optional: true
     dependencies:
-      '@typescript-eslint/parser': 5.41.0_wyqvi574yv7oiwfeinomdzmc3m
+      '@typescript-eslint/parser': 5.41.0_v5bglvupnukcksncywgdzapdrq
       debug: 3.2.7
       eslint: 8.26.0
       eslint-import-resolver-node: 0.3.6
@@ -8222,7 +8222,7 @@ packages:
       '@typescript-eslint/parser':
         optional: true
     dependencies:
-      '@typescript-eslint/parser': 5.41.0_wyqvi574yv7oiwfeinomdzmc3m
+      '@typescript-eslint/parser': 5.41.0_v5bglvupnukcksncywgdzapdrq
       array-includes: 3.1.5
       array.prototype.flat: 1.3.0
       debug: 2.6.9
@@ -8243,7 +8243,7 @@ packages:
       - supports-color
     dev: true
 
-  /eslint-plugin-jest/25.7.0_pycg7frr72nxxf2dj537ozbyqq:
+  /eslint-plugin-jest/25.7.0_5pwk54o5tlhc4soplldymjdyka:
     resolution: {integrity: 
sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==}
     engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
     peerDependencies:
@@ -8256,15 +8256,15 @@ packages:
       jest:
         optional: true
     dependencies:
-      '@typescript-eslint/eslint-plugin': 4.33.0_k4l66av2tbo6kxzw52jzgbfzii
-      '@typescript-eslint/experimental-utils': 
5.41.0_3rubbgt5ekhqrcgx4uwls3neim
+      '@typescript-eslint/eslint-plugin': 4.33.0_thyv6urrmcfyirt6hwk42bhgva
+      '@typescript-eslint/experimental-utils': 
5.41.0_yfqovispp7u7jaktymfaqwl2py
       eslint: 7.32.0
     transitivePeerDependencies:
       - supports-color
       - typescript
     dev: true
 
-  /eslint-plugin-jest/25.7.0_qqbgcrpnpybc6dh47gt272vyy4:
+  /eslint-plugin-jest/25.7.0_lil2cmm3hdnj5md4t7zvysxria:
     resolution: {integrity: 
sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==}
     engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
     peerDependencies:
@@ -8277,8 +8277,8 @@ packages:
       jest:
         optional: true
     dependencies:
-      '@typescript-eslint/eslint-plugin': 5.41.0_2dmizcyfdgb4npqs6z4fehioli
-      '@typescript-eslint/experimental-utils': 5.41.0_typescript@4.8.4
+      '@typescript-eslint/eslint-plugin': 5.41.0_2kpzrn7ygxrevwp2scfdydbp5u
+      '@typescript-eslint/experimental-utils': 5.41.0_typescript@4.9.4
     transitivePeerDependencies:
       - supports-color
       - typescript
@@ -14977,14 +14977,14 @@ packages:
   /tslib/2.4.1:
     resolution: {integrity: 
sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==}
 
-  /tsutils/3.21.0_typescript@4.8.4:
+  /tsutils/3.21.0_typescript@4.9.4:
     resolution: {integrity: 
sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
     engines: {node: '>= 6'}
     peerDependencies:
       typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || 
>= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
     dependencies:
       tslib: 1.14.1
-      typescript: 4.8.4
+      typescript: 4.9.4
     dev: true
 
   /tty-browserify/0.0.0:
@@ -15062,7 +15062,7 @@ packages:
     engines: {node: '>= 8'}
     dev: true
 
-  /typedoc/0.20.37_typescript@4.8.4:
+  /typedoc/0.20.37_typescript@4.9.4:
     resolution: {integrity: 
sha512-9+qDhdc4X00qTNOtii6QX2z7ndAeWVOso7w3MPSoSJdXlVhpwPfm1yEp4ooKuWA9fiQILR8FKkyjmeqa13hBbw==}
     engines: {node: '>= 10.8.0'}
     hasBin: true
@@ -15080,10 +15080,10 @@ packages:
       shelljs: 0.8.5
       shiki: 0.9.15
       typedoc-default-themes: 0.12.10
-      typescript: 4.8.4
+      typescript: 4.9.4
     dev: true
 
-  /typedoc/0.23.18_typescript@4.8.4:
+  /typedoc/0.23.18_typescript@4.9.4:
     resolution: {integrity: 
sha512-0Tq/uFkUuWyRYyjOShTkhsOm6u5E8wf0i6L76/k5znEaxvWKHGeT2ywZThGrDrryV/skO/REM824D1gm8ccQuA==}
     engines: {node: '>= 14.14'}
     hasBin: true
@@ -15094,7 +15094,7 @@ packages:
       marked: 4.1.1
       minimatch: 5.1.0
       shiki: 0.11.1
-      typescript: 4.8.4
+      typescript: 4.9.4
     dev: true
 
   /typescript/4.6.4:
@@ -15103,12 +15103,6 @@ packages:
     hasBin: true
     dev: true
 
-  /typescript/4.8.4:
-    resolution: {integrity: 
sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==}
-    engines: {node: '>=4.2.0'}
-    hasBin: true
-    dev: true
-
   /typescript/4.9.4:
     resolution: {integrity: 
sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==}
     engines: {node: '>=4.2.0'}

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]