From c524f7e887d3c0f4d86e92f8683b301f30003d67 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Mon, 12 Feb 2024 16:35:30 +0100 Subject: [PATCH 1/8] Add simple test for csl gc --- test/CslGc.js | 35 +++++++++++++++++++++++++++++++++++ test/CslGc.purs | 45 +++++++++++++++++++++++++++++++++++++++++++++ test/Unit.purs | 2 ++ 3 files changed, 82 insertions(+) create mode 100644 test/CslGc.js create mode 100644 test/CslGc.purs diff --git a/test/CslGc.js b/test/CslGc.js new file mode 100644 index 0000000000..7641a961bf --- /dev/null +++ b/test/CslGc.js @@ -0,0 +1,35 @@ +/* global BROWSER_RUNTIME */ + +let lib; +if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); +} else { + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); +} + +import process from "process"; + +export const testExternalMemLeakImpl = config => async () => { + let externalMemUpperBound = null; + + for (let i = 0; i < config.numIterations; i++) { + // console.log(`\nIteration ${i}`); + + for (let j = 0; j < config.numArrays; j++) { + let bytes = new Uint8Array(Array(config.arrSize).fill(0)); + const _pd = lib.PlutusData.new_bytes(bytes); + } + + await new Promise(r => setTimeout(r, config.delay)); + + const memUsage = process.memoryUsage(); + // console.log(memUsage); + + if (i == config.refIteration) { + externalMemUpperBound = memUsage.external * (1 + config.maxError / 100); + } + if (i > config.refIteration && memUsage.external > externalMemUpperBound) { + throw new Error("External memory leak detected."); + } + } +}; diff --git a/test/CslGc.purs b/test/CslGc.purs new file mode 100644 index 0000000000..16476a1f2c --- /dev/null +++ b/test/CslGc.purs @@ -0,0 +1,45 @@ +module Test.Ctl.CslGc + ( suite + ) where + +import Prelude + +import Control.Promise (Promise, toAffE) +import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Effect (Effect) +import Effect.Aff (Aff) +import Mote (group, test) + +foreign import testExternalMemLeakImpl + :: CslGcTestConfig -> Effect (Promise Unit) + +suite :: TestPlanM (Aff Unit) Unit +suite = + group "CSL Garbage Collection" do + test "External memory does not leak" do + testExternalMemLeak + { numIterations: 15 + , refIteration: 5 + , maxError: 50 + , delay: 1200 + , numArrays: 20 + , arrSize: 1_000_000 + } + +type CslGcTestConfig = + { numIterations :: Int + , refIteration :: Int + , maxError :: Int -- percent + , delay :: Int -- msec + , numArrays :: Int + , arrSize :: Int + } + +-- We consider the test successfull if external memory consumption +-- stops growing after i-th iteration. +-- +-- Note, that wasm has no support for memory shrinking, i.e. once +-- the allocated memory is freed, it will be reused in subsequent +-- wasm allocations, but will not be returned to the process. +testExternalMemLeak :: CslGcTestConfig -> Aff Unit +testExternalMemLeak = toAffE <<< testExternalMemLeakImpl diff --git a/test/Unit.purs b/test/Unit.purs index a1b7daf913..46b4e64789 100644 --- a/test/Unit.purs +++ b/test/Unit.purs @@ -16,6 +16,7 @@ import Test.Ctl.Blockfrost.Aeson.Suite as Blockfrost.Aeson import Test.Ctl.Blockfrost.ProtocolParameters as Blockfrost.ProtocolParameters import Test.Ctl.ByteArray as ByteArray import Test.Ctl.CoinSelection as CoinSelection +import Test.Ctl.CslGc as CslGc import Test.Ctl.Data as Data import Test.Ctl.Data.Interval as Ctl.Data.Interval import Test.Ctl.Deserialization as Deserialization @@ -62,6 +63,7 @@ testPlan = do ByteArray.suite Cip25.suite Cip30SignData.suite + CslGc.suite Data.suite Deserialization.suite Hashing.suite From 0fc8424981e5b78bed8fefd9fe356b403f487075 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Mon, 12 Feb 2024 16:46:45 +0100 Subject: [PATCH 2/8] Fix formatting --- test/CslGc.js | 2 +- test/CslGc.purs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/CslGc.js b/test/CslGc.js index 7641a961bf..1f5cda5aee 100644 --- a/test/CslGc.js +++ b/test/CslGc.js @@ -17,7 +17,7 @@ export const testExternalMemLeakImpl = config => async () => { for (let j = 0; j < config.numArrays; j++) { let bytes = new Uint8Array(Array(config.arrSize).fill(0)); - const _pd = lib.PlutusData.new_bytes(bytes); + lib.PlutusData.new_bytes(bytes); } await new Promise(r => setTimeout(r, config.delay)); diff --git a/test/CslGc.purs b/test/CslGc.purs index 16476a1f2c..64fb9e30ba 100644 --- a/test/CslGc.purs +++ b/test/CslGc.purs @@ -36,7 +36,7 @@ type CslGcTestConfig = } -- We consider the test successfull if external memory consumption --- stops growing after i-th iteration. +-- stops growing after i-th iteration. -- -- Note, that wasm has no support for memory shrinking, i.e. once -- the allocated memory is freed, it will be reused in subsequent From 7c699db45b911fa0133aeccfc336abda69f8b75a Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Tue, 13 Feb 2024 17:21:52 +0100 Subject: [PATCH 3/8] Update csl and csl-gc-wrapper npm dependencies --- package-lock.json | 38 +++++++++++++++++++------------------- package.json | 2 +- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/package-lock.json b/package-lock.json index e33f069314..d5ef3adaa5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@emurgo/cardano-message-signing-nodejs": "1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", + "@mlabs-haskell/csl-gc-wrapper": "^1.0.2", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", @@ -63,14 +63,14 @@ "integrity": "sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==" }, "node_modules/@emurgo/cardano-serialization-lib-browser": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.4.0.tgz", - "integrity": "sha512-VWMvLRBFo7MAYh42zledURFs5BpMTWvkP4DzsLNbyJxZlwjDS+bPyehJVyGc116d2gq8NHFmANbfdeuK8ffJ7A==" + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.5.0.tgz", + "integrity": "sha512-qchOJ9NYDUz10tzs5r5QhP9hK0p+ZOlRiBwPdTAxqAYLw/8emYBkQQLaS8T1DF6EkeudyrgS00ym5Trw1fo4iA==" }, "node_modules/@emurgo/cardano-serialization-lib-nodejs": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.4.0.tgz", - "integrity": "sha512-dMiofDcqv+IrAITCgWBZmsMLqwv2xImDsJDSrKiYYG1zRKaL8XfMOxx6S0WEnKVj5/343Q5FFURYcSu3iBRNMQ==" + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.5.0.tgz", + "integrity": "sha512-IlVABlRgo9XaTR1NunwZpWcxnfEv04ba2l1vkUz4S1W7Jt36F4CtffP+jPeqBZGnAe+fnUwo0XjIJC3ZTNToNQ==" }, "node_modules/@esbuild/android-arm": { "version": "0.18.11", @@ -513,9 +513,9 @@ } }, "node_modules/@mlabs-haskell/csl-gc-wrapper": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.1.tgz", - "integrity": "sha512-8pEb4BoQlD5zN+KtOCgtTg62OmLPjMa+DiJvoAzlLcWmp01P3TyJPgbEOtS+xiZpGA+1rRkdyeeLZV3wyw8Xfw==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.2.tgz", + "integrity": "sha512-jyASltvC/ZVzpMUgbIkIaCLc56uGqymCPnieLkgIMWPhzcRoAxEfshjYONyxPY5XIl0NdIQXjbppXFoPQMk0VQ==" }, "node_modules/@mlabs-haskell/json-bigint": { "version": "2.0.0", @@ -6394,14 +6394,14 @@ "integrity": "sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==" }, "@emurgo/cardano-serialization-lib-browser": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.4.0.tgz", - "integrity": "sha512-VWMvLRBFo7MAYh42zledURFs5BpMTWvkP4DzsLNbyJxZlwjDS+bPyehJVyGc116d2gq8NHFmANbfdeuK8ffJ7A==" + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.5.0.tgz", + "integrity": "sha512-qchOJ9NYDUz10tzs5r5QhP9hK0p+ZOlRiBwPdTAxqAYLw/8emYBkQQLaS8T1DF6EkeudyrgS00ym5Trw1fo4iA==" }, "@emurgo/cardano-serialization-lib-nodejs": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.4.0.tgz", - "integrity": "sha512-dMiofDcqv+IrAITCgWBZmsMLqwv2xImDsJDSrKiYYG1zRKaL8XfMOxx6S0WEnKVj5/343Q5FFURYcSu3iBRNMQ==" + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.5.0.tgz", + "integrity": "sha512-IlVABlRgo9XaTR1NunwZpWcxnfEv04ba2l1vkUz4S1W7Jt36F4CtffP+jPeqBZGnAe+fnUwo0XjIJC3ZTNToNQ==" }, "@esbuild/android-arm": { "version": "0.18.11", @@ -6637,9 +6637,9 @@ } }, "@mlabs-haskell/csl-gc-wrapper": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.1.tgz", - "integrity": "sha512-8pEb4BoQlD5zN+KtOCgtTg62OmLPjMa+DiJvoAzlLcWmp01P3TyJPgbEOtS+xiZpGA+1rRkdyeeLZV3wyw8Xfw==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.2.tgz", + "integrity": "sha512-jyASltvC/ZVzpMUgbIkIaCLc56uGqymCPnieLkgIMWPhzcRoAxEfshjYONyxPY5XIl0NdIQXjbppXFoPQMk0VQ==" }, "@mlabs-haskell/json-bigint": { "version": "2.0.0", diff --git a/package.json b/package.json index 9cf1dee5ff..0a19852661 100755 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "@emurgo/cardano-message-signing-nodejs": "1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", + "@mlabs-haskell/csl-gc-wrapper": "^1.0.2", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", From 9359154b7f86144616803808ffd915228bf2caf9 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Tue, 13 Feb 2024 17:29:32 +0100 Subject: [PATCH 4/8] Update template --- templates/ctl-scaffold/package-lock.json | 38 ++++++++++++------------ templates/ctl-scaffold/package.json | 2 +- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/templates/ctl-scaffold/package-lock.json b/templates/ctl-scaffold/package-lock.json index 7b3db0184c..866cbc71a2 100644 --- a/templates/ctl-scaffold/package-lock.json +++ b/templates/ctl-scaffold/package-lock.json @@ -13,7 +13,7 @@ "@emurgo/cardano-message-signing-nodejs": "1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", + "@mlabs-haskell/csl-gc-wrapper": "^1.0.2", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", @@ -62,14 +62,14 @@ "integrity": "sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==" }, "node_modules/@emurgo/cardano-serialization-lib-browser": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.4.0.tgz", - "integrity": "sha512-VWMvLRBFo7MAYh42zledURFs5BpMTWvkP4DzsLNbyJxZlwjDS+bPyehJVyGc116d2gq8NHFmANbfdeuK8ffJ7A==" + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.5.0.tgz", + "integrity": "sha512-qchOJ9NYDUz10tzs5r5QhP9hK0p+ZOlRiBwPdTAxqAYLw/8emYBkQQLaS8T1DF6EkeudyrgS00ym5Trw1fo4iA==" }, "node_modules/@emurgo/cardano-serialization-lib-nodejs": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.4.0.tgz", - "integrity": "sha512-dMiofDcqv+IrAITCgWBZmsMLqwv2xImDsJDSrKiYYG1zRKaL8XfMOxx6S0WEnKVj5/343Q5FFURYcSu3iBRNMQ==" + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.5.0.tgz", + "integrity": "sha512-IlVABlRgo9XaTR1NunwZpWcxnfEv04ba2l1vkUz4S1W7Jt36F4CtffP+jPeqBZGnAe+fnUwo0XjIJC3ZTNToNQ==" }, "node_modules/@esbuild/android-arm": { "version": "0.18.11", @@ -512,9 +512,9 @@ } }, "node_modules/@mlabs-haskell/csl-gc-wrapper": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.1.tgz", - "integrity": "sha512-8pEb4BoQlD5zN+KtOCgtTg62OmLPjMa+DiJvoAzlLcWmp01P3TyJPgbEOtS+xiZpGA+1rRkdyeeLZV3wyw8Xfw==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.2.tgz", + "integrity": "sha512-jyASltvC/ZVzpMUgbIkIaCLc56uGqymCPnieLkgIMWPhzcRoAxEfshjYONyxPY5XIl0NdIQXjbppXFoPQMk0VQ==" }, "node_modules/@mlabs-haskell/json-bigint": { "version": "2.0.0", @@ -5537,14 +5537,14 @@ "integrity": "sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==" }, "@emurgo/cardano-serialization-lib-browser": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.4.0.tgz", - "integrity": "sha512-VWMvLRBFo7MAYh42zledURFs5BpMTWvkP4DzsLNbyJxZlwjDS+bPyehJVyGc116d2gq8NHFmANbfdeuK8ffJ7A==" + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.5.0.tgz", + "integrity": "sha512-qchOJ9NYDUz10tzs5r5QhP9hK0p+ZOlRiBwPdTAxqAYLw/8emYBkQQLaS8T1DF6EkeudyrgS00ym5Trw1fo4iA==" }, "@emurgo/cardano-serialization-lib-nodejs": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.4.0.tgz", - "integrity": "sha512-dMiofDcqv+IrAITCgWBZmsMLqwv2xImDsJDSrKiYYG1zRKaL8XfMOxx6S0WEnKVj5/343Q5FFURYcSu3iBRNMQ==" + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.5.0.tgz", + "integrity": "sha512-IlVABlRgo9XaTR1NunwZpWcxnfEv04ba2l1vkUz4S1W7Jt36F4CtffP+jPeqBZGnAe+fnUwo0XjIJC3ZTNToNQ==" }, "@esbuild/android-arm": { "version": "0.18.11", @@ -5780,9 +5780,9 @@ } }, "@mlabs-haskell/csl-gc-wrapper": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.1.tgz", - "integrity": "sha512-8pEb4BoQlD5zN+KtOCgtTg62OmLPjMa+DiJvoAzlLcWmp01P3TyJPgbEOtS+xiZpGA+1rRkdyeeLZV3wyw8Xfw==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.2.tgz", + "integrity": "sha512-jyASltvC/ZVzpMUgbIkIaCLc56uGqymCPnieLkgIMWPhzcRoAxEfshjYONyxPY5XIl0NdIQXjbppXFoPQMk0VQ==" }, "@mlabs-haskell/json-bigint": { "version": "2.0.0", diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index 1997e20657..62583c99f7 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -29,7 +29,7 @@ "@emurgo/cardano-message-signing-nodejs": "1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", + "@mlabs-haskell/csl-gc-wrapper": "^1.0.2", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", From aac3736387dec3d22c7a3222d46244911b283856 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 14 Feb 2024 19:04:34 +0400 Subject: [PATCH 5/8] Switch to cardano-serialization-lib-gc (instead of separate browser/nodejs versions of CSL). --- package-lock.json | 43 ++++++------------- package.json | 3 +- src/Internal/ApplyArgs.js | 5 +-- src/Internal/BalanceTx/UtxoMinAda.js | 9 +--- src/Internal/Deserialization/FromBytes.js | 9 +--- src/Internal/Deserialization/Keys.js | 9 +--- src/Internal/Deserialization/Language.js | 9 +--- src/Internal/Deserialization/NativeScript.js | 9 +--- src/Internal/Deserialization/PlutusData.js | 9 +--- src/Internal/Deserialization/Transaction.js | 9 +--- src/Internal/Deserialization/UnspentOutput.js | 9 +--- src/Internal/Hashing.js | 11 +---- src/Internal/Serialization.js | 9 +--- src/Internal/Serialization/Address.js | 9 +--- src/Internal/Serialization/AuxiliaryData.js | 9 +--- src/Internal/Serialization/BigInt.js | 9 +--- src/Internal/Serialization/Hash.js | 9 +--- src/Internal/Serialization/Keys.js | 2 - src/Internal/Serialization/MinFee.js | 9 +--- src/Internal/Serialization/NativeScript.js | 9 +--- src/Internal/Serialization/PlutusData.js | 9 +--- src/Internal/Serialization/PlutusScript.js | 9 +--- src/Internal/Serialization/WitnessSet.js | 9 +--- src/Internal/Types/BigNum.js | 10 +---- src/Internal/Types/Int.js | 9 +--- src/Internal/Wallet/Bip32.js | 10 +---- test/Wallet/Cip30/SignData.js | 9 ++-- 27 files changed, 41 insertions(+), 223 deletions(-) diff --git a/package-lock.json b/package-lock.json index d5ef3adaa5..1b1ee70052 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,8 +11,7 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", + "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.9", "@mlabs-haskell/csl-gc-wrapper": "^1.0.2", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", @@ -494,22 +493,14 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, - "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-browser": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.6.tgz", - "integrity": "sha512-b7dLrrhjUJSdsmjzariCZO734NB+M/ONLGBiQ/TQzMRtsMydqSFQg6WbMdwYPustoNmQOg6a8bm9+RgllqdmFw==", + "node_modules/@mlabs-haskell/cardano-serialization-lib-gc": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.9.tgz", + "integrity": "sha512-O3JZGS0GjbyQPlKP6KRb7Q78ANfqIHxpQ0xmX6BK9tUw6KOueNfJ6e80JD+MHogoPJwOei7prqpHgCu+hitNQw==", "dependencies": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" - } - }, - "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.6.tgz", - "integrity": "sha512-I1FqhjEHgib+y0+6K1tSqvrtldRvqjrM5mL+TW9224ezEDScQeCroPWbgGBwwi6rjkN9YpS8Uz6gC0vo8lua1A==", - "dependencies": { - "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" + "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", + "@mlabs-haskell/csl-gc-wrapper": "^1.0.2" } }, "node_modules/@mlabs-haskell/csl-gc-wrapper": { @@ -6618,22 +6609,14 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, - "@mlabs-haskell/cardano-serialization-lib-gc-browser": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.6.tgz", - "integrity": "sha512-b7dLrrhjUJSdsmjzariCZO734NB+M/ONLGBiQ/TQzMRtsMydqSFQg6WbMdwYPustoNmQOg6a8bm9+RgllqdmFw==", + "@mlabs-haskell/cardano-serialization-lib-gc": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.9.tgz", + "integrity": "sha512-O3JZGS0GjbyQPlKP6KRb7Q78ANfqIHxpQ0xmX6BK9tUw6KOueNfJ6e80JD+MHogoPJwOei7prqpHgCu+hitNQw==", "requires": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" - } - }, - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.6.tgz", - "integrity": "sha512-I1FqhjEHgib+y0+6K1tSqvrtldRvqjrM5mL+TW9224ezEDScQeCroPWbgGBwwi6rjkN9YpS8Uz6gC0vo8lua1A==", - "requires": { - "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" + "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", + "@mlabs-haskell/csl-gc-wrapper": "^1.0.2" } }, "@mlabs-haskell/csl-gc-wrapper": { diff --git a/package.json b/package.json index 0a19852661..a4e3b13720 100755 --- a/package.json +++ b/package.json @@ -36,8 +36,7 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", + "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.9", "@mlabs-haskell/csl-gc-wrapper": "^1.0.2", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", diff --git a/src/Internal/ApplyArgs.js b/src/Internal/ApplyArgs.js index 9ff6702981..bc93f773da 100644 --- a/src/Internal/ApplyArgs.js +++ b/src/Internal/ApplyArgs.js @@ -1,12 +1,11 @@ /* global BROWSER_RUNTIME */ -let lib; +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; + let apply_args; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); apply_args = await import("apply-args-browser"); } else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); apply_args = await import("apply-args-nodejs"); } diff --git a/src/Internal/BalanceTx/UtxoMinAda.js b/src/Internal/BalanceTx/UtxoMinAda.js index 5b6910c849..c26911f919 100644 --- a/src/Internal/BalanceTx/UtxoMinAda.js +++ b/src/Internal/BalanceTx/UtxoMinAda.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function minAdaForOutput(maybe) { return txOutput => dataCost => { diff --git a/src/Internal/Deserialization/FromBytes.js b/src/Internal/Deserialization/FromBytes.js index f7b57ae04c..985f7ca88c 100644 --- a/src/Internal/Deserialization/FromBytes.js +++ b/src/Internal/Deserialization/FromBytes.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function _fromBytes(helper) { return name => bytes => { diff --git a/src/Internal/Deserialization/Keys.js b/src/Internal/Deserialization/Keys.js index 4beb728a43..60f8e7c65f 100644 --- a/src/Internal/Deserialization/Keys.js +++ b/src/Internal/Deserialization/Keys.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function freshPrivateKey() { return lib.PrivateKey.generate_ed25519(); diff --git a/src/Internal/Deserialization/Language.js b/src/Internal/Deserialization/Language.js index e39c2a5aac..c299f8434b 100644 --- a/src/Internal/Deserialization/Language.js +++ b/src/Internal/Deserialization/Language.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function _convertLanguage(langCtors) { return cslLang => { diff --git a/src/Internal/Deserialization/NativeScript.js b/src/Internal/Deserialization/NativeScript.js index 4ef2dc16ba..9cccf27f8f 100644 --- a/src/Internal/Deserialization/NativeScript.js +++ b/src/Internal/Deserialization/NativeScript.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function _convertNativeScript(handler) { return ns => { diff --git a/src/Internal/Deserialization/PlutusData.js b/src/Internal/Deserialization/PlutusData.js index 3d0c288050..44425ea4e6 100644 --- a/src/Internal/Deserialization/PlutusData.js +++ b/src/Internal/Deserialization/PlutusData.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function _convertPlutusData(handle) { return pd => { diff --git a/src/Internal/Deserialization/Transaction.js b/src/Internal/Deserialization/Transaction.js index 57faa3572c..2347ef92f9 100644 --- a/src/Internal/Deserialization/Transaction.js +++ b/src/Internal/Deserialization/Transaction.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; const call = property => object => object[property](); const callMaybe = property => maybe => object => { diff --git a/src/Internal/Deserialization/UnspentOutput.js b/src/Internal/Deserialization/UnspentOutput.js index 61f5ecbee3..3af30f47e1 100644 --- a/src/Internal/Deserialization/UnspentOutput.js +++ b/src/Internal/Deserialization/UnspentOutput.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; const call = property => object => object[property](); const callMaybe = property => maybe => object => { diff --git a/src/Internal/Hashing.js b/src/Internal/Hashing.js index 0b647d6da4..c251e3c01a 100644 --- a/src/Internal/Hashing.js +++ b/src/Internal/Hashing.js @@ -1,16 +1,7 @@ -/* global BROWSER_RUNTIME */ - import Blake2 from "blakejs"; - import SHA256 from "jssha/sha256"; import SHA3 from "jssha/sha3"; - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function blake2b224Hash(bytesToHash) { return Blake2.blake2b(bytesToHash, null, 28); diff --git a/src/Internal/Serialization.js b/src/Internal/Serialization.js index ee93d49db9..d745526609 100644 --- a/src/Internal/Serialization.js +++ b/src/Internal/Serialization.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; const setter = prop => obj => value => () => obj["set_" + prop](value); diff --git a/src/Internal/Serialization/Address.js b/src/Internal/Serialization/Address.js index 083ece7f85..78800fccd0 100644 --- a/src/Internal/Serialization/Address.js +++ b/src/Internal/Serialization/Address.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; const callClassStaticMaybe = (classname, functionname) => maybe => input => { let ret = null; diff --git a/src/Internal/Serialization/AuxiliaryData.js b/src/Internal/Serialization/AuxiliaryData.js index 33fd344de2..367ec0b6c2 100644 --- a/src/Internal/Serialization/AuxiliaryData.js +++ b/src/Internal/Serialization/AuxiliaryData.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; const setter = prop => obj => value => () => obj["set_" + prop](value); diff --git a/src/Internal/Serialization/BigInt.js b/src/Internal/Serialization/BigInt.js index dc61768cc1..ad30d665c1 100644 --- a/src/Internal/Serialization/BigInt.js +++ b/src/Internal/Serialization/BigInt.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function _BigInt_from_str(helper) { return str => { diff --git a/src/Internal/Serialization/Hash.js b/src/Internal/Serialization/Hash.js index 1ac1b8c796..93d34250d3 100644 --- a/src/Internal/Serialization/Hash.js +++ b/src/Internal/Serialization/Hash.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function hashToBytes(hash) { return hash.to_bytes(); diff --git a/src/Internal/Serialization/Keys.js b/src/Internal/Serialization/Keys.js index 3c80c09b4f..9d80aa7ec1 100644 --- a/src/Internal/Serialization/Keys.js +++ b/src/Internal/Serialization/Keys.js @@ -1,5 +1,3 @@ -/* global BROWSER_RUNTIME */ - const bytesFromKey = key => key.as_bytes(); export { bytesFromKey as bytesFromPublicKey }; diff --git a/src/Internal/Serialization/MinFee.js b/src/Internal/Serialization/MinFee.js index 52e0732ada..195564dc7e 100644 --- a/src/Internal/Serialization/MinFee.js +++ b/src/Internal/Serialization/MinFee.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function _minFee(maybe) { return tx => txFeeFixed => txFeePerByte => { diff --git a/src/Internal/Serialization/NativeScript.js b/src/Internal/Serialization/NativeScript.js index 810331fa7c..030278d6c0 100644 --- a/src/Internal/Serialization/NativeScript.js +++ b/src/Internal/Serialization/NativeScript.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; const mkScript = prop => arg => lib.NativeScript[prop](arg); diff --git a/src/Internal/Serialization/PlutusData.js b/src/Internal/Serialization/PlutusData.js index 9c642c773e..ff29181d86 100644 --- a/src/Internal/Serialization/PlutusData.js +++ b/src/Internal/Serialization/PlutusData.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function _mkPlutusData_bytes(bytes) { return lib.PlutusData.new_bytes(bytes); diff --git a/src/Internal/Serialization/PlutusScript.js b/src/Internal/Serialization/PlutusScript.js index ab48270fec..01933a33e1 100644 --- a/src/Internal/Serialization/PlutusScript.js +++ b/src/Internal/Serialization/PlutusScript.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function newPlutusV1Script(bytes) { return lib.PlutusScript.new(bytes); diff --git a/src/Internal/Serialization/WitnessSet.js b/src/Internal/Serialization/WitnessSet.js index 96b8fd2cda..d916f7a673 100644 --- a/src/Internal/Serialization/WitnessSet.js +++ b/src/Internal/Serialization/WitnessSet.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function newTransactionWitnessSet() { return lib.TransactionWitnessSet.new(); diff --git a/src/Internal/Types/BigNum.js b/src/Internal/Types/BigNum.js index 5514c30545..df50fcd94b 100644 --- a/src/Internal/Types/BigNum.js +++ b/src/Internal/Types/BigNum.js @@ -1,12 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); - // lib = (await import("../../../../cardano-serialization-lib-gc/nodejs/index.js")); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function bnCompare(lhs) { return rhs => lhs.compare(rhs); diff --git a/src/Internal/Types/Int.js b/src/Internal/Types/Int.js index 8110b53cb3..0451643da2 100644 --- a/src/Internal/Types/Int.js +++ b/src/Internal/Types/Int.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export const newPositive = lib.Int.new; export const newNegative = lib.Int.new_negative; diff --git a/src/Internal/Wallet/Bip32.js b/src/Internal/Wallet/Bip32.js index 9518c96977..cb573568f5 100644 --- a/src/Internal/Wallet/Bip32.js +++ b/src/Internal/Wallet/Bip32.js @@ -1,12 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} - +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; import bip39 from "bip39"; const HARDENED = 0x80000000; diff --git a/test/Wallet/Cip30/SignData.js b/test/Wallet/Cip30/SignData.js index 7d99800c52..20554c46c6 100644 --- a/test/Wallet/Cip30/SignData.js +++ b/test/Wallet/Cip30/SignData.js @@ -1,16 +1,13 @@ /* global BROWSER_RUNTIME */ -let lib, csl; +import * as csl from "@mlabs-haskell/cardano-serialization-lib-gc"; + +let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { lib = await import("@emurgo/cardano-message-signing-browser"); - csl = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); } else { lib = await import("@emurgo/cardano-message-signing-nodejs"); - csl = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); } -// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; -// lib = gcWrapper(lib); -// csl = gcWrapper(csl); function opt_chain(maybe, obj) { const isNothing = x => x === null || x === undefined; From bddb8c0069c8f85bba9e1a30c057074edbbfe712 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 14 Feb 2024 19:16:57 +0400 Subject: [PATCH 6/8] Update the template --- templates/ctl-scaffold/flake.lock | 8 ++--- templates/ctl-scaffold/package-lock.json | 44 +++++++---------------- templates/ctl-scaffold/package.json | 4 +-- templates/ctl-scaffold/packages.dhall | 2 +- templates/ctl-scaffold/spago-packages.nix | 6 ++-- 5 files changed, 22 insertions(+), 42 deletions(-) diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index 1c4daa222b..f2c8668666 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -1686,17 +1686,17 @@ "plutip": "plutip" }, "locked": { - "lastModified": 1702645636, - "narHash": "sha256-GiSImwp0QoKheOhX7aftGpYayPdRdu3W1TcXY1GMUuk=", + "lastModified": 1703100799, + "narHash": "sha256-sFd2BgGbBxs/Qr0/dMfXLtZs3hQ87HZlHMU6L1WW7HI=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "a742692d605aabd75043aee9eef0ecdfec63eacc", + "rev": "7d533241367081fa69ec5f0ec8f50e00c39430c2", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "a742692d605aabd75043aee9eef0ecdfec63eacc", + "rev": "7d533241367081fa69ec5f0ec8f50e00c39430c2", "type": "github" } }, diff --git a/templates/ctl-scaffold/package-lock.json b/templates/ctl-scaffold/package-lock.json index 866cbc71a2..5ac6f4f09e 100644 --- a/templates/ctl-scaffold/package-lock.json +++ b/templates/ctl-scaffold/package-lock.json @@ -11,9 +11,7 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.2", + "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.9", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", @@ -493,22 +491,14 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, - "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-browser": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.6.tgz", - "integrity": "sha512-b7dLrrhjUJSdsmjzariCZO734NB+M/ONLGBiQ/TQzMRtsMydqSFQg6WbMdwYPustoNmQOg6a8bm9+RgllqdmFw==", + "node_modules/@mlabs-haskell/cardano-serialization-lib-gc": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.9.tgz", + "integrity": "sha512-O3JZGS0GjbyQPlKP6KRb7Q78ANfqIHxpQ0xmX6BK9tUw6KOueNfJ6e80JD+MHogoPJwOei7prqpHgCu+hitNQw==", "dependencies": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" - } - }, - "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.6.tgz", - "integrity": "sha512-I1FqhjEHgib+y0+6K1tSqvrtldRvqjrM5mL+TW9224ezEDScQeCroPWbgGBwwi6rjkN9YpS8Uz6gC0vo8lua1A==", - "dependencies": { - "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" + "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", + "@mlabs-haskell/csl-gc-wrapper": "^1.0.2" } }, "node_modules/@mlabs-haskell/csl-gc-wrapper": { @@ -5761,22 +5751,14 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, - "@mlabs-haskell/cardano-serialization-lib-gc-browser": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.6.tgz", - "integrity": "sha512-b7dLrrhjUJSdsmjzariCZO734NB+M/ONLGBiQ/TQzMRtsMydqSFQg6WbMdwYPustoNmQOg6a8bm9+RgllqdmFw==", + "@mlabs-haskell/cardano-serialization-lib-gc": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.9.tgz", + "integrity": "sha512-O3JZGS0GjbyQPlKP6KRb7Q78ANfqIHxpQ0xmX6BK9tUw6KOueNfJ6e80JD+MHogoPJwOei7prqpHgCu+hitNQw==", "requires": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" - } - }, - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.6.tgz", - "integrity": "sha512-I1FqhjEHgib+y0+6K1tSqvrtldRvqjrM5mL+TW9224ezEDScQeCroPWbgGBwwi6rjkN9YpS8Uz6gC0vo8lua1A==", - "requires": { - "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" + "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", + "@mlabs-haskell/csl-gc-wrapper": "^1.0.2" } }, "@mlabs-haskell/csl-gc-wrapper": { diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index 62583c99f7..fbaf0c66d4 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -27,9 +27,7 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.2", + "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.9", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index d6d88c4d74..436bf579c6 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -298,7 +298,7 @@ let additions = , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "7d533241367081fa69ec5f0ec8f50e00c39430c2" + , version = "aac3736387dec3d22c7a3222d46244911b283856" } , js-bigints = { dependencies = [ "integers", "maybe", "prelude" ] diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 5c9a5b894d..d6a1bba1aa 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -199,11 +199,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "7d533241367081fa69ec5f0ec8f50e00c39430c2"; + version = "aac3736387dec3d22c7a3222d46244911b283856"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "7d533241367081fa69ec5f0ec8f50e00c39430c2"; - sha256 = "0wpcjrajyfn53ijpdv1w2kg6rmifsz3p8gxx88zin1wv0437cmxh"; + rev = "aac3736387dec3d22c7a3222d46244911b283856"; + sha256 = "03x8yrhkfxlifv5g2sw4nmhysra1mwff4zwrqq04mxq840m0mm95"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From d027c9d1176d62043b874fb394197d28c9924d7a Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 14 Feb 2024 19:26:18 +0400 Subject: [PATCH 7/8] Update flake.nix in the template --- package-lock.json | 1 - package.json | 1 - templates/ctl-scaffold/flake.lock | 8 ++++---- templates/ctl-scaffold/flake.nix | 2 +- test/CslGc.js | 8 +------- 5 files changed, 6 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1b1ee70052..7de19f48f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,6 @@ "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.9", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.2", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", diff --git a/package.json b/package.json index a4e3b13720..2774857382 100755 --- a/package.json +++ b/package.json @@ -37,7 +37,6 @@ "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.9", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.2", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index f2c8668666..6f82969c7f 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -1686,17 +1686,17 @@ "plutip": "plutip" }, "locked": { - "lastModified": 1703100799, - "narHash": "sha256-sFd2BgGbBxs/Qr0/dMfXLtZs3hQ87HZlHMU6L1WW7HI=", + "lastModified": 1707923074, + "narHash": "sha256-JdUKKiAI90oAxpl/4hyvQWXtYbWEa/HKdpF2N2H2qA8=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "7d533241367081fa69ec5f0ec8f50e00c39430c2", + "rev": "aac3736387dec3d22c7a3222d46244911b283856", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "7d533241367081fa69ec5f0ec8f50e00c39430c2", + "rev": "aac3736387dec3d22c7a3222d46244911b283856", "type": "github" } }, diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index c1104f2e79..3c04a27538 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -16,7 +16,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "7d533241367081fa69ec5f0ec8f50e00c39430c2"; + rev = "aac3736387dec3d22c7a3222d46244911b283856"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; diff --git a/test/CslGc.js b/test/CslGc.js index 1f5cda5aee..bac78951b6 100644 --- a/test/CslGc.js +++ b/test/CslGc.js @@ -1,11 +1,5 @@ /* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; import process from "process"; From 2493eb510d3361f6e064d8efe812acf8cf2f3776 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 14 Feb 2024 19:50:07 +0400 Subject: [PATCH 8/8] Update CHANGELOG --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d451909cc6..e9acf3d449 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -72,6 +72,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Fixed +- WebAssembly memory leaks (`csl-gc-wrapper` used to depend on unstable `wasm-bidngen` API [that got changed](https://github.com/mlabs-haskell/csl-gc-wrapper/commit/2dea38228b77f7c904aafef12eece7e5af195977)) ([#1595](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1595)) + ### Removed - `ModifyTx` error: made conversion functions total and removed the need to handle it