From eb23b04ffec69a0f9f31f09985bc1012f3a386d2 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Tue, 17 Dec 2019 09:02:46 +0100 Subject: [PATCH 01/29] package updates --- package-lock.json | 1422 ++++++++++++--------------------------------- package.json | 16 +- 2 files changed, 394 insertions(+), 1044 deletions(-) diff --git a/package-lock.json b/package-lock.json index add52b1..8d285cc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -296,19 +296,12 @@ "defer-to-connect": "^1.0.1" } }, - "@truffle/error": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.0.8.tgz", - "integrity": "sha512-x55rtRuNfRO1azmZ30iR0pf0OJ6flQqbax1hJz+Avk1K5fdmOv5cr22s9qFnwTWnS6Bw0jvJEoR0ITsM7cPKtQ==", - "dev": true - }, "@truffle/hdwallet-provider": { - "version": "1.0.26", - "resolved": "https://registry.npmjs.org/@truffle/hdwallet-provider/-/hdwallet-provider-1.0.26.tgz", - "integrity": "sha512-ITEUOwT8o8FZmnAiZtFLHhTLFOlT5q/DIh9QzV+gG0GocqIY6D2CSLkhaqTn89xCGVftQfyQAFBqXfGRblNQKw==", + "version": "1.0.27", + "resolved": "https://registry.npmjs.org/@truffle/hdwallet-provider/-/hdwallet-provider-1.0.27.tgz", + "integrity": "sha512-Zj9evxhpTgWQu3XHiX6jBnINI52zT8MN5RhIKrcZCwabvCstrCiPMq0wDOuYxUVYfIeo5QvPz59O2zc5i7GFMw==", "dev": true, "requires": { - "@truffle/provider": "^0.2.3", "any-promise": "^1.3.0", "bindings": "^1.5.0", "bip39": "^2.4.2", @@ -316,7 +309,7 @@ "ethereumjs-tx": "^1.0.0", "ethereumjs-util": "^6.1.0", "ethereumjs-wallet": "^0.6.3", - "web3": "1.2.2", + "web3": "1.2.1", "web3-provider-engine": "git+https://github.com/trufflesuite/provider-engine.git#web3-one" }, "dependencies": { @@ -370,767 +363,12 @@ "safe-buffer": "^5.1.0" } }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "semver": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz", + "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==", "dev": true }, - "web3": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.2.2.tgz", - "integrity": "sha512-/ChbmB6qZpfGx6eNpczt5YSUBHEA5V2+iUCbn85EVb3Zv6FVxrOo5Tv7Lw0gE2tW7EEjASbCyp3mZeiZaCCngg==", - "dev": true, - "requires": { - "@types/node": "^12.6.1", - "web3-bzz": "1.2.2", - "web3-core": "1.2.2", - "web3-eth": "1.2.2", - "web3-eth-personal": "1.2.2", - "web3-net": "1.2.2", - "web3-shh": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-bzz": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.2.2.tgz", - "integrity": "sha512-b1O2ObsqUN1lJxmFSjvnEC4TsaCbmh7Owj3IAIWTKqL9qhVgx7Qsu5O9cD13pBiSPNZJ68uJPaKq380QB4NWeA==", - "dev": true, - "requires": { - "@types/node": "^10.12.18", - "got": "9.6.0", - "swarm-js": "0.1.39", - "underscore": "1.9.1" - }, - "dependencies": { - "@types/node": { - "version": "10.17.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.6.tgz", - "integrity": "sha512-0a2X6cgN3RdPBL2MIlR6Lt0KlM7fOFsutuXcdglcOq6WvLnYXgPQSh0Mx6tO1KCAE8MxbHSOSTWDoUxRq+l3DA==", - "dev": true - } - } - }, - "web3-core": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.2.2.tgz", - "integrity": "sha512-miHAX3qUgxV+KYfaOY93Hlc3kLW2j5fH8FJy6kSxAv+d4d5aH0wwrU2IIoJylQdT+FeenQ38sgsCnFu9iZ1hCQ==", - "dev": true, - "requires": { - "@types/bn.js": "^4.11.4", - "@types/node": "^12.6.1", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-core-requestmanager": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-core-helpers": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.2.2.tgz", - "integrity": "sha512-HJrRsIGgZa1jGUIhvGz4S5Yh6wtOIo/TMIsSLe+Xay+KVnbseJpPprDI5W3s7H2ODhMQTbogmmUFquZweW2ImQ==", - "dev": true, - "requires": { - "underscore": "1.9.1", - "web3-eth-iban": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-core-method": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.2.2.tgz", - "integrity": "sha512-szR4fDSBxNHaF1DFqE+j6sFR/afv9Aa36OW93saHZnrh+iXSrYeUUDfugeNcRlugEKeUCkd4CZylfgbK2SKYJA==", - "dev": true, - "requires": { - "underscore": "1.9.1", - "web3-core-helpers": "1.2.2", - "web3-core-promievent": "1.2.2", - "web3-core-subscriptions": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-core-promievent": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.2.2.tgz", - "integrity": "sha512-tKvYeT8bkUfKABcQswK6/X79blKTKYGk949urZKcLvLDEaWrM3uuzDwdQT3BNKzQ3vIvTggFPX9BwYh0F1WwqQ==", - "dev": true, - "requires": { - "any-promise": "1.3.0", - "eventemitter3": "3.1.2" - } - }, - "web3-core-requestmanager": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.2.2.tgz", - "integrity": "sha512-a+gSbiBRHtHvkp78U2bsntMGYGF2eCb6219aMufuZWeAZGXJ63Wc2321PCbA8hF9cQrZI4EoZ4kVLRI4OF15Hw==", - "dev": true, - "requires": { - "underscore": "1.9.1", - "web3-core-helpers": "1.2.2", - "web3-providers-http": "1.2.2", - "web3-providers-ipc": "1.2.2", - "web3-providers-ws": "1.2.2" - } - }, - "web3-core-subscriptions": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.2.2.tgz", - "integrity": "sha512-QbTgigNuT4eicAWWr7ahVpJyM8GbICsR1Ys9mJqzBEwpqS+RXTRVSkwZ2IsxO+iqv6liMNwGregbJLq4urMFcQ==", - "dev": true, - "requires": { - "eventemitter3": "3.1.2", - "underscore": "1.9.1", - "web3-core-helpers": "1.2.2" - } - }, - "web3-eth": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.2.2.tgz", - "integrity": "sha512-UXpC74mBQvZzd4b+baD4Ocp7g+BlwxhBHumy9seyE/LMIcMlePXwCKzxve9yReNpjaU16Mmyya6ZYlyiKKV8UA==", - "dev": true, - "requires": { - "underscore": "1.9.1", - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-core-subscriptions": "1.2.2", - "web3-eth-abi": "1.2.2", - "web3-eth-accounts": "1.2.2", - "web3-eth-contract": "1.2.2", - "web3-eth-ens": "1.2.2", - "web3-eth-iban": "1.2.2", - "web3-eth-personal": "1.2.2", - "web3-net": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-eth-abi": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.2.2.tgz", - "integrity": "sha512-Yn/ZMgoOLxhTVxIYtPJ0eS6pnAnkTAaJgUJh1JhZS4ekzgswMfEYXOwpMaD5eiqPJLpuxmZFnXnBZlnQ1JMXsw==", - "dev": true, - "requires": { - "ethers": "4.0.0-beta.3", - "underscore": "1.9.1", - "web3-utils": "1.2.2" - } - }, - "web3-eth-accounts": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.2.2.tgz", - "integrity": "sha512-KzHOEyXOEZ13ZOkWN3skZKqSo5f4Z1ogPFNn9uZbKCz+kSp+gCAEKxyfbOsB/JMAp5h7o7pb6eYsPCUBJmFFiA==", - "dev": true, - "requires": { - "any-promise": "1.3.0", - "crypto-browserify": "3.12.0", - "eth-lib": "0.2.7", - "ethereumjs-common": "^1.3.2", - "ethereumjs-tx": "^2.1.1", - "scrypt-shim": "github:web3-js/scrypt-shim", - "underscore": "1.9.1", - "uuid": "3.3.2", - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-utils": "1.2.2" - }, - "dependencies": { - "ethereumjs-tx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.1.tgz", - "integrity": "sha512-QtVriNqowCFA19X9BCRPMgdVNJ0/gMBS91TQb1DfrhsbR748g4STwxZptFAwfqehMyrF8rDwB23w87PQwru0wA==", - "dev": true, - "requires": { - "ethereumjs-common": "^1.3.1", - "ethereumjs-util": "^6.0.0" - } - } - } - }, - "web3-eth-contract": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.2.2.tgz", - "integrity": "sha512-EKT2yVFws3FEdotDQoNsXTYL798+ogJqR2//CaGwx3p0/RvQIgfzEwp8nbgA6dMxCsn9KOQi7OtklzpnJMkjtA==", - "dev": true, - "requires": { - "@types/bn.js": "^4.11.4", - "underscore": "1.9.1", - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-core-promievent": "1.2.2", - "web3-core-subscriptions": "1.2.2", - "web3-eth-abi": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-eth-ens": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.2.2.tgz", - "integrity": "sha512-CFjkr2HnuyMoMFBoNUWojyguD4Ef+NkyovcnUc/iAb9GP4LHohKrODG4pl76R5u61TkJGobC2ij6TyibtsyVYg==", - "dev": true, - "requires": { - "eth-ens-namehash": "2.0.8", - "underscore": "1.9.1", - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-promievent": "1.2.2", - "web3-eth-abi": "1.2.2", - "web3-eth-contract": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-eth-iban": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.2.2.tgz", - "integrity": "sha512-gxKXBoUhaTFHr0vJB/5sd4i8ejF/7gIsbM/VvemHT3tF5smnmY6hcwSMmn7sl5Gs+83XVb/BngnnGkf+I/rsrQ==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "web3-utils": "1.2.2" - } - }, - "web3-eth-personal": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.2.2.tgz", - "integrity": "sha512-4w+GLvTlFqW3+q4xDUXvCEMU7kRZ+xm/iJC8gm1Li1nXxwwFbs+Y+KBK6ZYtoN1qqAnHR+plYpIoVo27ixI5Rg==", - "dev": true, - "requires": { - "@types/node": "^12.6.1", - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-net": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-net": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.2.2.tgz", - "integrity": "sha512-K07j2DXq0x4UOJgae65rWZKraOznhk8v5EGSTdFqASTx7vWE/m+NqBijBYGEsQY1lSMlVaAY9UEQlcXK5HzXTw==", - "dev": true, - "requires": { - "web3-core": "1.2.2", - "web3-core-method": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-providers-http": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.2.2.tgz", - "integrity": "sha512-BNZ7Hguy3eBszsarH5gqr9SIZNvqk9eKwqwmGH1LQS1FL3NdoOn7tgPPdddrXec4fL94CwgNk4rCU+OjjZRNDg==", - "dev": true, - "requires": { - "web3-core-helpers": "1.2.2", - "xhr2-cookies": "1.1.0" - } - }, - "web3-providers-ipc": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.2.2.tgz", - "integrity": "sha512-t97w3zi5Kn/LEWGA6D9qxoO0LBOG+lK2FjlEdCwDQatffB/+vYrzZ/CLYVQSoyFZAlsDoBasVoYSWZK1n39aHA==", - "dev": true, - "requires": { - "oboe": "2.1.4", - "underscore": "1.9.1", - "web3-core-helpers": "1.2.2" - } - }, - "web3-providers-ws": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.2.2.tgz", - "integrity": "sha512-Wb1mrWTGMTXOpJkL0yGvL/WYLt8fUIXx8k/l52QB2IiKzvyd42dTWn4+j8IKXGSYYzOm7NMqv6nhA5VDk12VfA==", - "dev": true, - "requires": { - "underscore": "1.9.1", - "web3-core-helpers": "1.2.2", - "websocket": "github:web3-js/WebSocket-Node#polyfill/globalThis" - } - }, - "web3-shh": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.2.2.tgz", - "integrity": "sha512-og258NPhlBn8yYrDWjoWBBb6zo1OlBgoWGT+LL5/LPqRbjPe09hlOYHgscAAr9zZGtohTOty7RrxYw6Z6oDWCg==", - "dev": true, - "requires": { - "web3-core": "1.2.2", - "web3-core-method": "1.2.2", - "web3-core-subscriptions": "1.2.2", - "web3-net": "1.2.2" - } - }, - "web3-utils": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.2.2.tgz", - "integrity": "sha512-joF+s3243TY5cL7Z7y4h1JsJpUCf/kmFmj+eJar7Y2yNIGVcW961VyrAms75tjUysSuHaUQ3eQXjBEUJueT52A==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "eth-lib": "0.2.7", - "ethereum-bloom-filters": "^1.0.6", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "underscore": "1.9.1", - "utf8": "3.0.0" - } - } - } - }, - "@truffle/interface-adapter": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@truffle/interface-adapter/-/interface-adapter-0.4.0.tgz", - "integrity": "sha512-3xCL38jOByT/CN/Sar9Yx0q3xXRzEYpd28eQfI/nTZk/+T1m+aYU7C4Dv2JSnqgB3mjQd++2rRnMYjE2uxYg5w==", - "dev": true, - "requires": { - "bn.js": "^4.11.8", - "ethers": "^4.0.32", - "lodash": "^4.17.13", - "web3": "1.2.2" - }, - "dependencies": { - "elliptic": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", - "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", - "dev": true, - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } - }, - "eth-lib": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.7.tgz", - "integrity": "sha1-L5Pxex4jrsN1nNSj/iDBKGo/wco=", - "dev": true, - "requires": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - } - }, - "ethers": { - "version": "4.0.40", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.40.tgz", - "integrity": "sha512-MC9BtV7Hpq4dgFONEfanx9aU9GhhoWU270F+/wegHZXA7FR+2KXFdt36YIQYLmVY5ykUWswDxd+f9EVkIa7JOA==", - "dev": true, - "requires": { - "aes-js": "3.0.0", - "bn.js": "^4.4.0", - "elliptic": "6.5.2", - "hash.js": "1.1.3", - "js-sha3": "0.5.7", - "scrypt-js": "2.0.4", - "setimmediate": "1.0.4", - "uuid": "2.0.1", - "xmlhttprequest": "1.8.0" - } - }, - "hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.0" - } - }, - "js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=", - "dev": true - }, - "scrypt-js": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", - "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==", - "dev": true - }, - "setimmediate": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", - "integrity": "sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48=", - "dev": true - }, - "uuid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", - "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=", - "dev": true - }, - "web3": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.2.2.tgz", - "integrity": "sha512-/ChbmB6qZpfGx6eNpczt5YSUBHEA5V2+iUCbn85EVb3Zv6FVxrOo5Tv7Lw0gE2tW7EEjASbCyp3mZeiZaCCngg==", - "dev": true, - "requires": { - "@types/node": "^12.6.1", - "web3-bzz": "1.2.2", - "web3-core": "1.2.2", - "web3-eth": "1.2.2", - "web3-eth-personal": "1.2.2", - "web3-net": "1.2.2", - "web3-shh": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-bzz": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.2.2.tgz", - "integrity": "sha512-b1O2ObsqUN1lJxmFSjvnEC4TsaCbmh7Owj3IAIWTKqL9qhVgx7Qsu5O9cD13pBiSPNZJ68uJPaKq380QB4NWeA==", - "dev": true, - "requires": { - "@types/node": "^10.12.18", - "got": "9.6.0", - "swarm-js": "0.1.39", - "underscore": "1.9.1" - }, - "dependencies": { - "@types/node": { - "version": "10.17.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.6.tgz", - "integrity": "sha512-0a2X6cgN3RdPBL2MIlR6Lt0KlM7fOFsutuXcdglcOq6WvLnYXgPQSh0Mx6tO1KCAE8MxbHSOSTWDoUxRq+l3DA==", - "dev": true - } - } - }, - "web3-core": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.2.2.tgz", - "integrity": "sha512-miHAX3qUgxV+KYfaOY93Hlc3kLW2j5fH8FJy6kSxAv+d4d5aH0wwrU2IIoJylQdT+FeenQ38sgsCnFu9iZ1hCQ==", - "dev": true, - "requires": { - "@types/bn.js": "^4.11.4", - "@types/node": "^12.6.1", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-core-requestmanager": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-core-helpers": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.2.2.tgz", - "integrity": "sha512-HJrRsIGgZa1jGUIhvGz4S5Yh6wtOIo/TMIsSLe+Xay+KVnbseJpPprDI5W3s7H2ODhMQTbogmmUFquZweW2ImQ==", - "dev": true, - "requires": { - "underscore": "1.9.1", - "web3-eth-iban": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-core-method": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.2.2.tgz", - "integrity": "sha512-szR4fDSBxNHaF1DFqE+j6sFR/afv9Aa36OW93saHZnrh+iXSrYeUUDfugeNcRlugEKeUCkd4CZylfgbK2SKYJA==", - "dev": true, - "requires": { - "underscore": "1.9.1", - "web3-core-helpers": "1.2.2", - "web3-core-promievent": "1.2.2", - "web3-core-subscriptions": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-core-promievent": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.2.2.tgz", - "integrity": "sha512-tKvYeT8bkUfKABcQswK6/X79blKTKYGk949urZKcLvLDEaWrM3uuzDwdQT3BNKzQ3vIvTggFPX9BwYh0F1WwqQ==", - "dev": true, - "requires": { - "any-promise": "1.3.0", - "eventemitter3": "3.1.2" - } - }, - "web3-core-requestmanager": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.2.2.tgz", - "integrity": "sha512-a+gSbiBRHtHvkp78U2bsntMGYGF2eCb6219aMufuZWeAZGXJ63Wc2321PCbA8hF9cQrZI4EoZ4kVLRI4OF15Hw==", - "dev": true, - "requires": { - "underscore": "1.9.1", - "web3-core-helpers": "1.2.2", - "web3-providers-http": "1.2.2", - "web3-providers-ipc": "1.2.2", - "web3-providers-ws": "1.2.2" - } - }, - "web3-core-subscriptions": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.2.2.tgz", - "integrity": "sha512-QbTgigNuT4eicAWWr7ahVpJyM8GbICsR1Ys9mJqzBEwpqS+RXTRVSkwZ2IsxO+iqv6liMNwGregbJLq4urMFcQ==", - "dev": true, - "requires": { - "eventemitter3": "3.1.2", - "underscore": "1.9.1", - "web3-core-helpers": "1.2.2" - } - }, - "web3-eth": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.2.2.tgz", - "integrity": "sha512-UXpC74mBQvZzd4b+baD4Ocp7g+BlwxhBHumy9seyE/LMIcMlePXwCKzxve9yReNpjaU16Mmyya6ZYlyiKKV8UA==", - "dev": true, - "requires": { - "underscore": "1.9.1", - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-core-subscriptions": "1.2.2", - "web3-eth-abi": "1.2.2", - "web3-eth-accounts": "1.2.2", - "web3-eth-contract": "1.2.2", - "web3-eth-ens": "1.2.2", - "web3-eth-iban": "1.2.2", - "web3-eth-personal": "1.2.2", - "web3-net": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-eth-abi": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.2.2.tgz", - "integrity": "sha512-Yn/ZMgoOLxhTVxIYtPJ0eS6pnAnkTAaJgUJh1JhZS4ekzgswMfEYXOwpMaD5eiqPJLpuxmZFnXnBZlnQ1JMXsw==", - "dev": true, - "requires": { - "ethers": "4.0.0-beta.3", - "underscore": "1.9.1", - "web3-utils": "1.2.2" - }, - "dependencies": { - "@types/node": { - "version": "10.17.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.6.tgz", - "integrity": "sha512-0a2X6cgN3RdPBL2MIlR6Lt0KlM7fOFsutuXcdglcOq6WvLnYXgPQSh0Mx6tO1KCAE8MxbHSOSTWDoUxRq+l3DA==", - "dev": true - }, - "elliptic": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz", - "integrity": "sha1-VILZZG1UvLif19mU/J4ulWiHbj8=", - "dev": true, - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "inherits": "^2.0.1" - } - }, - "ethers": { - "version": "4.0.0-beta.3", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.0-beta.3.tgz", - "integrity": "sha512-YYPogooSknTwvHg3+Mv71gM/3Wcrx+ZpCzarBj3mqs9njjRkrOo2/eufzhHloOCo3JSoNI4TQJJ6yU5ABm3Uog==", - "dev": true, - "requires": { - "@types/node": "^10.3.2", - "aes-js": "3.0.0", - "bn.js": "^4.4.0", - "elliptic": "6.3.3", - "hash.js": "1.1.3", - "js-sha3": "0.5.7", - "scrypt-js": "2.0.3", - "setimmediate": "1.0.4", - "uuid": "2.0.1", - "xmlhttprequest": "1.8.0" - } - }, - "scrypt-js": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.3.tgz", - "integrity": "sha1-uwBAvgMEPamgEqLOqfyfhSz8h9Q=", - "dev": true - } - } - }, - "web3-eth-accounts": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.2.2.tgz", - "integrity": "sha512-KzHOEyXOEZ13ZOkWN3skZKqSo5f4Z1ogPFNn9uZbKCz+kSp+gCAEKxyfbOsB/JMAp5h7o7pb6eYsPCUBJmFFiA==", - "dev": true, - "requires": { - "any-promise": "1.3.0", - "crypto-browserify": "3.12.0", - "eth-lib": "0.2.7", - "ethereumjs-common": "^1.3.2", - "ethereumjs-tx": "^2.1.1", - "scrypt-shim": "github:web3-js/scrypt-shim", - "underscore": "1.9.1", - "uuid": "3.3.2", - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-utils": "1.2.2" - }, - "dependencies": { - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "dev": true - } - } - }, - "web3-eth-contract": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.2.2.tgz", - "integrity": "sha512-EKT2yVFws3FEdotDQoNsXTYL798+ogJqR2//CaGwx3p0/RvQIgfzEwp8nbgA6dMxCsn9KOQi7OtklzpnJMkjtA==", - "dev": true, - "requires": { - "@types/bn.js": "^4.11.4", - "underscore": "1.9.1", - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-core-promievent": "1.2.2", - "web3-core-subscriptions": "1.2.2", - "web3-eth-abi": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-eth-ens": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.2.2.tgz", - "integrity": "sha512-CFjkr2HnuyMoMFBoNUWojyguD4Ef+NkyovcnUc/iAb9GP4LHohKrODG4pl76R5u61TkJGobC2ij6TyibtsyVYg==", - "dev": true, - "requires": { - "eth-ens-namehash": "2.0.8", - "underscore": "1.9.1", - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-promievent": "1.2.2", - "web3-eth-abi": "1.2.2", - "web3-eth-contract": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-eth-iban": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.2.2.tgz", - "integrity": "sha512-gxKXBoUhaTFHr0vJB/5sd4i8ejF/7gIsbM/VvemHT3tF5smnmY6hcwSMmn7sl5Gs+83XVb/BngnnGkf+I/rsrQ==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "web3-utils": "1.2.2" - } - }, - "web3-eth-personal": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.2.2.tgz", - "integrity": "sha512-4w+GLvTlFqW3+q4xDUXvCEMU7kRZ+xm/iJC8gm1Li1nXxwwFbs+Y+KBK6ZYtoN1qqAnHR+plYpIoVo27ixI5Rg==", - "dev": true, - "requires": { - "@types/node": "^12.6.1", - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-net": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-net": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.2.2.tgz", - "integrity": "sha512-K07j2DXq0x4UOJgae65rWZKraOznhk8v5EGSTdFqASTx7vWE/m+NqBijBYGEsQY1lSMlVaAY9UEQlcXK5HzXTw==", - "dev": true, - "requires": { - "web3-core": "1.2.2", - "web3-core-method": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-providers-http": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.2.2.tgz", - "integrity": "sha512-BNZ7Hguy3eBszsarH5gqr9SIZNvqk9eKwqwmGH1LQS1FL3NdoOn7tgPPdddrXec4fL94CwgNk4rCU+OjjZRNDg==", - "dev": true, - "requires": { - "web3-core-helpers": "1.2.2", - "xhr2-cookies": "1.1.0" - } - }, - "web3-providers-ipc": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.2.2.tgz", - "integrity": "sha512-t97w3zi5Kn/LEWGA6D9qxoO0LBOG+lK2FjlEdCwDQatffB/+vYrzZ/CLYVQSoyFZAlsDoBasVoYSWZK1n39aHA==", - "dev": true, - "requires": { - "oboe": "2.1.4", - "underscore": "1.9.1", - "web3-core-helpers": "1.2.2" - } - }, - "web3-providers-ws": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.2.2.tgz", - "integrity": "sha512-Wb1mrWTGMTXOpJkL0yGvL/WYLt8fUIXx8k/l52QB2IiKzvyd42dTWn4+j8IKXGSYYzOm7NMqv6nhA5VDk12VfA==", - "dev": true, - "requires": { - "underscore": "1.9.1", - "web3-core-helpers": "1.2.2", - "websocket": "github:web3-js/WebSocket-Node#polyfill/globalThis" - } - }, - "web3-shh": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.2.2.tgz", - "integrity": "sha512-og258NPhlBn8yYrDWjoWBBb6zo1OlBgoWGT+LL5/LPqRbjPe09hlOYHgscAAr9zZGtohTOty7RrxYw6Z6oDWCg==", - "dev": true, - "requires": { - "web3-core": "1.2.2", - "web3-core-method": "1.2.2", - "web3-core-subscriptions": "1.2.2", - "web3-net": "1.2.2" - } - }, - "web3-utils": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.2.2.tgz", - "integrity": "sha512-joF+s3243TY5cL7Z7y4h1JsJpUCf/kmFmj+eJar7Y2yNIGVcW961VyrAms75tjUysSuHaUQ3eQXjBEUJueT52A==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "eth-lib": "0.2.7", - "ethereum-bloom-filters": "^1.0.6", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "underscore": "1.9.1", - "utf8": "3.0.0" - } - } - } - }, - "@truffle/provider": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@truffle/provider/-/provider-0.2.3.tgz", - "integrity": "sha512-EsAE7eiXMlTAQBNst12fuTKddMMtqB7d9jQmVvYvq+/G3ryZCf50dTiod0lhTIh0dIQ/tirFdvBRKDfc8c+hsQ==", - "dev": true, - "requires": { - "@truffle/error": "^0.0.8", - "@truffle/interface-adapter": "^0.4.0", - "web3": "1.2.2" - }, - "dependencies": { - "eth-lib": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.7.tgz", - "integrity": "sha1-L5Pxex4jrsN1nNSj/iDBKGo/wco=", - "dev": true, - "requires": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - } - }, "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", @@ -1138,83 +376,71 @@ "dev": true }, "web3": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.2.2.tgz", - "integrity": "sha512-/ChbmB6qZpfGx6eNpczt5YSUBHEA5V2+iUCbn85EVb3Zv6FVxrOo5Tv7Lw0gE2tW7EEjASbCyp3mZeiZaCCngg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.2.1.tgz", + "integrity": "sha512-nNMzeCK0agb5i/oTWNdQ1aGtwYfXzHottFP2Dz0oGIzavPMGSKyVlr8ibVb1yK5sJBjrWVnTdGaOC2zKDFuFRw==", "dev": true, "requires": { - "@types/node": "^12.6.1", - "web3-bzz": "1.2.2", - "web3-core": "1.2.2", - "web3-eth": "1.2.2", - "web3-eth-personal": "1.2.2", - "web3-net": "1.2.2", - "web3-shh": "1.2.2", - "web3-utils": "1.2.2" + "web3-bzz": "1.2.1", + "web3-core": "1.2.1", + "web3-eth": "1.2.1", + "web3-eth-personal": "1.2.1", + "web3-net": "1.2.1", + "web3-shh": "1.2.1", + "web3-utils": "1.2.1" } }, "web3-bzz": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.2.2.tgz", - "integrity": "sha512-b1O2ObsqUN1lJxmFSjvnEC4TsaCbmh7Owj3IAIWTKqL9qhVgx7Qsu5O9cD13pBiSPNZJ68uJPaKq380QB4NWeA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.2.1.tgz", + "integrity": "sha512-LdOO44TuYbGIPfL4ilkuS89GQovxUpmLz6C1UC7VYVVRILeZS740FVB3j9V4P4FHUk1RenaDfKhcntqgVCHtjw==", "dev": true, "requires": { - "@types/node": "^10.12.18", "got": "9.6.0", "swarm-js": "0.1.39", "underscore": "1.9.1" - }, - "dependencies": { - "@types/node": { - "version": "10.17.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.6.tgz", - "integrity": "sha512-0a2X6cgN3RdPBL2MIlR6Lt0KlM7fOFsutuXcdglcOq6WvLnYXgPQSh0Mx6tO1KCAE8MxbHSOSTWDoUxRq+l3DA==", - "dev": true - } } }, "web3-core": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.2.2.tgz", - "integrity": "sha512-miHAX3qUgxV+KYfaOY93Hlc3kLW2j5fH8FJy6kSxAv+d4d5aH0wwrU2IIoJylQdT+FeenQ38sgsCnFu9iZ1hCQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.2.1.tgz", + "integrity": "sha512-5ODwIqgl8oIg/0+Ai4jsLxkKFWJYE0uLuE1yUKHNVCL4zL6n3rFjRMpKPokd6id6nJCNgeA64KdWQ4XfpnjdMg==", "dev": true, "requires": { - "@types/bn.js": "^4.11.4", - "@types/node": "^12.6.1", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-core-requestmanager": "1.2.2", - "web3-utils": "1.2.2" + "web3-core-helpers": "1.2.1", + "web3-core-method": "1.2.1", + "web3-core-requestmanager": "1.2.1", + "web3-utils": "1.2.1" } }, "web3-core-helpers": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.2.2.tgz", - "integrity": "sha512-HJrRsIGgZa1jGUIhvGz4S5Yh6wtOIo/TMIsSLe+Xay+KVnbseJpPprDI5W3s7H2ODhMQTbogmmUFquZweW2ImQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.2.1.tgz", + "integrity": "sha512-Gx3sTEajD5r96bJgfuW377PZVFmXIH4TdqDhgGwd2lZQCcMi+DA4TgxJNJGxn0R3aUVzyyE76j4LBrh412mXrw==", "dev": true, "requires": { "underscore": "1.9.1", - "web3-eth-iban": "1.2.2", - "web3-utils": "1.2.2" + "web3-eth-iban": "1.2.1", + "web3-utils": "1.2.1" } }, "web3-core-method": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.2.2.tgz", - "integrity": "sha512-szR4fDSBxNHaF1DFqE+j6sFR/afv9Aa36OW93saHZnrh+iXSrYeUUDfugeNcRlugEKeUCkd4CZylfgbK2SKYJA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.2.1.tgz", + "integrity": "sha512-Ghg2WS23qi6Xj8Od3VCzaImLHseEA7/usvnOItluiIc5cKs00WYWsNy2YRStzU9a2+z8lwQywPYp0nTzR/QXdQ==", "dev": true, "requires": { "underscore": "1.9.1", - "web3-core-helpers": "1.2.2", - "web3-core-promievent": "1.2.2", - "web3-core-subscriptions": "1.2.2", - "web3-utils": "1.2.2" + "web3-core-helpers": "1.2.1", + "web3-core-promievent": "1.2.1", + "web3-core-subscriptions": "1.2.1", + "web3-utils": "1.2.1" } }, "web3-core-promievent": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.2.2.tgz", - "integrity": "sha512-tKvYeT8bkUfKABcQswK6/X79blKTKYGk949urZKcLvLDEaWrM3uuzDwdQT3BNKzQ3vIvTggFPX9BwYh0F1WwqQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.2.1.tgz", + "integrity": "sha512-IVUqgpIKoeOYblwpex4Hye6npM0aMR+kU49VP06secPeN0rHMyhGF0ZGveWBrGvf8WDPI7jhqPBFIC6Jf3Q3zw==", "dev": true, "requires": { "any-promise": "1.3.0", @@ -1222,205 +448,201 @@ } }, "web3-core-requestmanager": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.2.2.tgz", - "integrity": "sha512-a+gSbiBRHtHvkp78U2bsntMGYGF2eCb6219aMufuZWeAZGXJ63Wc2321PCbA8hF9cQrZI4EoZ4kVLRI4OF15Hw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.2.1.tgz", + "integrity": "sha512-xfknTC69RfYmLKC+83Jz73IC3/sS2ZLhGtX33D4Q5nQ8yc39ElyAolxr9sJQS8kihOcM6u4J+8gyGMqsLcpIBg==", "dev": true, "requires": { "underscore": "1.9.1", - "web3-core-helpers": "1.2.2", - "web3-providers-http": "1.2.2", - "web3-providers-ipc": "1.2.2", - "web3-providers-ws": "1.2.2" + "web3-core-helpers": "1.2.1", + "web3-providers-http": "1.2.1", + "web3-providers-ipc": "1.2.1", + "web3-providers-ws": "1.2.1" } }, "web3-core-subscriptions": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.2.2.tgz", - "integrity": "sha512-QbTgigNuT4eicAWWr7ahVpJyM8GbICsR1Ys9mJqzBEwpqS+RXTRVSkwZ2IsxO+iqv6liMNwGregbJLq4urMFcQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.2.1.tgz", + "integrity": "sha512-nmOwe3NsB8V8UFsY1r+sW6KjdOS68h8nuh7NzlWxBQT/19QSUGiERRTaZXWu5BYvo1EoZRMxCKyCQpSSXLc08g==", "dev": true, "requires": { "eventemitter3": "3.1.2", "underscore": "1.9.1", - "web3-core-helpers": "1.2.2" + "web3-core-helpers": "1.2.1" } }, "web3-eth": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.2.2.tgz", - "integrity": "sha512-UXpC74mBQvZzd4b+baD4Ocp7g+BlwxhBHumy9seyE/LMIcMlePXwCKzxve9yReNpjaU16Mmyya6ZYlyiKKV8UA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.2.1.tgz", + "integrity": "sha512-/2xly4Yry5FW1i+uygPjhfvgUP/MS/Dk+PDqmzp5M88tS86A+j8BzKc23GrlA8sgGs0645cpZK/999LpEF5UdA==", "dev": true, "requires": { "underscore": "1.9.1", - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-core-subscriptions": "1.2.2", - "web3-eth-abi": "1.2.2", - "web3-eth-accounts": "1.2.2", - "web3-eth-contract": "1.2.2", - "web3-eth-ens": "1.2.2", - "web3-eth-iban": "1.2.2", - "web3-eth-personal": "1.2.2", - "web3-net": "1.2.2", - "web3-utils": "1.2.2" + "web3-core": "1.2.1", + "web3-core-helpers": "1.2.1", + "web3-core-method": "1.2.1", + "web3-core-subscriptions": "1.2.1", + "web3-eth-abi": "1.2.1", + "web3-eth-accounts": "1.2.1", + "web3-eth-contract": "1.2.1", + "web3-eth-ens": "1.2.1", + "web3-eth-iban": "1.2.1", + "web3-eth-personal": "1.2.1", + "web3-net": "1.2.1", + "web3-utils": "1.2.1" } }, "web3-eth-abi": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.2.2.tgz", - "integrity": "sha512-Yn/ZMgoOLxhTVxIYtPJ0eS6pnAnkTAaJgUJh1JhZS4ekzgswMfEYXOwpMaD5eiqPJLpuxmZFnXnBZlnQ1JMXsw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.2.1.tgz", + "integrity": "sha512-jI/KhU2a/DQPZXHjo2GW0myEljzfiKOn+h1qxK1+Y9OQfTcBMxrQJyH5AP89O6l6NZ1QvNdq99ThAxBFoy5L+g==", "dev": true, "requires": { "ethers": "4.0.0-beta.3", "underscore": "1.9.1", - "web3-utils": "1.2.2" + "web3-utils": "1.2.1" } }, "web3-eth-accounts": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.2.2.tgz", - "integrity": "sha512-KzHOEyXOEZ13ZOkWN3skZKqSo5f4Z1ogPFNn9uZbKCz+kSp+gCAEKxyfbOsB/JMAp5h7o7pb6eYsPCUBJmFFiA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.2.1.tgz", + "integrity": "sha512-26I4qq42STQ8IeKUyur3MdQ1NzrzCqPsmzqpux0j6X/XBD7EjZ+Cs0lhGNkSKH5dI3V8CJasnQ5T1mNKeWB7nQ==", "dev": true, "requires": { "any-promise": "1.3.0", "crypto-browserify": "3.12.0", "eth-lib": "0.2.7", - "ethereumjs-common": "^1.3.2", - "ethereumjs-tx": "^2.1.1", - "scrypt-shim": "github:web3-js/scrypt-shim", + "scryptsy": "2.1.0", + "semver": "6.2.0", "underscore": "1.9.1", "uuid": "3.3.2", - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-utils": "1.2.2" + "web3-core": "1.2.1", + "web3-core-helpers": "1.2.1", + "web3-core-method": "1.2.1", + "web3-utils": "1.2.1" } }, "web3-eth-contract": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.2.2.tgz", - "integrity": "sha512-EKT2yVFws3FEdotDQoNsXTYL798+ogJqR2//CaGwx3p0/RvQIgfzEwp8nbgA6dMxCsn9KOQi7OtklzpnJMkjtA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.2.1.tgz", + "integrity": "sha512-kYFESbQ3boC9bl2rYVghj7O8UKMiuKaiMkxvRH5cEDHil8V7MGEGZNH0slSdoyeftZVlaWSMqkRP/chfnKND0g==", "dev": true, "requires": { - "@types/bn.js": "^4.11.4", "underscore": "1.9.1", - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-core-promievent": "1.2.2", - "web3-core-subscriptions": "1.2.2", - "web3-eth-abi": "1.2.2", - "web3-utils": "1.2.2" + "web3-core": "1.2.1", + "web3-core-helpers": "1.2.1", + "web3-core-method": "1.2.1", + "web3-core-promievent": "1.2.1", + "web3-core-subscriptions": "1.2.1", + "web3-eth-abi": "1.2.1", + "web3-utils": "1.2.1" } }, "web3-eth-ens": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.2.2.tgz", - "integrity": "sha512-CFjkr2HnuyMoMFBoNUWojyguD4Ef+NkyovcnUc/iAb9GP4LHohKrODG4pl76R5u61TkJGobC2ij6TyibtsyVYg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.2.1.tgz", + "integrity": "sha512-lhP1kFhqZr2nnbu3CGIFFrAnNxk2veXpOXBY48Tub37RtobDyHijHgrj+xTh+mFiPokyrapVjpFsbGa+Xzye4Q==", "dev": true, "requires": { "eth-ens-namehash": "2.0.8", "underscore": "1.9.1", - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-promievent": "1.2.2", - "web3-eth-abi": "1.2.2", - "web3-eth-contract": "1.2.2", - "web3-utils": "1.2.2" + "web3-core": "1.2.1", + "web3-core-helpers": "1.2.1", + "web3-core-promievent": "1.2.1", + "web3-eth-abi": "1.2.1", + "web3-eth-contract": "1.2.1", + "web3-utils": "1.2.1" } }, "web3-eth-iban": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.2.2.tgz", - "integrity": "sha512-gxKXBoUhaTFHr0vJB/5sd4i8ejF/7gIsbM/VvemHT3tF5smnmY6hcwSMmn7sl5Gs+83XVb/BngnnGkf+I/rsrQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.2.1.tgz", + "integrity": "sha512-9gkr4QPl1jCU+wkgmZ8EwODVO3ovVj6d6JKMos52ggdT2YCmlfvFVF6wlGLwi0VvNa/p+0BjJzaqxnnG/JewjQ==", "dev": true, "requires": { "bn.js": "4.11.8", - "web3-utils": "1.2.2" + "web3-utils": "1.2.1" } }, "web3-eth-personal": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.2.2.tgz", - "integrity": "sha512-4w+GLvTlFqW3+q4xDUXvCEMU7kRZ+xm/iJC8gm1Li1nXxwwFbs+Y+KBK6ZYtoN1qqAnHR+plYpIoVo27ixI5Rg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.2.1.tgz", + "integrity": "sha512-RNDVSiaSoY4aIp8+Hc7z+X72H7lMb3fmAChuSBADoEc7DsJrY/d0R5qQDK9g9t2BO8oxgLrLNyBP/9ub2Hc6Bg==", "dev": true, "requires": { - "@types/node": "^12.6.1", - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-net": "1.2.2", - "web3-utils": "1.2.2" + "web3-core": "1.2.1", + "web3-core-helpers": "1.2.1", + "web3-core-method": "1.2.1", + "web3-net": "1.2.1", + "web3-utils": "1.2.1" } }, "web3-net": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.2.2.tgz", - "integrity": "sha512-K07j2DXq0x4UOJgae65rWZKraOznhk8v5EGSTdFqASTx7vWE/m+NqBijBYGEsQY1lSMlVaAY9UEQlcXK5HzXTw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.2.1.tgz", + "integrity": "sha512-Yt1Bs7WgnLESPe0rri/ZoPWzSy55ovioaP35w1KZydrNtQ5Yq4WcrAdhBzcOW7vAkIwrsLQsvA+hrOCy7mNauw==", "dev": true, "requires": { - "web3-core": "1.2.2", - "web3-core-method": "1.2.2", - "web3-utils": "1.2.2" + "web3-core": "1.2.1", + "web3-core-method": "1.2.1", + "web3-utils": "1.2.1" } }, "web3-providers-http": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.2.2.tgz", - "integrity": "sha512-BNZ7Hguy3eBszsarH5gqr9SIZNvqk9eKwqwmGH1LQS1FL3NdoOn7tgPPdddrXec4fL94CwgNk4rCU+OjjZRNDg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.2.1.tgz", + "integrity": "sha512-BDtVUVolT9b3CAzeGVA/np1hhn7RPUZ6YYGB/sYky+GjeO311Yoq8SRDUSezU92x8yImSC2B+SMReGhd1zL+bQ==", "dev": true, "requires": { - "web3-core-helpers": "1.2.2", + "web3-core-helpers": "1.2.1", "xhr2-cookies": "1.1.0" } }, "web3-providers-ipc": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.2.2.tgz", - "integrity": "sha512-t97w3zi5Kn/LEWGA6D9qxoO0LBOG+lK2FjlEdCwDQatffB/+vYrzZ/CLYVQSoyFZAlsDoBasVoYSWZK1n39aHA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.2.1.tgz", + "integrity": "sha512-oPEuOCwxVx8L4CPD0TUdnlOUZwGBSRKScCz/Ws2YHdr9Ium+whm+0NLmOZjkjQp5wovQbyBzNa6zJz1noFRvFA==", "dev": true, "requires": { "oboe": "2.1.4", "underscore": "1.9.1", - "web3-core-helpers": "1.2.2" + "web3-core-helpers": "1.2.1" } }, "web3-providers-ws": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.2.2.tgz", - "integrity": "sha512-Wb1mrWTGMTXOpJkL0yGvL/WYLt8fUIXx8k/l52QB2IiKzvyd42dTWn4+j8IKXGSYYzOm7NMqv6nhA5VDk12VfA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.2.1.tgz", + "integrity": "sha512-oqsQXzu+ejJACVHy864WwIyw+oB21nw/pI65/sD95Zi98+/HQzFfNcIFneF1NC4bVF3VNX4YHTNq2I2o97LAiA==", "dev": true, "requires": { "underscore": "1.9.1", - "web3-core-helpers": "1.2.2", + "web3-core-helpers": "1.2.1", "websocket": "github:web3-js/WebSocket-Node#polyfill/globalThis" } }, "web3-shh": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.2.2.tgz", - "integrity": "sha512-og258NPhlBn8yYrDWjoWBBb6zo1OlBgoWGT+LL5/LPqRbjPe09hlOYHgscAAr9zZGtohTOty7RrxYw6Z6oDWCg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.2.1.tgz", + "integrity": "sha512-/3Cl04nza5kuFn25bV3FJWa0s3Vafr5BlT933h26xovQ6HIIz61LmvNQlvX1AhFL+SNJOTcQmK1SM59vcyC8bA==", "dev": true, "requires": { - "web3-core": "1.2.2", - "web3-core-method": "1.2.2", - "web3-core-subscriptions": "1.2.2", - "web3-net": "1.2.2" + "web3-core": "1.2.1", + "web3-core-method": "1.2.1", + "web3-core-subscriptions": "1.2.1", + "web3-net": "1.2.1" } }, "web3-utils": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.2.2.tgz", - "integrity": "sha512-joF+s3243TY5cL7Z7y4h1JsJpUCf/kmFmj+eJar7Y2yNIGVcW961VyrAms75tjUysSuHaUQ3eQXjBEUJueT52A==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.2.1.tgz", + "integrity": "sha512-Mrcn3l58L+yCKz3zBryM6JZpNruWuT0OCbag8w+reeNROSGVlXzUQkU+gtAwc9JCZ7tKUyg67+2YUGqUjVcyBA==", "dev": true, "requires": { "bn.js": "4.11.8", "eth-lib": "0.2.7", - "ethereum-bloom-filters": "^1.0.6", "ethjs-unit": "0.1.6", "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", + "randomhex": "0.1.5", "underscore": "1.9.1", "utf8": "3.0.0" } @@ -1444,9 +666,9 @@ } }, "@types/chai": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.6.tgz", - "integrity": "sha512-HF8faEUA4JurIm+68VaA2KedtZf5LYdXpQEAbIAN79DwWQbO82BNTksZgCH3UMqbZHXex9C6TrBfg7OUInRISQ==", + "version": "4.2.7", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.7.tgz", + "integrity": "sha512-luq8meHGYwvky0O7u0eQZdA7B4Wd9owUCqvbw2m3XCrCU8mplYOujMBbvyS547AxJkC+pGnd0Cm15eNxEUNU8g==", "dev": true }, "@types/chai-spies": { @@ -1506,9 +728,9 @@ "dev": true }, "@types/node": { - "version": "12.12.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.14.tgz", - "integrity": "sha512-u/SJDyXwuihpwjXy7hOOghagLEV1KdAST6syfnOk6QZAMzZuWZqXy5aYYZbh8Jdpd4escVFP0MvftHNDb9pruA==" + "version": "12.12.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.18.tgz", + "integrity": "sha512-DBkZuIMFuAfjJHiunyRc+aNvmXYNwV1IPMgGKGlwCp6zh6MKrVtmvjSWK/axWcD25KJffkXgkfvFra8ndenXAw==" }, "@types/node-fetch": { "version": "2.5.4", @@ -1520,12 +742,12 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.10.0.tgz", - "integrity": "sha512-rT51fNLW0u3fnDGnAHVC5nu+Das+y2CpW10yqvf6/j5xbuUV3FxA3mBaIbM24CXODXjbgUznNb4Kg9XZOUxKAw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.12.0.tgz", + "integrity": "sha512-1t4r9rpLuEwl3hgt90jY18wJHSyb0E3orVL3DaqwmpiSDHmHiSspVsvsFF78BJ/3NNG3qmeso836jpuBWYziAA==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "2.10.0", + "@typescript-eslint/experimental-utils": "2.12.0", "eslint-utils": "^1.4.3", "functional-red-black-tree": "^1.0.1", "regexpp": "^3.0.0", @@ -1541,32 +763,32 @@ } }, "@typescript-eslint/experimental-utils": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.10.0.tgz", - "integrity": "sha512-FZhWq6hWWZBP76aZ7bkrfzTMP31CCefVIImrwP3giPLcoXocmLTmr92NLZxuIcTL4GTEOE33jQMWy9PwelL+yQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.12.0.tgz", + "integrity": "sha512-jv4gYpw5N5BrWF3ntROvCuLe1IjRenLy5+U57J24NbPGwZFAjhnM45qpq0nDH1y/AZMb3Br25YiNVwyPbz6RkA==", "dev": true, "requires": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "2.10.0", + "@typescript-eslint/typescript-estree": "2.12.0", "eslint-scope": "^5.0.0" } }, "@typescript-eslint/parser": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.10.0.tgz", - "integrity": "sha512-wQNiBokcP5ZsTuB+i4BlmVWq6o+oAhd8en2eSm/EE9m7BgZUIfEeYFd6z3S+T7bgNuloeiHA1/cevvbBDLr98g==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.12.0.tgz", + "integrity": "sha512-lPdkwpdzxEfjI8TyTzZqPatkrswLSVu4bqUgnB03fHSOwpC7KSerPgJRgIAf11UGNf7HKjJV6oaPZI4AghLU6g==", "dev": true, "requires": { "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "2.10.0", - "@typescript-eslint/typescript-estree": "2.10.0", + "@typescript-eslint/experimental-utils": "2.12.0", + "@typescript-eslint/typescript-estree": "2.12.0", "eslint-visitor-keys": "^1.1.0" } }, "@typescript-eslint/typescript-estree": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.10.0.tgz", - "integrity": "sha512-oOYnplddQNm/LGVkqbkAwx4TIBuuZ36cAQq9v3nFIU9FmhemHuVzAesMSXNQDdAzCa5bFgCrfD3JWhYVKlRN2g==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.12.0.tgz", + "integrity": "sha512-rGehVfjHEn8Frh9UW02ZZIfJs6SIIxIu/K1bbci8rFfDE/1lQ8krIJy5OXOV3DVnNdDPtoiPOdEANkLMrwXbiQ==", "dev": true, "requires": { "debug": "^4.1.1", @@ -3608,9 +2830,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001015", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001015.tgz", - "integrity": "sha512-/xL2AbW/XWHNu1gnIrO8UitBGoFthcsDgU9VLK1/dpsoxbaD5LscHozKze05R6WLsBvLhqv78dAPozMFQBYLbQ==", + "version": "1.0.30001016", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001016.tgz", + "integrity": "sha512-yYQ2QfotceRiH4U+h1Us86WJXtVHDmy3nEKIdYPsZCYnOV5/tMgGbmoIlrMzmh2VXlproqYtVaKeGDBkMZifFA==", "dev": true }, "caseless": { @@ -4230,9 +3452,9 @@ "dev": true }, "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==", + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", "dev": true }, "core-util-is": { @@ -4588,10 +3810,18 @@ } }, "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } }, "deep-extend": { "version": "0.6.0", @@ -5228,9 +4458,9 @@ } }, "eslint-plugin-prettier": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.1.tgz", - "integrity": "sha512-A+TZuHZ0KU0cnn56/9mfR7/KjUJ9QNVXUhwvRFSR7PGPe0zQR6PTkmyqg1AtUUEOzTqeRsUwyKFh0oVZKVCrtA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz", + "integrity": "sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" @@ -6805,14 +6035,15 @@ "dev": true }, "fsevents": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", - "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz", + "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", "dev": true, "optional": true, "requires": { + "bindings": "^1.5.0", "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" + "node-pre-gyp": "*" }, "dependencies": { "abbrev": { @@ -6860,7 +6091,7 @@ } }, "chownr": { - "version": "1.1.1", + "version": "1.1.3", "bundled": true, "dev": true, "optional": true @@ -6890,7 +6121,7 @@ "optional": true }, "debug": { - "version": "4.1.1", + "version": "3.2.6", "bundled": true, "dev": true, "optional": true, @@ -6917,12 +6148,12 @@ "optional": true }, "fs-minipass": { - "version": "1.2.5", + "version": "1.2.7", "bundled": true, "dev": true, "optional": true, "requires": { - "minipass": "^2.2.1" + "minipass": "^2.6.0" } }, "fs.realpath": { @@ -6948,7 +6179,7 @@ } }, "glob": { - "version": "7.1.3", + "version": "7.1.6", "bundled": true, "dev": true, "optional": true, @@ -6977,7 +6208,7 @@ } }, "ignore-walk": { - "version": "3.0.1", + "version": "3.0.3", "bundled": true, "dev": true, "optional": true, @@ -6996,7 +6227,7 @@ } }, "inherits": { - "version": "2.0.3", + "version": "2.0.4", "bundled": true, "dev": true, "optional": true @@ -7038,7 +6269,7 @@ "optional": true }, "minipass": { - "version": "2.3.5", + "version": "2.9.0", "bundled": true, "dev": true, "optional": true, @@ -7048,12 +6279,12 @@ } }, "minizlib": { - "version": "1.2.1", + "version": "1.3.3", "bundled": true, "dev": true, "optional": true, "requires": { - "minipass": "^2.2.1" + "minipass": "^2.9.0" } }, "mkdirp": { @@ -7066,24 +6297,24 @@ } }, "ms": { - "version": "2.1.1", + "version": "2.1.2", "bundled": true, "dev": true, "optional": true }, "needle": { - "version": "2.3.0", + "version": "2.4.0", "bundled": true, "dev": true, "optional": true, "requires": { - "debug": "^4.1.0", + "debug": "^3.2.6", "iconv-lite": "^0.4.4", "sax": "^1.2.4" } }, "node-pre-gyp": { - "version": "0.12.0", + "version": "0.14.0", "bundled": true, "dev": true, "optional": true, @@ -7097,7 +6328,7 @@ "rc": "^1.2.7", "rimraf": "^2.6.1", "semver": "^5.3.0", - "tar": "^4" + "tar": "^4.4.2" } }, "nopt": { @@ -7111,13 +6342,22 @@ } }, "npm-bundled": { - "version": "1.0.6", + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", "bundled": true, "dev": true, "optional": true }, "npm-packlist": { - "version": "1.4.1", + "version": "1.4.7", "bundled": true, "dev": true, "optional": true, @@ -7188,7 +6428,7 @@ "optional": true }, "process-nextick-args": { - "version": "2.0.0", + "version": "2.0.1", "bundled": true, "dev": true, "optional": true @@ -7229,7 +6469,7 @@ } }, "rimraf": { - "version": "2.6.3", + "version": "2.7.1", "bundled": true, "dev": true, "optional": true, @@ -7256,7 +6496,7 @@ "optional": true }, "semver": { - "version": "5.7.0", + "version": "5.7.1", "bundled": true, "dev": true, "optional": true @@ -7309,18 +6549,18 @@ "optional": true }, "tar": { - "version": "4.4.8", + "version": "4.4.13", "bundled": true, "dev": true, "optional": true, "requires": { "chownr": "^1.1.1", "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", "mkdirp": "^0.5.0", "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" + "yallist": "^3.0.3" } }, "util-deprecate": { @@ -7345,7 +6585,7 @@ "optional": true }, "yallist": { - "version": "3.0.3", + "version": "3.1.1", "bundled": true, "dev": true, "optional": true @@ -7796,10 +7036,13 @@ "dev": true }, "highlight.js": { - "version": "9.16.2", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.16.2.tgz", - "integrity": "sha512-feMUrVLZvjy0oC7FVJQcSQRqbBq9kwqnYE4+Kj9ZjbHh3g+BisiPgF49NyQbVLNdrL/qqZr3Ca9yOKwgn2i/tw==", - "dev": true + "version": "9.17.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.17.1.tgz", + "integrity": "sha512-TA2/doAur5Ol8+iM3Ov7qy3jYcr/QiJ2eDTdRF4dfbjG7AaaB99J5G+zSl11ljbl6cIcahgPY6SKb3sC3EJ0fw==", + "dev": true, + "requires": { + "handlebars": "^4.5.3" + } }, "hmac-drbg": { "version": "1.0.1", @@ -8123,6 +7366,12 @@ "kind-of": "^6.0.0" } }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -10128,6 +9377,12 @@ "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==", "dev": true }, + "object-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", + "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==", + "dev": true + }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -10970,6 +10225,12 @@ "safe-buffer": "^5.1.0" } }, + "randomhex": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/randomhex/-/randomhex-0.1.5.tgz", + "integrity": "sha1-us7vmCMpCRQA8qKRLGzQLxCU9YU=", + "dev": true + }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -11296,6 +10557,49 @@ "safe-regex": "^1.1.0" } }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0-next.1.tgz", + "integrity": "sha512-7MmGr03N7Rnuid6+wyhD9sHNE2n4tFSwExnU2lQl3lIo2ShXWGePY80zYaoMOmILWv57H0amMjZGHNzzGG70Rw==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.0", + "string.prototype.trimright": "^2.1.0" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + } + } + }, "regexpp": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", @@ -11797,15 +11101,6 @@ "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.3.tgz", "integrity": "sha1-uwBAvgMEPamgEqLOqfyfhSz8h9Q=" }, - "scrypt-shim": { - "version": "github:web3-js/scrypt-shim#be5e616323a8b5e568788bf94d03c1b8410eac54", - "from": "github:web3-js/scrypt-shim", - "dev": true, - "requires": { - "scryptsy": "^2.1.0", - "semver": "^6.3.0" - } - }, "scrypt.js": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/scrypt.js/-/scrypt.js-0.3.0.tgz", @@ -12544,14 +11839,47 @@ } }, "string.prototype.trim": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", - "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz", + "integrity": "sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.0", - "function-bind": "^1.0.2" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0-next.1.tgz", + "integrity": "sha512-7MmGr03N7Rnuid6+wyhD9sHNE2n4tFSwExnU2lQl3lIo2ShXWGePY80zYaoMOmILWv57H0amMjZGHNzzGG70Rw==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.0", + "string.prototype.trimright": "^2.1.0" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + } } }, "string.prototype.trimleft": { @@ -12766,36 +12094,52 @@ "dev": true }, "tape": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/tape/-/tape-4.11.0.tgz", - "integrity": "sha512-yixvDMX7q7JIs/omJSzSZrqulOV51EC9dK8dM0TzImTIkHWfe2/kFyL5v+d9C+SrCMaICk59ujsqFAVidDqDaA==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/tape/-/tape-4.12.0.tgz", + "integrity": "sha512-PWs/TopmfVeYyLNZnfKsoV160xjNq1LvX2SWzZTyhVYsDldR93p5Zp0lfmsY3BCpZdVMXBOkfYZFeScEfsFvKQ==", "dev": true, "requires": { - "deep-equal": "~1.0.1", + "deep-equal": "~1.1.1", "defined": "~1.0.0", "for-each": "~0.3.3", "function-bind": "~1.1.1", - "glob": "~7.1.4", + "glob": "~7.1.6", "has": "~1.0.3", "inherits": "~2.0.4", + "is-regex": "~1.0.5", "minimist": "~1.2.0", - "object-inspect": "~1.6.0", - "resolve": "~1.11.1", + "object-inspect": "~1.7.0", + "resolve": "~1.13.1", "resumer": "~0.0.0", - "string.prototype.trim": "~1.1.2", + "string.prototype.trim": "~1.2.1", "through": "~2.3.8" }, "dependencies": { + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, "resolve": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", - "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.13.1.tgz", + "integrity": "sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w==", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -12875,9 +12219,9 @@ } }, "terser": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.4.0.tgz", - "integrity": "sha512-oDG16n2WKm27JO8h4y/w3iqBGAOSCtq7k8dRmrn4Wf9NouL0b2WpMHGChFGZq4nFAQy1FsNJrVQHfurXOSTmOA==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.4.3.tgz", + "integrity": "sha512-0ikKraVtRDKGzHrzkCv5rUNDzqlhmhowOBqC0XqUHFpW+vJ45+20/IFBcebwKfiS2Z9fJin6Eo+F1zLZsxi8RA==", "dev": true, "requires": { "commander": "^2.20.0", @@ -12900,22 +12244,28 @@ } }, "terser-webpack-plugin": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz", - "integrity": "sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", "dev": true, "requires": { "cacache": "^12.0.2", "find-cache-dir": "^2.1.0", "is-wsl": "^1.1.0", "schema-utils": "^1.0.0", - "serialize-javascript": "^1.7.0", + "serialize-javascript": "^2.1.2", "source-map": "^0.6.1", "terser": "^4.1.2", "webpack-sources": "^1.4.0", "worker-farm": "^1.7.0" }, "dependencies": { + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", + "dev": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -13337,21 +12687,21 @@ } }, "typedoc": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.15.3.tgz", - "integrity": "sha512-RGX+dgnm9fyg5KHj81/ZhMiee0FfvJnjBXedhedhMWlrtM4YRv3pn8sYCWRt5TMi1Jli3/JG224pbFo3/3uaGw==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.15.5.tgz", + "integrity": "sha512-AKXLtOUCLRlSTyfXQHYp3LFPy6RiFLnxnKS5z1jwQsYXmCPbHWuhmfgS264Es2hPMZjzvHqk/ZQDzCBpb49u6w==", "dev": true, "requires": { "@types/minimatch": "3.0.3", "fs-extra": "^8.1.0", "handlebars": "^4.5.3", - "highlight.js": "^9.16.2", + "highlight.js": "^9.17.1", "lodash": "^4.17.15", "marked": "^0.7.0", "minimatch": "^3.0.0", "progress": "^2.0.3", "shelljs": "^0.8.3", - "typedoc-default-themes": "^0.6.1", + "typedoc-default-themes": "^0.6.2", "typescript": "3.7.x" }, "dependencies": { @@ -13369,9 +12719,9 @@ } }, "typedoc-default-themes": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.6.1.tgz", - "integrity": "sha512-z5AWKqQDz7igl9WkUuafx8cEm4MPVQGMpbWE+3lwVOaq+U4UoLKBMnpFQWh/4fqQ3bGysXpOstMxy2OOzHezyw==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.6.2.tgz", + "integrity": "sha512-+O+1aHjVIpDLsbkIDkZSNu+kutqmg7WdzahT+4KwBC/95mUgAb0xkbwdPpEJEpRX0ov1UJoCmvEPb1/VHxnTuw==", "dev": true, "requires": { "backbone": "^1.4.0", @@ -14213,9 +13563,9 @@ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" }, "webpack": { - "version": "4.41.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.2.tgz", - "integrity": "sha512-Zhw69edTGfbz9/8JJoyRQ/pq8FYUoY0diOXqW0T6yhgdhCv6wr0hra5DwwWexNRns2Z2+gsnrNcbe9hbGBgk/A==", + "version": "4.41.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.3.tgz", + "integrity": "sha512-EcNzP9jGoxpQAXq1VOoTet0ik7/VVU1MovIfcUSAjLowc7GhcQku/sOXALvq5nPpSei2HF6VRhibeJSC3i/Law==", "dev": true, "requires": { "@webassemblyjs/ast": "1.8.5", @@ -14238,15 +13588,15 @@ "node-libs-browser": "^2.2.1", "schema-utils": "^1.0.0", "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.1", + "terser-webpack-plugin": "^1.4.3", "watchpack": "^1.6.0", "webpack-sources": "^1.4.1" }, "dependencies": { "acorn": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", - "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", + "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==", "dev": true }, "braces": { diff --git a/package.json b/package.json index 30b6bf9..35c3f97 100644 --- a/package.json +++ b/package.json @@ -64,14 +64,14 @@ }, "devDependencies": { "@release-it/bumper": "^1.0.5", - "@truffle/hdwallet-provider": "^1.0.26", - "@types/chai": "^4.2.6", + "@truffle/hdwallet-provider": "^1.0.27", + "@types/chai": "^4.2.7", "@types/chai-spies": "^1.0.1", "@types/mocha": "^5.2.7", - "@types/node": "^12.12.14", + "@types/node": "^12.12.18", "@types/node-fetch": "^2.5.4", - "@typescript-eslint/eslint-plugin": "^2.10.0", - "@typescript-eslint/parser": "^2.10.0", + "@typescript-eslint/eslint-plugin": "^2.12.0", + "@typescript-eslint/parser": "^2.12.0", "auto-changelog": "^1.16.2", "chai": "^4.2.0", "chai-spies": "^1.0.0", @@ -79,7 +79,7 @@ "eslint": "^6.7.2", "eslint-config-oceanprotocol": "^1.5.0", "eslint-config-prettier": "^6.7.0", - "eslint-plugin-prettier": "^3.1.1", + "eslint-plugin-prettier": "^3.1.2", "lcov-result-merger": "^3.1.0", "mocha": "^6.2.2", "mock-local-storage": "^1.1.11", @@ -88,10 +88,10 @@ "prettier": "^1.19.1", "source-map-support": "^0.5.16", "ts-node": "^8.5.4", - "typedoc": "^0.15.3", + "typedoc": "^0.15.5", "typescript": "^3.7.3", "uglifyjs-webpack-plugin": "^2.2.0", - "webpack": "^4.41.2", + "webpack": "^4.41.3", "webpack-cli": "^3.3.10", "webpack-merge": "^4.2.2" }, From 21a08152d2a33f73b9bfc6509ef19731904bbd9b Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Tue, 17 Dec 2019 09:03:35 +0100 Subject: [PATCH 02/29] bump to keeper-contracts v0.13.0 --- .travis.yml | 2 +- library.json | 2 +- package-lock.json | 6 +++--- package.json | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index b6551f5..72a7538 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,7 +23,7 @@ before_script: - cd barge - export AQUARIUS_VERSION=v1.0.5 - export BRIZO_VERSION=v0.7.2 - - export KEEPER_VERSION=v0.12.7 + - export KEEPER_VERSION=v0.13.0 - export EVENTS_HANDLER_VERSION=v0.3.4 - export KEEPER_OWNER_ROLE_ADDRESS="0xe2DD09d719Da89e5a3D0F2549c7E24566e947260" - rm -rf "${HOME}/.ocean/keeper-contracts/artifacts" diff --git a/library.json b/library.json index 1c35b85..2e5ee7c 100644 --- a/library.json +++ b/library.json @@ -7,7 +7,7 @@ "dependencies": [ { "name": "keeper-contracts", - "version": "~0.12.7" + "version": "~0.13.0" }, { "name": "brizo", diff --git a/package-lock.json b/package-lock.json index 8d285cc..91812bd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -190,9 +190,9 @@ } }, "@oceanprotocol/keeper-contracts": { - "version": "0.12.7", - "resolved": "https://registry.npmjs.org/@oceanprotocol/keeper-contracts/-/keeper-contracts-0.12.7.tgz", - "integrity": "sha512-7EUBO3iAkm78VnQHCp5pCrjZ4EQ0omg/bsWo2uiUO6oW8L4bptqSolS2b19HA1zb/ZsmJuW6e6JerPMRtQtqEg==" + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@oceanprotocol/keeper-contracts/-/keeper-contracts-0.13.0.tgz", + "integrity": "sha512-PsiMRmRAK9veEgR5G7UAsAgA9Wgd0RWskYSpjNTbpaJaVTANSlwQYaCU8Zybg/U0uKVzmyXwFAYnH7iv4NSzMQ==" }, "@oceanprotocol/secret-store-client": { "version": "0.0.15", diff --git a/package.json b/package.json index 35c3f97..7f23062 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "web3": "^1.2.3" }, "dependencies": { - "@oceanprotocol/keeper-contracts": "^0.12.7", + "@oceanprotocol/keeper-contracts": "^0.13.0", "@oceanprotocol/secret-store-client": "^0.0.15", "bignumber.js": "^9.0.0", "deprecated-decorator": "^0.1.6", From 86c6a5a176203b222f2dc1f215c0c5fa6a418728 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Tue, 17 Dec 2019 11:37:06 +0100 Subject: [PATCH 03/29] Release 1.1.0-beta.0 --- CHANGELOG.md | 9 ++++++++- package-lock.json | 2 +- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 51a632f..2c9cc24 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file. Dates are d Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). +#### [v1.1.0-beta.0](https://github.com/oceanprotocol/squid-js/compare/v1.0.0...v1.1.0-beta.0) + +> 17 December 2019 + +- package updates [`eb23b04`](https://github.com/oceanprotocol/squid-js/commit/eb23b04ffec69a0f9f31f09985bc1012f3a386d2) +- bump to keeper-contracts v0.13.0 [`21a0815`](https://github.com/oceanprotocol/squid-js/commit/21a08152d2a33f73b9bfc6509ef19731904bbd9b) + #### [v1.0.0](https://github.com/oceanprotocol/squid-js/compare/v1.0.0-beta.7...v1.0.0) > 9 December 2019 @@ -11,7 +18,7 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). - v2 release: new DDO [`#328`](https://github.com/oceanprotocol/squid-js/pull/328) - package updates [`ccf7250`](https://github.com/oceanprotocol/squid-js/commit/ccf7250af87abf986d94c5023ac960fd155d0789) - lint fixes, bump Ocean components [`414c885`](https://github.com/oceanprotocol/squid-js/commit/414c885163325a69eb315b20f8fe3837bc557656) -- typos [`d6a233e`](https://github.com/oceanprotocol/squid-js/commit/d6a233e590631087ba1302ac44f1e597b512c34e) +- Release 1.0.0 [`df53099`](https://github.com/oceanprotocol/squid-js/commit/df530992a1e578ecb4459d54d2669972479ccb5b) #### [v1.0.0-beta.7](https://github.com/oceanprotocol/squid-js/compare/v0.8.3...v1.0.0-beta.7) diff --git a/package-lock.json b/package-lock.json index 91812bd..1b02310 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@oceanprotocol/squid", - "version": "1.0.0", + "version": "1.1.0-beta.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 7f23062..83683de 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@oceanprotocol/squid", - "version": "1.0.0", + "version": "1.1.0-beta.0", "description": "JavaScript client library for Ocean Protocol", "main": "./dist/node/squid.js", "typings": "./dist/node/squid.d.ts", From 60191ca85c5776422ae87edf293c565ea5a47834 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Wed, 18 Dec 2019 15:45:42 +0100 Subject: [PATCH 04/29] bump to keeper-contracts v0.13.1 --- .travis.yml | 2 +- library.json | 2 +- package-lock.json | 6 +++--- package.json | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 72a7538..e9e9e92 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,7 +23,7 @@ before_script: - cd barge - export AQUARIUS_VERSION=v1.0.5 - export BRIZO_VERSION=v0.7.2 - - export KEEPER_VERSION=v0.13.0 + - export KEEPER_VERSION=v0.13.1 - export EVENTS_HANDLER_VERSION=v0.3.4 - export KEEPER_OWNER_ROLE_ADDRESS="0xe2DD09d719Da89e5a3D0F2549c7E24566e947260" - rm -rf "${HOME}/.ocean/keeper-contracts/artifacts" diff --git a/library.json b/library.json index 2e5ee7c..2a48c02 100644 --- a/library.json +++ b/library.json @@ -7,7 +7,7 @@ "dependencies": [ { "name": "keeper-contracts", - "version": "~0.13.0" + "version": "~0.13.1" }, { "name": "brizo", diff --git a/package-lock.json b/package-lock.json index 1b02310..84fe80a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -190,9 +190,9 @@ } }, "@oceanprotocol/keeper-contracts": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@oceanprotocol/keeper-contracts/-/keeper-contracts-0.13.0.tgz", - "integrity": "sha512-PsiMRmRAK9veEgR5G7UAsAgA9Wgd0RWskYSpjNTbpaJaVTANSlwQYaCU8Zybg/U0uKVzmyXwFAYnH7iv4NSzMQ==" + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/@oceanprotocol/keeper-contracts/-/keeper-contracts-0.13.1.tgz", + "integrity": "sha512-HIpNyYe9Q3as5uSM8lwh4RI8WvmcZaR1MrzITlI5r3esJwLSXRA82SvSnpWf5N/kU2/ffzU8mP6qFi/8cDWrMA==" }, "@oceanprotocol/secret-store-client": { "version": "0.0.15", diff --git a/package.json b/package.json index 83683de..7fe6174 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "web3": "^1.2.3" }, "dependencies": { - "@oceanprotocol/keeper-contracts": "^0.13.0", + "@oceanprotocol/keeper-contracts": "^0.13.1", "@oceanprotocol/secret-store-client": "^0.0.15", "bignumber.js": "^9.0.0", "deprecated-decorator": "^0.1.6", From 216ae3330e3ffa147ca0d8417a901fa9f5a0d4cf Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Tue, 17 Dec 2019 09:02:46 +0100 Subject: [PATCH 05/29] package updates --- package-lock.json | 1025 +++++++++++++++++---------------------------- package.json | 14 +- 2 files changed, 390 insertions(+), 649 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8699b2d..30f9495 100644 --- a/package-lock.json +++ b/package-lock.json @@ -400,12 +400,11 @@ "dev": true }, "@truffle/hdwallet-provider": { - "version": "1.0.26", - "resolved": "https://registry.npmjs.org/@truffle/hdwallet-provider/-/hdwallet-provider-1.0.26.tgz", - "integrity": "sha512-ITEUOwT8o8FZmnAiZtFLHhTLFOlT5q/DIh9QzV+gG0GocqIY6D2CSLkhaqTn89xCGVftQfyQAFBqXfGRblNQKw==", + "version": "1.0.27", + "resolved": "https://registry.npmjs.org/@truffle/hdwallet-provider/-/hdwallet-provider-1.0.27.tgz", + "integrity": "sha512-Zj9evxhpTgWQu3XHiX6jBnINI52zT8MN5RhIKrcZCwabvCstrCiPMq0wDOuYxUVYfIeo5QvPz59O2zc5i7GFMw==", "dev": true, "requires": { - "@truffle/provider": "^0.2.3", "any-promise": "^1.3.0", "bindings": "^1.5.0", "bip39": "^2.4.2", @@ -413,7 +412,7 @@ "ethereumjs-tx": "^1.0.0", "ethereumjs-util": "^6.1.0", "ethereumjs-wallet": "^0.6.3", - "web3": "1.2.2", + "web3": "1.2.1", "web3-provider-engine": "git+https://github.com/trufflesuite/provider-engine.git#web3-one" }, "dependencies": { @@ -467,10 +466,10 @@ "safe-buffer": "^5.1.0" } }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "semver": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz", + "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==", "dev": true }, "web3": { @@ -849,379 +848,6 @@ "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==", "dev": true }, - "setimmediate": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", - "integrity": "sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48=", - "dev": true - }, - "uuid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", - "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=", - "dev": true - }, - "web3": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.2.2.tgz", - "integrity": "sha512-/ChbmB6qZpfGx6eNpczt5YSUBHEA5V2+iUCbn85EVb3Zv6FVxrOo5Tv7Lw0gE2tW7EEjASbCyp3mZeiZaCCngg==", - "dev": true, - "requires": { - "web3-bzz": "1.2.2", - "web3-core": "1.2.2", - "web3-eth": "1.2.2", - "web3-eth-personal": "1.2.2", - "web3-net": "1.2.2", - "web3-shh": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-bzz": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.2.2.tgz", - "integrity": "sha512-b1O2ObsqUN1lJxmFSjvnEC4TsaCbmh7Owj3IAIWTKqL9qhVgx7Qsu5O9cD13pBiSPNZJ68uJPaKq380QB4NWeA==", - "dev": true, - "requires": { - "@types/node": "^10.12.18", - "got": "9.6.0", - "swarm-js": "0.1.39", - "underscore": "1.9.1" - }, - "dependencies": { - "@types/node": { - "version": "10.17.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.6.tgz", - "integrity": "sha512-0a2X6cgN3RdPBL2MIlR6Lt0KlM7fOFsutuXcdglcOq6WvLnYXgPQSh0Mx6tO1KCAE8MxbHSOSTWDoUxRq+l3DA==", - "dev": true - } - } - }, - "web3-core": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.2.2.tgz", - "integrity": "sha512-miHAX3qUgxV+KYfaOY93Hlc3kLW2j5fH8FJy6kSxAv+d4d5aH0wwrU2IIoJylQdT+FeenQ38sgsCnFu9iZ1hCQ==", - "dev": true, - "requires": { - "@types/bn.js": "^4.11.4", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-core-requestmanager": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-core-helpers": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.2.2.tgz", - "integrity": "sha512-HJrRsIGgZa1jGUIhvGz4S5Yh6wtOIo/TMIsSLe+Xay+KVnbseJpPprDI5W3s7H2ODhMQTbogmmUFquZweW2ImQ==", - "dev": true, - "requires": { - "underscore": "1.9.1", - "web3-eth-iban": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-core-method": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.2.2.tgz", - "integrity": "sha512-szR4fDSBxNHaF1DFqE+j6sFR/afv9Aa36OW93saHZnrh+iXSrYeUUDfugeNcRlugEKeUCkd4CZylfgbK2SKYJA==", - "dev": true, - "requires": { - "underscore": "1.9.1", - "web3-core-helpers": "1.2.2", - "web3-core-promievent": "1.2.2", - "web3-core-subscriptions": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-core-promievent": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.2.2.tgz", - "integrity": "sha512-tKvYeT8bkUfKABcQswK6/X79blKTKYGk949urZKcLvLDEaWrM3uuzDwdQT3BNKzQ3vIvTggFPX9BwYh0F1WwqQ==", - "dev": true, - "requires": { - "any-promise": "1.3.0", - "eventemitter3": "3.1.2" - } - }, - "web3-core-requestmanager": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.2.2.tgz", - "integrity": "sha512-a+gSbiBRHtHvkp78U2bsntMGYGF2eCb6219aMufuZWeAZGXJ63Wc2321PCbA8hF9cQrZI4EoZ4kVLRI4OF15Hw==", - "dev": true, - "requires": { - "underscore": "1.9.1", - "web3-core-helpers": "1.2.2", - "web3-providers-http": "1.2.2", - "web3-providers-ipc": "1.2.2", - "web3-providers-ws": "1.2.2" - } - }, - "web3-core-subscriptions": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.2.2.tgz", - "integrity": "sha512-QbTgigNuT4eicAWWr7ahVpJyM8GbICsR1Ys9mJqzBEwpqS+RXTRVSkwZ2IsxO+iqv6liMNwGregbJLq4urMFcQ==", - "dev": true, - "requires": { - "eventemitter3": "3.1.2", - "underscore": "1.9.1", - "web3-core-helpers": "1.2.2" - } - }, - "web3-eth": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.2.2.tgz", - "integrity": "sha512-UXpC74mBQvZzd4b+baD4Ocp7g+BlwxhBHumy9seyE/LMIcMlePXwCKzxve9yReNpjaU16Mmyya6ZYlyiKKV8UA==", - "dev": true, - "requires": { - "underscore": "1.9.1", - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-core-subscriptions": "1.2.2", - "web3-eth-abi": "1.2.2", - "web3-eth-accounts": "1.2.2", - "web3-eth-contract": "1.2.2", - "web3-eth-ens": "1.2.2", - "web3-eth-iban": "1.2.2", - "web3-eth-personal": "1.2.2", - "web3-net": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-eth-abi": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.2.2.tgz", - "integrity": "sha512-Yn/ZMgoOLxhTVxIYtPJ0eS6pnAnkTAaJgUJh1JhZS4ekzgswMfEYXOwpMaD5eiqPJLpuxmZFnXnBZlnQ1JMXsw==", - "dev": true, - "requires": { - "ethers": "4.0.0-beta.3", - "underscore": "1.9.1", - "web3-utils": "1.2.2" - }, - "dependencies": { - "@types/node": { - "version": "10.17.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.6.tgz", - "integrity": "sha512-0a2X6cgN3RdPBL2MIlR6Lt0KlM7fOFsutuXcdglcOq6WvLnYXgPQSh0Mx6tO1KCAE8MxbHSOSTWDoUxRq+l3DA==", - "dev": true - }, - "elliptic": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz", - "integrity": "sha1-VILZZG1UvLif19mU/J4ulWiHbj8=", - "dev": true, - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "inherits": "^2.0.1" - } - }, - "ethers": { - "version": "4.0.0-beta.3", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.0-beta.3.tgz", - "integrity": "sha512-YYPogooSknTwvHg3+Mv71gM/3Wcrx+ZpCzarBj3mqs9njjRkrOo2/eufzhHloOCo3JSoNI4TQJJ6yU5ABm3Uog==", - "dev": true, - "requires": { - "@types/node": "^10.3.2", - "aes-js": "3.0.0", - "bn.js": "^4.4.0", - "elliptic": "6.3.3", - "hash.js": "1.1.3", - "js-sha3": "0.5.7", - "scrypt-js": "2.0.3", - "setimmediate": "1.0.4", - "uuid": "2.0.1", - "xmlhttprequest": "1.8.0" - } - }, - "scrypt-js": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.3.tgz", - "integrity": "sha1-uwBAvgMEPamgEqLOqfyfhSz8h9Q=", - "dev": true - } - } - }, - "web3-eth-accounts": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.2.2.tgz", - "integrity": "sha512-KzHOEyXOEZ13ZOkWN3skZKqSo5f4Z1ogPFNn9uZbKCz+kSp+gCAEKxyfbOsB/JMAp5h7o7pb6eYsPCUBJmFFiA==", - "dev": true, - "requires": { - "any-promise": "1.3.0", - "crypto-browserify": "3.12.0", - "eth-lib": "0.2.7", - "ethereumjs-common": "^1.3.2", - "ethereumjs-tx": "^2.1.1", - "scrypt-shim": "github:web3-js/scrypt-shim", - "underscore": "1.9.1", - "uuid": "3.3.2", - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-utils": "1.2.2" - }, - "dependencies": { - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "dev": true - } - } - }, - "web3-eth-contract": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.2.2.tgz", - "integrity": "sha512-EKT2yVFws3FEdotDQoNsXTYL798+ogJqR2//CaGwx3p0/RvQIgfzEwp8nbgA6dMxCsn9KOQi7OtklzpnJMkjtA==", - "dev": true, - "requires": { - "@types/bn.js": "^4.11.4", - "underscore": "1.9.1", - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-core-promievent": "1.2.2", - "web3-core-subscriptions": "1.2.2", - "web3-eth-abi": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-eth-ens": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.2.2.tgz", - "integrity": "sha512-CFjkr2HnuyMoMFBoNUWojyguD4Ef+NkyovcnUc/iAb9GP4LHohKrODG4pl76R5u61TkJGobC2ij6TyibtsyVYg==", - "dev": true, - "requires": { - "eth-ens-namehash": "2.0.8", - "underscore": "1.9.1", - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-promievent": "1.2.2", - "web3-eth-abi": "1.2.2", - "web3-eth-contract": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-eth-iban": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.2.2.tgz", - "integrity": "sha512-gxKXBoUhaTFHr0vJB/5sd4i8ejF/7gIsbM/VvemHT3tF5smnmY6hcwSMmn7sl5Gs+83XVb/BngnnGkf+I/rsrQ==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "web3-utils": "1.2.2" - } - }, - "web3-eth-personal": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.2.2.tgz", - "integrity": "sha512-4w+GLvTlFqW3+q4xDUXvCEMU7kRZ+xm/iJC8gm1Li1nXxwwFbs+Y+KBK6ZYtoN1qqAnHR+plYpIoVo27ixI5Rg==", - "dev": true, - "requires": { - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-net": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-net": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.2.2.tgz", - "integrity": "sha512-K07j2DXq0x4UOJgae65rWZKraOznhk8v5EGSTdFqASTx7vWE/m+NqBijBYGEsQY1lSMlVaAY9UEQlcXK5HzXTw==", - "dev": true, - "requires": { - "web3-core": "1.2.2", - "web3-core-method": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-providers-http": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.2.2.tgz", - "integrity": "sha512-BNZ7Hguy3eBszsarH5gqr9SIZNvqk9eKwqwmGH1LQS1FL3NdoOn7tgPPdddrXec4fL94CwgNk4rCU+OjjZRNDg==", - "dev": true, - "requires": { - "web3-core-helpers": "1.2.2", - "xhr2-cookies": "1.1.0" - } - }, - "web3-providers-ipc": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.2.2.tgz", - "integrity": "sha512-t97w3zi5Kn/LEWGA6D9qxoO0LBOG+lK2FjlEdCwDQatffB/+vYrzZ/CLYVQSoyFZAlsDoBasVoYSWZK1n39aHA==", - "dev": true, - "requires": { - "oboe": "2.1.4", - "underscore": "1.9.1", - "web3-core-helpers": "1.2.2" - } - }, - "web3-providers-ws": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.2.2.tgz", - "integrity": "sha512-Wb1mrWTGMTXOpJkL0yGvL/WYLt8fUIXx8k/l52QB2IiKzvyd42dTWn4+j8IKXGSYYzOm7NMqv6nhA5VDk12VfA==", - "dev": true, - "requires": { - "underscore": "1.9.1", - "web3-core-helpers": "1.2.2", - "websocket": "github:web3-js/WebSocket-Node#polyfill/globalThis" - } - }, - "web3-shh": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.2.2.tgz", - "integrity": "sha512-og258NPhlBn8yYrDWjoWBBb6zo1OlBgoWGT+LL5/LPqRbjPe09hlOYHgscAAr9zZGtohTOty7RrxYw6Z6oDWCg==", - "dev": true, - "requires": { - "web3-core": "1.2.2", - "web3-core-method": "1.2.2", - "web3-core-subscriptions": "1.2.2", - "web3-net": "1.2.2" - } - }, - "web3-utils": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.2.2.tgz", - "integrity": "sha512-joF+s3243TY5cL7Z7y4h1JsJpUCf/kmFmj+eJar7Y2yNIGVcW961VyrAms75tjUysSuHaUQ3eQXjBEUJueT52A==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "eth-lib": "0.2.7", - "ethereum-bloom-filters": "^1.0.6", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "underscore": "1.9.1", - "utf8": "3.0.0" - } - } - } - }, - "@truffle/provider": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@truffle/provider/-/provider-0.2.3.tgz", - "integrity": "sha512-EsAE7eiXMlTAQBNst12fuTKddMMtqB7d9jQmVvYvq+/G3ryZCf50dTiod0lhTIh0dIQ/tirFdvBRKDfc8c+hsQ==", - "dev": true, - "requires": { - "@truffle/error": "^0.0.8", - "@truffle/interface-adapter": "^0.4.0", - "web3": "1.2.2" - }, - "dependencies": { - "eth-lib": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.7.tgz", - "integrity": "sha1-L5Pxex4jrsN1nNSj/iDBKGo/wco=", - "dev": true, - "requires": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - } - }, "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", @@ -1229,81 +855,71 @@ "dev": true }, "web3": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.2.2.tgz", - "integrity": "sha512-/ChbmB6qZpfGx6eNpczt5YSUBHEA5V2+iUCbn85EVb3Zv6FVxrOo5Tv7Lw0gE2tW7EEjASbCyp3mZeiZaCCngg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.2.1.tgz", + "integrity": "sha512-nNMzeCK0agb5i/oTWNdQ1aGtwYfXzHottFP2Dz0oGIzavPMGSKyVlr8ibVb1yK5sJBjrWVnTdGaOC2zKDFuFRw==", "dev": true, "requires": { - "web3-bzz": "1.2.2", - "web3-core": "1.2.2", - "web3-eth": "1.2.2", - "web3-eth-personal": "1.2.2", - "web3-net": "1.2.2", - "web3-shh": "1.2.2", - "web3-utils": "1.2.2" + "web3-bzz": "1.2.1", + "web3-core": "1.2.1", + "web3-eth": "1.2.1", + "web3-eth-personal": "1.2.1", + "web3-net": "1.2.1", + "web3-shh": "1.2.1", + "web3-utils": "1.2.1" } }, "web3-bzz": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.2.2.tgz", - "integrity": "sha512-b1O2ObsqUN1lJxmFSjvnEC4TsaCbmh7Owj3IAIWTKqL9qhVgx7Qsu5O9cD13pBiSPNZJ68uJPaKq380QB4NWeA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.2.1.tgz", + "integrity": "sha512-LdOO44TuYbGIPfL4ilkuS89GQovxUpmLz6C1UC7VYVVRILeZS740FVB3j9V4P4FHUk1RenaDfKhcntqgVCHtjw==", "dev": true, "requires": { - "@types/node": "^10.12.18", "got": "9.6.0", "swarm-js": "0.1.39", "underscore": "1.9.1" - }, - "dependencies": { - "@types/node": { - "version": "10.17.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.6.tgz", - "integrity": "sha512-0a2X6cgN3RdPBL2MIlR6Lt0KlM7fOFsutuXcdglcOq6WvLnYXgPQSh0Mx6tO1KCAE8MxbHSOSTWDoUxRq+l3DA==", - "dev": true - } } }, "web3-core": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.2.2.tgz", - "integrity": "sha512-miHAX3qUgxV+KYfaOY93Hlc3kLW2j5fH8FJy6kSxAv+d4d5aH0wwrU2IIoJylQdT+FeenQ38sgsCnFu9iZ1hCQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.2.1.tgz", + "integrity": "sha512-5ODwIqgl8oIg/0+Ai4jsLxkKFWJYE0uLuE1yUKHNVCL4zL6n3rFjRMpKPokd6id6nJCNgeA64KdWQ4XfpnjdMg==", "dev": true, "requires": { - "@types/bn.js": "^4.11.4", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-core-requestmanager": "1.2.2", - "web3-utils": "1.2.2" + "web3-core-helpers": "1.2.1", + "web3-core-method": "1.2.1", + "web3-core-requestmanager": "1.2.1", + "web3-utils": "1.2.1" } }, "web3-core-helpers": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.2.2.tgz", - "integrity": "sha512-HJrRsIGgZa1jGUIhvGz4S5Yh6wtOIo/TMIsSLe+Xay+KVnbseJpPprDI5W3s7H2ODhMQTbogmmUFquZweW2ImQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.2.1.tgz", + "integrity": "sha512-Gx3sTEajD5r96bJgfuW377PZVFmXIH4TdqDhgGwd2lZQCcMi+DA4TgxJNJGxn0R3aUVzyyE76j4LBrh412mXrw==", "dev": true, "requires": { "underscore": "1.9.1", - "web3-eth-iban": "1.2.2", - "web3-utils": "1.2.2" + "web3-eth-iban": "1.2.1", + "web3-utils": "1.2.1" } }, "web3-core-method": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.2.2.tgz", - "integrity": "sha512-szR4fDSBxNHaF1DFqE+j6sFR/afv9Aa36OW93saHZnrh+iXSrYeUUDfugeNcRlugEKeUCkd4CZylfgbK2SKYJA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.2.1.tgz", + "integrity": "sha512-Ghg2WS23qi6Xj8Od3VCzaImLHseEA7/usvnOItluiIc5cKs00WYWsNy2YRStzU9a2+z8lwQywPYp0nTzR/QXdQ==", "dev": true, "requires": { "underscore": "1.9.1", - "web3-core-helpers": "1.2.2", - "web3-core-promievent": "1.2.2", - "web3-core-subscriptions": "1.2.2", - "web3-utils": "1.2.2" + "web3-core-helpers": "1.2.1", + "web3-core-promievent": "1.2.1", + "web3-core-subscriptions": "1.2.1", + "web3-utils": "1.2.1" } }, "web3-core-promievent": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.2.2.tgz", - "integrity": "sha512-tKvYeT8bkUfKABcQswK6/X79blKTKYGk949urZKcLvLDEaWrM3uuzDwdQT3BNKzQ3vIvTggFPX9BwYh0F1WwqQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.2.1.tgz", + "integrity": "sha512-IVUqgpIKoeOYblwpex4Hye6npM0aMR+kU49VP06secPeN0rHMyhGF0ZGveWBrGvf8WDPI7jhqPBFIC6Jf3Q3zw==", "dev": true, "requires": { "any-promise": "1.3.0", @@ -1311,204 +927,201 @@ } }, "web3-core-requestmanager": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.2.2.tgz", - "integrity": "sha512-a+gSbiBRHtHvkp78U2bsntMGYGF2eCb6219aMufuZWeAZGXJ63Wc2321PCbA8hF9cQrZI4EoZ4kVLRI4OF15Hw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.2.1.tgz", + "integrity": "sha512-xfknTC69RfYmLKC+83Jz73IC3/sS2ZLhGtX33D4Q5nQ8yc39ElyAolxr9sJQS8kihOcM6u4J+8gyGMqsLcpIBg==", "dev": true, "requires": { "underscore": "1.9.1", - "web3-core-helpers": "1.2.2", - "web3-providers-http": "1.2.2", - "web3-providers-ipc": "1.2.2", - "web3-providers-ws": "1.2.2" + "web3-core-helpers": "1.2.1", + "web3-providers-http": "1.2.1", + "web3-providers-ipc": "1.2.1", + "web3-providers-ws": "1.2.1" } }, "web3-core-subscriptions": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.2.2.tgz", - "integrity": "sha512-QbTgigNuT4eicAWWr7ahVpJyM8GbICsR1Ys9mJqzBEwpqS+RXTRVSkwZ2IsxO+iqv6liMNwGregbJLq4urMFcQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.2.1.tgz", + "integrity": "sha512-nmOwe3NsB8V8UFsY1r+sW6KjdOS68h8nuh7NzlWxBQT/19QSUGiERRTaZXWu5BYvo1EoZRMxCKyCQpSSXLc08g==", "dev": true, "requires": { "eventemitter3": "3.1.2", "underscore": "1.9.1", - "web3-core-helpers": "1.2.2" + "web3-core-helpers": "1.2.1" } }, "web3-eth": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.2.2.tgz", - "integrity": "sha512-UXpC74mBQvZzd4b+baD4Ocp7g+BlwxhBHumy9seyE/LMIcMlePXwCKzxve9yReNpjaU16Mmyya6ZYlyiKKV8UA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.2.1.tgz", + "integrity": "sha512-/2xly4Yry5FW1i+uygPjhfvgUP/MS/Dk+PDqmzp5M88tS86A+j8BzKc23GrlA8sgGs0645cpZK/999LpEF5UdA==", "dev": true, "requires": { "underscore": "1.9.1", - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-core-subscriptions": "1.2.2", - "web3-eth-abi": "1.2.2", - "web3-eth-accounts": "1.2.2", - "web3-eth-contract": "1.2.2", - "web3-eth-ens": "1.2.2", - "web3-eth-iban": "1.2.2", - "web3-eth-personal": "1.2.2", - "web3-net": "1.2.2", - "web3-utils": "1.2.2" + "web3-core": "1.2.1", + "web3-core-helpers": "1.2.1", + "web3-core-method": "1.2.1", + "web3-core-subscriptions": "1.2.1", + "web3-eth-abi": "1.2.1", + "web3-eth-accounts": "1.2.1", + "web3-eth-contract": "1.2.1", + "web3-eth-ens": "1.2.1", + "web3-eth-iban": "1.2.1", + "web3-eth-personal": "1.2.1", + "web3-net": "1.2.1", + "web3-utils": "1.2.1" } }, "web3-eth-abi": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.2.2.tgz", - "integrity": "sha512-Yn/ZMgoOLxhTVxIYtPJ0eS6pnAnkTAaJgUJh1JhZS4ekzgswMfEYXOwpMaD5eiqPJLpuxmZFnXnBZlnQ1JMXsw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.2.1.tgz", + "integrity": "sha512-jI/KhU2a/DQPZXHjo2GW0myEljzfiKOn+h1qxK1+Y9OQfTcBMxrQJyH5AP89O6l6NZ1QvNdq99ThAxBFoy5L+g==", "dev": true, "requires": { "ethers": "4.0.0-beta.3", "underscore": "1.9.1", - "web3-utils": "1.2.2" + "web3-utils": "1.2.1" } }, "web3-eth-accounts": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.2.2.tgz", - "integrity": "sha512-KzHOEyXOEZ13ZOkWN3skZKqSo5f4Z1ogPFNn9uZbKCz+kSp+gCAEKxyfbOsB/JMAp5h7o7pb6eYsPCUBJmFFiA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.2.1.tgz", + "integrity": "sha512-26I4qq42STQ8IeKUyur3MdQ1NzrzCqPsmzqpux0j6X/XBD7EjZ+Cs0lhGNkSKH5dI3V8CJasnQ5T1mNKeWB7nQ==", "dev": true, "requires": { "any-promise": "1.3.0", "crypto-browserify": "3.12.0", "eth-lib": "0.2.7", - "ethereumjs-common": "^1.3.2", - "ethereumjs-tx": "^2.1.1", - "scrypt-shim": "github:web3-js/scrypt-shim", + "scryptsy": "2.1.0", + "semver": "6.2.0", "underscore": "1.9.1", "uuid": "3.3.2", - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-utils": "1.2.2" + "web3-core": "1.2.1", + "web3-core-helpers": "1.2.1", + "web3-core-method": "1.2.1", + "web3-utils": "1.2.1" } }, "web3-eth-contract": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.2.2.tgz", - "integrity": "sha512-EKT2yVFws3FEdotDQoNsXTYL798+ogJqR2//CaGwx3p0/RvQIgfzEwp8nbgA6dMxCsn9KOQi7OtklzpnJMkjtA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.2.1.tgz", + "integrity": "sha512-kYFESbQ3boC9bl2rYVghj7O8UKMiuKaiMkxvRH5cEDHil8V7MGEGZNH0slSdoyeftZVlaWSMqkRP/chfnKND0g==", "dev": true, "requires": { - "@types/bn.js": "^4.11.4", "underscore": "1.9.1", - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-core-promievent": "1.2.2", - "web3-core-subscriptions": "1.2.2", - "web3-eth-abi": "1.2.2", - "web3-utils": "1.2.2" + "web3-core": "1.2.1", + "web3-core-helpers": "1.2.1", + "web3-core-method": "1.2.1", + "web3-core-promievent": "1.2.1", + "web3-core-subscriptions": "1.2.1", + "web3-eth-abi": "1.2.1", + "web3-utils": "1.2.1" } }, "web3-eth-ens": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.2.2.tgz", - "integrity": "sha512-CFjkr2HnuyMoMFBoNUWojyguD4Ef+NkyovcnUc/iAb9GP4LHohKrODG4pl76R5u61TkJGobC2ij6TyibtsyVYg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.2.1.tgz", + "integrity": "sha512-lhP1kFhqZr2nnbu3CGIFFrAnNxk2veXpOXBY48Tub37RtobDyHijHgrj+xTh+mFiPokyrapVjpFsbGa+Xzye4Q==", "dev": true, "requires": { "eth-ens-namehash": "2.0.8", "underscore": "1.9.1", - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-promievent": "1.2.2", - "web3-eth-abi": "1.2.2", - "web3-eth-contract": "1.2.2", - "web3-utils": "1.2.2" + "web3-core": "1.2.1", + "web3-core-helpers": "1.2.1", + "web3-core-promievent": "1.2.1", + "web3-eth-abi": "1.2.1", + "web3-eth-contract": "1.2.1", + "web3-utils": "1.2.1" } }, "web3-eth-iban": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.2.2.tgz", - "integrity": "sha512-gxKXBoUhaTFHr0vJB/5sd4i8ejF/7gIsbM/VvemHT3tF5smnmY6hcwSMmn7sl5Gs+83XVb/BngnnGkf+I/rsrQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.2.1.tgz", + "integrity": "sha512-9gkr4QPl1jCU+wkgmZ8EwODVO3ovVj6d6JKMos52ggdT2YCmlfvFVF6wlGLwi0VvNa/p+0BjJzaqxnnG/JewjQ==", "dev": true, "requires": { "bn.js": "4.11.8", - "web3-utils": "1.2.2" + "web3-utils": "1.2.1" } }, "web3-eth-personal": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.2.2.tgz", - "integrity": "sha512-4w+GLvTlFqW3+q4xDUXvCEMU7kRZ+xm/iJC8gm1Li1nXxwwFbs+Y+KBK6ZYtoN1qqAnHR+plYpIoVo27ixI5Rg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.2.1.tgz", + "integrity": "sha512-RNDVSiaSoY4aIp8+Hc7z+X72H7lMb3fmAChuSBADoEc7DsJrY/d0R5qQDK9g9t2BO8oxgLrLNyBP/9ub2Hc6Bg==", "dev": true, "requires": { - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-net": "1.2.2", - "web3-utils": "1.2.2" + "web3-core": "1.2.1", + "web3-core-helpers": "1.2.1", + "web3-core-method": "1.2.1", + "web3-net": "1.2.1", + "web3-utils": "1.2.1" } }, "web3-net": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.2.2.tgz", - "integrity": "sha512-K07j2DXq0x4UOJgae65rWZKraOznhk8v5EGSTdFqASTx7vWE/m+NqBijBYGEsQY1lSMlVaAY9UEQlcXK5HzXTw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.2.1.tgz", + "integrity": "sha512-Yt1Bs7WgnLESPe0rri/ZoPWzSy55ovioaP35w1KZydrNtQ5Yq4WcrAdhBzcOW7vAkIwrsLQsvA+hrOCy7mNauw==", "dev": true, "requires": { - "web3-core": "1.2.2", - "web3-core-method": "1.2.2", - "web3-utils": "1.2.2" + "web3-core": "1.2.1", + "web3-core-method": "1.2.1", + "web3-utils": "1.2.1" } }, "web3-providers-http": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.2.2.tgz", - "integrity": "sha512-BNZ7Hguy3eBszsarH5gqr9SIZNvqk9eKwqwmGH1LQS1FL3NdoOn7tgPPdddrXec4fL94CwgNk4rCU+OjjZRNDg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.2.1.tgz", + "integrity": "sha512-BDtVUVolT9b3CAzeGVA/np1hhn7RPUZ6YYGB/sYky+GjeO311Yoq8SRDUSezU92x8yImSC2B+SMReGhd1zL+bQ==", "dev": true, "requires": { - "web3-core-helpers": "1.2.2", + "web3-core-helpers": "1.2.1", "xhr2-cookies": "1.1.0" } }, "web3-providers-ipc": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.2.2.tgz", - "integrity": "sha512-t97w3zi5Kn/LEWGA6D9qxoO0LBOG+lK2FjlEdCwDQatffB/+vYrzZ/CLYVQSoyFZAlsDoBasVoYSWZK1n39aHA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.2.1.tgz", + "integrity": "sha512-oPEuOCwxVx8L4CPD0TUdnlOUZwGBSRKScCz/Ws2YHdr9Ium+whm+0NLmOZjkjQp5wovQbyBzNa6zJz1noFRvFA==", "dev": true, "requires": { "oboe": "2.1.4", "underscore": "1.9.1", - "web3-core-helpers": "1.2.2" + "web3-core-helpers": "1.2.1" } }, "web3-providers-ws": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.2.2.tgz", - "integrity": "sha512-Wb1mrWTGMTXOpJkL0yGvL/WYLt8fUIXx8k/l52QB2IiKzvyd42dTWn4+j8IKXGSYYzOm7NMqv6nhA5VDk12VfA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.2.1.tgz", + "integrity": "sha512-oqsQXzu+ejJACVHy864WwIyw+oB21nw/pI65/sD95Zi98+/HQzFfNcIFneF1NC4bVF3VNX4YHTNq2I2o97LAiA==", "dev": true, "requires": { "underscore": "1.9.1", - "web3-core-helpers": "1.2.2", + "web3-core-helpers": "1.2.1", "websocket": "github:web3-js/WebSocket-Node#polyfill/globalThis" } }, "web3-shh": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.2.2.tgz", - "integrity": "sha512-og258NPhlBn8yYrDWjoWBBb6zo1OlBgoWGT+LL5/LPqRbjPe09hlOYHgscAAr9zZGtohTOty7RrxYw6Z6oDWCg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.2.1.tgz", + "integrity": "sha512-/3Cl04nza5kuFn25bV3FJWa0s3Vafr5BlT933h26xovQ6HIIz61LmvNQlvX1AhFL+SNJOTcQmK1SM59vcyC8bA==", "dev": true, "requires": { - "web3-core": "1.2.2", - "web3-core-method": "1.2.2", - "web3-core-subscriptions": "1.2.2", - "web3-net": "1.2.2" + "web3-core": "1.2.1", + "web3-core-method": "1.2.1", + "web3-core-subscriptions": "1.2.1", + "web3-net": "1.2.1" } }, "web3-utils": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.2.2.tgz", - "integrity": "sha512-joF+s3243TY5cL7Z7y4h1JsJpUCf/kmFmj+eJar7Y2yNIGVcW961VyrAms75tjUysSuHaUQ3eQXjBEUJueT52A==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.2.1.tgz", + "integrity": "sha512-Mrcn3l58L+yCKz3zBryM6JZpNruWuT0OCbag8w+reeNROSGVlXzUQkU+gtAwc9JCZ7tKUyg67+2YUGqUjVcyBA==", "dev": true, "requires": { "bn.js": "4.11.8", "eth-lib": "0.2.7", - "ethereum-bloom-filters": "^1.0.6", "ethjs-unit": "0.1.6", "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", + "randomhex": "0.1.5", "underscore": "1.9.1", "utf8": "3.0.0" } @@ -1532,9 +1145,9 @@ } }, "@types/chai": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.6.tgz", - "integrity": "sha512-HF8faEUA4JurIm+68VaA2KedtZf5LYdXpQEAbIAN79DwWQbO82BNTksZgCH3UMqbZHXex9C6TrBfg7OUInRISQ==", + "version": "4.2.7", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.7.tgz", + "integrity": "sha512-luq8meHGYwvky0O7u0eQZdA7B4Wd9owUCqvbw2m3XCrCU8mplYOujMBbvyS547AxJkC+pGnd0Cm15eNxEUNU8g==", "dev": true }, "@types/chai-spies": { @@ -1608,12 +1221,12 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.10.0.tgz", - "integrity": "sha512-rT51fNLW0u3fnDGnAHVC5nu+Das+y2CpW10yqvf6/j5xbuUV3FxA3mBaIbM24CXODXjbgUznNb4Kg9XZOUxKAw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.12.0.tgz", + "integrity": "sha512-1t4r9rpLuEwl3hgt90jY18wJHSyb0E3orVL3DaqwmpiSDHmHiSspVsvsFF78BJ/3NNG3qmeso836jpuBWYziAA==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "2.10.0", + "@typescript-eslint/experimental-utils": "2.12.0", "eslint-utils": "^1.4.3", "functional-red-black-tree": "^1.0.1", "regexpp": "^3.0.0", @@ -1629,32 +1242,32 @@ } }, "@typescript-eslint/experimental-utils": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.10.0.tgz", - "integrity": "sha512-FZhWq6hWWZBP76aZ7bkrfzTMP31CCefVIImrwP3giPLcoXocmLTmr92NLZxuIcTL4GTEOE33jQMWy9PwelL+yQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.12.0.tgz", + "integrity": "sha512-jv4gYpw5N5BrWF3ntROvCuLe1IjRenLy5+U57J24NbPGwZFAjhnM45qpq0nDH1y/AZMb3Br25YiNVwyPbz6RkA==", "dev": true, "requires": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "2.10.0", + "@typescript-eslint/typescript-estree": "2.12.0", "eslint-scope": "^5.0.0" } }, "@typescript-eslint/parser": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.10.0.tgz", - "integrity": "sha512-wQNiBokcP5ZsTuB+i4BlmVWq6o+oAhd8en2eSm/EE9m7BgZUIfEeYFd6z3S+T7bgNuloeiHA1/cevvbBDLr98g==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.12.0.tgz", + "integrity": "sha512-lPdkwpdzxEfjI8TyTzZqPatkrswLSVu4bqUgnB03fHSOwpC7KSerPgJRgIAf11UGNf7HKjJV6oaPZI4AghLU6g==", "dev": true, "requires": { "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "2.10.0", - "@typescript-eslint/typescript-estree": "2.10.0", + "@typescript-eslint/experimental-utils": "2.12.0", + "@typescript-eslint/typescript-estree": "2.12.0", "eslint-visitor-keys": "^1.1.0" } }, "@typescript-eslint/typescript-estree": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.10.0.tgz", - "integrity": "sha512-oOYnplddQNm/LGVkqbkAwx4TIBuuZ36cAQq9v3nFIU9FmhemHuVzAesMSXNQDdAzCa5bFgCrfD3JWhYVKlRN2g==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.12.0.tgz", + "integrity": "sha512-rGehVfjHEn8Frh9UW02ZZIfJs6SIIxIu/K1bbci8rFfDE/1lQ8krIJy5OXOV3DVnNdDPtoiPOdEANkLMrwXbiQ==", "dev": true, "requires": { "debug": "^4.1.1", @@ -3705,9 +3318,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001015", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001015.tgz", - "integrity": "sha512-/xL2AbW/XWHNu1gnIrO8UitBGoFthcsDgU9VLK1/dpsoxbaD5LscHozKze05R6WLsBvLhqv78dAPozMFQBYLbQ==", + "version": "1.0.30001016", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001016.tgz", + "integrity": "sha512-yYQ2QfotceRiH4U+h1Us86WJXtVHDmy3nEKIdYPsZCYnOV5/tMgGbmoIlrMzmh2VXlproqYtVaKeGDBkMZifFA==", "dev": true }, "caseless": { @@ -4333,9 +3946,9 @@ "dev": true }, "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==", + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", "dev": true }, "core-util-is": { @@ -4654,10 +4267,18 @@ } }, "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } }, "deep-extend": { "version": "0.6.0", @@ -5302,9 +4923,9 @@ } }, "eslint-plugin-prettier": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.1.tgz", - "integrity": "sha512-A+TZuHZ0KU0cnn56/9mfR7/KjUJ9QNVXUhwvRFSR7PGPe0zQR6PTkmyqg1AtUUEOzTqeRsUwyKFh0oVZKVCrtA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz", + "integrity": "sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" @@ -6916,14 +6537,15 @@ "dev": true }, "fsevents": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", - "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz", + "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", "dev": true, "optional": true, "requires": { + "bindings": "^1.5.0", "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" + "node-pre-gyp": "*" }, "dependencies": { "abbrev": { @@ -6971,7 +6593,7 @@ } }, "chownr": { - "version": "1.1.1", + "version": "1.1.3", "bundled": true, "dev": true, "optional": true @@ -7001,7 +6623,7 @@ "optional": true }, "debug": { - "version": "4.1.1", + "version": "3.2.6", "bundled": true, "dev": true, "optional": true, @@ -7028,12 +6650,12 @@ "optional": true }, "fs-minipass": { - "version": "1.2.5", + "version": "1.2.7", "bundled": true, "dev": true, "optional": true, "requires": { - "minipass": "^2.2.1" + "minipass": "^2.6.0" } }, "fs.realpath": { @@ -7059,7 +6681,7 @@ } }, "glob": { - "version": "7.1.3", + "version": "7.1.6", "bundled": true, "dev": true, "optional": true, @@ -7088,7 +6710,7 @@ } }, "ignore-walk": { - "version": "3.0.1", + "version": "3.0.3", "bundled": true, "dev": true, "optional": true, @@ -7107,7 +6729,7 @@ } }, "inherits": { - "version": "2.0.3", + "version": "2.0.4", "bundled": true, "dev": true, "optional": true @@ -7149,7 +6771,7 @@ "optional": true }, "minipass": { - "version": "2.3.5", + "version": "2.9.0", "bundled": true, "dev": true, "optional": true, @@ -7159,12 +6781,12 @@ } }, "minizlib": { - "version": "1.2.1", + "version": "1.3.3", "bundled": true, "dev": true, "optional": true, "requires": { - "minipass": "^2.2.1" + "minipass": "^2.9.0" } }, "mkdirp": { @@ -7177,24 +6799,24 @@ } }, "ms": { - "version": "2.1.1", + "version": "2.1.2", "bundled": true, "dev": true, "optional": true }, "needle": { - "version": "2.3.0", + "version": "2.4.0", "bundled": true, "dev": true, "optional": true, "requires": { - "debug": "^4.1.0", + "debug": "^3.2.6", "iconv-lite": "^0.4.4", "sax": "^1.2.4" } }, "node-pre-gyp": { - "version": "0.12.0", + "version": "0.14.0", "bundled": true, "dev": true, "optional": true, @@ -7208,7 +6830,7 @@ "rc": "^1.2.7", "rimraf": "^2.6.1", "semver": "^5.3.0", - "tar": "^4" + "tar": "^4.4.2" } }, "nopt": { @@ -7222,13 +6844,22 @@ } }, "npm-bundled": { - "version": "1.0.6", + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", "bundled": true, "dev": true, "optional": true }, "npm-packlist": { - "version": "1.4.1", + "version": "1.4.7", "bundled": true, "dev": true, "optional": true, @@ -7299,7 +6930,7 @@ "optional": true }, "process-nextick-args": { - "version": "2.0.0", + "version": "2.0.1", "bundled": true, "dev": true, "optional": true @@ -7340,7 +6971,7 @@ } }, "rimraf": { - "version": "2.6.3", + "version": "2.7.1", "bundled": true, "dev": true, "optional": true, @@ -7367,7 +6998,7 @@ "optional": true }, "semver": { - "version": "5.7.0", + "version": "5.7.1", "bundled": true, "dev": true, "optional": true @@ -7420,18 +7051,18 @@ "optional": true }, "tar": { - "version": "4.4.8", + "version": "4.4.13", "bundled": true, "dev": true, "optional": true, "requires": { "chownr": "^1.1.1", "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", "mkdirp": "^0.5.0", "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" + "yallist": "^3.0.3" } }, "util-deprecate": { @@ -7456,7 +7087,7 @@ "optional": true }, "yallist": { - "version": "3.0.3", + "version": "3.1.1", "bundled": true, "dev": true, "optional": true @@ -7922,10 +7553,13 @@ "dev": true }, "highlight.js": { - "version": "9.16.2", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.16.2.tgz", - "integrity": "sha512-feMUrVLZvjy0oC7FVJQcSQRqbBq9kwqnYE4+Kj9ZjbHh3g+BisiPgF49NyQbVLNdrL/qqZr3Ca9yOKwgn2i/tw==", - "dev": true + "version": "9.17.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.17.1.tgz", + "integrity": "sha512-TA2/doAur5Ol8+iM3Ov7qy3jYcr/QiJ2eDTdRF4dfbjG7AaaB99J5G+zSl11ljbl6cIcahgPY6SKb3sC3EJ0fw==", + "dev": true, + "requires": { + "handlebars": "^4.5.3" + } }, "hmac-drbg": { "version": "1.0.1", @@ -8261,6 +7895,12 @@ "kind-of": "^6.0.0" } }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -10343,6 +9983,12 @@ "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==", "dev": true }, + "object-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", + "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==", + "dev": true + }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -11203,6 +10849,12 @@ "safe-buffer": "^5.1.0" } }, + "randomhex": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/randomhex/-/randomhex-0.1.5.tgz", + "integrity": "sha1-us7vmCMpCRQA8qKRLGzQLxCU9YU=", + "dev": true + }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -11529,6 +11181,49 @@ "safe-regex": "^1.1.0" } }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0-next.1.tgz", + "integrity": "sha512-7MmGr03N7Rnuid6+wyhD9sHNE2n4tFSwExnU2lQl3lIo2ShXWGePY80zYaoMOmILWv57H0amMjZGHNzzGG70Rw==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.0", + "string.prototype.trimright": "^2.1.0" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + } + } + }, "regexpp": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", @@ -12030,15 +11725,6 @@ "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.3.tgz", "integrity": "sha1-uwBAvgMEPamgEqLOqfyfhSz8h9Q=" }, - "scrypt-shim": { - "version": "github:web3-js/scrypt-shim#be5e616323a8b5e568788bf94d03c1b8410eac54", - "from": "github:web3-js/scrypt-shim", - "dev": true, - "requires": { - "scryptsy": "^2.1.0", - "semver": "^6.3.0" - } - }, "scrypt.js": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/scrypt.js/-/scrypt.js-0.3.0.tgz", @@ -12806,14 +12492,47 @@ } }, "string.prototype.trim": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", - "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz", + "integrity": "sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.0", - "function-bind": "^1.0.2" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0-next.1.tgz", + "integrity": "sha512-7MmGr03N7Rnuid6+wyhD9sHNE2n4tFSwExnU2lQl3lIo2ShXWGePY80zYaoMOmILWv57H0amMjZGHNzzGG70Rw==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.0", + "string.prototype.trimright": "^2.1.0" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + } } }, "string.prototype.trimleft": { @@ -13028,36 +12747,52 @@ "dev": true }, "tape": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/tape/-/tape-4.11.0.tgz", - "integrity": "sha512-yixvDMX7q7JIs/omJSzSZrqulOV51EC9dK8dM0TzImTIkHWfe2/kFyL5v+d9C+SrCMaICk59ujsqFAVidDqDaA==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/tape/-/tape-4.12.0.tgz", + "integrity": "sha512-PWs/TopmfVeYyLNZnfKsoV160xjNq1LvX2SWzZTyhVYsDldR93p5Zp0lfmsY3BCpZdVMXBOkfYZFeScEfsFvKQ==", "dev": true, "requires": { - "deep-equal": "~1.0.1", + "deep-equal": "~1.1.1", "defined": "~1.0.0", "for-each": "~0.3.3", "function-bind": "~1.1.1", - "glob": "~7.1.4", + "glob": "~7.1.6", "has": "~1.0.3", "inherits": "~2.0.4", + "is-regex": "~1.0.5", "minimist": "~1.2.0", - "object-inspect": "~1.6.0", - "resolve": "~1.11.1", + "object-inspect": "~1.7.0", + "resolve": "~1.13.1", "resumer": "~0.0.0", - "string.prototype.trim": "~1.1.2", + "string.prototype.trim": "~1.2.1", "through": "~2.3.8" }, "dependencies": { + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, "resolve": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", - "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.13.1.tgz", + "integrity": "sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w==", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -13137,9 +12872,9 @@ } }, "terser": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.4.0.tgz", - "integrity": "sha512-oDG16n2WKm27JO8h4y/w3iqBGAOSCtq7k8dRmrn4Wf9NouL0b2WpMHGChFGZq4nFAQy1FsNJrVQHfurXOSTmOA==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.4.3.tgz", + "integrity": "sha512-0ikKraVtRDKGzHrzkCv5rUNDzqlhmhowOBqC0XqUHFpW+vJ45+20/IFBcebwKfiS2Z9fJin6Eo+F1zLZsxi8RA==", "dev": true, "requires": { "commander": "^2.20.0", @@ -13162,22 +12897,28 @@ } }, "terser-webpack-plugin": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz", - "integrity": "sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", "dev": true, "requires": { "cacache": "^12.0.2", "find-cache-dir": "^2.1.0", "is-wsl": "^1.1.0", "schema-utils": "^1.0.0", - "serialize-javascript": "^1.7.0", + "serialize-javascript": "^2.1.2", "source-map": "^0.6.1", "terser": "^4.1.2", "webpack-sources": "^1.4.0", "worker-farm": "^1.7.0" }, "dependencies": { + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", + "dev": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -13514,21 +13255,21 @@ } }, "typedoc": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.15.3.tgz", - "integrity": "sha512-RGX+dgnm9fyg5KHj81/ZhMiee0FfvJnjBXedhedhMWlrtM4YRv3pn8sYCWRt5TMi1Jli3/JG224pbFo3/3uaGw==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.15.5.tgz", + "integrity": "sha512-AKXLtOUCLRlSTyfXQHYp3LFPy6RiFLnxnKS5z1jwQsYXmCPbHWuhmfgS264Es2hPMZjzvHqk/ZQDzCBpb49u6w==", "dev": true, "requires": { "@types/minimatch": "3.0.3", "fs-extra": "^8.1.0", "handlebars": "^4.5.3", - "highlight.js": "^9.16.2", + "highlight.js": "^9.17.1", "lodash": "^4.17.15", "marked": "^0.7.0", "minimatch": "^3.0.0", "progress": "^2.0.3", "shelljs": "^0.8.3", - "typedoc-default-themes": "^0.6.1", + "typedoc-default-themes": "^0.6.2", "typescript": "3.7.x" }, "dependencies": { @@ -13546,9 +13287,9 @@ } }, "typedoc-default-themes": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.6.1.tgz", - "integrity": "sha512-z5AWKqQDz7igl9WkUuafx8cEm4MPVQGMpbWE+3lwVOaq+U4UoLKBMnpFQWh/4fqQ3bGysXpOstMxy2OOzHezyw==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.6.2.tgz", + "integrity": "sha512-+O+1aHjVIpDLsbkIDkZSNu+kutqmg7WdzahT+4KwBC/95mUgAb0xkbwdPpEJEpRX0ov1UJoCmvEPb1/VHxnTuw==", "dev": true, "requires": { "backbone": "^1.4.0", @@ -14387,9 +14128,9 @@ "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==" }, "webpack": { - "version": "4.41.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.2.tgz", - "integrity": "sha512-Zhw69edTGfbz9/8JJoyRQ/pq8FYUoY0diOXqW0T6yhgdhCv6wr0hra5DwwWexNRns2Z2+gsnrNcbe9hbGBgk/A==", + "version": "4.41.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.3.tgz", + "integrity": "sha512-EcNzP9jGoxpQAXq1VOoTet0ik7/VVU1MovIfcUSAjLowc7GhcQku/sOXALvq5nPpSei2HF6VRhibeJSC3i/Law==", "dev": true, "requires": { "@webassemblyjs/ast": "1.8.5", @@ -14412,15 +14153,15 @@ "node-libs-browser": "^2.2.1", "schema-utils": "^1.0.0", "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.1", + "terser-webpack-plugin": "^1.4.3", "watchpack": "^1.6.0", "webpack-sources": "^1.4.1" }, "dependencies": { "acorn": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", - "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", + "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==", "dev": true }, "braces": { diff --git a/package.json b/package.json index a59d2e2..0b6acb9 100644 --- a/package.json +++ b/package.json @@ -64,14 +64,14 @@ }, "devDependencies": { "@release-it/bumper": "^1.0.5", - "@truffle/hdwallet-provider": "^1.0.26", - "@types/chai": "^4.2.6", + "@truffle/hdwallet-provider": "^1.0.27", + "@types/chai": "^4.2.7", "@types/chai-spies": "^1.0.1", "@types/mocha": "^5.2.7", "@types/node": "^13.1.0", "@types/node-fetch": "^2.5.4", - "@typescript-eslint/eslint-plugin": "^2.10.0", - "@typescript-eslint/parser": "^2.10.0", + "@typescript-eslint/eslint-plugin": "^2.12.0", + "@typescript-eslint/parser": "^2.12.0", "auto-changelog": "^1.16.2", "chai": "^4.2.0", "chai-spies": "^1.0.0", @@ -79,7 +79,7 @@ "eslint": "^6.7.2", "eslint-config-oceanprotocol": "^1.5.0", "eslint-config-prettier": "^6.7.0", - "eslint-plugin-prettier": "^3.1.1", + "eslint-plugin-prettier": "^3.1.2", "lcov-result-merger": "^3.1.0", "mocha": "^6.2.2", "mock-local-storage": "^1.1.11", @@ -88,10 +88,10 @@ "prettier": "^1.19.1", "source-map-support": "^0.5.16", "ts-node": "^8.5.4", - "typedoc": "^0.15.3", + "typedoc": "^0.15.5", "typescript": "^3.7.3", "uglifyjs-webpack-plugin": "^2.2.0", - "webpack": "^4.41.2", + "webpack": "^4.41.3", "webpack-cli": "^3.3.10", "webpack-merge": "^4.2.2" }, From ebbf9797febf39859c2b1a9f0309936a730d34d9 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Tue, 17 Dec 2019 09:03:35 +0100 Subject: [PATCH 06/29] bump to keeper-contracts v0.13.0 --- .travis.yml | 2 +- library.json | 2 +- package-lock.json | 6 +++--- package.json | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index b6551f5..72a7538 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,7 +23,7 @@ before_script: - cd barge - export AQUARIUS_VERSION=v1.0.5 - export BRIZO_VERSION=v0.7.2 - - export KEEPER_VERSION=v0.12.7 + - export KEEPER_VERSION=v0.13.0 - export EVENTS_HANDLER_VERSION=v0.3.4 - export KEEPER_OWNER_ROLE_ADDRESS="0xe2DD09d719Da89e5a3D0F2549c7E24566e947260" - rm -rf "${HOME}/.ocean/keeper-contracts/artifacts" diff --git a/library.json b/library.json index 1c35b85..2e5ee7c 100644 --- a/library.json +++ b/library.json @@ -7,7 +7,7 @@ "dependencies": [ { "name": "keeper-contracts", - "version": "~0.12.7" + "version": "~0.13.0" }, { "name": "brizo", diff --git a/package-lock.json b/package-lock.json index 30f9495..9ab9f4f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -287,9 +287,9 @@ } }, "@oceanprotocol/keeper-contracts": { - "version": "0.12.7", - "resolved": "https://registry.npmjs.org/@oceanprotocol/keeper-contracts/-/keeper-contracts-0.12.7.tgz", - "integrity": "sha512-7EUBO3iAkm78VnQHCp5pCrjZ4EQ0omg/bsWo2uiUO6oW8L4bptqSolS2b19HA1zb/ZsmJuW6e6JerPMRtQtqEg==" + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@oceanprotocol/keeper-contracts/-/keeper-contracts-0.13.0.tgz", + "integrity": "sha512-PsiMRmRAK9veEgR5G7UAsAgA9Wgd0RWskYSpjNTbpaJaVTANSlwQYaCU8Zybg/U0uKVzmyXwFAYnH7iv4NSzMQ==" }, "@oceanprotocol/secret-store-client": { "version": "0.0.15", diff --git a/package.json b/package.json index 0b6acb9..bd3361d 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "web3": "^1.2.3" }, "dependencies": { - "@oceanprotocol/keeper-contracts": "^0.12.7", + "@oceanprotocol/keeper-contracts": "^0.13.0", "@oceanprotocol/secret-store-client": "^0.0.15", "bignumber.js": "^9.0.0", "deprecated-decorator": "^0.1.6", From 6cb0fc4c46e19d11c31e01e80828f00925eba120 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Tue, 17 Dec 2019 11:37:06 +0100 Subject: [PATCH 07/29] Release 1.1.0-beta.0 --- CHANGELOG.md | 9 ++++++++- package-lock.json | 2 +- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 51a632f..2c9cc24 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file. Dates are d Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). +#### [v1.1.0-beta.0](https://github.com/oceanprotocol/squid-js/compare/v1.0.0...v1.1.0-beta.0) + +> 17 December 2019 + +- package updates [`eb23b04`](https://github.com/oceanprotocol/squid-js/commit/eb23b04ffec69a0f9f31f09985bc1012f3a386d2) +- bump to keeper-contracts v0.13.0 [`21a0815`](https://github.com/oceanprotocol/squid-js/commit/21a08152d2a33f73b9bfc6509ef19731904bbd9b) + #### [v1.0.0](https://github.com/oceanprotocol/squid-js/compare/v1.0.0-beta.7...v1.0.0) > 9 December 2019 @@ -11,7 +18,7 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). - v2 release: new DDO [`#328`](https://github.com/oceanprotocol/squid-js/pull/328) - package updates [`ccf7250`](https://github.com/oceanprotocol/squid-js/commit/ccf7250af87abf986d94c5023ac960fd155d0789) - lint fixes, bump Ocean components [`414c885`](https://github.com/oceanprotocol/squid-js/commit/414c885163325a69eb315b20f8fe3837bc557656) -- typos [`d6a233e`](https://github.com/oceanprotocol/squid-js/commit/d6a233e590631087ba1302ac44f1e597b512c34e) +- Release 1.0.0 [`df53099`](https://github.com/oceanprotocol/squid-js/commit/df530992a1e578ecb4459d54d2669972479ccb5b) #### [v1.0.0-beta.7](https://github.com/oceanprotocol/squid-js/compare/v0.8.3...v1.0.0-beta.7) diff --git a/package-lock.json b/package-lock.json index 9ab9f4f..b286c3d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@oceanprotocol/squid", - "version": "1.0.0", + "version": "1.1.0-beta.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index bd3361d..6c2ee65 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@oceanprotocol/squid", - "version": "1.0.0", + "version": "1.1.0-beta.0", "description": "JavaScript client library for Ocean Protocol", "main": "./dist/node/squid.js", "typings": "./dist/node/squid.d.ts", From c1f37e6e866705ec4ddabce79f158e8ca8d02570 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Wed, 18 Dec 2019 15:45:42 +0100 Subject: [PATCH 08/29] bump to keeper-contracts v0.13.1 --- .travis.yml | 2 +- library.json | 2 +- package-lock.json | 452 +++++----------------------------------------- package.json | 2 +- 4 files changed, 50 insertions(+), 408 deletions(-) diff --git a/.travis.yml b/.travis.yml index 72a7538..e9e9e92 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,7 +23,7 @@ before_script: - cd barge - export AQUARIUS_VERSION=v1.0.5 - export BRIZO_VERSION=v0.7.2 - - export KEEPER_VERSION=v0.13.0 + - export KEEPER_VERSION=v0.13.1 - export EVENTS_HANDLER_VERSION=v0.3.4 - export KEEPER_OWNER_ROLE_ADDRESS="0xe2DD09d719Da89e5a3D0F2549c7E24566e947260" - rm -rf "${HOME}/.ocean/keeper-contracts/artifacts" diff --git a/library.json b/library.json index 2e5ee7c..2a48c02 100644 --- a/library.json +++ b/library.json @@ -7,7 +7,7 @@ "dependencies": [ { "name": "keeper-contracts", - "version": "~0.13.0" + "version": "~0.13.1" }, { "name": "brizo", diff --git a/package-lock.json b/package-lock.json index b286c3d..590d422 100644 --- a/package-lock.json +++ b/package-lock.json @@ -287,9 +287,9 @@ } }, "@oceanprotocol/keeper-contracts": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@oceanprotocol/keeper-contracts/-/keeper-contracts-0.13.0.tgz", - "integrity": "sha512-PsiMRmRAK9veEgR5G7UAsAgA9Wgd0RWskYSpjNTbpaJaVTANSlwQYaCU8Zybg/U0uKVzmyXwFAYnH7iv4NSzMQ==" + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/@oceanprotocol/keeper-contracts/-/keeper-contracts-0.13.1.tgz", + "integrity": "sha512-HIpNyYe9Q3as5uSM8lwh4RI8WvmcZaR1MrzITlI5r3esJwLSXRA82SvSnpWf5N/kU2/ffzU8mP6qFi/8cDWrMA==" }, "@oceanprotocol/secret-store-client": { "version": "0.0.15", @@ -393,12 +393,6 @@ "defer-to-connect": "^1.0.1" } }, - "@truffle/error": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.0.8.tgz", - "integrity": "sha512-x55rtRuNfRO1azmZ30iR0pf0OJ6flQqbax1hJz+Avk1K5fdmOv5cr22s9qFnwTWnS6Bw0jvJEoR0ITsM7cPKtQ==", - "dev": true - }, "@truffle/hdwallet-provider": { "version": "1.0.27", "resolved": "https://registry.npmjs.org/@truffle/hdwallet-provider/-/hdwallet-provider-1.0.27.tgz", @@ -472,382 +466,6 @@ "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==", "dev": true }, - "web3": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.2.2.tgz", - "integrity": "sha512-/ChbmB6qZpfGx6eNpczt5YSUBHEA5V2+iUCbn85EVb3Zv6FVxrOo5Tv7Lw0gE2tW7EEjASbCyp3mZeiZaCCngg==", - "dev": true, - "requires": { - "web3-bzz": "1.2.2", - "web3-core": "1.2.2", - "web3-eth": "1.2.2", - "web3-eth-personal": "1.2.2", - "web3-net": "1.2.2", - "web3-shh": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-bzz": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.2.2.tgz", - "integrity": "sha512-b1O2ObsqUN1lJxmFSjvnEC4TsaCbmh7Owj3IAIWTKqL9qhVgx7Qsu5O9cD13pBiSPNZJ68uJPaKq380QB4NWeA==", - "dev": true, - "requires": { - "@types/node": "^10.12.18", - "got": "9.6.0", - "swarm-js": "0.1.39", - "underscore": "1.9.1" - }, - "dependencies": { - "@types/node": { - "version": "10.17.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.6.tgz", - "integrity": "sha512-0a2X6cgN3RdPBL2MIlR6Lt0KlM7fOFsutuXcdglcOq6WvLnYXgPQSh0Mx6tO1KCAE8MxbHSOSTWDoUxRq+l3DA==", - "dev": true - } - } - }, - "web3-core": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.2.2.tgz", - "integrity": "sha512-miHAX3qUgxV+KYfaOY93Hlc3kLW2j5fH8FJy6kSxAv+d4d5aH0wwrU2IIoJylQdT+FeenQ38sgsCnFu9iZ1hCQ==", - "dev": true, - "requires": { - "@types/bn.js": "^4.11.4", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-core-requestmanager": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-core-helpers": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.2.2.tgz", - "integrity": "sha512-HJrRsIGgZa1jGUIhvGz4S5Yh6wtOIo/TMIsSLe+Xay+KVnbseJpPprDI5W3s7H2ODhMQTbogmmUFquZweW2ImQ==", - "dev": true, - "requires": { - "underscore": "1.9.1", - "web3-eth-iban": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-core-method": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.2.2.tgz", - "integrity": "sha512-szR4fDSBxNHaF1DFqE+j6sFR/afv9Aa36OW93saHZnrh+iXSrYeUUDfugeNcRlugEKeUCkd4CZylfgbK2SKYJA==", - "dev": true, - "requires": { - "underscore": "1.9.1", - "web3-core-helpers": "1.2.2", - "web3-core-promievent": "1.2.2", - "web3-core-subscriptions": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-core-promievent": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.2.2.tgz", - "integrity": "sha512-tKvYeT8bkUfKABcQswK6/X79blKTKYGk949urZKcLvLDEaWrM3uuzDwdQT3BNKzQ3vIvTggFPX9BwYh0F1WwqQ==", - "dev": true, - "requires": { - "any-promise": "1.3.0", - "eventemitter3": "3.1.2" - } - }, - "web3-core-requestmanager": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.2.2.tgz", - "integrity": "sha512-a+gSbiBRHtHvkp78U2bsntMGYGF2eCb6219aMufuZWeAZGXJ63Wc2321PCbA8hF9cQrZI4EoZ4kVLRI4OF15Hw==", - "dev": true, - "requires": { - "underscore": "1.9.1", - "web3-core-helpers": "1.2.2", - "web3-providers-http": "1.2.2", - "web3-providers-ipc": "1.2.2", - "web3-providers-ws": "1.2.2" - } - }, - "web3-core-subscriptions": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.2.2.tgz", - "integrity": "sha512-QbTgigNuT4eicAWWr7ahVpJyM8GbICsR1Ys9mJqzBEwpqS+RXTRVSkwZ2IsxO+iqv6liMNwGregbJLq4urMFcQ==", - "dev": true, - "requires": { - "eventemitter3": "3.1.2", - "underscore": "1.9.1", - "web3-core-helpers": "1.2.2" - } - }, - "web3-eth": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.2.2.tgz", - "integrity": "sha512-UXpC74mBQvZzd4b+baD4Ocp7g+BlwxhBHumy9seyE/LMIcMlePXwCKzxve9yReNpjaU16Mmyya6ZYlyiKKV8UA==", - "dev": true, - "requires": { - "underscore": "1.9.1", - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-core-subscriptions": "1.2.2", - "web3-eth-abi": "1.2.2", - "web3-eth-accounts": "1.2.2", - "web3-eth-contract": "1.2.2", - "web3-eth-ens": "1.2.2", - "web3-eth-iban": "1.2.2", - "web3-eth-personal": "1.2.2", - "web3-net": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-eth-abi": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.2.2.tgz", - "integrity": "sha512-Yn/ZMgoOLxhTVxIYtPJ0eS6pnAnkTAaJgUJh1JhZS4ekzgswMfEYXOwpMaD5eiqPJLpuxmZFnXnBZlnQ1JMXsw==", - "dev": true, - "requires": { - "ethers": "4.0.0-beta.3", - "underscore": "1.9.1", - "web3-utils": "1.2.2" - } - }, - "web3-eth-accounts": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.2.2.tgz", - "integrity": "sha512-KzHOEyXOEZ13ZOkWN3skZKqSo5f4Z1ogPFNn9uZbKCz+kSp+gCAEKxyfbOsB/JMAp5h7o7pb6eYsPCUBJmFFiA==", - "dev": true, - "requires": { - "any-promise": "1.3.0", - "crypto-browserify": "3.12.0", - "eth-lib": "0.2.7", - "ethereumjs-common": "^1.3.2", - "ethereumjs-tx": "^2.1.1", - "scrypt-shim": "github:web3-js/scrypt-shim", - "underscore": "1.9.1", - "uuid": "3.3.2", - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-utils": "1.2.2" - }, - "dependencies": { - "ethereumjs-tx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.1.tgz", - "integrity": "sha512-QtVriNqowCFA19X9BCRPMgdVNJ0/gMBS91TQb1DfrhsbR748g4STwxZptFAwfqehMyrF8rDwB23w87PQwru0wA==", - "dev": true, - "requires": { - "ethereumjs-common": "^1.3.1", - "ethereumjs-util": "^6.0.0" - } - } - } - }, - "web3-eth-contract": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.2.2.tgz", - "integrity": "sha512-EKT2yVFws3FEdotDQoNsXTYL798+ogJqR2//CaGwx3p0/RvQIgfzEwp8nbgA6dMxCsn9KOQi7OtklzpnJMkjtA==", - "dev": true, - "requires": { - "@types/bn.js": "^4.11.4", - "underscore": "1.9.1", - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-core-promievent": "1.2.2", - "web3-core-subscriptions": "1.2.2", - "web3-eth-abi": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-eth-ens": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.2.2.tgz", - "integrity": "sha512-CFjkr2HnuyMoMFBoNUWojyguD4Ef+NkyovcnUc/iAb9GP4LHohKrODG4pl76R5u61TkJGobC2ij6TyibtsyVYg==", - "dev": true, - "requires": { - "eth-ens-namehash": "2.0.8", - "underscore": "1.9.1", - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-promievent": "1.2.2", - "web3-eth-abi": "1.2.2", - "web3-eth-contract": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-eth-iban": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.2.2.tgz", - "integrity": "sha512-gxKXBoUhaTFHr0vJB/5sd4i8ejF/7gIsbM/VvemHT3tF5smnmY6hcwSMmn7sl5Gs+83XVb/BngnnGkf+I/rsrQ==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "web3-utils": "1.2.2" - } - }, - "web3-eth-personal": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.2.2.tgz", - "integrity": "sha512-4w+GLvTlFqW3+q4xDUXvCEMU7kRZ+xm/iJC8gm1Li1nXxwwFbs+Y+KBK6ZYtoN1qqAnHR+plYpIoVo27ixI5Rg==", - "dev": true, - "requires": { - "web3-core": "1.2.2", - "web3-core-helpers": "1.2.2", - "web3-core-method": "1.2.2", - "web3-net": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-net": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.2.2.tgz", - "integrity": "sha512-K07j2DXq0x4UOJgae65rWZKraOznhk8v5EGSTdFqASTx7vWE/m+NqBijBYGEsQY1lSMlVaAY9UEQlcXK5HzXTw==", - "dev": true, - "requires": { - "web3-core": "1.2.2", - "web3-core-method": "1.2.2", - "web3-utils": "1.2.2" - } - }, - "web3-providers-http": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.2.2.tgz", - "integrity": "sha512-BNZ7Hguy3eBszsarH5gqr9SIZNvqk9eKwqwmGH1LQS1FL3NdoOn7tgPPdddrXec4fL94CwgNk4rCU+OjjZRNDg==", - "dev": true, - "requires": { - "web3-core-helpers": "1.2.2", - "xhr2-cookies": "1.1.0" - } - }, - "web3-providers-ipc": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.2.2.tgz", - "integrity": "sha512-t97w3zi5Kn/LEWGA6D9qxoO0LBOG+lK2FjlEdCwDQatffB/+vYrzZ/CLYVQSoyFZAlsDoBasVoYSWZK1n39aHA==", - "dev": true, - "requires": { - "oboe": "2.1.4", - "underscore": "1.9.1", - "web3-core-helpers": "1.2.2" - } - }, - "web3-providers-ws": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.2.2.tgz", - "integrity": "sha512-Wb1mrWTGMTXOpJkL0yGvL/WYLt8fUIXx8k/l52QB2IiKzvyd42dTWn4+j8IKXGSYYzOm7NMqv6nhA5VDk12VfA==", - "dev": true, - "requires": { - "underscore": "1.9.1", - "web3-core-helpers": "1.2.2", - "websocket": "github:web3-js/WebSocket-Node#polyfill/globalThis" - } - }, - "web3-shh": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.2.2.tgz", - "integrity": "sha512-og258NPhlBn8yYrDWjoWBBb6zo1OlBgoWGT+LL5/LPqRbjPe09hlOYHgscAAr9zZGtohTOty7RrxYw6Z6oDWCg==", - "dev": true, - "requires": { - "web3-core": "1.2.2", - "web3-core-method": "1.2.2", - "web3-core-subscriptions": "1.2.2", - "web3-net": "1.2.2" - } - }, - "web3-utils": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.2.2.tgz", - "integrity": "sha512-joF+s3243TY5cL7Z7y4h1JsJpUCf/kmFmj+eJar7Y2yNIGVcW961VyrAms75tjUysSuHaUQ3eQXjBEUJueT52A==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "eth-lib": "0.2.7", - "ethereum-bloom-filters": "^1.0.6", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "underscore": "1.9.1", - "utf8": "3.0.0" - } - } - } - }, - "@truffle/interface-adapter": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@truffle/interface-adapter/-/interface-adapter-0.4.0.tgz", - "integrity": "sha512-3xCL38jOByT/CN/Sar9Yx0q3xXRzEYpd28eQfI/nTZk/+T1m+aYU7C4Dv2JSnqgB3mjQd++2rRnMYjE2uxYg5w==", - "dev": true, - "requires": { - "bn.js": "^4.11.8", - "ethers": "^4.0.32", - "lodash": "^4.17.13", - "web3": "1.2.2" - }, - "dependencies": { - "elliptic": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", - "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", - "dev": true, - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } - }, - "eth-lib": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.7.tgz", - "integrity": "sha1-L5Pxex4jrsN1nNSj/iDBKGo/wco=", - "dev": true, - "requires": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - } - }, - "ethers": { - "version": "4.0.40", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.40.tgz", - "integrity": "sha512-MC9BtV7Hpq4dgFONEfanx9aU9GhhoWU270F+/wegHZXA7FR+2KXFdt36YIQYLmVY5ykUWswDxd+f9EVkIa7JOA==", - "dev": true, - "requires": { - "aes-js": "3.0.0", - "bn.js": "^4.4.0", - "elliptic": "6.5.2", - "hash.js": "1.1.3", - "js-sha3": "0.5.7", - "scrypt-js": "2.0.4", - "setimmediate": "1.0.4", - "uuid": "2.0.1", - "xmlhttprequest": "1.8.0" - } - }, - "hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.0" - } - }, - "js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=", - "dev": true - }, - "scrypt-js": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", - "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==", - "dev": true - }, "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", @@ -1097,6 +715,26 @@ "underscore": "1.9.1", "web3-core-helpers": "1.2.1", "websocket": "github:web3-js/WebSocket-Node#polyfill/globalThis" + }, + "dependencies": { + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true + }, + "websocket": { + "version": "github:web3-js/WebSocket-Node#905deb4812572b344f5801f8c9ce8bb02799d82e", + "from": "github:web3-js/WebSocket-Node#polyfill/globalThis", + "dev": true, + "requires": { + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "nan": "^2.14.0", + "typedarray-to-buffer": "^3.1.5", + "yaeti": "^0.0.6" + } + } } }, "web3-shh": { @@ -13753,6 +13391,7 @@ "resolved": "https://registry.npmjs.org/web3/-/web3-1.2.4.tgz", "integrity": "sha512-xPXGe+w0x0t88Wj+s/dmAdASr3O9wmA9mpZRtixGZxmBexAF0MjfqYM+MS4tVl5s11hMTN3AZb8cDD4VLfC57A==", "requires": { + "@types/node": "^12.6.1", "web3-bzz": "1.2.4", "web3-core": "1.2.4", "web3-eth": "1.2.4", @@ -13760,6 +13399,13 @@ "web3-net": "1.2.4", "web3-shh": "1.2.4", "web3-utils": "1.2.4" + }, + "dependencies": { + "@types/node": { + "version": "12.12.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.24.tgz", + "integrity": "sha512-1Ciqv9pqwVtW6FsIUKSZNB82E5Cu1I2bBTj1xuIHXLe/1zYLl3956Nbhg2MzSYHVfl9/rmanjbQIb7LibfCnug==" + } } }, "web3-bzz": { @@ -13787,10 +13433,18 @@ "requires": { "@types/bignumber.js": "^5.0.0", "@types/bn.js": "^4.11.4", + "@types/node": "^12.6.1", "web3-core-helpers": "1.2.4", "web3-core-method": "1.2.4", "web3-core-requestmanager": "1.2.4", "web3-utils": "1.2.4" + }, + "dependencies": { + "@types/node": { + "version": "12.12.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.24.tgz", + "integrity": "sha512-1Ciqv9pqwVtW6FsIUKSZNB82E5Cu1I2bBTj1xuIHXLe/1zYLl3956Nbhg2MzSYHVfl9/rmanjbQIb7LibfCnug==" + } } }, "web3-core-helpers": { @@ -13957,11 +13611,19 @@ "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.2.4.tgz", "integrity": "sha512-5Russ7ZECwHaZXcN3DLuLS7390Vzgrzepl4D87SD6Sn1DHsCZtvfdPIYwoTmKNp69LG3mORl7U23Ga5YxqkICw==", "requires": { + "@types/node": "^12.6.1", "web3-core": "1.2.4", "web3-core-helpers": "1.2.4", "web3-core-method": "1.2.4", "web3-net": "1.2.4", "web3-utils": "1.2.4" + }, + "dependencies": { + "@types/node": { + "version": "12.12.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.24.tgz", + "integrity": "sha512-1Ciqv9pqwVtW6FsIUKSZNB82E5Cu1I2bBTj1xuIHXLe/1zYLl3956Nbhg2MzSYHVfl9/rmanjbQIb7LibfCnug==" + } } }, "web3-net": { @@ -14461,26 +14123,6 @@ } } }, - "websocket": { - "version": "github:web3-js/WebSocket-Node#905deb4812572b344f5801f8c9ce8bb02799d82e", - "from": "github:web3-js/WebSocket-Node#polyfill/globalThis", - "dev": true, - "requires": { - "debug": "^2.2.0", - "es5-ext": "^0.10.50", - "nan": "^2.14.0", - "typedarray-to-buffer": "^3.1.5", - "yaeti": "^0.0.6" - }, - "dependencies": { - "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", - "dev": true - } - } - }, "whatwg-fetch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", diff --git a/package.json b/package.json index 6c2ee65..3921ee4 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "web3": "^1.2.3" }, "dependencies": { - "@oceanprotocol/keeper-contracts": "^0.13.0", + "@oceanprotocol/keeper-contracts": "^0.13.1", "@oceanprotocol/secret-store-client": "^0.0.15", "bignumber.js": "^9.0.0", "deprecated-decorator": "^0.1.6", From 201507c2cf2e95f08cd1fca304b850c7d9c4c79b Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Fri, 10 Jan 2020 20:30:10 +0100 Subject: [PATCH 09/29] bump to keeper-contracts v0.13.2 --- .travis.yml | 2 +- library.json | 2 +- package-lock.json | 6 +++--- package.json | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index e9e9e92..1ff8a5b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,7 +23,7 @@ before_script: - cd barge - export AQUARIUS_VERSION=v1.0.5 - export BRIZO_VERSION=v0.7.2 - - export KEEPER_VERSION=v0.13.1 + - export KEEPER_VERSION=v0.13.2 - export EVENTS_HANDLER_VERSION=v0.3.4 - export KEEPER_OWNER_ROLE_ADDRESS="0xe2DD09d719Da89e5a3D0F2549c7E24566e947260" - rm -rf "${HOME}/.ocean/keeper-contracts/artifacts" diff --git a/library.json b/library.json index 2a48c02..6ec3ae6 100644 --- a/library.json +++ b/library.json @@ -7,7 +7,7 @@ "dependencies": [ { "name": "keeper-contracts", - "version": "~0.13.1" + "version": "~0.13.2" }, { "name": "brizo", diff --git a/package-lock.json b/package-lock.json index 590d422..c4cd1bb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -287,9 +287,9 @@ } }, "@oceanprotocol/keeper-contracts": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/@oceanprotocol/keeper-contracts/-/keeper-contracts-0.13.1.tgz", - "integrity": "sha512-HIpNyYe9Q3as5uSM8lwh4RI8WvmcZaR1MrzITlI5r3esJwLSXRA82SvSnpWf5N/kU2/ffzU8mP6qFi/8cDWrMA==" + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/@oceanprotocol/keeper-contracts/-/keeper-contracts-0.13.2.tgz", + "integrity": "sha512-915dcnzCHEuvsmRKqVj0RxHT3T386lSJh8WREe4dsnrXHsi1ULNYxX0Ts/cvalv6bRL+aqyaZ6gN3l3nkfwEDg==" }, "@oceanprotocol/secret-store-client": { "version": "0.0.15", diff --git a/package.json b/package.json index 3921ee4..cb8a694 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "web3": "^1.2.3" }, "dependencies": { - "@oceanprotocol/keeper-contracts": "^0.13.1", + "@oceanprotocol/keeper-contracts": "^0.13.2", "@oceanprotocol/secret-store-client": "^0.0.15", "bignumber.js": "^9.0.0", "deprecated-decorator": "^0.1.6", From d242fe3e338abafd6374beb1b7c48935580125a4 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Mon, 13 Jan 2020 10:50:12 +0100 Subject: [PATCH 10/29] component updates --- .travis.yml | 4 ++-- library.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1ff8a5b..027e21e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -22,9 +22,9 @@ before_script: - git clone https://github.com/oceanprotocol/barge - cd barge - export AQUARIUS_VERSION=v1.0.5 - - export BRIZO_VERSION=v0.7.2 + - export BRIZO_VERSION=v0.8.0 - export KEEPER_VERSION=v0.13.2 - - export EVENTS_HANDLER_VERSION=v0.3.4 + - export EVENTS_HANDLER_VERSION=v0.4.0 - export KEEPER_OWNER_ROLE_ADDRESS="0xe2DD09d719Da89e5a3D0F2549c7E24566e947260" - rm -rf "${HOME}/.ocean/keeper-contracts/artifacts" - bash -x start_ocean.sh --no-commons --no-dashboard 2>&1 > start_ocean.log & diff --git a/library.json b/library.json index 6ec3ae6..449ee6d 100644 --- a/library.json +++ b/library.json @@ -11,7 +11,7 @@ }, { "name": "brizo", - "version": "~0.7.2" + "version": "~0.8.0" }, { "name": "aquarius", @@ -19,7 +19,7 @@ }, { "name": "events-handler", - "version": "~0.3.4" + "version": "~0.4.0" } ] } From 3d978f792d2e79f318202f63a9142893354cfe67 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Wed, 15 Jan 2020 19:28:04 +0100 Subject: [PATCH 11/29] template refactoring --- src/keeper/Keeper.ts | 22 +-- .../conditions/ComputeExecutionCondition.ts | 2 +- .../managers/AgreementStoreManager.ts | 44 +++++- .../templates/AgreementTemplate.abstract.ts | 34 +---- .../templates/AgreementTemplateBase.ts | 125 ++++++++++++++++++ .../templates/BaseEscrowTemplate.abstract.ts | 43 ------ ... EscrowAccess.serviceAgreementTemplate.ts} | 2 +- .../EscrowAccessSecretStoreTemplate.ts | 106 ++------------- ...EscrowCompute.serviceAgreementTemplate.ts} | 2 +- .../EscrowComputeExecutionTemplate.ts | 100 ++------------ src/ocean/OceanAgreements.ts | 2 +- 11 files changed, 204 insertions(+), 278 deletions(-) create mode 100644 src/keeper/contracts/templates/AgreementTemplateBase.ts delete mode 100644 src/keeper/contracts/templates/BaseEscrowTemplate.abstract.ts rename src/keeper/contracts/templates/{EscrowAccessSecretStoreTemplate.serviceAgreementTemplate.ts => EscrowAccess.serviceAgreementTemplate.ts} (97%) rename src/keeper/contracts/templates/{EscrowComputeExecutionTemplate.serviceAgreementTemplate.ts => EscrowCompute.serviceAgreementTemplate.ts} (97%) diff --git a/src/keeper/Keeper.ts b/src/keeper/Keeper.ts index b9a023e..517703c 100644 --- a/src/keeper/Keeper.ts +++ b/src/keeper/Keeper.ts @@ -62,14 +62,7 @@ export class Keeper extends Instantiable { accessSecretStoreCondition: AccessSecretStoreCondition.getInstance( config ), - computeExecutionCondition: ComputeExecutionCondition.getInstance(config), - // Templates - escrowAccessSecretStoreTemplate: EscrowAccessSecretStoreTemplate.getInstance( - config - ), - escrowComputeExecutionTemplate: EscrowComputeExecutionTemplate.getInstance( - config - ) + computeExecutionCondition: ComputeExecutionCondition.getInstance(config) }) keeper.connected = true @@ -107,6 +100,19 @@ export class Keeper extends Instantiable { escrowComputeExecutionTemplate: keeper.instances.escrowComputeExecutionTemplate } + // Templates + keeper.instances.escrowAccessSecretStoreTemplate = new EscrowAccessSecretStoreTemplate( + keeper.instances.templateStoreManager, + keeper.instances.agreementStoreManager, + keeper.instances.didRegistry, + keeper.instances.conditions + ) + keeper.instances.escrowComputeExecutionTemplate = new EscrowComputeExecutionTemplate( + keeper.instances.templateStoreManager, + keeper.instances.agreementStoreManager, + keeper.instances.didRegistry, + keeper.instances.conditions + ) // Utils keeper.utils = { eventHandler: new EventHandler(config) diff --git a/src/keeper/contracts/conditions/ComputeExecutionCondition.ts b/src/keeper/contracts/conditions/ComputeExecutionCondition.ts index ba83313..9456c73 100644 --- a/src/keeper/contracts/conditions/ComputeExecutionCondition.ts +++ b/src/keeper/contracts/conditions/ComputeExecutionCondition.ts @@ -1,5 +1,5 @@ import { Condition } from './Condition.abstract' -import { zeroX, didZeroX, didPrefixed } from '../../../utils' +import { zeroX, didZeroX } from '../../../utils' import { InstantiableConfig } from '../../../Instantiable.abstract' export class ComputeExecutionCondition extends Condition { diff --git a/src/keeper/contracts/managers/AgreementStoreManager.ts b/src/keeper/contracts/managers/AgreementStoreManager.ts index 72bedf8..06d8d9f 100644 --- a/src/keeper/contracts/managers/AgreementStoreManager.ts +++ b/src/keeper/contracts/managers/AgreementStoreManager.ts @@ -15,11 +15,11 @@ export class AgreementStoreManager extends ContractBase { public static async getInstance( config: InstantiableConfig ): Promise { - const templateStoreManeger: AgreementStoreManager = new AgreementStoreManager( + const templateStoreManager: AgreementStoreManager = new AgreementStoreManager( 'AgreementStoreManager' ) - await templateStoreManeger.init(config) - return templateStoreManeger + await templateStoreManager.init(config) + return templateStoreManager } public getOwner(): Promise { @@ -44,4 +44,42 @@ export class AgreementStoreManager extends ContractBase { blockNumberUpdated: +blockNumberUpdated } as AgreementData } + + /** + * Create a agreement using EscrowComputeExecutionTemplate. + * @param {string} agreementId Generated agreement ID. + * @param {string} did Asset DID. + * @param {string} templateId Template ID. + * @param {string[]} conditionIds List of conditions IDs. + * @param {number[]} timeLocks Timelocks. + * @param {number[]} timeOuts Timeouts. + * @param {string[]} actors ETH account addresses of provider, consumer, etc. + * @param {string} from Action sender. + * + * @return {any} Transaction receipt. + */ + public async createAgreement( + agreementId: string, + did: string, + templateId: string, + conditionIds: string[], + timeLocks: number[], + timeOuts: number[], + actors: string[], + from?: string + ): Promise { + this.sendFrom( + 'createAgreement', + [ + zeroX(agreementId), + zeroX(did), + zeroX(templateId), + conditionIds.map(zeroX), + timeLocks, + timeOuts, + actors + ], + from + ) + } } diff --git a/src/keeper/contracts/templates/AgreementTemplate.abstract.ts b/src/keeper/contracts/templates/AgreementTemplate.abstract.ts index 6fed9cc..2a2407f 100644 --- a/src/keeper/contracts/templates/AgreementTemplate.abstract.ts +++ b/src/keeper/contracts/templates/AgreementTemplate.abstract.ts @@ -34,38 +34,6 @@ export abstract class AgreementTemplate extends ContractBase { super(contractName) } - public createAgreement( - agreementId: string, - did: string, - conditionIds: string[], - timeLocks: number[], - timeOuts: number[], - ...args: any[] - ) - - public createAgreement( - agreementId: string, - did: string, - conditionIds: string[], - timeLocks: number[], - timeOuts: number[], - extraArgs: any[], - from?: string - ) { - return this.sendFrom( - 'createAgreement', - [ - zeroX(agreementId), - zeroX(did), - conditionIds.map(zeroX), - timeLocks, - timeOuts, - ...extraArgs - ], - from - ) - } - /** * Conditions address list. * @return {Promise} Conditions address. @@ -91,7 +59,7 @@ export abstract class AgreementTemplate extends ContractBase { * @param {string} from Consumer address. * @return {Promise} Condition IDs. */ - public abstract getAgreementIdsFromDDO( + public abstract getConditionIdsFromDDO( agreementId: string, ddo: DDO, consumer: string, diff --git a/src/keeper/contracts/templates/AgreementTemplateBase.ts b/src/keeper/contracts/templates/AgreementTemplateBase.ts new file mode 100644 index 0000000..11a3840 --- /dev/null +++ b/src/keeper/contracts/templates/AgreementTemplateBase.ts @@ -0,0 +1,125 @@ +import { escrowAccessServiceAgreementTemplate } from './EscrowAccess.serviceAgreementTemplate' +import { TemplateStoreManager, AgreementStoreManager } from '../managers' +import DIDRegistry from '../DIDRegistry' +import { LockRewardCondition } from '../conditions/LockRewardCondition' +import { AccessSecretStoreCondition } from '../conditions/AccessSecretStoreCondition' +import { EscrowReward } from '../conditions/EscrowReward' +import { DDO } from '../../../ddo/DDO' +import { generateId, zeroX } from '../../../utils' +import { ComputeExecutionCondition } from '../conditions' + +export interface Conditions { + lockRewardCondition: LockRewardCondition + accessSecretStoreCondition?: AccessSecretStoreCondition + computeExecutionCondition?: ComputeExecutionCondition + escrowReward: EscrowReward +} + +export class AgreementTemplateBase { + public static templateName: string + + public templateManager: TemplateStoreManager + + public agreementStoreManager: AgreementStoreManager + + public didRegistry: DIDRegistry + + public conditions: Conditions + + public constructor( + templateManager: TemplateStoreManager, + agreementStoreManager: AgreementStoreManager, + didRegistry: DIDRegistry, + conditions: Conditions + ) { + this.templateManager = templateManager + this.agreementStoreManager = agreementStoreManager + this.didRegistry = didRegistry + this.conditions = conditions + } + + public async getServiceAgreementTemplate() { + return escrowAccessServiceAgreementTemplate + } + + public async createAgreementFromDDO( + agreementId: string, + ddo: DDO, + consumer: string, + from?: string + ) { + return !!(await this.createFullAgreement( + ddo.shortId(), + ddo.findServiceByType('metadata').attributes.main.price, + consumer, + from, + agreementId + )) + } + + public async getConditionIdsFromDDO( + agreementId: string, + ddo: DDO, + consumer: string, + from?: string + ) { + const conditionIds = await this.createFullAgreementData( + agreementId, + ddo.shortId(), + ddo.findServiceByType('metadata').attributes.main.price, + consumer + ) + return conditionIds + } + + public getId() { + return '' + } + + /** + * Create a agreement using EscrowAccessSecretStoreTemplate using only the most important information. + * @param {string} did Asset DID. + * @param {number} amount Asset price. + * @param {string} from Consumer address. + * + * @return {Promise} Agreement ID. + */ + public async createFullAgreement( + did: string, + amount: number | string, + consumer: string, + from?: string, + agreementId: string = generateId() + ): Promise { + const conditionIds = await this.createFullAgreementData( + agreementId, + did, + amount, + consumer + ) + + const publisher = await this.didRegistry.getDIDOwner(did) + + await this.agreementStoreManager.createAgreement( + agreementId, + did, + this.getId(), + conditionIds, + [0, 0, 0], + [0, 0, 0], + [consumer, publisher], + from + ) + + return zeroX(agreementId) + } + + protected async createFullAgreementData( + agreementId: string, + did: string, + amount: number | string, + consumer: string + ): Promise { + return null + } +} diff --git a/src/keeper/contracts/templates/BaseEscrowTemplate.abstract.ts b/src/keeper/contracts/templates/BaseEscrowTemplate.abstract.ts deleted file mode 100644 index 2d178d7..0000000 --- a/src/keeper/contracts/templates/BaseEscrowTemplate.abstract.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { AgreementTemplate } from './AgreementTemplate.abstract' -import { DDO } from '../../../ddo/DDO' -import { generateId, zeroX } from '../../../utils' -import { InstantiableConfig } from '../../../Instantiable.abstract' - -// import { EscrowComputeExecutionTemplateServiceAgreementTemplate } from './EscrowComputeExecutionTemplate.serviceAgreementTemplate' - -export abstract class BaseEscrowTemplate extends AgreementTemplate { - /** - * Create a agreement using EscrowComputeExecutionTemplate. - * @param {string} agreementId Generated agreement ID. - * @param {string} did Asset DID. - * @param {string[]} conditionIds List of conditions IDs. - * @param {number[]} timeLocks Timelocks. - * @param {number[]} timeOuts Timeouts. - * @param {string} accessConsumer Consumer address. - * @param {string} from Action sender. - * @param {any} Transaction receipt. - */ - public createAgreement( - agreementId: string, - did: string, - conditionIds: string[], - timeLocks: number[], - timeOuts: number[], - accessConsumer: string, - from?: string - ) { - return super.createAgreement( - agreementId, - did, - conditionIds, - timeLocks, - timeOuts, - [accessConsumer], - from - ) - } - - public async getAgreementData(agreementId: string) { - return this.call('getAgreementData', [zeroX(agreementId)]) - } -} diff --git a/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.serviceAgreementTemplate.ts b/src/keeper/contracts/templates/EscrowAccess.serviceAgreementTemplate.ts similarity index 97% rename from src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.serviceAgreementTemplate.ts rename to src/keeper/contracts/templates/EscrowAccess.serviceAgreementTemplate.ts index ac26262..651ec6e 100644 --- a/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.serviceAgreementTemplate.ts +++ b/src/keeper/contracts/templates/EscrowAccess.serviceAgreementTemplate.ts @@ -1,6 +1,6 @@ import { ServiceAgreementTemplate } from '../../../ddo/ServiceAgreementTemplate' -export const escrowAccessSecretStoreTemplateServiceAgreementTemplate: ServiceAgreementTemplate = { +export const escrowAccessServiceAgreementTemplate: ServiceAgreementTemplate = { contractName: 'EscrowAccessSecretStoreTemplate', events: [ { diff --git a/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts b/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts index 77b6e4a..a906514 100644 --- a/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts +++ b/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts @@ -1,108 +1,26 @@ -import { AgreementTemplate } from './AgreementTemplate.abstract' -import { BaseEscrowTemplate } from './BaseEscrowTemplate.abstract' -import { DDO } from '../../../ddo/DDO' -import { generateId, zeroX } from '../../../utils' -import { InstantiableConfig } from '../../../Instantiable.abstract' +import { AgreementTemplateBase } from './AgreementTemplateBase' +import { escrowAccessServiceAgreementTemplate } from './EscrowAccess.serviceAgreementTemplate' -import { escrowAccessSecretStoreTemplateServiceAgreementTemplate } from './EscrowAccessSecretStoreTemplate.serviceAgreementTemplate' - -export class EscrowAccessSecretStoreTemplate extends BaseEscrowTemplate { - public static async getInstance( - config: InstantiableConfig - ): Promise { - return AgreementTemplate.getInstance( - config, - 'EscrowAccessSecretStoreTemplate', - EscrowAccessSecretStoreTemplate - ) - } +export class EscrowAccessSecretStoreTemplate extends AgreementTemplateBase { + public static templateName: 'EscrowAccessSecretStoreTemplate' public async getServiceAgreementTemplate() { - return escrowAccessSecretStoreTemplateServiceAgreementTemplate + return escrowAccessServiceAgreementTemplate } - public async createAgreementFromDDO( - agreementId: string, - ddo: DDO, - consumer: string, - from?: string - ) { - return !!(await this.createFullAgreement( - ddo.shortId(), - ddo.findServiceByType('metadata').attributes.main.price, - consumer, - from, - agreementId - )) - } - - public async getAgreementIdsFromDDO( - agreementId: string, - ddo: DDO, - consumer: string, - from?: string - ) { - const { - accessSecretStoreConditionId, - lockRewardConditionId, - escrowRewardId - } = await this.createFullAgreementData( - agreementId, - ddo.shortId(), - ddo.findServiceByType('metadata').attributes.main.price, - consumer - ) - return [accessSecretStoreConditionId, lockRewardConditionId, escrowRewardId] - } - - /** - * Create a agreement using EscrowAccessSecretStoreTemplate using only the most important information. - * @param {string} did Asset DID. - * @param {number} amount Asset price. - * @param {string} from Consumer address. - * @return {Promise} Agreement ID. - */ - public async createFullAgreement( - did: string, - amount: number | string, - consumer: string, - from?: string, - agreementId: string = generateId() - ): Promise { - const { - accessSecretStoreConditionId, - lockRewardConditionId, - escrowRewardId - } = await this.createFullAgreementData(agreementId, did, amount, consumer) - - await this.createAgreement( - agreementId, - did, - [accessSecretStoreConditionId, lockRewardConditionId, escrowRewardId], - [0, 0, 0], - [0, 0, 0], - consumer, - from - ) - - return zeroX(agreementId) - } - - private async createFullAgreementData( + protected async createFullAgreementData( agreementId: string, did: string, amount: number | string, consumer: string ) { - const { didRegistry, conditions } = this.ocean.keeper - const { - accessSecretStoreCondition, lockRewardCondition, + accessSecretStoreCondition, escrowReward - } = conditions + } = this.conditions - const publisher = await didRegistry.getDIDOwner(did) + const publisher = await this.didRegistry.getDIDOwner(did) const lockRewardConditionId = await lockRewardCondition.generateIdHash( agreementId, @@ -123,10 +41,6 @@ export class EscrowAccessSecretStoreTemplate extends BaseEscrowTemplate { accessSecretStoreConditionId ) - return { - lockRewardConditionId, - accessSecretStoreConditionId, - escrowRewardId - } + return [lockRewardConditionId, accessSecretStoreConditionId, escrowRewardId] } } diff --git a/src/keeper/contracts/templates/EscrowComputeExecutionTemplate.serviceAgreementTemplate.ts b/src/keeper/contracts/templates/EscrowCompute.serviceAgreementTemplate.ts similarity index 97% rename from src/keeper/contracts/templates/EscrowComputeExecutionTemplate.serviceAgreementTemplate.ts rename to src/keeper/contracts/templates/EscrowCompute.serviceAgreementTemplate.ts index 149ac2e..732c20d 100644 --- a/src/keeper/contracts/templates/EscrowComputeExecutionTemplate.serviceAgreementTemplate.ts +++ b/src/keeper/contracts/templates/EscrowCompute.serviceAgreementTemplate.ts @@ -1,6 +1,6 @@ import { ServiceAgreementTemplate } from '../../../ddo/ServiceAgreementTemplate' -export const escrowComputeExecutionTemplateServiceAgreementTemplate: ServiceAgreementTemplate = { +export const escrowComputeServiceAgreementTemplate: ServiceAgreementTemplate = { contractName: 'EscrowComputeExecutionTemplate', events: [ { diff --git a/src/keeper/contracts/templates/EscrowComputeExecutionTemplate.ts b/src/keeper/contracts/templates/EscrowComputeExecutionTemplate.ts index b1e3c3e..0bf41b1 100644 --- a/src/keeper/contracts/templates/EscrowComputeExecutionTemplate.ts +++ b/src/keeper/contracts/templates/EscrowComputeExecutionTemplate.ts @@ -1,108 +1,26 @@ -import { AgreementTemplate } from './AgreementTemplate.abstract' -import { BaseEscrowTemplate } from './BaseEscrowTemplate.abstract' -import { DDO } from '../../../ddo/DDO' -import { generateId, zeroX } from '../../../utils' -import { InstantiableConfig } from '../../../Instantiable.abstract' +import { AgreementTemplateBase } from './AgreementTemplateBase' +import { escrowComputeServiceAgreementTemplate } from './EscrowCompute.serviceAgreementTemplate' -import { escrowComputeExecutionTemplateServiceAgreementTemplate } from './EscrowComputeExecutionTemplate.serviceAgreementTemplate' - -export class EscrowComputeExecutionTemplate extends BaseEscrowTemplate { - public static async getInstance( - config: InstantiableConfig - ): Promise { - return AgreementTemplate.getInstance( - config, - 'EscrowComputeExecutionTemplate', - EscrowComputeExecutionTemplate - ) - } +export class EscrowComputeExecutionTemplate extends AgreementTemplateBase { + public static templateName: 'EscrowComputeExecutionTemplate' public async getServiceAgreementTemplate() { - return escrowComputeExecutionTemplateServiceAgreementTemplate + return escrowComputeServiceAgreementTemplate } - public async createAgreementFromDDO( - agreementId: string, - ddo: DDO, - consumer: string, - from?: string - ) { - return !!(await this.createFullAgreement( - ddo.shortId(), - ddo.findServiceByType('metadata').attributes.main.price, - consumer, - from, - agreementId - )) - } - - public async getAgreementIdsFromDDO( - agreementId: string, - ddo: DDO, - consumer: string, - from?: string - ) { - const { - computeExecutionConditionId, - lockRewardConditionId, - escrowRewardId - } = await this.createFullAgreementData( - agreementId, - ddo.shortId(), - ddo.findServiceByType('metadata').attributes.main.price, - consumer - ) - return [computeExecutionConditionId, lockRewardConditionId, escrowRewardId] - } - - /** - * Create a agreement using EscrowAccess____SecretStoreTemplate using only the most important information. - * @param {string} did Asset DID. - * @param {number} amount Asset price. - * @param {string} from Consumer address. - * @return {Promise} Agreement ID. - */ - public async createFullAgreement( - did: string, - amount: number | string, - consumer: string, - from?: string, - agreementId: string = generateId() - ): Promise { - const { - computeExecutionConditionId, - lockRewardConditionId, - escrowRewardId - } = await this.createFullAgreementData(agreementId, did, amount, consumer) - - await this.createAgreement( - agreementId, - did, - [computeExecutionConditionId, lockRewardConditionId, escrowRewardId], - [0, 0, 0], - [0, 0, 0], - consumer, - from - ) - - return zeroX(agreementId) - } - - private async createFullAgreementData( + protected async createFullAgreementData( agreementId: string, did: string, amount: number | string, consumer: string ) { - const { didRegistry, conditions } = this.ocean.keeper - const { - computeExecutionCondition, lockRewardCondition, + computeExecutionCondition, escrowReward - } = conditions + } = this.conditions - const publisher = await didRegistry.getDIDOwner(did) + const publisher = await this.didRegistry.getDIDOwner(did) const lockRewardConditionId = await lockRewardCondition.generateIdHash( agreementId, diff --git a/src/ocean/OceanAgreements.ts b/src/ocean/OceanAgreements.ts index 2d83d07..5a1bd9e 100644 --- a/src/ocean/OceanAgreements.ts +++ b/src/ocean/OceanAgreements.ts @@ -57,7 +57,7 @@ export class OceanAgreements extends Instantiable { .serviceAgreementTemplate.contractName const agreementConditionsIds = await this.ocean.keeper .getTemplateByName(templateName) - .getAgreementIdsFromDDO(agreementId, ddo, consumer.getId(), consumer.getId()) + .getConditionIdsFromDDO(agreementId, ddo, consumer.getId(), consumer.getId()) const signature = await this.ocean.utils.agreements.signServiceAgreement( ddo, From fa24427a151c4d14c2f52061d8559d6d49c4f307 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Wed, 15 Jan 2020 20:04:50 +0100 Subject: [PATCH 12/29] bump brizo & events-handler --- .travis.yml | 4 ++-- library.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 027e21e..8901f65 100644 --- a/.travis.yml +++ b/.travis.yml @@ -22,9 +22,9 @@ before_script: - git clone https://github.com/oceanprotocol/barge - cd barge - export AQUARIUS_VERSION=v1.0.5 - - export BRIZO_VERSION=v0.8.0 + - export BRIZO_VERSION=v0.8.1 - export KEEPER_VERSION=v0.13.2 - - export EVENTS_HANDLER_VERSION=v0.4.0 + - export EVENTS_HANDLER_VERSION=v0.4.1 - export KEEPER_OWNER_ROLE_ADDRESS="0xe2DD09d719Da89e5a3D0F2549c7E24566e947260" - rm -rf "${HOME}/.ocean/keeper-contracts/artifacts" - bash -x start_ocean.sh --no-commons --no-dashboard 2>&1 > start_ocean.log & diff --git a/library.json b/library.json index 449ee6d..9d0cb91 100644 --- a/library.json +++ b/library.json @@ -11,7 +11,7 @@ }, { "name": "brizo", - "version": "~0.8.0" + "version": "~0.8.1" }, { "name": "aquarius", @@ -19,7 +19,7 @@ }, { "name": "events-handler", - "version": "~0.4.0" + "version": "~0.4.1" } ] } From c6876ca9e2734a9dcf8a8dd1ca8501f453af5cd5 Mon Sep 17 00:00:00 2001 From: ssallam Date: Thu, 16 Jan 2020 09:52:26 +0100 Subject: [PATCH 13/29] New template interface almost completed. --- ...terEscrowAccessSecretStoreTemplate.test.ts | 15 +- ...sterEscrowComputeExecutionTemplate.test.ts | 9 +- package-lock.json | 83 ++++----- src/keeper/Keeper.ts | 16 +- .../managers/AgreementStoreManager.ts | 12 ++ .../managers/TemplateStoreManager.ts | 53 ++++-- .../templates/AgreementTemplateBase.ts | 176 ++++++++++++++++-- .../EscrowAccessSecretStoreTemplate.ts | 6 +- .../EscrowComputeExecutionTemplate.ts | 4 +- src/keeper/contracts/templates/index.ts | 2 +- src/ocean/OceanAgreements.ts | 6 +- src/squid.ts | 1 - 12 files changed, 283 insertions(+), 100 deletions(-) diff --git a/integration/ocean/RegisterEscrowAccessSecretStoreTemplate.test.ts b/integration/ocean/RegisterEscrowAccessSecretStoreTemplate.test.ts index 0dd54c8..9100faa 100644 --- a/integration/ocean/RegisterEscrowAccessSecretStoreTemplate.test.ts +++ b/integration/ocean/RegisterEscrowAccessSecretStoreTemplate.test.ts @@ -48,7 +48,7 @@ describe('Register Escrow Access Secret Store Template', () => { describe('Propose and approve template', () => { it('should propose the template', async () => { await keeper.templateStoreManager.proposeTemplate( - template.getAddress(), + template.getId(), consumer.getId(), true ) @@ -58,7 +58,7 @@ describe('Register Escrow Access Secret Store Template', () => { it('should approve the template', async () => { await keeper.templateStoreManager.approveTemplate( - template.getAddress(), + template.getId(), templateManagerOwner.getId(), true ) @@ -122,7 +122,9 @@ describe('Register Escrow Access Secret Store Template', () => { }) it('should have condition instances asociated', async () => { - const conditionInstances = await template.getConditions() + const conditionInstances = (await template.getConditionTypes()).map(address => + keeper.getConditionByAddress(address) + ) assert.equal(conditionInstances.length, 3, 'Expected 3 conditions.') @@ -145,13 +147,14 @@ describe('Register Escrow Access Secret Store Template', () => { }) it('should create a new agreement', async () => { - const agreement = await template.createAgreement( + const agreement = await keeper.agreementStoreManager.createAgreement( agreementId, did, - [conditionIdAccess, conditionIdLock, conditionIdEscrow], + template.getId(), + [conditionIdLock, conditionIdAccess, conditionIdEscrow], [0, 0, 0], [0, 0, 0], - consumer.getId(), + [consumer.getId(), publisher.getId()], publisher.getId() ) diff --git a/integration/ocean/RegisterEscrowComputeExecutionTemplate.test.ts b/integration/ocean/RegisterEscrowComputeExecutionTemplate.test.ts index f885d53..89f05d1 100644 --- a/integration/ocean/RegisterEscrowComputeExecutionTemplate.test.ts +++ b/integration/ocean/RegisterEscrowComputeExecutionTemplate.test.ts @@ -48,7 +48,7 @@ describe('Register Escrow Compute Execution Template', () => { describe('Propose and approve template', () => { it('should propose the template', async () => { await keeper.templateStoreManager.proposeTemplate( - template.getAddress(), + template.getId(), consumer.getId(), true ) @@ -58,7 +58,7 @@ describe('Register Escrow Compute Execution Template', () => { it('should approve the template', async () => { await keeper.templateStoreManager.approveTemplate( - template.getAddress(), + template.getId(), templateManagerOwner.getId(), true ) @@ -145,13 +145,14 @@ describe('Register Escrow Compute Execution Template', () => { }) it('should create a new agreement', async () => { - const agreement = await template.createAgreement( + const agreement = await keeper.agreementStoreManager.createAgreement( agreementId, did, + template.getId(), [conditionIdCompute, conditionIdLock, conditionIdEscrow], [0, 0, 0], [0, 0, 0], - consumer.getId(), + [consumer.getId(), publisher.getId()], publisher.getId() ) diff --git a/package-lock.json b/package-lock.json index c4cd1bb..249bf29 100644 --- a/package-lock.json +++ b/package-lock.json @@ -407,7 +407,7 @@ "ethereumjs-util": "^6.1.0", "ethereumjs-wallet": "^0.6.3", "web3": "1.2.1", - "web3-provider-engine": "git+https://github.com/trufflesuite/provider-engine.git#web3-one" + "web3-provider-engine": "git+https://github.com/trufflesuite/provider-engine.git#3538c60bc4836b73ccae1ac3f64c8fed8ef19c1a" }, "dependencies": { "eth-lib": { @@ -714,7 +714,7 @@ "requires": { "underscore": "1.9.1", "web3-core-helpers": "1.2.1", - "websocket": "github:web3-js/WebSocket-Node#polyfill/globalThis" + "websocket": "github:web3-js/WebSocket-Node#905deb4812572b344f5801f8c9ce8bb02799d82e" }, "dependencies": { "nan": { @@ -1550,7 +1550,7 @@ }, "util": { "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "resolved": "http://registry.npmjs.org/util/-/util-0.10.3.tgz", "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, "requires": { @@ -1707,7 +1707,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -1720,7 +1720,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -2514,7 +2514,7 @@ }, "bl": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "resolved": "http://registry.npmjs.org/bl/-/bl-1.2.2.tgz", "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", "requires": { "readable-stream": "^2.3.5", @@ -2627,7 +2627,7 @@ }, "browserify-aes": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "requires": { "buffer-xor": "^1.0.3", @@ -2661,7 +2661,7 @@ }, "browserify-rsa": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "requires": { "bn.js": "^4.1.0", @@ -3626,7 +3626,7 @@ }, "create-hash": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "requires": { "cipher-base": "^1.0.1", @@ -3638,7 +3638,7 @@ }, "create-hmac": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "requires": { "cipher-base": "^1.0.3", @@ -3881,12 +3881,12 @@ "dependencies": { "file-type": { "version": "3.9.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "resolved": "http://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=" }, "get-stream": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", "requires": { "object-assign": "^4.0.1", @@ -4071,7 +4071,7 @@ }, "diffie-hellman": { "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "requires": { "bn.js": "^4.1.0", @@ -4867,7 +4867,7 @@ "integrity": "sha1-jZWCAsftuq6Dlwf7pvCf8ydgYhA=", "dev": true, "requires": { - "ethereumjs-abi": "git+https://github.com/ethereumjs/ethereumjs-abi.git", + "ethereumjs-abi": "git+https://github.com/ethereumjs/ethereumjs-abi.git#1cfbb13862f90f0b391d8a699544d5fe4dfb8c7b", "ethereumjs-util": "^5.1.1" }, "dependencies": { @@ -6195,8 +6195,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -6239,8 +6238,7 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", @@ -6251,8 +6249,7 @@ "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -6369,8 +6366,7 @@ "inherits": { "version": "2.0.4", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -6382,7 +6378,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -6405,14 +6400,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.9.0", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -6431,7 +6424,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -6521,8 +6513,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -6534,7 +6525,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -6620,8 +6610,7 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -6657,7 +6646,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -6677,7 +6665,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -6721,14 +6708,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, @@ -8666,7 +8651,7 @@ }, "media-typer": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, "mem": { @@ -8865,7 +8850,7 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, "minipass": { @@ -8941,7 +8926,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" @@ -10120,7 +10105,7 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, @@ -10450,7 +10435,7 @@ }, "query-string": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "resolved": "http://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", "requires": { "decode-uri-component": "^0.2.0", @@ -10620,7 +10605,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "~1.0.0", @@ -11312,7 +11297,7 @@ }, "safe-regex": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { @@ -11360,7 +11345,7 @@ }, "scrypt-js": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.3.tgz", + "resolved": "http://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.3.tgz", "integrity": "sha1-uwBAvgMEPamgEqLOqfyfhSz8h9Q=" }, "scrypt.js": { @@ -11565,7 +11550,7 @@ }, "sha.js": { "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "requires": { "inherits": "^2.0.1", @@ -12241,7 +12226,7 @@ }, "strip-eof": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, @@ -12584,7 +12569,7 @@ }, "through": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "through2": { diff --git a/src/keeper/Keeper.ts b/src/keeper/Keeper.ts index 517703c..0fd4954 100644 --- a/src/keeper/Keeper.ts +++ b/src/keeper/Keeper.ts @@ -11,7 +11,6 @@ import { ComputeExecutionCondition } from './contracts/conditions' import { - AgreementTemplate, EscrowAccessSecretStoreTemplate, EscrowComputeExecutionTemplate } from './contracts/templates' @@ -25,6 +24,7 @@ import { objectPromiseAll } from '../utils' import { EventHandler } from './EventHandler' import { Instantiable, InstantiableConfig } from '../Instantiable.abstract' +import { AgreementTemplateBase } from "./contracts/templates/AgreementTemplateBase"; /** * Interface with Ocean Keeper contracts. @@ -204,22 +204,22 @@ export class Keeper extends Instantiable { /** * Returns a template by name. * @param {string} name Template name. - * @return {AgreementTemplate} Agreement template instance. + * @return {AgreementTemplateBase} AgreementTemplateBase instance. */ - public getTemplateByName(name: string): AgreementTemplate { + public getTemplateByName(name: string): AgreementTemplateBase { return Object.values(this.templates).find( - template => template.contractName === name + template => template.templateName === name ) } /** * Returns a template by address. - * @param {string} address Template address. - * @return {AgreementTemplate} Agreement template instance. + * @param {string} templateId Template id (hex representation of bytes32). + * @return {AgreementTemplateBase} AgreementTemplateBase instance. */ - public getTemplateByAddress(address: string): AgreementTemplate { + public getTemplateById(templateId: string): AgreementTemplateBase { return Object.values(this.templates).find( - template => template.getAddress() === address + template => template.getId() === templateId ) } diff --git a/src/keeper/contracts/managers/AgreementStoreManager.ts b/src/keeper/contracts/managers/AgreementStoreManager.ts index 06d8d9f..948e70c 100644 --- a/src/keeper/contracts/managers/AgreementStoreManager.ts +++ b/src/keeper/contracts/managers/AgreementStoreManager.ts @@ -82,4 +82,16 @@ export class AgreementStoreManager extends ContractBase { from ) } + + /** + * Generates and returns the agreement creation event. + * @param {string} agreementId Agreement ID. + * @return {Event} Agreement created event. + */ + public getAgreementCreatedEvent(agreementId: string) { + return this.getEvent('AgreementCreated', { + agreementId: zeroX(agreementId) + }) + } + } diff --git a/src/keeper/contracts/managers/TemplateStoreManager.ts b/src/keeper/contracts/managers/TemplateStoreManager.ts index 5e48c7f..a6092b0 100644 --- a/src/keeper/contracts/managers/TemplateStoreManager.ts +++ b/src/keeper/contracts/managers/TemplateStoreManager.ts @@ -14,6 +14,8 @@ export interface TemplateMetadata { owner: string lastUpdatedBy: string blockNumberUpdated: number + conditionTypes: string[] + actorTypeIds: string[] } export class TemplateStoreManager extends ContractBase { @@ -27,54 +29,77 @@ export class TemplateStoreManager extends ContractBase { return templateStoreManeger } + public generateId(templateName: string) { + return this.call( + "generateId", + [templateName] + ) + } + public getOwner(): Promise { return this.call('owner', []) } - public async proposeTemplate(address: string, from?: string, ignoreExists?: boolean) { - const template = await this.getTemplate(address) + public async proposeTemplate(templateId: string, from?: string, ignoreExists?: boolean) { + const template = await this.getTemplate(templateId) if (template.blockNumberUpdated !== 0) { - this.logger.warn(`Template "${address}" already exist.`) + this.logger.warn(`Template "${templateId}" already exist.`) if (!ignoreExists) { throw new Error('Template already exist.') } } else { - return this.sendFrom('proposeTemplate', [zeroX(address)], from) + return this.sendFrom('proposeTemplate', [zeroX(templateId)], from) } } public async approveTemplate( - address: string, + templateId: string, from?: string, ignoreApproved?: boolean ) { - const template = await this.getTemplate(address) + const template = await this.getTemplate(templateId) if (template.state !== TemplateState.Proposed) { - this.logger.warn(`Template "${address}" is not in "proposed" state.`) + this.logger.warn(`Template "${templateId}" is not in "proposed" state.`) if (!ignoreApproved) { throw new Error(`Template not in "proposed" state.`) } } else { - return this.sendFrom('approveTemplate', [zeroX(address)], from) + return this.sendFrom('approveTemplate', [zeroX(templateId)], from) } } - public revokeTemplate(address: string, from?: string) { - return this.sendFrom('revokeTemplate', [zeroX(address)], from) + public revokeTemplate(templateId: string, from?: string) { + return this.sendFrom('revokeTemplate', [zeroX(templateId)], from) } - public async getTemplate(address: string) { + public async getConditionTypes(templateId: string): Promise { + const { conditionTypes } = await this.getTemplate(templateId) + return conditionTypes + } + + public getConditions(conditionTypes: string[]) { + return conditionTypes.map(address => + this.ocean.keeper.getConditionByAddress(address) + ) + } + + public async getTemplate(templateId: string) { const { state, owner, lastUpdatedBy, - blockNumberUpdated - } = await this.call('getTemplate', [zeroX(address)]) + blockNumberUpdated, + conditionTypes, + actorTypeIds + } = await this.call('getTemplate', [zeroX(templateId)]) return { state: +state, owner, lastUpdatedBy, - blockNumberUpdated: +blockNumberUpdated + blockNumberUpdated: +blockNumberUpdated, + conditionTypes, + actorTypeIds + } as TemplateMetadata } } diff --git a/src/keeper/contracts/templates/AgreementTemplateBase.ts b/src/keeper/contracts/templates/AgreementTemplateBase.ts index 11a3840..a5c3962 100644 --- a/src/keeper/contracts/templates/AgreementTemplateBase.ts +++ b/src/keeper/contracts/templates/AgreementTemplateBase.ts @@ -1,12 +1,14 @@ import { escrowAccessServiceAgreementTemplate } from './EscrowAccess.serviceAgreementTemplate' -import { TemplateStoreManager, AgreementStoreManager } from '../managers' +import {TemplateStoreManager, AgreementStoreManager, ConditionStoreManager} from '../managers' import DIDRegistry from '../DIDRegistry' import { LockRewardCondition } from '../conditions/LockRewardCondition' import { AccessSecretStoreCondition } from '../conditions/AccessSecretStoreCondition' import { EscrowReward } from '../conditions/EscrowReward' import { DDO } from '../../../ddo/DDO' -import { generateId, zeroX } from '../../../utils' -import { ComputeExecutionCondition } from '../conditions' +import {generateId, LoggerInstance, Logger, zeroX} from '../../../utils' + +import {ComputeExecutionCondition, Condition, ConditionState, conditionStateNames} from '../conditions' + export interface Conditions { lockRewardCondition: LockRewardCondition @@ -15,8 +17,20 @@ export interface Conditions { escrowReward: EscrowReward } + +export interface AgreementConditionsStatus { + [condition: string]: { + condition: string + contractName: string + state: ConditionState + blocked: boolean + blockedBy: string[] + } +} + + export class AgreementTemplateBase { - public static templateName: string + public templateName: string public templateManager: TemplateStoreManager @@ -26,6 +40,8 @@ export class AgreementTemplateBase { public conditions: Conditions + private logger: Logger + public constructor( templateManager: TemplateStoreManager, agreementStoreManager: AgreementStoreManager, @@ -36,10 +52,8 @@ export class AgreementTemplateBase { this.agreementStoreManager = agreementStoreManager this.didRegistry = didRegistry this.conditions = conditions - } - public async getServiceAgreementTemplate() { - return escrowAccessServiceAgreementTemplate + this.logger = LoggerInstance } public async createAgreementFromDDO( @@ -99,14 +113,15 @@ export class AgreementTemplateBase { ) const publisher = await this.didRegistry.getDIDOwner(did) - + const timeouts = [0, 0, 0] + const timelocks = [0, 0, 0] await this.agreementStoreManager.createAgreement( agreementId, did, this.getId(), conditionIds, - [0, 0, 0], - [0, 0, 0], + timelocks, + timeouts, [consumer, publisher], from ) @@ -119,7 +134,146 @@ export class AgreementTemplateBase { did: string, amount: number | string, consumer: string - ): Promise { + ): Promise { return null } + + // getAgreementData + /** + * Conditions address list. + * @return {Promise} Conditions address. + */ + public getConditionTypes(): Promise { + return this.templateManager.getConditionTypes(this.getId()) + } + + /** + * List of condition contracts. + * @return {Promise} Conditions contracts. + */ + public async getConditions(): Promise { + return this.templateManager.getConditions(await this.getConditionTypes()) + } + + public async getServiceAgreementTemplate() { + return null + } + + public async getServiceAgreementTemplateConditions() { + const serviceAgreementTemplate = await this.getServiceAgreementTemplate() + return serviceAgreementTemplate.conditions + } + + public async getServiceAgreementTemplateConditionByRef(ref: string) { + const name = (await this.getServiceAgreementTemplateConditions()).find( + ({ name: conditionRef }) => conditionRef === ref + ).contractName + return (await this.getConditions()).find( + condition => condition.contractName === name + ) + } + + public async getServiceAgreementTemplateDependencies() { + const serviceAgreementTemplate = await this.getServiceAgreementTemplate() + return serviceAgreementTemplate.conditionDependency + } + + /** + * Returns the status of the conditions. + * @param {string} agreementId Agreement ID. + * @param {ConditionStoreManager} conditionStoreManager + * @return {Promise} Conditions status. + */ + public async getAgreementStatus( + agreementId: string, conditionStoreManager: ConditionStoreManager + ): Promise { + + const dependencies = await this.getServiceAgreementTemplateDependencies() + const { conditionIds } = await this.agreementStoreManager.getAgreement(agreementId) + + if (!conditionIds.length) { + // this.logger.error(`Agreement not creeated yet: "${agreementId}"`) + return false + } + + const conditionIdByCondition = (await this.getConditions()).reduce( + (acc, { contractName }, i) => ({ + ...acc, + [contractName]: conditionIds[i] + }), + {} + ) + + const statesPromises = Object.keys(dependencies).map(async (ref, i) => { + const { contractName } = await this.getServiceAgreementTemplateConditionByRef( + ref + ) + return { + ref, + contractName, + state: ( + await conditionStoreManager.getCondition( + conditionIdByCondition[contractName] + ) + ).state + } + }) + const states = await Promise.all(statesPromises) + + return states.reduce((acc, { contractName, ref, state }) => { + const blockers = dependencies[ref] + .map(dependency => states.find(_ => _.ref === dependency)) + .filter(condition => condition.state !== ConditionState.Fulfilled) + return { + ...acc, + [ref]: { + condition: ref, + contractName, + state, + blocked: !!blockers.length, + blockedBy: blockers.map(_ => _.ref) + } + } + }, {}) + } + + /** + * Prints the agreement status. + * @param {string} agreementId Agreement ID. + * @param {ConditionStoreManager} conditionStoreManager + */ + public async printAgreementStatus(agreementId: string, conditionStoreManager: ConditionStoreManager) { + const status = await this.getAgreementStatus(agreementId, conditionStoreManager) + + this.logger.bypass('-'.repeat(80)) + this.logger.bypass('Template:', this.templateName) + this.logger.bypass('Agreement ID:', agreementId) + this.logger.bypass('-'.repeat(40)) + if (!status) { + this.logger.bypass('Agreement not created yet!') + } + Object.values(status || []).forEach( + ({ condition, contractName, state, blocked, blockedBy }, i) => { + if (i) { + this.logger.bypass('-'.repeat(20)) + } + this.logger.bypass(`${condition} (${contractName})`) + this.logger.bypass(' Status:', state, `(${conditionStateNames[state]})`) + if (blocked) { + this.logger.bypass(' Blocked by:', blockedBy) + } + } + ) + this.logger.bypass('-'.repeat(80)) + } + + /** + * Generates and returns the agreement creation event. + * @param {string} agreementId Agreement ID. + * @return {Event} Agreement created event. + */ + public getAgreementCreatedEvent(agreementId: string) { + return this.agreementStoreManager.getAgreementCreatedEvent(agreementId) + } + } diff --git a/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts b/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts index a906514..b93e885 100644 --- a/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts +++ b/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts @@ -41,6 +41,10 @@ export class EscrowAccessSecretStoreTemplate extends AgreementTemplateBase { accessSecretStoreConditionId ) - return [lockRewardConditionId, accessSecretStoreConditionId, escrowRewardId] + return [ + lockRewardConditionId, + accessSecretStoreConditionId, + escrowRewardId + ] } } diff --git a/src/keeper/contracts/templates/EscrowComputeExecutionTemplate.ts b/src/keeper/contracts/templates/EscrowComputeExecutionTemplate.ts index 0bf41b1..6636ad9 100644 --- a/src/keeper/contracts/templates/EscrowComputeExecutionTemplate.ts +++ b/src/keeper/contracts/templates/EscrowComputeExecutionTemplate.ts @@ -41,10 +41,10 @@ export class EscrowComputeExecutionTemplate extends AgreementTemplateBase { computeExecutionConditionId ) - return { + return [ lockRewardConditionId, computeExecutionConditionId, escrowRewardId - } + ] } } diff --git a/src/keeper/contracts/templates/index.ts b/src/keeper/contracts/templates/index.ts index b8c2746..3aa871d 100644 --- a/src/keeper/contracts/templates/index.ts +++ b/src/keeper/contracts/templates/index.ts @@ -1,4 +1,4 @@ -export * from './AgreementTemplate.abstract' +export * from './AgreementTemplateBase' export { BaseEscrowTemplate } from './BaseEscrowTemplate.abstract' export { EscrowAccessSecretStoreTemplate } from './EscrowAccessSecretStoreTemplate' export { EscrowComputeExecutionTemplate } from './EscrowComputeExecutionTemplate' diff --git a/src/ocean/OceanAgreements.ts b/src/ocean/OceanAgreements.ts index 5a1bd9e..c7855d7 100644 --- a/src/ocean/OceanAgreements.ts +++ b/src/ocean/OceanAgreements.ts @@ -3,7 +3,7 @@ import Account from './Account' import DID from './DID' import { zeroX, didPrefixed } from '../utils' import { Instantiable, InstantiableConfig } from '../Instantiable.abstract' -import { AgreementConditionsStatus } from '../keeper/contracts/templates/AgreementTemplate.abstract' +import { AgreementConditionsStatus } from '../keeper/contracts/templates/AgreementTemplateBase' import { ConditionState } from '../keeper/contracts/conditions/Condition.abstract' import { OceanAgreementsConditions } from './OceanAgreementsConditions' @@ -150,8 +150,8 @@ export class OceanAgreements extends Instantiable { agreementId ) const fullStatus = await this.ocean.keeper - .getTemplateByAddress(templateId) - .getAgreementStatus(agreementId) + .getTemplateById(templateId) + .getAgreementStatus(agreementId, this.ocean.keeper.conditionStoreManager) if (!fullStatus) { return diff --git a/src/squid.ts b/src/squid.ts index 973039f..5ef4ec6 100644 --- a/src/squid.ts +++ b/src/squid.ts @@ -21,7 +21,6 @@ export { OceanPlatformVersions } from './ocean/OceanVersions' -export { AgreementTemplate } from './keeper/contracts/templates' export { Condition, ConditionState } from './keeper/contracts/conditions' export { Ocean, Account, Config, DID, Logger, Keeper, conditions, templates, utils } From e22b63cc8032d2ccb2b203b97a340c3d2a5b7116 Mon Sep 17 00:00:00 2001 From: ssallam Date: Thu, 16 Jan 2020 15:47:29 +0100 Subject: [PATCH 14/29] More updates. --- .../managers/TemplateStoreManager.ts | 17 ++++++++++---- .../templates/AgreementTemplateBase.ts | 23 ++++++++++++++++--- src/ocean/OceanAssets.ts | 5 ++-- 3 files changed, 36 insertions(+), 9 deletions(-) diff --git a/src/keeper/contracts/managers/TemplateStoreManager.ts b/src/keeper/contracts/managers/TemplateStoreManager.ts index a6092b0..3bd82f2 100644 --- a/src/keeper/contracts/managers/TemplateStoreManager.ts +++ b/src/keeper/contracts/managers/TemplateStoreManager.ts @@ -30,10 +30,11 @@ export class TemplateStoreManager extends ContractBase { } public generateId(templateName: string) { - return this.call( - "generateId", - [templateName] - ) + const args: any = [ + { type: 'string', value: templateName }, + ] + + return this.web3.utils.soliditySha3(...args) } public getOwner(): Promise { @@ -83,6 +84,14 @@ export class TemplateStoreManager extends ContractBase { ) } + public async getActorTypeValue(actorTypeId: string) { + const typeValue = await this.call( + "getTemplateActorTypeValue", + [actorTypeId] + ) + return typeValue + } + public async getTemplate(templateId: string) { const { state, diff --git a/src/keeper/contracts/templates/AgreementTemplateBase.ts b/src/keeper/contracts/templates/AgreementTemplateBase.ts index a5c3962..2d8d32e 100644 --- a/src/keeper/contracts/templates/AgreementTemplateBase.ts +++ b/src/keeper/contracts/templates/AgreementTemplateBase.ts @@ -87,7 +87,7 @@ export class AgreementTemplateBase { } public getId() { - return '' + return this.templateManager.generateId(this.templateName) } /** @@ -143,8 +143,8 @@ export class AgreementTemplateBase { * Conditions address list. * @return {Promise} Conditions address. */ - public getConditionTypes(): Promise { - return this.templateManager.getConditionTypes(this.getId()) + public async getConditionTypes(): Promise { + return await this.templateManager.getConditionTypes(this.getId()) } /** @@ -276,4 +276,21 @@ export class AgreementTemplateBase { return this.agreementStoreManager.getAgreementCreatedEvent(agreementId) } + /** + * Return actor type ids for this template (specified by subclass) + * + */ + public async getActorTypeIds() { + const { actorTypeIds } = await this.templateManager.getTemplate(this.getId()) + return actorTypeIds + } + + /** + * Return actor types (strings) for this template (specified by subclass) + * + */ + public async getActorTypes() { + const actorTypeIds = await this.getActorTypeIds() + return actorTypeIds.map(typeId => this.templateManager.getActorTypeValue(typeId)) + } } diff --git a/src/ocean/OceanAssets.ts b/src/ocean/OceanAssets.ts index e983fc7..8f558eb 100644 --- a/src/ocean/OceanAssets.ts +++ b/src/ocean/OceanAssets.ts @@ -56,7 +56,8 @@ export class OceanAssets extends Instantiable { /** * Creates a new DDO. * @param {MetaData} metadata DDO metadata. - * @param {Account} publisher Publisher account. + * @param {Account} publisher Publisher account. + * @param {list} services list of Service description documents * @return {Promise} */ public create( @@ -106,7 +107,7 @@ export class OceanAssets extends Instantiable { { type: 'access', serviceEndpoint: this.ocean.brizo.getConsumeEndpoint(), - templateId: templates.escrowAccessSecretStoreTemplate.getAddress(), + templateId: templates.escrowAccessSecretStoreTemplate.getId(), attributes: { main: { creator: publisher.getId(), From eac7b172e600aa97a3df3b6c5fdbca151fa322c5 Mon Sep 17 00:00:00 2001 From: ssallam Date: Fri, 17 Jan 2020 12:55:00 +0100 Subject: [PATCH 15/29] Fix type. --- .../contracts/templates/EscrowAccessSecretStoreTemplate.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts b/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts index b93e885..072f269 100644 --- a/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts +++ b/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts @@ -25,7 +25,7 @@ export class EscrowAccessSecretStoreTemplate extends AgreementTemplateBase { const lockRewardConditionId = await lockRewardCondition.generateIdHash( agreementId, await escrowReward.getAddress(), - amount + String(amount) ) const accessSecretStoreConditionId = await accessSecretStoreCondition.generateIdHash( agreementId, From 48c4f6459910069c79424ac67fc6a0d28a9d1839 Mon Sep 17 00:00:00 2001 From: ssallam Date: Fri, 17 Jan 2020 15:35:11 +0100 Subject: [PATCH 16/29] Fix tests. --- .idea/encodings.xml | 4 + .idea/inspectionProfiles/Project_Default.xml | 6 + .idea/markdown-navigator.xml | 86 ++++ .../markdown-navigator/profiles_settings.xml | 3 + .idea/misc.xml | 10 + .idea/modules.xml | 8 + .idea/squid-js.iml | 12 + .idea/typescript-compiler.xml | 6 + .idea/vcs.xml | 6 + integration/config.js | 59 +++ integration/ocean/AssetOwners.test.js | 209 ++++++++++ integration/ocean/AuthenticationToken.test.js | 183 +++++++++ integration/ocean/ConsumeAsset.test.js | 268 +++++++++++++ integration/ocean/ConsumeAssetBrizo.test.js | 170 ++++++++ integration/ocean/ConsumeBigAsset.test.js | 160 ++++++++ ...terEscrowAccessSecretStoreTemplate.test.js | 376 ++++++++++++++++++ ...sterEscrowComputeExecutionTemplate.test.js | 374 +++++++++++++++++ ...sterEscrowComputeExecutionTemplate.test.ts | 2 +- integration/ocean/SearchAsset.test.js | 182 +++++++++ integration/ocean/SecretStore.test.js | 75 ++++ integration/ocean/Signature.test.js | 115 ++++++ integration/ocean/Signature.test.ts | 2 +- integration/ocean/Versions.test.js | 74 ++++ integration/utils/ddo-metadata-generator.js | 58 +++ integration/utils/index.js | 6 + src/keeper/Keeper.ts | 14 +- .../managers/TemplateStoreManager.ts | 4 +- .../templates/AgreementTemplateBase.ts | 5 +- .../EscrowAccessSecretStoreTemplate.ts | 2 +- .../EscrowComputeExecutionTemplate.ts | 2 +- test/keeper/TestContractHandler.ts | 19 +- .../EscrowAccessSecretStoreTemplate.test.ts | 24 -- 32 files changed, 2469 insertions(+), 55 deletions(-) create mode 100644 .idea/encodings.xml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/markdown-navigator.xml create mode 100644 .idea/markdown-navigator/profiles_settings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/squid-js.iml create mode 100644 .idea/typescript-compiler.xml create mode 100644 .idea/vcs.xml create mode 100644 integration/config.js create mode 100644 integration/ocean/AssetOwners.test.js create mode 100644 integration/ocean/AuthenticationToken.test.js create mode 100644 integration/ocean/ConsumeAsset.test.js create mode 100644 integration/ocean/ConsumeAssetBrizo.test.js create mode 100644 integration/ocean/ConsumeBigAsset.test.js create mode 100644 integration/ocean/RegisterEscrowAccessSecretStoreTemplate.test.js create mode 100644 integration/ocean/RegisterEscrowComputeExecutionTemplate.test.js create mode 100644 integration/ocean/SearchAsset.test.js create mode 100644 integration/ocean/SecretStore.test.js create mode 100644 integration/ocean/Signature.test.js create mode 100644 integration/ocean/Versions.test.js create mode 100644 integration/utils/ddo-metadata-generator.js create mode 100644 integration/utils/index.js delete mode 100644 test/keeper/templates/EscrowAccessSecretStoreTemplate.test.ts diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..15a15b2 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..df7825d --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/markdown-navigator.xml b/.idea/markdown-navigator.xml new file mode 100644 index 0000000..f2aa065 --- /dev/null +++ b/.idea/markdown-navigator.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/markdown-navigator/profiles_settings.xml b/.idea/markdown-navigator/profiles_settings.xml new file mode 100644 index 0000000..db06266 --- /dev/null +++ b/.idea/markdown-navigator/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..fa2aa7b --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,10 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..c396ea6 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/squid-js.iml b/.idea/squid-js.iml new file mode 100644 index 0000000..1de84ce --- /dev/null +++ b/.idea/squid-js.iml @@ -0,0 +1,12 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/typescript-compiler.xml b/.idea/typescript-compiler.xml new file mode 100644 index 0000000..1a2fb33 --- /dev/null +++ b/.idea/typescript-compiler.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/integration/config.js b/integration/config.js new file mode 100644 index 0000000..d508aa7 --- /dev/null +++ b/integration/config.js @@ -0,0 +1,59 @@ +"use strict"; +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +exports.__esModule = true; +var hdwallet_provider_1 = __importDefault(require("@truffle/hdwallet-provider")); +var configJson = { + nodeUri: 'http://localhost:8545', + aquariusUri: 'http://aquarius:5000', + brizoUri: 'http://localhost:8030', + secretStoreUri: 'http://localhost:12001', + brizoAddress: '0x068ed00cf0441e4829d9784fcbe7b9e26d4bd8d0', + verbose: false +}; +if (process.env.NETWORK_NAME === 'pacific') { + Object.assign(configJson, { + nodeUri: 'https://pacific.oceanprotocol.com', + aquariusUri: 'https://aquarius.commons.oceanprotocol.com', + brizoUri: 'https://brizo.commons.oceanprotocol.com', + secretStoreUri: 'https://secret-store.oceanprotocol.com', + brizoAddress: '0x008c25ed3594e094db4592f4115d5fa74c4f41ea' + }); +} +if (process.env.NETWORK_NAME === 'nile') { + Object.assign(configJson, { + nodeUri: 'https://nile.dev-ocean.com', + aquariusUri: 'https://aquarius.nile.dev-ocean.com', + brizoUri: 'https://brizo.nile.dev-ocean.com', + secretStoreUri: 'https://secret-store.nile.dev-ocean.com', + brizoAddress: '0x413c9ba0a05b8a600899b41b0c62dd661e689354' + }); +} +if (process.env.NETWORK_NAME === 'duero') { + Object.assign(configJson, { + nodeUri: 'https://duero.dev-ocean.com', + aquariusUri: 'https://aquarius.duero.dev-ocean.com', + brizoUri: 'https://brizo.duero.dev-ocean.com', + secretStoreUri: 'https://secret-store.duero.dev-ocean.com', + brizoAddress: '0x9d4ed58293f71122ad6a733c1603927a150735d0' + }); +} +if (process.env.SEED_WORDS) { + var seedphrase = process.env.SEED_WORDS; + // @ts-ignore + configJson.web3Provider = new hdwallet_provider_1["default"](seedphrase, configJson.nodeUri, 0, 5); +} +exports.config = configJson; +exports.config.forceVerbose = __assign(__assign({}, configJson), { verbose: true }); diff --git a/integration/ocean/AssetOwners.test.js b/integration/ocean/AssetOwners.test.js new file mode 100644 index 0000000..de5768a --- /dev/null +++ b/integration/ocean/AssetOwners.test.js @@ -0,0 +1,209 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +exports.__esModule = true; +var chai_1 = require("chai"); +var config_1 = require("../config"); +var utils_1 = require("../utils"); +var src_1 = require("../../src"); // @oceanprotocol/squid +describe('Asset Owners', function () { + var ocean; + var account1; + var account2; + var metadata = utils_1.getMetadata(); + before(function () { return __awaiter(void 0, void 0, void 0, function () { + var _a; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: return [4 /*yield*/, src_1.Ocean.getInstance(config_1.config) + // Accounts + ]; + case 1: + ocean = _b.sent(); + return [4 /*yield*/, ocean.accounts.list()]; + case 2: + _a = _b.sent(), account1 = _a[0], account2 = _a[1]; + if (!ocean.keeper.dispenser) { + metadata = utils_1.getMetadata(0); + } + return [2 /*return*/]; + } + }); + }); }); + it('should set the owner of an asset', function () { return __awaiter(void 0, void 0, void 0, function () { + var ddo, owner; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, ocean.assets.create(metadata, account1)]; + case 1: + ddo = _a.sent(); + return [4 /*yield*/, ocean.assets.owner(ddo.id)]; + case 2: + owner = _a.sent(); + chai_1.assert.equal(owner, account1.getId()); + return [2 /*return*/]; + } + }); + }); }); + it('should set the provider of an asset', function () { return __awaiter(void 0, void 0, void 0, function () { + var ddo, isProvider; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, ocean.assets.create(metadata, account1)]; + case 1: + ddo = _a.sent(); + return [4 /*yield*/, ocean.keeper.didRegistry.isDIDProvider(ddo.id, config_1.config.brizoAddress)]; + case 2: + isProvider = _a.sent(); + chai_1.assert.isTrue(isProvider); + return [2 /*return*/]; + } + }); + }); }); + it('should be added correctly a permission on an asset', function () { return __awaiter(void 0, void 0, void 0, function () { + var ddo, _a, _b, _c, _d; + return __generator(this, function (_e) { + switch (_e.label) { + case 0: return [4 /*yield*/, ocean.assets.create(metadata, account1)]; + case 1: + ddo = _e.sent(); + _b = (_a = chai_1.assert).isFalse; + return [4 /*yield*/, ocean.keeper.didRegistry.getPermission(ddo.id, account2.getId())]; + case 2: + _b.apply(_a, [_e.sent()]); + return [4 /*yield*/, ocean.keeper.didRegistry.grantPermission(ddo.id, account2.getId(), account1.getId())]; + case 3: + _e.sent(); + _d = (_c = chai_1.assert).isTrue; + return [4 /*yield*/, ocean.keeper.didRegistry.getPermission(ddo.id, account2.getId())]; + case 4: + _d.apply(_c, [_e.sent()]); + return [2 /*return*/]; + } + }); + }); }); + it('should get the assets owned by a user', function () { return __awaiter(void 0, void 0, void 0, function () { + var initialLength, finalLength; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, ocean.assets.ownerAssets(account2.getId())]; + case 1: + initialLength = (_a.sent()).length; + return [4 /*yield*/, ocean.assets.create(metadata, account1)]; + case 2: + _a.sent(); + return [4 /*yield*/, ocean.assets.create(metadata, account1)]; + case 3: + _a.sent(); + return [4 /*yield*/, ocean.assets.create(metadata, account2)]; + case 4: + _a.sent(); + return [4 /*yield*/, ocean.assets.ownerAssets(account2.getId())]; + case 5: + finalLength = (_a.sent()).length; + chai_1.assert.equal(finalLength - initialLength, 1); + return [2 /*return*/]; + } + }); + }); }); + it('should get the assets that can be consumed by a user', function () { return __awaiter(void 0, void 0, void 0, function () { + var initialLength, ddo, finalLength1, _a, _b, _c, _d, _e, _f, _g, index, finalLength2; + return __generator(this, function (_h) { + switch (_h.label) { + case 0: return [4 /*yield*/, ocean.assets.consumerAssets(account2.getId())]; + case 1: + initialLength = (_h.sent()).length; + return [4 /*yield*/, ocean.assets.create(metadata, account1)]; + case 2: + ddo = _h.sent(); + return [4 /*yield*/, ocean.assets.consumerAssets(account2.getId())]; + case 3: + finalLength1 = (_h.sent()).length; + chai_1.assert.equal(finalLength1 - initialLength, 0); + _h.label = 4; + case 4: + _h.trys.push([4, 7, , 8]); + _b = (_a = account2).requestTokens; + _c = +metadata.main.price; + _e = (_d = Math).pow; + _f = [10]; + return [4 /*yield*/, ocean.keeper.token.decimals()]; + case 5: return [4 /*yield*/, _b.apply(_a, [_c * _e.apply(_d, _f.concat([-(_h.sent())]))])]; + case 6: + _h.sent(); + return [3 /*break*/, 8]; + case 7: + _g = _h.sent(); + return [3 /*break*/, 8]; + case 8: + index = ddo.findServiceByType('access').index; + return [4 /*yield*/, ocean.assets.order(ddo.id, index, account2) + // Access granted + ]; + case 9: + _h.sent(); + return [4 /*yield*/, ocean.assets.consumerAssets(account2.getId())]; + case 10: + finalLength2 = (_h.sent()).length; + chai_1.assert.equal(finalLength2 - initialLength, 1); + return [2 /*return*/]; + } + }); + }); }); + it('should be able to transfer ownership', function () { return __awaiter(void 0, void 0, void 0, function () { + var id, newOwner; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, ocean.assets.create(metadata, account1) + // transfer + ]; + case 1: + id = (_a.sent()).id; + // transfer + return [4 /*yield*/, ocean.assets.transferOwnership(id, account2.getId())]; + case 2: + // transfer + _a.sent(); + return [4 /*yield*/, ocean.keeper.didRegistry.getDIDOwner(id)]; + case 3: + newOwner = _a.sent(); + chai_1.assert.equal(newOwner, account2.getId()); + return [2 /*return*/]; + } + }); + }); }); +}); diff --git a/integration/ocean/AuthenticationToken.test.js b/integration/ocean/AuthenticationToken.test.js new file mode 100644 index 0000000..d5af4b2 --- /dev/null +++ b/integration/ocean/AuthenticationToken.test.js @@ -0,0 +1,183 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +exports.__esModule = true; +var chai_1 = require("chai"); +var config_1 = require("../config"); +var src_1 = require("../../src"); // @oceanprotocol/squid +describe('Authentication Token', function () { + var ocean; + var account1; + var account2; + before(function () { return __awaiter(void 0, void 0, void 0, function () { + var _a; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + try { + localStorage.clear(); + } + catch (_c) { } + return [4 /*yield*/, src_1.Ocean.getInstance(config_1.config) + // Accounts + ]; + case 1: + ocean = _b.sent(); + return [4 /*yield*/, ocean.accounts.list()]; + case 2: + _a = _b.sent(), account1 = _a[0], account2 = _a[1]; + return [2 /*return*/]; + } + }); + }); }); + after(function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + try { + localStorage.clear(); + } + catch (_b) { } + return [2 /*return*/]; + }); + }); }); + it('should generate a token', function () { return __awaiter(void 0, void 0, void 0, function () { + var token; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, ocean.auth.get(account1)]; + case 1: + token = _a.sent(); + chai_1.assert.match(token, /^0x[a-f0-9]{130}-[0-9]{0,14}/i); + return [2 /*return*/]; + } + }); + }); }); + it('should return the account that signed the token', function () { return __awaiter(void 0, void 0, void 0, function () { + var token, address; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, ocean.auth.get(account1)]; + case 1: + token = _a.sent(); + return [4 /*yield*/, ocean.auth.check(token)]; + case 2: + address = _a.sent(); + chai_1.assert.equal(address, account1.getId()); + return [2 /*return*/]; + } + }); + }); }); + it('should store the token for a user', function () { return __awaiter(void 0, void 0, void 0, function () { + var _a, _b, _c, _d; + return __generator(this, function (_e) { + switch (_e.label) { + case 0: + _b = (_a = chai_1.assert).isUndefined; + return [4 /*yield*/, account1.getToken()]; + case 1: + _b.apply(_a, [_e.sent()]); + return [4 /*yield*/, ocean.auth.store(account1)]; + case 2: + _e.sent(); + _d = (_c = chai_1.assert).match; + return [4 /*yield*/, account1.getToken()]; + case 3: + _d.apply(_c, [_e.sent(), /^0x[a-f0-9]{130}-[0-9]{0,14}/i]); + return [2 /*return*/]; + } + }); + }); }); + it('should restore the token for a user', function () { return __awaiter(void 0, void 0, void 0, function () { + var token; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, ocean.auth.restore(account1)]; + case 1: + token = _a.sent(); + chai_1.assert.match(token, /^0x[a-f0-9]{130}-[0-9]{0,14}/i); + return [2 /*return*/]; + } + }); + }); }); + it('should return undefined when is not stored', function () { return __awaiter(void 0, void 0, void 0, function () { + var token; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, ocean.auth.restore(account2)]; + case 1: + token = _a.sent(); + chai_1.assert.isUndefined(token); + return [2 /*return*/]; + } + }); + }); }); + it('should know if the token is stored', function () { return __awaiter(void 0, void 0, void 0, function () { + var acc1Stored, acc2Stored, _a, _b, _c, _d, _e, _f; + return __generator(this, function (_g) { + switch (_g.label) { + case 0: return [4 /*yield*/, ocean.auth.isStored(account1)]; + case 1: + // eslint-disable-next-line + acc1Stored = _g.sent(); + return [4 /*yield*/, ocean.auth.isStored(account2)]; + case 2: + acc2Stored = _g.sent(); + chai_1.assert.isTrue(acc1Stored); + _b = (_a = chai_1.assert).isTrue; + return [4 /*yield*/, account1.isTokenStored()]; + case 3: + _b.apply(_a, [_g.sent()]); + chai_1.assert.isFalse(acc2Stored); + _d = (_c = chai_1.assert).isFalse; + return [4 /*yield*/, account2.isTokenStored()]; + case 4: + _d.apply(_c, [_g.sent()]); + return [4 /*yield*/, account2.authenticate()]; + case 5: + _g.sent(); + return [4 /*yield*/, ocean.auth.isStored(account2)]; + case 6: + acc2Stored = _g.sent(); + chai_1.assert.isTrue(acc2Stored); + _f = (_e = chai_1.assert).isTrue; + return [4 /*yield*/, account2.isTokenStored()]; + case 7: + _f.apply(_e, [_g.sent()]); + return [2 /*return*/]; + } + }); + }); }); +}); diff --git a/integration/ocean/ConsumeAsset.test.js b/integration/ocean/ConsumeAsset.test.js new file mode 100644 index 0000000..d1b43b2 --- /dev/null +++ b/integration/ocean/ConsumeAsset.test.js @@ -0,0 +1,268 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result["default"] = mod; + return result; +}; +exports.__esModule = true; +var chai_1 = require("chai"); +var fs = __importStar(require("fs")); +var config_1 = require("../config"); +var utils_1 = require("../utils"); +var src_1 = require("../../src"); // @oceanprotocol/squid +describe('Consume Asset', function () { + var ocean; + var publisher; + var consumer; + var metadata = utils_1.getMetadata(); + var ddo; + var serviceAgreementSignatureResult; + before(function () { return __awaiter(void 0, void 0, void 0, function () { + var _a; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: return [4 /*yield*/, src_1.Ocean.getInstance(config_1.config) + // Accounts + ]; + case 1: + ocean = _b.sent(); + return [4 /*yield*/, ocean.accounts.list()]; + case 2: + _a = _b.sent(), publisher = _a[0], consumer = _a[1]; + if (!ocean.keeper.dispenser) { + metadata = utils_1.getMetadata(0); + } + return [2 /*return*/]; + } + }); + }); }); + it('should register an asset', function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, ocean.assets.create(metadata, publisher)]; + case 1: + ddo = _a.sent(); + chai_1.assert.isDefined(ddo, 'Register has not returned a DDO'); + chai_1.assert.match(ddo.id, /^did:op:[a-f0-9]{64}$/, 'DDO id is not valid'); + chai_1.assert.isAtLeast(ddo.authentication.length, 1, 'Default authentication not added'); + chai_1.assert.isDefined(ddo.findServiceByType('access'), "DDO access service doesn't exist"); + return [2 /*return*/]; + } + }); + }); }); + it('should be able to request tokens for consumer', function () { return __awaiter(void 0, void 0, void 0, function () { + var initialBalance, claimedTokens, _a, _b, _c, _d, _e, _f, _g; + return __generator(this, function (_h) { + switch (_h.label) { + case 0: return [4 /*yield*/, consumer.getBalance()]; + case 1: + initialBalance = (_h.sent()).ocn; + _a = +metadata.main.price; + _c = (_b = Math).pow; + _d = [10]; + return [4 /*yield*/, ocean.keeper.token.decimals()]; + case 2: + claimedTokens = _a * _c.apply(_b, _d.concat([-(_h.sent())])); + _h.label = 3; + case 3: + _h.trys.push([3, 5, , 6]); + return [4 /*yield*/, consumer.requestTokens(claimedTokens)]; + case 4: + _h.sent(); + return [3 /*break*/, 6]; + case 5: + _e = _h.sent(); + return [3 /*break*/, 6]; + case 6: + _g = (_f = chai_1.assert).equal; + return [4 /*yield*/, consumer.getBalance()]; + case 7: + _g.apply(_f, [(_h.sent()).ocn, + initialBalance + claimedTokens, + 'OCN Tokens not delivered']); + return [2 /*return*/]; + } + }); + }); }); + it('should sign the service agreement', function () { return __awaiter(void 0, void 0, void 0, function () { + var accessService, agreementId, signature; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + accessService = ddo.findServiceByType('access'); + return [4 /*yield*/, ocean.agreements.prepare(ddo.id, accessService.index, consumer)]; + case 1: + serviceAgreementSignatureResult = _a.sent(); + agreementId = serviceAgreementSignatureResult.agreementId, signature = serviceAgreementSignatureResult.signature; + chai_1.assert.match(agreementId, /^0x[a-f0-9]{64}$/, 'Service agreement ID seems not valid'); + chai_1.assert.match(signature, /^0x[a-f0-9]{130}$/, 'Service agreement signature seems not valid'); + return [2 /*return*/]; + } + }); + }); }); + it('should execute the service agreement', function () { return __awaiter(void 0, void 0, void 0, function () { + var accessService, success; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + accessService = ddo.findServiceByType('access'); + return [4 /*yield*/, ocean.agreements.create(ddo.id, serviceAgreementSignatureResult.agreementId, accessService.index, serviceAgreementSignatureResult.signature, consumer, publisher)]; + case 1: + success = _a.sent(); + chai_1.assert.isTrue(success); + return [2 /*return*/]; + } + }); + }); }); + it('should get the agreement conditions status not fulfilled', function () { return __awaiter(void 0, void 0, void 0, function () { + var status; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, ocean.agreements.status(serviceAgreementSignatureResult.agreementId)]; + case 1: + status = _a.sent(); + chai_1.assert.deepEqual(status, { + lockReward: src_1.ConditionState.Unfulfilled, + accessSecretStore: src_1.ConditionState.Unfulfilled, + escrowReward: src_1.ConditionState.Unfulfilled + }); + return [2 /*return*/]; + } + }); + }); }); + it('should lock the payment by the consumer', function () { return __awaiter(void 0, void 0, void 0, function () { + var paid; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, ocean.agreements.conditions.lockReward(serviceAgreementSignatureResult.agreementId, ddo.findServiceByType('metadata').attributes.main.price, consumer)]; + case 1: + paid = _a.sent(); + chai_1.assert.isTrue(paid, 'The asset has not been paid correctly'); + return [2 /*return*/]; + } + }); + }); }); + // The test will fail because Brizo grants the access faster + it('should grant the access by the publisher', function () { return __awaiter(void 0, void 0, void 0, function () { + var granted, accessGranted, _a; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + _b.trys.push([0, 3, , 4]); + return [4 /*yield*/, ocean.agreements.conditions.grantAccess(serviceAgreementSignatureResult.agreementId, ddo.id, consumer.getId(), publisher)]; + case 1: + granted = _b.sent(); + chai_1.assert.isTrue(granted, 'The asset has not been granted correctly'); + return [4 /*yield*/, ocean.keeper.conditions.accessSecretStoreCondition.checkPermissions(consumer.getId(), ddo.id)]; + case 2: + accessGranted = _b.sent(); + chai_1.assert.isTrue(accessGranted, 'Consumer has been granted.'); + return [3 /*break*/, 4]; + case 3: + _a = _b.sent(); + return [3 /*break*/, 4]; + case 4: return [2 /*return*/]; + } + }); + }); }); + it('should get the agreement conditions status fulfilled', function () { return __awaiter(void 0, void 0, void 0, function () { + var status; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, ocean.agreements.status(serviceAgreementSignatureResult.agreementId)]; + case 1: + status = _a.sent(); + chai_1.assert.deepEqual(status, { + lockReward: src_1.ConditionState.Fulfilled, + accessSecretStore: src_1.ConditionState.Fulfilled, + escrowReward: src_1.ConditionState.Unfulfilled + }); + return [2 /*return*/]; + } + }); + }); }); + it('should consume and store the assets', function () { return __awaiter(void 0, void 0, void 0, function () { + var accessService, folder, path, files; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + accessService = ddo.findServiceByType('access'); + folder = '/tmp/ocean/squid-js-1'; + return [4 /*yield*/, ocean.assets.consume(serviceAgreementSignatureResult.agreementId, ddo.id, accessService.index, consumer, folder)]; + case 1: + path = _a.sent(); + chai_1.assert.include(path, folder, 'The storage path is not correct.'); + return [4 /*yield*/, new Promise(function (resolve) { + fs.readdir(path, function (e, fileList) { + resolve(fileList); + }); + })]; + case 2: + files = _a.sent(); + chai_1.assert.deepEqual(files, ['README.md', 'package.json'], 'Stored files are not correct.'); + return [2 /*return*/]; + } + }); + }); }); + it('should consume and store one asset', function () { return __awaiter(void 0, void 0, void 0, function () { + var accessService, folder, path, files; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + accessService = ddo.findServiceByType('access'); + folder = '/tmp/ocean/squid-js-2'; + return [4 /*yield*/, ocean.assets.consume(serviceAgreementSignatureResult.agreementId, ddo.id, accessService.index, consumer, folder, 1)]; + case 1: + path = _a.sent(); + chai_1.assert.include(path, folder, 'The storage path is not correct.'); + return [4 /*yield*/, new Promise(function (resolve) { + fs.readdir(path, function (e, fileList) { + resolve(fileList); + }); + })]; + case 2: + files = _a.sent(); + chai_1.assert.deepEqual(files, ['README.md'], 'Stored files are not correct.'); + return [2 /*return*/]; + } + }); + }); }); +}); diff --git a/integration/ocean/ConsumeAssetBrizo.test.js b/integration/ocean/ConsumeAssetBrizo.test.js new file mode 100644 index 0000000..4ba0d24 --- /dev/null +++ b/integration/ocean/ConsumeAssetBrizo.test.js @@ -0,0 +1,170 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result["default"] = mod; + return result; +}; +exports.__esModule = true; +var chai_1 = require("chai"); +var fs = __importStar(require("fs")); +var config_1 = require("../config"); +var utils_1 = require("../utils"); +var src_1 = require("../../src"); // @oceanprotocol/squid +describe('Consume Asset (Brizo)', function () { + var ocean; + var publisher; + var consumer; + var ddo; + var agreementId; + var metadata = utils_1.getMetadata(); + before(function () { return __awaiter(void 0, void 0, void 0, function () { + var _a; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: return [4 /*yield*/, src_1.Ocean.getInstance(config_1.config) + // Accounts + ]; + case 1: + ocean = _b.sent(); + return [4 /*yield*/, ocean.accounts.list()]; + case 2: + _a = _b.sent(), publisher = _a[0], consumer = _a[1]; + if (!ocean.keeper.dispenser) { + metadata = utils_1.getMetadata(0); + } + return [2 /*return*/]; + } + }); + }); }); + after(function () { + try { + localStorage.clear(); + } + catch (_a) { } + }); + it('should authenticate the accounts', function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, publisher.authenticate()]; + case 1: + _a.sent(); + return [4 /*yield*/, consumer.authenticate()]; + case 2: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + it('should regiester an asset', function () { return __awaiter(void 0, void 0, void 0, function () { + var steps; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + steps = []; + return [4 /*yield*/, ocean.assets + .create(metadata, publisher) + .next(function (step) { return steps.push(step); })]; + case 1: + ddo = _a.sent(); + chai_1.assert.instanceOf(ddo, src_1.DDO); + chai_1.assert.deepEqual(steps, [0, 1, 2, 3, 4, 5, 6, 7]); + return [2 /*return*/]; + } + }); + }); }); + it('should order the asset', function () { return __awaiter(void 0, void 0, void 0, function () { + var accessService, _a, _b, _c, _d, _e, _f, _g, steps; + return __generator(this, function (_h) { + switch (_h.label) { + case 0: + accessService = ddo.findServiceByType('access'); + _h.label = 1; + case 1: + _h.trys.push([1, 4, , 5]); + _b = (_a = consumer).requestTokens; + _c = +metadata.main.price; + _e = (_d = Math).pow; + _f = [10]; + return [4 /*yield*/, ocean.keeper.token.decimals()]; + case 2: return [4 /*yield*/, _b.apply(_a, [_c * _e.apply(_d, _f.concat([-(_h.sent())]))])]; + case 3: + _h.sent(); + return [3 /*break*/, 5]; + case 4: + _g = _h.sent(); + return [3 /*break*/, 5]; + case 5: + steps = []; + return [4 /*yield*/, ocean.assets + .order(ddo.id, accessService.index, consumer) + .next(function (step) { return steps.push(step); })]; + case 6: + agreementId = _h.sent(); + chai_1.assert.isDefined(agreementId); + chai_1.assert.deepEqual(steps, [0, 1, 2, 3]); + return [2 /*return*/]; + } + }); + }); }); + it('should consume and store the assets', function () { return __awaiter(void 0, void 0, void 0, function () { + var accessService, folder, path, files; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + accessService = ddo.findServiceByType('access'); + folder = '/tmp/ocean/squid-js'; + return [4 /*yield*/, ocean.assets.consume(agreementId, ddo.id, accessService.index, consumer, folder)]; + case 1: + path = _a.sent(); + chai_1.assert.include(path, folder, 'The storage path is not correct.'); + return [4 /*yield*/, new Promise(function (resolve) { + fs.readdir(path, function (e, fileList) { + resolve(fileList); + }); + })]; + case 2: + files = _a.sent(); + chai_1.assert.deepEqual(files, ['README.md', 'package.json'], 'Stored files are not correct.'); + return [2 /*return*/]; + } + }); + }); }); +}); diff --git a/integration/ocean/ConsumeBigAsset.test.js b/integration/ocean/ConsumeBigAsset.test.js new file mode 100644 index 0000000..cddf5a2 --- /dev/null +++ b/integration/ocean/ConsumeBigAsset.test.js @@ -0,0 +1,160 @@ +"use strict"; +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result["default"] = mod; + return result; +}; +exports.__esModule = true; +var chai_1 = require("chai"); +var fs = __importStar(require("fs")); +var config_1 = require("../config"); +var utils_1 = require("../utils"); +var src_1 = require("../../src"); // @oceanprotocol/squid +// Ensure that your network is fast enought and you have some free ram before run it. +xdescribe('Consume Asset (Large size)', function () { + var ocean; + var publisher; + var consumer; + var ddo; + var agreementId; + var baseMetadata = utils_1.getMetadata(); + var metadata = utils_1.getMetadata(); + before(function () { return __awaiter(void 0, void 0, void 0, function () { + var _a; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: return [4 /*yield*/, src_1.Ocean.getInstance(config_1.config) + // Accounts + ]; + case 1: + ocean = _b.sent(); + return [4 /*yield*/, ocean.accounts.list()]; + case 2: + _a = _b.sent(), publisher = _a[0], consumer = _a[1]; + if (!ocean.keeper.dispenser) { + baseMetadata = utils_1.getMetadata(0); + } + metadata = __assign(__assign({}, baseMetadata), { main: __assign(__assign({}, baseMetadata.main), { files: [ + { + index: 0, + contentType: 'hello/hello', + url: 'https://speed.hetzner.de/1GB.bin' + } + ] }) }); + return [2 /*return*/]; + } + }); + }); }); + it('should regiester an asset', function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, ocean.assets.create(metadata, publisher)]; + case 1: + ddo = _a.sent(); + chai_1.assert.instanceOf(ddo, src_1.DDO); + return [2 /*return*/]; + } + }); + }); }); + it('should order the asset', function () { return __awaiter(void 0, void 0, void 0, function () { + var accessService, _a, _b, _c, _d, _e, _f, _g; + return __generator(this, function (_h) { + switch (_h.label) { + case 0: + accessService = ddo.findServiceByType('access'); + _h.label = 1; + case 1: + _h.trys.push([1, 4, , 5]); + _b = (_a = consumer).requestTokens; + _c = +metadata.main.price; + _e = (_d = Math).pow; + _f = [10]; + return [4 /*yield*/, ocean.keeper.token.decimals()]; + case 2: return [4 /*yield*/, _b.apply(_a, [_c * _e.apply(_d, _f.concat([-(_h.sent())]))])]; + case 3: + _h.sent(); + return [3 /*break*/, 5]; + case 4: + _g = _h.sent(); + return [3 /*break*/, 5]; + case 5: return [4 /*yield*/, ocean.assets.order(ddo.id, accessService.index, consumer)]; + case 6: + agreementId = _h.sent(); + chai_1.assert.isDefined(agreementId); + return [2 /*return*/]; + } + }); + }); }); + it('should consume and store the assets', function () { return __awaiter(void 0, void 0, void 0, function () { + var accessService, folder, path, files; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + accessService = ddo.findServiceByType('access'); + folder = '/tmp/ocean/squid-js'; + return [4 /*yield*/, ocean.assets.consume(agreementId, ddo.id, accessService.index, consumer, folder)]; + case 1: + path = _a.sent(); + chai_1.assert.include(path, folder, 'The storage path is not correct.'); + return [4 /*yield*/, new Promise(function (resolve) { + fs.readdir(path, function (e, fileList) { + resolve(fileList); + }); + })]; + case 2: + files = _a.sent(); + chai_1.assert.deepEqual(files, ['1GB.bin'], 'Stored files are not correct.'); + return [2 /*return*/]; + } + }); + }); }); +}); diff --git a/integration/ocean/RegisterEscrowAccessSecretStoreTemplate.test.js b/integration/ocean/RegisterEscrowAccessSecretStoreTemplate.test.js new file mode 100644 index 0000000..9c82762 --- /dev/null +++ b/integration/ocean/RegisterEscrowAccessSecretStoreTemplate.test.js @@ -0,0 +1,376 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __spreadArrays = (this && this.__spreadArrays) || function () { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; +}; +exports.__esModule = true; +var chai_1 = require("chai"); +var config_1 = require("../config"); +var src_1 = require("../../src"); // @oceanprotocol/squid +var LockRewardCondition = src_1.conditions.LockRewardCondition, EscrowReward = src_1.conditions.EscrowReward, AccessSecretStoreCondition = src_1.conditions.AccessSecretStoreCondition; +describe('Register Escrow Access Secret Store Template', function () { + var ocean; + var keeper; + var template; + var url = 'https://example.com/did/ocean/test-attr-example.txt'; + var checksum = 'b'.repeat(32); + var escrowAmount = 12; + var templateManagerOwner; + var publisher; + var consumer; + var accessSecretStoreCondition; + var lockRewardCondition; + var escrowReward; + before(function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, src_1.Ocean.getInstance(config_1.config)]; + case 1: + ocean = _a.sent(); + keeper = ocean.keeper; + template = keeper.templates.escrowAccessSecretStoreTemplate; + return [4 /*yield*/, ocean.accounts.list()]; + case 2: + // Accounts + templateManagerOwner = (_a.sent())[0]; + return [4 /*yield*/, ocean.accounts.list()]; + case 3: + publisher = (_a.sent())[1]; + return [4 /*yield*/, ocean.accounts.list()]; + case 4: + consumer = (_a.sent())[2]; + // Conditions + accessSecretStoreCondition = keeper.conditions.accessSecretStoreCondition; + lockRewardCondition = keeper.conditions.lockRewardCondition; + escrowReward = keeper.conditions.escrowReward; + if (!ocean.keeper.dispenser) { + escrowAmount = 0; + } + return [2 /*return*/]; + } + }); + }); }); + describe('Propose and approve template', function () { + it('should propose the template', function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, keeper.templateStoreManager.proposeTemplate(template.getId(), consumer.getId(), true) + // TODO: Use a event to detect template mined + ]; + case 1: + _a.sent(); + // TODO: Use a event to detect template mined + return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 2 * 1000); })]; + case 2: + // TODO: Use a event to detect template mined + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + it('should approve the template', function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, keeper.templateStoreManager.approveTemplate(template.getId(), templateManagerOwner.getId(), true) + // TODO: Use a event to detect template mined + ]; + case 1: + _a.sent(); + // TODO: Use a event to detect template mined + return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 2 * 1000); })]; + case 2: + // TODO: Use a event to detect template mined + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + }); + describe('Full flow', function () { + var agreementId = "0x" + src_1.utils.generateId(); + var did = "0x" + src_1.utils.generateId(); + var conditionIdAccess; + var conditionIdLock; + var conditionIdEscrow; + it('should register a DID', function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, keeper.didRegistry.registerAttribute(did, checksum, [], url, publisher.getId())]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + it('should generate the condition IDs', function () { return __awaiter(void 0, void 0, void 0, function () { + var _a, _b, _c; + return __generator(this, function (_d) { + switch (_d.label) { + case 0: return [4 /*yield*/, accessSecretStoreCondition.generateIdHash(agreementId, did, consumer.getId())]; + case 1: + conditionIdAccess = _d.sent(); + _b = (_a = lockRewardCondition).generateIdHash; + _c = [agreementId]; + return [4 /*yield*/, escrowReward.getAddress()]; + case 2: return [4 /*yield*/, _b.apply(_a, _c.concat([_d.sent(), + escrowAmount]))]; + case 3: + conditionIdLock = _d.sent(); + return [4 /*yield*/, escrowReward.generateIdHash(agreementId, escrowAmount, publisher.getId(), consumer.getId(), conditionIdLock, conditionIdAccess)]; + case 4: + conditionIdEscrow = _d.sent(); + return [2 /*return*/]; + } + }); + }); }); + it('should have conditions types', function () { return __awaiter(void 0, void 0, void 0, function () { + var conditionTypes; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, template.getConditionTypes()]; + case 1: + conditionTypes = _a.sent(); + chai_1.assert.equal(conditionTypes.length, 3, 'Expected 3 conditions.'); + chai_1.assert.deepEqual(__spreadArrays(conditionTypes).sort(), [ + accessSecretStoreCondition.getAddress(), + escrowReward.getAddress(), + lockRewardCondition.getAddress() + ].sort(), "The conditions doesn't match"); + return [2 /*return*/]; + } + }); + }); }); + it('should have condition instances asociated', function () { return __awaiter(void 0, void 0, void 0, function () { + var conditionInstances, conditionClasses; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, template.getConditionTypes()]; + case 1: + conditionInstances = (_a.sent()).map(function (address) { + return keeper.getConditionByAddress(address); + }); + chai_1.assert.equal(conditionInstances.length, 3, 'Expected 3 conditions.'); + conditionClasses = [ + AccessSecretStoreCondition, + EscrowReward, + LockRewardCondition + ]; + conditionClasses.forEach(function (conditionClass) { + if (!conditionInstances.find(function (condition) { return condition instanceof conditionClass; })) { + throw new Error(conditionClass.name + " is not part of the conditions."); + } + }); + return [2 /*return*/]; + } + }); + }); }); + it('should create a new agreement', function () { return __awaiter(void 0, void 0, void 0, function () { + var agreement; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, keeper.agreementStoreManager.createAgreement(agreementId, did, template.getId(), [conditionIdLock, conditionIdAccess, conditionIdEscrow], [0, 0, 0], [0, 0, 0], [consumer.getId(), publisher.getId()], publisher.getId())]; + case 1: + agreement = _a.sent(); + chai_1.assert.isTrue(agreement.status); + return [2 /*return*/]; + } + }); + }); }); + it('should not grant the access to the consumer', function () { return __awaiter(void 0, void 0, void 0, function () { + var accessGranted; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, accessSecretStoreCondition.checkPermissions(consumer.getId(), did)]; + case 1: + accessGranted = _a.sent(); + chai_1.assert.isFalse(accessGranted, 'Consumer has been granted.'); + return [2 /*return*/]; + } + }); + }); }); + it('should fulfill LockRewardCondition', function () { return __awaiter(void 0, void 0, void 0, function () { + var _a, fulfill; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + _b.trys.push([0, 2, , 3]); + return [4 /*yield*/, consumer.requestTokens(escrowAmount)]; + case 1: + _b.sent(); + return [3 /*break*/, 3]; + case 2: + _a = _b.sent(); + return [3 /*break*/, 3]; + case 3: return [4 /*yield*/, keeper.token.approve(lockRewardCondition.getAddress(), escrowAmount, consumer.getId())]; + case 4: + _b.sent(); + return [4 /*yield*/, lockRewardCondition.fulfill(agreementId, escrowReward.getAddress(), escrowAmount, consumer.getId())]; + case 5: + fulfill = _b.sent(); + chai_1.assert.isDefined(fulfill.events.Fulfilled, 'Not Fulfilled event.'); + return [2 /*return*/]; + } + }); + }); }); + it('should fulfill AccessSecretStoreCondition', function () { return __awaiter(void 0, void 0, void 0, function () { + var fulfill; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, accessSecretStoreCondition.fulfill(agreementId, did, consumer.getId(), publisher.getId())]; + case 1: + fulfill = _a.sent(); + chai_1.assert.isDefined(fulfill.events.Fulfilled, 'Not Fulfilled event.'); + return [2 /*return*/]; + } + }); + }); }); + it('should fulfill EscrowReward', function () { return __awaiter(void 0, void 0, void 0, function () { + var fulfill; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, escrowReward.fulfill(agreementId, escrowAmount, publisher.getId(), consumer.getId(), conditionIdLock, conditionIdAccess, consumer.getId())]; + case 1: + fulfill = _a.sent(); + chai_1.assert.isDefined(fulfill.events.Fulfilled, 'Not Fulfilled event.'); + return [2 /*return*/]; + } + }); + }); }); + it('should grant the access to the consumer', function () { return __awaiter(void 0, void 0, void 0, function () { + var accessGranted; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, accessSecretStoreCondition.checkPermissions(consumer.getId(), did)]; + case 1: + accessGranted = _a.sent(); + chai_1.assert.isTrue(accessGranted, 'Consumer has not been granted.'); + return [2 /*return*/]; + } + }); + }); }); + }); + describe('Short flow', function () { + var did = src_1.utils.generateId(); + var agreementId; + it('should register a DID', function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + // This part is executed inside Ocean.assets.create() + return [4 /*yield*/, keeper.didRegistry.registerAttribute(did, checksum, [], url, publisher.getId())]; + case 1: + // This part is executed inside Ocean.assets.create() + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + it('should create a new agreement (short way)', function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, template.createFullAgreement(did, escrowAmount, consumer.getId(), publisher.getId())]; + case 1: + agreementId = _a.sent(); + chai_1.assert.match(agreementId, /^0x[a-f0-9]{64}$/i); + return [2 /*return*/]; + } + }); + }); }); + it('should not grant the access to the consumer', function () { return __awaiter(void 0, void 0, void 0, function () { + var accessGranted; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, accessSecretStoreCondition.checkPermissions(consumer.getId(), did)]; + case 1: + accessGranted = _a.sent(); + chai_1.assert.isFalse(accessGranted, 'Consumer has been granted.'); + return [2 /*return*/]; + } + }); + }); }); + it('should fulfill the conditions from consumer side', function () { return __awaiter(void 0, void 0, void 0, function () { + var _a; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + _b.trys.push([0, 2, , 3]); + return [4 /*yield*/, consumer.requestTokens(escrowAmount)]; + case 1: + _b.sent(); + return [3 /*break*/, 3]; + case 2: + _a = _b.sent(); + return [3 /*break*/, 3]; + case 3: return [4 /*yield*/, ocean.agreements.conditions.lockReward(agreementId, escrowAmount, consumer)]; + case 4: + _b.sent(); + return [2 /*return*/]; + } + }); + }); }); + it('should fulfill the conditions from publisher side', function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, ocean.agreements.conditions.grantAccess(agreementId, did, consumer.getId(), publisher)]; + case 1: + _a.sent(); + return [4 /*yield*/, ocean.agreements.conditions.releaseReward(agreementId, escrowAmount, did, consumer.getId(), publisher.getId(), publisher)]; + case 2: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + it('should grant the access to the consumer', function () { return __awaiter(void 0, void 0, void 0, function () { + var accessGranted; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, accessSecretStoreCondition.checkPermissions(consumer.getId(), did)]; + case 1: + accessGranted = _a.sent(); + chai_1.assert.isTrue(accessGranted, 'Consumer has not been granted.'); + return [2 /*return*/]; + } + }); + }); }); + }); +}); diff --git a/integration/ocean/RegisterEscrowComputeExecutionTemplate.test.js b/integration/ocean/RegisterEscrowComputeExecutionTemplate.test.js new file mode 100644 index 0000000..3aca324 --- /dev/null +++ b/integration/ocean/RegisterEscrowComputeExecutionTemplate.test.js @@ -0,0 +1,374 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __spreadArrays = (this && this.__spreadArrays) || function () { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; +}; +exports.__esModule = true; +var chai_1 = require("chai"); +var config_1 = require("../config"); +var src_1 = require("../../src"); // @oceanprotocol/squid +var LockRewardCondition = src_1.conditions.LockRewardCondition, EscrowReward = src_1.conditions.EscrowReward, ComputeExecutionCondition = src_1.conditions.ComputeExecutionCondition; +describe('Register Escrow Compute Execution Template', function () { + var ocean; + var keeper; + var template; + var url = 'https://example.com/did/ocean/test-attr-example.txt'; + var checksum = 'b'.repeat(32); + var escrowAmount = 12; + var templateManagerOwner; + var publisher; + var consumer; + var computeExecutionCondition; + var lockRewardCondition; + var escrowReward; + before(function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, src_1.Ocean.getInstance(config_1.config)]; + case 1: + ocean = _a.sent(); + keeper = ocean.keeper; + template = keeper.templates.escrowComputeExecutionTemplate; + return [4 /*yield*/, ocean.accounts.list()]; + case 2: + // Accounts + templateManagerOwner = (_a.sent())[0]; + return [4 /*yield*/, ocean.accounts.list()]; + case 3: + publisher = (_a.sent())[1]; + return [4 /*yield*/, ocean.accounts.list()]; + case 4: + consumer = (_a.sent())[2]; + // Conditions + computeExecutionCondition = keeper.conditions.computeExecutionCondition; + lockRewardCondition = keeper.conditions.lockRewardCondition; + escrowReward = keeper.conditions.escrowReward; + if (!ocean.keeper.dispenser) { + escrowAmount = 0; + } + return [2 /*return*/]; + } + }); + }); }); + describe('Propose and approve template', function () { + it('should propose the template', function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, keeper.templateStoreManager.proposeTemplate(template.getId(), consumer.getId(), true) + // TODO: Use a event to detect template mined + ]; + case 1: + _a.sent(); + // TODO: Use a event to detect template mined + return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 2 * 1000); })]; + case 2: + // TODO: Use a event to detect template mined + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + it('should approve the template', function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, keeper.templateStoreManager.approveTemplate(template.getId(), templateManagerOwner.getId(), true) + // TODO: Use a event to detect template mined + ]; + case 1: + _a.sent(); + // TODO: Use a event to detect template mined + return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 2 * 1000); })]; + case 2: + // TODO: Use a event to detect template mined + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + }); + describe('Full flow', function () { + var agreementId = "0x" + src_1.utils.generateId(); + var did = "0x" + src_1.utils.generateId(); + var conditionIdCompute; + var conditionIdLock; + var conditionIdEscrow; + it('should register a DID', function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, keeper.didRegistry.registerAttribute(did, checksum, [], url, publisher.getId())]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + it('should generate the condition IDs', function () { return __awaiter(void 0, void 0, void 0, function () { + var _a, _b, _c; + return __generator(this, function (_d) { + switch (_d.label) { + case 0: return [4 /*yield*/, computeExecutionCondition.generateIdHash(agreementId, did, consumer.getId())]; + case 1: + conditionIdCompute = _d.sent(); + _b = (_a = lockRewardCondition).generateIdHash; + _c = [agreementId]; + return [4 /*yield*/, escrowReward.getAddress()]; + case 2: return [4 /*yield*/, _b.apply(_a, _c.concat([_d.sent(), + escrowAmount]))]; + case 3: + conditionIdLock = _d.sent(); + return [4 /*yield*/, escrowReward.generateIdHash(agreementId, escrowAmount, publisher.getId(), consumer.getId(), conditionIdLock, conditionIdCompute)]; + case 4: + conditionIdEscrow = _d.sent(); + return [2 /*return*/]; + } + }); + }); }); + it('should have conditions types', function () { return __awaiter(void 0, void 0, void 0, function () { + var conditionTypes; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, template.getConditionTypes()]; + case 1: + conditionTypes = _a.sent(); + chai_1.assert.equal(conditionTypes.length, 3, 'Expected 3 conditions.'); + chai_1.assert.deepEqual(__spreadArrays(conditionTypes).sort(), [ + computeExecutionCondition.getAddress(), + escrowReward.getAddress(), + lockRewardCondition.getAddress() + ].sort(), "The conditions doesn't match"); + return [2 /*return*/]; + } + }); + }); }); + it('should have condition instances asociated', function () { return __awaiter(void 0, void 0, void 0, function () { + var conditionInstances, conditionClasses; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, template.getConditions()]; + case 1: + conditionInstances = _a.sent(); + chai_1.assert.equal(conditionInstances.length, 3, 'Expected 3 conditions.'); + conditionClasses = [ + ComputeExecutionCondition, + EscrowReward, + LockRewardCondition + ]; + conditionClasses.forEach(function (conditionClass) { + if (!conditionInstances.find(function (condition) { return condition instanceof conditionClass; })) { + throw new Error(conditionClass.name + " is not part of the conditions."); + } + }); + return [2 /*return*/]; + } + }); + }); }); + it('should create a new agreement', function () { return __awaiter(void 0, void 0, void 0, function () { + var agreement; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, keeper.agreementStoreManager.createAgreement(agreementId, did, template.getId(), [conditionIdLock, conditionIdCompute, conditionIdEscrow], [0, 0, 0], [0, 0, 0], [consumer.getId(), publisher.getId()], publisher.getId())]; + case 1: + agreement = _a.sent(); + chai_1.assert.isTrue(agreement.status); + return [2 /*return*/]; + } + }); + }); }); + it('should not trigger the compute', function () { return __awaiter(void 0, void 0, void 0, function () { + var computeTriggered; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, computeExecutionCondition.wasComputeTriggered(did, consumer.getId())]; + case 1: + computeTriggered = _a.sent(); + chai_1.assert.isFalse(computeTriggered, 'Compute has been triggered.'); + return [2 /*return*/]; + } + }); + }); }); + it('should fulfill LockRewardCondition', function () { return __awaiter(void 0, void 0, void 0, function () { + var _a, fulfill; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + _b.trys.push([0, 2, , 3]); + return [4 /*yield*/, consumer.requestTokens(escrowAmount)]; + case 1: + _b.sent(); + return [3 /*break*/, 3]; + case 2: + _a = _b.sent(); + return [3 /*break*/, 3]; + case 3: return [4 /*yield*/, keeper.token.approve(lockRewardCondition.getAddress(), escrowAmount, consumer.getId())]; + case 4: + _b.sent(); + return [4 /*yield*/, lockRewardCondition.fulfill(agreementId, escrowReward.getAddress(), escrowAmount, consumer.getId())]; + case 5: + fulfill = _b.sent(); + chai_1.assert.isDefined(fulfill.events.Fulfilled, 'Not Fulfilled event.'); + return [2 /*return*/]; + } + }); + }); }); + it('should fulfill ComputeExecutionCondition', function () { return __awaiter(void 0, void 0, void 0, function () { + var fulfill; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, computeExecutionCondition.fulfill(agreementId, did, consumer.getId(), publisher.getId())]; + case 1: + fulfill = _a.sent(); + chai_1.assert.isDefined(fulfill.events.Fulfilled, 'Not Fulfilled event.'); + return [2 /*return*/]; + } + }); + }); }); + it('should fulfill EscrowReward', function () { return __awaiter(void 0, void 0, void 0, function () { + var fulfill; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, escrowReward.fulfill(agreementId, escrowAmount, publisher.getId(), consumer.getId(), conditionIdLock, conditionIdCompute, consumer.getId())]; + case 1: + fulfill = _a.sent(); + chai_1.assert.isDefined(fulfill.events.Fulfilled, 'Not Fulfilled event.'); + return [2 /*return*/]; + } + }); + }); }); + it('should grant the access to the consumer', function () { return __awaiter(void 0, void 0, void 0, function () { + var computeTriggered; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, computeExecutionCondition.wasComputeTriggered(did, consumer.getId())]; + case 1: + computeTriggered = _a.sent(); + chai_1.assert.isTrue(computeTriggered, 'Compute has not been triggered.'); + return [2 /*return*/]; + } + }); + }); }); + }); + describe('Short flow', function () { + var did = src_1.utils.generateId(); + var agreementId; + it('should register a DID', function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + // This part is executed inside Ocean.assets.create() + return [4 /*yield*/, keeper.didRegistry.registerAttribute(did, checksum, [], url, publisher.getId())]; + case 1: + // This part is executed inside Ocean.assets.create() + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + it('should create a new agreement (short way)', function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, template.createFullAgreement(did, escrowAmount, consumer.getId(), publisher.getId())]; + case 1: + agreementId = _a.sent(); + chai_1.assert.match(agreementId, /^0x[a-f0-9]{64}$/i); + return [2 /*return*/]; + } + }); + }); }); + it('should not grant the access to the consumer', function () { return __awaiter(void 0, void 0, void 0, function () { + var computeTriggered; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, computeExecutionCondition.wasComputeTriggered(did, consumer.getId())]; + case 1: + computeTriggered = _a.sent(); + chai_1.assert.isFalse(computeTriggered, 'Compute has been triggered.'); + return [2 /*return*/]; + } + }); + }); }); + it('should fulfill the conditions from consumer side', function () { return __awaiter(void 0, void 0, void 0, function () { + var _a; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + _b.trys.push([0, 2, , 3]); + return [4 /*yield*/, consumer.requestTokens(escrowAmount)]; + case 1: + _b.sent(); + return [3 /*break*/, 3]; + case 2: + _a = _b.sent(); + return [3 /*break*/, 3]; + case 3: return [4 /*yield*/, ocean.agreements.conditions.lockReward(agreementId, escrowAmount, consumer)]; + case 4: + _b.sent(); + return [2 /*return*/]; + } + }); + }); }); + it('should fulfill the conditions from computing side', function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, ocean.agreements.conditions.grantServiceExecution(agreementId, did, consumer.getId(), publisher)]; + case 1: + _a.sent(); + return [4 /*yield*/, ocean.agreements.conditions.releaseReward(agreementId, escrowAmount, did, consumer.getId(), publisher.getId(), publisher)]; + case 2: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + it('should grant the access to the consumer', function () { return __awaiter(void 0, void 0, void 0, function () { + var computeTriggered; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, computeExecutionCondition.wasComputeTriggered(did, consumer.getId())]; + case 1: + computeTriggered = _a.sent(); + chai_1.assert.isTrue(computeTriggered, 'Compute has not been triggered.'); + return [2 /*return*/]; + } + }); + }); }); + }); +}); diff --git a/integration/ocean/RegisterEscrowComputeExecutionTemplate.test.ts b/integration/ocean/RegisterEscrowComputeExecutionTemplate.test.ts index 89f05d1..305402f 100644 --- a/integration/ocean/RegisterEscrowComputeExecutionTemplate.test.ts +++ b/integration/ocean/RegisterEscrowComputeExecutionTemplate.test.ts @@ -149,7 +149,7 @@ describe('Register Escrow Compute Execution Template', () => { agreementId, did, template.getId(), - [conditionIdCompute, conditionIdLock, conditionIdEscrow], + [conditionIdLock, conditionIdCompute, conditionIdEscrow], [0, 0, 0], [0, 0, 0], [consumer.getId(), publisher.getId()], diff --git a/integration/ocean/SearchAsset.test.js b/integration/ocean/SearchAsset.test.js new file mode 100644 index 0000000..49b4900 --- /dev/null +++ b/integration/ocean/SearchAsset.test.js @@ -0,0 +1,182 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +exports.__esModule = true; +var chai_1 = require("chai"); +var config_1 = require("../config"); +var utils_1 = require("../utils"); +var src_1 = require("../../src"); // @oceanprotocol/squid +describe('Search Asset', function () { + var ocean; + var publisher; + var testHash = Math.random() + .toString(36) + .substr(2); + var price; + var metadataGenerator = function (name) { + return utils_1.generateMetadata("" + name + testHash, price); + }; + var test1length; + var test2length; + var test3length; + before(function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, src_1.Ocean.getInstance(config_1.config) + // Accounts + ]; + case 1: + ocean = _a.sent(); + return [4 /*yield*/, ocean.accounts.list()]; + case 2: + publisher = (_a.sent())[0]; + return [2 /*return*/]; + } + }); + }); }); + it('should be able to search the assets', function () { return __awaiter(void 0, void 0, void 0, function () { + var ddos; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, ocean.assets.search("Test1" + testHash)]; + case 1: + ddos = (_a.sent()).results; + chai_1.assert.isArray(ddos, 'A search should return an array'); + test1length = ddos.length; + return [4 /*yield*/, ocean.assets.search("Test2" + testHash)]; + case 2: + test2length = (_a.sent()).results.length; + return [4 /*yield*/, ocean.assets.search("Test3" + testHash)]; + case 3: + test3length = (_a.sent()).results.length; + if (!ocean.keeper.dispenser) { + price = 0; + } + return [2 /*return*/]; + } + }); + }); }); + it('should register an asset', function () { return __awaiter(void 0, void 0, void 0, function () { + var _a, _b, _c, _d, _e, _f, _g, _h; + return __generator(this, function (_j) { + switch (_j.label) { + case 0: + _b = (_a = chai_1.assert).instanceOf; + return [4 /*yield*/, ocean.assets.create(metadataGenerator('Test1'), publisher)]; + case 1: + _b.apply(_a, [_j.sent(), + src_1.DDO]); + _d = (_c = chai_1.assert).instanceOf; + return [4 /*yield*/, ocean.assets.create(metadataGenerator('Test2'), publisher)]; + case 2: + _d.apply(_c, [_j.sent(), + src_1.DDO]); + _f = (_e = chai_1.assert).instanceOf; + return [4 /*yield*/, ocean.assets.create(metadataGenerator('Test2'), publisher)]; + case 3: + _f.apply(_e, [_j.sent(), + src_1.DDO]); + _h = (_g = chai_1.assert).instanceOf; + return [4 /*yield*/, ocean.assets.create(metadataGenerator('Test3'), publisher)]; + case 4: + _h.apply(_g, [_j.sent(), + src_1.DDO]); + return [2 /*return*/]; + } + }); + }); }); + it('should search by text and see the increment of DDOs', function () { return __awaiter(void 0, void 0, void 0, function () { + var _a, _b, _c, _d; + return __generator(this, function (_e) { + switch (_e.label) { + case 0: + _b = (_a = chai_1.assert).equal; + return [4 /*yield*/, ocean.assets.search("Test2" + testHash)]; + case 1: + _b.apply(_a, [(_e.sent()).results.length - test2length, + 2, + 'Something was wrong searching the assets']); + _d = (_c = chai_1.assert).equal; + return [4 /*yield*/, ocean.assets.search("Test3" + testHash)]; + case 2: + _d.apply(_c, [(_e.sent()).results.length - test3length, + 1, + 'Something was wrong searching the assets']); + return [2 /*return*/]; + } + }); + }); }); + it('should return a list of DDOs', function () { return __awaiter(void 0, void 0, void 0, function () { + var ddos; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, ocean.assets.search("Test1" + testHash)]; + case 1: + ddos = (_a.sent()).results; + chai_1.assert.equal(ddos.length - test1length, 1, 'Something was wrong searching the assets'); + ddos.map(function (ddo) { + return chai_1.assert.instanceOf(ddo, src_1.DDO, 'The DDO is not an instance of a DDO'); + }); + return [2 /*return*/]; + } + }); + }); }); + it('should be able to do a query to get a list of DDOs', function () { return __awaiter(void 0, void 0, void 0, function () { + var ddos; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, ocean.assets.query({ + page: 1, + offset: 1, + query: { + text: ["Test2" + testHash] + }, + sort: { + text: 1 + } + })]; + case 1: + ddos = (_a.sent()).results; + chai_1.assert.equal(ddos.length, 1, 'Something was wrong searching the assets'); + ddos.map(function (ddo) { + return chai_1.assert.instanceOf(ddo, src_1.DDO, 'The DDO is not an instance of a DDO'); + }); + return [2 /*return*/]; + } + }); + }); }); +}); diff --git a/integration/ocean/SecretStore.test.js b/integration/ocean/SecretStore.test.js new file mode 100644 index 0000000..9fd271c --- /dev/null +++ b/integration/ocean/SecretStore.test.js @@ -0,0 +1,75 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +exports.__esModule = true; +var chai_1 = require("chai"); +var config_1 = require("../config"); +var src_1 = require("../../src"); // @oceanprotocol/squid +describe('Secret Store', function () { + var ocean; + var account; + var did = src_1.DID.generate(); + var content = { content: 'Test 123' }; + var encryptedContent; + before(function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, src_1.Ocean.getInstance(config_1.config) + // Accounts + ]; + case 1: + ocean = _a.sent(); + return [4 /*yield*/, ocean.accounts.list()]; + case 2: + account = (_a.sent())[0]; + return [2 /*return*/]; + } + }); + }); }); + it('should encrypt a text', function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, ocean.secretStore.encrypt(did.getId(), content, account)]; + case 1: + encryptedContent = _a.sent(); + chai_1.assert.isDefined(encryptedContent); + chai_1.assert.match(encryptedContent, /^0x[a-f0-9]{76}$/i); + return [2 /*return*/]; + } + }); + }); }); +}); diff --git a/integration/ocean/Signature.test.js b/integration/ocean/Signature.test.js new file mode 100644 index 0000000..c89066c --- /dev/null +++ b/integration/ocean/Signature.test.js @@ -0,0 +1,115 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +exports.__esModule = true; +var chai_1 = require("chai"); +var config_1 = require("../config"); +var src_1 = require("../../src"); // @oceanprotocol/squid +// WARN: not integration test. It has been done here because constant values +// depends on the first account on spree (only accessible from integration test) +describe('Signature', function () { + var ocean; + var consumer; + before(function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, src_1.Ocean.getInstance(config_1.config) + // Accounts + ]; + case 1: + ocean = _a.sent(); + return [4 /*yield*/, ocean.accounts.list()]; + case 2: + consumer = (_a.sent())[0]; + return [2 /*return*/]; + } + }); + }); }); + it('hashServiceAgreement should generate the correct signature', function () { + var templateId = "0x" + 'f'.repeat(40); + var agreementId = "0x" + 'e'.repeat(64); + var accessId = "0x" + 'a'.repeat(64); + var lockId = "0x" + 'b'.repeat(64); + var escrowId = "0x" + 'c'.repeat(64); + var hash = ocean.utils.agreements.hashServiceAgreement(templateId, agreementId, [lockId, accessId, escrowId], [0, 0, 0], [0, 0, 0]); + chai_1.assert.equal(hash, '0x67901517c18a3d23e05806fff7f04235cc8ae3b1f82345b8bfb3e4b02b5800c7', 'The signature is not correct.'); + }); + it('signServiceAgreement should generate the correct signature', function () { return __awaiter(void 0, void 0, void 0, function () { + var templates, did, templateId, agreementId, serviceAgreementTemplate, ddo, signature; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + templates = ocean.keeper.templates; + did = "did:op:" + 'c'.repeat(64); + templateId = "0x" + 'f'.repeat(40); + agreementId = "0x" + 'e'.repeat(64); + return [4 /*yield*/, templates.escrowAccessSecretStoreTemplate.getServiceAgreementTemplate()]; + case 1: + serviceAgreementTemplate = _a.sent(); + ddo = new src_1.DDO({ + id: did, + service: [ + { + type: 'access', + index: 0, + purchaseEndpoint: undefined, + serviceEndpoint: undefined, + templateId: templateId, + attributes: { + serviceAgreementTemplate: serviceAgreementTemplate + } + }, + { + type: 'metadata', + index: 1, + attributes: { + main: { + price: 10 + } + } + } + ] + }); + return [4 /*yield*/, ocean.utils.agreements.signServiceAgreement(ddo, 0, agreementId, ["0x" + '1'.repeat(64), "0x" + '2'.repeat(64), "0x" + '3'.repeat(64)], consumer)]; + case 2: + signature = _a.sent(); + chai_1.assert.equal(signature, '0x3aa8a1c48b8e582d694bbd4ba3a29fde573b78da9720dc48baeb831b2163e1fa6e10e983882ebf8a00f4124de2505136354fd146934053f0d58bba4eced5f8d01b', 'The signature is not correct.'); + return [2 /*return*/]; + } + }); + }); }); +}); diff --git a/integration/ocean/Signature.test.ts b/integration/ocean/Signature.test.ts index a67fe1b..4ca285a 100644 --- a/integration/ocean/Signature.test.ts +++ b/integration/ocean/Signature.test.ts @@ -28,7 +28,7 @@ describe('Signature', () => { const hash = ocean.utils.agreements.hashServiceAgreement( templateId, agreementId, - [accessId, lockId, escrowId], + [lockId, accessId, escrowId], [0, 0, 0], [0, 0, 0] ) diff --git a/integration/ocean/Versions.test.js b/integration/ocean/Versions.test.js new file mode 100644 index 0000000..b9b6073 --- /dev/null +++ b/integration/ocean/Versions.test.js @@ -0,0 +1,74 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +exports.__esModule = true; +var chai_1 = require("chai"); +var config_1 = require("../config"); +var src_1 = require("../../src"); // @oceanprotocol/squid +describe('Versions', function () { + var ocean; + before(function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, src_1.Ocean.getInstance(config_1.config)]; + case 1: + ocean = _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + // TODO: enable again after new versions of Brizo + xit('should return the versions', function () { return __awaiter(void 0, void 0, void 0, function () { + var versions; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, ocean.versions.get()]; + case 1: + versions = _a.sent(); + chai_1.assert.equal(versions.aquarius.status, src_1.OceanPlatformTechStatus.Working); + chai_1.assert.equal(versions.brizo.status, src_1.OceanPlatformTechStatus.Working); + chai_1.assert.equal(versions.squid.status, src_1.OceanPlatformTechStatus.Working); + chai_1.assert.deepEqual(versions.status, { + ok: true, + contracts: true, + network: true + }); + return [2 /*return*/]; + } + }); + }); }); +}); diff --git a/integration/utils/ddo-metadata-generator.js b/integration/utils/ddo-metadata-generator.js new file mode 100644 index 0000000..178e06c --- /dev/null +++ b/integration/utils/ddo-metadata-generator.js @@ -0,0 +1,58 @@ +"use strict"; +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +exports.__esModule = true; +var metadata = { + main: { + name: undefined, + type: 'dataset', + dateCreated: '2012-10-10T17:00:00Z', + datePublished: '2012-10-10T17:00:00Z', + author: 'Met Office', + license: 'CC-BY', + price: '21' + '0'.repeat(18), + files: [ + { + index: 0, + contentType: 'application/json', + url: 'https://raw.githubusercontent.com/oceanprotocol/squid-js/master/package.json' + }, + { + index: 1, + contentType: 'text/plain', + url: 'https://raw.githubusercontent.com/oceanprotocol/squid-js/master/README.md' + } + ] + }, + additionalInformation: { + description: 'Weather information of UK including temperature and humidity', + copyrightHolder: 'Met Office', + workExample: '423432fsd,51.509865,-0.118092,2011-01-01T10:55:11+00:00,7.2,68', + links: [ + { + name: 'Sample of Asset Data', + type: 'sample', + url: 'https://foo.com/sample.csv' + }, + { + name: 'Data Format Definition', + type: 'format', + url: 'https://foo.com/sample.csv' + } + ], + inLanguage: 'en', + categories: ['Economy', 'Data Science'], + tags: ['weather', 'uk', '2011', 'temperature', 'humidity'] + } +}; +exports.generateMetadata = function (name, price) { return (__assign(__assign({}, metadata), { main: __assign(__assign({}, metadata.main), { name: name, price: (price || 21) + '0'.repeat(18) }), additionalInformation: __assign({}, metadata.additionalInformation) })); }; +exports.getMetadata = function (price) { return exports.generateMetadata('TestAsset', price); }; diff --git a/integration/utils/index.js b/integration/utils/index.js new file mode 100644 index 0000000..e10379b --- /dev/null +++ b/integration/utils/index.js @@ -0,0 +1,6 @@ +"use strict"; +function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; +} +exports.__esModule = true; +__export(require("./ddo-metadata-generator")); diff --git a/src/keeper/Keeper.ts b/src/keeper/Keeper.ts index 0fd4954..247744c 100644 --- a/src/keeper/Keeper.ts +++ b/src/keeper/Keeper.ts @@ -93,13 +93,6 @@ export class Keeper extends Instantiable { accessSecretStoreCondition: keeper.instances.accessSecretStoreCondition, computeExecutionCondition: keeper.instances.computeExecutionCondition } - // Conditions - keeper.templates = { - escrowAccessSecretStoreTemplate: - keeper.instances.escrowAccessSecretStoreTemplate, - escrowComputeExecutionTemplate: - keeper.instances.escrowComputeExecutionTemplate - } // Templates keeper.instances.escrowAccessSecretStoreTemplate = new EscrowAccessSecretStoreTemplate( keeper.instances.templateStoreManager, @@ -113,6 +106,13 @@ export class Keeper extends Instantiable { keeper.instances.didRegistry, keeper.instances.conditions ) + // Conditions + keeper.templates = { + escrowAccessSecretStoreTemplate: + keeper.instances.escrowAccessSecretStoreTemplate, + escrowComputeExecutionTemplate: + keeper.instances.escrowComputeExecutionTemplate + } // Utils keeper.utils = { eventHandler: new EventHandler(config) diff --git a/src/keeper/contracts/managers/TemplateStoreManager.ts b/src/keeper/contracts/managers/TemplateStoreManager.ts index 3bd82f2..5b19026 100644 --- a/src/keeper/contracts/managers/TemplateStoreManager.ts +++ b/src/keeper/contracts/managers/TemplateStoreManager.ts @@ -30,9 +30,9 @@ export class TemplateStoreManager extends ContractBase { } public generateId(templateName: string) { - const args: any = [ + const args: any = [ { type: 'string', value: templateName }, - ] + ] return this.web3.utils.soliditySha3(...args) } diff --git a/src/keeper/contracts/templates/AgreementTemplateBase.ts b/src/keeper/contracts/templates/AgreementTemplateBase.ts index 2d8d32e..4777ded 100644 --- a/src/keeper/contracts/templates/AgreementTemplateBase.ts +++ b/src/keeper/contracts/templates/AgreementTemplateBase.ts @@ -77,13 +77,12 @@ export class AgreementTemplateBase { consumer: string, from?: string ) { - const conditionIds = await this.createFullAgreementData( + return await this.createFullAgreementData( agreementId, ddo.shortId(), ddo.findServiceByType('metadata').attributes.main.price, consumer ) - return conditionIds } public getId() { @@ -94,7 +93,9 @@ export class AgreementTemplateBase { * Create a agreement using EscrowAccessSecretStoreTemplate using only the most important information. * @param {string} did Asset DID. * @param {number} amount Asset price. + * @param {string} consumer ethereum address of consumer. * @param {string} from Consumer address. + * @param {string} agreementId bytes32 agreement id. * * @return {Promise} Agreement ID. */ diff --git a/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts b/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts index 072f269..4665266 100644 --- a/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts +++ b/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts @@ -2,7 +2,7 @@ import { AgreementTemplateBase } from './AgreementTemplateBase' import { escrowAccessServiceAgreementTemplate } from './EscrowAccess.serviceAgreementTemplate' export class EscrowAccessSecretStoreTemplate extends AgreementTemplateBase { - public static templateName: 'EscrowAccessSecretStoreTemplate' + public templateName: 'EscrowAccessSecretStoreTemplate' public async getServiceAgreementTemplate() { return escrowAccessServiceAgreementTemplate diff --git a/src/keeper/contracts/templates/EscrowComputeExecutionTemplate.ts b/src/keeper/contracts/templates/EscrowComputeExecutionTemplate.ts index 6636ad9..d41ef44 100644 --- a/src/keeper/contracts/templates/EscrowComputeExecutionTemplate.ts +++ b/src/keeper/contracts/templates/EscrowComputeExecutionTemplate.ts @@ -2,7 +2,7 @@ import { AgreementTemplateBase } from './AgreementTemplateBase' import { escrowComputeServiceAgreementTemplate } from './EscrowCompute.serviceAgreementTemplate' export class EscrowComputeExecutionTemplate extends AgreementTemplateBase { - public static templateName: 'EscrowComputeExecutionTemplate' + public templateName: 'EscrowComputeExecutionTemplate' public async getServiceAgreementTemplate() { return escrowComputeServiceAgreementTemplate diff --git a/test/keeper/TestContractHandler.ts b/test/keeper/TestContractHandler.ts index edf73c9..5272d47 100644 --- a/test/keeper/TestContractHandler.ts +++ b/test/keeper/TestContractHandler.ts @@ -89,7 +89,7 @@ export default class TestContractHandler extends ContractHandler { ) // Conditions - const lockRewardCondition = await TestContractHandler.deployContract( + await TestContractHandler.deployContract( 'LockRewardCondition', deployerAddress, [ @@ -98,7 +98,7 @@ export default class TestContractHandler extends ContractHandler { token.options.address ] ) - const accessSecretStoreCondition = await TestContractHandler.deployContract( + await TestContractHandler.deployContract( 'AccessSecretStoreCondition', deployerAddress, [ @@ -109,7 +109,7 @@ export default class TestContractHandler extends ContractHandler { ) // Conditions rewards - const escrowReward = await TestContractHandler.deployContract( + await TestContractHandler.deployContract( 'EscrowReward', deployerAddress, [ @@ -119,19 +119,6 @@ export default class TestContractHandler extends ContractHandler { ] ) - // Templates - await TestContractHandler.deployContract( - 'EscrowAccessSecretStoreTemplate', - deployerAddress, - [ - deployerAddress, - agreementStoreManager.options.address, - didRegistry.options.address, - accessSecretStoreCondition.options.address, - lockRewardCondition.options.address, - escrowReward.options.address - ] - ) } private static async deployContract( diff --git a/test/keeper/templates/EscrowAccessSecretStoreTemplate.test.ts b/test/keeper/templates/EscrowAccessSecretStoreTemplate.test.ts deleted file mode 100644 index 1518423..0000000 --- a/test/keeper/templates/EscrowAccessSecretStoreTemplate.test.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { assert } from 'chai' -import { EscrowAccessSecretStoreTemplate } from '../../../src/keeper/contracts/templates' -import config from '../../config' -import TestContractHandler from '../TestContractHandler' -import { Ocean } from '../../../src/ocean/Ocean' - -let condition: EscrowAccessSecretStoreTemplate - -describe('EscrowAccessSecretStoreTemplate', () => { - before(async () => { - const ocean: Ocean = await Ocean.getInstance(config) - await TestContractHandler.prepareContracts() - condition = ocean.keeper.templates.escrowAccessSecretStoreTemplate - }) - - // describe("#hashValues()", () => { - // it("should hash the values", async () => { - // const address = `0x${"a".repeat(40)}` - // const hash = await condition.hashValues(address, 15) - - // assert.match(hash, /^0x[a-f0-9]{64}$/i) - // }) - // }) -}) From 7b5b110cec16c4575c0e2168db0ea913dd40376c Mon Sep 17 00:00:00 2001 From: ssallam Date: Fri, 17 Jan 2020 16:39:44 +0100 Subject: [PATCH 17/29] Fix lint errors. --- src/keeper/Keeper.ts | 2 +- .../managers/AgreementStoreManager.ts | 1 - .../managers/TemplateStoreManager.ts | 19 ++++----- .../templates/AgreementTemplateBase.ts | 39 ++++++++++++------- .../EscrowAccessSecretStoreTemplate.ts | 8 +--- .../EscrowComputeExecutionTemplate.ts | 7 +--- test/keeper/TestContractHandler.ts | 10 ++--- 7 files changed, 39 insertions(+), 47 deletions(-) diff --git a/src/keeper/Keeper.ts b/src/keeper/Keeper.ts index 247744c..e1e37e5 100644 --- a/src/keeper/Keeper.ts +++ b/src/keeper/Keeper.ts @@ -24,7 +24,7 @@ import { objectPromiseAll } from '../utils' import { EventHandler } from './EventHandler' import { Instantiable, InstantiableConfig } from '../Instantiable.abstract' -import { AgreementTemplateBase } from "./contracts/templates/AgreementTemplateBase"; +import { AgreementTemplateBase } from './contracts/templates/AgreementTemplateBase' /** * Interface with Ocean Keeper contracts. diff --git a/src/keeper/contracts/managers/AgreementStoreManager.ts b/src/keeper/contracts/managers/AgreementStoreManager.ts index 948e70c..2ee321f 100644 --- a/src/keeper/contracts/managers/AgreementStoreManager.ts +++ b/src/keeper/contracts/managers/AgreementStoreManager.ts @@ -93,5 +93,4 @@ export class AgreementStoreManager extends ContractBase { agreementId: zeroX(agreementId) }) } - } diff --git a/src/keeper/contracts/managers/TemplateStoreManager.ts b/src/keeper/contracts/managers/TemplateStoreManager.ts index 5b19026..9efbea2 100644 --- a/src/keeper/contracts/managers/TemplateStoreManager.ts +++ b/src/keeper/contracts/managers/TemplateStoreManager.ts @@ -30,10 +30,7 @@ export class TemplateStoreManager extends ContractBase { } public generateId(templateName: string) { - const args: any = [ - { type: 'string', value: templateName }, - ] - + const args: any = [{ type: 'string', value: templateName }] return this.web3.utils.soliditySha3(...args) } @@ -41,7 +38,11 @@ export class TemplateStoreManager extends ContractBase { return this.call('owner', []) } - public async proposeTemplate(templateId: string, from?: string, ignoreExists?: boolean) { + public async proposeTemplate( + templateId: string, + from?: string, + ignoreExists?: boolean + ) { const template = await this.getTemplate(templateId) if (template.blockNumberUpdated !== 0) { this.logger.warn(`Template "${templateId}" already exist.`) @@ -73,7 +74,7 @@ export class TemplateStoreManager extends ContractBase { return this.sendFrom('revokeTemplate', [zeroX(templateId)], from) } - public async getConditionTypes(templateId: string): Promise { + public async getConditionTypes(templateId: string): Promise { const { conditionTypes } = await this.getTemplate(templateId) return conditionTypes } @@ -85,10 +86,7 @@ export class TemplateStoreManager extends ContractBase { } public async getActorTypeValue(actorTypeId: string) { - const typeValue = await this.call( - "getTemplateActorTypeValue", - [actorTypeId] - ) + const typeValue = await this.call('getTemplateActorTypeValue', [actorTypeId]) return typeValue } @@ -108,7 +106,6 @@ export class TemplateStoreManager extends ContractBase { blockNumberUpdated: +blockNumberUpdated, conditionTypes, actorTypeIds - } as TemplateMetadata } } diff --git a/src/keeper/contracts/templates/AgreementTemplateBase.ts b/src/keeper/contracts/templates/AgreementTemplateBase.ts index 4777ded..6203fe7 100644 --- a/src/keeper/contracts/templates/AgreementTemplateBase.ts +++ b/src/keeper/contracts/templates/AgreementTemplateBase.ts @@ -1,14 +1,21 @@ -import { escrowAccessServiceAgreementTemplate } from './EscrowAccess.serviceAgreementTemplate' -import {TemplateStoreManager, AgreementStoreManager, ConditionStoreManager} from '../managers' +import { + TemplateStoreManager, + AgreementStoreManager, + ConditionStoreManager +} from '../managers' import DIDRegistry from '../DIDRegistry' import { LockRewardCondition } from '../conditions/LockRewardCondition' import { AccessSecretStoreCondition } from '../conditions/AccessSecretStoreCondition' import { EscrowReward } from '../conditions/EscrowReward' import { DDO } from '../../../ddo/DDO' -import {generateId, LoggerInstance, Logger, zeroX} from '../../../utils' - -import {ComputeExecutionCondition, Condition, ConditionState, conditionStateNames} from '../conditions' +import { generateId, LoggerInstance, Logger, zeroX } from '../../../utils' +import { + ComputeExecutionCondition, + Condition, + ConditionState, + conditionStateNames +} from '../conditions' export interface Conditions { lockRewardCondition: LockRewardCondition @@ -17,7 +24,6 @@ export interface Conditions { escrowReward: EscrowReward } - export interface AgreementConditionsStatus { [condition: string]: { condition: string @@ -28,7 +34,6 @@ export interface AgreementConditionsStatus { } } - export class AgreementTemplateBase { public templateName: string @@ -77,7 +82,7 @@ export class AgreementTemplateBase { consumer: string, from?: string ) { - return await this.createFullAgreementData( + return this.createFullAgreementData( agreementId, ddo.shortId(), ddo.findServiceByType('metadata').attributes.main.price, @@ -145,7 +150,7 @@ export class AgreementTemplateBase { * @return {Promise} Conditions address. */ public async getConditionTypes(): Promise { - return await this.templateManager.getConditionTypes(this.getId()) + return this.templateManager.getConditionTypes(this.getId()) } /** @@ -186,12 +191,13 @@ export class AgreementTemplateBase { * @return {Promise} Conditions status. */ public async getAgreementStatus( - agreementId: string, conditionStoreManager: ConditionStoreManager + agreementId: string, + conditionStoreManager: ConditionStoreManager ): Promise { - const dependencies = await this.getServiceAgreementTemplateDependencies() - const { conditionIds } = await this.agreementStoreManager.getAgreement(agreementId) - + const { conditionIds } = await this.agreementStoreManager.getAgreement( + agreementId + ) if (!conditionIds.length) { // this.logger.error(`Agreement not creeated yet: "${agreementId}"`) return false @@ -241,9 +247,12 @@ export class AgreementTemplateBase { /** * Prints the agreement status. * @param {string} agreementId Agreement ID. - * @param {ConditionStoreManager} conditionStoreManager + * @param {ConditionStoreManager} conditionStoreManager */ - public async printAgreementStatus(agreementId: string, conditionStoreManager: ConditionStoreManager) { + public async printAgreementStatus( + agreementId: string, + conditionStoreManager: ConditionStoreManager + ) { const status = await this.getAgreementStatus(agreementId, conditionStoreManager) this.logger.bypass('-'.repeat(80)) diff --git a/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts b/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts index 4665266..6acb7b5 100644 --- a/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts +++ b/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts @@ -21,7 +21,6 @@ export class EscrowAccessSecretStoreTemplate extends AgreementTemplateBase { } = this.conditions const publisher = await this.didRegistry.getDIDOwner(did) - const lockRewardConditionId = await lockRewardCondition.generateIdHash( agreementId, await escrowReward.getAddress(), @@ -40,11 +39,6 @@ export class EscrowAccessSecretStoreTemplate extends AgreementTemplateBase { lockRewardConditionId, accessSecretStoreConditionId ) - - return [ - lockRewardConditionId, - accessSecretStoreConditionId, - escrowRewardId - ] + return [lockRewardConditionId, accessSecretStoreConditionId, escrowRewardId] } } diff --git a/src/keeper/contracts/templates/EscrowComputeExecutionTemplate.ts b/src/keeper/contracts/templates/EscrowComputeExecutionTemplate.ts index d41ef44..5a82ea4 100644 --- a/src/keeper/contracts/templates/EscrowComputeExecutionTemplate.ts +++ b/src/keeper/contracts/templates/EscrowComputeExecutionTemplate.ts @@ -40,11 +40,6 @@ export class EscrowComputeExecutionTemplate extends AgreementTemplateBase { lockRewardConditionId, computeExecutionConditionId ) - - return [ - lockRewardConditionId, - computeExecutionConditionId, - escrowRewardId - ] + return [lockRewardConditionId, computeExecutionConditionId, escrowRewardId] } } diff --git a/test/keeper/TestContractHandler.ts b/test/keeper/TestContractHandler.ts index 5272d47..5487204 100644 --- a/test/keeper/TestContractHandler.ts +++ b/test/keeper/TestContractHandler.ts @@ -87,9 +87,8 @@ export default class TestContractHandler extends ContractHandler { didRegistry.options.address ] ) - // Conditions - await TestContractHandler.deployContract( + const lockCondition = await TestContractHandler.deployContract( 'LockRewardCondition', deployerAddress, [ @@ -98,7 +97,7 @@ export default class TestContractHandler extends ContractHandler { token.options.address ] ) - await TestContractHandler.deployContract( + const accessCondition = await TestContractHandler.deployContract( 'AccessSecretStoreCondition', deployerAddress, [ @@ -107,9 +106,8 @@ export default class TestContractHandler extends ContractHandler { agreementStoreManager.options.address ] ) - // Conditions rewards - await TestContractHandler.deployContract( + const escrowCondition = await TestContractHandler.deployContract( 'EscrowReward', deployerAddress, [ @@ -118,7 +116,7 @@ export default class TestContractHandler extends ContractHandler { token.options.address ] ) - + Logger.log(lockCondition, accessCondition, escrowCondition) } private static async deployContract( From b7d9c1bc2b3233826b01ea03b724cfda585cfd40 Mon Sep 17 00:00:00 2001 From: ssallam Date: Fri, 17 Jan 2020 16:51:46 +0100 Subject: [PATCH 18/29] Fix build. --- src/keeper/contracts/templates/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/keeper/contracts/templates/index.ts b/src/keeper/contracts/templates/index.ts index 3aa871d..ea6d954 100644 --- a/src/keeper/contracts/templates/index.ts +++ b/src/keeper/contracts/templates/index.ts @@ -1,4 +1,3 @@ export * from './AgreementTemplateBase' -export { BaseEscrowTemplate } from './BaseEscrowTemplate.abstract' export { EscrowAccessSecretStoreTemplate } from './EscrowAccessSecretStoreTemplate' export { EscrowComputeExecutionTemplate } from './EscrowComputeExecutionTemplate' From 1caf92e12f3000f255faec44cf3a8e47cce87a64 Mon Sep 17 00:00:00 2001 From: ssallam Date: Fri, 17 Jan 2020 21:20:38 +0100 Subject: [PATCH 19/29] Remove obsolete class, remove unused variable. --- .../templates/AgreementTemplate.abstract.ts | 203 ------------------ test/ddo/DDO.test.ts | 3 - 2 files changed, 206 deletions(-) delete mode 100644 src/keeper/contracts/templates/AgreementTemplate.abstract.ts diff --git a/src/keeper/contracts/templates/AgreementTemplate.abstract.ts b/src/keeper/contracts/templates/AgreementTemplate.abstract.ts deleted file mode 100644 index 2a2407f..0000000 --- a/src/keeper/contracts/templates/AgreementTemplate.abstract.ts +++ /dev/null @@ -1,203 +0,0 @@ -import ContractBase from '../ContractBase' -import { - Condition, - ConditionState, - conditionStateNames -} from '../conditions/Condition.abstract' -import { DDO } from '../../../ddo/DDO' -import { ServiceAgreementTemplate } from '../../../ddo/ServiceAgreementTemplate' -import { zeroX } from '../../../utils' -import { InstantiableConfig } from '../../../Instantiable.abstract' - -export interface AgreementConditionsStatus { - [condition: string]: { - condition: string - contractName: string - state: ConditionState - blocked: boolean - blockedBy: string[] - } -} - -export abstract class AgreementTemplate extends ContractBase { - public static async getInstance( - config: InstantiableConfig, - conditionName: string, - templateClass: any - ): Promise { - const condition: AgreementTemplate = new (templateClass as any)(conditionName) - await condition.init(config) - return condition - } - - protected constructor(contractName: string) { - super(contractName) - } - - /** - * Conditions address list. - * @return {Promise} Conditions address. - */ - public getConditionTypes(): Promise { - return this.call('getConditionTypes', []) - } - - /** - * List of condition contracts. - * @return {Promise} Conditions contracts. - */ - public async getConditions(): Promise { - return (await this.getConditionTypes()).map(address => - this.ocean.keeper.getConditionByAddress(address) - ) - } - - /** - * Get agreement conditions IDs. - * @param {string} agreementId Agreement ID. - * @param {DDO} ddo DDO. - * @param {string} from Consumer address. - * @return {Promise} Condition IDs. - */ - public abstract getConditionIdsFromDDO( - agreementId: string, - ddo: DDO, - consumer: string, - from?: string - ): Promise - - /** - * Create a new agreement using the data of a DDO. - * @param {string} agreementId Agreement ID. - * @param {DDO} ddo DDO. - * @param {string} from Creator address. - * @return {Promise} Success. - */ - public abstract createAgreementFromDDO( - agreementId: string, - ddo: DDO, - consumer: string, - from?: string - ): Promise - - public abstract async getServiceAgreementTemplate(): Promise - - public async getServiceAgreementTemplateConditions() { - const serviceAgreementTemplate = await this.getServiceAgreementTemplate() - return serviceAgreementTemplate.conditions - } - - public async getServiceAgreementTemplateConditionByRef(ref: string) { - const name = (await this.getServiceAgreementTemplateConditions()).find( - ({ name: conditionRef }) => conditionRef === ref - ).contractName - return (await this.getConditions()).find( - condition => condition.contractName === name - ) - } - - public async getServiceAgreementTemplateDependencies() { - const serviceAgreementTemplate = await this.getServiceAgreementTemplate() - return serviceAgreementTemplate.conditionDependency - } - - /** - * Returns the status of the conditions. - * @param {string} agreementId Agreement ID. - * @return {Promise} Conditions status. - */ - public async getAgreementStatus( - agreementId: string - ): Promise { - const agreementStore = this.ocean.keeper.agreementStoreManager - const conditionStore = this.ocean.keeper.conditionStoreManager - - const dependencies = await this.getServiceAgreementTemplateDependencies() - const { conditionIds } = await agreementStore.getAgreement(agreementId) - - if (!conditionIds.length) { - this.logger.error(`Agreement not creeated yet: "${agreementId}"`) - return false - } - - const conditionIdByConddition = (await this.getConditions()).reduce( - (acc, { contractName }, i) => ({ - ...acc, - [contractName]: conditionIds[i] - }), - {} - ) - - const statesPromises = Object.keys(dependencies).map(async (ref, i) => { - const { contractName } = await this.getServiceAgreementTemplateConditionByRef( - ref - ) - return { - ref, - contractName, - state: ( - await conditionStore.getCondition( - conditionIdByConddition[contractName] - ) - ).state - } - }) - const states = await Promise.all(statesPromises) - - return states.reduce((acc, { contractName, ref, state }) => { - const blockers = dependencies[ref] - .map(dependency => states.find(_ => _.ref === dependency)) - .filter(condition => condition.state !== ConditionState.Fulfilled) - return { - ...acc, - [ref]: { - condition: ref, - contractName, - state, - blocked: !!blockers.length, - blockedBy: blockers.map(_ => _.ref) - } - } - }, {}) - } - - /** - * Prints the agreement status. - * @param {string} agreementId Agreement ID. - */ - public async printAgreementStatus(agreementId: string) { - const status = await this.getAgreementStatus(agreementId) - - this.logger.bypass('-'.repeat(80)) - this.logger.bypass('Template:', this.contractName) - this.logger.bypass('Agreement ID:', agreementId) - this.logger.bypass('-'.repeat(40)) - if (!status) { - this.logger.bypass('Agreement not created yet!') - } - Object.values(status || []).forEach( - ({ condition, contractName, state, blocked, blockedBy }, i) => { - if (i) { - this.logger.bypass('-'.repeat(20)) - } - this.logger.bypass(`${condition} (${contractName})`) - this.logger.bypass(' Status:', state, `(${conditionStateNames[state]})`) - if (blocked) { - this.logger.bypass(' Blocked by:', blockedBy) - } - } - ) - this.logger.bypass('-'.repeat(80)) - } - - /** - * Generates and returns the agreement creation event. - * @param {string} agreementId Agreement ID. - * @return {Event} Agreement created event. - */ - public getAgreementCreatedEvent(agreementId: string) { - return this.getEvent('AgreementCreated', { - agreementId: zeroX(agreementId) - }) - } -} diff --git a/test/ddo/DDO.test.ts b/test/ddo/DDO.test.ts index c46afb3..3747834 100644 --- a/test/ddo/DDO.test.ts +++ b/test/ddo/DDO.test.ts @@ -1,6 +1,5 @@ import { assert, expect, spy, use } from 'chai' import spies from 'chai-spies' -import Web3 from 'web3' import { DDO } from '../../src/ddo/DDO' import { Service } from '../../src/ddo/Service' @@ -164,13 +163,11 @@ describe('DDO', () => { ] }) - let web3: Web3 let ocean: Ocean beforeEach(async () => { await TestContractHandler.prepareContracts() ocean = await Ocean.getInstance(config) - ;({ web3 } = ocean as any) }) afterEach(() => { From 6c25ec5bbdab5ef3e7aac2fbff12d10d49ee156b Mon Sep 17 00:00:00 2001 From: ssallam Date: Fri, 17 Jan 2020 22:24:37 +0100 Subject: [PATCH 20/29] Fix inheritance issue. --- .../contracts/templates/AgreementTemplateBase.ts | 8 ++++++-- .../templates/EscrowAccessSecretStoreTemplate.ts | 15 +++++++++++++-- .../templates/EscrowComputeExecutionTemplate.ts | 15 +++++++++++++-- 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/src/keeper/contracts/templates/AgreementTemplateBase.ts b/src/keeper/contracts/templates/AgreementTemplateBase.ts index 6203fe7..b8b2683 100644 --- a/src/keeper/contracts/templates/AgreementTemplateBase.ts +++ b/src/keeper/contracts/templates/AgreementTemplateBase.ts @@ -59,6 +59,7 @@ export class AgreementTemplateBase { this.conditions = conditions this.logger = LoggerInstance + this.templateName = 'invalid' } public async createAgreementFromDDO( @@ -90,8 +91,12 @@ export class AgreementTemplateBase { ) } + public getName() { + return this.templateName + } + public getId() { - return this.templateManager.generateId(this.templateName) + return this.templateManager.generateId(this.getName()) } /** @@ -144,7 +149,6 @@ export class AgreementTemplateBase { return null } - // getAgreementData /** * Conditions address list. * @return {Promise} Conditions address. diff --git a/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts b/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts index 6acb7b5..bbcb6a5 100644 --- a/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts +++ b/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts @@ -1,8 +1,19 @@ -import { AgreementTemplateBase } from './AgreementTemplateBase' +import { AgreementTemplateBase, Conditions } from './AgreementTemplateBase' import { escrowAccessServiceAgreementTemplate } from './EscrowAccess.serviceAgreementTemplate' +import { AgreementStoreManager, TemplateStoreManager } from '../managers' +import DIDRegistry from '../DIDRegistry'; export class EscrowAccessSecretStoreTemplate extends AgreementTemplateBase { - public templateName: 'EscrowAccessSecretStoreTemplate' + + public constructor( + templateManager: TemplateStoreManager, + agreementStoreManager: AgreementStoreManager, + didRegistry: DIDRegistry, + conditions: Conditions + ) { + super(templateManager, agreementStoreManager, didRegistry, conditions) + this.templateName = 'EscrowAccessSecretStoreTemplate' + } public async getServiceAgreementTemplate() { return escrowAccessServiceAgreementTemplate diff --git a/src/keeper/contracts/templates/EscrowComputeExecutionTemplate.ts b/src/keeper/contracts/templates/EscrowComputeExecutionTemplate.ts index 5a82ea4..ed2585a 100644 --- a/src/keeper/contracts/templates/EscrowComputeExecutionTemplate.ts +++ b/src/keeper/contracts/templates/EscrowComputeExecutionTemplate.ts @@ -1,8 +1,19 @@ -import { AgreementTemplateBase } from './AgreementTemplateBase' +import { AgreementTemplateBase, Conditions} from './AgreementTemplateBase' import { escrowComputeServiceAgreementTemplate } from './EscrowCompute.serviceAgreementTemplate' +import { AgreementStoreManager, TemplateStoreManager } from '../managers'; +import DIDRegistry from '../DIDRegistry'; export class EscrowComputeExecutionTemplate extends AgreementTemplateBase { - public templateName: 'EscrowComputeExecutionTemplate' + + public constructor( + templateManager: TemplateStoreManager, + agreementStoreManager: AgreementStoreManager, + didRegistry: DIDRegistry, + conditions: Conditions + ) { + super(templateManager, agreementStoreManager, didRegistry, conditions) + this.templateName = 'EscrowComputeExecutionTemplate' + } public async getServiceAgreementTemplate() { return escrowComputeServiceAgreementTemplate From aae81729934196b2fd1f58aefc57a8a7dd878dc6 Mon Sep 17 00:00:00 2001 From: ssallam Date: Sun, 19 Jan 2020 10:41:12 +0100 Subject: [PATCH 21/29] Fix errors. --- src/keeper/Keeper.ts | 17 ++++++++--------- .../EscrowAccessSecretStoreTemplate.ts | 2 +- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/keeper/Keeper.ts b/src/keeper/Keeper.ts index e1e37e5..586c918 100644 --- a/src/keeper/Keeper.ts +++ b/src/keeper/Keeper.ts @@ -95,18 +95,17 @@ export class Keeper extends Instantiable { } // Templates keeper.instances.escrowAccessSecretStoreTemplate = new EscrowAccessSecretStoreTemplate( - keeper.instances.templateStoreManager, - keeper.instances.agreementStoreManager, - keeper.instances.didRegistry, - keeper.instances.conditions + keeper.templateStoreManager, + keeper.agreementStoreManager, + keeper.didRegistry, + keeper.conditions ) keeper.instances.escrowComputeExecutionTemplate = new EscrowComputeExecutionTemplate( - keeper.instances.templateStoreManager, - keeper.instances.agreementStoreManager, - keeper.instances.didRegistry, - keeper.instances.conditions + keeper.templateStoreManager, + keeper.agreementStoreManager, + keeper.didRegistry, + keeper.conditions ) - // Conditions keeper.templates = { escrowAccessSecretStoreTemplate: keeper.instances.escrowAccessSecretStoreTemplate, diff --git a/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts b/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts index bbcb6a5..ad6e1ef 100644 --- a/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts +++ b/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts @@ -1,7 +1,7 @@ import { AgreementTemplateBase, Conditions } from './AgreementTemplateBase' import { escrowAccessServiceAgreementTemplate } from './EscrowAccess.serviceAgreementTemplate' import { AgreementStoreManager, TemplateStoreManager } from '../managers' -import DIDRegistry from '../DIDRegistry'; +import DIDRegistry from '../DIDRegistry' export class EscrowAccessSecretStoreTemplate extends AgreementTemplateBase { From 9fe9422ff7ad57fa636fb12538e31dab54b0e860 Mon Sep 17 00:00:00 2001 From: ssallam Date: Mon, 20 Jan 2020 11:44:13 +0100 Subject: [PATCH 22/29] Update templateId type in agreement hash, fix signature and consumeasset tests. Update readme file regarding running integration tests. --- README.md | 2 ++ integration/ocean/ConsumeAsset.test.ts | 3 +++ integration/ocean/Signature.test.ts | 8 ++++---- src/ocean/OceanAgreements.ts | 6 ++++++ src/ocean/utils/ServiceAgreement.ts | 2 +- 5 files changed, 16 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index a038cd9..efaa051 100644 --- a/README.md +++ b/README.md @@ -160,6 +160,8 @@ export SEED_WORDS="taxi music thumb unique chat sand crew more leg another off l Once everything is up, run the integration tests: ```bash +# integration tests work with the spree network and the SEED_WORDS in previous step are required. +# Make sure to reset `ETH_PORT` to 8545 (or whatever port is used in `spree1) npm run integration ``` diff --git a/integration/ocean/ConsumeAsset.test.ts b/integration/ocean/ConsumeAsset.test.ts index 58e60cf..be85f89 100644 --- a/integration/ocean/ConsumeAsset.test.ts +++ b/integration/ocean/ConsumeAsset.test.ts @@ -97,6 +97,9 @@ describe('Consume Asset', () => { }) it('should get the agreement conditions status not fulfilled', async () => { + // Wait for the agreement event + await ocean.keeper.agreementStoreManager + .getAgreementCreatedEvent(serviceAgreementSignatureResult.agreementId).once() const status = await ocean.agreements.status( serviceAgreementSignatureResult.agreementId ) diff --git a/integration/ocean/Signature.test.ts b/integration/ocean/Signature.test.ts index 4ca285a..44828f9 100644 --- a/integration/ocean/Signature.test.ts +++ b/integration/ocean/Signature.test.ts @@ -18,7 +18,7 @@ describe('Signature', () => { }) it('hashServiceAgreement should generate the correct signature', () => { - const templateId = `0x${'f'.repeat(40)}` + const templateId = `0x${'f'.repeat(64)}` const agreementId = `0x${'e'.repeat(64)}` const accessId = `0x${'a'.repeat(64)}` @@ -35,7 +35,7 @@ describe('Signature', () => { assert.equal( hash, - '0x67901517c18a3d23e05806fff7f04235cc8ae3b1f82345b8bfb3e4b02b5800c7', + '0x464dac3b79a47f8acad54f67a0f4473249330f025c69687531e58c2e43b36437', 'The signature is not correct.' ) }) @@ -44,7 +44,7 @@ describe('Signature', () => { const { templates } = ocean.keeper const did = `did:op:${'c'.repeat(64)}` - const templateId = `0x${'f'.repeat(40)}` + const templateId = `0x${'f'.repeat(64)}` const agreementId = `0x${'e'.repeat(64)}` const serviceAgreementTemplate = await templates.escrowAccessSecretStoreTemplate.getServiceAgreementTemplate() @@ -84,7 +84,7 @@ describe('Signature', () => { assert.equal( signature, - '0x3aa8a1c48b8e582d694bbd4ba3a29fde573b78da9720dc48baeb831b2163e1fa6e10e983882ebf8a00f4124de2505136354fd146934053f0d58bba4eced5f8d01b', + '0xa04568fccdda7e1594e3e615f8d71b14733705aabe5294af0b7f46f0aedb9d5906a2caa6142ee4de10534a47c5a7083b21b2d3e9a96ac462bc0b9d25070e981e1c', 'The signature is not correct.' ) }) diff --git a/src/ocean/OceanAgreements.ts b/src/ocean/OceanAgreements.ts index c7855d7..35c7eda 100644 --- a/src/ocean/OceanAgreements.ts +++ b/src/ocean/OceanAgreements.ts @@ -149,6 +149,12 @@ export class OceanAgreements extends Instantiable { const { templateId } = await this.ocean.keeper.agreementStoreManager.getAgreement( agreementId ) + + if (templateId === `0x${'0'.repeat(64)}`) { + console.error('agreement is not found: ' + agreementId + ' ' + templateId) + return + } + const fullStatus = await this.ocean.keeper .getTemplateById(templateId) .getAgreementStatus(agreementId, this.ocean.keeper.conditionStoreManager) diff --git a/src/ocean/utils/ServiceAgreement.ts b/src/ocean/utils/ServiceAgreement.ts index 91fd685..1bab1c4 100644 --- a/src/ocean/utils/ServiceAgreement.ts +++ b/src/ocean/utils/ServiceAgreement.ts @@ -76,7 +76,7 @@ export class ServiceAgreement extends Instantiable { timeouts: number[] ): string { const args: any = [ - { type: 'address', value: zeroX(serviceAgreementTemplateId) }, + { type: 'bytes32', value: zeroX(serviceAgreementTemplateId) }, { type: 'bytes32[]', value: valueHashes.map(zeroX) }, { type: 'uint256[]', value: timelocks }, { type: 'uint256[]', value: timeouts }, From c7b41724ba4db689bd28b6d1c64890e4f15c2d9f Mon Sep 17 00:00:00 2001 From: ssallam Date: Tue, 21 Jan 2020 12:25:53 +0100 Subject: [PATCH 23/29] Add event getter to agreementstoremanager, update the signature tests. --- integration/ocean/Signature.test.js | 8 ++++---- src/keeper/contracts/managers/AgreementStoreManager.ts | 7 +++++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/integration/ocean/Signature.test.js b/integration/ocean/Signature.test.js index c89066c..4d20962 100644 --- a/integration/ocean/Signature.test.js +++ b/integration/ocean/Signature.test.js @@ -60,13 +60,13 @@ describe('Signature', function () { }); }); }); it('hashServiceAgreement should generate the correct signature', function () { - var templateId = "0x" + 'f'.repeat(40); + var templateId = "0x" + 'f'.repeat(64); var agreementId = "0x" + 'e'.repeat(64); var accessId = "0x" + 'a'.repeat(64); var lockId = "0x" + 'b'.repeat(64); var escrowId = "0x" + 'c'.repeat(64); var hash = ocean.utils.agreements.hashServiceAgreement(templateId, agreementId, [lockId, accessId, escrowId], [0, 0, 0], [0, 0, 0]); - chai_1.assert.equal(hash, '0x67901517c18a3d23e05806fff7f04235cc8ae3b1f82345b8bfb3e4b02b5800c7', 'The signature is not correct.'); + chai_1.assert.equal(hash, '0x464dac3b79a47f8acad54f67a0f4473249330f025c69687531e58c2e43b36437', 'The signature is not correct.'); }); it('signServiceAgreement should generate the correct signature', function () { return __awaiter(void 0, void 0, void 0, function () { var templates, did, templateId, agreementId, serviceAgreementTemplate, ddo, signature; @@ -75,7 +75,7 @@ describe('Signature', function () { case 0: templates = ocean.keeper.templates; did = "did:op:" + 'c'.repeat(64); - templateId = "0x" + 'f'.repeat(40); + templateId = "0x" + 'f'.repeat(64); agreementId = "0x" + 'e'.repeat(64); return [4 /*yield*/, templates.escrowAccessSecretStoreTemplate.getServiceAgreementTemplate()]; case 1: @@ -107,7 +107,7 @@ describe('Signature', function () { return [4 /*yield*/, ocean.utils.agreements.signServiceAgreement(ddo, 0, agreementId, ["0x" + '1'.repeat(64), "0x" + '2'.repeat(64), "0x" + '3'.repeat(64)], consumer)]; case 2: signature = _a.sent(); - chai_1.assert.equal(signature, '0x3aa8a1c48b8e582d694bbd4ba3a29fde573b78da9720dc48baeb831b2163e1fa6e10e983882ebf8a00f4124de2505136354fd146934053f0d58bba4eced5f8d01b', 'The signature is not correct.'); + chai_1.assert.equal(signature, '0xa04568fccdda7e1594e3e615f8d71b14733705aabe5294af0b7f46f0aedb9d5906a2caa6142ee4de10534a47c5a7083b21b2d3e9a96ac462bc0b9d25070e981e1c', 'The signature is not correct.'); return [2 /*return*/]; } }); diff --git a/src/keeper/contracts/managers/AgreementStoreManager.ts b/src/keeper/contracts/managers/AgreementStoreManager.ts index 2ee321f..d3b7971 100644 --- a/src/keeper/contracts/managers/AgreementStoreManager.ts +++ b/src/keeper/contracts/managers/AgreementStoreManager.ts @@ -93,4 +93,11 @@ export class AgreementStoreManager extends ContractBase { agreementId: zeroX(agreementId) }) } + + public getAgreementActorAddedEvent(agreementId: string) { + return this.getEvent('AgreementActorAdded', { + agreementId: zeroX(agreementId) + }) + } + } From 9edc4cd149a56af603246246db93a64c5f76f249 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Tue, 21 Jan 2020 13:06:07 +0100 Subject: [PATCH 24/29] ignore editor configs --- .gitignore | 2 + .idea/encodings.xml | 4 - .idea/inspectionProfiles/Project_Default.xml | 6 -- .idea/markdown-navigator.xml | 86 ------------------- .../markdown-navigator/profiles_settings.xml | 3 - .idea/misc.xml | 10 --- .idea/modules.xml | 8 -- .idea/squid-js.iml | 12 --- .idea/typescript-compiler.xml | 6 -- .idea/vcs.xml | 6 -- 10 files changed, 2 insertions(+), 141 deletions(-) delete mode 100644 .idea/encodings.xml delete mode 100644 .idea/inspectionProfiles/Project_Default.xml delete mode 100644 .idea/markdown-navigator.xml delete mode 100644 .idea/markdown-navigator/profiles_settings.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/squid-js.iml delete mode 100644 .idea/typescript-compiler.xml delete mode 100644 .idea/vcs.xml diff --git a/.gitignore b/.gitignore index 3151ca8..1c34094 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,5 @@ test/**/*.js src/**/*.js src/metadata\.json +.idea +.vscode \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml deleted file mode 100644 index 15a15b2..0000000 --- a/.idea/encodings.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index df7825d..0000000 --- a/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/markdown-navigator.xml b/.idea/markdown-navigator.xml deleted file mode 100644 index f2aa065..0000000 --- a/.idea/markdown-navigator.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/markdown-navigator/profiles_settings.xml b/.idea/markdown-navigator/profiles_settings.xml deleted file mode 100644 index db06266..0000000 --- a/.idea/markdown-navigator/profiles_settings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index fa2aa7b..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index c396ea6..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/squid-js.iml b/.idea/squid-js.iml deleted file mode 100644 index 1de84ce..0000000 --- a/.idea/squid-js.iml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/.idea/typescript-compiler.xml b/.idea/typescript-compiler.xml deleted file mode 100644 index 1a2fb33..0000000 --- a/.idea/typescript-compiler.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file From 7ccac889ed20b9dabe9358e4e4989eed55245d52 Mon Sep 17 00:00:00 2001 From: ssallam Date: Tue, 21 Jan 2020 13:20:49 +0100 Subject: [PATCH 25/29] Remove all .js files that were unintentionally committed. --- integration/config.js | 59 --- integration/ocean/AssetOwners.test.js | 209 ---------- integration/ocean/AuthenticationToken.test.js | 183 --------- integration/ocean/ConsumeAsset.test.js | 268 ------------- integration/ocean/ConsumeAssetBrizo.test.js | 170 -------- integration/ocean/ConsumeBigAsset.test.js | 160 -------- ...terEscrowAccessSecretStoreTemplate.test.js | 376 ------------------ ...sterEscrowComputeExecutionTemplate.test.js | 374 ----------------- integration/ocean/SearchAsset.test.js | 182 --------- integration/ocean/SecretStore.test.js | 75 ---- integration/ocean/Signature.test.js | 115 ------ integration/ocean/Versions.test.js | 74 ---- integration/utils/ddo-metadata-generator.js | 58 --- integration/utils/index.js | 6 - 14 files changed, 2309 deletions(-) delete mode 100644 integration/config.js delete mode 100644 integration/ocean/AssetOwners.test.js delete mode 100644 integration/ocean/AuthenticationToken.test.js delete mode 100644 integration/ocean/ConsumeAsset.test.js delete mode 100644 integration/ocean/ConsumeAssetBrizo.test.js delete mode 100644 integration/ocean/ConsumeBigAsset.test.js delete mode 100644 integration/ocean/RegisterEscrowAccessSecretStoreTemplate.test.js delete mode 100644 integration/ocean/RegisterEscrowComputeExecutionTemplate.test.js delete mode 100644 integration/ocean/SearchAsset.test.js delete mode 100644 integration/ocean/SecretStore.test.js delete mode 100644 integration/ocean/Signature.test.js delete mode 100644 integration/ocean/Versions.test.js delete mode 100644 integration/utils/ddo-metadata-generator.js delete mode 100644 integration/utils/index.js diff --git a/integration/config.js b/integration/config.js deleted file mode 100644 index d508aa7..0000000 --- a/integration/config.js +++ /dev/null @@ -1,59 +0,0 @@ -"use strict"; -var __assign = (this && this.__assign) || function () { - __assign = Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -exports.__esModule = true; -var hdwallet_provider_1 = __importDefault(require("@truffle/hdwallet-provider")); -var configJson = { - nodeUri: 'http://localhost:8545', - aquariusUri: 'http://aquarius:5000', - brizoUri: 'http://localhost:8030', - secretStoreUri: 'http://localhost:12001', - brizoAddress: '0x068ed00cf0441e4829d9784fcbe7b9e26d4bd8d0', - verbose: false -}; -if (process.env.NETWORK_NAME === 'pacific') { - Object.assign(configJson, { - nodeUri: 'https://pacific.oceanprotocol.com', - aquariusUri: 'https://aquarius.commons.oceanprotocol.com', - brizoUri: 'https://brizo.commons.oceanprotocol.com', - secretStoreUri: 'https://secret-store.oceanprotocol.com', - brizoAddress: '0x008c25ed3594e094db4592f4115d5fa74c4f41ea' - }); -} -if (process.env.NETWORK_NAME === 'nile') { - Object.assign(configJson, { - nodeUri: 'https://nile.dev-ocean.com', - aquariusUri: 'https://aquarius.nile.dev-ocean.com', - brizoUri: 'https://brizo.nile.dev-ocean.com', - secretStoreUri: 'https://secret-store.nile.dev-ocean.com', - brizoAddress: '0x413c9ba0a05b8a600899b41b0c62dd661e689354' - }); -} -if (process.env.NETWORK_NAME === 'duero') { - Object.assign(configJson, { - nodeUri: 'https://duero.dev-ocean.com', - aquariusUri: 'https://aquarius.duero.dev-ocean.com', - brizoUri: 'https://brizo.duero.dev-ocean.com', - secretStoreUri: 'https://secret-store.duero.dev-ocean.com', - brizoAddress: '0x9d4ed58293f71122ad6a733c1603927a150735d0' - }); -} -if (process.env.SEED_WORDS) { - var seedphrase = process.env.SEED_WORDS; - // @ts-ignore - configJson.web3Provider = new hdwallet_provider_1["default"](seedphrase, configJson.nodeUri, 0, 5); -} -exports.config = configJson; -exports.config.forceVerbose = __assign(__assign({}, configJson), { verbose: true }); diff --git a/integration/ocean/AssetOwners.test.js b/integration/ocean/AssetOwners.test.js deleted file mode 100644 index de5768a..0000000 --- a/integration/ocean/AssetOwners.test.js +++ /dev/null @@ -1,209 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -exports.__esModule = true; -var chai_1 = require("chai"); -var config_1 = require("../config"); -var utils_1 = require("../utils"); -var src_1 = require("../../src"); // @oceanprotocol/squid -describe('Asset Owners', function () { - var ocean; - var account1; - var account2; - var metadata = utils_1.getMetadata(); - before(function () { return __awaiter(void 0, void 0, void 0, function () { - var _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: return [4 /*yield*/, src_1.Ocean.getInstance(config_1.config) - // Accounts - ]; - case 1: - ocean = _b.sent(); - return [4 /*yield*/, ocean.accounts.list()]; - case 2: - _a = _b.sent(), account1 = _a[0], account2 = _a[1]; - if (!ocean.keeper.dispenser) { - metadata = utils_1.getMetadata(0); - } - return [2 /*return*/]; - } - }); - }); }); - it('should set the owner of an asset', function () { return __awaiter(void 0, void 0, void 0, function () { - var ddo, owner; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, ocean.assets.create(metadata, account1)]; - case 1: - ddo = _a.sent(); - return [4 /*yield*/, ocean.assets.owner(ddo.id)]; - case 2: - owner = _a.sent(); - chai_1.assert.equal(owner, account1.getId()); - return [2 /*return*/]; - } - }); - }); }); - it('should set the provider of an asset', function () { return __awaiter(void 0, void 0, void 0, function () { - var ddo, isProvider; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, ocean.assets.create(metadata, account1)]; - case 1: - ddo = _a.sent(); - return [4 /*yield*/, ocean.keeper.didRegistry.isDIDProvider(ddo.id, config_1.config.brizoAddress)]; - case 2: - isProvider = _a.sent(); - chai_1.assert.isTrue(isProvider); - return [2 /*return*/]; - } - }); - }); }); - it('should be added correctly a permission on an asset', function () { return __awaiter(void 0, void 0, void 0, function () { - var ddo, _a, _b, _c, _d; - return __generator(this, function (_e) { - switch (_e.label) { - case 0: return [4 /*yield*/, ocean.assets.create(metadata, account1)]; - case 1: - ddo = _e.sent(); - _b = (_a = chai_1.assert).isFalse; - return [4 /*yield*/, ocean.keeper.didRegistry.getPermission(ddo.id, account2.getId())]; - case 2: - _b.apply(_a, [_e.sent()]); - return [4 /*yield*/, ocean.keeper.didRegistry.grantPermission(ddo.id, account2.getId(), account1.getId())]; - case 3: - _e.sent(); - _d = (_c = chai_1.assert).isTrue; - return [4 /*yield*/, ocean.keeper.didRegistry.getPermission(ddo.id, account2.getId())]; - case 4: - _d.apply(_c, [_e.sent()]); - return [2 /*return*/]; - } - }); - }); }); - it('should get the assets owned by a user', function () { return __awaiter(void 0, void 0, void 0, function () { - var initialLength, finalLength; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, ocean.assets.ownerAssets(account2.getId())]; - case 1: - initialLength = (_a.sent()).length; - return [4 /*yield*/, ocean.assets.create(metadata, account1)]; - case 2: - _a.sent(); - return [4 /*yield*/, ocean.assets.create(metadata, account1)]; - case 3: - _a.sent(); - return [4 /*yield*/, ocean.assets.create(metadata, account2)]; - case 4: - _a.sent(); - return [4 /*yield*/, ocean.assets.ownerAssets(account2.getId())]; - case 5: - finalLength = (_a.sent()).length; - chai_1.assert.equal(finalLength - initialLength, 1); - return [2 /*return*/]; - } - }); - }); }); - it('should get the assets that can be consumed by a user', function () { return __awaiter(void 0, void 0, void 0, function () { - var initialLength, ddo, finalLength1, _a, _b, _c, _d, _e, _f, _g, index, finalLength2; - return __generator(this, function (_h) { - switch (_h.label) { - case 0: return [4 /*yield*/, ocean.assets.consumerAssets(account2.getId())]; - case 1: - initialLength = (_h.sent()).length; - return [4 /*yield*/, ocean.assets.create(metadata, account1)]; - case 2: - ddo = _h.sent(); - return [4 /*yield*/, ocean.assets.consumerAssets(account2.getId())]; - case 3: - finalLength1 = (_h.sent()).length; - chai_1.assert.equal(finalLength1 - initialLength, 0); - _h.label = 4; - case 4: - _h.trys.push([4, 7, , 8]); - _b = (_a = account2).requestTokens; - _c = +metadata.main.price; - _e = (_d = Math).pow; - _f = [10]; - return [4 /*yield*/, ocean.keeper.token.decimals()]; - case 5: return [4 /*yield*/, _b.apply(_a, [_c * _e.apply(_d, _f.concat([-(_h.sent())]))])]; - case 6: - _h.sent(); - return [3 /*break*/, 8]; - case 7: - _g = _h.sent(); - return [3 /*break*/, 8]; - case 8: - index = ddo.findServiceByType('access').index; - return [4 /*yield*/, ocean.assets.order(ddo.id, index, account2) - // Access granted - ]; - case 9: - _h.sent(); - return [4 /*yield*/, ocean.assets.consumerAssets(account2.getId())]; - case 10: - finalLength2 = (_h.sent()).length; - chai_1.assert.equal(finalLength2 - initialLength, 1); - return [2 /*return*/]; - } - }); - }); }); - it('should be able to transfer ownership', function () { return __awaiter(void 0, void 0, void 0, function () { - var id, newOwner; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, ocean.assets.create(metadata, account1) - // transfer - ]; - case 1: - id = (_a.sent()).id; - // transfer - return [4 /*yield*/, ocean.assets.transferOwnership(id, account2.getId())]; - case 2: - // transfer - _a.sent(); - return [4 /*yield*/, ocean.keeper.didRegistry.getDIDOwner(id)]; - case 3: - newOwner = _a.sent(); - chai_1.assert.equal(newOwner, account2.getId()); - return [2 /*return*/]; - } - }); - }); }); -}); diff --git a/integration/ocean/AuthenticationToken.test.js b/integration/ocean/AuthenticationToken.test.js deleted file mode 100644 index d5af4b2..0000000 --- a/integration/ocean/AuthenticationToken.test.js +++ /dev/null @@ -1,183 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -exports.__esModule = true; -var chai_1 = require("chai"); -var config_1 = require("../config"); -var src_1 = require("../../src"); // @oceanprotocol/squid -describe('Authentication Token', function () { - var ocean; - var account1; - var account2; - before(function () { return __awaiter(void 0, void 0, void 0, function () { - var _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - try { - localStorage.clear(); - } - catch (_c) { } - return [4 /*yield*/, src_1.Ocean.getInstance(config_1.config) - // Accounts - ]; - case 1: - ocean = _b.sent(); - return [4 /*yield*/, ocean.accounts.list()]; - case 2: - _a = _b.sent(), account1 = _a[0], account2 = _a[1]; - return [2 /*return*/]; - } - }); - }); }); - after(function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - try { - localStorage.clear(); - } - catch (_b) { } - return [2 /*return*/]; - }); - }); }); - it('should generate a token', function () { return __awaiter(void 0, void 0, void 0, function () { - var token; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, ocean.auth.get(account1)]; - case 1: - token = _a.sent(); - chai_1.assert.match(token, /^0x[a-f0-9]{130}-[0-9]{0,14}/i); - return [2 /*return*/]; - } - }); - }); }); - it('should return the account that signed the token', function () { return __awaiter(void 0, void 0, void 0, function () { - var token, address; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, ocean.auth.get(account1)]; - case 1: - token = _a.sent(); - return [4 /*yield*/, ocean.auth.check(token)]; - case 2: - address = _a.sent(); - chai_1.assert.equal(address, account1.getId()); - return [2 /*return*/]; - } - }); - }); }); - it('should store the token for a user', function () { return __awaiter(void 0, void 0, void 0, function () { - var _a, _b, _c, _d; - return __generator(this, function (_e) { - switch (_e.label) { - case 0: - _b = (_a = chai_1.assert).isUndefined; - return [4 /*yield*/, account1.getToken()]; - case 1: - _b.apply(_a, [_e.sent()]); - return [4 /*yield*/, ocean.auth.store(account1)]; - case 2: - _e.sent(); - _d = (_c = chai_1.assert).match; - return [4 /*yield*/, account1.getToken()]; - case 3: - _d.apply(_c, [_e.sent(), /^0x[a-f0-9]{130}-[0-9]{0,14}/i]); - return [2 /*return*/]; - } - }); - }); }); - it('should restore the token for a user', function () { return __awaiter(void 0, void 0, void 0, function () { - var token; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, ocean.auth.restore(account1)]; - case 1: - token = _a.sent(); - chai_1.assert.match(token, /^0x[a-f0-9]{130}-[0-9]{0,14}/i); - return [2 /*return*/]; - } - }); - }); }); - it('should return undefined when is not stored', function () { return __awaiter(void 0, void 0, void 0, function () { - var token; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, ocean.auth.restore(account2)]; - case 1: - token = _a.sent(); - chai_1.assert.isUndefined(token); - return [2 /*return*/]; - } - }); - }); }); - it('should know if the token is stored', function () { return __awaiter(void 0, void 0, void 0, function () { - var acc1Stored, acc2Stored, _a, _b, _c, _d, _e, _f; - return __generator(this, function (_g) { - switch (_g.label) { - case 0: return [4 /*yield*/, ocean.auth.isStored(account1)]; - case 1: - // eslint-disable-next-line - acc1Stored = _g.sent(); - return [4 /*yield*/, ocean.auth.isStored(account2)]; - case 2: - acc2Stored = _g.sent(); - chai_1.assert.isTrue(acc1Stored); - _b = (_a = chai_1.assert).isTrue; - return [4 /*yield*/, account1.isTokenStored()]; - case 3: - _b.apply(_a, [_g.sent()]); - chai_1.assert.isFalse(acc2Stored); - _d = (_c = chai_1.assert).isFalse; - return [4 /*yield*/, account2.isTokenStored()]; - case 4: - _d.apply(_c, [_g.sent()]); - return [4 /*yield*/, account2.authenticate()]; - case 5: - _g.sent(); - return [4 /*yield*/, ocean.auth.isStored(account2)]; - case 6: - acc2Stored = _g.sent(); - chai_1.assert.isTrue(acc2Stored); - _f = (_e = chai_1.assert).isTrue; - return [4 /*yield*/, account2.isTokenStored()]; - case 7: - _f.apply(_e, [_g.sent()]); - return [2 /*return*/]; - } - }); - }); }); -}); diff --git a/integration/ocean/ConsumeAsset.test.js b/integration/ocean/ConsumeAsset.test.js deleted file mode 100644 index d1b43b2..0000000 --- a/integration/ocean/ConsumeAsset.test.js +++ /dev/null @@ -1,268 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result["default"] = mod; - return result; -}; -exports.__esModule = true; -var chai_1 = require("chai"); -var fs = __importStar(require("fs")); -var config_1 = require("../config"); -var utils_1 = require("../utils"); -var src_1 = require("../../src"); // @oceanprotocol/squid -describe('Consume Asset', function () { - var ocean; - var publisher; - var consumer; - var metadata = utils_1.getMetadata(); - var ddo; - var serviceAgreementSignatureResult; - before(function () { return __awaiter(void 0, void 0, void 0, function () { - var _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: return [4 /*yield*/, src_1.Ocean.getInstance(config_1.config) - // Accounts - ]; - case 1: - ocean = _b.sent(); - return [4 /*yield*/, ocean.accounts.list()]; - case 2: - _a = _b.sent(), publisher = _a[0], consumer = _a[1]; - if (!ocean.keeper.dispenser) { - metadata = utils_1.getMetadata(0); - } - return [2 /*return*/]; - } - }); - }); }); - it('should register an asset', function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, ocean.assets.create(metadata, publisher)]; - case 1: - ddo = _a.sent(); - chai_1.assert.isDefined(ddo, 'Register has not returned a DDO'); - chai_1.assert.match(ddo.id, /^did:op:[a-f0-9]{64}$/, 'DDO id is not valid'); - chai_1.assert.isAtLeast(ddo.authentication.length, 1, 'Default authentication not added'); - chai_1.assert.isDefined(ddo.findServiceByType('access'), "DDO access service doesn't exist"); - return [2 /*return*/]; - } - }); - }); }); - it('should be able to request tokens for consumer', function () { return __awaiter(void 0, void 0, void 0, function () { - var initialBalance, claimedTokens, _a, _b, _c, _d, _e, _f, _g; - return __generator(this, function (_h) { - switch (_h.label) { - case 0: return [4 /*yield*/, consumer.getBalance()]; - case 1: - initialBalance = (_h.sent()).ocn; - _a = +metadata.main.price; - _c = (_b = Math).pow; - _d = [10]; - return [4 /*yield*/, ocean.keeper.token.decimals()]; - case 2: - claimedTokens = _a * _c.apply(_b, _d.concat([-(_h.sent())])); - _h.label = 3; - case 3: - _h.trys.push([3, 5, , 6]); - return [4 /*yield*/, consumer.requestTokens(claimedTokens)]; - case 4: - _h.sent(); - return [3 /*break*/, 6]; - case 5: - _e = _h.sent(); - return [3 /*break*/, 6]; - case 6: - _g = (_f = chai_1.assert).equal; - return [4 /*yield*/, consumer.getBalance()]; - case 7: - _g.apply(_f, [(_h.sent()).ocn, - initialBalance + claimedTokens, - 'OCN Tokens not delivered']); - return [2 /*return*/]; - } - }); - }); }); - it('should sign the service agreement', function () { return __awaiter(void 0, void 0, void 0, function () { - var accessService, agreementId, signature; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - accessService = ddo.findServiceByType('access'); - return [4 /*yield*/, ocean.agreements.prepare(ddo.id, accessService.index, consumer)]; - case 1: - serviceAgreementSignatureResult = _a.sent(); - agreementId = serviceAgreementSignatureResult.agreementId, signature = serviceAgreementSignatureResult.signature; - chai_1.assert.match(agreementId, /^0x[a-f0-9]{64}$/, 'Service agreement ID seems not valid'); - chai_1.assert.match(signature, /^0x[a-f0-9]{130}$/, 'Service agreement signature seems not valid'); - return [2 /*return*/]; - } - }); - }); }); - it('should execute the service agreement', function () { return __awaiter(void 0, void 0, void 0, function () { - var accessService, success; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - accessService = ddo.findServiceByType('access'); - return [4 /*yield*/, ocean.agreements.create(ddo.id, serviceAgreementSignatureResult.agreementId, accessService.index, serviceAgreementSignatureResult.signature, consumer, publisher)]; - case 1: - success = _a.sent(); - chai_1.assert.isTrue(success); - return [2 /*return*/]; - } - }); - }); }); - it('should get the agreement conditions status not fulfilled', function () { return __awaiter(void 0, void 0, void 0, function () { - var status; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, ocean.agreements.status(serviceAgreementSignatureResult.agreementId)]; - case 1: - status = _a.sent(); - chai_1.assert.deepEqual(status, { - lockReward: src_1.ConditionState.Unfulfilled, - accessSecretStore: src_1.ConditionState.Unfulfilled, - escrowReward: src_1.ConditionState.Unfulfilled - }); - return [2 /*return*/]; - } - }); - }); }); - it('should lock the payment by the consumer', function () { return __awaiter(void 0, void 0, void 0, function () { - var paid; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, ocean.agreements.conditions.lockReward(serviceAgreementSignatureResult.agreementId, ddo.findServiceByType('metadata').attributes.main.price, consumer)]; - case 1: - paid = _a.sent(); - chai_1.assert.isTrue(paid, 'The asset has not been paid correctly'); - return [2 /*return*/]; - } - }); - }); }); - // The test will fail because Brizo grants the access faster - it('should grant the access by the publisher', function () { return __awaiter(void 0, void 0, void 0, function () { - var granted, accessGranted, _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - _b.trys.push([0, 3, , 4]); - return [4 /*yield*/, ocean.agreements.conditions.grantAccess(serviceAgreementSignatureResult.agreementId, ddo.id, consumer.getId(), publisher)]; - case 1: - granted = _b.sent(); - chai_1.assert.isTrue(granted, 'The asset has not been granted correctly'); - return [4 /*yield*/, ocean.keeper.conditions.accessSecretStoreCondition.checkPermissions(consumer.getId(), ddo.id)]; - case 2: - accessGranted = _b.sent(); - chai_1.assert.isTrue(accessGranted, 'Consumer has been granted.'); - return [3 /*break*/, 4]; - case 3: - _a = _b.sent(); - return [3 /*break*/, 4]; - case 4: return [2 /*return*/]; - } - }); - }); }); - it('should get the agreement conditions status fulfilled', function () { return __awaiter(void 0, void 0, void 0, function () { - var status; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, ocean.agreements.status(serviceAgreementSignatureResult.agreementId)]; - case 1: - status = _a.sent(); - chai_1.assert.deepEqual(status, { - lockReward: src_1.ConditionState.Fulfilled, - accessSecretStore: src_1.ConditionState.Fulfilled, - escrowReward: src_1.ConditionState.Unfulfilled - }); - return [2 /*return*/]; - } - }); - }); }); - it('should consume and store the assets', function () { return __awaiter(void 0, void 0, void 0, function () { - var accessService, folder, path, files; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - accessService = ddo.findServiceByType('access'); - folder = '/tmp/ocean/squid-js-1'; - return [4 /*yield*/, ocean.assets.consume(serviceAgreementSignatureResult.agreementId, ddo.id, accessService.index, consumer, folder)]; - case 1: - path = _a.sent(); - chai_1.assert.include(path, folder, 'The storage path is not correct.'); - return [4 /*yield*/, new Promise(function (resolve) { - fs.readdir(path, function (e, fileList) { - resolve(fileList); - }); - })]; - case 2: - files = _a.sent(); - chai_1.assert.deepEqual(files, ['README.md', 'package.json'], 'Stored files are not correct.'); - return [2 /*return*/]; - } - }); - }); }); - it('should consume and store one asset', function () { return __awaiter(void 0, void 0, void 0, function () { - var accessService, folder, path, files; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - accessService = ddo.findServiceByType('access'); - folder = '/tmp/ocean/squid-js-2'; - return [4 /*yield*/, ocean.assets.consume(serviceAgreementSignatureResult.agreementId, ddo.id, accessService.index, consumer, folder, 1)]; - case 1: - path = _a.sent(); - chai_1.assert.include(path, folder, 'The storage path is not correct.'); - return [4 /*yield*/, new Promise(function (resolve) { - fs.readdir(path, function (e, fileList) { - resolve(fileList); - }); - })]; - case 2: - files = _a.sent(); - chai_1.assert.deepEqual(files, ['README.md'], 'Stored files are not correct.'); - return [2 /*return*/]; - } - }); - }); }); -}); diff --git a/integration/ocean/ConsumeAssetBrizo.test.js b/integration/ocean/ConsumeAssetBrizo.test.js deleted file mode 100644 index 4ba0d24..0000000 --- a/integration/ocean/ConsumeAssetBrizo.test.js +++ /dev/null @@ -1,170 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result["default"] = mod; - return result; -}; -exports.__esModule = true; -var chai_1 = require("chai"); -var fs = __importStar(require("fs")); -var config_1 = require("../config"); -var utils_1 = require("../utils"); -var src_1 = require("../../src"); // @oceanprotocol/squid -describe('Consume Asset (Brizo)', function () { - var ocean; - var publisher; - var consumer; - var ddo; - var agreementId; - var metadata = utils_1.getMetadata(); - before(function () { return __awaiter(void 0, void 0, void 0, function () { - var _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: return [4 /*yield*/, src_1.Ocean.getInstance(config_1.config) - // Accounts - ]; - case 1: - ocean = _b.sent(); - return [4 /*yield*/, ocean.accounts.list()]; - case 2: - _a = _b.sent(), publisher = _a[0], consumer = _a[1]; - if (!ocean.keeper.dispenser) { - metadata = utils_1.getMetadata(0); - } - return [2 /*return*/]; - } - }); - }); }); - after(function () { - try { - localStorage.clear(); - } - catch (_a) { } - }); - it('should authenticate the accounts', function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, publisher.authenticate()]; - case 1: - _a.sent(); - return [4 /*yield*/, consumer.authenticate()]; - case 2: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - it('should regiester an asset', function () { return __awaiter(void 0, void 0, void 0, function () { - var steps; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - steps = []; - return [4 /*yield*/, ocean.assets - .create(metadata, publisher) - .next(function (step) { return steps.push(step); })]; - case 1: - ddo = _a.sent(); - chai_1.assert.instanceOf(ddo, src_1.DDO); - chai_1.assert.deepEqual(steps, [0, 1, 2, 3, 4, 5, 6, 7]); - return [2 /*return*/]; - } - }); - }); }); - it('should order the asset', function () { return __awaiter(void 0, void 0, void 0, function () { - var accessService, _a, _b, _c, _d, _e, _f, _g, steps; - return __generator(this, function (_h) { - switch (_h.label) { - case 0: - accessService = ddo.findServiceByType('access'); - _h.label = 1; - case 1: - _h.trys.push([1, 4, , 5]); - _b = (_a = consumer).requestTokens; - _c = +metadata.main.price; - _e = (_d = Math).pow; - _f = [10]; - return [4 /*yield*/, ocean.keeper.token.decimals()]; - case 2: return [4 /*yield*/, _b.apply(_a, [_c * _e.apply(_d, _f.concat([-(_h.sent())]))])]; - case 3: - _h.sent(); - return [3 /*break*/, 5]; - case 4: - _g = _h.sent(); - return [3 /*break*/, 5]; - case 5: - steps = []; - return [4 /*yield*/, ocean.assets - .order(ddo.id, accessService.index, consumer) - .next(function (step) { return steps.push(step); })]; - case 6: - agreementId = _h.sent(); - chai_1.assert.isDefined(agreementId); - chai_1.assert.deepEqual(steps, [0, 1, 2, 3]); - return [2 /*return*/]; - } - }); - }); }); - it('should consume and store the assets', function () { return __awaiter(void 0, void 0, void 0, function () { - var accessService, folder, path, files; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - accessService = ddo.findServiceByType('access'); - folder = '/tmp/ocean/squid-js'; - return [4 /*yield*/, ocean.assets.consume(agreementId, ddo.id, accessService.index, consumer, folder)]; - case 1: - path = _a.sent(); - chai_1.assert.include(path, folder, 'The storage path is not correct.'); - return [4 /*yield*/, new Promise(function (resolve) { - fs.readdir(path, function (e, fileList) { - resolve(fileList); - }); - })]; - case 2: - files = _a.sent(); - chai_1.assert.deepEqual(files, ['README.md', 'package.json'], 'Stored files are not correct.'); - return [2 /*return*/]; - } - }); - }); }); -}); diff --git a/integration/ocean/ConsumeBigAsset.test.js b/integration/ocean/ConsumeBigAsset.test.js deleted file mode 100644 index cddf5a2..0000000 --- a/integration/ocean/ConsumeBigAsset.test.js +++ /dev/null @@ -1,160 +0,0 @@ -"use strict"; -var __assign = (this && this.__assign) || function () { - __assign = Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result["default"] = mod; - return result; -}; -exports.__esModule = true; -var chai_1 = require("chai"); -var fs = __importStar(require("fs")); -var config_1 = require("../config"); -var utils_1 = require("../utils"); -var src_1 = require("../../src"); // @oceanprotocol/squid -// Ensure that your network is fast enought and you have some free ram before run it. -xdescribe('Consume Asset (Large size)', function () { - var ocean; - var publisher; - var consumer; - var ddo; - var agreementId; - var baseMetadata = utils_1.getMetadata(); - var metadata = utils_1.getMetadata(); - before(function () { return __awaiter(void 0, void 0, void 0, function () { - var _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: return [4 /*yield*/, src_1.Ocean.getInstance(config_1.config) - // Accounts - ]; - case 1: - ocean = _b.sent(); - return [4 /*yield*/, ocean.accounts.list()]; - case 2: - _a = _b.sent(), publisher = _a[0], consumer = _a[1]; - if (!ocean.keeper.dispenser) { - baseMetadata = utils_1.getMetadata(0); - } - metadata = __assign(__assign({}, baseMetadata), { main: __assign(__assign({}, baseMetadata.main), { files: [ - { - index: 0, - contentType: 'hello/hello', - url: 'https://speed.hetzner.de/1GB.bin' - } - ] }) }); - return [2 /*return*/]; - } - }); - }); }); - it('should regiester an asset', function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, ocean.assets.create(metadata, publisher)]; - case 1: - ddo = _a.sent(); - chai_1.assert.instanceOf(ddo, src_1.DDO); - return [2 /*return*/]; - } - }); - }); }); - it('should order the asset', function () { return __awaiter(void 0, void 0, void 0, function () { - var accessService, _a, _b, _c, _d, _e, _f, _g; - return __generator(this, function (_h) { - switch (_h.label) { - case 0: - accessService = ddo.findServiceByType('access'); - _h.label = 1; - case 1: - _h.trys.push([1, 4, , 5]); - _b = (_a = consumer).requestTokens; - _c = +metadata.main.price; - _e = (_d = Math).pow; - _f = [10]; - return [4 /*yield*/, ocean.keeper.token.decimals()]; - case 2: return [4 /*yield*/, _b.apply(_a, [_c * _e.apply(_d, _f.concat([-(_h.sent())]))])]; - case 3: - _h.sent(); - return [3 /*break*/, 5]; - case 4: - _g = _h.sent(); - return [3 /*break*/, 5]; - case 5: return [4 /*yield*/, ocean.assets.order(ddo.id, accessService.index, consumer)]; - case 6: - agreementId = _h.sent(); - chai_1.assert.isDefined(agreementId); - return [2 /*return*/]; - } - }); - }); }); - it('should consume and store the assets', function () { return __awaiter(void 0, void 0, void 0, function () { - var accessService, folder, path, files; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - accessService = ddo.findServiceByType('access'); - folder = '/tmp/ocean/squid-js'; - return [4 /*yield*/, ocean.assets.consume(agreementId, ddo.id, accessService.index, consumer, folder)]; - case 1: - path = _a.sent(); - chai_1.assert.include(path, folder, 'The storage path is not correct.'); - return [4 /*yield*/, new Promise(function (resolve) { - fs.readdir(path, function (e, fileList) { - resolve(fileList); - }); - })]; - case 2: - files = _a.sent(); - chai_1.assert.deepEqual(files, ['1GB.bin'], 'Stored files are not correct.'); - return [2 /*return*/]; - } - }); - }); }); -}); diff --git a/integration/ocean/RegisterEscrowAccessSecretStoreTemplate.test.js b/integration/ocean/RegisterEscrowAccessSecretStoreTemplate.test.js deleted file mode 100644 index 9c82762..0000000 --- a/integration/ocean/RegisterEscrowAccessSecretStoreTemplate.test.js +++ /dev/null @@ -1,376 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -var __spreadArrays = (this && this.__spreadArrays) || function () { - for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; - for (var r = Array(s), k = 0, i = 0; i < il; i++) - for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) - r[k] = a[j]; - return r; -}; -exports.__esModule = true; -var chai_1 = require("chai"); -var config_1 = require("../config"); -var src_1 = require("../../src"); // @oceanprotocol/squid -var LockRewardCondition = src_1.conditions.LockRewardCondition, EscrowReward = src_1.conditions.EscrowReward, AccessSecretStoreCondition = src_1.conditions.AccessSecretStoreCondition; -describe('Register Escrow Access Secret Store Template', function () { - var ocean; - var keeper; - var template; - var url = 'https://example.com/did/ocean/test-attr-example.txt'; - var checksum = 'b'.repeat(32); - var escrowAmount = 12; - var templateManagerOwner; - var publisher; - var consumer; - var accessSecretStoreCondition; - var lockRewardCondition; - var escrowReward; - before(function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, src_1.Ocean.getInstance(config_1.config)]; - case 1: - ocean = _a.sent(); - keeper = ocean.keeper; - template = keeper.templates.escrowAccessSecretStoreTemplate; - return [4 /*yield*/, ocean.accounts.list()]; - case 2: - // Accounts - templateManagerOwner = (_a.sent())[0]; - return [4 /*yield*/, ocean.accounts.list()]; - case 3: - publisher = (_a.sent())[1]; - return [4 /*yield*/, ocean.accounts.list()]; - case 4: - consumer = (_a.sent())[2]; - // Conditions - accessSecretStoreCondition = keeper.conditions.accessSecretStoreCondition; - lockRewardCondition = keeper.conditions.lockRewardCondition; - escrowReward = keeper.conditions.escrowReward; - if (!ocean.keeper.dispenser) { - escrowAmount = 0; - } - return [2 /*return*/]; - } - }); - }); }); - describe('Propose and approve template', function () { - it('should propose the template', function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, keeper.templateStoreManager.proposeTemplate(template.getId(), consumer.getId(), true) - // TODO: Use a event to detect template mined - ]; - case 1: - _a.sent(); - // TODO: Use a event to detect template mined - return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 2 * 1000); })]; - case 2: - // TODO: Use a event to detect template mined - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - it('should approve the template', function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, keeper.templateStoreManager.approveTemplate(template.getId(), templateManagerOwner.getId(), true) - // TODO: Use a event to detect template mined - ]; - case 1: - _a.sent(); - // TODO: Use a event to detect template mined - return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 2 * 1000); })]; - case 2: - // TODO: Use a event to detect template mined - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - }); - describe('Full flow', function () { - var agreementId = "0x" + src_1.utils.generateId(); - var did = "0x" + src_1.utils.generateId(); - var conditionIdAccess; - var conditionIdLock; - var conditionIdEscrow; - it('should register a DID', function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, keeper.didRegistry.registerAttribute(did, checksum, [], url, publisher.getId())]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - it('should generate the condition IDs', function () { return __awaiter(void 0, void 0, void 0, function () { - var _a, _b, _c; - return __generator(this, function (_d) { - switch (_d.label) { - case 0: return [4 /*yield*/, accessSecretStoreCondition.generateIdHash(agreementId, did, consumer.getId())]; - case 1: - conditionIdAccess = _d.sent(); - _b = (_a = lockRewardCondition).generateIdHash; - _c = [agreementId]; - return [4 /*yield*/, escrowReward.getAddress()]; - case 2: return [4 /*yield*/, _b.apply(_a, _c.concat([_d.sent(), - escrowAmount]))]; - case 3: - conditionIdLock = _d.sent(); - return [4 /*yield*/, escrowReward.generateIdHash(agreementId, escrowAmount, publisher.getId(), consumer.getId(), conditionIdLock, conditionIdAccess)]; - case 4: - conditionIdEscrow = _d.sent(); - return [2 /*return*/]; - } - }); - }); }); - it('should have conditions types', function () { return __awaiter(void 0, void 0, void 0, function () { - var conditionTypes; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, template.getConditionTypes()]; - case 1: - conditionTypes = _a.sent(); - chai_1.assert.equal(conditionTypes.length, 3, 'Expected 3 conditions.'); - chai_1.assert.deepEqual(__spreadArrays(conditionTypes).sort(), [ - accessSecretStoreCondition.getAddress(), - escrowReward.getAddress(), - lockRewardCondition.getAddress() - ].sort(), "The conditions doesn't match"); - return [2 /*return*/]; - } - }); - }); }); - it('should have condition instances asociated', function () { return __awaiter(void 0, void 0, void 0, function () { - var conditionInstances, conditionClasses; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, template.getConditionTypes()]; - case 1: - conditionInstances = (_a.sent()).map(function (address) { - return keeper.getConditionByAddress(address); - }); - chai_1.assert.equal(conditionInstances.length, 3, 'Expected 3 conditions.'); - conditionClasses = [ - AccessSecretStoreCondition, - EscrowReward, - LockRewardCondition - ]; - conditionClasses.forEach(function (conditionClass) { - if (!conditionInstances.find(function (condition) { return condition instanceof conditionClass; })) { - throw new Error(conditionClass.name + " is not part of the conditions."); - } - }); - return [2 /*return*/]; - } - }); - }); }); - it('should create a new agreement', function () { return __awaiter(void 0, void 0, void 0, function () { - var agreement; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, keeper.agreementStoreManager.createAgreement(agreementId, did, template.getId(), [conditionIdLock, conditionIdAccess, conditionIdEscrow], [0, 0, 0], [0, 0, 0], [consumer.getId(), publisher.getId()], publisher.getId())]; - case 1: - agreement = _a.sent(); - chai_1.assert.isTrue(agreement.status); - return [2 /*return*/]; - } - }); - }); }); - it('should not grant the access to the consumer', function () { return __awaiter(void 0, void 0, void 0, function () { - var accessGranted; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, accessSecretStoreCondition.checkPermissions(consumer.getId(), did)]; - case 1: - accessGranted = _a.sent(); - chai_1.assert.isFalse(accessGranted, 'Consumer has been granted.'); - return [2 /*return*/]; - } - }); - }); }); - it('should fulfill LockRewardCondition', function () { return __awaiter(void 0, void 0, void 0, function () { - var _a, fulfill; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - _b.trys.push([0, 2, , 3]); - return [4 /*yield*/, consumer.requestTokens(escrowAmount)]; - case 1: - _b.sent(); - return [3 /*break*/, 3]; - case 2: - _a = _b.sent(); - return [3 /*break*/, 3]; - case 3: return [4 /*yield*/, keeper.token.approve(lockRewardCondition.getAddress(), escrowAmount, consumer.getId())]; - case 4: - _b.sent(); - return [4 /*yield*/, lockRewardCondition.fulfill(agreementId, escrowReward.getAddress(), escrowAmount, consumer.getId())]; - case 5: - fulfill = _b.sent(); - chai_1.assert.isDefined(fulfill.events.Fulfilled, 'Not Fulfilled event.'); - return [2 /*return*/]; - } - }); - }); }); - it('should fulfill AccessSecretStoreCondition', function () { return __awaiter(void 0, void 0, void 0, function () { - var fulfill; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, accessSecretStoreCondition.fulfill(agreementId, did, consumer.getId(), publisher.getId())]; - case 1: - fulfill = _a.sent(); - chai_1.assert.isDefined(fulfill.events.Fulfilled, 'Not Fulfilled event.'); - return [2 /*return*/]; - } - }); - }); }); - it('should fulfill EscrowReward', function () { return __awaiter(void 0, void 0, void 0, function () { - var fulfill; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, escrowReward.fulfill(agreementId, escrowAmount, publisher.getId(), consumer.getId(), conditionIdLock, conditionIdAccess, consumer.getId())]; - case 1: - fulfill = _a.sent(); - chai_1.assert.isDefined(fulfill.events.Fulfilled, 'Not Fulfilled event.'); - return [2 /*return*/]; - } - }); - }); }); - it('should grant the access to the consumer', function () { return __awaiter(void 0, void 0, void 0, function () { - var accessGranted; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, accessSecretStoreCondition.checkPermissions(consumer.getId(), did)]; - case 1: - accessGranted = _a.sent(); - chai_1.assert.isTrue(accessGranted, 'Consumer has not been granted.'); - return [2 /*return*/]; - } - }); - }); }); - }); - describe('Short flow', function () { - var did = src_1.utils.generateId(); - var agreementId; - it('should register a DID', function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - // This part is executed inside Ocean.assets.create() - return [4 /*yield*/, keeper.didRegistry.registerAttribute(did, checksum, [], url, publisher.getId())]; - case 1: - // This part is executed inside Ocean.assets.create() - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - it('should create a new agreement (short way)', function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, template.createFullAgreement(did, escrowAmount, consumer.getId(), publisher.getId())]; - case 1: - agreementId = _a.sent(); - chai_1.assert.match(agreementId, /^0x[a-f0-9]{64}$/i); - return [2 /*return*/]; - } - }); - }); }); - it('should not grant the access to the consumer', function () { return __awaiter(void 0, void 0, void 0, function () { - var accessGranted; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, accessSecretStoreCondition.checkPermissions(consumer.getId(), did)]; - case 1: - accessGranted = _a.sent(); - chai_1.assert.isFalse(accessGranted, 'Consumer has been granted.'); - return [2 /*return*/]; - } - }); - }); }); - it('should fulfill the conditions from consumer side', function () { return __awaiter(void 0, void 0, void 0, function () { - var _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - _b.trys.push([0, 2, , 3]); - return [4 /*yield*/, consumer.requestTokens(escrowAmount)]; - case 1: - _b.sent(); - return [3 /*break*/, 3]; - case 2: - _a = _b.sent(); - return [3 /*break*/, 3]; - case 3: return [4 /*yield*/, ocean.agreements.conditions.lockReward(agreementId, escrowAmount, consumer)]; - case 4: - _b.sent(); - return [2 /*return*/]; - } - }); - }); }); - it('should fulfill the conditions from publisher side', function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, ocean.agreements.conditions.grantAccess(agreementId, did, consumer.getId(), publisher)]; - case 1: - _a.sent(); - return [4 /*yield*/, ocean.agreements.conditions.releaseReward(agreementId, escrowAmount, did, consumer.getId(), publisher.getId(), publisher)]; - case 2: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - it('should grant the access to the consumer', function () { return __awaiter(void 0, void 0, void 0, function () { - var accessGranted; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, accessSecretStoreCondition.checkPermissions(consumer.getId(), did)]; - case 1: - accessGranted = _a.sent(); - chai_1.assert.isTrue(accessGranted, 'Consumer has not been granted.'); - return [2 /*return*/]; - } - }); - }); }); - }); -}); diff --git a/integration/ocean/RegisterEscrowComputeExecutionTemplate.test.js b/integration/ocean/RegisterEscrowComputeExecutionTemplate.test.js deleted file mode 100644 index 3aca324..0000000 --- a/integration/ocean/RegisterEscrowComputeExecutionTemplate.test.js +++ /dev/null @@ -1,374 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -var __spreadArrays = (this && this.__spreadArrays) || function () { - for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; - for (var r = Array(s), k = 0, i = 0; i < il; i++) - for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) - r[k] = a[j]; - return r; -}; -exports.__esModule = true; -var chai_1 = require("chai"); -var config_1 = require("../config"); -var src_1 = require("../../src"); // @oceanprotocol/squid -var LockRewardCondition = src_1.conditions.LockRewardCondition, EscrowReward = src_1.conditions.EscrowReward, ComputeExecutionCondition = src_1.conditions.ComputeExecutionCondition; -describe('Register Escrow Compute Execution Template', function () { - var ocean; - var keeper; - var template; - var url = 'https://example.com/did/ocean/test-attr-example.txt'; - var checksum = 'b'.repeat(32); - var escrowAmount = 12; - var templateManagerOwner; - var publisher; - var consumer; - var computeExecutionCondition; - var lockRewardCondition; - var escrowReward; - before(function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, src_1.Ocean.getInstance(config_1.config)]; - case 1: - ocean = _a.sent(); - keeper = ocean.keeper; - template = keeper.templates.escrowComputeExecutionTemplate; - return [4 /*yield*/, ocean.accounts.list()]; - case 2: - // Accounts - templateManagerOwner = (_a.sent())[0]; - return [4 /*yield*/, ocean.accounts.list()]; - case 3: - publisher = (_a.sent())[1]; - return [4 /*yield*/, ocean.accounts.list()]; - case 4: - consumer = (_a.sent())[2]; - // Conditions - computeExecutionCondition = keeper.conditions.computeExecutionCondition; - lockRewardCondition = keeper.conditions.lockRewardCondition; - escrowReward = keeper.conditions.escrowReward; - if (!ocean.keeper.dispenser) { - escrowAmount = 0; - } - return [2 /*return*/]; - } - }); - }); }); - describe('Propose and approve template', function () { - it('should propose the template', function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, keeper.templateStoreManager.proposeTemplate(template.getId(), consumer.getId(), true) - // TODO: Use a event to detect template mined - ]; - case 1: - _a.sent(); - // TODO: Use a event to detect template mined - return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 2 * 1000); })]; - case 2: - // TODO: Use a event to detect template mined - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - it('should approve the template', function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, keeper.templateStoreManager.approveTemplate(template.getId(), templateManagerOwner.getId(), true) - // TODO: Use a event to detect template mined - ]; - case 1: - _a.sent(); - // TODO: Use a event to detect template mined - return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 2 * 1000); })]; - case 2: - // TODO: Use a event to detect template mined - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - }); - describe('Full flow', function () { - var agreementId = "0x" + src_1.utils.generateId(); - var did = "0x" + src_1.utils.generateId(); - var conditionIdCompute; - var conditionIdLock; - var conditionIdEscrow; - it('should register a DID', function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, keeper.didRegistry.registerAttribute(did, checksum, [], url, publisher.getId())]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - it('should generate the condition IDs', function () { return __awaiter(void 0, void 0, void 0, function () { - var _a, _b, _c; - return __generator(this, function (_d) { - switch (_d.label) { - case 0: return [4 /*yield*/, computeExecutionCondition.generateIdHash(agreementId, did, consumer.getId())]; - case 1: - conditionIdCompute = _d.sent(); - _b = (_a = lockRewardCondition).generateIdHash; - _c = [agreementId]; - return [4 /*yield*/, escrowReward.getAddress()]; - case 2: return [4 /*yield*/, _b.apply(_a, _c.concat([_d.sent(), - escrowAmount]))]; - case 3: - conditionIdLock = _d.sent(); - return [4 /*yield*/, escrowReward.generateIdHash(agreementId, escrowAmount, publisher.getId(), consumer.getId(), conditionIdLock, conditionIdCompute)]; - case 4: - conditionIdEscrow = _d.sent(); - return [2 /*return*/]; - } - }); - }); }); - it('should have conditions types', function () { return __awaiter(void 0, void 0, void 0, function () { - var conditionTypes; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, template.getConditionTypes()]; - case 1: - conditionTypes = _a.sent(); - chai_1.assert.equal(conditionTypes.length, 3, 'Expected 3 conditions.'); - chai_1.assert.deepEqual(__spreadArrays(conditionTypes).sort(), [ - computeExecutionCondition.getAddress(), - escrowReward.getAddress(), - lockRewardCondition.getAddress() - ].sort(), "The conditions doesn't match"); - return [2 /*return*/]; - } - }); - }); }); - it('should have condition instances asociated', function () { return __awaiter(void 0, void 0, void 0, function () { - var conditionInstances, conditionClasses; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, template.getConditions()]; - case 1: - conditionInstances = _a.sent(); - chai_1.assert.equal(conditionInstances.length, 3, 'Expected 3 conditions.'); - conditionClasses = [ - ComputeExecutionCondition, - EscrowReward, - LockRewardCondition - ]; - conditionClasses.forEach(function (conditionClass) { - if (!conditionInstances.find(function (condition) { return condition instanceof conditionClass; })) { - throw new Error(conditionClass.name + " is not part of the conditions."); - } - }); - return [2 /*return*/]; - } - }); - }); }); - it('should create a new agreement', function () { return __awaiter(void 0, void 0, void 0, function () { - var agreement; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, keeper.agreementStoreManager.createAgreement(agreementId, did, template.getId(), [conditionIdLock, conditionIdCompute, conditionIdEscrow], [0, 0, 0], [0, 0, 0], [consumer.getId(), publisher.getId()], publisher.getId())]; - case 1: - agreement = _a.sent(); - chai_1.assert.isTrue(agreement.status); - return [2 /*return*/]; - } - }); - }); }); - it('should not trigger the compute', function () { return __awaiter(void 0, void 0, void 0, function () { - var computeTriggered; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, computeExecutionCondition.wasComputeTriggered(did, consumer.getId())]; - case 1: - computeTriggered = _a.sent(); - chai_1.assert.isFalse(computeTriggered, 'Compute has been triggered.'); - return [2 /*return*/]; - } - }); - }); }); - it('should fulfill LockRewardCondition', function () { return __awaiter(void 0, void 0, void 0, function () { - var _a, fulfill; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - _b.trys.push([0, 2, , 3]); - return [4 /*yield*/, consumer.requestTokens(escrowAmount)]; - case 1: - _b.sent(); - return [3 /*break*/, 3]; - case 2: - _a = _b.sent(); - return [3 /*break*/, 3]; - case 3: return [4 /*yield*/, keeper.token.approve(lockRewardCondition.getAddress(), escrowAmount, consumer.getId())]; - case 4: - _b.sent(); - return [4 /*yield*/, lockRewardCondition.fulfill(agreementId, escrowReward.getAddress(), escrowAmount, consumer.getId())]; - case 5: - fulfill = _b.sent(); - chai_1.assert.isDefined(fulfill.events.Fulfilled, 'Not Fulfilled event.'); - return [2 /*return*/]; - } - }); - }); }); - it('should fulfill ComputeExecutionCondition', function () { return __awaiter(void 0, void 0, void 0, function () { - var fulfill; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, computeExecutionCondition.fulfill(agreementId, did, consumer.getId(), publisher.getId())]; - case 1: - fulfill = _a.sent(); - chai_1.assert.isDefined(fulfill.events.Fulfilled, 'Not Fulfilled event.'); - return [2 /*return*/]; - } - }); - }); }); - it('should fulfill EscrowReward', function () { return __awaiter(void 0, void 0, void 0, function () { - var fulfill; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, escrowReward.fulfill(agreementId, escrowAmount, publisher.getId(), consumer.getId(), conditionIdLock, conditionIdCompute, consumer.getId())]; - case 1: - fulfill = _a.sent(); - chai_1.assert.isDefined(fulfill.events.Fulfilled, 'Not Fulfilled event.'); - return [2 /*return*/]; - } - }); - }); }); - it('should grant the access to the consumer', function () { return __awaiter(void 0, void 0, void 0, function () { - var computeTriggered; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, computeExecutionCondition.wasComputeTriggered(did, consumer.getId())]; - case 1: - computeTriggered = _a.sent(); - chai_1.assert.isTrue(computeTriggered, 'Compute has not been triggered.'); - return [2 /*return*/]; - } - }); - }); }); - }); - describe('Short flow', function () { - var did = src_1.utils.generateId(); - var agreementId; - it('should register a DID', function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - // This part is executed inside Ocean.assets.create() - return [4 /*yield*/, keeper.didRegistry.registerAttribute(did, checksum, [], url, publisher.getId())]; - case 1: - // This part is executed inside Ocean.assets.create() - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - it('should create a new agreement (short way)', function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, template.createFullAgreement(did, escrowAmount, consumer.getId(), publisher.getId())]; - case 1: - agreementId = _a.sent(); - chai_1.assert.match(agreementId, /^0x[a-f0-9]{64}$/i); - return [2 /*return*/]; - } - }); - }); }); - it('should not grant the access to the consumer', function () { return __awaiter(void 0, void 0, void 0, function () { - var computeTriggered; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, computeExecutionCondition.wasComputeTriggered(did, consumer.getId())]; - case 1: - computeTriggered = _a.sent(); - chai_1.assert.isFalse(computeTriggered, 'Compute has been triggered.'); - return [2 /*return*/]; - } - }); - }); }); - it('should fulfill the conditions from consumer side', function () { return __awaiter(void 0, void 0, void 0, function () { - var _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - _b.trys.push([0, 2, , 3]); - return [4 /*yield*/, consumer.requestTokens(escrowAmount)]; - case 1: - _b.sent(); - return [3 /*break*/, 3]; - case 2: - _a = _b.sent(); - return [3 /*break*/, 3]; - case 3: return [4 /*yield*/, ocean.agreements.conditions.lockReward(agreementId, escrowAmount, consumer)]; - case 4: - _b.sent(); - return [2 /*return*/]; - } - }); - }); }); - it('should fulfill the conditions from computing side', function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, ocean.agreements.conditions.grantServiceExecution(agreementId, did, consumer.getId(), publisher)]; - case 1: - _a.sent(); - return [4 /*yield*/, ocean.agreements.conditions.releaseReward(agreementId, escrowAmount, did, consumer.getId(), publisher.getId(), publisher)]; - case 2: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - it('should grant the access to the consumer', function () { return __awaiter(void 0, void 0, void 0, function () { - var computeTriggered; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, computeExecutionCondition.wasComputeTriggered(did, consumer.getId())]; - case 1: - computeTriggered = _a.sent(); - chai_1.assert.isTrue(computeTriggered, 'Compute has not been triggered.'); - return [2 /*return*/]; - } - }); - }); }); - }); -}); diff --git a/integration/ocean/SearchAsset.test.js b/integration/ocean/SearchAsset.test.js deleted file mode 100644 index 49b4900..0000000 --- a/integration/ocean/SearchAsset.test.js +++ /dev/null @@ -1,182 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -exports.__esModule = true; -var chai_1 = require("chai"); -var config_1 = require("../config"); -var utils_1 = require("../utils"); -var src_1 = require("../../src"); // @oceanprotocol/squid -describe('Search Asset', function () { - var ocean; - var publisher; - var testHash = Math.random() - .toString(36) - .substr(2); - var price; - var metadataGenerator = function (name) { - return utils_1.generateMetadata("" + name + testHash, price); - }; - var test1length; - var test2length; - var test3length; - before(function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, src_1.Ocean.getInstance(config_1.config) - // Accounts - ]; - case 1: - ocean = _a.sent(); - return [4 /*yield*/, ocean.accounts.list()]; - case 2: - publisher = (_a.sent())[0]; - return [2 /*return*/]; - } - }); - }); }); - it('should be able to search the assets', function () { return __awaiter(void 0, void 0, void 0, function () { - var ddos; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, ocean.assets.search("Test1" + testHash)]; - case 1: - ddos = (_a.sent()).results; - chai_1.assert.isArray(ddos, 'A search should return an array'); - test1length = ddos.length; - return [4 /*yield*/, ocean.assets.search("Test2" + testHash)]; - case 2: - test2length = (_a.sent()).results.length; - return [4 /*yield*/, ocean.assets.search("Test3" + testHash)]; - case 3: - test3length = (_a.sent()).results.length; - if (!ocean.keeper.dispenser) { - price = 0; - } - return [2 /*return*/]; - } - }); - }); }); - it('should register an asset', function () { return __awaiter(void 0, void 0, void 0, function () { - var _a, _b, _c, _d, _e, _f, _g, _h; - return __generator(this, function (_j) { - switch (_j.label) { - case 0: - _b = (_a = chai_1.assert).instanceOf; - return [4 /*yield*/, ocean.assets.create(metadataGenerator('Test1'), publisher)]; - case 1: - _b.apply(_a, [_j.sent(), - src_1.DDO]); - _d = (_c = chai_1.assert).instanceOf; - return [4 /*yield*/, ocean.assets.create(metadataGenerator('Test2'), publisher)]; - case 2: - _d.apply(_c, [_j.sent(), - src_1.DDO]); - _f = (_e = chai_1.assert).instanceOf; - return [4 /*yield*/, ocean.assets.create(metadataGenerator('Test2'), publisher)]; - case 3: - _f.apply(_e, [_j.sent(), - src_1.DDO]); - _h = (_g = chai_1.assert).instanceOf; - return [4 /*yield*/, ocean.assets.create(metadataGenerator('Test3'), publisher)]; - case 4: - _h.apply(_g, [_j.sent(), - src_1.DDO]); - return [2 /*return*/]; - } - }); - }); }); - it('should search by text and see the increment of DDOs', function () { return __awaiter(void 0, void 0, void 0, function () { - var _a, _b, _c, _d; - return __generator(this, function (_e) { - switch (_e.label) { - case 0: - _b = (_a = chai_1.assert).equal; - return [4 /*yield*/, ocean.assets.search("Test2" + testHash)]; - case 1: - _b.apply(_a, [(_e.sent()).results.length - test2length, - 2, - 'Something was wrong searching the assets']); - _d = (_c = chai_1.assert).equal; - return [4 /*yield*/, ocean.assets.search("Test3" + testHash)]; - case 2: - _d.apply(_c, [(_e.sent()).results.length - test3length, - 1, - 'Something was wrong searching the assets']); - return [2 /*return*/]; - } - }); - }); }); - it('should return a list of DDOs', function () { return __awaiter(void 0, void 0, void 0, function () { - var ddos; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, ocean.assets.search("Test1" + testHash)]; - case 1: - ddos = (_a.sent()).results; - chai_1.assert.equal(ddos.length - test1length, 1, 'Something was wrong searching the assets'); - ddos.map(function (ddo) { - return chai_1.assert.instanceOf(ddo, src_1.DDO, 'The DDO is not an instance of a DDO'); - }); - return [2 /*return*/]; - } - }); - }); }); - it('should be able to do a query to get a list of DDOs', function () { return __awaiter(void 0, void 0, void 0, function () { - var ddos; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, ocean.assets.query({ - page: 1, - offset: 1, - query: { - text: ["Test2" + testHash] - }, - sort: { - text: 1 - } - })]; - case 1: - ddos = (_a.sent()).results; - chai_1.assert.equal(ddos.length, 1, 'Something was wrong searching the assets'); - ddos.map(function (ddo) { - return chai_1.assert.instanceOf(ddo, src_1.DDO, 'The DDO is not an instance of a DDO'); - }); - return [2 /*return*/]; - } - }); - }); }); -}); diff --git a/integration/ocean/SecretStore.test.js b/integration/ocean/SecretStore.test.js deleted file mode 100644 index 9fd271c..0000000 --- a/integration/ocean/SecretStore.test.js +++ /dev/null @@ -1,75 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -exports.__esModule = true; -var chai_1 = require("chai"); -var config_1 = require("../config"); -var src_1 = require("../../src"); // @oceanprotocol/squid -describe('Secret Store', function () { - var ocean; - var account; - var did = src_1.DID.generate(); - var content = { content: 'Test 123' }; - var encryptedContent; - before(function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, src_1.Ocean.getInstance(config_1.config) - // Accounts - ]; - case 1: - ocean = _a.sent(); - return [4 /*yield*/, ocean.accounts.list()]; - case 2: - account = (_a.sent())[0]; - return [2 /*return*/]; - } - }); - }); }); - it('should encrypt a text', function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, ocean.secretStore.encrypt(did.getId(), content, account)]; - case 1: - encryptedContent = _a.sent(); - chai_1.assert.isDefined(encryptedContent); - chai_1.assert.match(encryptedContent, /^0x[a-f0-9]{76}$/i); - return [2 /*return*/]; - } - }); - }); }); -}); diff --git a/integration/ocean/Signature.test.js b/integration/ocean/Signature.test.js deleted file mode 100644 index 4d20962..0000000 --- a/integration/ocean/Signature.test.js +++ /dev/null @@ -1,115 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -exports.__esModule = true; -var chai_1 = require("chai"); -var config_1 = require("../config"); -var src_1 = require("../../src"); // @oceanprotocol/squid -// WARN: not integration test. It has been done here because constant values -// depends on the first account on spree (only accessible from integration test) -describe('Signature', function () { - var ocean; - var consumer; - before(function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, src_1.Ocean.getInstance(config_1.config) - // Accounts - ]; - case 1: - ocean = _a.sent(); - return [4 /*yield*/, ocean.accounts.list()]; - case 2: - consumer = (_a.sent())[0]; - return [2 /*return*/]; - } - }); - }); }); - it('hashServiceAgreement should generate the correct signature', function () { - var templateId = "0x" + 'f'.repeat(64); - var agreementId = "0x" + 'e'.repeat(64); - var accessId = "0x" + 'a'.repeat(64); - var lockId = "0x" + 'b'.repeat(64); - var escrowId = "0x" + 'c'.repeat(64); - var hash = ocean.utils.agreements.hashServiceAgreement(templateId, agreementId, [lockId, accessId, escrowId], [0, 0, 0], [0, 0, 0]); - chai_1.assert.equal(hash, '0x464dac3b79a47f8acad54f67a0f4473249330f025c69687531e58c2e43b36437', 'The signature is not correct.'); - }); - it('signServiceAgreement should generate the correct signature', function () { return __awaiter(void 0, void 0, void 0, function () { - var templates, did, templateId, agreementId, serviceAgreementTemplate, ddo, signature; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - templates = ocean.keeper.templates; - did = "did:op:" + 'c'.repeat(64); - templateId = "0x" + 'f'.repeat(64); - agreementId = "0x" + 'e'.repeat(64); - return [4 /*yield*/, templates.escrowAccessSecretStoreTemplate.getServiceAgreementTemplate()]; - case 1: - serviceAgreementTemplate = _a.sent(); - ddo = new src_1.DDO({ - id: did, - service: [ - { - type: 'access', - index: 0, - purchaseEndpoint: undefined, - serviceEndpoint: undefined, - templateId: templateId, - attributes: { - serviceAgreementTemplate: serviceAgreementTemplate - } - }, - { - type: 'metadata', - index: 1, - attributes: { - main: { - price: 10 - } - } - } - ] - }); - return [4 /*yield*/, ocean.utils.agreements.signServiceAgreement(ddo, 0, agreementId, ["0x" + '1'.repeat(64), "0x" + '2'.repeat(64), "0x" + '3'.repeat(64)], consumer)]; - case 2: - signature = _a.sent(); - chai_1.assert.equal(signature, '0xa04568fccdda7e1594e3e615f8d71b14733705aabe5294af0b7f46f0aedb9d5906a2caa6142ee4de10534a47c5a7083b21b2d3e9a96ac462bc0b9d25070e981e1c', 'The signature is not correct.'); - return [2 /*return*/]; - } - }); - }); }); -}); diff --git a/integration/ocean/Versions.test.js b/integration/ocean/Versions.test.js deleted file mode 100644 index b9b6073..0000000 --- a/integration/ocean/Versions.test.js +++ /dev/null @@ -1,74 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -exports.__esModule = true; -var chai_1 = require("chai"); -var config_1 = require("../config"); -var src_1 = require("../../src"); // @oceanprotocol/squid -describe('Versions', function () { - var ocean; - before(function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, src_1.Ocean.getInstance(config_1.config)]; - case 1: - ocean = _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - // TODO: enable again after new versions of Brizo - xit('should return the versions', function () { return __awaiter(void 0, void 0, void 0, function () { - var versions; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, ocean.versions.get()]; - case 1: - versions = _a.sent(); - chai_1.assert.equal(versions.aquarius.status, src_1.OceanPlatformTechStatus.Working); - chai_1.assert.equal(versions.brizo.status, src_1.OceanPlatformTechStatus.Working); - chai_1.assert.equal(versions.squid.status, src_1.OceanPlatformTechStatus.Working); - chai_1.assert.deepEqual(versions.status, { - ok: true, - contracts: true, - network: true - }); - return [2 /*return*/]; - } - }); - }); }); -}); diff --git a/integration/utils/ddo-metadata-generator.js b/integration/utils/ddo-metadata-generator.js deleted file mode 100644 index 178e06c..0000000 --- a/integration/utils/ddo-metadata-generator.js +++ /dev/null @@ -1,58 +0,0 @@ -"use strict"; -var __assign = (this && this.__assign) || function () { - __assign = Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); -}; -exports.__esModule = true; -var metadata = { - main: { - name: undefined, - type: 'dataset', - dateCreated: '2012-10-10T17:00:00Z', - datePublished: '2012-10-10T17:00:00Z', - author: 'Met Office', - license: 'CC-BY', - price: '21' + '0'.repeat(18), - files: [ - { - index: 0, - contentType: 'application/json', - url: 'https://raw.githubusercontent.com/oceanprotocol/squid-js/master/package.json' - }, - { - index: 1, - contentType: 'text/plain', - url: 'https://raw.githubusercontent.com/oceanprotocol/squid-js/master/README.md' - } - ] - }, - additionalInformation: { - description: 'Weather information of UK including temperature and humidity', - copyrightHolder: 'Met Office', - workExample: '423432fsd,51.509865,-0.118092,2011-01-01T10:55:11+00:00,7.2,68', - links: [ - { - name: 'Sample of Asset Data', - type: 'sample', - url: 'https://foo.com/sample.csv' - }, - { - name: 'Data Format Definition', - type: 'format', - url: 'https://foo.com/sample.csv' - } - ], - inLanguage: 'en', - categories: ['Economy', 'Data Science'], - tags: ['weather', 'uk', '2011', 'temperature', 'humidity'] - } -}; -exports.generateMetadata = function (name, price) { return (__assign(__assign({}, metadata), { main: __assign(__assign({}, metadata.main), { name: name, price: (price || 21) + '0'.repeat(18) }), additionalInformation: __assign({}, metadata.additionalInformation) })); }; -exports.getMetadata = function (price) { return exports.generateMetadata('TestAsset', price); }; diff --git a/integration/utils/index.js b/integration/utils/index.js deleted file mode 100644 index e10379b..0000000 --- a/integration/utils/index.js +++ /dev/null @@ -1,6 +0,0 @@ -"use strict"; -function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} -exports.__esModule = true; -__export(require("./ddo-metadata-generator")); From 26de27a31be5db724b8755c6402bfe66ab111a6c Mon Sep 17 00:00:00 2001 From: ssallam Date: Wed, 22 Jan 2020 13:46:10 +0100 Subject: [PATCH 26/29] Fix issues in creating agreement. Mainly the issue was using the publisher address in place of the provider's in the actors list when creating agreement. This also adds an optional `provider` argument to the order method. Add method to fetch providers of a did (via the didRegistry). --- integration/config.ts | 2 +- integration/ocean/ConsumeAsset.test.ts | 3 ++- integration/ocean/ConsumeAssetBrizo.test.ts | 2 +- integration/ocean/ConsumeBigAsset.test.ts | 2 +- ...terEscrowAccessSecretStoreTemplate.test.ts | 7 +++--- ...sterEscrowComputeExecutionTemplate.test.ts | 7 +++--- src/keeper/contracts/DIDRegistry.ts | 5 +++++ .../templates/AgreementTemplateBase.ts | 12 ++++++---- src/ocean/OceanAgreements.ts | 22 +++++++++++++------ src/ocean/OceanAssets.ts | 14 +++++++++++- 10 files changed, 54 insertions(+), 22 deletions(-) diff --git a/integration/config.ts b/integration/config.ts index c3fa6c3..3d2bd3d 100644 --- a/integration/config.ts +++ b/integration/config.ts @@ -6,7 +6,7 @@ const configJson: Config = { aquariusUri: 'http://aquarius:5000', brizoUri: 'http://localhost:8030', secretStoreUri: 'http://localhost:12001', - brizoAddress: '0x068ed00cf0441e4829d9784fcbe7b9e26d4bd8d0', + brizoAddress: '0x068Ed00cF0441e4829D9784fCBe7b9e26D4BD8d0', verbose: false } diff --git a/integration/ocean/ConsumeAsset.test.ts b/integration/ocean/ConsumeAsset.test.ts index be85f89..48a933b 100644 --- a/integration/ocean/ConsumeAsset.test.ts +++ b/integration/ocean/ConsumeAsset.test.ts @@ -90,7 +90,8 @@ describe('Consume Asset', () => { accessService.index, serviceAgreementSignatureResult.signature, consumer, - publisher + config.brizoAddress, + consumer ) assert.isTrue(success) diff --git a/integration/ocean/ConsumeAssetBrizo.test.ts b/integration/ocean/ConsumeAssetBrizo.test.ts index 4459f1b..53c5924 100644 --- a/integration/ocean/ConsumeAssetBrizo.test.ts +++ b/integration/ocean/ConsumeAssetBrizo.test.ts @@ -39,7 +39,7 @@ describe('Consume Asset (Brizo)', () => { await consumer.authenticate() }) - it('should regiester an asset', async () => { + it('should register an asset', async () => { const steps = [] ddo = await ocean.assets .create(metadata as any, publisher) diff --git a/integration/ocean/ConsumeBigAsset.test.ts b/integration/ocean/ConsumeBigAsset.test.ts index ca2223f..b1d1f22 100644 --- a/integration/ocean/ConsumeBigAsset.test.ts +++ b/integration/ocean/ConsumeBigAsset.test.ts @@ -43,7 +43,7 @@ xdescribe('Consume Asset (Large size)', () => { } }) - it('should regiester an asset', async () => { + it('should register an asset', async () => { ddo = await ocean.assets.create(metadata as any, publisher) assert.instanceOf(ddo, DDO) diff --git a/integration/ocean/RegisterEscrowAccessSecretStoreTemplate.test.ts b/integration/ocean/RegisterEscrowAccessSecretStoreTemplate.test.ts index 9100faa..acb56f4 100644 --- a/integration/ocean/RegisterEscrowAccessSecretStoreTemplate.test.ts +++ b/integration/ocean/RegisterEscrowAccessSecretStoreTemplate.test.ts @@ -154,8 +154,8 @@ describe('Register Escrow Access Secret Store Template', () => { [conditionIdLock, conditionIdAccess, conditionIdEscrow], [0, 0, 0], [0, 0, 0], - [consumer.getId(), publisher.getId()], - publisher.getId() + [consumer.getId(), config.brizoAddress], + consumer.getId() ) assert.isTrue(agreement.status) @@ -247,7 +247,8 @@ describe('Register Escrow Access Secret Store Template', () => { did, escrowAmount, consumer.getId(), - publisher.getId() + config.brizoAddress, + consumer.getId() ) assert.match(agreementId, /^0x[a-f0-9]{64}$/i) diff --git a/integration/ocean/RegisterEscrowComputeExecutionTemplate.test.ts b/integration/ocean/RegisterEscrowComputeExecutionTemplate.test.ts index 305402f..7f476fa 100644 --- a/integration/ocean/RegisterEscrowComputeExecutionTemplate.test.ts +++ b/integration/ocean/RegisterEscrowComputeExecutionTemplate.test.ts @@ -152,8 +152,8 @@ describe('Register Escrow Compute Execution Template', () => { [conditionIdLock, conditionIdCompute, conditionIdEscrow], [0, 0, 0], [0, 0, 0], - [consumer.getId(), publisher.getId()], - publisher.getId() + [consumer.getId(), config.brizoAddress], + consumer.getId() ) assert.isTrue(agreement.status) @@ -245,7 +245,8 @@ describe('Register Escrow Compute Execution Template', () => { did, escrowAmount, consumer.getId(), - publisher.getId() + config.brizoAddress, + consumer.getId() ) assert.match(agreementId, /^0x[a-f0-9]{64}$/i) diff --git a/src/keeper/contracts/DIDRegistry.ts b/src/keeper/contracts/DIDRegistry.ts index 35e41ac..026491d 100644 --- a/src/keeper/contracts/DIDRegistry.ts +++ b/src/keeper/contracts/DIDRegistry.ts @@ -37,6 +37,11 @@ export default class DIDRegistry extends ContractBase { return this.call('isDIDProvider', [didZeroX(did), zeroX(provider)]) } + public async getDIDProviders(did: string): Promise { + const { providers } = await this.call('getDIDRegister', [didZeroX(did)]) + return providers + } + public async getAttributesByOwner(owner: string): Promise { return ( await this.getPastEvents('DIDAttributeRegistered', { diff --git a/src/keeper/contracts/templates/AgreementTemplateBase.ts b/src/keeper/contracts/templates/AgreementTemplateBase.ts index b8b2683..6757a6a 100644 --- a/src/keeper/contracts/templates/AgreementTemplateBase.ts +++ b/src/keeper/contracts/templates/AgreementTemplateBase.ts @@ -16,6 +16,7 @@ import { ConditionState, conditionStateNames } from '../conditions' +import {ServiceType} from "../../../ddo/Service"; export interface Conditions { lockRewardCondition: LockRewardCondition @@ -65,13 +66,16 @@ export class AgreementTemplateBase { public async createAgreementFromDDO( agreementId: string, ddo: DDO, + serviceType: ServiceType, consumer: string, + provider: string, from?: string ) { return !!(await this.createFullAgreement( ddo.shortId(), - ddo.findServiceByType('metadata').attributes.main.price, + ddo.findServiceByType(serviceType).attributes.main.price, consumer, + provider, from, agreementId )) @@ -104,6 +108,7 @@ export class AgreementTemplateBase { * @param {string} did Asset DID. * @param {number} amount Asset price. * @param {string} consumer ethereum address of consumer. + * @param {string} provider ethereum address of service provider (brizo address) * @param {string} from Consumer address. * @param {string} agreementId bytes32 agreement id. * @@ -113,6 +118,7 @@ export class AgreementTemplateBase { did: string, amount: number | string, consumer: string, + provider: string, from?: string, agreementId: string = generateId() ): Promise { @@ -123,7 +129,6 @@ export class AgreementTemplateBase { consumer ) - const publisher = await this.didRegistry.getDIDOwner(did) const timeouts = [0, 0, 0] const timelocks = [0, 0, 0] await this.agreementStoreManager.createAgreement( @@ -133,10 +138,9 @@ export class AgreementTemplateBase { conditionIds, timelocks, timeouts, - [consumer, publisher], + [consumer, provider], from ) - return zeroX(agreementId) } diff --git a/src/ocean/OceanAgreements.ts b/src/ocean/OceanAgreements.ts index 35c7eda..0ba2dd3 100644 --- a/src/ocean/OceanAgreements.ts +++ b/src/ocean/OceanAgreements.ts @@ -106,7 +106,8 @@ export class OceanAgreements extends Instantiable { * @param {number} index Service index. * @param {string} signature Service agreement signature. * @param {Account} consumer Consumer account. - * @param {Account} publisher Publisher account. + * @param {string} provider ethereum address of service provider + * @param {Account} from account of party creating the agreement (usually the consumer). * @return {Promise} */ public async create( @@ -115,16 +116,23 @@ export class OceanAgreements extends Instantiable { index: number, signature: string, consumer: Account, - publisher: Account + provider: string, + from: Account ) { const d: DID = DID.parse(did) const ddo = await this.ocean.aquarius.retrieveDDO(d) - - const templateName = ddo.findServiceById<'access'>(index).attributes - .serviceAgreementTemplate.contractName + const service = ddo.findServiceById(index) + const templateName = service.attributes.serviceAgreementTemplate.contractName await this.ocean.keeper .getTemplateByName(templateName) - .createAgreementFromDDO(agreementId, ddo, consumer.getId(), publisher.getId()) + .createAgreementFromDDO( + agreementId, + ddo, + service.type, + consumer.getId(), + provider, + from.getId() + ) return true } @@ -151,7 +159,7 @@ export class OceanAgreements extends Instantiable { ) if (templateId === `0x${'0'.repeat(64)}`) { - console.error('agreement is not found: ' + agreementId + ' ' + templateId) + this.logger.error(`agreement ${agreementId} is not found, templateId is ${templateId}`) return } diff --git a/src/ocean/OceanAssets.ts b/src/ocean/OceanAssets.ts index 8f558eb..5d566d8 100644 --- a/src/ocean/OceanAssets.ts +++ b/src/ocean/OceanAssets.ts @@ -284,12 +284,14 @@ export class OceanAssets extends Instantiable { * @param {string} did Decentralized ID. * @param {number} index Service index. * @param {Account} consumer Consumer account. + * @param {string} provider ethereum address of service provider (optional) * @return {Promise} Returns Agreement ID */ public order( did: string, index: number, - consumer: Account + consumer: Account, + provider?: string ): SubscribablePromise { return new SubscribablePromise(async observer => { const oceanAgreements = this.ocean.agreements @@ -343,12 +345,22 @@ export class OceanAssets extends Instantiable { observer.next(OrderProgressStep.CreatingAgreement) this.logger.log('Creating agreement') + + // Get provider from didRegistry if not given in arguments + if (!provider) { + const providers = await keeper.didRegistry.getDIDProviders(ddo.shortId()) + if (!!providers) { + provider = providers[0] + } + } + await oceanAgreements.create( did, agreementId, index, undefined, consumer, + provider, consumer ) this.logger.log('Agreement created') From 19353437baf22b7224525ce69acab807d3eb392f Mon Sep 17 00:00:00 2001 From: ssallam Date: Wed, 22 Jan 2020 15:16:35 +0100 Subject: [PATCH 27/29] Fix test and return value from createAgreement. --- integration/ocean/ConsumeAsset.test.ts | 4 ++-- src/keeper/contracts/managers/AgreementStoreManager.ts | 2 +- src/ocean/OceanAgreements.ts | 4 +--- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/integration/ocean/ConsumeAsset.test.ts b/integration/ocean/ConsumeAsset.test.ts index 48a933b..9e4c679 100644 --- a/integration/ocean/ConsumeAsset.test.ts +++ b/integration/ocean/ConsumeAsset.test.ts @@ -99,8 +99,8 @@ describe('Consume Asset', () => { it('should get the agreement conditions status not fulfilled', async () => { // Wait for the agreement event - await ocean.keeper.agreementStoreManager - .getAgreementCreatedEvent(serviceAgreementSignatureResult.agreementId).once() + // await ocean.keeper.agreementStoreManager + // .getAgreementCreatedEvent(serviceAgreementSignatureResult.agreementId).once() const status = await ocean.agreements.status( serviceAgreementSignatureResult.agreementId ) diff --git a/src/keeper/contracts/managers/AgreementStoreManager.ts b/src/keeper/contracts/managers/AgreementStoreManager.ts index d3b7971..cd57b01 100644 --- a/src/keeper/contracts/managers/AgreementStoreManager.ts +++ b/src/keeper/contracts/managers/AgreementStoreManager.ts @@ -68,7 +68,7 @@ export class AgreementStoreManager extends ContractBase { actors: string[], from?: string ): Promise { - this.sendFrom( + return this.sendFrom( 'createAgreement', [ zeroX(agreementId), diff --git a/src/ocean/OceanAgreements.ts b/src/ocean/OceanAgreements.ts index 0ba2dd3..8311499 100644 --- a/src/ocean/OceanAgreements.ts +++ b/src/ocean/OceanAgreements.ts @@ -123,7 +123,7 @@ export class OceanAgreements extends Instantiable { const ddo = await this.ocean.aquarius.retrieveDDO(d) const service = ddo.findServiceById(index) const templateName = service.attributes.serviceAgreementTemplate.contractName - await this.ocean.keeper + return await this.ocean.keeper .getTemplateByName(templateName) .createAgreementFromDDO( agreementId, @@ -133,8 +133,6 @@ export class OceanAgreements extends Instantiable { provider, from.getId() ) - - return true } /** From 5f331bf467f93a492cf1e56f0793fa8c35ce6bee Mon Sep 17 00:00:00 2001 From: ssallam Date: Wed, 22 Jan 2020 15:31:27 +0100 Subject: [PATCH 28/29] Fix style issues. --- src/keeper/contracts/managers/AgreementStoreManager.ts | 1 - src/keeper/contracts/templates/AgreementTemplateBase.ts | 2 +- .../contracts/templates/EscrowAccessSecretStoreTemplate.ts | 1 - .../contracts/templates/EscrowComputeExecutionTemplate.ts | 7 +++---- src/ocean/OceanAgreements.ts | 6 ++++-- src/ocean/OceanAssets.ts | 7 ++++--- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/keeper/contracts/managers/AgreementStoreManager.ts b/src/keeper/contracts/managers/AgreementStoreManager.ts index cd57b01..12cb125 100644 --- a/src/keeper/contracts/managers/AgreementStoreManager.ts +++ b/src/keeper/contracts/managers/AgreementStoreManager.ts @@ -99,5 +99,4 @@ export class AgreementStoreManager extends ContractBase { agreementId: zeroX(agreementId) }) } - } diff --git a/src/keeper/contracts/templates/AgreementTemplateBase.ts b/src/keeper/contracts/templates/AgreementTemplateBase.ts index 6757a6a..202c73b 100644 --- a/src/keeper/contracts/templates/AgreementTemplateBase.ts +++ b/src/keeper/contracts/templates/AgreementTemplateBase.ts @@ -16,7 +16,7 @@ import { ConditionState, conditionStateNames } from '../conditions' -import {ServiceType} from "../../../ddo/Service"; +import { ServiceType } from '../../../ddo/Service' export interface Conditions { lockRewardCondition: LockRewardCondition diff --git a/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts b/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts index ad6e1ef..fe91cf6 100644 --- a/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts +++ b/src/keeper/contracts/templates/EscrowAccessSecretStoreTemplate.ts @@ -4,7 +4,6 @@ import { AgreementStoreManager, TemplateStoreManager } from '../managers' import DIDRegistry from '../DIDRegistry' export class EscrowAccessSecretStoreTemplate extends AgreementTemplateBase { - public constructor( templateManager: TemplateStoreManager, agreementStoreManager: AgreementStoreManager, diff --git a/src/keeper/contracts/templates/EscrowComputeExecutionTemplate.ts b/src/keeper/contracts/templates/EscrowComputeExecutionTemplate.ts index ed2585a..3720514 100644 --- a/src/keeper/contracts/templates/EscrowComputeExecutionTemplate.ts +++ b/src/keeper/contracts/templates/EscrowComputeExecutionTemplate.ts @@ -1,10 +1,9 @@ -import { AgreementTemplateBase, Conditions} from './AgreementTemplateBase' +import { AgreementTemplateBase, Conditions } from './AgreementTemplateBase' import { escrowComputeServiceAgreementTemplate } from './EscrowCompute.serviceAgreementTemplate' -import { AgreementStoreManager, TemplateStoreManager } from '../managers'; -import DIDRegistry from '../DIDRegistry'; +import { AgreementStoreManager, TemplateStoreManager } from '../managers' +import DIDRegistry from '../DIDRegistry' export class EscrowComputeExecutionTemplate extends AgreementTemplateBase { - public constructor( templateManager: TemplateStoreManager, agreementStoreManager: AgreementStoreManager, diff --git a/src/ocean/OceanAgreements.ts b/src/ocean/OceanAgreements.ts index 8311499..8cf8247 100644 --- a/src/ocean/OceanAgreements.ts +++ b/src/ocean/OceanAgreements.ts @@ -123,7 +123,7 @@ export class OceanAgreements extends Instantiable { const ddo = await this.ocean.aquarius.retrieveDDO(d) const service = ddo.findServiceById(index) const templateName = service.attributes.serviceAgreementTemplate.contractName - return await this.ocean.keeper + return this.ocean.keeper .getTemplateByName(templateName) .createAgreementFromDDO( agreementId, @@ -157,7 +157,9 @@ export class OceanAgreements extends Instantiable { ) if (templateId === `0x${'0'.repeat(64)}`) { - this.logger.error(`agreement ${agreementId} is not found, templateId is ${templateId}`) + this.logger.error( + `agreement ${agreementId} is not found, templateId is ${templateId}` + ) return } diff --git a/src/ocean/OceanAssets.ts b/src/ocean/OceanAssets.ts index 5d566d8..537fd8b 100644 --- a/src/ocean/OceanAssets.ts +++ b/src/ocean/OceanAssets.ts @@ -347,10 +347,11 @@ export class OceanAssets extends Instantiable { this.logger.log('Creating agreement') // Get provider from didRegistry if not given in arguments + let _provider = provider if (!provider) { const providers = await keeper.didRegistry.getDIDProviders(ddo.shortId()) - if (!!providers) { - provider = providers[0] + if (providers) { + _provider = providers[0] } } @@ -360,7 +361,7 @@ export class OceanAssets extends Instantiable { index, undefined, consumer, - provider, + _provider, consumer ) this.logger.log('Agreement created') From 2108f512aa888ea85af3c185029a105d47dae8a5 Mon Sep 17 00:00:00 2001 From: ssallam Date: Wed, 22 Jan 2020 16:09:55 +0100 Subject: [PATCH 29/29] Update events-handler version for travis tests. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 8901f65..b6ed3d6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,7 +24,7 @@ before_script: - export AQUARIUS_VERSION=v1.0.5 - export BRIZO_VERSION=v0.8.1 - export KEEPER_VERSION=v0.13.2 - - export EVENTS_HANDLER_VERSION=v0.4.1 + - export EVENTS_HANDLER_VERSION=v0.4.4 - export KEEPER_OWNER_ROLE_ADDRESS="0xe2DD09d719Da89e5a3D0F2549c7E24566e947260" - rm -rf "${HOME}/.ocean/keeper-contracts/artifacts" - bash -x start_ocean.sh --no-commons --no-dashboard 2>&1 > start_ocean.log &