From 7c57a5121ae2813651fec8f245d0060dd92509fc Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Tue, 11 Oct 2022 18:21:27 +0200 Subject: [PATCH 01/25] chore(tsconfig): specify included files during dev --- packages/advanced-logic/tsconfig.build.json | 3 +-- packages/advanced-logic/tsconfig.json | 3 ++- packages/currency/tsconfig.build.json | 3 +-- packages/currency/tsconfig.json | 3 ++- packages/data-access/tsconfig.build.json | 3 +-- packages/data-access/tsconfig.json | 3 ++- packages/data-format/tsconfig.build.json | 3 +-- packages/data-format/tsconfig.json | 3 ++- packages/epk-decryption/tsconfig.build.json | 3 +-- packages/epk-decryption/tsconfig.json | 3 ++- packages/epk-signature/tsconfig.build.json | 3 +-- packages/epk-signature/tsconfig.json | 3 ++- packages/ethereum-storage/tsconfig.build.json | 3 +-- packages/ethereum-storage/tsconfig.json | 4 +--- packages/integration-test/tsconfig.json | 3 ++- packages/multi-format/tsconfig.build.json | 3 +-- packages/multi-format/tsconfig.json | 3 ++- packages/payment-detection/tsconfig.build.json | 3 +-- packages/payment-detection/tsconfig.json | 3 ++- packages/payment-processor/tsconfig.build.json | 3 +-- packages/payment-processor/tsconfig.json | 3 ++- packages/prototype-estimator/tsconfig.build.json | 3 +-- packages/prototype-estimator/tsconfig.json | 3 ++- packages/request-client.js/tsconfig.build.json | 3 +-- packages/request-client.js/tsconfig.json | 3 ++- packages/request-logic/tsconfig.build.json | 3 +-- packages/request-logic/tsconfig.json | 3 ++- packages/request-node/tsconfig.build.json | 3 +-- packages/request-node/tsconfig.json | 3 ++- packages/smart-contracts/tsconfig.build.json | 3 +-- packages/smart-contracts/tsconfig.json | 10 +++++++++- packages/thegraph-data-access/tsconfig.build.json | 3 +-- packages/thegraph-data-access/tsconfig.json | 3 ++- packages/toolbox/tsconfig.build.json | 3 +-- packages/toolbox/tsconfig.json | 3 ++- packages/transaction-manager/tsconfig.build.json | 3 +-- packages/transaction-manager/tsconfig.json | 3 ++- packages/types/tsconfig.build.json | 3 +-- packages/types/tsconfig.json | 3 ++- packages/usage-examples/tsconfig.build.json | 3 +-- packages/usage-examples/tsconfig.json | 3 ++- packages/utils/tsconfig.build.json | 3 +-- packages/utils/tsconfig.json | 3 ++- packages/web3-signature/tsconfig.build.json | 3 +-- packages/web3-signature/tsconfig.json | 3 ++- 45 files changed, 74 insertions(+), 69 deletions(-) diff --git a/packages/advanced-logic/tsconfig.build.json b/packages/advanced-logic/tsconfig.build.json index 93830aaf9d..c41676a246 100644 --- a/packages/advanced-logic/tsconfig.build.json +++ b/packages/advanced-logic/tsconfig.build.json @@ -4,8 +4,7 @@ "outDir": "dist", "rootDir": "src" }, - "include": ["src/**/*"], - "exclude": ["**/*.test.ts", "**/*.spec.ts"], + "exclude": ["test/", "**/*.test.ts", "**/*.spec.ts"], "references": [ { "path": "../currency/tsconfig.build.json" }, { "path": "../types/tsconfig.build.json" }, diff --git a/packages/advanced-logic/tsconfig.json b/packages/advanced-logic/tsconfig.json index 7613d5397f..8baef78619 100644 --- a/packages/advanced-logic/tsconfig.json +++ b/packages/advanced-logic/tsconfig.json @@ -2,5 +2,6 @@ "extends": "../../tsconfig", "compilerOptions": { "types": ["node", "jest"] - } + }, + "include": ["src/", "test/"] } diff --git a/packages/currency/tsconfig.build.json b/packages/currency/tsconfig.build.json index b920457879..b2e8e973a9 100644 --- a/packages/currency/tsconfig.build.json +++ b/packages/currency/tsconfig.build.json @@ -4,8 +4,7 @@ "outDir": "dist", "rootDir": "src" }, - "include": ["src/**/*", "./src/aggregators/*.json"], - "exclude": ["**/*.test.ts", "**/*.spec.ts"], + "exclude": ["test/", "scripts/", "**/*.test.ts", "**/*.spec.ts"], "references": [ { "path": "../types/tsconfig.build.json" }, { "path": "../utils/tsconfig.build.json" } diff --git a/packages/currency/tsconfig.json b/packages/currency/tsconfig.json index ea204fde4b..e00f87cfe3 100644 --- a/packages/currency/tsconfig.json +++ b/packages/currency/tsconfig.json @@ -2,5 +2,6 @@ "extends": "../../tsconfig", "compilerOptions": { "esModuleInterop": true - } + }, + "include": ["src/", "src/aggregators/*.json", "scripts/", "test/"] } diff --git a/packages/data-access/tsconfig.build.json b/packages/data-access/tsconfig.build.json index b9157539bb..7c30e8d628 100644 --- a/packages/data-access/tsconfig.build.json +++ b/packages/data-access/tsconfig.build.json @@ -4,8 +4,7 @@ "outDir": "dist", "rootDir": "src" }, - "include": ["src/**/*", "./src/aggregators/*.json"], - "exclude": ["**/*.test.ts", "**/*.spec.ts"], + "exclude": ["test/", "**/*.test.ts", "**/*.spec.ts"], "references": [ { "path": "../types/tsconfig.build.json" }, { "path": "../utils/tsconfig.build.json" }, diff --git a/packages/data-access/tsconfig.json b/packages/data-access/tsconfig.json index 41716a7dd5..c2f3900f62 100644 --- a/packages/data-access/tsconfig.json +++ b/packages/data-access/tsconfig.json @@ -1,3 +1,4 @@ { - "extends": "../../tsconfig" + "extends": "../../tsconfig", + "include": ["src/", "test/"] } diff --git a/packages/data-format/tsconfig.build.json b/packages/data-format/tsconfig.build.json index e7132b8f53..dc57c8a7b1 100644 --- a/packages/data-format/tsconfig.build.json +++ b/packages/data-format/tsconfig.build.json @@ -4,6 +4,5 @@ "outDir": "dist", "rootDir": "src" }, - "include": ["src/**/*", "./src/format/address.json", "./src/format/**/*.json"], - "exclude": ["**/*.test.ts", "**/*.spec.ts"] + "exclude": ["test/", "**/*.test.ts", "**/*.spec.ts"] } diff --git a/packages/data-format/tsconfig.json b/packages/data-format/tsconfig.json index 3f1974d102..50cd4cf886 100644 --- a/packages/data-format/tsconfig.json +++ b/packages/data-format/tsconfig.json @@ -2,5 +2,6 @@ "extends": "../../tsconfig", "compilerOptions": { "resolveJsonModule": true - } + }, + "include": ["src/", "src/format/**/*.json", "test/"] } diff --git a/packages/epk-decryption/tsconfig.build.json b/packages/epk-decryption/tsconfig.build.json index b5dd267508..7c30e8d628 100644 --- a/packages/epk-decryption/tsconfig.build.json +++ b/packages/epk-decryption/tsconfig.build.json @@ -4,8 +4,7 @@ "outDir": "dist", "rootDir": "src" }, - "include": ["src/**/*"], - "exclude": ["**/*.test.ts", "**/*.spec.ts"], + "exclude": ["test/", "**/*.test.ts", "**/*.spec.ts"], "references": [ { "path": "../types/tsconfig.build.json" }, { "path": "../utils/tsconfig.build.json" }, diff --git a/packages/epk-decryption/tsconfig.json b/packages/epk-decryption/tsconfig.json index 41716a7dd5..c2f3900f62 100644 --- a/packages/epk-decryption/tsconfig.json +++ b/packages/epk-decryption/tsconfig.json @@ -1,3 +1,4 @@ { - "extends": "../../tsconfig" + "extends": "../../tsconfig", + "include": ["src/", "test/"] } diff --git a/packages/epk-signature/tsconfig.build.json b/packages/epk-signature/tsconfig.build.json index bbc4d88d56..c15f8323b4 100644 --- a/packages/epk-signature/tsconfig.build.json +++ b/packages/epk-signature/tsconfig.build.json @@ -4,8 +4,7 @@ "outDir": "dist", "rootDir": "src" }, - "include": ["src/**/*"], - "exclude": ["**/*.test.ts", "**/*.spec.ts"], + "exclude": ["test/", "**/*.test.ts", "**/*.spec.ts"], "references": [ { "path": "../types/tsconfig.build.json" }, { "path": "../utils/tsconfig.build.json" } diff --git a/packages/epk-signature/tsconfig.json b/packages/epk-signature/tsconfig.json index 41716a7dd5..c2f3900f62 100644 --- a/packages/epk-signature/tsconfig.json +++ b/packages/epk-signature/tsconfig.json @@ -1,3 +1,4 @@ { - "extends": "../../tsconfig" + "extends": "../../tsconfig", + "include": ["src/", "test/"] } diff --git a/packages/ethereum-storage/tsconfig.build.json b/packages/ethereum-storage/tsconfig.build.json index 199fc58227..ab09dffa84 100644 --- a/packages/ethereum-storage/tsconfig.build.json +++ b/packages/ethereum-storage/tsconfig.build.json @@ -4,8 +4,7 @@ "outDir": "dist", "rootDir": "." }, - "include": ["src/**/*"], - "exclude": ["**/*.test.ts", "**/*.spec.ts"], + "exclude": ["test/", "**/*.test.ts", "**/*.spec.ts"], "references": [ { "path": "../types/tsconfig.build.json" }, { "path": "../utils/tsconfig.build.json" }, diff --git a/packages/ethereum-storage/tsconfig.json b/packages/ethereum-storage/tsconfig.json index 3f1974d102..c2f3900f62 100644 --- a/packages/ethereum-storage/tsconfig.json +++ b/packages/ethereum-storage/tsconfig.json @@ -1,6 +1,4 @@ { "extends": "../../tsconfig", - "compilerOptions": { - "resolveJsonModule": true - } + "include": ["src/", "test/"] } diff --git a/packages/integration-test/tsconfig.json b/packages/integration-test/tsconfig.json index 41716a7dd5..8c32b82bce 100644 --- a/packages/integration-test/tsconfig.json +++ b/packages/integration-test/tsconfig.json @@ -1,3 +1,4 @@ { - "extends": "../../tsconfig" + "extends": "../../tsconfig", + "include": ["test/"] } diff --git a/packages/multi-format/tsconfig.build.json b/packages/multi-format/tsconfig.build.json index 791700b847..7047fca813 100644 --- a/packages/multi-format/tsconfig.build.json +++ b/packages/multi-format/tsconfig.build.json @@ -4,7 +4,6 @@ "outDir": "dist", "rootDir": "src" }, - "include": ["src/**/*"], - "exclude": ["**/*.test.ts", "**/*.spec.ts"], + "exclude": ["test/", "**/*.test.ts", "**/*.spec.ts"], "references": [{ "path": "../types/tsconfig.build.json" }] } diff --git a/packages/multi-format/tsconfig.json b/packages/multi-format/tsconfig.json index 41716a7dd5..c2f3900f62 100644 --- a/packages/multi-format/tsconfig.json +++ b/packages/multi-format/tsconfig.json @@ -1,3 +1,4 @@ { - "extends": "../../tsconfig" + "extends": "../../tsconfig", + "include": ["src/", "test/"] } diff --git a/packages/payment-detection/tsconfig.build.json b/packages/payment-detection/tsconfig.build.json index 1f7665f734..1139233206 100644 --- a/packages/payment-detection/tsconfig.build.json +++ b/packages/payment-detection/tsconfig.build.json @@ -4,8 +4,7 @@ "outDir": "dist", "rootDir": "src" }, - "include": ["src/**/*"], - "exclude": ["**/*.test.ts", "**/*.spec.ts"], + "exclude": ["test/", "**/*.test.ts", "**/*.spec.ts"], "references": [ { "path": "../currency/tsconfig.build.json" }, { "path": "../types/tsconfig.build.json" }, diff --git a/packages/payment-detection/tsconfig.json b/packages/payment-detection/tsconfig.json index 41716a7dd5..c2f3900f62 100644 --- a/packages/payment-detection/tsconfig.json +++ b/packages/payment-detection/tsconfig.json @@ -1,3 +1,4 @@ { - "extends": "../../tsconfig" + "extends": "../../tsconfig", + "include": ["src/", "test/"] } diff --git a/packages/payment-processor/tsconfig.build.json b/packages/payment-processor/tsconfig.build.json index be7ec9e429..7452a7fe4f 100644 --- a/packages/payment-processor/tsconfig.build.json +++ b/packages/payment-processor/tsconfig.build.json @@ -4,8 +4,7 @@ "outDir": "dist", "rootDir": "src" }, - "include": ["src/**/*"], - "exclude": ["**/*.test.ts", "**/*.spec.ts"], + "exclude": ["test/", "**/*.test.ts", "**/*.spec.ts"], "references": [ { "path": "../types/tsconfig.build.json" }, { "path": "../utils/tsconfig.build.json" }, diff --git a/packages/payment-processor/tsconfig.json b/packages/payment-processor/tsconfig.json index 41716a7dd5..c2f3900f62 100644 --- a/packages/payment-processor/tsconfig.json +++ b/packages/payment-processor/tsconfig.json @@ -1,3 +1,4 @@ { - "extends": "../../tsconfig" + "extends": "../../tsconfig", + "include": ["src/", "test/"] } diff --git a/packages/prototype-estimator/tsconfig.build.json b/packages/prototype-estimator/tsconfig.build.json index df9ce1045f..ce4e2e5065 100644 --- a/packages/prototype-estimator/tsconfig.build.json +++ b/packages/prototype-estimator/tsconfig.build.json @@ -4,8 +4,7 @@ "outDir": "dist", "rootDir": "src" }, - "include": ["src/**/*"], - "exclude": ["**/*.test.ts", "**/*.spec.ts"], + "exclude": ["test/", "**/*.test.ts", "**/*.spec.ts"], "references": [ { "path": "../data-access/tsconfig.build.json" }, { "path": "../epk-signature/tsconfig.build.json" }, diff --git a/packages/prototype-estimator/tsconfig.json b/packages/prototype-estimator/tsconfig.json index 41716a7dd5..c2f3900f62 100644 --- a/packages/prototype-estimator/tsconfig.json +++ b/packages/prototype-estimator/tsconfig.json @@ -1,3 +1,4 @@ { - "extends": "../../tsconfig" + "extends": "../../tsconfig", + "include": ["src/", "test/"] } diff --git a/packages/request-client.js/tsconfig.build.json b/packages/request-client.js/tsconfig.build.json index da7c6b0a7c..5ce35db97c 100644 --- a/packages/request-client.js/tsconfig.build.json +++ b/packages/request-client.js/tsconfig.build.json @@ -4,8 +4,7 @@ "outDir": "dist", "rootDir": "src" }, - "include": ["src/**/*"], - "exclude": ["**/*.test.ts", "**/*.spec.ts"], + "exclude": ["test/", "**/*.test.ts", "**/*.spec.ts"], "references": [ { "path": "../advanced-logic/tsconfig.build.json" }, { "path": "../currency/tsconfig.build.json" }, diff --git a/packages/request-client.js/tsconfig.json b/packages/request-client.js/tsconfig.json index 41716a7dd5..c2f3900f62 100644 --- a/packages/request-client.js/tsconfig.json +++ b/packages/request-client.js/tsconfig.json @@ -1,3 +1,4 @@ { - "extends": "../../tsconfig" + "extends": "../../tsconfig", + "include": ["src/", "test/"] } diff --git a/packages/request-logic/tsconfig.build.json b/packages/request-logic/tsconfig.build.json index 741481052a..b49dcd75fe 100644 --- a/packages/request-logic/tsconfig.build.json +++ b/packages/request-logic/tsconfig.build.json @@ -4,8 +4,7 @@ "outDir": "dist", "rootDir": "src" }, - "include": ["src/**/*"], - "exclude": ["**/*.test.ts", "**/*.spec.ts"], + "exclude": ["test/", "**/*.test.ts", "**/*.spec.ts"], "references": [ { "path": "../advanced-logic/tsconfig.build.json" }, { "path": "../multi-format/tsconfig.build.json" }, diff --git a/packages/request-logic/tsconfig.json b/packages/request-logic/tsconfig.json index 41716a7dd5..c2f3900f62 100644 --- a/packages/request-logic/tsconfig.json +++ b/packages/request-logic/tsconfig.json @@ -1,3 +1,4 @@ { - "extends": "../../tsconfig" + "extends": "../../tsconfig", + "include": ["src/", "test/"] } diff --git a/packages/request-node/tsconfig.build.json b/packages/request-node/tsconfig.build.json index 57b1d05782..62febf23b5 100644 --- a/packages/request-node/tsconfig.build.json +++ b/packages/request-node/tsconfig.build.json @@ -4,8 +4,7 @@ "outDir": "dist", "rootDir": "src" }, - "include": ["src/**/*"], - "exclude": ["**/*.test.ts", "**/*.spec.ts"], + "exclude": ["test/", "**/*.test.ts", "**/*.spec.ts"], "references": [ { "path": "../data-access/tsconfig.build.json" }, { "path": "../ethereum-storage/tsconfig.build.json" }, diff --git a/packages/request-node/tsconfig.json b/packages/request-node/tsconfig.json index ea204fde4b..8a3a37edff 100644 --- a/packages/request-node/tsconfig.json +++ b/packages/request-node/tsconfig.json @@ -2,5 +2,6 @@ "extends": "../../tsconfig", "compilerOptions": { "esModuleInterop": true - } + }, + "include": ["src/", "test/"] } diff --git a/packages/smart-contracts/tsconfig.build.json b/packages/smart-contracts/tsconfig.build.json index 2ade8aba11..fbb616ea3d 100644 --- a/packages/smart-contracts/tsconfig.build.json +++ b/packages/smart-contracts/tsconfig.build.json @@ -4,8 +4,7 @@ "outDir": "dist", "rootDir": "." }, - "include": ["src/**/*", "src/**/*.json", "scripts", "hardhat.config.ts", "scripts-create2"], - "exclude": ["**/*.test.ts", "**/*.spec.ts"], + "exclude": ["test/", "**/*.test.ts", "**/*.spec.ts"], "references": [ { "path": "../currency/tsconfig.build.json" }, { "path": "../utils/tsconfig.build.json" } diff --git a/packages/smart-contracts/tsconfig.json b/packages/smart-contracts/tsconfig.json index 3f1974d102..c067f90db1 100644 --- a/packages/smart-contracts/tsconfig.json +++ b/packages/smart-contracts/tsconfig.json @@ -2,5 +2,13 @@ "extends": "../../tsconfig", "compilerOptions": { "resolveJsonModule": true - } + }, + "include": [ + "src/", + "src/lib/artifacts/**/*.json", + "test/", + "scripts/", + "scripts-create2/", + "hardhat.config.ts" + ] } diff --git a/packages/thegraph-data-access/tsconfig.build.json b/packages/thegraph-data-access/tsconfig.build.json index 791700b847..7047fca813 100644 --- a/packages/thegraph-data-access/tsconfig.build.json +++ b/packages/thegraph-data-access/tsconfig.build.json @@ -4,7 +4,6 @@ "outDir": "dist", "rootDir": "src" }, - "include": ["src/**/*"], - "exclude": ["**/*.test.ts", "**/*.spec.ts"], + "exclude": ["test/", "**/*.test.ts", "**/*.spec.ts"], "references": [{ "path": "../types/tsconfig.build.json" }] } diff --git a/packages/thegraph-data-access/tsconfig.json b/packages/thegraph-data-access/tsconfig.json index 41716a7dd5..c2f3900f62 100644 --- a/packages/thegraph-data-access/tsconfig.json +++ b/packages/thegraph-data-access/tsconfig.json @@ -1,3 +1,4 @@ { - "extends": "../../tsconfig" + "extends": "../../tsconfig", + "include": ["src/", "test/"] } diff --git a/packages/toolbox/tsconfig.build.json b/packages/toolbox/tsconfig.build.json index 2df4694e3e..1fbe39ed73 100644 --- a/packages/toolbox/tsconfig.build.json +++ b/packages/toolbox/tsconfig.build.json @@ -4,8 +4,7 @@ "outDir": "dist", "rootDir": "src" }, - "include": ["src/**/*"], - "exclude": ["**/*.test.ts", "**/*.spec.ts"], + "exclude": ["test/", "**/*.test.ts", "**/*.spec.ts"], "references": [ { "path": "../epk-signature/tsconfig.build.json" }, { "path": "../request-client.js/tsconfig.build.json" }, diff --git a/packages/toolbox/tsconfig.json b/packages/toolbox/tsconfig.json index 1031551cbc..793147f8e2 100644 --- a/packages/toolbox/tsconfig.json +++ b/packages/toolbox/tsconfig.json @@ -3,5 +3,6 @@ "compilerOptions": { "esModuleInterop": true, "lib": ["ES2019"] - } + }, + "include": ["src/", "test/"] } diff --git a/packages/transaction-manager/tsconfig.build.json b/packages/transaction-manager/tsconfig.build.json index b5dd267508..7c30e8d628 100644 --- a/packages/transaction-manager/tsconfig.build.json +++ b/packages/transaction-manager/tsconfig.build.json @@ -4,8 +4,7 @@ "outDir": "dist", "rootDir": "src" }, - "include": ["src/**/*"], - "exclude": ["**/*.test.ts", "**/*.spec.ts"], + "exclude": ["test/", "**/*.test.ts", "**/*.spec.ts"], "references": [ { "path": "../types/tsconfig.build.json" }, { "path": "../utils/tsconfig.build.json" }, diff --git a/packages/transaction-manager/tsconfig.json b/packages/transaction-manager/tsconfig.json index 41716a7dd5..c2f3900f62 100644 --- a/packages/transaction-manager/tsconfig.json +++ b/packages/transaction-manager/tsconfig.json @@ -1,3 +1,4 @@ { - "extends": "../../tsconfig" + "extends": "../../tsconfig", + "include": ["src/", "test/"] } diff --git a/packages/types/tsconfig.build.json b/packages/types/tsconfig.build.json index 2e5a0b8c41..dc57c8a7b1 100644 --- a/packages/types/tsconfig.build.json +++ b/packages/types/tsconfig.build.json @@ -4,6 +4,5 @@ "outDir": "dist", "rootDir": "src" }, - "include": ["src/**/*"], - "exclude": ["**/*.test.ts", "**/*.spec.ts"] + "exclude": ["test/", "**/*.test.ts", "**/*.spec.ts"] } diff --git a/packages/types/tsconfig.json b/packages/types/tsconfig.json index 3ad9cc1b68..f103ffc42a 100644 --- a/packages/types/tsconfig.json +++ b/packages/types/tsconfig.json @@ -2,5 +2,6 @@ "extends": "../../tsconfig", "compilerOptions": { "importHelpers": false - } + }, + "include": ["src/", "test/"] } diff --git a/packages/usage-examples/tsconfig.build.json b/packages/usage-examples/tsconfig.build.json index 6309968ccd..0cb77fc4ee 100644 --- a/packages/usage-examples/tsconfig.build.json +++ b/packages/usage-examples/tsconfig.build.json @@ -4,8 +4,7 @@ "outDir": "dist", "rootDir": "src" }, - "include": ["src/**/*"], - "exclude": ["**/*.test.ts", "**/*.spec.ts"], + "exclude": ["test/", "**/*.test.ts", "**/*.spec.ts"], "references": [ { "path": "../data-access/tsconfig.build.json" }, { "path": "../epk-decryption/tsconfig.build.json" }, diff --git a/packages/usage-examples/tsconfig.json b/packages/usage-examples/tsconfig.json index 41716a7dd5..c2f3900f62 100644 --- a/packages/usage-examples/tsconfig.json +++ b/packages/usage-examples/tsconfig.json @@ -1,3 +1,4 @@ { - "extends": "../../tsconfig" + "extends": "../../tsconfig", + "include": ["src/", "test/"] } diff --git a/packages/utils/tsconfig.build.json b/packages/utils/tsconfig.build.json index 791700b847..7047fca813 100644 --- a/packages/utils/tsconfig.build.json +++ b/packages/utils/tsconfig.build.json @@ -4,7 +4,6 @@ "outDir": "dist", "rootDir": "src" }, - "include": ["src/**/*"], - "exclude": ["**/*.test.ts", "**/*.spec.ts"], + "exclude": ["test/", "**/*.test.ts", "**/*.spec.ts"], "references": [{ "path": "../types/tsconfig.build.json" }] } diff --git a/packages/utils/tsconfig.json b/packages/utils/tsconfig.json index 41716a7dd5..c2f3900f62 100644 --- a/packages/utils/tsconfig.json +++ b/packages/utils/tsconfig.json @@ -1,3 +1,4 @@ { - "extends": "../../tsconfig" + "extends": "../../tsconfig", + "include": ["src/", "test/"] } diff --git a/packages/web3-signature/tsconfig.build.json b/packages/web3-signature/tsconfig.build.json index bbc4d88d56..c15f8323b4 100644 --- a/packages/web3-signature/tsconfig.build.json +++ b/packages/web3-signature/tsconfig.build.json @@ -4,8 +4,7 @@ "outDir": "dist", "rootDir": "src" }, - "include": ["src/**/*"], - "exclude": ["**/*.test.ts", "**/*.spec.ts"], + "exclude": ["test/", "**/*.test.ts", "**/*.spec.ts"], "references": [ { "path": "../types/tsconfig.build.json" }, { "path": "../utils/tsconfig.build.json" } diff --git a/packages/web3-signature/tsconfig.json b/packages/web3-signature/tsconfig.json index 41716a7dd5..c2f3900f62 100644 --- a/packages/web3-signature/tsconfig.json +++ b/packages/web3-signature/tsconfig.json @@ -1,3 +1,4 @@ { - "extends": "../../tsconfig" + "extends": "../../tsconfig", + "include": ["src/", "test/"] } From c3f980c5e61c2b7d5bf07786895f1c92d8cbae69 Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Tue, 11 Oct 2022 17:06:46 +0200 Subject: [PATCH 02/25] WIP --- packages/advanced-logic/src/advanced-logic.ts | 1 + .../src/extensions/abstract-extension.ts | 10 ++-- .../src/extensions/content-data.ts | 7 +-- .../payment-network/address-based.ts | 42 +++++---------- .../payment-network/any-to-erc20-proxy.ts | 7 +-- .../payment-network/any-to-eth-proxy.ts | 18 ++----- .../payment-network/any-to-native.ts | 15 ++++-- .../extensions/payment-network/any-to-near.ts | 12 ++--- .../bitcoin/mainnet-address-based.ts | 10 ++-- .../bitcoin/testnet-address-based.ts | 11 ++-- .../extensions/payment-network/declarative.ts | 5 +- .../payment-network/erc20/address-based.ts | 3 -- .../erc20/fee-proxy-contract.ts | 21 +------- .../payment-network/erc20/proxy-contract.ts | 13 +++-- .../payment-network/erc777/stream.ts | 20 +++---- .../ethereum/fee-proxy-contract.ts | 3 +- .../payment-network/ethereum/input-data.ts | 18 +------ .../payment-network/fee-reference-based.ts | 11 ++-- .../payment-network/native-token.ts | 13 +++-- .../extensions/payment-network/near-native.ts | 7 +-- .../payment-network/reference-based.ts | 11 +--- .../payment-network/address-based.test.ts | 16 +++++- .../src/erc20/fee-proxy-contract.ts | 4 +- .../src/payment-detector-base.ts | 6 +-- .../src/payment-network-factory.ts | 52 ++++++++++++------- packages/payment-detection/src/types.ts | 17 ++++-- packages/types/src/extension-types.ts | 3 ++ packages/types/src/payment-types.ts | 1 + 28 files changed, 160 insertions(+), 197 deletions(-) diff --git a/packages/advanced-logic/src/advanced-logic.ts b/packages/advanced-logic/src/advanced-logic.ts index c6923e7928..0e111a2a81 100644 --- a/packages/advanced-logic/src/advanced-logic.ts +++ b/packages/advanced-logic/src/advanced-logic.ts @@ -67,6 +67,7 @@ export default class AdvancedLogic implements AdvancedLogicTypes.IAdvancedLogic anyToNativeToken: [new AnyToNear(currencyManager)], }; } + /** * Applies the extension action to the request extensions state * diff --git a/packages/advanced-logic/src/extensions/abstract-extension.ts b/packages/advanced-logic/src/extensions/abstract-extension.ts index 23dadbf5d8..6d257655d4 100644 --- a/packages/advanced-logic/src/extensions/abstract-extension.ts +++ b/packages/advanced-logic/src/extensions/abstract-extension.ts @@ -4,13 +4,13 @@ import Utils from '@requestnetwork/utils'; /** * Abstract class to create extension */ -export abstract class AbstractExtension { +export abstract class AbstractExtension implements ExtensionTypes.IExtension { protected actions: ExtensionTypes.SupportedActions; - public constructor( - public extensionType: ExtensionTypes.TYPE, - public extensionId: ExtensionTypes.ID, - public currentVersion: string, + protected constructor( + public readonly extensionType: ExtensionTypes.TYPE, + public readonly extensionId: ExtensionTypes.ID, + public readonly currentVersion: string, ) { this.actions = {}; } diff --git a/packages/advanced-logic/src/extensions/content-data.ts b/packages/advanced-logic/src/extensions/content-data.ts index 02186a19e2..182dee43ef 100644 --- a/packages/advanced-logic/src/extensions/content-data.ts +++ b/packages/advanced-logic/src/extensions/content-data.ts @@ -9,11 +9,8 @@ const CURRENT_VERSION = '0.1.0'; export default class ContentDataExtension< TCreationParameters extends ExtensionTypes.ContentData.ICreationParameters = ExtensionTypes.ContentData.ICreationParameters, > extends AbstractExtension { - public constructor( - public extensionId: ExtensionTypes.ID = ExtensionTypes.ID.CONTENT_DATA, - public currentVersion: string = CURRENT_VERSION, - ) { - super(ExtensionTypes.TYPE.CONTENT_DATA, extensionId, currentVersion); + public constructor() { + super(ExtensionTypes.TYPE.CONTENT_DATA, ExtensionTypes.ID.CONTENT_DATA, CURRENT_VERSION); } /** diff --git a/packages/advanced-logic/src/extensions/payment-network/address-based.ts b/packages/advanced-logic/src/extensions/payment-network/address-based.ts index 6f546a621b..75a3131556 100644 --- a/packages/advanced-logic/src/extensions/payment-network/address-based.ts +++ b/packages/advanced-logic/src/extensions/payment-network/address-based.ts @@ -10,11 +10,10 @@ import DeclarativePaymentNetwork from './declarative'; export default abstract class AddressBasedPaymentNetwork< TCreationParameters extends ExtensionTypes.PnAddressBased.ICreationParameters = ExtensionTypes.PnAddressBased.ICreationParameters, > extends DeclarativePaymentNetwork { - public constructor( - public extensionId: ExtensionTypes.ID, - public currentVersion: string, - public supportedNetworks: string[], - public supportedCurrencyType: RequestLogicTypes.CURRENCY, + protected constructor( + extensionId: ExtensionTypes.ID, + currentVersion: string, + public readonly supportedCurrencyType: RequestLogicTypes.CURRENCY, ) { super(extensionId, currentVersion); this.actions = { @@ -29,7 +28,7 @@ export default abstract class AddressBasedPaymentNetwork< /** * Creates the extensionsData for address based payment networks * - * @param extensions extensions parameters to create + * @param creationParameters extensions parameters to create * * @returns IExtensionCreationAction the extensionsData to be stored in the request */ @@ -58,7 +57,7 @@ export default abstract class AddressBasedPaymentNetwork< /** * Creates the extensionsData to add a payment address * - * @param extensions extensions parameters to create + * @param addPaymentAddressParameters extensions parameters to create * * @returns IAction the extensionsData to be stored in the request */ @@ -82,7 +81,7 @@ export default abstract class AddressBasedPaymentNetwork< /** * Creates the extensionsData to add a refund address * - * @param extensions extensions parameters to create + * @param addRefundAddressParameters extensions parameters to create * * @returns IAction the extensionsData to be stored in the request */ @@ -140,23 +139,8 @@ export default abstract class AddressBasedPaymentNetwork< }; } - protected isValidAddress(address: string, networkName?: string): boolean { - if (networkName) { - return this.isValidAddressForNetwork(address, networkName); - } - return this.supportedNetworks.some((network) => - this.isValidAddressForNetwork(address, network), - ); - } - - protected isValidAddressForNetwork(address: string, network: string): boolean { + protected isValidAddress(address: string): boolean { switch (this.supportedCurrencyType) { - case RequestLogicTypes.CURRENCY.BTC: - return this.isValidAddressForSymbolAndNetwork( - address, - network === 'testnet' ? 'BTC-testnet' : 'BTC', - network, - ); case RequestLogicTypes.CURRENCY.ETH: case RequestLogicTypes.CURRENCY.ERC20: case RequestLogicTypes.CURRENCY.ERC777: @@ -182,12 +166,13 @@ export default abstract class AddressBasedPaymentNetwork< } /** - * Applies add payment address + * Applies the add payment address action * * @param extensionState previous state of the extension * @param extensionAction action to apply * @param requestState request state read-only * @param actionSigner identity of the signer + * @param timestamp * * @returns state of the extension updated */ @@ -200,7 +185,7 @@ export default abstract class AddressBasedPaymentNetwork< ): ExtensionTypes.IState { if ( extensionAction.parameters.paymentAddress && - !this.isValidAddress(extensionAction.parameters.paymentAddress, requestState.currency.network) + !this.isValidAddress(extensionAction.parameters.paymentAddress) ) { throw new InvalidPaymentAddressError(extensionAction.parameters.paymentAddress); } @@ -247,7 +232,7 @@ export default abstract class AddressBasedPaymentNetwork< ): ExtensionTypes.IState { if ( extensionAction.parameters.refundAddress && - !this.isValidAddress(extensionAction.parameters.refundAddress, requestState.currency.network) + !this.isValidAddress(extensionAction.parameters.refundAddress) ) { throw Error('refundAddress is not a valid address'); } @@ -290,9 +275,6 @@ export default abstract class AddressBasedPaymentNetwork< if (!network) { throw Error('network is required'); } - if (network && this.supportedNetworks && !this.supportedNetworks.includes(network)) { - throw new UnsupportedNetworkError(network, this.supportedNetworks); - } } } diff --git a/packages/advanced-logic/src/extensions/payment-network/any-to-erc20-proxy.ts b/packages/advanced-logic/src/extensions/payment-network/any-to-erc20-proxy.ts index 02038f59ec..b716eebeef 100644 --- a/packages/advanced-logic/src/extensions/payment-network/any-to-erc20-proxy.ts +++ b/packages/advanced-logic/src/extensions/payment-network/any-to-erc20-proxy.ts @@ -14,12 +14,7 @@ export default class AnyToErc20ProxyPaymentNetwork extends Erc20FeeProxyPaymentN extensionId: ExtensionTypes.ID = ExtensionTypes.ID.PAYMENT_NETWORK_ANY_TO_ERC20_PROXY, currentVersion: string = CURRENT_VERSION, ) { - super( - extensionId, - currentVersion, - conversionSupportedNetworks, - RequestLogicTypes.CURRENCY.ERC20, - ); + super(extensionId, currentVersion); } /** diff --git a/packages/advanced-logic/src/extensions/payment-network/any-to-eth-proxy.ts b/packages/advanced-logic/src/extensions/payment-network/any-to-eth-proxy.ts index 94c4dd0d20..95081e6fb0 100644 --- a/packages/advanced-logic/src/extensions/payment-network/any-to-eth-proxy.ts +++ b/packages/advanced-logic/src/extensions/payment-network/any-to-eth-proxy.ts @@ -1,20 +1,12 @@ -import { - conversionSupportedNetworks, - ICurrencyManager, - UnsupportedCurrencyError, -} from '@requestnetwork/currency'; +import { ICurrencyManager, UnsupportedCurrencyError } from '@requestnetwork/currency'; import { ExtensionTypes, RequestLogicTypes } from '@requestnetwork/types'; import EthereumFeeProxyPaymentNetwork from './ethereum/fee-proxy-contract'; const CURRENT_VERSION = '0.2.0'; export default class AnyToEthProxyPaymentNetwork extends EthereumFeeProxyPaymentNetwork { - public constructor( - private currencyManager: ICurrencyManager, - extensionId: ExtensionTypes.ID = ExtensionTypes.ID.PAYMENT_NETWORK_ANY_TO_ETH_PROXY, - currentVersion: string = CURRENT_VERSION, - ) { - super(extensionId, currentVersion, conversionSupportedNetworks); + public constructor(private currencyManager: ICurrencyManager) { + super(ExtensionTypes.ID.PAYMENT_NETWORK_ANY_TO_ETH_PROXY, CURRENT_VERSION); } /** @@ -95,10 +87,6 @@ export default class AnyToEthProxyPaymentNetwork extends EthereumFeeProxyPayment ); } - if (!conversionSupportedNetworks.includes(network)) { - throw new Error(`The network (${network}) is not supported for this payment network.`); - } - const currency = this.currencyManager.fromStorageCurrency(request.currency); if (!currency) { throw new UnsupportedCurrencyError(request.currency); diff --git a/packages/advanced-logic/src/extensions/payment-network/any-to-native.ts b/packages/advanced-logic/src/extensions/payment-network/any-to-native.ts index a06e0cdb5b..e6871c7c72 100644 --- a/packages/advanced-logic/src/extensions/payment-network/any-to-native.ts +++ b/packages/advanced-logic/src/extensions/payment-network/any-to-native.ts @@ -1,14 +1,14 @@ import { FeeReferenceBasedPaymentNetwork } from './fee-reference-based'; import { ExtensionTypes, RequestLogicTypes } from '@requestnetwork/types'; -import { InvalidPaymentAddressError } from './address-based'; +import { InvalidPaymentAddressError, UnsupportedNetworkError } from './address-based'; export default abstract class AnyToNativeTokenPaymentNetwork extends FeeReferenceBasedPaymentNetwork { - public constructor( + protected constructor( extensionId: ExtensionTypes.ID, currentVersion: string, - supportedNetworks: string[], + public readonly supportedNetworks: string[], ) { - super(extensionId, currentVersion, supportedNetworks, RequestLogicTypes.CURRENCY.ETH); + super(extensionId, currentVersion, RequestLogicTypes.CURRENCY.ETH); } public createCreationAction( @@ -43,6 +43,13 @@ export default abstract class AnyToNativeTokenPaymentNetwork extends FeeReferenc // eslint-disable-next-line @typescript-eslint/no-unused-vars protected abstract isValidAddress(_address: string, _networkName?: string): boolean; + + protected throwIfInvalidNetwork(network?: string): asserts network is string { + super.throwIfInvalidNetwork(network); + if (this.supportedNetworks && !this.supportedNetworks.includes(network)) { + throw new UnsupportedNetworkError(network, this.supportedNetworks); + } + } } export class InvalidMaxRateTimespanError extends Error { diff --git a/packages/advanced-logic/src/extensions/payment-network/any-to-near.ts b/packages/advanced-logic/src/extensions/payment-network/any-to-near.ts index 3915af0ac5..79d48817ff 100644 --- a/packages/advanced-logic/src/extensions/payment-network/any-to-near.ts +++ b/packages/advanced-logic/src/extensions/payment-network/any-to-near.ts @@ -7,12 +7,12 @@ const CURRENT_VERSION = '0.1.0'; const supportedNetworks = ['aurora', 'aurora-testnet']; export default class AnyToNearPaymentNetwork extends AnyToNativeTokenPaymentNetwork { - public constructor( - private currencyManager: ICurrencyManager, - extensionId: ExtensionTypes.ID = ExtensionTypes.ID.PAYMENT_NETWORK_ANY_TO_NATIVE_TOKEN, - currentVersion: string = CURRENT_VERSION, - ) { - super(extensionId, currentVersion, supportedNetworks); + public constructor(private currencyManager: ICurrencyManager) { + super( + ExtensionTypes.ID.PAYMENT_NETWORK_ANY_TO_NATIVE_TOKEN, + CURRENT_VERSION, + supportedNetworks, + ); } /** diff --git a/packages/advanced-logic/src/extensions/payment-network/bitcoin/mainnet-address-based.ts b/packages/advanced-logic/src/extensions/payment-network/bitcoin/mainnet-address-based.ts index 5c1aa7ea93..89f08245fe 100644 --- a/packages/advanced-logic/src/extensions/payment-network/bitcoin/mainnet-address-based.ts +++ b/packages/advanced-logic/src/extensions/payment-network/bitcoin/mainnet-address-based.ts @@ -12,10 +12,12 @@ const BITCOIN_NETWORK = 'mainnet'; */ export default class BitcoinAddressBasedPaymentNetwork extends AddressBasedPaymentNetwork { public constructor( - public extensionId: ExtensionTypes.ID = ExtensionTypes.ID.PAYMENT_NETWORK_BITCOIN_ADDRESS_BASED, - public currentVersion: string = CURRENT_VERSION, - public supportedNetworks: string[] = [BITCOIN_NETWORK], + extensionId: ExtensionTypes.ID = ExtensionTypes.ID.PAYMENT_NETWORK_BITCOIN_ADDRESS_BASED, ) { - super(extensionId, currentVersion, supportedNetworks, RequestLogicTypes.CURRENCY.BTC); + super(extensionId, CURRENT_VERSION, RequestLogicTypes.CURRENCY.BTC); + } + + protected isValidAddress(address: string): boolean { + return this.isValidAddressForSymbolAndNetwork(address, 'BTC', BITCOIN_NETWORK); } } diff --git a/packages/advanced-logic/src/extensions/payment-network/bitcoin/testnet-address-based.ts b/packages/advanced-logic/src/extensions/payment-network/bitcoin/testnet-address-based.ts index 1031289034..b38e7a6036 100644 --- a/packages/advanced-logic/src/extensions/payment-network/bitcoin/testnet-address-based.ts +++ b/packages/advanced-logic/src/extensions/payment-network/bitcoin/testnet-address-based.ts @@ -1,7 +1,6 @@ -import { ExtensionTypes } from '@requestnetwork/types'; import BitcoinAddressBasedPaymentNetwork from './mainnet-address-based'; +import { ExtensionTypes } from '@requestnetwork/types'; -const CURRENT_VERSION = '0.1.0'; const BITCOIN_NETWORK = 'testnet'; /** @@ -13,8 +12,10 @@ const BITCOIN_NETWORK = 'testnet'; */ export default class BitcoinTestnetAddressBasedPaymentNetwork extends BitcoinAddressBasedPaymentNetwork { public constructor() { - super(ExtensionTypes.ID.PAYMENT_NETWORK_TESTNET_BITCOIN_ADDRESS_BASED, CURRENT_VERSION, [ - BITCOIN_NETWORK, - ]); + super(ExtensionTypes.ID.PAYMENT_NETWORK_TESTNET_BITCOIN_ADDRESS_BASED); + } + + protected isValidAddress(address: string): boolean { + return this.isValidAddressForSymbolAndNetwork(address, 'BTC-testnet', BITCOIN_NETWORK); } } diff --git a/packages/advanced-logic/src/extensions/payment-network/declarative.ts b/packages/advanced-logic/src/extensions/payment-network/declarative.ts index 4dd16051f8..6c0738ef1a 100644 --- a/packages/advanced-logic/src/extensions/payment-network/declarative.ts +++ b/packages/advanced-logic/src/extensions/payment-network/declarative.ts @@ -11,8 +11,9 @@ export default class DeclarativePaymentNetwork< TCreationParameters extends ExtensionTypes.PnAnyDeclarative.ICreationParameters = ExtensionTypes.PnAnyDeclarative.ICreationParameters, > extends AbstractExtension { public constructor( - public extensionId: ExtensionTypes.ID = ExtensionTypes.ID.PAYMENT_NETWORK_ANY_DECLARATIVE, - public currentVersion: string = CURRENT_VERSION, + public readonly extensionId: ExtensionTypes.ID = ExtensionTypes.ID + .PAYMENT_NETWORK_ANY_DECLARATIVE, + public readonly currentVersion: string = CURRENT_VERSION, ) { super(ExtensionTypes.TYPE.PAYMENT_NETWORK, extensionId, currentVersion); this.actions = { diff --git a/packages/advanced-logic/src/extensions/payment-network/erc20/address-based.ts b/packages/advanced-logic/src/extensions/payment-network/erc20/address-based.ts index e987247e0b..5742651bff 100644 --- a/packages/advanced-logic/src/extensions/payment-network/erc20/address-based.ts +++ b/packages/advanced-logic/src/extensions/payment-network/erc20/address-based.ts @@ -3,8 +3,6 @@ import AddressBasedPaymentNetwork from '../address-based'; const CURRENT_VERSION = '0.1.0'; -const supportedNetworks = ['mainnet', 'rinkeby', 'private', 'goerli']; - /** * Implementation of the payment network to pay in ERC20 tokens based on an Ethereum address * With this extension one request can have two dedicated Ethereum addresses (one for payment and one for refund) @@ -16,7 +14,6 @@ export default class Erc20AddressBasedPaymentNetwork extends AddressBasedPayment super( ExtensionTypes.ID.PAYMENT_NETWORK_ERC20_ADDRESS_BASED, CURRENT_VERSION, - supportedNetworks, RequestLogicTypes.CURRENCY.ERC20, ); } diff --git a/packages/advanced-logic/src/extensions/payment-network/erc20/fee-proxy-contract.ts b/packages/advanced-logic/src/extensions/payment-network/erc20/fee-proxy-contract.ts index 8dae61feba..e0b4766dfd 100644 --- a/packages/advanced-logic/src/extensions/payment-network/erc20/fee-proxy-contract.ts +++ b/packages/advanced-logic/src/extensions/payment-network/erc20/fee-proxy-contract.ts @@ -12,26 +12,7 @@ export default class Erc20FeeProxyPaymentNetwork< public constructor( extensionId: ExtensionTypes.ID = ExtensionTypes.ID.PAYMENT_NETWORK_ERC20_FEE_PROXY_CONTRACT, currentVersion: string = CURRENT_VERSION, - public supportedNetworks: string[] = [ - 'mainnet', - 'rinkeby', - 'goerli', - 'private', - 'matic', - 'mumbai', - 'celo', - 'alfajores', - 'fuse', - 'bsctest', - 'bsc', - 'xdai', - 'fantom', - 'arbitrum-rinkeby', - 'arbitrum-one', - 'avalanche', - ], - public supportedCurrencyType: RequestLogicTypes.CURRENCY = RequestLogicTypes.CURRENCY.ERC20, ) { - super(extensionId, currentVersion, supportedNetworks, supportedCurrencyType); + super(extensionId, currentVersion, RequestLogicTypes.CURRENCY.ERC20); } } diff --git a/packages/advanced-logic/src/extensions/payment-network/erc20/proxy-contract.ts b/packages/advanced-logic/src/extensions/payment-network/erc20/proxy-contract.ts index 6841a39fea..7b94d55b0f 100644 --- a/packages/advanced-logic/src/extensions/payment-network/erc20/proxy-contract.ts +++ b/packages/advanced-logic/src/extensions/payment-network/erc20/proxy-contract.ts @@ -9,12 +9,11 @@ const CURRENT_VERSION = '0.1.0'; export default class Erc20ProxyPaymentNetwork< TCreationParameters extends ExtensionTypes.PnReferenceBased.ICreationParameters = ExtensionTypes.PnReferenceBased.ICreationParameters, > extends ReferenceBasedPaymentNetwork { - public constructor( - public extensionId: ExtensionTypes.ID = ExtensionTypes.ID.PAYMENT_NETWORK_ERC20_PROXY_CONTRACT, - public currentVersion: string = CURRENT_VERSION, - public supportedNetworks: string[] = ['mainnet', 'rinkeby', 'goerli', 'private'], - public supportedCurrencyType: RequestLogicTypes.CURRENCY = RequestLogicTypes.CURRENCY.ERC20, - ) { - super(extensionId, currentVersion, supportedNetworks, supportedCurrencyType); + public constructor() { + super( + ExtensionTypes.ID.PAYMENT_NETWORK_ERC20_PROXY_CONTRACT, + CURRENT_VERSION, + RequestLogicTypes.CURRENCY.ERC20, + ); } } diff --git a/packages/advanced-logic/src/extensions/payment-network/erc777/stream.ts b/packages/advanced-logic/src/extensions/payment-network/erc777/stream.ts index 6edde7451f..7656554a69 100644 --- a/packages/advanced-logic/src/extensions/payment-network/erc777/stream.ts +++ b/packages/advanced-logic/src/extensions/payment-network/erc777/stream.ts @@ -9,20 +9,12 @@ const CURRENT_VERSION = '0.1.0'; export default class Erc777StreamPaymentNetwork< TCreationParameters extends ExtensionTypes.PnStreamReferenceBased.ICreationParameters = ExtensionTypes.PnStreamReferenceBased.ICreationParameters, > extends ReferenceBasedPaymentNetwork { - public constructor( - extensionId: ExtensionTypes.ID = ExtensionTypes.ID.PAYMENT_NETWORK_ERC777_STREAM, - currentVersion: string = CURRENT_VERSION, - public supportedNetworks: string[] = [ - 'matic', - 'xdai', - 'mumbai', - 'rinkeby', - 'goerli', - 'arbitrum-rinkeby', - ], - public supportedCurrencyType: RequestLogicTypes.CURRENCY = RequestLogicTypes.CURRENCY.ERC777, - ) { - super(extensionId, currentVersion, supportedNetworks, supportedCurrencyType); + public constructor() { + super( + ExtensionTypes.ID.PAYMENT_NETWORK_ERC777_STREAM, + CURRENT_VERSION, + RequestLogicTypes.CURRENCY.ERC777, + ); } /** diff --git a/packages/advanced-logic/src/extensions/payment-network/ethereum/fee-proxy-contract.ts b/packages/advanced-logic/src/extensions/payment-network/ethereum/fee-proxy-contract.ts index fa5cab7754..5e5e0a6c18 100644 --- a/packages/advanced-logic/src/extensions/payment-network/ethereum/fee-proxy-contract.ts +++ b/packages/advanced-logic/src/extensions/payment-network/ethereum/fee-proxy-contract.ts @@ -12,8 +12,7 @@ export default class EthereumFeeProxyPaymentNetwork< public constructor( extensionId: ExtensionTypes.ID = ExtensionTypes.ID.PAYMENT_NETWORK_ETH_FEE_PROXY_CONTRACT, currentVersion: string = CURRENT_VERSION, - public supportedNetworks: string[] = ['mainnet', 'rinkeby', 'goerli', 'private'], ) { - super(extensionId, currentVersion, supportedNetworks, RequestLogicTypes.CURRENCY.ETH); + super(extensionId, currentVersion, RequestLogicTypes.CURRENCY.ETH); } } diff --git a/packages/advanced-logic/src/extensions/payment-network/ethereum/input-data.ts b/packages/advanced-logic/src/extensions/payment-network/ethereum/input-data.ts index 3921a73853..927169fa3a 100644 --- a/packages/advanced-logic/src/extensions/payment-network/ethereum/input-data.ts +++ b/packages/advanced-logic/src/extensions/payment-network/ethereum/input-data.ts @@ -2,22 +2,6 @@ import { ExtensionTypes, RequestLogicTypes } from '@requestnetwork/types'; import ReferenceBasedPaymentNetwork from '../reference-based'; const CURRENT_VERSION = '0.3.0'; -const supportedNetworks = [ - 'mainnet', - 'rinkeby', - 'goerli', - 'xdai', - 'sokol', - 'fuse', - 'matic', - 'celo', - 'fantom', - 'bsctest', - 'bsc', - 'arbitrum-rinkeby', - 'arbitrum-one', - 'avalanche', -]; /** * Implementation of the payment network to pay in native token @@ -28,6 +12,6 @@ export default class EthInputPaymentNetwork extends ReferenceBasedPaymentNetwork extensionId: ExtensionTypes.ID = ExtensionTypes.ID.PAYMENT_NETWORK_ETH_INPUT_DATA, currentVersion: string = CURRENT_VERSION, ) { - super(extensionId, currentVersion, supportedNetworks, RequestLogicTypes.CURRENCY.ETH); + super(extensionId, currentVersion, RequestLogicTypes.CURRENCY.ETH); } } diff --git a/packages/advanced-logic/src/extensions/payment-network/fee-reference-based.ts b/packages/advanced-logic/src/extensions/payment-network/fee-reference-based.ts index e117464f1f..5b8b973567 100644 --- a/packages/advanced-logic/src/extensions/payment-network/fee-reference-based.ts +++ b/packages/advanced-logic/src/extensions/payment-network/fee-reference-based.ts @@ -9,13 +9,12 @@ import Utils from '@requestnetwork/utils'; export abstract class FeeReferenceBasedPaymentNetwork< TCreationParameters extends ExtensionTypes.PnFeeReferenceBased.ICreationParameters = ExtensionTypes.PnFeeReferenceBased.ICreationParameters, > extends ReferenceBasedPaymentNetwork { - public constructor( - public extensionId: ExtensionTypes.ID, - public currentVersion: string, - public supportedNetworks: string[], - public supportedCurrencyType: RequestLogicTypes.CURRENCY, + protected constructor( + extensionId: ExtensionTypes.ID, + currentVersion: string, + supportedCurrencyType: RequestLogicTypes.CURRENCY, ) { - super(extensionId, currentVersion, supportedNetworks, supportedCurrencyType); + super(extensionId, currentVersion, supportedCurrencyType); this.actions = { ...this.actions, [ExtensionTypes.PnFeeReferenceBased.ACTION.ADD_FEE]: this.applyAddFee.bind(this), diff --git a/packages/advanced-logic/src/extensions/payment-network/native-token.ts b/packages/advanced-logic/src/extensions/payment-network/native-token.ts index ca77421436..7af55c61fd 100644 --- a/packages/advanced-logic/src/extensions/payment-network/native-token.ts +++ b/packages/advanced-logic/src/extensions/payment-network/native-token.ts @@ -1,5 +1,5 @@ import { ExtensionTypes, RequestLogicTypes } from '@requestnetwork/types'; -import { InvalidPaymentAddressError } from './address-based'; +import { InvalidPaymentAddressError, UnsupportedNetworkError } from './address-based'; import ReferenceBasedPaymentNetwork from './reference-based'; @@ -10,9 +10,9 @@ export default abstract class NativeTokenPaymentNetwork extends ReferenceBasedPa public constructor( extensionId: ExtensionTypes.ID, currentVersion: string, - supportedNetworks: string[], + public readonly supportedNetworks: string[], ) { - super(extensionId, currentVersion, supportedNetworks, RequestLogicTypes.CURRENCY.ETH); + super(extensionId, currentVersion, RequestLogicTypes.CURRENCY.ETH); } public createCreationAction( @@ -45,4 +45,11 @@ export default abstract class NativeTokenPaymentNetwork extends ReferenceBasedPa `Default implementation of isValidAddress() does not support native tokens. Please override this method.`, ); } + + protected throwIfInvalidNetwork(network?: string): asserts network is string { + super.throwIfInvalidNetwork(network); + if (this.supportedNetworks && !this.supportedNetworks.includes(network)) { + throw new UnsupportedNetworkError(network, this.supportedNetworks); + } + } } diff --git a/packages/advanced-logic/src/extensions/payment-network/near-native.ts b/packages/advanced-logic/src/extensions/payment-network/near-native.ts index fabc5f4755..3625eb4b80 100644 --- a/packages/advanced-logic/src/extensions/payment-network/near-native.ts +++ b/packages/advanced-logic/src/extensions/payment-network/near-native.ts @@ -9,11 +9,8 @@ const supportedNetworks = ['aurora', 'aurora-testnet']; * Implementation of the payment network to pay in Near based on input data. */ export default class NearNativePaymentNetwork extends NativeTokenPaymentNetwork { - public constructor( - extensionId: ExtensionTypes.ID = ExtensionTypes.ID.PAYMENT_NETWORK_NATIVE_TOKEN, - currentVersion: string = CURRENT_VERSION, - ) { - super(extensionId, currentVersion, supportedNetworks); + public constructor() { + super(ExtensionTypes.ID.PAYMENT_NETWORK_NATIVE_TOKEN, CURRENT_VERSION, supportedNetworks); } /** diff --git a/packages/advanced-logic/src/extensions/payment-network/reference-based.ts b/packages/advanced-logic/src/extensions/payment-network/reference-based.ts index 05fee1f982..6158f0d5a2 100644 --- a/packages/advanced-logic/src/extensions/payment-network/reference-based.ts +++ b/packages/advanced-logic/src/extensions/payment-network/reference-based.ts @@ -1,4 +1,4 @@ -import { ExtensionTypes, RequestLogicTypes } from '@requestnetwork/types'; +import { ExtensionTypes } from '@requestnetwork/types'; import AddressBasedPaymentNetwork from './address-based'; // Regex for "at least 16 hexadecimal numbers". Used to validate the salt @@ -11,15 +11,6 @@ const eightHexRegex = /[0-9a-f]{16,}/; export default abstract class ReferenceBasedPaymentNetwork< TCreationParameters extends ExtensionTypes.PnReferenceBased.ICreationParameters = ExtensionTypes.PnReferenceBased.ICreationParameters, > extends AddressBasedPaymentNetwork { - public constructor( - public extensionId: ExtensionTypes.ID, - public currentVersion: string, - public supportedNetworks: string[], - public supportedCurrencyType: RequestLogicTypes.CURRENCY, - ) { - super(extensionId, currentVersion, supportedNetworks, supportedCurrencyType); - } - /** * Creates the extensionsData to create the payment detection extension * diff --git a/packages/advanced-logic/test/extensions/payment-network/address-based.test.ts b/packages/advanced-logic/test/extensions/payment-network/address-based.test.ts index a4893f5e5a..0815e6eae6 100644 --- a/packages/advanced-logic/test/extensions/payment-network/address-based.test.ts +++ b/packages/advanced-logic/test/extensions/payment-network/address-based.test.ts @@ -5,6 +5,13 @@ import AddressBasedPaymentNetwork from '../../../src/extensions/payment-network/ describe('extensions/payment-network/address-based', () => { it('address validation should throw when using unsupported currency type', () => { class TestAddressBasedPaymentNetwork extends AddressBasedPaymentNetwork { + public constructor( + extensionId: ExtensionTypes.ID, + currentVersion: string, + supportedCurrencyType: RequestLogicTypes.CURRENCY, + ) { + super(extensionId, currentVersion, supportedCurrencyType); + } public testIsValidAddress() { this.isValidAddress('test', 'test'); } @@ -13,7 +20,6 @@ describe('extensions/payment-network/address-based', () => { const testAddressBasedPaymentNetwork = new TestAddressBasedPaymentNetwork( ExtensionTypes.ID.PAYMENT_NETWORK_ERC20_ADDRESS_BASED, 'test', - [], RequestLogicTypes.CURRENCY.ISO4217, ); testAddressBasedPaymentNetwork.testIsValidAddress(); @@ -23,6 +29,13 @@ describe('extensions/payment-network/address-based', () => { }); it('address validation should throw when using unsupported currency', () => { class TestAddressBasedPaymentNetwork extends AddressBasedPaymentNetwork { + public constructor( + extensionId: ExtensionTypes.ID, + currentVersion: string, + supportedCurrencyType: RequestLogicTypes.CURRENCY, + ) { + super(extensionId, currentVersion, supportedCurrencyType); + } public testIsValidAddress() { this.isValidAddressForSymbolAndNetwork('test', 'test', 'test'); } @@ -31,7 +44,6 @@ describe('extensions/payment-network/address-based', () => { const testAddressBasedPaymentNetwork = new TestAddressBasedPaymentNetwork( ExtensionTypes.ID.PAYMENT_NETWORK_ERC20_ADDRESS_BASED, 'test', - [], RequestLogicTypes.CURRENCY.ERC20, ); testAddressBasedPaymentNetwork.testIsValidAddress(); diff --git a/packages/payment-detection/src/erc20/fee-proxy-contract.ts b/packages/payment-detection/src/erc20/fee-proxy-contract.ts index f7353aef90..8b9e47a4bb 100644 --- a/packages/payment-detection/src/erc20/fee-proxy-contract.ts +++ b/packages/payment-detection/src/erc20/fee-proxy-contract.ts @@ -28,9 +28,11 @@ export abstract class ERC20FeeProxyPaymentDetectorBase< TPaymentEventParameters extends PaymentTypes.IERC20FeePaymentEventParameters, > extends FeeReferenceBasedDetector { /** + * @param paymentNetworkId * @param extension The advanced logic payment network extensions + * @param _currencyManager */ - public constructor( + protected constructor( paymentNetworkId: PaymentTypes.PAYMENT_NETWORK_ID, extension: TExtension, protected _currencyManager: ICurrencyManager, diff --git a/packages/payment-detection/src/payment-detector-base.ts b/packages/payment-detection/src/payment-detector-base.ts index 7e004b303f..fa9c04985e 100644 --- a/packages/payment-detection/src/payment-detector-base.ts +++ b/packages/payment-detection/src/payment-detector-base.ts @@ -11,9 +11,9 @@ export abstract class PaymentDetectorBase< TPaymentEventParameters, > implements PaymentTypes.IPaymentNetwork { - public constructor( - readonly paymentNetworkId: PaymentTypes.PAYMENT_NETWORK_ID, - protected readonly extension: TExtension, + protected constructor( + public readonly paymentNetworkId: PaymentTypes.PAYMENT_NETWORK_ID, + public readonly extension: TExtension, ) {} abstract createExtensionsDataForCreation(paymentNetworkCreationParameters: any): Promise; abstract createExtensionsDataForAddRefundInformation(parameters: any): any; diff --git a/packages/payment-detection/src/payment-network-factory.ts b/packages/payment-detection/src/payment-network-factory.ts index f75473c0ff..efee3e4986 100644 --- a/packages/payment-detection/src/payment-network-factory.ts +++ b/packages/payment-detection/src/payment-network-factory.ts @@ -1,18 +1,21 @@ import { AdvancedLogicTypes, PaymentTypes, RequestLogicTypes } from '@requestnetwork/types'; import { ICurrencyManager } from '@requestnetwork/currency'; -import { IPaymentNetworkModuleByType, ISupportedPaymentNetworkByCurrency } from './types'; -import { BtcMainnetAddressBasedDetector } from './btc/mainnet-address-based'; -import { BtcTestnetAddressBasedDetector } from './btc/testnet-address-based'; +import { + ContractBasedDetector, + IPaymentNetworkModuleByType, + ISupportedPaymentNetworkByCurrency, +} from './types'; +import { BtcMainnetAddressBasedDetector, BtcTestnetAddressBasedDetector } from './btc'; import { DeclarativePaymentDetector } from './declarative'; -import { ERC20AddressBasedPaymentDetector } from './erc20/address-based'; -import { ERC20FeeProxyPaymentDetector } from './erc20/fee-proxy-contract'; -import { ERC20ProxyPaymentDetector } from './erc20/proxy-contract'; +import { + ERC20AddressBasedPaymentDetector, + ERC20FeeProxyPaymentDetector, + ERC20ProxyPaymentDetector, +} from './erc20'; import { SuperFluidPaymentDetector } from './erc777/superfluid-detector'; -import { EthInputDataPaymentDetector } from './eth/input-data'; -import { EthFeeProxyPaymentDetector } from './eth/fee-proxy-detector'; -import { AnyToERC20PaymentDetector } from './any/any-to-erc20-proxy'; +import { EthFeeProxyPaymentDetector, EthInputDataPaymentDetector } from './eth'; +import { AnyToERC20PaymentDetector, AnyToEthFeeProxyPaymentDetector } from './any'; import { NearConversionNativeTokenPaymentDetector, NearNativeTokenPaymentDetector } from './near'; -import { AnyToEthFeeProxyPaymentDetector } from './any/any-to-eth-proxy'; import { getPaymentNetworkExtension } from './utils'; const PN_ID = PaymentTypes.PAYMENT_NETWORK_ID; @@ -83,8 +86,9 @@ export class PaymentNetworkFactory { * Creates a payment network according to payment network creation parameters * It throws if the payment network given is not supported by this library * - * @param currency the currency of the request - * @param paymentNetworkCreationParameters creation parameters of payment network + * @param paymentNetworkId the ID of the payment network to instantiate + * @param currencyType the currency type of the request + * @param currencyNetwork the network of the currency of the payment to detect * @returns the module to handle the payment network */ public createPaymentNetwork( @@ -92,8 +96,9 @@ export class PaymentNetworkFactory { currencyType: RequestLogicTypes.CURRENCY, currencyNetwork?: string, ): PaymentTypes.IPaymentNetwork { + const network = currencyNetwork || 'mainnet'; const currencyPaymentMap = - supportedPaymentNetwork[currencyType]?.[currencyNetwork || 'mainnet'] || + supportedPaymentNetwork[currencyType]?.[network] || supportedPaymentNetwork[currencyType]?.['*'] || {}; const paymentNetworkMap = { @@ -101,18 +106,29 @@ export class PaymentNetworkFactory { ...anyCurrencyPaymentNetwork, }; - if (!paymentNetworkMap[paymentNetworkId]) { + const detectorClass = paymentNetworkMap[paymentNetworkId]; + + if (!detectorClass) { throw new Error( - `the payment network id: ${paymentNetworkId} is not supported for the currency: ${currencyType} on network ${ - currencyNetwork || 'mainnet' - }`, + `the payment network id: ${paymentNetworkId} is not supported for the currency: ${currencyType} on network ${network}`, ); } - return new paymentNetworkMap[paymentNetworkId]({ + + const detector = new detectorClass({ advancedLogic: this.advancedLogic, currencyManager: this.currencyManager, ...this.options, }); + + if ('getDeploymentInformation' in detectorClass) { + // this throws if the contract isn't deployed but is mandatory for payment detection + (detectorClass as ContractBasedDetector).getDeploymentInformation( + network, + detector.extension.currentVersion, + ); + } + + return detector; } /** diff --git a/packages/payment-detection/src/types.ts b/packages/payment-detection/src/types.ts index 8632364f50..e489b6eba2 100644 --- a/packages/payment-detection/src/types.ts +++ b/packages/payment-detection/src/types.ts @@ -1,4 +1,10 @@ -import { PaymentTypes } from '@requestnetwork/types'; +import { ExtensionTypes, PaymentTypes } from '@requestnetwork/types'; +import { PaymentDetectorBase } from './payment-detector-base'; +import { GetDeploymentInformation } from './utils'; + +export interface ContractBasedDetector { + getDeploymentInformation: GetDeploymentInformation; +} /** Generic info retriever interface */ export interface IPaymentRetriever< @@ -24,9 +30,12 @@ export interface IEventRetriever< } /** Object interface to list the payment network module by id */ -export interface IPaymentNetworkModuleByType { - [type: string]: any; -} +export type IPaymentNetworkModuleByType = Partial< + Record< + PaymentTypes.PAYMENT_NETWORK_ID, + new (...pnParams: any) => PaymentDetectorBase + > +>; /** Object interface to list the payment network module by network */ export interface ISupportedPaymentNetworkByNetwork { diff --git a/packages/types/src/extension-types.ts b/packages/types/src/extension-types.ts index a233e88fd9..d463e13df0 100644 --- a/packages/types/src/extension-types.ts +++ b/packages/types/src/extension-types.ts @@ -24,6 +24,9 @@ export { /** Extension interface is extended by the extensions implementation */ export interface IExtension { + extensionType: TYPE; + extensionId: ID; + currentVersion: string; applyActionToExtension: ( extensionsState: RequestLogic.IExtensionStates, extensionAction: IAction, diff --git a/packages/types/src/payment-types.ts b/packages/types/src/payment-types.ts index 3e87eead05..b93e888566 100644 --- a/packages/types/src/payment-types.ts +++ b/packages/types/src/payment-types.ts @@ -22,6 +22,7 @@ export enum PAYMENT_NETWORK_ID { /** Interface for payment network extensions state and interpretation */ export interface IPaymentNetwork { paymentNetworkId: PAYMENT_NETWORK_ID; + extension: Extension.IExtension; createExtensionsDataForCreation: (paymentNetworkCreationParameters: any) => Promise; createExtensionsDataForAddRefundInformation: (parameters: any) => any; createExtensionsDataForAddPaymentInformation: (parameters: any) => any; From 9e7a5333238e6f73f13f490543aea38d47884be6 Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Tue, 11 Oct 2022 22:40:19 +0200 Subject: [PATCH 03/25] WIP --- .../test/extensions/payment-network/address-based.test.ts | 2 +- packages/payment-detection/src/payment-network-factory.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/advanced-logic/test/extensions/payment-network/address-based.test.ts b/packages/advanced-logic/test/extensions/payment-network/address-based.test.ts index 0815e6eae6..0aa0b6e993 100644 --- a/packages/advanced-logic/test/extensions/payment-network/address-based.test.ts +++ b/packages/advanced-logic/test/extensions/payment-network/address-based.test.ts @@ -13,7 +13,7 @@ describe('extensions/payment-network/address-based', () => { super(extensionId, currentVersion, supportedCurrencyType); } public testIsValidAddress() { - this.isValidAddress('test', 'test'); + this.isValidAddress('test'); } } expect(() => { diff --git a/packages/payment-detection/src/payment-network-factory.ts b/packages/payment-detection/src/payment-network-factory.ts index efee3e4986..00dc84e50b 100644 --- a/packages/payment-detection/src/payment-network-factory.ts +++ b/packages/payment-detection/src/payment-network-factory.ts @@ -121,7 +121,7 @@ export class PaymentNetworkFactory { }); if ('getDeploymentInformation' in detectorClass) { - // this throws if the contract isn't deployed but is mandatory for payment detection + // this throws when the contract isn't deployed and was mandatory for payment detection (detectorClass as ContractBasedDetector).getDeploymentInformation( network, detector.extension.currentVersion, From 039637101d47704b2114714e851326da482b2103 Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Tue, 11 Oct 2022 22:44:10 +0200 Subject: [PATCH 04/25] WIP --- packages/payment-detection/src/payment-detector-base.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/payment-detection/src/payment-detector-base.ts b/packages/payment-detection/src/payment-detector-base.ts index fa9c04985e..73c0066b67 100644 --- a/packages/payment-detection/src/payment-detector-base.ts +++ b/packages/payment-detection/src/payment-detector-base.ts @@ -15,6 +15,7 @@ export abstract class PaymentDetectorBase< public readonly paymentNetworkId: PaymentTypes.PAYMENT_NETWORK_ID, public readonly extension: TExtension, ) {} + abstract createExtensionsDataForCreation(paymentNetworkCreationParameters: any): Promise; abstract createExtensionsDataForAddRefundInformation(parameters: any): any; abstract createExtensionsDataForAddPaymentInformation(parameters: any): any; From 40aa6baa759fedd9bb61318e25554878524bdee5 Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Wed, 12 Oct 2022 00:01:49 +0200 Subject: [PATCH 05/25] WIP --- packages/advanced-logic/src/advanced-logic.ts | 6 +- .../payment-network/any-to-near-testnet.ts | 20 +++++++ .../extensions/payment-network/any-to-near.ts | 55 +++++-------------- .../extensions/payment-network/near-native.ts | 23 +------- .../payment-network/near-testnet-native.ts | 20 +++++++ .../payment-network/native-token.test.ts | 20 ++----- .../src/any-to-any-detector.ts | 15 ++--- .../src/any-to-native-detector.ts | 33 +++++++++++ .../src/native-token-detector.ts | 30 ++++++++++ .../src/near/near-conversion-detector.ts | 34 ++---------- .../src/near/near-detector.ts | 25 ++------- .../src/payment-network-factory.ts | 3 +- 12 files changed, 144 insertions(+), 140 deletions(-) create mode 100644 packages/advanced-logic/src/extensions/payment-network/any-to-near-testnet.ts create mode 100644 packages/advanced-logic/src/extensions/payment-network/near-testnet-native.ts create mode 100644 packages/payment-detection/src/any-to-native-detector.ts create mode 100644 packages/payment-detection/src/native-token-detector.ts diff --git a/packages/advanced-logic/src/advanced-logic.ts b/packages/advanced-logic/src/advanced-logic.ts index 0e111a2a81..55f67cfe20 100644 --- a/packages/advanced-logic/src/advanced-logic.ts +++ b/packages/advanced-logic/src/advanced-logic.ts @@ -17,10 +17,12 @@ import Erc777Stream from './extensions/payment-network/erc777/stream'; import FeeProxyContractEth from './extensions/payment-network/ethereum/fee-proxy-contract'; import EthereumInputData from './extensions/payment-network/ethereum/input-data'; import NearNative from './extensions/payment-network/near-native'; +import NearTestnetNative from './extensions/payment-network/near-testnet-native'; import AnyToErc20Proxy from './extensions/payment-network/any-to-erc20-proxy'; import AnyToEthProxy from './extensions/payment-network/any-to-eth-proxy'; import NativeTokenPaymentNetwork from './extensions/payment-network/native-token'; import AnyToNear from './extensions/payment-network/any-to-near'; +import AnyToNearTestnet from './extensions/payment-network/any-to-near-testnet'; import AnyToNativeTokenPaymentNetwork from './extensions/payment-network/any-to-native'; /** @@ -63,8 +65,8 @@ export default class AdvancedLogic implements AdvancedLogicTypes.IAdvancedLogic erc777Stream: new Erc777Stream(), feeProxyContractEth: new FeeProxyContractEth(), anyToEthProxy: new AnyToEthProxy(currencyManager), - nativeToken: [new NearNative()], - anyToNativeToken: [new AnyToNear(currencyManager)], + nativeToken: [new NearNative(), new NearTestnetNative()], + anyToNativeToken: [new AnyToNear(currencyManager), new AnyToNearTestnet(currencyManager)], }; } diff --git a/packages/advanced-logic/src/extensions/payment-network/any-to-near-testnet.ts b/packages/advanced-logic/src/extensions/payment-network/any-to-near-testnet.ts new file mode 100644 index 0000000000..2bfa7f607c --- /dev/null +++ b/packages/advanced-logic/src/extensions/payment-network/any-to-near-testnet.ts @@ -0,0 +1,20 @@ +import { ICurrencyManager } from '@requestnetwork/currency'; +import AnyToNearPaymentNetwork from './any-to-near'; + +const NETWORK = 'aurora-testnet'; + +export default class AnyToNearTestnetPaymentNetwork extends AnyToNearPaymentNetwork { + public constructor(currencyManager: ICurrencyManager) { + super(currencyManager, [NETWORK]); + } + + /** + * Check if a near testnet address is valid + * + * @param {string} address address to check + * @returns {boolean} true if address is valid + */ + protected isValidAddress(address: string): boolean { + return this.isValidAddressForSymbolAndNetwork(address, 'NEAR-testnet', NETWORK); + } +} diff --git a/packages/advanced-logic/src/extensions/payment-network/any-to-near.ts b/packages/advanced-logic/src/extensions/payment-network/any-to-near.ts index 79d48817ff..8ff2b3d299 100644 --- a/packages/advanced-logic/src/extensions/payment-network/any-to-near.ts +++ b/packages/advanced-logic/src/extensions/payment-network/any-to-near.ts @@ -1,13 +1,15 @@ import { ICurrencyManager, UnsupportedCurrencyError } from '@requestnetwork/currency'; import { ExtensionTypes, IdentityTypes, RequestLogicTypes } from '@requestnetwork/types'; -import { UnsupportedNetworkError } from './address-based'; import AnyToNativeTokenPaymentNetwork from './any-to-native'; const CURRENT_VERSION = '0.1.0'; -const supportedNetworks = ['aurora', 'aurora-testnet']; +const NETWORK = 'aurora'; export default class AnyToNearPaymentNetwork extends AnyToNativeTokenPaymentNetwork { - public constructor(private currencyManager: ICurrencyManager) { + public constructor( + private currencyManager: ICurrencyManager, + supportedNetworks: string[] = [NETWORK], + ) { super( ExtensionTypes.ID.PAYMENT_NETWORK_ANY_TO_NATIVE_TOKEN, CURRENT_VERSION, @@ -21,25 +23,8 @@ export default class AnyToNearPaymentNetwork extends AnyToNativeTokenPaymentNetw * @param {string} address address to check * @returns {boolean} true if address is valid */ - protected isValidAddress(address: string, networkName?: string): boolean { - switch (networkName) { - case 'aurora': - return this.isValidMainnetAddress(address); - case 'aurora-testnet': - return this.isValidTestnetAddress(address); - case undefined: - return this.isValidMainnetAddress(address) || this.isValidTestnetAddress(address); - default: - throw new UnsupportedNetworkError(networkName, this.supportedNetworks); - } - } - - private isValidMainnetAddress(address: string): boolean { - return this.isValidAddressForSymbolAndNetwork(address, 'NEAR', 'aurora'); - } - - private isValidTestnetAddress(address: string): boolean { - return this.isValidAddressForSymbolAndNetwork(address, 'NEAR-testnet', 'aurora-testnet'); + protected isValidAddress(address: string): boolean { + return this.isValidAddressForSymbolAndNetwork(address, 'NEAR', NETWORK); } /** @@ -60,10 +45,7 @@ export default class AnyToNearPaymentNetwork extends AnyToNativeTokenPaymentNetw if ( extensionAction.parameters.paymentAddress && - !this.isValidAddress( - extensionAction.parameters.paymentAddress, - extensionAction.parameters.network, - ) + !this.isValidAddress(extensionAction.parameters.paymentAddress) ) { throw Error( `paymentAddress ${extensionAction.parameters.paymentAddress} is not a valid address`, @@ -72,20 +54,14 @@ export default class AnyToNearPaymentNetwork extends AnyToNativeTokenPaymentNetw if ( extensionAction.parameters.feeAddress && - !this.isValidAddress( - extensionAction.parameters.feeAddress, - extensionAction.parameters.network, - ) + !this.isValidAddress(extensionAction.parameters.feeAddress) ) { throw Error(`feeAddress ${extensionAction.parameters.feeAddress} is not a valid address`); } if ( extensionAction.parameters.refundAddress && - !this.isValidAddress( - extensionAction.parameters.refundAddress, - extensionAction.parameters.network, - ) + !this.isValidAddress(extensionAction.parameters.refundAddress) ) { throw Error( `refundAddress ${extensionAction.parameters.refundAddress} is not a valid address`, @@ -126,8 +102,9 @@ export default class AnyToNearPaymentNetwork extends AnyToNativeTokenPaymentNetw * @param extensionAction action to apply * @param requestState request state read-only * @param actionSigner identity of the signer + * @param timestamp * - * @returns state of the extension updated + * @returns state of the extension updated */ protected applyAddPaymentAddress( extensionState: ExtensionTypes.IState, @@ -137,7 +114,7 @@ export default class AnyToNearPaymentNetwork extends AnyToNativeTokenPaymentNetw timestamp: number, ): ExtensionTypes.IState { const paymentAddress = extensionAction.parameters.paymentAddress; - if (!this.isValidAddress(paymentAddress, extensionState.values.network)) { + if (!this.isValidAddress(paymentAddress)) { throw new Error(`paymentAddress '${paymentAddress}' is not a valid address`); } return super.applyAddPaymentAddress( @@ -156,11 +133,9 @@ export default class AnyToNearPaymentNetwork extends AnyToNativeTokenPaymentNetw actionSigner: IdentityTypes.IIdentity, timestamp: number, ): ExtensionTypes.IState { - const network = - requestState.extensions[ExtensionTypes.ID.PAYMENT_NETWORK_ANY_TO_NATIVE_TOKEN].values.network; if ( extensionAction.parameters.feeAddress && - !this.isValidAddress(extensionAction.parameters.feeAddress, network) + !this.isValidAddress(extensionAction.parameters.feeAddress) ) { throw Error('feeAddress is not a valid address'); } @@ -192,7 +167,7 @@ export default class AnyToNearPaymentNetwork extends AnyToNativeTokenPaymentNetw ); } - if (!supportedNetworks.includes(network)) { + if (!this.supportedNetworks.includes(network)) { throw new Error(`The network (${network}) is not supported for this payment network.`); } diff --git a/packages/advanced-logic/src/extensions/payment-network/near-native.ts b/packages/advanced-logic/src/extensions/payment-network/near-native.ts index 3625eb4b80..9a71c7138d 100644 --- a/packages/advanced-logic/src/extensions/payment-network/near-native.ts +++ b/packages/advanced-logic/src/extensions/payment-network/near-native.ts @@ -1,15 +1,13 @@ import { ExtensionTypes } from '@requestnetwork/types'; -import { UnsupportedNetworkError } from './address-based'; import NativeTokenPaymentNetwork from './native-token'; const CURRENT_VERSION = '0.2.0'; -const supportedNetworks = ['aurora', 'aurora-testnet']; /** * Implementation of the payment network to pay in Near based on input data. */ export default class NearNativePaymentNetwork extends NativeTokenPaymentNetwork { - public constructor() { + public constructor(supportedNetworks: string[] = ['aurora']) { super(ExtensionTypes.ID.PAYMENT_NETWORK_NATIVE_TOKEN, CURRENT_VERSION, supportedNetworks); } @@ -19,24 +17,7 @@ export default class NearNativePaymentNetwork extends NativeTokenPaymentNetwork * @param {string} address address to check * @returns {boolean} true if address is valid */ - protected isValidAddress(address: string, networkName?: string): boolean { - switch (networkName) { - case 'aurora': - return this.isValidMainnetAddress(address); - case 'aurora-testnet': - return this.isValidTestnetAddress(address); - case undefined: - return this.isValidMainnetAddress(address) || this.isValidTestnetAddress(address); - default: - throw new UnsupportedNetworkError(networkName, this.supportedNetworks); - } - } - - private isValidMainnetAddress(address: string): boolean { + protected isValidAddress(address: string): boolean { return this.isValidAddressForSymbolAndNetwork(address, 'NEAR', 'aurora'); } - - private isValidTestnetAddress(address: string): boolean { - return this.isValidAddressForSymbolAndNetwork(address, 'NEAR-testnet', 'aurora-testnet'); - } } diff --git a/packages/advanced-logic/src/extensions/payment-network/near-testnet-native.ts b/packages/advanced-logic/src/extensions/payment-network/near-testnet-native.ts new file mode 100644 index 0000000000..d236ef8dc4 --- /dev/null +++ b/packages/advanced-logic/src/extensions/payment-network/near-testnet-native.ts @@ -0,0 +1,20 @@ +import NearNativePaymentNetwork from './near-native'; + +/** + * Implementation of the payment network to pay in Near on testnet based on input data. + */ +export default class NearTestnetNativeNativePaymentNetwork extends NearNativePaymentNetwork { + public constructor() { + super(['aurora-testnet']); + } + + /** + * Check if a near testnet address is valid + * + * @param {string} address address to check + * @returns {boolean} true if address is valid + */ + protected isValidAddress(address: string): boolean { + return this.isValidAddressForSymbolAndNetwork(address, 'NEAR-testnet', 'aurora-testnet'); + } +} diff --git a/packages/advanced-logic/test/extensions/payment-network/native-token.test.ts b/packages/advanced-logic/test/extensions/payment-network/native-token.test.ts index de4c3aff46..279bbb774f 100644 --- a/packages/advanced-logic/test/extensions/payment-network/native-token.test.ts +++ b/packages/advanced-logic/test/extensions/payment-network/native-token.test.ts @@ -1,8 +1,8 @@ import NativeTokenPaymentNetwork from '../../../src/extensions/payment-network/native-token'; import NearNativePaymentNetwork from '../../../src/extensions/payment-network/near-native'; import { - requestStateNoExtensions, arbitrarySalt, + requestStateNoExtensions, } from '../../utils/payment-network/any/generator-data-create'; import { actionCreationWithNativeTokenPayment, @@ -265,7 +265,7 @@ describe('extensions/payment-network/native-token', () => { currency: mainnetTestCase.currency, }; - const intermediateExtensionState = advancedLogic.applyActionToExtensions( + requestState.extensions = advancedLogic.applyActionToExtensions( requestState.extensions, nearPn.createCreationAction({ salt, paymentNetworkName: 'aurora' }), requestState, @@ -273,20 +273,10 @@ describe('extensions/payment-network/native-token', () => { arbitraryTimestamp, ); - requestState.extensions = intermediateExtensionState; - - const addPaymentAddressAction = nearPn.createAddPaymentAddressAction({ - paymentAddress: 'pay.testnet', - }); - expect(() => { - advancedLogic.applyActionToExtensions( - intermediateExtensionState, - addPaymentAddressAction, - requestState, - payeeRaw.identity, - arbitraryTimestamp, - ); + nearPn.createAddPaymentAddressAction({ + paymentAddress: 'pay.testnet', + }); }).toThrowError("paymentAddress 'pay.testnet' is not a valid address"); }); it('throws with no state or action payment network', () => { diff --git a/packages/payment-detection/src/any-to-any-detector.ts b/packages/payment-detection/src/any-to-any-detector.ts index 08b4250ab6..01fd8d5d23 100644 --- a/packages/payment-detection/src/any-to-any-detector.ts +++ b/packages/payment-detection/src/any-to-any-detector.ts @@ -12,10 +12,11 @@ export abstract class AnyToAnyDetector< TPaymentEventParameters, > extends FeeReferenceBasedDetector { /** + * @param paymentNetworkId * @param extension The advanced logic payment network extension, with conversion - * @param extensionType Example : PaymentTypes.PAYMENT_NETWORK_ID.ANY_TO_ETH_PROXY + * @param currencyManager */ - public constructor( + protected constructor( paymentNetworkId: PaymentTypes.PAYMENT_NETWORK_ID, extension: TExtension, protected currencyManager: ICurrencyManager, @@ -37,14 +38,6 @@ export abstract class AnyToAnyDetector< paymentNetworkCreationParameters.salt = paymentNetworkCreationParameters.salt || (await Utils.crypto.generate8randomBytes()); - return this.extension.createCreationAction({ - feeAddress: paymentNetworkCreationParameters.feeAddress, - feeAmount: paymentNetworkCreationParameters.feeAmount, - paymentAddress: paymentNetworkCreationParameters.paymentAddress, - refundAddress: paymentNetworkCreationParameters.refundAddress, - network: paymentNetworkCreationParameters.network, - maxRateTimespan: paymentNetworkCreationParameters.maxRateTimespan, - ...paymentNetworkCreationParameters, - }); + return this.extension.createCreationAction(paymentNetworkCreationParameters); } } diff --git a/packages/payment-detection/src/any-to-native-detector.ts b/packages/payment-detection/src/any-to-native-detector.ts new file mode 100644 index 0000000000..2ad7d24646 --- /dev/null +++ b/packages/payment-detection/src/any-to-native-detector.ts @@ -0,0 +1,33 @@ +import { AdvancedLogicTypes, ExtensionTypes, PaymentTypes } from '@requestnetwork/types'; + +import { AnyToAnyDetector } from './any-to-any-detector'; +import { ICurrencyManager } from '@requestnetwork/currency'; +import { AdvancedLogic } from '@requestnetwork/advanced-logic'; + +/** + * Handle payment detection for native token payment with conversion + */ +export abstract class AnyToNativeDetector extends AnyToAnyDetector< + ExtensionTypes.PnAnyToEth.IAnyToEth, + PaymentTypes.IETHPaymentEventParameters +> { + public constructor({ + network, + advancedLogic, + currencyManager, + }: { + network: string; + advancedLogic: AdvancedLogicTypes.IAdvancedLogic; + currencyManager: ICurrencyManager; + }) { + const extensionId = PaymentTypes.PAYMENT_NETWORK_ID.ANY_TO_NATIVE; + const extension = advancedLogic.extensions.anyToNativeToken.find( + (nativeTokenExtension: AdvancedLogic['extensions']['anyToNativeToken'][number]) => + nativeTokenExtension.supportedNetworks.includes(network), + ); + if (!extension) { + throw new Error(`the ${extensionId} extension is not supported for the network ${network}`); + } + super(extensionId, extension, currencyManager); + } +} diff --git a/packages/payment-detection/src/native-token-detector.ts b/packages/payment-detection/src/native-token-detector.ts new file mode 100644 index 0000000000..d0ae06e278 --- /dev/null +++ b/packages/payment-detection/src/native-token-detector.ts @@ -0,0 +1,30 @@ +import { AdvancedLogicTypes, ExtensionTypes, PaymentTypes } from '@requestnetwork/types'; + +import { ReferenceBasedDetector } from './reference-based-detector'; +import { AdvancedLogic } from '@requestnetwork/advanced-logic'; + +/** + * Handle payment detection for native token payment + */ +export abstract class NativeTokenPaymentDetector extends ReferenceBasedDetector< + ExtensionTypes.PnReferenceBased.IReferenceBased, + PaymentTypes.IETHPaymentEventParameters +> { + public constructor({ + network, + advancedLogic, + }: { + network: string; + advancedLogic: AdvancedLogicTypes.IAdvancedLogic; + }) { + const extensionId = PaymentTypes.PAYMENT_NETWORK_ID.NATIVE_TOKEN; + const extension = advancedLogic.extensions.nativeToken.find( + (nativeTokenExtension: AdvancedLogic['extensions']['nativeToken'][number]) => + nativeTokenExtension.supportedNetworks.includes(network), + ); + if (!extension) { + throw new Error(`the ${extensionId} extension is not supported for the network ${network}`); + } + super(extensionId, extension); + } +} diff --git a/packages/payment-detection/src/near/near-conversion-detector.ts b/packages/payment-detection/src/near/near-conversion-detector.ts index e6a88336bc..476c64c709 100644 --- a/packages/payment-detection/src/near/near-conversion-detector.ts +++ b/packages/payment-detection/src/near/near-conversion-detector.ts @@ -1,13 +1,7 @@ -import { - AdvancedLogicTypes, - ExtensionTypes, - PaymentTypes, - RequestLogicTypes, -} from '@requestnetwork/types'; - -import { AnyToAnyDetector } from '../any-to-any-detector'; -import { ICurrencyManager, UnsupportedCurrencyError } from '@requestnetwork/currency'; +import { ExtensionTypes, PaymentTypes, RequestLogicTypes } from '@requestnetwork/types'; +import { UnsupportedCurrencyError } from '@requestnetwork/currency'; import { NearConversionInfoRetriever } from './retrievers/near-conversion-info-retriever'; +import { AnyToNativeDetector } from '../any-to-native-detector'; // interface of the object indexing the proxy contract version interface IProxyContractVersion { @@ -22,27 +16,7 @@ const CONTRACT_ADDRESS_MAP: IProxyContractVersion = { /** * Handle payment detection for NEAR native token payment with conversion */ -export class NearConversionNativeTokenPaymentDetector extends AnyToAnyDetector< - ExtensionTypes.PnAnyToEth.IAnyToEth, - PaymentTypes.IETHPaymentEventParameters -> { - /** - * @param extension The advanced logic payment network extension - */ - public constructor({ - advancedLogic, - currencyManager, - }: { - advancedLogic: AdvancedLogicTypes.IAdvancedLogic; - currencyManager: ICurrencyManager; - }) { - super( - PaymentTypes.PAYMENT_NETWORK_ID.ANY_TO_NATIVE, - advancedLogic.extensions.anyToNativeToken[0], - currencyManager, - ); - } - +export class NearConversionNativeTokenPaymentDetector extends AnyToNativeDetector { public static getContractName = (chainName: string, paymentNetworkVersion = '0.1.0'): string => { const version = NearConversionNativeTokenPaymentDetector.getVersionOrThrow(paymentNetworkVersion); diff --git a/packages/payment-detection/src/near/near-detector.ts b/packages/payment-detection/src/near/near-detector.ts index 590db1748b..6c560e7242 100644 --- a/packages/payment-detection/src/near/near-detector.ts +++ b/packages/payment-detection/src/near/near-detector.ts @@ -1,12 +1,6 @@ -import { - AdvancedLogicTypes, - ExtensionTypes, - PaymentTypes, - RequestLogicTypes, -} from '@requestnetwork/types'; - -import { ReferenceBasedDetector } from '../reference-based-detector'; +import { ExtensionTypes, PaymentTypes, RequestLogicTypes } from '@requestnetwork/types'; import { NearInfoRetriever } from './retrievers/near-info-retriever'; +import { NativeTokenPaymentDetector } from '../native-token-detector'; // interface of the object indexing the proxy contract version interface IProxyContractVersion { @@ -22,17 +16,7 @@ const CONTRACT_ADDRESS_MAP: IProxyContractVersion = { /** * Handle payment detection for NEAR native token payment */ -export class NearNativeTokenPaymentDetector extends ReferenceBasedDetector< - ExtensionTypes.PnReferenceBased.IReferenceBased, - PaymentTypes.IETHPaymentEventParameters -> { - /** - * @param extension The advanced logic payment network extension - */ - public constructor({ advancedLogic }: { advancedLogic: AdvancedLogicTypes.IAdvancedLogic }) { - super(PaymentTypes.PAYMENT_NETWORK_ID.NATIVE_TOKEN, advancedLogic.extensions.nativeToken[0]); - } - +export class NearNativeTokenPaymentDetector extends NativeTokenPaymentDetector { public static getContractName = (chainName: string, paymentNetworkVersion = '0.2.0'): string => { const version = NearNativeTokenPaymentDetector.getVersionOrThrow(paymentNetworkVersion); const versionMap: Record> = { @@ -53,8 +37,9 @@ export class NearNativeTokenPaymentDetector extends ReferenceBasedDetector< * * @param address Address to check * @param eventName Indicate if it is an address for payment or refund - * @param requestCurrency The request currency * @param paymentReference The reference to identify the payment + * @param _requestCurrency + * @param paymentChain * @param paymentNetwork the payment network state * @returns The balance with events */ diff --git a/packages/payment-detection/src/payment-network-factory.ts b/packages/payment-detection/src/payment-network-factory.ts index 00dc84e50b..c895d6258e 100644 --- a/packages/payment-detection/src/payment-network-factory.ts +++ b/packages/payment-detection/src/payment-network-factory.ts @@ -64,7 +64,7 @@ const anyCurrencyPaymentNetwork: IPaymentNetworkModuleByType = { export type PaymentNetworkOptions = { /** override default bitcoin detection provider */ bitcoinDetectionProvider?: PaymentTypes.IBitcoinDetectionProvider; - /** the explorer API (eg Etherscan) api keys, for PNs that rely on it. Record by network name */ + /** the explorer API (e.g. Etherscan) api keys, for PNs that rely on it. Record by network name */ explorerApiKeys?: Record; }; @@ -115,6 +115,7 @@ export class PaymentNetworkFactory { } const detector = new detectorClass({ + network, advancedLogic: this.advancedLogic, currencyManager: this.currencyManager, ...this.options, From a71afe71530713e98249d13c90eea3116c226c39 Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Wed, 12 Oct 2022 12:49:16 +0200 Subject: [PATCH 06/25] fix any-to-near tests --- .../payment-network/any-to-near.test.ts | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/packages/advanced-logic/test/extensions/payment-network/any-to-near.test.ts b/packages/advanced-logic/test/extensions/payment-network/any-to-near.test.ts index 066011e136..a6cbe84e45 100644 --- a/packages/advanced-logic/test/extensions/payment-network/any-to-near.test.ts +++ b/packages/advanced-logic/test/extensions/payment-network/any-to-near.test.ts @@ -13,6 +13,7 @@ import AnyToNearPaymentNetwork from '../../../src/extensions/payment-network/any import AnyToNativeTokenPaymentNetwork from '../../../src/extensions/payment-network/any-to-native'; import { CurrencyManager } from '@requestnetwork/currency'; import utils from '@requestnetwork/utils'; +import AnyToNearTestnetPaymentNetwork from '../../../src/extensions/payment-network/any-to-near-testnet'; const salt = arbitrarySalt; const currencyManager = CurrencyManager.getDefault(); @@ -41,7 +42,7 @@ describe('extensions/payment-network/any-to-native-token', () => { }, { name: 'Near testnet', - paymentNetwork: new AnyToNearPaymentNetwork( + paymentNetwork: new AnyToNearTestnetPaymentNetwork( currencyManager, ) as AnyToNativeTokenPaymentNetwork, suffix: 'testnet', @@ -186,7 +187,7 @@ describe('extensions/payment-network/any-to-native-token', () => { network: 'another-chain', }); }).toThrowError( - `Payment network 'another-chain' is not supported by this extension (only aurora, aurora-testnet)`, + `Payment network 'another-chain' is not supported by this extension (only aurora)`, ); }); it('throws when payment network is missing', () => { @@ -453,18 +454,10 @@ describe('extensions/payment-network/any-to-native-token', () => { validRequestState.extensions = intermediateExtensionState; - const addPaymentAddressAction = anyToNearPn.createAddPaymentAddressAction({ - paymentAddress: invalidAddress, - }); - expect(() => { - advancedLogic.applyActionToExtensions( - intermediateExtensionState, - addPaymentAddressAction, - validRequestState, - payeeRaw.identity, - arbitraryTimestamp, - ); + anyToNearPn.createAddPaymentAddressAction({ + paymentAddress: invalidAddress, + }); }).toThrowError(`paymentAddress '${invalidAddress}' is not a valid address`); }); }); From b627be7f146758be2a7050423d34f0b6c8c10c23 Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Wed, 12 Oct 2022 13:01:18 +0200 Subject: [PATCH 07/25] move near to subdir --- packages/advanced-logic/src/advanced-logic.ts | 8 ++++---- .../payment-network/{ => near}/any-to-near-testnet.ts | 0 .../extensions/payment-network/{ => near}/any-to-near.ts | 2 +- .../extensions/payment-network/{ => near}/near-native.ts | 2 +- .../payment-network/{ => near}/near-testnet-native.ts | 0 .../test/extensions/payment-network/any-to-near.test.ts | 4 ++-- .../test/extensions/payment-network/native-token.test.ts | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) rename packages/advanced-logic/src/extensions/payment-network/{ => near}/any-to-near-testnet.ts (100%) rename packages/advanced-logic/src/extensions/payment-network/{ => near}/any-to-near.ts (98%) rename packages/advanced-logic/src/extensions/payment-network/{ => near}/near-native.ts (92%) rename packages/advanced-logic/src/extensions/payment-network/{ => near}/near-testnet-native.ts (100%) diff --git a/packages/advanced-logic/src/advanced-logic.ts b/packages/advanced-logic/src/advanced-logic.ts index 55f67cfe20..484b598055 100644 --- a/packages/advanced-logic/src/advanced-logic.ts +++ b/packages/advanced-logic/src/advanced-logic.ts @@ -16,13 +16,13 @@ import ProxyContractErc20 from './extensions/payment-network/erc20/proxy-contrac import Erc777Stream from './extensions/payment-network/erc777/stream'; import FeeProxyContractEth from './extensions/payment-network/ethereum/fee-proxy-contract'; import EthereumInputData from './extensions/payment-network/ethereum/input-data'; -import NearNative from './extensions/payment-network/near-native'; -import NearTestnetNative from './extensions/payment-network/near-testnet-native'; +import NearNative from './extensions/payment-network/near/near-native'; +import NearTestnetNative from './extensions/payment-network/near/near-testnet-native'; import AnyToErc20Proxy from './extensions/payment-network/any-to-erc20-proxy'; import AnyToEthProxy from './extensions/payment-network/any-to-eth-proxy'; import NativeTokenPaymentNetwork from './extensions/payment-network/native-token'; -import AnyToNear from './extensions/payment-network/any-to-near'; -import AnyToNearTestnet from './extensions/payment-network/any-to-near-testnet'; +import AnyToNear from './extensions/payment-network/near/any-to-near'; +import AnyToNearTestnet from './extensions/payment-network/near/any-to-near-testnet'; import AnyToNativeTokenPaymentNetwork from './extensions/payment-network/any-to-native'; /** diff --git a/packages/advanced-logic/src/extensions/payment-network/any-to-near-testnet.ts b/packages/advanced-logic/src/extensions/payment-network/near/any-to-near-testnet.ts similarity index 100% rename from packages/advanced-logic/src/extensions/payment-network/any-to-near-testnet.ts rename to packages/advanced-logic/src/extensions/payment-network/near/any-to-near-testnet.ts diff --git a/packages/advanced-logic/src/extensions/payment-network/any-to-near.ts b/packages/advanced-logic/src/extensions/payment-network/near/any-to-near.ts similarity index 98% rename from packages/advanced-logic/src/extensions/payment-network/any-to-near.ts rename to packages/advanced-logic/src/extensions/payment-network/near/any-to-near.ts index 8ff2b3d299..adc323352b 100644 --- a/packages/advanced-logic/src/extensions/payment-network/any-to-near.ts +++ b/packages/advanced-logic/src/extensions/payment-network/near/any-to-near.ts @@ -1,6 +1,6 @@ import { ICurrencyManager, UnsupportedCurrencyError } from '@requestnetwork/currency'; import { ExtensionTypes, IdentityTypes, RequestLogicTypes } from '@requestnetwork/types'; -import AnyToNativeTokenPaymentNetwork from './any-to-native'; +import AnyToNativeTokenPaymentNetwork from '../any-to-native'; const CURRENT_VERSION = '0.1.0'; const NETWORK = 'aurora'; diff --git a/packages/advanced-logic/src/extensions/payment-network/near-native.ts b/packages/advanced-logic/src/extensions/payment-network/near/near-native.ts similarity index 92% rename from packages/advanced-logic/src/extensions/payment-network/near-native.ts rename to packages/advanced-logic/src/extensions/payment-network/near/near-native.ts index 9a71c7138d..5f354593f6 100644 --- a/packages/advanced-logic/src/extensions/payment-network/near-native.ts +++ b/packages/advanced-logic/src/extensions/payment-network/near/near-native.ts @@ -1,5 +1,5 @@ import { ExtensionTypes } from '@requestnetwork/types'; -import NativeTokenPaymentNetwork from './native-token'; +import NativeTokenPaymentNetwork from '../native-token'; const CURRENT_VERSION = '0.2.0'; diff --git a/packages/advanced-logic/src/extensions/payment-network/near-testnet-native.ts b/packages/advanced-logic/src/extensions/payment-network/near/near-testnet-native.ts similarity index 100% rename from packages/advanced-logic/src/extensions/payment-network/near-testnet-native.ts rename to packages/advanced-logic/src/extensions/payment-network/near/near-testnet-native.ts diff --git a/packages/advanced-logic/test/extensions/payment-network/any-to-near.test.ts b/packages/advanced-logic/test/extensions/payment-network/any-to-near.test.ts index a6cbe84e45..65bcfa8053 100644 --- a/packages/advanced-logic/test/extensions/payment-network/any-to-near.test.ts +++ b/packages/advanced-logic/test/extensions/payment-network/any-to-near.test.ts @@ -9,11 +9,11 @@ import { import { AdvancedLogic } from '../../../src'; import { arbitraryTimestamp, payeeRaw, payerRaw } from '../../utils/test-data-generator'; import { ExtensionTypes, RequestLogicTypes } from '@requestnetwork/types'; -import AnyToNearPaymentNetwork from '../../../src/extensions/payment-network/any-to-near'; +import AnyToNearPaymentNetwork from '../../../src/extensions/payment-network/near/any-to-near'; import AnyToNativeTokenPaymentNetwork from '../../../src/extensions/payment-network/any-to-native'; import { CurrencyManager } from '@requestnetwork/currency'; import utils from '@requestnetwork/utils'; -import AnyToNearTestnetPaymentNetwork from '../../../src/extensions/payment-network/any-to-near-testnet'; +import AnyToNearTestnetPaymentNetwork from '../../../src/extensions/payment-network/near/any-to-near-testnet'; const salt = arbitrarySalt; const currencyManager = CurrencyManager.getDefault(); diff --git a/packages/advanced-logic/test/extensions/payment-network/native-token.test.ts b/packages/advanced-logic/test/extensions/payment-network/native-token.test.ts index 279bbb774f..86c8354268 100644 --- a/packages/advanced-logic/test/extensions/payment-network/native-token.test.ts +++ b/packages/advanced-logic/test/extensions/payment-network/native-token.test.ts @@ -1,5 +1,5 @@ import NativeTokenPaymentNetwork from '../../../src/extensions/payment-network/native-token'; -import NearNativePaymentNetwork from '../../../src/extensions/payment-network/near-native'; +import NearNativePaymentNetwork from '../../../src/extensions/payment-network/near/near-native'; import { arbitrarySalt, requestStateNoExtensions, From 37c381339cb3c6a7b769e6f8be22c40ad8d6bfd0 Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Wed, 12 Oct 2022 15:02:39 +0200 Subject: [PATCH 08/25] fix tests --- packages/advanced-logic/src/advanced-logic.ts | 2 +- .../extensions/payment-network/any-to-native.ts | 16 ++++++++-------- .../extensions/payment-network/native-token.ts | 14 +++++--------- .../payment-network/native-token.test.ts | 3 ++- .../integration-test/test/scheduled/mocks.ts | 6 +----- .../test/near/near-native-conversion.test.ts | 3 +++ .../test/near/near-native.test.ts | 3 +++ .../request-client.js/test/api/request.test.ts | 3 +++ 8 files changed, 26 insertions(+), 24 deletions(-) diff --git a/packages/advanced-logic/src/advanced-logic.ts b/packages/advanced-logic/src/advanced-logic.ts index 484b598055..9571842b88 100644 --- a/packages/advanced-logic/src/advanced-logic.ts +++ b/packages/advanced-logic/src/advanced-logic.ts @@ -4,7 +4,7 @@ import { IdentityTypes, RequestLogicTypes, } from '@requestnetwork/types'; -import { ICurrencyManager, CurrencyManager } from '@requestnetwork/currency'; +import { CurrencyManager, ICurrencyManager } from '@requestnetwork/currency'; import ContentData from './extensions/content-data'; import AddressBasedBtc from './extensions/payment-network/bitcoin/mainnet-address-based'; diff --git a/packages/advanced-logic/src/extensions/payment-network/any-to-native.ts b/packages/advanced-logic/src/extensions/payment-network/any-to-native.ts index e6871c7c72..958e8ca183 100644 --- a/packages/advanced-logic/src/extensions/payment-network/any-to-native.ts +++ b/packages/advanced-logic/src/extensions/payment-network/any-to-native.ts @@ -16,23 +16,19 @@ export default abstract class AnyToNativeTokenPaymentNetwork extends FeeReferenc ): ExtensionTypes.IAction { const network = creationParameters.network; this.throwIfInvalidNetwork(network); - if ( creationParameters.paymentAddress && - !this.isValidAddress(creationParameters.paymentAddress, network) + !this.isValidAddress(creationParameters.paymentAddress) ) { throw new InvalidPaymentAddressError(creationParameters.paymentAddress); } if ( creationParameters.refundAddress && - !this.isValidAddress(creationParameters.refundAddress, network) + !this.isValidAddress(creationParameters.refundAddress) ) { throw new InvalidPaymentAddressError(creationParameters.refundAddress, 'refundAddress'); } - if ( - creationParameters.feeAddress && - !this.isValidAddress(creationParameters.feeAddress, network) - ) { + if (creationParameters.feeAddress && !this.isValidAddress(creationParameters.feeAddress)) { throw new InvalidPaymentAddressError(creationParameters.feeAddress, 'feeAddress'); } if (creationParameters.maxRateTimespan && creationParameters.maxRateTimespan < 0) { @@ -42,7 +38,11 @@ export default abstract class AnyToNativeTokenPaymentNetwork extends FeeReferenc } // eslint-disable-next-line @typescript-eslint/no-unused-vars - protected abstract isValidAddress(_address: string, _networkName?: string): boolean; + protected isValidAddress(_address: string): boolean { + throw new Error( + `Default implementation of isValidAddress() does not support native tokens. Please override this method.`, + ); + } protected throwIfInvalidNetwork(network?: string): asserts network is string { super.throwIfInvalidNetwork(network); diff --git a/packages/advanced-logic/src/extensions/payment-network/native-token.ts b/packages/advanced-logic/src/extensions/payment-network/native-token.ts index 7af55c61fd..d353f1fe97 100644 --- a/packages/advanced-logic/src/extensions/payment-network/native-token.ts +++ b/packages/advanced-logic/src/extensions/payment-network/native-token.ts @@ -18,21 +18,17 @@ export default abstract class NativeTokenPaymentNetwork extends ReferenceBasedPa public createCreationAction( creationParameters: ExtensionTypes.PnReferenceBased.ICreationParameters, ): ExtensionTypes.IAction { - const networkName = creationParameters.paymentNetworkName; - if (!networkName && (creationParameters.paymentAddress || creationParameters.refundAddress)) { - throw new Error( - `The network name is mandatory for the creation of the extension ${this.extensionId}.`, - ); - } + const network = creationParameters.paymentNetworkName; + this.throwIfInvalidNetwork(network); if ( creationParameters.paymentAddress && - !this.isValidAddress(creationParameters.paymentAddress, networkName) + !this.isValidAddress(creationParameters.paymentAddress) ) { throw new InvalidPaymentAddressError(creationParameters.paymentAddress); } if ( creationParameters.refundAddress && - !this.isValidAddress(creationParameters.refundAddress, networkName) + !this.isValidAddress(creationParameters.refundAddress) ) { throw new InvalidPaymentAddressError(creationParameters.refundAddress, 'refundAddress'); } @@ -40,7 +36,7 @@ export default abstract class NativeTokenPaymentNetwork extends ReferenceBasedPa } // eslint-disable-next-line @typescript-eslint/no-unused-vars - protected isValidAddress(_address: string, _networkName?: string): boolean { + protected isValidAddress(_address: string): boolean { throw new Error( `Default implementation of isValidAddress() does not support native tokens. Please override this method.`, ); diff --git a/packages/advanced-logic/test/extensions/payment-network/native-token.test.ts b/packages/advanced-logic/test/extensions/payment-network/native-token.test.ts index 86c8354268..c8280bd209 100644 --- a/packages/advanced-logic/test/extensions/payment-network/native-token.test.ts +++ b/packages/advanced-logic/test/extensions/payment-network/native-token.test.ts @@ -12,6 +12,7 @@ import { import { AdvancedLogic } from '../../../src'; import { arbitraryTimestamp, payeeRaw } from '../../utils/test-data-generator'; import { ExtensionTypes, RequestLogicTypes } from '@requestnetwork/types'; +import NearTestnetNativeNativePaymentNetwork from '../../../src/extensions/payment-network/near/near-testnet-native'; const salt = arbitrarySalt; @@ -38,7 +39,7 @@ describe('extensions/payment-network/native-token', () => { }, { name: 'Near testnet', - paymentNetwork: new NearNativePaymentNetwork() as NativeTokenPaymentNetwork, + paymentNetwork: new NearTestnetNativeNativePaymentNetwork() as NativeTokenPaymentNetwork, networkName: 'aurora-testnet', suffix: 'testnet', wrongSuffix: 'near', diff --git a/packages/integration-test/test/scheduled/mocks.ts b/packages/integration-test/test/scheduled/mocks.ts index 5d68d1028b..3ff95eee5e 100644 --- a/packages/integration-test/test/scheduled/mocks.ts +++ b/packages/integration-test/test/scheduled/mocks.ts @@ -12,13 +12,13 @@ export const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { return; }, extensions: { + declarative: {}, addressBasedErc20: { createAddPaymentAddressAction, createAddRefundAddressAction, createCreationAction, }, feeProxyContractErc20: { - supportedNetworks: ['mainnet', 'rinkeby', 'private', 'matic'], createAddPaymentAddressAction, createAddRefundAddressAction, createCreationAction, @@ -28,7 +28,6 @@ export const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { createAddRefundInstructionAction, }, proxyContractErc20: { - supportedNetworks: ['rinkeby', 'private'], createAddPaymentAddressAction, createAddRefundAddressAction, createCreationAction, @@ -37,7 +36,6 @@ export const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { createAddRefundInstructionAction, }, feeProxyContractEth: { - supportedNetworks: ['rinkeby', 'private'], createAddPaymentAddressAction, createAddRefundAddressAction, createCreationAction, @@ -45,7 +43,6 @@ export const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { createAddRefundInstructionAction, }, ethereumInputData: { - supportedNetworks: ['rinkeby', 'private'], createAddPaymentAddressAction, createAddRefundAddressAction, createCreationAction, @@ -53,7 +50,6 @@ export const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { createAddRefundInstructionAction, }, erc777Stream: { - supportedNetworks: ['rinkeby'], createAddPaymentAddressAction, createAddRefundAddressAction, createCreationAction, diff --git a/packages/payment-detection/test/near/near-native-conversion.test.ts b/packages/payment-detection/test/near/near-native-conversion.test.ts index c807454d45..0e60995359 100644 --- a/packages/payment-detection/test/near/near-native-conversion.test.ts +++ b/packages/payment-detection/test/near/near-native-conversion.test.ts @@ -138,6 +138,7 @@ describe('Near payments detection', () => { it('NearConversionNativeTokenPaymentDetector can detect a payment on Near', async () => { const paymentDetector = new NearConversionNativeTokenPaymentDetector({ + network: 'aurora', advancedLogic: mockAdvancedLogic, currencyManager, }); @@ -162,6 +163,7 @@ describe('Near payments detection', () => { }, }; const paymentDetector = new NearConversionNativeTokenPaymentDetector({ + network: 'aurora', advancedLogic: mockAdvancedLogic, currencyManager, }); @@ -191,6 +193,7 @@ describe('Near payments detection', () => { }, }; const paymentDetector = new NearConversionNativeTokenPaymentDetector({ + network: 'aurora', advancedLogic: mockAdvancedLogic, currencyManager, }); diff --git a/packages/payment-detection/test/near/near-native.test.ts b/packages/payment-detection/test/near/near-native.test.ts index 251398123f..ba5e64f857 100644 --- a/packages/payment-detection/test/near/near-native.test.ts +++ b/packages/payment-detection/test/near/near-native.test.ts @@ -87,6 +87,7 @@ describe('Near payments detection', () => { it('NearNativeTokenPaymentDetector can detect a payment on Near', async () => { const paymentDetector = new NearNativeTokenPaymentDetector({ + network: 'aurora', advancedLogic: mockAdvancedLogic, }); const balance = await paymentDetector.getBalance(request); @@ -108,6 +109,7 @@ describe('Near payments detection', () => { }, }; const paymentDetector = new NearNativeTokenPaymentDetector({ + network: 'aurora', advancedLogic: mockAdvancedLogic, }); expect(await paymentDetector.getBalance(requestWithWrongVersion)).toMatchObject({ @@ -124,6 +126,7 @@ describe('Near payments detection', () => { currency: { ...requestWithWrongNetwork.currency, network: 'unknown-network' }, }; const paymentDetector = new NearNativeTokenPaymentDetector({ + network: 'aurora', advancedLogic: mockAdvancedLogic, }); expect(await paymentDetector.getBalance(requestWithWrongNetwork)).toMatchObject({ diff --git a/packages/request-client.js/test/api/request.test.ts b/packages/request-client.js/test/api/request.test.ts index 6aebec4fac..0b9575debf 100644 --- a/packages/request-client.js/test/api/request.test.ts +++ b/packages/request-client.js/test/api/request.test.ts @@ -4,6 +4,7 @@ import { IdentityTypes, PaymentTypes, RequestLogicTypes } from '@requestnetwork/ import { EventEmitter } from 'events'; import Request from '../../src/api/request'; +import { mockAdvancedLogic } from '@requestnetwork/integration-test/test/scheduled/mocks'; const mockRequestLogic: RequestLogicTypes.IRequestLogic = { async createRequest(): Promise { @@ -52,6 +53,7 @@ const mockRequestLogic: RequestLogicTypes.IRequestLogic = { }; const mockPaymentNetwork: PaymentTypes.IPaymentNetwork = { + extension: mockAdvancedLogic.extensions.declarative, paymentNetworkId: PaymentTypes.PAYMENT_NETWORK_ID.DECLARATIVE, async createExtensionsDataForCreation(): Promise { @@ -69,6 +71,7 @@ const mockPaymentNetwork: PaymentTypes.IPaymentNetwork = { }; const mockDeclarativePaymentNetwork: PaymentTypes.IPaymentNetwork = { + extension: mockAdvancedLogic.extensions.declarative, paymentNetworkId: PaymentTypes.PAYMENT_NETWORK_ID.DECLARATIVE, async createExtensionsDataForCreation(): Promise { return; From 3f1a377fc4c84c7fd035ba4c3cf732db6d62a610 Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Wed, 12 Oct 2022 15:16:43 +0200 Subject: [PATCH 09/25] fix tests --- .../src/extensions/payment-network/native-token.ts | 12 ++++++++++-- .../extensions/payment-network/native-token.test.ts | 6 +++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/packages/advanced-logic/src/extensions/payment-network/native-token.ts b/packages/advanced-logic/src/extensions/payment-network/native-token.ts index d353f1fe97..3d997f8daf 100644 --- a/packages/advanced-logic/src/extensions/payment-network/native-token.ts +++ b/packages/advanced-logic/src/extensions/payment-network/native-token.ts @@ -18,8 +18,16 @@ export default abstract class NativeTokenPaymentNetwork extends ReferenceBasedPa public createCreationAction( creationParameters: ExtensionTypes.PnReferenceBased.ICreationParameters, ): ExtensionTypes.IAction { - const network = creationParameters.paymentNetworkName; - this.throwIfInvalidNetwork(network); + const networkName = creationParameters.paymentNetworkName; + if (creationParameters.paymentAddress || creationParameters.refundAddress) { + if (networkName) { + this.throwIfInvalidNetwork(networkName); + } else { + throw new Error( + `The network name is mandatory for the creation of the extension ${this.extensionId}.`, + ); + } + } if ( creationParameters.paymentAddress && !this.isValidAddress(creationParameters.paymentAddress) diff --git a/packages/advanced-logic/test/extensions/payment-network/native-token.test.ts b/packages/advanced-logic/test/extensions/payment-network/native-token.test.ts index c8280bd209..314549eafd 100644 --- a/packages/advanced-logic/test/extensions/payment-network/native-token.test.ts +++ b/packages/advanced-logic/test/extensions/payment-network/native-token.test.ts @@ -137,7 +137,7 @@ describe('extensions/payment-network/native-token', () => { paymentNetworkName: 'another-chain', }); }).toThrowError( - `Payment network 'another-chain' is not supported by this extension (only aurora, aurora-testnet)`, + `Payment network 'another-chain' is not supported by this extension (only aurora)`, ); }); it('createCreationAction() throws without payment network', () => { @@ -238,7 +238,7 @@ describe('extensions/payment-network/native-token', () => { }); it('throws when creating the extension on a different network from the request network', () => { const advancedLogic = new AdvancedLogic(); - const nearPn = new NearNativePaymentNetwork(); + const nearPn = new NearTestnetNativeNativePaymentNetwork(); const requestState: typeof requestStateNoExtensions = { ...requestStateNoExtensions, @@ -405,7 +405,7 @@ describe('extensions/payment-network/native-token', () => { it('should throw when isValidAddress is not overridden', () => { class TestNativePaymentNetwork extends NativeTokenPaymentNetwork { public testIsValidAddress() { - this.isValidAddress('test', 'test'); + this.isValidAddress('test'); } } expect(() => { From ac8ea1b031d3df8df78750bb452841ed6e3ac85c Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Wed, 12 Oct 2022 17:10:45 +0200 Subject: [PATCH 10/25] better types --- packages/advanced-logic/src/advanced-logic.ts | 37 ++++++++------ .../payment-network/any-to-eth-proxy.test.ts | 25 ++-------- .../integration-test/test/scheduled/mocks.ts | 50 ++++++++++++------- .../src/any-to-native-detector.ts | 8 ++- .../src/btc/address-based.ts | 5 +- .../src/btc/mainnet-address-based.ts | 1 + packages/payment-detection/src/declarative.ts | 5 +- .../src/native-token-detector.ts | 8 ++- .../src/reference-based-detector.ts | 10 ---- packages/types/src/advanced-logic-types.ts | 27 +++++++++- .../extensions/pn-any-address-based-types.ts | 1 - .../extensions/pn-any-declarative-types.ts | 2 +- .../src/extensions/pn-any-to-erc20-types.ts | 5 +- 13 files changed, 101 insertions(+), 83 deletions(-) diff --git a/packages/advanced-logic/src/advanced-logic.ts b/packages/advanced-logic/src/advanced-logic.ts index 9571842b88..c994e41401 100644 --- a/packages/advanced-logic/src/advanced-logic.ts +++ b/packages/advanced-logic/src/advanced-logic.ts @@ -20,10 +20,10 @@ import NearNative from './extensions/payment-network/near/near-native'; import NearTestnetNative from './extensions/payment-network/near/near-testnet-native'; import AnyToErc20Proxy from './extensions/payment-network/any-to-erc20-proxy'; import AnyToEthProxy from './extensions/payment-network/any-to-eth-proxy'; -import NativeTokenPaymentNetwork from './extensions/payment-network/native-token'; import AnyToNear from './extensions/payment-network/near/any-to-near'; import AnyToNearTestnet from './extensions/payment-network/near/any-to-near-testnet'; -import AnyToNativeTokenPaymentNetwork from './extensions/payment-network/any-to-native'; +import NativeToken from './extensions/payment-network/native-token'; +import AnyToNative from './extensions/payment-network/any-to-native'; /** * Module to manage Advanced logic extensions @@ -39,13 +39,13 @@ export default class AdvancedLogic implements AdvancedLogicTypes.IAdvancedLogic anyToErc20Proxy: AnyToErc20Proxy; declarative: Declarative; ethereumInputData: EthereumInputData; - nativeToken: NativeTokenPaymentNetwork[]; + nativeToken: NativeToken[]; feeProxyContractErc20: FeeProxyContractErc20; proxyContractErc20: ProxyContractErc20; erc777Stream: Erc777Stream; feeProxyContractEth: FeeProxyContractEth; anyToEthProxy: AnyToEthProxy; - anyToNativeToken: AnyToNativeTokenPaymentNetwork[]; + anyToNativeToken: AnyToNative[]; }; constructor(currencyManager?: ICurrencyManager) { @@ -141,6 +141,14 @@ export default class AdvancedLogic implements AdvancedLogicTypes.IAdvancedLogic return extension; } + public getNativeTokenExtensionForNetwork( + network: string, + ): ExtensionTypes.IExtension | undefined { + return this.extensions.nativeToken.find((nativeTokenExtension) => + nativeTokenExtension.supportedNetworks.includes(network), + ); + } + protected getNativeTokenExtensionForActionAndState( extensionAction: ExtensionTypes.IAction, requestState: RequestLogicTypes.IRequest, @@ -155,11 +163,15 @@ export default class AdvancedLogic implements AdvancedLogicTypes.IAdvancedLogic ); } const network = requestState.currency.network ?? extensionAction.parameters.paymentNetworkName; - return network - ? this.extensions.nativeToken.find((nativeTokenExtension) => - nativeTokenExtension.supportedNetworks.includes(network), - ) - : undefined; + return network ? this.getNativeTokenExtensionForNetwork(network) : undefined; + } + + public getAnyToNativeTokenExtensionForNetwork( + network: string, + ): ExtensionTypes.IExtension | undefined { + return this.extensions.anyToNativeToken.find((anyToNativeTokenExtension) => + anyToNativeTokenExtension.supportedNetworks.includes(network), + ); } protected getAnyToNativeTokenExtensionForActionAndState( @@ -167,12 +179,7 @@ export default class AdvancedLogic implements AdvancedLogicTypes.IAdvancedLogic requestState: RequestLogicTypes.IRequest, ): ExtensionTypes.IExtension | undefined { const network = this.getNetwork(extensionAction, requestState); - - return network - ? this.extensions.anyToNativeToken.find((anyToNativeTokenExtension) => - anyToNativeTokenExtension.supportedNetworks.includes(network), - ) - : undefined; + return network ? this.getAnyToNativeTokenExtensionForNetwork(network) : undefined; } protected getNetwork( diff --git a/packages/advanced-logic/test/extensions/payment-network/any-to-eth-proxy.test.ts b/packages/advanced-logic/test/extensions/payment-network/any-to-eth-proxy.test.ts index 7dcc958214..9599bac872 100644 --- a/packages/advanced-logic/test/extensions/payment-network/any-to-eth-proxy.test.ts +++ b/packages/advanced-logic/test/extensions/payment-network/any-to-eth-proxy.test.ts @@ -1,10 +1,6 @@ import { ExtensionTypes, RequestLogicTypes } from '@requestnetwork/types'; import Utils from '@requestnetwork/utils'; -import { - conversionSupportedNetworks, - CurrencyManager, - UnsupportedCurrencyError, -} from '@requestnetwork/currency'; +import { CurrencyManager, UnsupportedCurrencyError } from '@requestnetwork/currency'; import AnyToEthProxy from '../../../src/extensions/payment-network/any-to-eth-proxy'; import * as DataConversionETHFeeAddData from '../../utils/payment-network/ethereum/any-to-eth-proxy-add-data-generator'; @@ -115,21 +111,6 @@ describe('extensions/payment-network/ethereum/any-to-eth-fee-proxy-contract', () }).toThrowError('feeAmount is not a valid amount'); }); - it('cannot createCreationAction with network not supported', () => { - // 'must throw' - expect(() => { - anyToEthProxy.createCreationAction({ - paymentAddress: '0x0000000000000000000000000000000000000001', - salt: 'ea3bc7caf64110ca', - network: 'kovan', - }); - }).toThrowError( - `Payment network 'kovan' is not supported by this extension (only ${conversionSupportedNetworks.join( - ', ', - )})`, - ); - }); - it('cannot applyActionToExtensions of creation with an invalid network', () => { const requestCreatedNoExtension: RequestLogicTypes.IRequest = Utils.deepCopy( TestData.requestCreatedNoExtension, @@ -153,7 +134,9 @@ describe('extensions/payment-network/ethereum/any-to-eth-fee-proxy-contract', () TestData.otherIdRaw.identity, TestData.arbitraryTimestamp, ); - }).toThrowError(`The network (invalid network) is not supported for this payment network.`); + }).toThrowError( + `The currency (ETH) of the request is not supported for this payment network.`, + ); }); it('cannot applyActionToExtensions of creation on a non supported currency', () => { diff --git a/packages/integration-test/test/scheduled/mocks.ts b/packages/integration-test/test/scheduled/mocks.ts index 3ff95eee5e..086624efdd 100644 --- a/packages/integration-test/test/scheduled/mocks.ts +++ b/packages/integration-test/test/scheduled/mocks.ts @@ -1,4 +1,5 @@ import { AdvancedLogicTypes } from '@requestnetwork/types'; +import * as Extension from '@requestnetwork/types/src/extension-types'; const createAddPaymentAddressAction = jest.fn(); const createAddRefundAddressAction = jest.fn(); @@ -8,54 +9,67 @@ const createAddPaymentInstructionAction = jest.fn(); const createAddRefundInstructionAction = jest.fn(); export const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { - applyActionToExtensions(): any { - return; - }, + applyActionToExtensions: jest.fn(), + getNativeTokenExtensionForNetwork: jest.fn(), + getAnyToNativeTokenExtensionForNetwork: jest.fn(), extensions: { - declarative: {}, + addressBasedBtc: + {} as Extension.PnAddressBased.IAddressBased, addressBasedErc20: { createAddPaymentAddressAction, createAddRefundAddressAction, createCreationAction, - }, - feeProxyContractErc20: { + } as any as Extension.PnAddressBased.IAddressBased, + addressBasedTestnetBtc: + {} as Extension.PnAddressBased.IAddressBased, + contentData: {} as Extension.ContentData.IContentData, + anyToErc20Proxy: {} as Extension.PnAnyToErc20.IAnyToERC20, + declarative: + {} as Extension.PnAnyDeclarative.IAnyDeclarative, + ethereumInputData: { createAddPaymentAddressAction, createAddRefundAddressAction, createCreationAction, - createAddFeeAction, - // inherited from declarative createAddPaymentInstructionAction, createAddRefundInstructionAction, - }, - proxyContractErc20: { + } as any as Extension.PnReferenceBased.IReferenceBased, + nativeToken: + {} as Extension.PnReferenceBased.IReferenceBased[], + feeProxyContractErc20: { createAddPaymentAddressAction, createAddRefundAddressAction, createCreationAction, - // inheritance from declarative + createAddFeeAction, + // inherited from declarative createAddPaymentInstructionAction, createAddRefundInstructionAction, - }, - feeProxyContractEth: { + } as any as Extension.PnFeeReferenceBased.IFeeReferenceBased, + proxyContractErc20: { createAddPaymentAddressAction, createAddRefundAddressAction, createCreationAction, + // inheritance from declarative createAddPaymentInstructionAction, createAddRefundInstructionAction, - }, - ethereumInputData: { + } as any as Extension.PnReferenceBased.IReferenceBased, + erc777Stream: { createAddPaymentAddressAction, createAddRefundAddressAction, createCreationAction, + // inheritance from declarative createAddPaymentInstructionAction, createAddRefundInstructionAction, }, - erc777Stream: { + feeProxyContractEth: { createAddPaymentAddressAction, createAddRefundAddressAction, createCreationAction, - // inheritance from declarative createAddPaymentInstructionAction, createAddRefundInstructionAction, - }, + } as any as Extension.PnFeeReferenceBased.IFeeReferenceBased, + anyToEthProxy: + {} as Extension.PnFeeReferenceBased.IFeeReferenceBased, + anyToNativeToken: + {} as Extension.PnFeeReferenceBased.IFeeReferenceBased[], }, }; diff --git a/packages/payment-detection/src/any-to-native-detector.ts b/packages/payment-detection/src/any-to-native-detector.ts index 2ad7d24646..0abab1fb95 100644 --- a/packages/payment-detection/src/any-to-native-detector.ts +++ b/packages/payment-detection/src/any-to-native-detector.ts @@ -2,7 +2,6 @@ import { AdvancedLogicTypes, ExtensionTypes, PaymentTypes } from '@requestnetwor import { AnyToAnyDetector } from './any-to-any-detector'; import { ICurrencyManager } from '@requestnetwork/currency'; -import { AdvancedLogic } from '@requestnetwork/advanced-logic'; /** * Handle payment detection for native token payment with conversion @@ -21,10 +20,9 @@ export abstract class AnyToNativeDetector extends AnyToAnyDetector< currencyManager: ICurrencyManager; }) { const extensionId = PaymentTypes.PAYMENT_NETWORK_ID.ANY_TO_NATIVE; - const extension = advancedLogic.extensions.anyToNativeToken.find( - (nativeTokenExtension: AdvancedLogic['extensions']['anyToNativeToken'][number]) => - nativeTokenExtension.supportedNetworks.includes(network), - ); + const extension = advancedLogic.getAnyToNativeTokenExtensionForNetwork( + network, + ) as ExtensionTypes.PnAnyToEth.IAnyToEth; if (!extension) { throw new Error(`the ${extensionId} extension is not supported for the network ${network}`); } diff --git a/packages/payment-detection/src/btc/address-based.ts b/packages/payment-detection/src/btc/address-based.ts index df339c974d..4398a7f2b8 100644 --- a/packages/payment-detection/src/btc/address-based.ts +++ b/packages/payment-detection/src/btc/address-based.ts @@ -10,9 +10,12 @@ export abstract class BtcAddressBasedDetector extends PaymentDetectorBase< PaymentTypes.IBTCPaymentEventParameters > { /** + * @param networkId + * @param paymentNetworkId * @param extension The advanced logic payment network extensions + * @param bitcoinDetectionProvider */ - public constructor( + protected constructor( private networkId: number, paymentNetworkId: PaymentTypes.PAYMENT_NETWORK_ID, extension: ExtensionTypes.PnAddressBased.IAddressBased, diff --git a/packages/payment-detection/src/btc/mainnet-address-based.ts b/packages/payment-detection/src/btc/mainnet-address-based.ts index 02e3c83d35..cd3f0098a2 100644 --- a/packages/payment-detection/src/btc/mainnet-address-based.ts +++ b/packages/payment-detection/src/btc/mainnet-address-based.ts @@ -12,6 +12,7 @@ const MAINNET_BITCOIN_NETWORK_ID = 0; export class BtcMainnetAddressBasedDetector extends BtcAddressBasedDetector { /** * @param advancedLogic Instance of Advanced Logic layer, to get the extension + * @param bitcoinDetectionProvider */ public constructor({ advancedLogic, diff --git a/packages/payment-detection/src/declarative.ts b/packages/payment-detection/src/declarative.ts index a383e10f9a..be52c4cb8e 100644 --- a/packages/payment-detection/src/declarative.ts +++ b/packages/payment-detection/src/declarative.ts @@ -193,7 +193,10 @@ export class DeclarativePaymentDetector extends DeclarativePaymentDetectorBase< PaymentTypes.IDeclarativePaymentEventParameters > { constructor({ advancedLogic }: { advancedLogic: AdvancedLogicTypes.IAdvancedLogic }) { - super(PaymentTypes.PAYMENT_NETWORK_ID.DECLARATIVE, advancedLogic.extensions.declarative); + super( + PaymentTypes.PAYMENT_NETWORK_ID.DECLARATIVE, + advancedLogic.extensions.declarative as ExtensionTypes.PnAnyDeclarative.IAnyDeclarative, + ); } protected async getEvents( diff --git a/packages/payment-detection/src/native-token-detector.ts b/packages/payment-detection/src/native-token-detector.ts index d0ae06e278..66626a80a5 100644 --- a/packages/payment-detection/src/native-token-detector.ts +++ b/packages/payment-detection/src/native-token-detector.ts @@ -1,7 +1,6 @@ import { AdvancedLogicTypes, ExtensionTypes, PaymentTypes } from '@requestnetwork/types'; import { ReferenceBasedDetector } from './reference-based-detector'; -import { AdvancedLogic } from '@requestnetwork/advanced-logic'; /** * Handle payment detection for native token payment @@ -18,10 +17,9 @@ export abstract class NativeTokenPaymentDetector extends ReferenceBasedDetector< advancedLogic: AdvancedLogicTypes.IAdvancedLogic; }) { const extensionId = PaymentTypes.PAYMENT_NETWORK_ID.NATIVE_TOKEN; - const extension = advancedLogic.extensions.nativeToken.find( - (nativeTokenExtension: AdvancedLogic['extensions']['nativeToken'][number]) => - nativeTokenExtension.supportedNetworks.includes(network), - ); + const extension = advancedLogic.getNativeTokenExtensionForNetwork( + network, + ) as ExtensionTypes.PnReferenceBased.IReferenceBased; if (!extension) { throw new Error(`the ${extensionId} extension is not supported for the network ${network}`); } diff --git a/packages/payment-detection/src/reference-based-detector.ts b/packages/payment-detection/src/reference-based-detector.ts index 32b52818dd..59cabbf244 100644 --- a/packages/payment-detection/src/reference-based-detector.ts +++ b/packages/payment-detection/src/reference-based-detector.ts @@ -1,6 +1,5 @@ import { ExtensionTypes, PaymentTypes, RequestLogicTypes, TypesUtils } from '@requestnetwork/types'; import Utils from '@requestnetwork/utils'; -import { BalanceError } from './balance-error'; import PaymentReferenceCalculator from './payment-reference-calculator'; import { DeclarativePaymentDetectorBase } from './declarative'; @@ -88,15 +87,6 @@ export abstract class ReferenceBasedDetector< const paymentExtension = this.getPaymentExtension(request); const paymentChain = this.getPaymentChain(request); - const supportedNetworks = this.extension.supportedNetworks; - if (!supportedNetworks.includes(paymentChain)) { - throw new BalanceError( - `Payment network ${paymentChain} not supported by ${ - this.paymentNetworkId - } payment detection. Supported networks: ${supportedNetworks.join(', ')}`, - PaymentTypes.BALANCE_ERROR_CODE.NETWORK_NOT_SUPPORTED, - ); - } this.checkRequiredParameter(paymentExtension.values.salt, 'salt'); this.checkRequiredParameter(paymentExtension.values.paymentAddress, 'paymentAddress'); diff --git a/packages/types/src/advanced-logic-types.ts b/packages/types/src/advanced-logic-types.ts index d3985af510..a4ec04160d 100644 --- a/packages/types/src/advanced-logic-types.ts +++ b/packages/types/src/advanced-logic-types.ts @@ -2,6 +2,25 @@ import * as Extension from './extension-types'; import * as Identity from './identity-types'; import * as RequestLogic from './request-logic-types'; +/** Advanced Logic extensions */ +export interface IAdvancedLogicExtensions { + addressBasedBtc: Extension.PnAddressBased.IAddressBased; + addressBasedErc20: Extension.PnAddressBased.IAddressBased; + addressBasedTestnetBtc: Extension.PnAddressBased.IAddressBased; + contentData: Extension.ContentData.IContentData; + anyToErc20Proxy: Extension.PnAnyToErc20.IAnyToERC20; + declarative: Extension.PnAnyDeclarative.IAnyDeclarative; + ethereumInputData: Extension.PnReferenceBased.IReferenceBased; + nativeToken: Extension.PnReferenceBased.IReferenceBased[]; + feeProxyContractErc20: Extension.PnFeeReferenceBased.IFeeReferenceBased; + proxyContractErc20: Extension.PnReferenceBased.IReferenceBased; + // FIXME: should be Extension.PnReferenceBased.IReferenceBased + erc777Stream: any; + feeProxyContractEth: Extension.PnFeeReferenceBased.IFeeReferenceBased; + anyToEthProxy: Extension.PnFeeReferenceBased.IFeeReferenceBased; + anyToNativeToken: Extension.PnFeeReferenceBased.IFeeReferenceBased[]; +} + /** Advanced Logic layer */ export interface IAdvancedLogic { applyActionToExtensions: ( @@ -11,7 +30,13 @@ export interface IAdvancedLogic { actionSigner: Identity.IIdentity, timestamp: number, ) => RequestLogic.IExtensionStates; - extensions: any; + getNativeTokenExtensionForNetwork: ( + network: string, + ) => Extension.IExtension | undefined; + getAnyToNativeTokenExtensionForNetwork: ( + network: string, + ) => Extension.IExtension | undefined; + extensions: IAdvancedLogicExtensions; } /** Creation extension parameters */ diff --git a/packages/types/src/extensions/pn-any-address-based-types.ts b/packages/types/src/extensions/pn-any-address-based-types.ts index 61c2d44009..3fc70ebd9b 100644 --- a/packages/types/src/extensions/pn-any-address-based-types.ts +++ b/packages/types/src/extensions/pn-any-address-based-types.ts @@ -6,7 +6,6 @@ export interface IAddressBased extends PnAnyDeclarative.IAnyDeclarative { createAddPaymentAddressAction: (creationParameters: IAddPaymentAddressParameters) => IAction; createAddRefundAddressAction: (creationParameters: IAddRefundAddressParameters) => IAction; - supportedNetworks: string[]; } /** Extension values of the extension */ diff --git a/packages/types/src/extensions/pn-any-declarative-types.ts b/packages/types/src/extensions/pn-any-declarative-types.ts index 145207e518..51b08922c8 100644 --- a/packages/types/src/extensions/pn-any-declarative-types.ts +++ b/packages/types/src/extensions/pn-any-declarative-types.ts @@ -15,7 +15,7 @@ export interface IAnyDeclarative createAddRefundInstructionAction: ( parameters: IAddRefundInstructionParameters, ) => Extension.IAction; - createCreationAction: (parameters?: TCreationParameters) => Extension.IAction; + createCreationAction: (parameters: TCreationParameters) => Extension.IAction; createAddDelegateAction: (parameters: IAddDelegateParameters) => Extension.IAction; } diff --git a/packages/types/src/extensions/pn-any-to-erc20-types.ts b/packages/types/src/extensions/pn-any-to-erc20-types.ts index 13f1b62a6c..40eea9a473 100644 --- a/packages/types/src/extensions/pn-any-to-erc20-types.ts +++ b/packages/types/src/extensions/pn-any-to-erc20-types.ts @@ -1,10 +1,7 @@ -import * as Extension from '../extension-types'; import * as PnAnyToAnyConversion from './pn-any-to-any-conversion-types'; /** Any to ERC20 reference-based payment network extension interface */ -export interface IAnyToERC20 extends PnAnyToAnyConversion.IConversionReferenceBased { - createCreationAction: (parameters?: ICreationParameters) => Extension.IAction; -} +export type IAnyToERC20 = PnAnyToAnyConversion.IConversionReferenceBased; /** Parameters for the creation action */ export interface ICreationParameters extends PnAnyToAnyConversion.ICreationParameters { From 30827dd69635194ec8163b09e113b7ee0f7ea4d9 Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Wed, 12 Oct 2022 17:50:45 +0200 Subject: [PATCH 11/25] WIP --- .../payment-network/any-to-erc20-proxy.test.ts | 10 ++-------- .../any/any-to-erc20-proxy-contract.test.ts | 8 +++----- .../test/btc/mainnet-address-based.test.ts | 7 +++---- .../test/btc/testnet-address-based.test.ts | 7 +++---- .../payment-detection/test/declarative.test.ts | 7 +++---- .../test/erc20/escrow-proxy-contract.test.ts | 8 +++----- .../test/erc20/fee-proxy-contract.test.ts | 8 +++----- .../test/erc777/superfluid-detector.test.ts | 8 +++----- .../test/eth/fee-proxy-detector.test.ts | 7 +++---- .../test/eth/input-data.test.ts | 8 +++----- .../test/near/near-native.test.ts | 11 ++++++----- packages/payment-detection/test/utils.ts | 8 ++++++++ packages/request-logic/test/index.test.ts | 17 +++++++++++++---- .../test/unit/requestLogicCore.test.ts | 4 +++- 14 files changed, 59 insertions(+), 59 deletions(-) create mode 100644 packages/payment-detection/test/utils.ts diff --git a/packages/advanced-logic/test/extensions/payment-network/any-to-erc20-proxy.test.ts b/packages/advanced-logic/test/extensions/payment-network/any-to-erc20-proxy.test.ts index 804cceb224..214e512dcb 100644 --- a/packages/advanced-logic/test/extensions/payment-network/any-to-erc20-proxy.test.ts +++ b/packages/advanced-logic/test/extensions/payment-network/any-to-erc20-proxy.test.ts @@ -1,10 +1,6 @@ import { ExtensionTypes, RequestLogicTypes } from '@requestnetwork/types'; import Utils from '@requestnetwork/utils'; -import { - conversionSupportedNetworks, - CurrencyManager, - UnsupportedCurrencyError, -} from '@requestnetwork/currency'; +import { CurrencyManager, UnsupportedCurrencyError } from '@requestnetwork/currency'; import AnyToErc20Proxy from '../../../src/extensions/payment-network/any-to-erc20-proxy'; import * as DataConversionERC20FeeAddData from '../../utils/payment-network/erc20/any-to-erc20-proxy-add-data-generator'; @@ -153,9 +149,7 @@ describe('extensions/payment-network/erc20/any-to-erc20-fee-proxy-contract', () acceptedTokens: ['0x0000000000000000000000000000000000000003'], }); }).toThrowError( - `Payment network 'kovan' is not supported by this extension (only ${conversionSupportedNetworks.join( - ', ', - )})`, + "The currency '0x0000000000000000000000000000000000000003' on kovan is unknown or not supported.", ); }); diff --git a/packages/payment-detection/test/any/any-to-erc20-proxy-contract.test.ts b/packages/payment-detection/test/any/any-to-erc20-proxy-contract.test.ts index 927d075fc0..736ac92a07 100644 --- a/packages/payment-detection/test/any/any-to-erc20-proxy-contract.test.ts +++ b/packages/payment-detection/test/any/any-to-erc20-proxy-contract.test.ts @@ -11,6 +11,7 @@ import { import { CurrencyManager } from '@requestnetwork/currency'; import { ERC20__factory } from '@requestnetwork/smart-contracts/types'; import { AnyToERC20PaymentDetector } from '../../src/any/any-to-erc20-proxy'; +import { mockAdvancedLogicBase } from '../utils'; jest.mock('graphql-request'); const graphql = mocked(GraphQLClient.prototype); @@ -26,12 +27,9 @@ const createAddPaymentInstructionAction = jest.fn(); const createAddRefundInstructionAction = jest.fn(); const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { - applyActionToExtensions(): any { - return; - }, + ...mockAdvancedLogicBase, extensions: { anyToErc20Proxy: { - supportedNetworks: ['mainnet', 'rinkeby', 'goerli', 'private'], createAddPaymentAddressAction, createAddRefundAddressAction, createCreationAction, @@ -40,7 +38,7 @@ const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { createAddPaymentInstructionAction, createAddRefundInstructionAction, }, - }, + } as any as AdvancedLogicTypes.IAdvancedLogicExtensions, }; /* eslint-disable @typescript-eslint/no-unused-expressions */ diff --git a/packages/payment-detection/test/btc/mainnet-address-based.test.ts b/packages/payment-detection/test/btc/mainnet-address-based.test.ts index 8590338277..6bf74c32d2 100644 --- a/packages/payment-detection/test/btc/mainnet-address-based.test.ts +++ b/packages/payment-detection/test/btc/mainnet-address-based.test.ts @@ -1,13 +1,12 @@ import { AdvancedLogicTypes, PaymentTypes, RequestLogicTypes } from '@requestnetwork/types'; import { BtcMainnetAddressBasedDetector } from '../../src/btc/mainnet-address-based'; +import { mockAdvancedLogicBase } from '../utils'; let btcAddressedBased: BtcMainnetAddressBasedDetector; const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { - applyActionToExtensions(): any { - return; - }, + ...mockAdvancedLogicBase, extensions: { addressBasedBtc: { createAddPaymentAddressAction(): any { @@ -20,7 +19,7 @@ const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { return; }, }, - }, + } as any as AdvancedLogicTypes.IAdvancedLogicExtensions, }; // Most of the tests are done as integration tests in ../index.test.ts diff --git a/packages/payment-detection/test/btc/testnet-address-based.test.ts b/packages/payment-detection/test/btc/testnet-address-based.test.ts index 98cfde1ddd..7df19781ca 100644 --- a/packages/payment-detection/test/btc/testnet-address-based.test.ts +++ b/packages/payment-detection/test/btc/testnet-address-based.test.ts @@ -1,13 +1,12 @@ import { AdvancedLogicTypes, PaymentTypes, RequestLogicTypes } from '@requestnetwork/types'; import { BtcTestnetAddressBasedDetector } from '../../src/btc/testnet-address-based'; +import { mockAdvancedLogicBase } from '../utils'; let btcAddressedBased: BtcTestnetAddressBasedDetector; const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { - applyActionToExtensions(): any { - return; - }, + ...mockAdvancedLogicBase, extensions: { addressBasedTestnetBtc: { createAddPaymentAddressAction(): any { @@ -20,7 +19,7 @@ const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { return; }, }, - }, + } as any as AdvancedLogicTypes.IAdvancedLogicExtensions, }; // Most of the tests are done as integration tests in ../index.test.ts diff --git a/packages/payment-detection/test/declarative.test.ts b/packages/payment-detection/test/declarative.test.ts index e42ff573f7..ba8ea15c27 100644 --- a/packages/payment-detection/test/declarative.test.ts +++ b/packages/payment-detection/test/declarative.test.ts @@ -7,13 +7,12 @@ import { } from '@requestnetwork/types'; import { DeclarativePaymentDetector } from '../src/declarative'; +import { mockAdvancedLogicBase } from './utils'; let declarative: DeclarativePaymentDetector; const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { - applyActionToExtensions(): any { - return; - }, + ...mockAdvancedLogicBase, extensions: { declarative: { createAddPaymentInstructionAction(): any { @@ -38,7 +37,7 @@ const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { return; }, }, - }, + } as any as AdvancedLogicTypes.IAdvancedLogicExtensions, }; const requestMock: RequestLogicTypes.IRequest = { diff --git a/packages/payment-detection/test/erc20/escrow-proxy-contract.test.ts b/packages/payment-detection/test/erc20/escrow-proxy-contract.test.ts index 9298117001..17e05b5bd5 100644 --- a/packages/payment-detection/test/erc20/escrow-proxy-contract.test.ts +++ b/packages/payment-detection/test/erc20/escrow-proxy-contract.test.ts @@ -7,6 +7,7 @@ import { } from '@requestnetwork/types'; import { CurrencyManager } from '@requestnetwork/currency'; import { Erc20PaymentNetwork } from '../../src'; +import { mockAdvancedLogicBase } from '../utils'; let erc20FeeProxyDetector: Erc20PaymentNetwork.ERC20FeeProxyPaymentDetector; @@ -18,12 +19,9 @@ const createAddPaymentInstructionAction = jest.fn(); const createAddRefundInstructionAction = jest.fn(); const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { - applyActionToExtensions(): any { - return; - }, + ...mockAdvancedLogicBase, extensions: { feeProxyContractErc20: { - supportedNetworks: ['mainnet', 'private'], createAddPaymentAddressAction, createAddRefundAddressAction, createCreationAction, @@ -32,7 +30,7 @@ const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { createAddPaymentInstructionAction, createAddRefundInstructionAction, }, - }, + } as any as AdvancedLogicTypes.IAdvancedLogicExtensions, }; const currencyManager = CurrencyManager.getDefault(); diff --git a/packages/payment-detection/test/erc20/fee-proxy-contract.test.ts b/packages/payment-detection/test/erc20/fee-proxy-contract.test.ts index c0d924c21d..f539bc36b6 100644 --- a/packages/payment-detection/test/erc20/fee-proxy-contract.test.ts +++ b/packages/payment-detection/test/erc20/fee-proxy-contract.test.ts @@ -7,6 +7,7 @@ import { } from '@requestnetwork/types'; import { CurrencyManager } from '@requestnetwork/currency'; import { ERC20FeeProxyPaymentDetector } from '../../src/erc20/fee-proxy-contract'; +import { mockAdvancedLogicBase } from '../utils'; let erc20FeeProxyContract: ERC20FeeProxyPaymentDetector; @@ -18,12 +19,9 @@ const createAddPaymentInstructionAction = jest.fn(); const createAddRefundInstructionAction = jest.fn(); const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { - applyActionToExtensions(): any { - return; - }, + ...mockAdvancedLogicBase, extensions: { feeProxyContractErc20: { - supportedNetworks: ['mainnet', 'private', 'rinkeby', 'goerli'], createAddPaymentAddressAction, createAddRefundAddressAction, createCreationAction, @@ -32,7 +30,7 @@ const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { createAddPaymentInstructionAction, createAddRefundInstructionAction, }, - }, + } as any as AdvancedLogicTypes.IAdvancedLogicExtensions, }; const currencyManager = CurrencyManager.getDefault(); diff --git a/packages/payment-detection/test/erc777/superfluid-detector.test.ts b/packages/payment-detection/test/erc777/superfluid-detector.test.ts index 697d7db5ed..12309fe7b8 100644 --- a/packages/payment-detection/test/erc777/superfluid-detector.test.ts +++ b/packages/payment-detection/test/erc777/superfluid-detector.test.ts @@ -6,6 +6,7 @@ import { } from '@requestnetwork/types'; import { SuperFluidPaymentDetector } from '../../src/erc777/superfluid-detector'; import { genTransferEventsByMonth } from './mocks'; +import { mockAdvancedLogicBase } from '../utils'; let superfluidPaymentDetector: SuperFluidPaymentDetector; @@ -17,12 +18,9 @@ const createAddPaymentInstructionAction = jest.fn(); const createAddRefundInstructionAction = jest.fn(); const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { - applyActionToExtensions(): any { - return; - }, + ...mockAdvancedLogicBase, extensions: { feeProxyContractErc20: { - supportedNetworks: ['mainnet', 'private'], createAddPaymentAddressAction, createAddRefundAddressAction, createCreationAction, @@ -31,7 +29,7 @@ const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { createAddPaymentInstructionAction, createAddRefundInstructionAction, }, - }, + } as any as AdvancedLogicTypes.IAdvancedLogicExtensions, }; const baseRequestData = { creator: { type: IdentityTypes.TYPE.ETHEREUM_ADDRESS, value: '0x2' }, diff --git a/packages/payment-detection/test/eth/fee-proxy-detector.test.ts b/packages/payment-detection/test/eth/fee-proxy-detector.test.ts index 91ec3fd704..f22cd1347d 100644 --- a/packages/payment-detection/test/eth/fee-proxy-detector.test.ts +++ b/packages/payment-detection/test/eth/fee-proxy-detector.test.ts @@ -1,5 +1,6 @@ import { AdvancedLogicTypes, PaymentTypes, RequestLogicTypes } from '@requestnetwork/types'; import { EthFeeProxyPaymentDetector } from '../../src'; +import { mockAdvancedLogicBase } from '../utils'; let ethFeeProxyDetector: EthFeeProxyPaymentDetector; @@ -11,9 +12,7 @@ const createAddPaymentInstructionAction = jest.fn(); const createAddRefundInstructionAction = jest.fn(); const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { - applyActionToExtensions(): any { - return; - }, + ...mockAdvancedLogicBase, extensions: { feeProxyContractEth: { createAddPaymentAddressAction, @@ -25,7 +24,7 @@ const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { createAddPaymentInstructionAction, createAddRefundInstructionAction, }, - }, + } as any as AdvancedLogicTypes.IAdvancedLogicExtensions, }; /* eslint-disable @typescript-eslint/no-unused-expressions */ diff --git a/packages/payment-detection/test/eth/input-data.test.ts b/packages/payment-detection/test/eth/input-data.test.ts index 054c189c16..db38bd3f5c 100644 --- a/packages/payment-detection/test/eth/input-data.test.ts +++ b/packages/payment-detection/test/eth/input-data.test.ts @@ -5,6 +5,7 @@ import { RequestLogicTypes, } from '@requestnetwork/types'; import { EthInputDataPaymentDetector } from '../../src/eth/input-data'; +import { mockAdvancedLogicBase } from '../utils'; let ethInputData: EthInputDataPaymentDetector; @@ -15,20 +16,17 @@ const createAddPaymentInstructionAction = jest.fn(); const createAddRefundInstructionAction = jest.fn(); const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { - applyActionToExtensions(): any { - return; - }, + ...mockAdvancedLogicBase, extensions: { ethereumInputData: { createAddPaymentAddressAction, createAddRefundAddressAction, createCreationAction, - supportedNetworks: ['mainnet', 'rinkeby', 'goerli'], // inherited from declarative createAddPaymentInstructionAction, createAddRefundInstructionAction, }, - }, + } as any as AdvancedLogicTypes.IAdvancedLogicExtensions, }; // Most of the tests are done as integration tests in ../index.test.ts diff --git a/packages/payment-detection/test/near/near-native.test.ts b/packages/payment-detection/test/near/near-native.test.ts index ba5e64f857..3434964020 100644 --- a/packages/payment-detection/test/near/near-native.test.ts +++ b/packages/payment-detection/test/near/near-native.test.ts @@ -9,17 +9,18 @@ import { PaymentNetworkFactory } from '../../src/payment-network-factory'; import PaymentReferenceCalculator from '../../src/payment-reference-calculator'; import { NearNativeTokenPaymentDetector, NearInfoRetriever } from '../../src/near'; import { deepCopy } from 'ethers/lib/utils'; +import { mockAdvancedLogicBase } from '../utils'; const mockNearPaymentNetwork = { - supportedNetworks: ['aurora', 'aurora-testnet'], + supportedNetworks: ['aurora'], }; const currencyManager = CurrencyManager.getDefault(); const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { - applyActionToExtensions(): any { - return; - }, - extensions: { nativeToken: [mockNearPaymentNetwork] }, + ...mockAdvancedLogicBase, + extensions: { + nativeToken: [mockNearPaymentNetwork], + } as any as AdvancedLogicTypes.IAdvancedLogicExtensions, }; const salt = 'a6475e4c3d45feb6'; const paymentAddress = 'gus.near'; diff --git a/packages/payment-detection/test/utils.ts b/packages/payment-detection/test/utils.ts new file mode 100644 index 0000000000..f9b18c1c7f --- /dev/null +++ b/packages/payment-detection/test/utils.ts @@ -0,0 +1,8 @@ +import { AdvancedLogicTypes } from '@requestnetwork/types'; + +export const mockAdvancedLogicBase: AdvancedLogicTypes.IAdvancedLogic = { + applyActionToExtensions: jest.fn(), + getNativeTokenExtensionForNetwork: jest.fn(), + getAnyToNativeTokenExtensionForNetwork: jest.fn(), + extensions: {} as AdvancedLogicTypes.IAdvancedLogicExtensions, +}; diff --git a/packages/request-logic/test/index.test.ts b/packages/request-logic/test/index.test.ts index 78930adfd0..e8650a8dff 100644 --- a/packages/request-logic/test/index.test.ts +++ b/packages/request-logic/test/index.test.ts @@ -37,6 +37,13 @@ const fakeMetaTransactionManager = { }; let fakeTransactionManager: TransactionTypes.ITransactionManager; +const fakeAdvancedLogicBase: AdvancedLogicTypes.IAdvancedLogic = { + getAnyToNativeTokenExtensionForNetwork: jest.fn(), + getNativeTokenExtensionForNetwork: jest.fn(), + applyActionToExtensions: jest.fn(), + extensions: {} as AdvancedLogicTypes.IAdvancedLogicExtensions, +}; + /* eslint-disable @typescript-eslint/no-unused-expressions */ describe('index', () => { beforeEach(() => { @@ -79,10 +86,12 @@ describe('index', () => { it('cannot createRequest if apply fails in the advanced request logic', async () => { const fakeAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { + getAnyToNativeTokenExtensionForNetwork: jest.fn(), + getNativeTokenExtensionForNetwork: jest.fn(), applyActionToExtensions: (): RequestLogicTypes.IExtensionStates => { throw new Error('Expected throw'); }, - extensions: {}, + extensions: {} as AdvancedLogicTypes.IAdvancedLogicExtensions, }; const requestLogic = new RequestLogic( @@ -226,10 +235,10 @@ describe('index', () => { it('cannot create an encrypted request if apply fails in the advanced request logic', async () => { const fakeAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { + ...fakeAdvancedLogicBase, applyActionToExtensions: (): RequestLogicTypes.IExtensionStates => { throw new Error('Expected throw'); }, - extensions: {}, }; const requestLogic = new RequestLogic( @@ -396,10 +405,10 @@ describe('index', () => { it('cannot compute request id if apply fails in the advanced request logic', async () => { const fakeAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { + ...fakeAdvancedLogicBase, applyActionToExtensions: (): RequestLogicTypes.IExtensionStates => { throw new Error('Expected throw'); }, - extensions: {}, }; const requestLogic = new RequestLogic( @@ -893,10 +902,10 @@ describe('index', () => { }); it('cannot addExtension if apply fail in the advanced request logic', async () => { const fakeAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { + ...fakeAdvancedLogicBase, applyActionToExtensions: (): RequestLogicTypes.IExtensionStates => { throw new Error('Expected throw'); }, - extensions: {}, }; const actionCreate = Utils.signature.sign( diff --git a/packages/request-logic/test/unit/requestLogicCore.test.ts b/packages/request-logic/test/unit/requestLogicCore.test.ts index b5a722c541..4c7b610215 100644 --- a/packages/request-logic/test/unit/requestLogicCore.test.ts +++ b/packages/request-logic/test/unit/requestLogicCore.test.ts @@ -16,10 +16,12 @@ import * as TestData from './utils/test-data-generator'; import RequestLogicCore from '../../src/requestLogicCore'; const fakeAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { + getAnyToNativeTokenExtensionForNetwork: jest.fn(), + getNativeTokenExtensionForNetwork: jest.fn(), applyActionToExtensions: ( extensionStates: RequestLogicTypes.IExtensionStates, ): RequestLogicTypes.IExtensionStates => extensionStates, - extensions: {}, + extensions: {} as AdvancedLogicTypes.IAdvancedLogicExtensions, }; /* eslint-disable @typescript-eslint/no-unused-expressions */ From b472611e2412b1405bc20a234a2923c1181987f7 Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Thu, 13 Oct 2022 12:01:47 +0200 Subject: [PATCH 12/25] fix tests --- .../src/any-to-native-detector.ts | 8 +++---- .../src/native-token-detector.ts | 8 +++---- .../test/erc20/address-based.test.ts | 21 +++++++------------ .../test/erc20/proxy-contract.test.ts | 14 ++++++------- .../test/near/near-native-conversion.test.ts | 9 ++++---- .../test/payment-network-factory.test.ts | 18 ++++++++-------- .../test/api/content-data-manager.test.ts | 15 ++++++------- 7 files changed, 39 insertions(+), 54 deletions(-) diff --git a/packages/payment-detection/src/any-to-native-detector.ts b/packages/payment-detection/src/any-to-native-detector.ts index 0abab1fb95..b49c0a5923 100644 --- a/packages/payment-detection/src/any-to-native-detector.ts +++ b/packages/payment-detection/src/any-to-native-detector.ts @@ -1,7 +1,7 @@ -import { AdvancedLogicTypes, ExtensionTypes, PaymentTypes } from '@requestnetwork/types'; +import { ExtensionTypes, PaymentTypes } from '@requestnetwork/types'; import { AnyToAnyDetector } from './any-to-any-detector'; -import { ICurrencyManager } from '@requestnetwork/currency'; +import { ReferenceBasedDetectorOptions } from './types'; /** * Handle payment detection for native token payment with conversion @@ -14,10 +14,8 @@ export abstract class AnyToNativeDetector extends AnyToAnyDetector< network, advancedLogic, currencyManager, - }: { + }: ReferenceBasedDetectorOptions & { network: string; - advancedLogic: AdvancedLogicTypes.IAdvancedLogic; - currencyManager: ICurrencyManager; }) { const extensionId = PaymentTypes.PAYMENT_NETWORK_ID.ANY_TO_NATIVE; const extension = advancedLogic.getAnyToNativeTokenExtensionForNetwork( diff --git a/packages/payment-detection/src/native-token-detector.ts b/packages/payment-detection/src/native-token-detector.ts index 1903c62721..bc4364412f 100644 --- a/packages/payment-detection/src/native-token-detector.ts +++ b/packages/payment-detection/src/native-token-detector.ts @@ -1,7 +1,7 @@ -import { AdvancedLogicTypes, ExtensionTypes, PaymentTypes } from '@requestnetwork/types'; +import { ExtensionTypes, PaymentTypes } from '@requestnetwork/types'; import { ReferenceBasedDetector } from './reference-based-detector'; -import { ICurrencyManager } from '@requestnetwork/currency'; +import { ReferenceBasedDetectorOptions } from './types'; /** * Handle payment detection for native token payment @@ -14,10 +14,8 @@ export abstract class NativeTokenPaymentDetector extends ReferenceBasedDetector< network, advancedLogic, currencyManager, - }: { + }: ReferenceBasedDetectorOptions & { network: string; - advancedLogic: AdvancedLogicTypes.IAdvancedLogic; - currencyManager: ICurrencyManager; }) { const extensionId = PaymentTypes.PAYMENT_NETWORK_ID.NATIVE_TOKEN; const extension = advancedLogic.getNativeTokenExtensionForNetwork( diff --git a/packages/payment-detection/test/erc20/address-based.test.ts b/packages/payment-detection/test/erc20/address-based.test.ts index 93fa533021..77f2732842 100644 --- a/packages/payment-detection/test/erc20/address-based.test.ts +++ b/packages/payment-detection/test/erc20/address-based.test.ts @@ -5,28 +5,21 @@ import { RequestLogicTypes, } from '@requestnetwork/types'; import { ERC20AddressBasedPaymentDetector } from '../../src/erc20/address-based'; +import { mockAdvancedLogicBase } from '../utils'; jest.setTimeout(10000); let erc20AddressedBased: ERC20AddressBasedPaymentDetector; const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { - applyActionToExtensions(): any { - return; - }, + ...mockAdvancedLogicBase, extensions: { addressBasedErc20: { - createAddPaymentAddressAction(): any { - return; - }, - createAddRefundAddressAction(): any { - return; - }, - createCreationAction(): any { - return; - }, - }, - }, + createAddPaymentAddressAction: jest.fn(), + createAddRefundAddressAction: jest.fn(), + createCreationAction: jest.fn(), + } as any, + } as AdvancedLogicTypes.IAdvancedLogicExtensions, }; // Most of the tests are done as integration tests in ../index.test.ts diff --git a/packages/payment-detection/test/erc20/proxy-contract.test.ts b/packages/payment-detection/test/erc20/proxy-contract.test.ts index 9bac502765..da11743725 100644 --- a/packages/payment-detection/test/erc20/proxy-contract.test.ts +++ b/packages/payment-detection/test/erc20/proxy-contract.test.ts @@ -6,8 +6,9 @@ import { RequestLogicTypes, } from '@requestnetwork/types'; import { CurrencyManager } from '@requestnetwork/currency'; -import { ERC20ProxyPaymentDetector } from '../../src/erc20/proxy-contract'; -import { getTheGraphClient } from '../../src/thegraph'; +import { ERC20ProxyPaymentDetector } from '../../src/erc20'; +import { getTheGraphClient } from '../../src'; +import { mockAdvancedLogicBase } from '../utils'; let erc20ProxyContract: ERC20ProxyPaymentDetector; @@ -20,20 +21,17 @@ const createAddRefundInstructionAction = jest.fn(); jest.mock('../../src/thegraph/client'); const theGraphClientMock = mocked(getTheGraphClient('')); const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { - applyActionToExtensions(): any { - return; - }, + ...mockAdvancedLogicBase, extensions: { proxyContractErc20: { - supportedNetworks: ['mainnet', 'rinkeby', 'goerli'], createAddPaymentAddressAction, createAddRefundAddressAction, createCreationAction, // inheritance from declarative createAddPaymentInstructionAction, createAddRefundInstructionAction, - }, - }, + } as any, + } as any as AdvancedLogicTypes.IAdvancedLogicExtensions, }; /* eslint-disable @typescript-eslint/no-unused-expressions */ diff --git a/packages/payment-detection/test/near/near-native-conversion.test.ts b/packages/payment-detection/test/near/near-native-conversion.test.ts index 0e60995359..587d342c08 100644 --- a/packages/payment-detection/test/near/near-native-conversion.test.ts +++ b/packages/payment-detection/test/near/near-native-conversion.test.ts @@ -14,6 +14,7 @@ import { import { deepCopy } from 'ethers/lib/utils'; import { GraphQLClient } from 'graphql-request'; import { mocked } from 'ts-jest/utils'; +import { mockAdvancedLogicBase } from '../utils'; jest.mock('graphql-request'); const graphql = mocked(GraphQLClient.prototype); @@ -23,10 +24,10 @@ const mockNearPaymentNetwork = { const currencyManager = CurrencyManager.getDefault(); const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { - applyActionToExtensions(): any { - return; - }, - extensions: { anyToNativeToken: [mockNearPaymentNetwork] }, + ...mockAdvancedLogicBase, + extensions: { + anyToNativeToken: [mockNearPaymentNetwork], + } as any as AdvancedLogicTypes.IAdvancedLogicExtensions, }; const salt = 'a6475e4c3d45feb6'; const paymentAddress = 'issuer.near'; diff --git a/packages/payment-detection/test/payment-network-factory.test.ts b/packages/payment-detection/test/payment-network-factory.test.ts index 900c5f9e1f..997d1cfe80 100644 --- a/packages/payment-detection/test/payment-network-factory.test.ts +++ b/packages/payment-detection/test/payment-network-factory.test.ts @@ -5,17 +5,17 @@ import { RequestLogicTypes, } from '@requestnetwork/types'; import { CurrencyManager } from '@requestnetwork/currency'; -import { BtcMainnetAddressBasedDetector } from '../src/btc/mainnet-address-based'; -import { DeclarativePaymentDetector } from '../src/declarative'; -import { EthInputDataPaymentDetector } from '../src/eth/input-data'; - -import { PaymentNetworkFactory } from '../src/payment-network-factory'; +import { BtcMainnetAddressBasedDetector } from '../src/btc'; +import { + DeclarativePaymentDetector, + EthInputDataPaymentDetector, + PaymentNetworkFactory, +} from '../src'; +import { mockAdvancedLogicBase } from './utils'; const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { - applyActionToExtensions(): any { - return; - }, - extensions: {}, + ...mockAdvancedLogicBase, + extensions: {} as AdvancedLogicTypes.IAdvancedLogicExtensions, }; const currencyManager = CurrencyManager.getDefault(); diff --git a/packages/request-client.js/test/api/content-data-manager.test.ts b/packages/request-client.js/test/api/content-data-manager.test.ts index 0e4787d8c1..84362fd13e 100644 --- a/packages/request-client.js/test/api/content-data-manager.test.ts +++ b/packages/request-client.js/test/api/content-data-manager.test.ts @@ -3,18 +3,15 @@ import { AdvancedLogicTypes } from '@requestnetwork/types'; import ContentDataExtension from '../../src/api/content-data-extension'; import * as TestData from './data-for-content-data-extension'; +import { IAdvancedLogicExtensions } from '@requestnetwork/types/src/advanced-logic-types'; const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { - applyActionToExtensions(): any { - return; - }, + applyActionToExtensions: jest.fn(), + getNativeTokenExtensionForNetwork: jest.fn(), + getAnyToNativeTokenExtensionForNetwork: jest.fn(), extensions: { - contentData: { - createCreationAction(): any { - return; - }, - }, - }, + contentData: jest.fn(), + } as any as IAdvancedLogicExtensions, }; let contentDataExtension: ContentDataExtension; From d7cbe703b2ab9fbdb32559130f87bd8bcaa21055 Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Thu, 13 Oct 2022 19:46:39 +0200 Subject: [PATCH 13/25] fix tests --- .../src/erc20/address-based.ts | 12 ------- .../src/near/near-conversion-detector.ts | 5 ++- .../src/near/near-detector.ts | 5 ++- .../src/payment-detector-base.ts | 2 +- .../src/payment-network-factory.ts | 2 +- .../test/eth/input-data.test.ts | 5 ++- .../test/near/near-native-conversion.test.ts | 32 +++++------------ .../test/near/near-native.test.ts | 35 ++++++------------- 8 files changed, 31 insertions(+), 67 deletions(-) diff --git a/packages/payment-detection/src/erc20/address-based.ts b/packages/payment-detection/src/erc20/address-based.ts index 4664b3164f..51869075dc 100644 --- a/packages/payment-detection/src/erc20/address-based.ts +++ b/packages/payment-detection/src/erc20/address-based.ts @@ -4,11 +4,9 @@ import { PaymentTypes, RequestLogicTypes, } from '@requestnetwork/types'; -import { BalanceError } from '../balance-error'; import Erc20InfoRetriever from './address-based-info-retriever'; import { PaymentDetectorBase } from '../payment-detector-base'; -const supportedNetworks = ['mainnet', 'rinkeby', 'goerli', 'private']; /** * Handle payment networks with ERC20 based address extension @@ -83,16 +81,6 @@ export class ERC20AddressBasedPaymentDetector extends PaymentDetectorBase< request.currency.network = 'mainnet'; } - if (!supportedNetworks.includes(request.currency.network)) { - throw new BalanceError( - `Payment network ${ - request.currency.network - } not supported by ERC20 payment detection. Supported networks: ${supportedNetworks.join( - ', ', - )}`, - PaymentTypes.BALANCE_ERROR_CODE.NETWORK_NOT_SUPPORTED, - ); - } const { paymentAddress, refundAddress } = this.getPaymentExtension(request).values; this.checkRequiredParameter(paymentAddress, 'paymentAddress'); diff --git a/packages/payment-detection/src/near/near-conversion-detector.ts b/packages/payment-detection/src/near/near-conversion-detector.ts index 476c64c709..d5dc84b94d 100644 --- a/packages/payment-detection/src/near/near-conversion-detector.ts +++ b/packages/payment-detection/src/near/near-conversion-detector.ts @@ -2,6 +2,7 @@ import { ExtensionTypes, PaymentTypes, RequestLogicTypes } from '@requestnetwork import { UnsupportedCurrencyError } from '@requestnetwork/currency'; import { NearConversionInfoRetriever } from './retrievers/near-conversion-info-retriever'; import { AnyToNativeDetector } from '../any-to-native-detector'; +import { NetworkNotSupported } from '../balance-error'; // interface of the object indexing the proxy contract version interface IProxyContractVersion { @@ -29,7 +30,9 @@ export class NearConversionNativeTokenPaymentDetector extends AnyToNativeDetecto if (versionMap[chainName]?.[version]) { return versionMap[chainName][version]; } - throw Error(`Unconfigured chain '${chainName}' and version '${version}'.`); + throw new NetworkNotSupported( + `Unconfigured near-conversion-detector chain '${chainName}' and version '${version}'`, + ); }; /** diff --git a/packages/payment-detection/src/near/near-detector.ts b/packages/payment-detection/src/near/near-detector.ts index 6c560e7242..d8124002c7 100644 --- a/packages/payment-detection/src/near/near-detector.ts +++ b/packages/payment-detection/src/near/near-detector.ts @@ -1,6 +1,7 @@ import { ExtensionTypes, PaymentTypes, RequestLogicTypes } from '@requestnetwork/types'; import { NearInfoRetriever } from './retrievers/near-info-retriever'; import { NativeTokenPaymentDetector } from '../native-token-detector'; +import { NetworkNotSupported } from '../balance-error'; // interface of the object indexing the proxy contract version interface IProxyContractVersion { @@ -29,7 +30,9 @@ export class NearNativeTokenPaymentDetector extends NativeTokenPaymentDetector { if (versionMap[chainName]?.[version]) { return versionMap[chainName][version]; } - throw Error(`Unconfigured chain '${chainName}' and version '${version}'.`); + throw new NetworkNotSupported( + `Unconfigured near-detector chain '${chainName}' and version '${version}'`, + ); }; /** diff --git a/packages/payment-detection/src/payment-detector-base.ts b/packages/payment-detection/src/payment-detector-base.ts index 73c0066b67..15428f396e 100644 --- a/packages/payment-detection/src/payment-detector-base.ts +++ b/packages/payment-detection/src/payment-detector-base.ts @@ -47,7 +47,7 @@ export abstract class PaymentDetectorBase< } /** - * Gets all paymnent events for a given Request + * Gets all payment events for a given Request */ protected abstract getEvents( request: RequestLogicTypes.IRequest, diff --git a/packages/payment-detection/src/payment-network-factory.ts b/packages/payment-detection/src/payment-network-factory.ts index 741bfdde33..d95e8e47c6 100644 --- a/packages/payment-detection/src/payment-network-factory.ts +++ b/packages/payment-detection/src/payment-network-factory.ts @@ -135,7 +135,7 @@ export class PaymentNetworkFactory { ...this.options, }); - if ('getDeploymentInformation' in detectorClass) { + if (detector.extension && 'getDeploymentInformation' in detectorClass) { // this throws when the contract isn't deployed and was mandatory for payment detection (detectorClass as ContractBasedDetector).getDeploymentInformation( network, diff --git a/packages/payment-detection/test/eth/input-data.test.ts b/packages/payment-detection/test/eth/input-data.test.ts index 02eb3e3dde..8c3fe60dca 100644 --- a/packages/payment-detection/test/eth/input-data.test.ts +++ b/packages/payment-detection/test/eth/input-data.test.ts @@ -167,9 +167,8 @@ describe('api/eth/input-data', () => { expect(await ethInputData.getBalance(mockRequest as RequestLogicTypes.IRequest)).toMatchObject({ balance: null, error: { - code: PaymentTypes.BALANCE_ERROR_CODE.NETWORK_NOT_SUPPORTED, - message: - /Payment network wrong not supported by ETH payment detection\. Supported networks: mainnet, rinkeby, goerli, private.*/, + code: PaymentTypes.BALANCE_ERROR_CODE.UNKNOWN, + message: /invalid network/, }, events: [], }); diff --git a/packages/payment-detection/test/near/near-native-conversion.test.ts b/packages/payment-detection/test/near/near-native-conversion.test.ts index 587d342c08..e40be563d7 100644 --- a/packages/payment-detection/test/near/near-native-conversion.test.ts +++ b/packages/payment-detection/test/near/near-native-conversion.test.ts @@ -1,34 +1,20 @@ -import { - AdvancedLogicTypes, - ExtensionTypes, - PaymentTypes, - RequestLogicTypes, -} from '@requestnetwork/types'; +import { ExtensionTypes, PaymentTypes, RequestLogicTypes } from '@requestnetwork/types'; import { CurrencyDefinition, CurrencyManager } from '@requestnetwork/currency'; import { PaymentNetworkFactory } from '../../src/payment-network-factory'; import PaymentReferenceCalculator from '../../src/payment-reference-calculator'; import { - NearConversionNativeTokenPaymentDetector, NearConversionInfoRetriever, + NearConversionNativeTokenPaymentDetector, } from '../../src/near'; import { deepCopy } from 'ethers/lib/utils'; import { GraphQLClient } from 'graphql-request'; import { mocked } from 'ts-jest/utils'; -import { mockAdvancedLogicBase } from '../utils'; +import { AdvancedLogic } from '@requestnetwork/advanced-logic'; jest.mock('graphql-request'); const graphql = mocked(GraphQLClient.prototype); -const mockNearPaymentNetwork = { - supportedNetworks: ['aurora', 'aurora-testnet'], -}; const currencyManager = CurrencyManager.getDefault(); - -const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { - ...mockAdvancedLogicBase, - extensions: { - anyToNativeToken: [mockNearPaymentNetwork], - } as any as AdvancedLogicTypes.IAdvancedLogicExtensions, -}; +const advancedLogic = new AdvancedLogic(currencyManager); const salt = 'a6475e4c3d45feb6'; const paymentAddress = 'issuer.near'; const feeAddress = 'fee.near'; @@ -76,7 +62,7 @@ const graphPaymentEvent = { gasPrice: '2425000017', }; -const paymentNetworkFactory = new PaymentNetworkFactory(mockAdvancedLogic, currencyManager); +const paymentNetworkFactory = new PaymentNetworkFactory(advancedLogic, currencyManager); describe('Near payments detection', () => { beforeAll(() => { graphql.request.mockResolvedValue({ @@ -140,7 +126,7 @@ describe('Near payments detection', () => { it('NearConversionNativeTokenPaymentDetector can detect a payment on Near', async () => { const paymentDetector = new NearConversionNativeTokenPaymentDetector({ network: 'aurora', - advancedLogic: mockAdvancedLogic, + advancedLogic: advancedLogic, currencyManager, }); const balance = await paymentDetector.getBalance(request); @@ -165,7 +151,7 @@ describe('Near payments detection', () => { }; const paymentDetector = new NearConversionNativeTokenPaymentDetector({ network: 'aurora', - advancedLogic: mockAdvancedLogic, + advancedLogic: advancedLogic, currencyManager, }); expect(await paymentDetector.getBalance(requestWithWrongVersion)).toMatchObject({ @@ -195,7 +181,7 @@ describe('Near payments detection', () => { }; const paymentDetector = new NearConversionNativeTokenPaymentDetector({ network: 'aurora', - advancedLogic: mockAdvancedLogic, + advancedLogic: advancedLogic, currencyManager, }); expect(await paymentDetector.getBalance(requestWithWrongNetwork)).toMatchObject({ @@ -203,7 +189,7 @@ describe('Near payments detection', () => { error: { code: 2, message: - 'Payment network unknown-network not supported by pn-any-to-native-token payment detection. Supported networks: aurora, aurora-testnet', + "Unconfigured near-conversion-detector chain 'unknown-network' and version '0.1.0'", }, events: [], }); diff --git a/packages/payment-detection/test/near/near-native.test.ts b/packages/payment-detection/test/near/near-native.test.ts index 458d6a4963..6c93c11620 100644 --- a/packages/payment-detection/test/near/near-native.test.ts +++ b/packages/payment-detection/test/near/near-native.test.ts @@ -1,27 +1,13 @@ -import { - AdvancedLogicTypes, - ExtensionTypes, - PaymentTypes, - RequestLogicTypes, -} from '@requestnetwork/types'; +import { ExtensionTypes, PaymentTypes, RequestLogicTypes } from '@requestnetwork/types'; import { CurrencyManager } from '@requestnetwork/currency'; -import { PaymentNetworkFactory } from '../../src/payment-network-factory'; +import { PaymentNetworkFactory } from '../../src'; import PaymentReferenceCalculator from '../../src/payment-reference-calculator'; -import { NearNativeTokenPaymentDetector, NearInfoRetriever } from '../../src/near'; +import { NearInfoRetriever, NearNativeTokenPaymentDetector } from '../../src/near'; import { deepCopy } from 'ethers/lib/utils'; -import { mockAdvancedLogicBase } from '../utils'; +import { AdvancedLogic } from '@requestnetwork/advanced-logic'; -const mockNearPaymentNetwork = { - supportedNetworks: ['aurora'], -}; const currencyManager = CurrencyManager.getDefault(); - -const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { - ...mockAdvancedLogicBase, - extensions: { - nativeToken: [mockNearPaymentNetwork], - } as any as AdvancedLogicTypes.IAdvancedLogicExtensions, -}; +const advancedLogic = new AdvancedLogic(currencyManager); const salt = 'a6475e4c3d45feb6'; const paymentAddress = 'gus.near'; const request: any = { @@ -44,7 +30,7 @@ const request: any = { }, }; -const paymentNetworkFactory = new PaymentNetworkFactory(mockAdvancedLogic, currencyManager); +const paymentNetworkFactory = new PaymentNetworkFactory(advancedLogic, currencyManager); describe('Near payments detection', () => { it('NearInfoRetriever can retrieve a NEAR payment', async () => { @@ -89,7 +75,7 @@ describe('Near payments detection', () => { it('NearNativeTokenPaymentDetector can detect a payment on Near', async () => { const paymentDetector = new NearNativeTokenPaymentDetector({ network: 'aurora', - advancedLogic: mockAdvancedLogic, + advancedLogic: advancedLogic, currencyManager: CurrencyManager.getDefault(), }); const balance = await paymentDetector.getBalance(request); @@ -112,7 +98,7 @@ describe('Near payments detection', () => { }; const paymentDetector = new NearNativeTokenPaymentDetector({ network: 'aurora', - advancedLogic: mockAdvancedLogic, + advancedLogic: advancedLogic, currencyManager: CurrencyManager.getDefault(), }); expect(await paymentDetector.getBalance(requestWithWrongVersion)).toMatchObject({ @@ -130,15 +116,14 @@ describe('Near payments detection', () => { }; const paymentDetector = new NearNativeTokenPaymentDetector({ network: 'aurora', - advancedLogic: mockAdvancedLogic, + advancedLogic: advancedLogic, currencyManager: CurrencyManager.getDefault(), }); expect(await paymentDetector.getBalance(requestWithWrongNetwork)).toMatchObject({ balance: null, error: { code: 2, - message: - 'Payment network unknown-network not supported by pn-native-token payment detection. Supported networks: aurora, aurora-testnet', + message: "Unconfigured near-detector chain 'unknown-network' and version '0.2.0'", }, events: [], }); From 981d21b0b329e336efe26d8cad48cfc3cb8c93f7 Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Thu, 13 Oct 2022 20:14:18 +0200 Subject: [PATCH 14/25] fix tests --- .../test/erc20/address-based.test.ts | 21 ++++++++----------- .../test/erc20/proxy-contract.test.ts | 3 +-- .../test/near/near-native-conversion.test.ts | 9 +++++--- .../test/api/content-data-manager.test.ts | 2 +- 4 files changed, 17 insertions(+), 18 deletions(-) diff --git a/packages/payment-detection/test/erc20/address-based.test.ts b/packages/payment-detection/test/erc20/address-based.test.ts index 77f2732842..bc9f90f3d1 100644 --- a/packages/payment-detection/test/erc20/address-based.test.ts +++ b/packages/payment-detection/test/erc20/address-based.test.ts @@ -4,8 +4,10 @@ import { PaymentTypes, RequestLogicTypes, } from '@requestnetwork/types'; -import { ERC20AddressBasedPaymentDetector } from '../../src/erc20/address-based'; +import { ERC20AddressBasedPaymentDetector } from '../../src/erc20'; import { mockAdvancedLogicBase } from '../utils'; +import { AdvancedLogic } from '@requestnetwork/advanced-logic'; +import { CurrencyManager } from '@requestnetwork/currency'; jest.setTimeout(10000); @@ -110,18 +112,13 @@ describe('api/erc20/address-based', () => { }); it('should not throw when getBalance fail', async () => { - expect( - await erc20AddressedBased.getBalance({ + erc20AddressedBased = new ERC20AddressBasedPaymentDetector({ + advancedLogic: new AdvancedLogic(CurrencyManager.getDefault()), + }); + await expect( + erc20AddressedBased.getBalance({ currency: { network: 'wrong' }, } as RequestLogicTypes.IRequest), - ).toMatchObject({ - balance: null, - error: { - code: PaymentTypes.BALANCE_ERROR_CODE.NETWORK_NOT_SUPPORTED, - message: - 'Payment network wrong not supported by ERC20 payment detection. Supported networks: mainnet, rinkeby, goerli, private', - }, - events: [], - }); + ).resolves.not.toThrowError(); }); }); diff --git a/packages/payment-detection/test/erc20/proxy-contract.test.ts b/packages/payment-detection/test/erc20/proxy-contract.test.ts index da11743725..d6720d2f73 100644 --- a/packages/payment-detection/test/erc20/proxy-contract.test.ts +++ b/packages/payment-detection/test/erc20/proxy-contract.test.ts @@ -161,8 +161,7 @@ describe('api/erc20/proxy-contract', () => { balance: null, error: { code: PaymentTypes.BALANCE_ERROR_CODE.NETWORK_NOT_SUPPORTED, - message: - 'Payment network WRONG not supported by pn-erc20-proxy-contract payment detection. Supported networks: mainnet, rinkeby, goerli', + message: 'Network not supported for this payment network: WRONG', }, events: [], }); diff --git a/packages/payment-detection/test/near/near-native-conversion.test.ts b/packages/payment-detection/test/near/near-native-conversion.test.ts index e40be563d7..85d113c83f 100644 --- a/packages/payment-detection/test/near/near-native-conversion.test.ts +++ b/packages/payment-detection/test/near/near-native-conversion.test.ts @@ -109,9 +109,12 @@ describe('Near payments detection', () => { }); it('PaymentNetworkFactory can get the detector (testnet)', async () => { - expect(paymentNetworkFactory.getPaymentNetworkFromRequest(request)).toBeInstanceOf( - NearConversionNativeTokenPaymentDetector, - ); + expect( + paymentNetworkFactory.getPaymentNetworkFromRequest({ + ...request, + currency: { ...request.currency, network: 'aurora-testnet' }, + }), + ).toBeInstanceOf(NearConversionNativeTokenPaymentDetector); }); it('PaymentNetworkFactory can get the detector (mainnet)', async () => { diff --git a/packages/request-client.js/test/api/content-data-manager.test.ts b/packages/request-client.js/test/api/content-data-manager.test.ts index 84362fd13e..2fd94bc5bc 100644 --- a/packages/request-client.js/test/api/content-data-manager.test.ts +++ b/packages/request-client.js/test/api/content-data-manager.test.ts @@ -10,7 +10,7 @@ const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { getNativeTokenExtensionForNetwork: jest.fn(), getAnyToNativeTokenExtensionForNetwork: jest.fn(), extensions: { - contentData: jest.fn(), + contentData: { createCreationAction: jest.fn() }, } as any as IAdvancedLogicExtensions, }; From 5bf88cbb7e7c52a5604fed522b230ec034e68847 Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Fri, 14 Oct 2022 10:47:12 +0200 Subject: [PATCH 15/25] add NETWORK const --- .../src/extensions/payment-network/near/near-native.ts | 5 +++-- .../extensions/payment-network/near/near-testnet-native.ts | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/advanced-logic/src/extensions/payment-network/near/near-native.ts b/packages/advanced-logic/src/extensions/payment-network/near/near-native.ts index 5f354593f6..48c5b5d6f5 100644 --- a/packages/advanced-logic/src/extensions/payment-network/near/near-native.ts +++ b/packages/advanced-logic/src/extensions/payment-network/near/near-native.ts @@ -2,12 +2,13 @@ import { ExtensionTypes } from '@requestnetwork/types'; import NativeTokenPaymentNetwork from '../native-token'; const CURRENT_VERSION = '0.2.0'; +const NETWORK = 'aurora'; /** * Implementation of the payment network to pay in Near based on input data. */ export default class NearNativePaymentNetwork extends NativeTokenPaymentNetwork { - public constructor(supportedNetworks: string[] = ['aurora']) { + public constructor(supportedNetworks: string[] = [NETWORK]) { super(ExtensionTypes.ID.PAYMENT_NETWORK_NATIVE_TOKEN, CURRENT_VERSION, supportedNetworks); } @@ -18,6 +19,6 @@ export default class NearNativePaymentNetwork extends NativeTokenPaymentNetwork * @returns {boolean} true if address is valid */ protected isValidAddress(address: string): boolean { - return this.isValidAddressForSymbolAndNetwork(address, 'NEAR', 'aurora'); + return this.isValidAddressForSymbolAndNetwork(address, 'NEAR', NETWORK); } } diff --git a/packages/advanced-logic/src/extensions/payment-network/near/near-testnet-native.ts b/packages/advanced-logic/src/extensions/payment-network/near/near-testnet-native.ts index d236ef8dc4..3f70b9bbf6 100644 --- a/packages/advanced-logic/src/extensions/payment-network/near/near-testnet-native.ts +++ b/packages/advanced-logic/src/extensions/payment-network/near/near-testnet-native.ts @@ -1,11 +1,13 @@ import NearNativePaymentNetwork from './near-native'; +const NETWORK = 'aurora-testnet'; + /** * Implementation of the payment network to pay in Near on testnet based on input data. */ export default class NearTestnetNativeNativePaymentNetwork extends NearNativePaymentNetwork { public constructor() { - super(['aurora-testnet']); + super([NETWORK]); } /** @@ -15,6 +17,6 @@ export default class NearTestnetNativeNativePaymentNetwork extends NearNativePay * @returns {boolean} true if address is valid */ protected isValidAddress(address: string): boolean { - return this.isValidAddressForSymbolAndNetwork(address, 'NEAR-testnet', 'aurora-testnet'); + return this.isValidAddressForSymbolAndNetwork(address, 'NEAR-testnet', NETWORK); } } From d436294c71c77ce9307a101ceb94273f7834ba7d Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Fri, 14 Oct 2022 13:52:42 +0200 Subject: [PATCH 16/25] review update --- .../extensions/payment-network/near/any-to-near-testnet.ts | 1 + .../src/extensions/payment-network/near/any-to-near.ts | 7 ++----- .../src/extensions/payment-network/near/near-native.ts | 7 +++++-- .../extensions/payment-network/near/near-testnet-native.ts | 1 + .../extensions/payment-network/any-to-erc20-proxy.test.ts | 2 +- .../extensions/payment-network/any-to-eth-proxy.test.ts | 2 +- packages/payment-detection/src/declarative.ts | 7 ++----- 7 files changed, 13 insertions(+), 14 deletions(-) diff --git a/packages/advanced-logic/src/extensions/payment-network/near/any-to-near-testnet.ts b/packages/advanced-logic/src/extensions/payment-network/near/any-to-near-testnet.ts index 2bfa7f607c..8fdb5b8d9a 100644 --- a/packages/advanced-logic/src/extensions/payment-network/near/any-to-near-testnet.ts +++ b/packages/advanced-logic/src/extensions/payment-network/near/any-to-near-testnet.ts @@ -5,6 +5,7 @@ const NETWORK = 'aurora-testnet'; export default class AnyToNearTestnetPaymentNetwork extends AnyToNearPaymentNetwork { public constructor(currencyManager: ICurrencyManager) { + // testnet PN version is the same as mainnet, can be overridden here if needed super(currencyManager, [NETWORK]); } diff --git a/packages/advanced-logic/src/extensions/payment-network/near/any-to-near.ts b/packages/advanced-logic/src/extensions/payment-network/near/any-to-near.ts index adc323352b..06bb8391a6 100644 --- a/packages/advanced-logic/src/extensions/payment-network/near/any-to-near.ts +++ b/packages/advanced-logic/src/extensions/payment-network/near/any-to-near.ts @@ -9,12 +9,9 @@ export default class AnyToNearPaymentNetwork extends AnyToNativeTokenPaymentNetw public constructor( private currencyManager: ICurrencyManager, supportedNetworks: string[] = [NETWORK], + currentVersion: string = CURRENT_VERSION, ) { - super( - ExtensionTypes.ID.PAYMENT_NETWORK_ANY_TO_NATIVE_TOKEN, - CURRENT_VERSION, - supportedNetworks, - ); + super(ExtensionTypes.ID.PAYMENT_NETWORK_ANY_TO_NATIVE_TOKEN, currentVersion, supportedNetworks); } /** diff --git a/packages/advanced-logic/src/extensions/payment-network/near/near-native.ts b/packages/advanced-logic/src/extensions/payment-network/near/near-native.ts index 48c5b5d6f5..594855d168 100644 --- a/packages/advanced-logic/src/extensions/payment-network/near/near-native.ts +++ b/packages/advanced-logic/src/extensions/payment-network/near/near-native.ts @@ -8,8 +8,11 @@ const NETWORK = 'aurora'; * Implementation of the payment network to pay in Near based on input data. */ export default class NearNativePaymentNetwork extends NativeTokenPaymentNetwork { - public constructor(supportedNetworks: string[] = [NETWORK]) { - super(ExtensionTypes.ID.PAYMENT_NETWORK_NATIVE_TOKEN, CURRENT_VERSION, supportedNetworks); + public constructor( + supportedNetworks: string[] = [NETWORK], + currentVersion: string = CURRENT_VERSION, + ) { + super(ExtensionTypes.ID.PAYMENT_NETWORK_NATIVE_TOKEN, currentVersion, supportedNetworks); } /** diff --git a/packages/advanced-logic/src/extensions/payment-network/near/near-testnet-native.ts b/packages/advanced-logic/src/extensions/payment-network/near/near-testnet-native.ts index 3f70b9bbf6..8a4ef90665 100644 --- a/packages/advanced-logic/src/extensions/payment-network/near/near-testnet-native.ts +++ b/packages/advanced-logic/src/extensions/payment-network/near/near-testnet-native.ts @@ -7,6 +7,7 @@ const NETWORK = 'aurora-testnet'; */ export default class NearTestnetNativeNativePaymentNetwork extends NearNativePaymentNetwork { public constructor() { + // testnet PN version is the same as mainnet, can be overridden here if needed super([NETWORK]); } diff --git a/packages/advanced-logic/test/extensions/payment-network/any-to-erc20-proxy.test.ts b/packages/advanced-logic/test/extensions/payment-network/any-to-erc20-proxy.test.ts index 214e512dcb..57642ff853 100644 --- a/packages/advanced-logic/test/extensions/payment-network/any-to-erc20-proxy.test.ts +++ b/packages/advanced-logic/test/extensions/payment-network/any-to-erc20-proxy.test.ts @@ -139,7 +139,7 @@ describe('extensions/payment-network/erc20/any-to-erc20-fee-proxy-contract', () }).toThrowError('acceptedTokens must contains only valid ethereum addresses'); }); - it('cannot createCreationAction with network not supported', () => { + it('cannot createCreationAction with currency not supported', () => { // 'must throw' expect(() => { anyToErc20Proxy.createCreationAction({ diff --git a/packages/advanced-logic/test/extensions/payment-network/any-to-eth-proxy.test.ts b/packages/advanced-logic/test/extensions/payment-network/any-to-eth-proxy.test.ts index 9599bac872..d68cc4726b 100644 --- a/packages/advanced-logic/test/extensions/payment-network/any-to-eth-proxy.test.ts +++ b/packages/advanced-logic/test/extensions/payment-network/any-to-eth-proxy.test.ts @@ -111,7 +111,7 @@ describe('extensions/payment-network/ethereum/any-to-eth-fee-proxy-contract', () }).toThrowError('feeAmount is not a valid amount'); }); - it('cannot applyActionToExtensions of creation with an invalid network', () => { + it('cannot applyActionToExtensions of creation with an invalid network/currency pair', () => { const requestCreatedNoExtension: RequestLogicTypes.IRequest = Utils.deepCopy( TestData.requestCreatedNoExtension, ); diff --git a/packages/payment-detection/src/declarative.ts b/packages/payment-detection/src/declarative.ts index be52c4cb8e..d8d9af8b2c 100644 --- a/packages/payment-detection/src/declarative.ts +++ b/packages/payment-detection/src/declarative.ts @@ -14,7 +14,7 @@ export abstract class DeclarativePaymentDetectorBase< TExtension extends ExtensionTypes.PnAnyDeclarative.IAnyDeclarative, TPaymentEventParameters extends PaymentTypes.IDeclarativePaymentEventParameters, > extends PaymentDetectorBase { - public constructor(_paymentNetworkId: PaymentTypes.PAYMENT_NETWORK_ID, extension: TExtension) { + protected constructor(_paymentNetworkId: PaymentTypes.PAYMENT_NETWORK_ID, extension: TExtension) { super(_paymentNetworkId, extension); } @@ -193,10 +193,7 @@ export class DeclarativePaymentDetector extends DeclarativePaymentDetectorBase< PaymentTypes.IDeclarativePaymentEventParameters > { constructor({ advancedLogic }: { advancedLogic: AdvancedLogicTypes.IAdvancedLogic }) { - super( - PaymentTypes.PAYMENT_NETWORK_ID.DECLARATIVE, - advancedLogic.extensions.declarative as ExtensionTypes.PnAnyDeclarative.IAnyDeclarative, - ); + super(PaymentTypes.PAYMENT_NETWORK_ID.DECLARATIVE, advancedLogic.extensions.declarative); } protected async getEvents( From 203ef8f804e3531d32ae0117d326df418e3bdd6f Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Fri, 14 Oct 2022 16:39:21 +0200 Subject: [PATCH 17/25] fix after merge --- .../extensions/payment-network/near/any-to-near-testnet.ts | 6 ++---- .../src/extensions/payment-network/near/any-to-near.ts | 2 +- .../src/extensions/payment-network/near/near-native.ts | 5 ++--- .../extensions/payment-network/near/near-testnet-native.ts | 6 ++---- 4 files changed, 7 insertions(+), 12 deletions(-) diff --git a/packages/advanced-logic/src/extensions/payment-network/near/any-to-near-testnet.ts b/packages/advanced-logic/src/extensions/payment-network/near/any-to-near-testnet.ts index 8fdb5b8d9a..0c848ea398 100644 --- a/packages/advanced-logic/src/extensions/payment-network/near/any-to-near-testnet.ts +++ b/packages/advanced-logic/src/extensions/payment-network/near/any-to-near-testnet.ts @@ -1,12 +1,10 @@ import { ICurrencyManager } from '@requestnetwork/currency'; import AnyToNearPaymentNetwork from './any-to-near'; -const NETWORK = 'aurora-testnet'; - export default class AnyToNearTestnetPaymentNetwork extends AnyToNearPaymentNetwork { public constructor(currencyManager: ICurrencyManager) { // testnet PN version is the same as mainnet, can be overridden here if needed - super(currencyManager, [NETWORK]); + super(currencyManager, ['aurora-testnet', 'near-testnet']); } /** @@ -16,6 +14,6 @@ export default class AnyToNearTestnetPaymentNetwork extends AnyToNearPaymentNetw * @returns {boolean} true if address is valid */ protected isValidAddress(address: string): boolean { - return this.isValidAddressForSymbolAndNetwork(address, 'NEAR-testnet', NETWORK); + return this.isValidAddressForSymbolAndNetwork(address, 'NEAR-testnet', 'aurora-testnet'); } } diff --git a/packages/advanced-logic/src/extensions/payment-network/near/any-to-near.ts b/packages/advanced-logic/src/extensions/payment-network/near/any-to-near.ts index 7403ba615a..7573a7483d 100644 --- a/packages/advanced-logic/src/extensions/payment-network/near/any-to-near.ts +++ b/packages/advanced-logic/src/extensions/payment-network/near/any-to-near.ts @@ -20,7 +20,7 @@ export default class AnyToNearPaymentNetwork extends AnyToNativeTokenPaymentNetw * @returns {boolean} true if address is valid */ protected isValidAddress(address: string): boolean { - return this.isValidAddressForSymbolAndNetwork(address, 'NEAR', NETWORK); + return this.isValidAddressForSymbolAndNetwork(address, 'NEAR', 'aurora'); } /** diff --git a/packages/advanced-logic/src/extensions/payment-network/near/near-native.ts b/packages/advanced-logic/src/extensions/payment-network/near/near-native.ts index 594855d168..094c9b969e 100644 --- a/packages/advanced-logic/src/extensions/payment-network/near/near-native.ts +++ b/packages/advanced-logic/src/extensions/payment-network/near/near-native.ts @@ -2,14 +2,13 @@ import { ExtensionTypes } from '@requestnetwork/types'; import NativeTokenPaymentNetwork from '../native-token'; const CURRENT_VERSION = '0.2.0'; -const NETWORK = 'aurora'; /** * Implementation of the payment network to pay in Near based on input data. */ export default class NearNativePaymentNetwork extends NativeTokenPaymentNetwork { public constructor( - supportedNetworks: string[] = [NETWORK], + supportedNetworks: string[] = ['aurora', 'near'], currentVersion: string = CURRENT_VERSION, ) { super(ExtensionTypes.ID.PAYMENT_NETWORK_NATIVE_TOKEN, currentVersion, supportedNetworks); @@ -22,6 +21,6 @@ export default class NearNativePaymentNetwork extends NativeTokenPaymentNetwork * @returns {boolean} true if address is valid */ protected isValidAddress(address: string): boolean { - return this.isValidAddressForSymbolAndNetwork(address, 'NEAR', NETWORK); + return this.isValidAddressForSymbolAndNetwork(address, 'NEAR', 'aurora'); } } diff --git a/packages/advanced-logic/src/extensions/payment-network/near/near-testnet-native.ts b/packages/advanced-logic/src/extensions/payment-network/near/near-testnet-native.ts index 8a4ef90665..79d8220c58 100644 --- a/packages/advanced-logic/src/extensions/payment-network/near/near-testnet-native.ts +++ b/packages/advanced-logic/src/extensions/payment-network/near/near-testnet-native.ts @@ -1,14 +1,12 @@ import NearNativePaymentNetwork from './near-native'; -const NETWORK = 'aurora-testnet'; - /** * Implementation of the payment network to pay in Near on testnet based on input data. */ export default class NearTestnetNativeNativePaymentNetwork extends NearNativePaymentNetwork { public constructor() { // testnet PN version is the same as mainnet, can be overridden here if needed - super([NETWORK]); + super(['aurora-testnet', 'near-testnet']); } /** @@ -18,6 +16,6 @@ export default class NearTestnetNativeNativePaymentNetwork extends NearNativePay * @returns {boolean} true if address is valid */ protected isValidAddress(address: string): boolean { - return this.isValidAddressForSymbolAndNetwork(address, 'NEAR-testnet', NETWORK); + return this.isValidAddressForSymbolAndNetwork(address, 'NEAR-testnet', 'aurora-testnet'); } } From 08b65f9a0374111afda62098700885b507511009 Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Fri, 14 Oct 2022 16:41:40 +0200 Subject: [PATCH 18/25] fix after merge --- .../src/extensions/payment-network/near/any-to-near.ts | 6 +++++- .../src/extensions/payment-network/near/near-native.ts | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/advanced-logic/src/extensions/payment-network/near/any-to-near.ts b/packages/advanced-logic/src/extensions/payment-network/near/any-to-near.ts index 7573a7483d..a699f3f00f 100644 --- a/packages/advanced-logic/src/extensions/payment-network/near/any-to-near.ts +++ b/packages/advanced-logic/src/extensions/payment-network/near/any-to-near.ts @@ -7,7 +7,11 @@ const CURRENT_VERSION = '0.1.0'; export default class AnyToNearPaymentNetwork extends AnyToNativeTokenPaymentNetwork { public constructor( private currencyManager: ICurrencyManager, - supportedNetworks: string[] = ['aurora', 'near'], + supportedNetworks: string[] = [ + 'aurora', + // FIXME: enable near network support + // 'near' + ], currentVersion: string = CURRENT_VERSION, ) { super(ExtensionTypes.ID.PAYMENT_NETWORK_ANY_TO_NATIVE_TOKEN, currentVersion, supportedNetworks); diff --git a/packages/advanced-logic/src/extensions/payment-network/near/near-native.ts b/packages/advanced-logic/src/extensions/payment-network/near/near-native.ts index 094c9b969e..80d861aa0e 100644 --- a/packages/advanced-logic/src/extensions/payment-network/near/near-native.ts +++ b/packages/advanced-logic/src/extensions/payment-network/near/near-native.ts @@ -8,7 +8,11 @@ const CURRENT_VERSION = '0.2.0'; */ export default class NearNativePaymentNetwork extends NativeTokenPaymentNetwork { public constructor( - supportedNetworks: string[] = ['aurora', 'near'], + supportedNetworks: string[] = [ + 'aurora', + // FIXME: enable near network support + // 'near' + ], currentVersion: string = CURRENT_VERSION, ) { super(ExtensionTypes.ID.PAYMENT_NETWORK_NATIVE_TOKEN, currentVersion, supportedNetworks); From aef7c7f90460aedaf02810fd79a489ec2ae82583 Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Fri, 14 Oct 2022 16:45:16 +0200 Subject: [PATCH 19/25] fix aurora test --- .../test/extensions/payment-network/any-to-near.test.ts | 2 +- .../test/extensions/payment-network/native-token.test.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/advanced-logic/test/extensions/payment-network/any-to-near.test.ts b/packages/advanced-logic/test/extensions/payment-network/any-to-near.test.ts index 12fd2b0417..65bcfa8053 100644 --- a/packages/advanced-logic/test/extensions/payment-network/any-to-near.test.ts +++ b/packages/advanced-logic/test/extensions/payment-network/any-to-near.test.ts @@ -187,7 +187,7 @@ describe('extensions/payment-network/any-to-native-token', () => { network: 'another-chain', }); }).toThrowError( - `Payment network 'another-chain' is not supported by this extension (only aurora, near)`, + `Payment network 'another-chain' is not supported by this extension (only aurora)`, ); }); it('throws when payment network is missing', () => { diff --git a/packages/advanced-logic/test/extensions/payment-network/native-token.test.ts b/packages/advanced-logic/test/extensions/payment-network/native-token.test.ts index 18c383fc9d..314549eafd 100644 --- a/packages/advanced-logic/test/extensions/payment-network/native-token.test.ts +++ b/packages/advanced-logic/test/extensions/payment-network/native-token.test.ts @@ -137,7 +137,7 @@ describe('extensions/payment-network/native-token', () => { paymentNetworkName: 'another-chain', }); }).toThrowError( - `Payment network 'another-chain' is not supported by this extension (only aurora, near)`, + `Payment network 'another-chain' is not supported by this extension (only aurora)`, ); }); it('createCreationAction() throws without payment network', () => { From 58c1457ff787ccf8ad7901ca99bd8ea4f8a97bcd Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Fri, 14 Oct 2022 17:05:06 +0200 Subject: [PATCH 20/25] fix type --- packages/payment-detection/test/erc20/proxy-contract.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/payment-detection/test/erc20/proxy-contract.test.ts b/packages/payment-detection/test/erc20/proxy-contract.test.ts index d6720d2f73..20bea65ae6 100644 --- a/packages/payment-detection/test/erc20/proxy-contract.test.ts +++ b/packages/payment-detection/test/erc20/proxy-contract.test.ts @@ -30,7 +30,7 @@ const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { // inheritance from declarative createAddPaymentInstructionAction, createAddRefundInstructionAction, - } as any, + }, } as any as AdvancedLogicTypes.IAdvancedLogicExtensions, }; From f947d6b6fb5ae22b7dac3098e2c6ee19fddd3093 Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Fri, 14 Oct 2022 17:14:04 +0200 Subject: [PATCH 21/25] fix type --- .../request-client.js/test/api/request.test.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/request-client.js/test/api/request.test.ts b/packages/request-client.js/test/api/request.test.ts index 0b9575debf..1e12e6226a 100644 --- a/packages/request-client.js/test/api/request.test.ts +++ b/packages/request-client.js/test/api/request.test.ts @@ -1,10 +1,14 @@ import { CurrencyManager } from '@requestnetwork/currency'; -import { IdentityTypes, PaymentTypes, RequestLogicTypes } from '@requestnetwork/types'; +import { + ExtensionTypes, + IdentityTypes, + PaymentTypes, + RequestLogicTypes, +} from '@requestnetwork/types'; import { EventEmitter } from 'events'; import Request from '../../src/api/request'; -import { mockAdvancedLogic } from '@requestnetwork/integration-test/test/scheduled/mocks'; const mockRequestLogic: RequestLogicTypes.IRequestLogic = { async createRequest(): Promise { @@ -53,7 +57,8 @@ const mockRequestLogic: RequestLogicTypes.IRequestLogic = { }; const mockPaymentNetwork: PaymentTypes.IPaymentNetwork = { - extension: mockAdvancedLogic.extensions.declarative, + extension: + {} as ExtensionTypes.PnAnyDeclarative.IAnyDeclarative, paymentNetworkId: PaymentTypes.PAYMENT_NETWORK_ID.DECLARATIVE, async createExtensionsDataForCreation(): Promise { @@ -71,7 +76,8 @@ const mockPaymentNetwork: PaymentTypes.IPaymentNetwork = { }; const mockDeclarativePaymentNetwork: PaymentTypes.IPaymentNetwork = { - extension: mockAdvancedLogic.extensions.declarative, + extension: + {} as ExtensionTypes.PnAnyDeclarative.IAnyDeclarative, paymentNetworkId: PaymentTypes.PAYMENT_NETWORK_ID.DECLARATIVE, async createExtensionsDataForCreation(): Promise { return; From b3916cac36caa8784ae927e51f68410bba53f957 Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Wed, 19 Oct 2022 16:53:32 +0200 Subject: [PATCH 22/25] abstract protected constructor --- .../payment-detection/src/any-to-native-detector.ts | 10 ++-------- .../payment-detection/src/native-token-detector.ts | 10 ++-------- .../src/near/near-conversion-detector.ts | 5 +++++ packages/payment-detection/src/near/near-detector.ts | 5 +++++ packages/payment-detection/src/types.ts | 4 ++++ 5 files changed, 18 insertions(+), 16 deletions(-) diff --git a/packages/payment-detection/src/any-to-native-detector.ts b/packages/payment-detection/src/any-to-native-detector.ts index b49c0a5923..afeea93400 100644 --- a/packages/payment-detection/src/any-to-native-detector.ts +++ b/packages/payment-detection/src/any-to-native-detector.ts @@ -1,7 +1,7 @@ import { ExtensionTypes, PaymentTypes } from '@requestnetwork/types'; import { AnyToAnyDetector } from './any-to-any-detector'; -import { ReferenceBasedDetectorOptions } from './types'; +import { NativeDetectorOptions } from './types'; /** * Handle payment detection for native token payment with conversion @@ -10,13 +10,7 @@ export abstract class AnyToNativeDetector extends AnyToAnyDetector< ExtensionTypes.PnAnyToEth.IAnyToEth, PaymentTypes.IETHPaymentEventParameters > { - public constructor({ - network, - advancedLogic, - currencyManager, - }: ReferenceBasedDetectorOptions & { - network: string; - }) { + protected constructor({ network, advancedLogic, currencyManager }: NativeDetectorOptions) { const extensionId = PaymentTypes.PAYMENT_NETWORK_ID.ANY_TO_NATIVE; const extension = advancedLogic.getAnyToNativeTokenExtensionForNetwork( network, diff --git a/packages/payment-detection/src/native-token-detector.ts b/packages/payment-detection/src/native-token-detector.ts index bc4364412f..84d307a252 100644 --- a/packages/payment-detection/src/native-token-detector.ts +++ b/packages/payment-detection/src/native-token-detector.ts @@ -1,7 +1,7 @@ import { ExtensionTypes, PaymentTypes } from '@requestnetwork/types'; import { ReferenceBasedDetector } from './reference-based-detector'; -import { ReferenceBasedDetectorOptions } from './types'; +import { NativeDetectorOptions } from './types'; /** * Handle payment detection for native token payment @@ -10,13 +10,7 @@ export abstract class NativeTokenPaymentDetector extends ReferenceBasedDetector< ExtensionTypes.PnReferenceBased.IReferenceBased, PaymentTypes.IETHPaymentEventParameters > { - public constructor({ - network, - advancedLogic, - currencyManager, - }: ReferenceBasedDetectorOptions & { - network: string; - }) { + protected constructor({ network, advancedLogic, currencyManager }: NativeDetectorOptions) { const extensionId = PaymentTypes.PAYMENT_NETWORK_ID.NATIVE_TOKEN; const extension = advancedLogic.getNativeTokenExtensionForNetwork( network, diff --git a/packages/payment-detection/src/near/near-conversion-detector.ts b/packages/payment-detection/src/near/near-conversion-detector.ts index 0051787dd1..15c8085a1f 100644 --- a/packages/payment-detection/src/near/near-conversion-detector.ts +++ b/packages/payment-detection/src/near/near-conversion-detector.ts @@ -3,6 +3,7 @@ import { UnsupportedCurrencyError } from '@requestnetwork/currency'; import { NearConversionInfoRetriever } from './retrievers/near-conversion-info-retriever'; import { AnyToNativeDetector } from '../any-to-native-detector'; import { NetworkNotSupported } from '../balance-error'; +import { NativeDetectorOptions } from '../types'; // interface of the object indexing the proxy contract version interface IProxyContractVersion { @@ -18,6 +19,10 @@ const CONTRACT_ADDRESS_MAP: IProxyContractVersion = { * Handle payment detection for NEAR native token payment with conversion */ export class NearConversionNativeTokenPaymentDetector extends AnyToNativeDetector { + constructor(args: NativeDetectorOptions) { + super(args); + } + public static getContractName = (chainName: string, paymentNetworkVersion = '0.1.0'): string => { const version = NearConversionNativeTokenPaymentDetector.getVersionOrThrow(paymentNetworkVersion); diff --git a/packages/payment-detection/src/near/near-detector.ts b/packages/payment-detection/src/near/near-detector.ts index b19d86439f..80b14ade8c 100644 --- a/packages/payment-detection/src/near/near-detector.ts +++ b/packages/payment-detection/src/near/near-detector.ts @@ -2,6 +2,7 @@ import { ExtensionTypes, PaymentTypes, RequestLogicTypes } from '@requestnetwork import { NearInfoRetriever } from './retrievers/near-info-retriever'; import { NativeTokenPaymentDetector } from '../native-token-detector'; import { NetworkNotSupported } from '../balance-error'; +import { NativeDetectorOptions } from '../types'; // interface of the object indexing the proxy contract version interface IProxyContractVersion { @@ -18,6 +19,10 @@ const CONTRACT_ADDRESS_MAP: IProxyContractVersion = { * Handle payment detection for NEAR native token payment */ export class NearNativeTokenPaymentDetector extends NativeTokenPaymentDetector { + constructor(args: NativeDetectorOptions) { + super(args); + } + public static getContractName = (chainName: string, paymentNetworkVersion = '0.2.0'): string => { const version = NearNativeTokenPaymentDetector.getVersionOrThrow(paymentNetworkVersion); const versionMap: Record> = { diff --git a/packages/payment-detection/src/types.ts b/packages/payment-detection/src/types.ts index c767fee293..fe9490a679 100644 --- a/packages/payment-detection/src/types.ts +++ b/packages/payment-detection/src/types.ts @@ -65,3 +65,7 @@ export type ReferenceBasedDetectorOptions = { advancedLogic: AdvancedLogicTypes.IAdvancedLogic; currencyManager: ICurrencyManager; }; + +export type NativeDetectorOptions = ReferenceBasedDetectorOptions & { + network: string; +}; From e57b267a1ac0b14e51f44ff95fe90b465a280409 Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Wed, 19 Oct 2022 17:05:17 +0200 Subject: [PATCH 23/25] fixes https://github.com/RequestNetwork/requestNetwork/pull/950#discussion_r998061564 --- packages/advanced-logic/src/extensions/abstract-extension.ts | 1 - packages/advanced-logic/src/extensions/content-data.ts | 1 - .../src/extensions/payment-network/address-based.ts | 1 - .../src/extensions/payment-network/any-to-erc20-proxy.ts | 2 -- .../src/extensions/payment-network/any-to-eth-proxy.ts | 2 -- .../src/extensions/payment-network/near/any-to-near.ts | 1 - packages/data-access/src/data-access.ts | 1 - packages/ethereum-storage/src/ipfs-manager.ts | 2 -- packages/payment-detection/src/any-to-any-detector.ts | 2 -- packages/payment-detection/src/btc/address-based.ts | 3 --- packages/payment-detection/src/btc/mainnet-address-based.ts | 1 - packages/payment-detection/src/erc20/fee-proxy-contract.ts | 2 -- .../payment-detection/src/fee-reference-based-detector.ts | 1 - packages/payment-detection/src/near/near-detector.ts | 2 -- packages/payment-detection/src/provider.ts | 1 - packages/payment-processor/src/payment/btc-address-based.ts | 1 - packages/payment-processor/src/payment/erc20-fee-proxy.ts | 2 -- packages/payment-processor/src/payment/erc20-proxy.ts | 2 -- packages/payment-processor/src/payment/erc20.ts | 4 ---- packages/payment-processor/src/payment/eth-fee-proxy.ts | 1 - packages/payment-processor/src/payment/eth-proxy.ts | 1 - packages/payment-processor/src/payment/index.ts | 2 -- packages/payment-processor/src/payment/swap-any-to-erc20.ts | 2 -- .../payment-processor/src/payment/swap-erc20-fee-proxy.ts | 2 -- packages/payment-processor/src/payment/utils.ts | 5 ----- packages/request-client.js/src/api/request-network.ts | 5 ----- packages/request-logic/src/request-logic.ts | 2 -- packages/utils/src/providers.ts | 1 - 28 files changed, 53 deletions(-) diff --git a/packages/advanced-logic/src/extensions/abstract-extension.ts b/packages/advanced-logic/src/extensions/abstract-extension.ts index 6d257655d4..b0c0f847b1 100644 --- a/packages/advanced-logic/src/extensions/abstract-extension.ts +++ b/packages/advanced-logic/src/extensions/abstract-extension.ts @@ -119,7 +119,6 @@ export abstract class AbstractExtension implements Extensio * It is called at the beginning of every applyActionToExtension() * It must throw in case of error * - * @param request * @param extensionAction action to apply */ protected validate( diff --git a/packages/advanced-logic/src/extensions/content-data.ts b/packages/advanced-logic/src/extensions/content-data.ts index 182dee43ef..5c9bab5d96 100644 --- a/packages/advanced-logic/src/extensions/content-data.ts +++ b/packages/advanced-logic/src/extensions/content-data.ts @@ -37,7 +37,6 @@ export default class ContentDataExtension< * Applies a creation * * @param extensionAction action to apply - * @param timestamp * * @returns state of the extension created */ diff --git a/packages/advanced-logic/src/extensions/payment-network/address-based.ts b/packages/advanced-logic/src/extensions/payment-network/address-based.ts index 75a3131556..a97da66344 100644 --- a/packages/advanced-logic/src/extensions/payment-network/address-based.ts +++ b/packages/advanced-logic/src/extensions/payment-network/address-based.ts @@ -172,7 +172,6 @@ export default abstract class AddressBasedPaymentNetwork< * @param extensionAction action to apply * @param requestState request state read-only * @param actionSigner identity of the signer - * @param timestamp * * @returns state of the extension updated */ diff --git a/packages/advanced-logic/src/extensions/payment-network/any-to-erc20-proxy.ts b/packages/advanced-logic/src/extensions/payment-network/any-to-erc20-proxy.ts index b716eebeef..992ed2e25f 100644 --- a/packages/advanced-logic/src/extensions/payment-network/any-to-erc20-proxy.ts +++ b/packages/advanced-logic/src/extensions/payment-network/any-to-erc20-proxy.ts @@ -116,8 +116,6 @@ export default class AnyToErc20ProxyPaymentNetwork extends Erc20FeeProxyPaymentN /** * Validate the extension action regarding the currency and network * It must throw in case of error - * - * @param request */ protected validate( request: RequestLogicTypes.IRequest, diff --git a/packages/advanced-logic/src/extensions/payment-network/any-to-eth-proxy.ts b/packages/advanced-logic/src/extensions/payment-network/any-to-eth-proxy.ts index 95081e6fb0..bcb798f79a 100644 --- a/packages/advanced-logic/src/extensions/payment-network/any-to-eth-proxy.ts +++ b/packages/advanced-logic/src/extensions/payment-network/any-to-eth-proxy.ts @@ -69,8 +69,6 @@ export default class AnyToEthProxyPaymentNetwork extends EthereumFeeProxyPayment /** * Validate the extension action regarding the currency and network * It must throw in case of error - * - * @param request */ protected validate( request: RequestLogicTypes.IRequest, diff --git a/packages/advanced-logic/src/extensions/payment-network/near/any-to-near.ts b/packages/advanced-logic/src/extensions/payment-network/near/any-to-near.ts index a699f3f00f..66f48c98ab 100644 --- a/packages/advanced-logic/src/extensions/payment-network/near/any-to-near.ts +++ b/packages/advanced-logic/src/extensions/payment-network/near/any-to-near.ts @@ -102,7 +102,6 @@ export default class AnyToNearPaymentNetwork extends AnyToNativeTokenPaymentNetw * @param extensionAction action to apply * @param requestState request state read-only * @param actionSigner identity of the signer - * @param timestamp * * @returns state of the extension updated */ diff --git a/packages/data-access/src/data-access.ts b/packages/data-access/src/data-access.ts index 9df02bb3d4..df9ddf8728 100644 --- a/packages/data-access/src/data-access.ts +++ b/packages/data-access/src/data-access.ts @@ -92,7 +92,6 @@ export default class DataAccess implements DataAccessTypes.IDataAccess { * Constructor DataAccess interface * * @param IStorage storage storage object - * @param options */ public constructor(storage: StorageTypes.IStorage, options?: Partial) { const defaultOptions: IDataAccessOptions = { diff --git a/packages/ethereum-storage/src/ipfs-manager.ts b/packages/ethereum-storage/src/ipfs-manager.ts index 0ad13866a3..65fc0938ab 100644 --- a/packages/ethereum-storage/src/ipfs-manager.ts +++ b/packages/ethereum-storage/src/ipfs-manager.ts @@ -35,8 +35,6 @@ export default class IpfsManager { * @param options.ipfsConnection Object to connect to the ipfs gateway * If no values are provided default values from config are used * Private network is used for default values - * @param options.ipfsErrorHandling - * @param options.logger */ public constructor(options?: { ipfsGatewayConnection?: StorageTypes.IIpfsGatewayConnection; diff --git a/packages/payment-detection/src/any-to-any-detector.ts b/packages/payment-detection/src/any-to-any-detector.ts index 67ccf8c7cb..75cc59321a 100644 --- a/packages/payment-detection/src/any-to-any-detector.ts +++ b/packages/payment-detection/src/any-to-any-detector.ts @@ -12,9 +12,7 @@ export abstract class AnyToAnyDetector< TPaymentEventParameters, > extends FeeReferenceBasedDetector { /** - * @param paymentNetworkId * @param extension The advanced logic payment network extension, with conversion - * @param currencyManager */ protected constructor( paymentNetworkId: PaymentTypes.PAYMENT_NETWORK_ID, diff --git a/packages/payment-detection/src/btc/address-based.ts b/packages/payment-detection/src/btc/address-based.ts index 4398a7f2b8..0b0a4cb0ed 100644 --- a/packages/payment-detection/src/btc/address-based.ts +++ b/packages/payment-detection/src/btc/address-based.ts @@ -10,10 +10,7 @@ export abstract class BtcAddressBasedDetector extends PaymentDetectorBase< PaymentTypes.IBTCPaymentEventParameters > { /** - * @param networkId - * @param paymentNetworkId * @param extension The advanced logic payment network extensions - * @param bitcoinDetectionProvider */ protected constructor( private networkId: number, diff --git a/packages/payment-detection/src/btc/mainnet-address-based.ts b/packages/payment-detection/src/btc/mainnet-address-based.ts index cd3f0098a2..02e3c83d35 100644 --- a/packages/payment-detection/src/btc/mainnet-address-based.ts +++ b/packages/payment-detection/src/btc/mainnet-address-based.ts @@ -12,7 +12,6 @@ const MAINNET_BITCOIN_NETWORK_ID = 0; export class BtcMainnetAddressBasedDetector extends BtcAddressBasedDetector { /** * @param advancedLogic Instance of Advanced Logic layer, to get the extension - * @param bitcoinDetectionProvider */ public constructor({ advancedLogic, diff --git a/packages/payment-detection/src/erc20/fee-proxy-contract.ts b/packages/payment-detection/src/erc20/fee-proxy-contract.ts index 1c40698dcd..ef50f6ecfa 100644 --- a/packages/payment-detection/src/erc20/fee-proxy-contract.ts +++ b/packages/payment-detection/src/erc20/fee-proxy-contract.ts @@ -23,9 +23,7 @@ export abstract class ERC20FeeProxyPaymentDetectorBase< TPaymentEventParameters extends PaymentTypes.IERC20FeePaymentEventParameters, > extends FeeReferenceBasedDetector { /** - * @param paymentNetworkId * @param extension The advanced logic payment network extensions - * @param _currencyManager */ protected constructor( paymentNetworkId: PaymentTypes.PAYMENT_NETWORK_ID, diff --git a/packages/payment-detection/src/fee-reference-based-detector.ts b/packages/payment-detection/src/fee-reference-based-detector.ts index 6ff06b5894..7c27f29ff4 100644 --- a/packages/payment-detection/src/fee-reference-based-detector.ts +++ b/packages/payment-detection/src/fee-reference-based-detector.ts @@ -14,7 +14,6 @@ export abstract class FeeReferenceBasedDetector< /** * @param paymentNetworkId Example : PaymentTypes.PAYMENT_NETWORK_ID.ETH_INPUT_DATA * @param extension The advanced logic payment network extension, reference based - * @param currencyManager */ protected constructor( paymentNetworkId: PaymentTypes.PAYMENT_NETWORK_ID, diff --git a/packages/payment-detection/src/near/near-detector.ts b/packages/payment-detection/src/near/near-detector.ts index 80b14ade8c..861ab74010 100644 --- a/packages/payment-detection/src/near/near-detector.ts +++ b/packages/payment-detection/src/near/near-detector.ts @@ -50,8 +50,6 @@ export class NearNativeTokenPaymentDetector extends NativeTokenPaymentDetector { * @param address Address to check * @param eventName Indicate if it is an address for payment or refund * @param paymentReference The reference to identify the payment - * @param _requestCurrency - * @param paymentChain * @param paymentNetwork the payment network state * @returns The balance with events */ diff --git a/packages/payment-detection/src/provider.ts b/packages/payment-detection/src/provider.ts index b06067da67..d93af3a7e2 100644 --- a/packages/payment-detection/src/provider.ts +++ b/packages/payment-detection/src/provider.ts @@ -46,7 +46,6 @@ const networkRpcs: Record = { /** * @see getDefaultProvider - * @param network */ const defaultProviderFactory: ProviderFactory = (network: string | undefined) => { if (!network) { diff --git a/packages/payment-processor/src/payment/btc-address-based.ts b/packages/payment-processor/src/payment/btc-address-based.ts index 9e7c0b2479..260a7cd0b1 100644 --- a/packages/payment-processor/src/payment/btc-address-based.ts +++ b/packages/payment-processor/src/payment/btc-address-based.ts @@ -7,7 +7,6 @@ import { getAmountToPay } from './utils'; /** * Returns the BIP21 payment URL based on the Request's value - * @param request * @param amount optionally, the amount to pay. Defaults to remaining amount of the request. */ export function getBtcPaymentUrl(request: ClientTypes.IRequestData, amount?: BigNumberish): string { diff --git a/packages/payment-processor/src/payment/erc20-fee-proxy.ts b/packages/payment-processor/src/payment/erc20-fee-proxy.ts index 2df1952a75..8e99c98d05 100644 --- a/packages/payment-processor/src/payment/erc20-fee-proxy.ts +++ b/packages/payment-processor/src/payment/erc20-fee-proxy.ts @@ -18,7 +18,6 @@ import { IPreparedTransaction } from './prepared-transaction'; /** * Processes a transaction to pay an ERC20 Request with fees. - * @param request * @param signerOrProvider the Web3 provider, or signer. Defaults to window.ethereum. * @param amount optionally, the amount to pay. Defaults to remaining amount of the request. * @param feeAmount optionally, the fee amount to pay. Defaults to the fee amount. @@ -71,7 +70,6 @@ export function encodePayErc20FeeRequest( * Return the EIP-681 format URL with the transaction to pay an ERC20 * Warning: this EIP isn't widely used, be sure to test compatibility yourself. * - * @param request * @param amount optionally, the amount to pay. Defaults to remaining amount of the request. * @param feeAmountOverride optionally, the fee amount to pay. Defaults to the fee amount of the request. */ diff --git a/packages/payment-processor/src/payment/erc20-proxy.ts b/packages/payment-processor/src/payment/erc20-proxy.ts index f46f68ad45..19e062c901 100644 --- a/packages/payment-processor/src/payment/erc20-proxy.ts +++ b/packages/payment-processor/src/payment/erc20-proxy.ts @@ -17,7 +17,6 @@ import { IPreparedTransaction } from './prepared-transaction'; /** * Processes a transaction to pay an ERC20 Request. - * @param request * @param signerOrProvider the Web3 provider, or signer. Defaults to window.ethereum. * @param amount optionally, the amount to pay. Defaults to remaining amount of the request. * @param overrides optionally, override default transaction values, like gas. @@ -62,7 +61,6 @@ export function encodePayErc20Request( * Return the EIP-681 format URL with the transaction to pay an ERC20 * Warning: this EIP isn't widely used, be sure to test compatibility yourself. * - * @param request * @param amount optionally, the amount to pay. Defaults to remaining amount of the request. */ export function _getErc20ProxyPaymentUrl( diff --git a/packages/payment-processor/src/payment/erc20.ts b/packages/payment-processor/src/payment/erc20.ts index 87db47b13e..7385cf8500 100644 --- a/packages/payment-processor/src/payment/erc20.ts +++ b/packages/payment-processor/src/payment/erc20.ts @@ -21,7 +21,6 @@ import { IPreparedTransaction } from './prepared-transaction'; /** * Processes a transaction to pay an ERC20 Request. - * @param request * @param signerOrProvider the Web3 provider, or signer. Defaults to window.ethereum. * @param amount optionally, the amount to pay. Defaults to remaining amount of the request. * @param feeAmount optionally, the fee amount to pay. Only applicable to ERC20 Fee Payment network. Defaults to the fee amount. @@ -83,7 +82,6 @@ export async function hasErc20Approval( * @param spenderAddress address of the spender * @param provider the web3 provider. Defaults to Etherscan. * @param paymentCurrency ERC20 currency - * @param amount */ export async function checkErc20Allowance( ownerAddress: string, @@ -235,7 +233,6 @@ export async function getAnyErc20Balance( * Return the EIP-681 format URL with the transaction to pay an ERC20 * Warning: this EIP isn't widely used, be sure to test compatibility yourself. * - * @param request * @param amount optionally, the amount to pay. Defaults to remaining amount of the request. */ export function _getErc20PaymentUrl( @@ -254,7 +251,6 @@ export function _getErc20PaymentUrl( /** * Get the request payment network proxy address - * @param request * @returns the payment network proxy address */ function getProxyAddress(request: ClientTypes.IRequestData): string { diff --git a/packages/payment-processor/src/payment/eth-fee-proxy.ts b/packages/payment-processor/src/payment/eth-fee-proxy.ts index 96d2b7f4e4..5e9d9034cc 100644 --- a/packages/payment-processor/src/payment/eth-fee-proxy.ts +++ b/packages/payment-processor/src/payment/eth-fee-proxy.ts @@ -17,7 +17,6 @@ import { IPreparedTransaction } from './prepared-transaction'; /** * Processes a transaction to pay an ETH Request with fees. - * @param request * @param signerOrProvider the Web3 provider, or signer. Defaults to window.ethereum. * @param amount optionally, the amount to pay. Defaults to remaining amount of the request. * @param feeAmount optionally, the fee amount to pay. Defaults to the fee amount. diff --git a/packages/payment-processor/src/payment/eth-proxy.ts b/packages/payment-processor/src/payment/eth-proxy.ts index e60c7aa8ae..ce6a25716b 100644 --- a/packages/payment-processor/src/payment/eth-proxy.ts +++ b/packages/payment-processor/src/payment/eth-proxy.ts @@ -15,7 +15,6 @@ import { IPreparedTransaction } from './prepared-transaction'; /** * Processes a transaction to pay an ETH Request with the proxy contract. - * @param request * @param signerOrProvider the Web3 provider, or signer. Defaults to window.ethereum. * @param amount optionally, the amount to pay. Defaults to remaining amount of the request. * @param overrides optionally, override default transaction values, like gas. diff --git a/packages/payment-processor/src/payment/index.ts b/packages/payment-processor/src/payment/index.ts index 19b2ff0dc8..7957c3809c 100644 --- a/packages/payment-processor/src/payment/index.ts +++ b/packages/payment-processor/src/payment/index.ts @@ -220,8 +220,6 @@ export async function hasSufficientFunds( * Supported chains: EVMs and Near. * * @param fromAddress the address willing to pay - * @param amount - * @param currency * @param providerOptions.provider the Web3 provider. Defaults to getDefaultProvider. * @param providerOptions.nearWalletConnection the Near WalletConnection * @throws UnsupportedNetworkError if network isn't supported diff --git a/packages/payment-processor/src/payment/swap-any-to-erc20.ts b/packages/payment-processor/src/payment/swap-any-to-erc20.ts index aca8f6c4ae..bf4210b12c 100644 --- a/packages/payment-processor/src/payment/swap-any-to-erc20.ts +++ b/packages/payment-processor/src/payment/swap-any-to-erc20.ts @@ -21,7 +21,6 @@ export { ISwapSettings } from './swap-erc20-fee-proxy'; /** * Processes a transaction to swap tokens and pay an ERC20 Request through a proxy with fees. - * @param request * @param signerOrProvider the Web3 provider, or signer. Defaults to window.ethereum. * @param options to override amount, feeAmount and transaction parameters */ @@ -38,7 +37,6 @@ export async function swapToPayAnyToErc20Request( /** * Processes a transaction to swap tokens and pay an ERC20 Request through a proxy with fees. - * @param request * @param signerOrProvider the Web3 provider, or signer. Defaults to window.ethereum. * @param options to override amount, feeAmount and transaction parameters */ diff --git a/packages/payment-processor/src/payment/swap-erc20-fee-proxy.ts b/packages/payment-processor/src/payment/swap-erc20-fee-proxy.ts index 0c42ef521f..d03697fdc3 100644 --- a/packages/payment-processor/src/payment/swap-erc20-fee-proxy.ts +++ b/packages/payment-processor/src/payment/swap-erc20-fee-proxy.ts @@ -48,7 +48,6 @@ export interface IRequestPaymentOptions { /** * Processes a transaction to swap tokens and pay an ERC20 Request through a proxy with fees. - * @param request * @param signerOrProvider the Web3 provider, or signer. Defaults to window.ethereum. * @param swapSettings settings for the swap: swap path, max amount to swap, deadline * @param options to override amount, feeAmount and transaction parameters @@ -72,7 +71,6 @@ export async function swapErc20FeeProxyRequest( /** * Prepare a transaction to swap tokens and pay an ERC20 Request through a proxy with fees. - * @param request * @param signerOrProvider the Web3 provider, or signer. Defaults to window.ethereum. * @param swapSettings settings for the swap: swap path, max amount to swap, deadline * @param options to override amount, feeAmount and transaction parameters diff --git a/packages/payment-processor/src/payment/utils.ts b/packages/payment-processor/src/payment/utils.ts index 7e315803d7..e50e8951d6 100644 --- a/packages/payment-processor/src/payment/utils.ts +++ b/packages/payment-processor/src/payment/utils.ts @@ -36,8 +36,6 @@ export function getProvider(): providers.Web3Provider { /** * Utility to get a network provider, depending on the request's currency network. * Will throw an error if the network isn't mainnet, rinkeby, or goerli - * - * @param request */ export function getNetworkProvider(request: ClientTypes.IRequestData): providers.Provider { return getDefaultProvider(request.currencyInfo.network); @@ -71,7 +69,6 @@ export function getSigner( * Utility to access the payment address, reference, * and optional feeAmount, feeAddress, expectedFlowRate, expectedStartDate * of a Request. - * @param request */ export function getRequestPaymentValues(request: ClientTypes.IRequestData): { paymentAddress: string; @@ -191,8 +188,6 @@ const currenciesMap: any = { /** * Utility to validate a request currency and payment details against a paymentNetwork. - * @param request - * @param paymentNetworkId */ export function validateRequest( request: ClientTypes.IRequestData, diff --git a/packages/request-client.js/src/api/request-network.ts b/packages/request-client.js/src/api/request-network.ts index 703fc2f1ee..d1a38020ad 100644 --- a/packages/request-client.js/src/api/request-network.ts +++ b/packages/request-client.js/src/api/request-network.ts @@ -44,7 +44,6 @@ export default class RequestNetwork { * @param signatureProvider module in charge of the signatures * @param decryptionProvider module in charge of the decryption * @param paymentOptions options for payment detection - * @param currencyManager */ public constructor({ dataAccess, @@ -208,7 +207,6 @@ export default class RequestNetwork { /** * Create an array of request instances from an identity * - * @param identity * @param updatedBetween filter the requests with time boundaries * @param options options * @returns the Requests @@ -227,7 +225,6 @@ export default class RequestNetwork { /** * Create an array of request instances from multiple identities * - * @param identities * @param updatedBetween filter the requests with time boundaries * @param disablePaymentDetection if true, skip the payment detection * @returns the requests @@ -251,7 +248,6 @@ export default class RequestNetwork { /** * Create an array of request instances from a topic * - * @param topic * @param updatedBetween filter the requests with time boundaries * @param options options * @returns the Requests @@ -304,7 +300,6 @@ export default class RequestNetwork { /** * Create an array of request instances from a multiple topics * - * @param topics * @param updatedBetween filter the requests with time boundaries * @param options options * @returns the Requests diff --git a/packages/request-logic/src/request-logic.ts b/packages/request-logic/src/request-logic.ts index ff4d1683ae..6ad87a8312 100644 --- a/packages/request-logic/src/request-logic.ts +++ b/packages/request-logic/src/request-logic.ts @@ -450,7 +450,6 @@ export default class RequestLogic implements RequestLogicTypes.IRequestLogic { /** * Gets the requests indexed by a topic from the transactions of transaction-manager layer * - * @param topic * @returns all the requests indexed by topic */ public async getRequestsByTopic( @@ -470,7 +469,6 @@ export default class RequestLogic implements RequestLogicTypes.IRequestLogic { /** * Gets the requests indexed by multiple topics from the transactions of transaction-manager layer * - * @param topics * @returns all the requests indexed by topics */ public async getRequestsByMultipleTopics( diff --git a/packages/utils/src/providers.ts b/packages/utils/src/providers.ts index 77c5b62601..079e7ba88d 100644 --- a/packages/utils/src/providers.ts +++ b/packages/utils/src/providers.ts @@ -45,7 +45,6 @@ const networkRpcs: Record = { /** * @see getDefaultProvider - * @param network */ const defaultProviderFactory: ProviderFactory = (network: string | undefined) => { if (!network) { From 867551976ab6a79d0d0426032ab6c98e4bfe6a7c Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Wed, 19 Oct 2022 19:57:00 +0200 Subject: [PATCH 24/25] add warn for ERC20InfoRetriever --- .../src/erc20/address-based-info-retriever.ts | 9 +++++++-- packages/payment-detection/src/provider.ts | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/payment-detection/src/erc20/address-based-info-retriever.ts b/packages/payment-detection/src/erc20/address-based-info-retriever.ts index 3d9487ce4a..6f82237cf4 100644 --- a/packages/payment-detection/src/erc20/address-based-info-retriever.ts +++ b/packages/payment-detection/src/erc20/address-based-info-retriever.ts @@ -53,7 +53,7 @@ export default class ERC20InfoRetriever { /** * @param tokenContractAddress The address of the ERC20 contract - * @param address Address of the balance we want to check + * @param toAddress Address of the balance we want to check * @param eventName Indicate if it is an address for payment or refund * @param network The Ethereum network to use */ @@ -71,7 +71,7 @@ export default class ERC20InfoRetriever // Creates a local or default provider const provider = getDefaultProvider(this.network); - // Setup the ERC20 contract interface + // Set up the ERC20 contract interface const contract = new ethers.Contract( this.tokenContractAddress, erc20BalanceOfAbiFragment, @@ -79,6 +79,11 @@ export default class ERC20InfoRetriever ); // Create a filter to find all the Transfer logs for the toAddress + console.warn( + 'It is not recommended to use the ERC20InfoRetriever to retrieve ' + + 'all Transfer events from block "0" to block "latest", ' + + 'as this operation is not supported by most RPC providers', + ); const filter = contract.filters.Transfer(null, this.toAddress) as ethers.providers.Filter; filter.fromBlock = 0; filter.toBlock = 'latest'; diff --git a/packages/payment-detection/src/provider.ts b/packages/payment-detection/src/provider.ts index d93af3a7e2..2d3e74d9a4 100644 --- a/packages/payment-detection/src/provider.ts +++ b/packages/payment-detection/src/provider.ts @@ -99,7 +99,7 @@ const defaultProviderFactory: ProviderFactory = (network: string | undefined) => /** * Defines the behaviour to obtain a Provider for a given Network. - * May be overriden using setProviderFactory + * May be overridden using setProviderFactory */ let currentProviderFactory: CurrentProviderFactory = defaultProviderFactory; From e57154b5a0da5ca446644ee93f98c2fed75da95d Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Thu, 20 Oct 2022 17:50:09 +0200 Subject: [PATCH 25/25] fixes https://github.com/RequestNetwork/requestNetwork/pull/950#discussion_r998070316 --- .../payment-detection/src/payment-network-factory.ts | 9 +++++---- packages/payment-detection/src/utils.ts | 12 ++++++------ packages/types/src/extension-types.ts | 5 +++++ packages/types/src/payment-types.ts | 1 + 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/packages/payment-detection/src/payment-network-factory.ts b/packages/payment-detection/src/payment-network-factory.ts index 6be74837b1..5426ffdc9a 100644 --- a/packages/payment-detection/src/payment-network-factory.ts +++ b/packages/payment-detection/src/payment-network-factory.ts @@ -112,6 +112,7 @@ export class PaymentNetworkFactory { paymentNetworkId: PaymentTypes.PAYMENT_NETWORK_ID, currencyType: RequestLogicTypes.CURRENCY, currencyNetwork?: string, + paymentNetworkVersion?: string, ): PaymentTypes.IPaymentNetwork { const network = currencyNetwork || 'mainnet'; const currencyPaymentMap = @@ -142,7 +143,7 @@ export class PaymentNetworkFactory { // this throws when the contract isn't deployed and was mandatory for payment detection (detectorClass as ContractBasedDetector).getDeploymentInformation( network, - detector.extension.currentVersion, + paymentNetworkVersion || detector.extension.currentVersion, ); } @@ -160,16 +161,16 @@ export class PaymentNetworkFactory { request: RequestLogicTypes.IRequest, ): PaymentTypes.IPaymentNetwork | null { const pn = getPaymentNetworkExtension(request); - if (!pn) { return null; } - const paymentNetworkId = pn.id as unknown as PaymentTypes.PAYMENT_NETWORK_ID; + const { id, version } = pn; return this.createPaymentNetwork( - paymentNetworkId, + id as unknown as PaymentTypes.PAYMENT_NETWORK_ID, request.currency.type, request.currency.network, + version, ); } } diff --git a/packages/payment-detection/src/utils.ts b/packages/payment-detection/src/utils.ts index 0053c769bb..ba2cdc3944 100644 --- a/packages/payment-detection/src/utils.ts +++ b/packages/payment-detection/src/utils.ts @@ -1,7 +1,7 @@ import { CurrencyDefinition } from '@requestnetwork/currency'; -import { RequestLogicTypes, PaymentTypes, ExtensionTypes } from '@requestnetwork/types'; +import { ExtensionTypes, PaymentTypes, RequestLogicTypes } from '@requestnetwork/types'; import { BigNumber, BigNumberish, Contract, errors, logger } from 'ethers'; -import { keccak256, LogDescription, getAddress } from 'ethers/lib/utils'; +import { getAddress, keccak256, LogDescription } from 'ethers/lib/utils'; import { ContractArtifact, DeploymentInformation } from '@requestnetwork/smart-contracts'; import { NetworkNotSupported, VersionNotSupported } from './balance-error'; import PaymentReferenceCalculator from './payment-reference-calculator'; @@ -131,12 +131,12 @@ export const calculateEscrowState = ( /** * Return the payment network extension of a Request. */ -export function getPaymentNetworkExtension( +export function getPaymentNetworkExtension( request: Pick, -): ExtensionTypes.IState | undefined { +): ExtensionTypes.IPaymentNetworkState | undefined { return Object.values(request.extensions).find( (x) => x.type === ExtensionTypes.TYPE.PAYMENT_NETWORK, - ); + ) as ExtensionTypes.IPaymentNetworkState; } type PaymentParameters = PaymentTypes.IReferenceBasedCreationParameters & @@ -158,7 +158,7 @@ export function getPaymentReference( request: Pick, event: PaymentTypes.EVENTS_NAMES = PaymentTypes.EVENTS_NAMES.PAYMENT, ): string | undefined { - const extension = getPaymentNetworkExtension(request) as ExtensionTypes.IState; + const extension = getPaymentNetworkExtension(request); if (!extension) { throw new Error('no payment network found'); } diff --git a/packages/types/src/extension-types.ts b/packages/types/src/extension-types.ts index d463e13df0..187bc38914 100644 --- a/packages/types/src/extension-types.ts +++ b/packages/types/src/extension-types.ts @@ -53,6 +53,11 @@ export interface IState { values: T; } +/** Extensions state in advanced logic */ +export interface IPaymentNetworkState extends IState { + id: Exclude; +} + /** Creation action object */ export interface IAction { action: string; diff --git a/packages/types/src/payment-types.ts b/packages/types/src/payment-types.ts index fd799c7263..86087be8af 100644 --- a/packages/types/src/payment-types.ts +++ b/packages/types/src/payment-types.ts @@ -19,6 +19,7 @@ export enum PAYMENT_NETWORK_ID { ANY_TO_ERC20_PROXY = Extension.ID.PAYMENT_NETWORK_ANY_TO_ERC20_PROXY, ANY_TO_ETH_PROXY = Extension.ID.PAYMENT_NETWORK_ANY_TO_ETH_PROXY, } + /** Interface for payment network extensions state and interpretation */ export interface IPaymentNetwork { paymentNetworkId: PAYMENT_NETWORK_ID;