taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 172a51a43a5cfebd06876206ec3a0cd75ad86e43
parent c2dcad8efeb7948a98997053a8e26087b40bacf8
Author: Florian Dold <florian.dold@gmail.com>
Date:   Mon, 10 Aug 2020 22:19:23 +0530

towards webextension working again

Diffstat:
Apackages/taler-wallet-webextension/.gitignore | 1+
Apackages/taler-wallet-webextension/manifest.json | 49+++++++++++++++++++++++++++++++++++++++++++++++++
Apackages/taler-wallet-webextension/pack.sh | 15+++++++++++++++
Mpackages/taler-wallet-webextension/package.json | 5++++-
Mpackages/taler-wallet-webextension/rollup.config.js | 166+++++++++++++------------------------------------------------------------------
Mpackages/taler-wallet-webextension/src/browserCryptoWorkerFactory.ts | 2+-
Mpackages/taler-wallet-webextension/src/wxBackend.ts | 15+++++++++------
Rpackages/taler-wallet-webextension/webextension/static/add-auditor.html -> packages/taler-wallet-webextension/static/add-auditor.html | 0
Rpackages/taler-wallet-webextension/webextension/static/auditors.html -> packages/taler-wallet-webextension/static/auditors.html | 0
Apackages/taler-wallet-webextension/static/background.html | 11+++++++++++
Rpackages/taler-wallet-webextension/webextension/static/benchmark.html -> packages/taler-wallet-webextension/static/benchmark.html | 0
Rpackages/taler-wallet-webextension/webextension/static/img/icon.png -> packages/taler-wallet-webextension/static/img/icon.png | 0
Rpackages/taler-wallet-webextension/webextension/static/img/logo-2015-medium.png -> packages/taler-wallet-webextension/static/img/logo-2015-medium.png | 0
Apackages/taler-wallet-webextension/static/img/logo.png | 2++
Rpackages/taler-wallet-webextension/webextension/static/img/spinner-bars.svg -> packages/taler-wallet-webextension/static/img/spinner-bars.svg | 0
Rpackages/taler-wallet-webextension/webextension/static/pay.html -> packages/taler-wallet-webextension/static/pay.html | 0
Rpackages/taler-wallet-webextension/webextension/static/payback.html -> packages/taler-wallet-webextension/static/payback.html | 0
Rpackages/taler-wallet-webextension/webextension/static/popup.html -> packages/taler-wallet-webextension/static/popup.html | 0
Rpackages/taler-wallet-webextension/webextension/static/refund.html -> packages/taler-wallet-webextension/static/refund.html | 0
Rpackages/taler-wallet-webextension/webextension/static/reset-required.html -> packages/taler-wallet-webextension/static/reset-required.html | 0
Rpackages/taler-wallet-webextension/webextension/static/return-coins.html -> packages/taler-wallet-webextension/static/return-coins.html | 0
Rpackages/taler-wallet-webextension/webextension/static/style/popup.css -> packages/taler-wallet-webextension/static/style/popup.css | 0
Rpackages/taler-wallet-webextension/webextension/static/style/pure.css -> packages/taler-wallet-webextension/static/style/pure.css | 0
Rpackages/taler-wallet-webextension/webextension/static/style/wallet.css -> packages/taler-wallet-webextension/static/style/wallet.css | 0
Rpackages/taler-wallet-webextension/webextension/static/tip.html -> packages/taler-wallet-webextension/static/tip.html | 0
Rpackages/taler-wallet-webextension/webextension/static/welcome.html -> packages/taler-wallet-webextension/static/welcome.html | 0
Rpackages/taler-wallet-webextension/webextension/static/withdraw.html -> packages/taler-wallet-webextension/static/withdraw.html | 0
Mpackages/taler-wallet-webextension/tsconfig.json | 11+++++++----
Dpackages/taler-wallet-webextension/webextension/manifest.json | 49-------------------------------------------------
Dpackages/taler-wallet-webextension/webextension/pack.sh | 23-----------------------
Dpackages/taler-wallet-webextension/webextension/static/background.html | 11-----------
Dpackages/taler-wallet-webextension/webextension/static/img/logo.png | 2--
Mpnpm-lock.yaml | 8++++++++
33 files changed, 133 insertions(+), 237 deletions(-)

diff --git a/packages/taler-wallet-webextension/.gitignore b/packages/taler-wallet-webextension/.gitignore @@ -0,0 +1 @@ +taler-wallet-*.zip diff --git a/packages/taler-wallet-webextension/manifest.json b/packages/taler-wallet-webextension/manifest.json @@ -0,0 +1,49 @@ +{ + "manifest_version": 2, + + "name": "GNU Taler Wallet (git)", + "description": "Privacy preserving and transparent payments", + "author": "GNU Taler Developers", + "version": "0.6.77.4", + "version_name": "0.7.1-dev.3", + + "minimum_chrome_version": "51", + "minimum_opera_version": "36", + + "applications": { + "gecko": { + "id": "wallet@taler.net", + "strict_min_version": "68.0" + } + }, + + "icons": { + "32": "static/img/icon.png", + "128": "static/img/logo.png" + }, + + "permissions": [ + "storage", + "activeTab" + ], + + "optional_permissions": [ + "webRequest", + "webRequestBlocking", + "http://*/*", + "https://*/*" + ], + + "browser_action": { + "default_icon": { + "32": "static/img/icon.png" + }, + "default_title": "Taler", + "default_popup": "static/popup.html" + }, + + "background": { + "page": "static/background.html", + "persistent": true + } +} diff --git a/packages/taler-wallet-webextension/pack.sh b/packages/taler-wallet-webextension/pack.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +set -eu + +if [[ ! -e package.json ]]; then + echo "Please run this from the root of the repo.">&2 + exit 1 +fi + +vers_manifest=$(jq -r '.version' manifest.json) + +zipfile="taler-wallet-${vers_manifest}.zip" + +rm -f -- "$zipfile" +zip -r "$zipfile" dist static manifest.json diff --git a/packages/taler-wallet-webextension/package.json b/packages/taler-wallet-webextension/package.json @@ -9,7 +9,8 @@ "private": false, "scripts": { "test": "tsc && ava", - "compile": "tsc" + "clean": "rimraf dist lib tsconfig.tsbuildinfo", + "compile": "tsc && rollup -c" }, "dependencies": { "moment": "^2.27.0", @@ -33,7 +34,9 @@ "enzyme-adapter-react-16": "^1.15.2", "react": "^16.13.1", "react-dom": "^16.13.1", + "rimraf": "^3.0.2", "rollup": "^2.23.0", + "rollup-plugin-ignore": "^1.0.9", "rollup-plugin-sourcemaps": "^0.6.2", "rollup-plugin-terser": "^6.1.0", "typescript": "^3.9.7" diff --git a/packages/taler-wallet-webextension/rollup.config.js b/packages/taler-wallet-webextension/rollup.config.js @@ -2,210 +2,96 @@ import commonjs from "@rollup/plugin-commonjs"; import nodeResolve from "@rollup/plugin-node-resolve"; import json from "@rollup/plugin-json"; -import replace from "@rollup/plugin-replace"; import builtins from "builtin-modules"; -import { terser } from "rollup-plugin-terser"; -import typescript from "@rollup/plugin-typescript"; - -// Base settings to use -const baseTypescriptCompilerSettings = { - target: "ES6", - jsx: "react", - reactNamespace: "React", - moduleResolution: "node", - sourceMap: true, - lib: ["es6", "dom"], - noImplicitReturns: true, - noFallthroughCasesInSwitch: true, - strict: true, - strictPropertyInitialization: false, - noImplicitAny: true, - noImplicitThis: true, - allowJs: true, - checkJs: true, - incremental: false, - esModuleInterop: true, - importHelpers: true, - module: "ESNext", - include: ["src/**/*.+(ts|tsx)"], - rootDir: "./src", -}; - -const walletCli = { - input: "src/headless/taler-wallet-cli.ts", - output: { - file: "dist/standalone/taler-wallet-cli.js", - format: "cjs", - }, - external: builtins, - plugins: [ - nodeResolve({ - preferBuiltins: true, - }), - - commonjs({ - include: ["node_modules/**", "dist/node/**"], - extensions: [".js", ".ts"], - ignoreGlobal: false, // Default: false - sourceMap: false, - ignore: ["taler-wallet"], - }), - - json(), - - typescript({ - tsconfig: false, - ...baseTypescriptCompilerSettings, - sourceMap: false, - }), - ], -}; - -const walletAndroid = { - input: "src/android/index.ts", - output: { - //dir: "dist/standalone", - file: "dist/standalone/taler-wallet-android.js", - format: "cjs", - exports: "named", - }, - external: builtins, - plugins: [ - json(), - - nodeResolve({ - preferBuiltins: true, - }), - - commonjs({ - include: ["node_modules/**"], - extensions: [".js"], - sourceMap: false, - ignore: ["taler-wallet"], - }), +import replace from "@rollup/plugin-replace"; +import ignore from "rollup-plugin-ignore" - typescript({ - tsconfig: false, - ...baseTypescriptCompilerSettings, - sourceMap: false, - }), - ], -}; const webExtensionPageEntryPoint = { - input: "src/webex/pageEntryPoint.ts", + input: "lib/pageEntryPoint.js", output: { - file: "dist/webextension/pageEntryPoint.js", + file: "dist/pageEntryPoint.js", format: "iife", exports: "none", name: "webExtensionPageEntry", }, - external: builtins, plugins: [ json(), + ignore(builtins), + nodeResolve({ - preferBuiltins: true, + browser: true, }), - terser(), + //terser(), replace({ "process.env.NODE_ENV": JSON.stringify("production"), + "__filename": "'__webextension__'", }), - commonjs({ - include: ["node_modules/**", "dist/node/**"], - extensions: [".js"], - sourceMap: false, - ignore: ["taler-wallet"], - }), - - typescript({ - tsconfig: false, - ...baseTypescriptCompilerSettings, - sourceMap: false, - }), + commonjs(), ], }; const webExtensionBackgroundPageScript = { - input: "src/webex/background.ts", + input: "lib/background.js", output: { - file: "dist/webextension/background.js", + file: "dist/background.js", format: "iife", exports: "none", name: "webExtensionBackgroundScript", }, - external: builtins, plugins: [ json(), + ignore(builtins), + nodeResolve({ - preferBuiltins: true, + browser: true, }), - terser(), + //terser(), replace({ "process.env.NODE_ENV": JSON.stringify("production"), + "__filename": "'__webextension__'", }), - commonjs({ - include: ["node_modules/**", "dist/node/**"], - extensions: [".js"], - sourceMap: false, - ignore: ["taler-wallet", "crypto"], - }), - - typescript({ - tsconfig: false, - ...baseTypescriptCompilerSettings, - sourceMap: false, - }), + commonjs() ], }; const webExtensionCryptoWorker = { - input: "src/crypto/workers/browserWorkerEntry.ts", + input: "lib/browserWorkerEntry.js", output: { - file: "dist/webextension/browserWorkerEntry.js", + file: "dist/browserWorkerEntry.js", format: "iife", exports: "none", name: "webExtensionCryptoWorker", }, - external: builtins, plugins: [ json(), + ignore(builtins), + nodeResolve({ - preferBuiltins: true, + browser: true, }), - terser(), + //terser(), replace({ "process.env.NODE_ENV": JSON.stringify("production"), + "__filename": "'__webextension__'", }), - commonjs({ - include: ["node_modules/**", "dist/node/**"], - extensions: [".js"], - sourceMap: false, - ignore: ["taler-wallet", "crypto"], - }), - - typescript({ - tsconfig: false, - ...baseTypescriptCompilerSettings, - sourceMap: false, - }), + commonjs(), ], }; export default [ - walletCli, - walletAndroid, webExtensionPageEntryPoint, webExtensionBackgroundPageScript, webExtensionCryptoWorker, diff --git a/packages/taler-wallet-webextension/src/browserCryptoWorkerFactory.ts b/packages/taler-wallet-webextension/src/browserCryptoWorkerFactory.ts @@ -24,7 +24,7 @@ import type { CryptoWorker, CryptoWorkerFactory } from "taler-wallet-core"; export class BrowserCryptoWorkerFactory implements CryptoWorkerFactory { startWorker(): CryptoWorker { const workerCtor = Worker; - const workerPath = "/browserWorkerEntry.js"; + const workerPath = "/dist/browserWorkerEntry.js"; return new workerCtor(workerPath) as CryptoWorker; } diff --git a/packages/taler-wallet-webextension/src/wxBackend.ts b/packages/taler-wallet-webextension/src/wxBackend.ts @@ -496,7 +496,8 @@ function setupHeaderListener(): void { // Handlers for catching HTTP requests getPermissionsApi().contains(extendedPermissions, (result: boolean) => { if ( - chrome.webRequest.onHeadersReceived && + "webRequest" in chrome && + "onHeadersReceived" in chrome.webRequest && chrome.webRequest.onHeadersReceived.hasListener(headerListener) ) { chrome.webRequest.onHeadersReceived.removeListener(headerListener); @@ -509,11 +510,13 @@ function setupHeaderListener(): void { ["responseHeaders", "blocking"], ); } - chrome.webRequest.handlerBehaviorChanged(() => { - if (chrome.runtime.lastError) { - console.error(chrome.runtime.lastError); - } - }); + if ("webRequest" in chrome) { + chrome.webRequest.handlerBehaviorChanged(() => { + if (chrome.runtime.lastError) { + console.error(chrome.runtime.lastError); + } + }); + } }); } diff --git a/packages/taler-wallet-webextension/webextension/static/add-auditor.html b/packages/taler-wallet-webextension/static/add-auditor.html diff --git a/packages/taler-wallet-webextension/webextension/static/auditors.html b/packages/taler-wallet-webextension/static/auditors.html diff --git a/packages/taler-wallet-webextension/static/background.html b/packages/taler-wallet-webextension/static/background.html @@ -0,0 +1,11 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8" /> + <script src="/dist/background.js"></script> + <title>(wallet bg page)</title> + </head> + <body> + <img id="taler-logo" src="/static/img/icon.png" /> + </body> +</html> diff --git a/packages/taler-wallet-webextension/webextension/static/benchmark.html b/packages/taler-wallet-webextension/static/benchmark.html diff --git a/packages/taler-wallet-webextension/webextension/static/img/icon.png b/packages/taler-wallet-webextension/static/img/icon.png Binary files differ. diff --git a/packages/taler-wallet-webextension/webextension/static/img/logo-2015-medium.png b/packages/taler-wallet-webextension/static/img/logo-2015-medium.png Binary files differ. diff --git a/packages/taler-wallet-webextension/static/img/logo.png b/packages/taler-wallet-webextension/static/img/logo.png @@ -0,0 +1 @@ +logo-2015-medium.png +\ No newline at end of file diff --git a/packages/taler-wallet-webextension/webextension/static/img/spinner-bars.svg b/packages/taler-wallet-webextension/static/img/spinner-bars.svg diff --git a/packages/taler-wallet-webextension/webextension/static/pay.html b/packages/taler-wallet-webextension/static/pay.html diff --git a/packages/taler-wallet-webextension/webextension/static/payback.html b/packages/taler-wallet-webextension/static/payback.html diff --git a/packages/taler-wallet-webextension/webextension/static/popup.html b/packages/taler-wallet-webextension/static/popup.html diff --git a/packages/taler-wallet-webextension/webextension/static/refund.html b/packages/taler-wallet-webextension/static/refund.html diff --git a/packages/taler-wallet-webextension/webextension/static/reset-required.html b/packages/taler-wallet-webextension/static/reset-required.html diff --git a/packages/taler-wallet-webextension/webextension/static/return-coins.html b/packages/taler-wallet-webextension/static/return-coins.html diff --git a/packages/taler-wallet-webextension/webextension/static/style/popup.css b/packages/taler-wallet-webextension/static/style/popup.css diff --git a/packages/taler-wallet-webextension/webextension/static/style/pure.css b/packages/taler-wallet-webextension/static/style/pure.css diff --git a/packages/taler-wallet-webextension/webextension/static/style/wallet.css b/packages/taler-wallet-webextension/static/style/wallet.css diff --git a/packages/taler-wallet-webextension/webextension/static/tip.html b/packages/taler-wallet-webextension/static/tip.html diff --git a/packages/taler-wallet-webextension/webextension/static/welcome.html b/packages/taler-wallet-webextension/static/welcome.html diff --git a/packages/taler-wallet-webextension/webextension/static/withdraw.html b/packages/taler-wallet-webextension/static/withdraw.html diff --git a/packages/taler-wallet-webextension/tsconfig.json b/packages/taler-wallet-webextension/tsconfig.json @@ -3,17 +3,20 @@ "composite": true, "lib": ["es6", "DOM"], "jsx": "react", + "moduleResolution": "Node", "reactNamespace": "React", - "module": "commonjs", - "target": "es5", + "module": "ESNext", + "target": "ES6", "noImplicitAny": true, "outDir": "lib", - "declaration": true, "noEmitOnError": true, "strict": true, "incremental": true, "sourceMap": true, - "esModuleInterop": true + "esModuleInterop": true, + "importHelpers": true, + "rootDir": "./src", + "typeRoots": ["./node_modules/@types"] }, "include": ["src/**/*"] } diff --git a/packages/taler-wallet-webextension/webextension/manifest.json b/packages/taler-wallet-webextension/webextension/manifest.json @@ -1,49 +0,0 @@ -{ - "manifest_version": 2, - - "name": "GNU Taler Wallet (git)", - "description": "Privacy preserving and transparent payments", - "author": "GNU Taler Developers", - "version": "0.6.77.4", - "version_name": "0.7.1-dev.3", - - "minimum_chrome_version": "51", - "minimum_opera_version": "36", - - "applications": { - "gecko": { - "id": "wallet@taler.net", - "strict_min_version": "68.0" - } - }, - - "icons": { - "32": "img/icon.png", - "128": "img/logo.png" - }, - - "permissions": [ - "storage", - "activeTab" - ], - - "optional_permissions": [ - "webRequest", - "webRequestBlocking", - "http://*/*", - "https://*/*" - ], - - "browser_action": { - "default_icon": { - "32": "img/icon.png" - }, - "default_title": "Taler", - "default_popup": "popup.html" - }, - - "background": { - "page": "background.html", - "persistent": true - } -} diff --git a/packages/taler-wallet-webextension/webextension/pack.sh b/packages/taler-wallet-webextension/webextension/pack.sh @@ -1,23 +0,0 @@ -#!/usr/bin/env bash - -set -eu - -if [[ ! -e package.json ]]; then - echo "Please run this from the root of the repo.">&2 - exit 1 -fi - -vers_manifest=$(jq -r '.version' webextension/manifest.json) - -rm -rf dist/wx -mkdir -p dist/wx -cp webextension/manifest.json dist/wx/ -cp -r webextension/static/* dist/wx/ -cp -r dist/webextension/* dist/wx/ - -cd dist/wx - -zipfile="../taler-wallet-${vers_manifest}.zip" - -rm -f -- "$zipfile" -zip -r "$zipfile" ./* diff --git a/packages/taler-wallet-webextension/webextension/static/background.html b/packages/taler-wallet-webextension/webextension/static/background.html @@ -1,11 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="UTF-8" /> - <script src="/background.js"></script> - <title>(wallet bg page)</title> - </head> - <body> - <img id="taler-logo" src="/img/icon.png" /> - </body> -</html> diff --git a/packages/taler-wallet-webextension/webextension/static/img/logo.png b/packages/taler-wallet-webextension/webextension/static/img/logo.png @@ -1 +0,0 @@ -logo-2015-medium.png -\ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml @@ -199,7 +199,9 @@ importers: enzyme-adapter-react-16: 1.15.2_df2dc313d8031f8c2dbd009d86ca7fc7 react: 16.13.1 react-dom: 16.13.1_react@16.13.1 + rimraf: 3.0.2 rollup: 2.23.0 + rollup-plugin-ignore: 1.0.9 rollup-plugin-sourcemaps: 0.6.2_1bb4f16ce5b550396581a296af208cfa rollup-plugin-terser: 6.1.0_rollup@2.23.0 typescript: 3.9.7 @@ -221,7 +223,9 @@ importers: moment: ^2.27.0 react: ^16.13.1 react-dom: ^16.13.1 + rimraf: ^3.0.2 rollup: ^2.23.0 + rollup-plugin-ignore: ^1.0.9 rollup-plugin-sourcemaps: ^0.6.2 rollup-plugin-terser: ^6.1.0 taler-wallet-core: 'workspace:*' @@ -4109,6 +4113,10 @@ packages: hasBin: true resolution: integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + /rollup-plugin-ignore/1.0.9: + dev: true + resolution: + integrity: sha512-+Q2jmD4gbO3ByFuljkDEfpEcYvll7J5+ZadUuk/Pu35x2KGrbHxKtt3+s+dPIgXX1mG7zCxG4s/NdRqztR5Ruw== /rollup-plugin-sourcemaps/0.6.2_1bb4f16ce5b550396581a296af208cfa: dependencies: '@rollup/pluginutils': 3.1.0_rollup@2.23.0