{"_id":"@blukat29/ethers-ext","_rev":"1-ebe2f126bd090aaa5ef85efa8503efb7","name":"@blukat29/ethers-ext","dist-tags":{"latest":"1.0.3"},"versions":{"0.9.0":{"name":"@blukat29/ethers-ext","version":"0.9.0","main":"dist/src/index.js","scripts":{"build":"tsc","watch":"tsc -w","test":"mocha test/**/*.ts -r ts-node/register","prepublishOnly":"npm run build"},"license":"MIT","peerDependencies":{"ethers":"^5.7.2"},"devDependencies":{"@types/chai":"^4.3.4","@types/lodash":"^4.14.192","@types/mocha":"^10.0.1","chai":"^4.3.7","mocha":"^10.2.0","ts-node":"^10.9.1","typescript":"^5.0.4"},"dependencies":{"lodash":"^4.17.21","@klaytn/web3rpc":"^0.9.0"},"types":"./dist/src/index.d.ts","gitHead":"68435959c5b3b23aa16625e4a65dd1dacbefefe2","description":"Ethers.js Extension for Klaytn offers:","_id":"@blukat29/ethers-ext@0.9.0","_nodeVersion":"14.19.1","_npmVersion":"9.4.1","dist":{"integrity":"sha512-HY/HATnPL44x1gsplY9KnlNiM9p283gnxmwFfbLo0W7Tqdp+wa6sZn6L/h+RxnIwrO6NHSfYwMBiMptivMrGeQ==","shasum":"02749dae4c8dbc3071a424e20a1d5bc611c8b99e","tarball":"https://registry.npmjs.org/@blukat29/ethers-ext/-/ethers-ext-0.9.0.tgz","fileCount":85,"unpackedSize":382481,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGW1wqi9EnQd7yQHrTVdHQqUD2u5UVZrcUpKYvrKMRULAiEA02cfQe0GaJpSO8bo3vtAahgI0ycdNRwCVWE+H5aSYF8="}]},"_npmUser":{"name":"blukat29","email":"yunjong.kaist@gmail.com"},"directories":{},"maintainers":[{"name":"blukat29","email":"yunjong.kaist@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethers-ext_0.9.0_1688433860427_0.8475280280605753"},"_hasShrinkwrap":false},"1.0.3":{"name":"@blukat29/ethers-ext","version":"1.0.3","license":"MIT","description":"ethers.js extension for Klaytn blockchain","keywords":["ethereum","ethers","ethersjs","klaytn","klaytn sdk","klaytn api"],"homepage":"https://github.com/klaytn/web3klaytn/tree/dev/ethers-ext","repository":{"type":"git","url":"git+https://github.com/klaytn/web3klaytn.git"},"main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./v5":{"types":"./dist/v5/index.d.ts","default":"./dist/v5/index.js"},"./v6":{"types":"./dist/v6/index.d.ts","default":"./dist/v6/index.js"}},"scripts":{"build":"npm run build:esm && npm run build:bundle","build:esm":"tsc","build:bundle":"webpack --mode production","watch":"tsc -w","lint":"npm run lint:check","lint:check":"eslint example src test --cache --quiet","lint:fix":"eslint example src test --cache --fix","test":"mocha --timeout 10000 -r ts-node/register \"test/**/*.ts\"","prepublishOnly":"npm run build"},"devDependencies":{"@klaytn/ethers-ext":"file:./","@types/chai":"^4.3.7","@types/chai-as-promised":"^7.1.5","@types/lodash":"^4.14.192","@types/mocha":"^10.0.4","@typescript-eslint/eslint-plugin":"^6.1.0","chai":"^4.3.7","chai-as-promised":"^7.1.1","eslint":"^8.45.0","eslint-plugin-import":"^2.27.5","ethers":"^5.7.2","mocha":"^10.2.0","ts-loader":"^9.5.1","ts-node":"^10.9.1","typedoc":"^0.25.4","typescript":"^5.0.4","webpack":"^5.89.0","webpack-cli":"^5.1.4","webpack-visualizer-plugin2":"^1.1.0"},"dependencies":{"@ethersproject/abstract-provider":"^5.7.0","@ethersproject/abstract-signer":"^5.7.0","@ethersproject/address":"^5.7.0","@ethersproject/bignumber":"^5.7.0","@ethersproject/bytes":"^5.7.0","@ethersproject/constants":"^5.7.0","@ethersproject/hash":"^5.7.0","@ethersproject/json-wallets":"^5.7.0","@ethersproject/keccak256":"^5.7.0","@ethersproject/logger":"^5.7.0","@ethersproject/networks":"^5.7.1","@ethersproject/properties":"^5.7.0","@ethersproject/providers":"^5.7.2","@ethersproject/signing-key":"^5.7.0","@ethersproject/strings":"^5.7.0","@ethersproject/transactions":"^5.7.0","@ethersproject/wallet":"^5.7.0","@ethersproject/web":"^5.7.1","@klaytn/js-ext-core":"^1.0.0","@klaytn/web3rpc":"^0.9.9","ethers6":"npm:ethers@^6.12.1","lodash":"^4.17.21"},"_id":"@blukat29/ethers-ext@1.0.3","gitHead":"ac64e0e36ec6a0d8c6b7ffbb458df4edaaa4b375","bugs":{"url":"https://github.com/klaytn/web3klaytn/issues"},"_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-NCqlei1eoNhwn8E/F7/rGZnZAG6uoHaQYFXxGTrgYXUbWMVCUjZFsgEdGRNOkCSJZQQoiWzVHUzLEVyqiwP2AA==","shasum":"00761fdb1ac5fc974c95012d026c39fa862dd96a","tarball":"https://registry.npmjs.org/@blukat29/ethers-ext/-/ethers-ext-1.0.3.tgz","fileCount":54,"unpackedSize":4240456,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDMJKRfdIlbfw7CYfzFQauZHIl/3l7BB9SrE/A43dAuQAiAkzm8aVrbKQ80z5sf2zv5WGmqBmCzgFjllbQlUPugcbA=="}]},"_npmUser":{"name":"blukat29","email":"yunjong.kaist@gmail.com"},"directories":{},"maintainers":[{"name":"blukat29","email":"yunjong.kaist@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethers-ext_1.0.3_1716456071504_0.02441472680312673"},"_hasShrinkwrap":false}},"time":{"created":"2023-07-04T01:24:20.314Z","0.9.0":"2023-07-04T01:24:20.593Z","modified":"2024-05-23T09:21:11.848Z","1.0.3":"2024-05-23T09:21:11.700Z"},"maintainers":[{"name":"blukat29","email":"yunjong.kaist@gmail.com"}],"description":"ethers.js extension for Klaytn blockchain","license":"MIT","readme":"# Ethers.js Extension for Klaytn\n\nEthers.js Extension for Klaytn offers:\n\n- Drop-in replacement to `ethers.Wallet` that handles both Ethereum and Klaytn transaction types\n  involving AccountKey and TxTypes.\n- Drop-in replacement to `ethers.providers.JsonRpcProvider` that provides accesses to both Ethereum RPCs and\n  Klaytn-specific RPCs.\n- Drop-in replacement to `ethers.Web3Provider` to work with both MetaMask (`window.ethereum`) and Kaikas (`window.klaytn`)\n\n## Note for ethers v6\n\n`@klaytn/ethers-ext` was developed based on ethers v5. As a result, ethers v6 classes are incompatible with ethers-ext classes. If you are using ethers v6 in your codebase, do not mix ethers v6 classes and ethers-ext classes. e.g. ethers v6 JsonRpcProvider cannot be supplied to ethers-ext Wallet.\n\n- **Don't**: mix ethers v6 and ethers-ext\n    ```js\n    const ethers = require(\"ethers\");\n    const { Wallet } = require(\"@klaytn/ethers-ext\");\n\n    const provider = new ethers.JsonRpcProvider(\"https://public-en-baobab.klaytn.net\");\n    const wallet = new Wallet(\"<private key>\", provider);\n    ```\n- **Do**: mix ethers v5 and ethers-ext\n    ```js\n    const ethers = require(\"ethers\");\n    const { Wallet } = require(\"@klaytn/ethers-ext\");\n\n    const provider = new ethers.providers.JsonRpcProvider(\"https://public-en-baobab.klaytn.net\");\n    const wallet = new Wallet(\"<private key>\", provider);\n    ```\n- **Do**: ethers-ext only\n    ```js\n    const { Wallet, JsonRpcProvider } = require(\"@klaytn/ethers-ext\");\n\n    const provider = new JsonRpcProvider(\"https://public-en-baobab.klaytn.net\");\n    const wallet = new Wallet(\"<private key>\", provider);\n    ```\n\n## Install\n\n### Node.js\n\n- Install\n    ```sh\n    npm install --save @klaytn/ethers-ext ethers@5\n    ```\n- ESM or TypeScript\n    ```ts\n    import { Wallet, JsonRpcProvider } from \"@klaytn/ethers-ext\";\n    const provider = new JsonRpcProvider(\"https://public-en-baobab.klaytn.net\");\n    const wallet = new Wallet(\"<private key>\", provider);\n    ```\n- CommonJS\n    ```js\n    const { Wallet, JsonRpcProvider } = require(\"@klaytn/ethers-ext\");\n    const provider = new JsonRpcProvider(\"https://public-en-baobab.klaytn.net\");\n    const wallet = new Wallet(\"<private key>\", provider);\n    ```\n\n### Browser\n\nIt is not recommended to use CDNs in production, But you can use below for quick prototyping.\n\n```html\n<script src=\"https://cdn.jsdelivr.net/npm/@klaytn/ethers-ext@latest/dist/ethers-ext.bundle.js\"></script>\n<script>\nconst provider = new ethers_ext.providers.Web3Provider(window.klaytn);\n</script>\n```\n\n## Usage\n\nSee [example](./example) and [test](./test).\n\n\n## Class extension design\n\n```mermaid\nclassDiagram\n    namespace ethers_v5 {\n        class ethers_Signer[\"ethers.Signer\"] {\n            provider\n            checkTransaction()\n            populateTransaction()\n            sendTransaction()\n        }\n        class ethers_Wallet[\"ethers.Wallet\"] {\n            connect()\n            getAddress()\n            signMessage()\n            signTransaction()\n            static fromEncryptedJson()\n            static fromEncryptedJsonSync()\n        }\n        class ethers_JsonRpcSigner[\"ethers.JsonRpcSigner\"] {\n            connect()\n            connectUnchecked()\n            getAddress()\n            signMessage()\n            signTransaction()\n            sendUncheckedTransaction()\n            _legacySignMessage()\n            _signTypedData()\n            override sendTransaction()\n        }\n\n        class ethers_Provider[\"ethers.Provider\"] {\n        }\n        class ethers_BaseProvider[\"ethers.BaseProvider\"] {\n        }\n        class ethers_JsonRpcProvider[\"ethers.JsonRpcProvider\"] {\n            getSigner()\n            send()\n        }\n        class ethers_Web3Provider[\"ethers.Web3Provider\"] {\n            override send()\n        }\n        class ethers_ExternalProvider[\"ethers.ExternalProvider\"] {\n            isMetaMask\n            request()\n        }\n    }\n    namespace klaytn_ethers_ext {\n        class Wallet {\n            override getAddress()\n            override checkTransaction()\n            override populateTransaction()\n            override signTransaction()\n            override sendTransaction()\n            override static fromEncryptedJson()\n            override static fromEncryptedJsonSync()\n            signTransactionAsFeePayer()\n            sendTransactionAsFeePayer()\n            static fromEncryptedJsonList()\n            static fromEncryptedJsonListSync()\n        }\n        class JsonRpcSigner {\n            override connectUnchecked()\n            override getAddress()\n            override signMessage()\n            override checkTransaction()\n            override populateTransaction()\n            override signTransaction()\n            override _legacySignMessage()\n            override _signTypedData()\n            override sendTransaction()\n            override sendUncheckedTransaction()\n        }\n\n        class JsonRpcProvider {\n            admin\n            debug\n            governance\n            klay\n            net\n            personal\n            txpool\n\n            override getSigner()\n            override send()\n        }\n        class Web3Provider {\n            admin\n            debug\n            governance\n            klay\n            net\n            personal\n            txpool\n\n            override getSigner()\n        }\n        class ExternalProvider {\n            isKaikas\n        }\n    }\n\n    ethers_Signer <|-- ethers_Wallet\n    ethers_Signer <|-- ethers_JsonRpcSigner\n\n    ethers_Wallet <|-- Wallet\n    ethers_JsonRpcSigner <|-- JsonRpcSigner\n\n\n    ethers_Provider <|-- ethers_BaseProvider\n    ethers_BaseProvider <|-- ethers_JsonRpcProvider\n    ethers_JsonRpcProvider <|-- ethers_Web3Provider\n\n    ethers_JsonRpcProvider <|-- JsonRpcProvider\n    ethers_Web3Provider <|-- Web3Provider\n    ethers_ExternalProvider <|-- ExternalProvider\n\n```\n","readmeFilename":"README.md","homepage":"https://github.com/klaytn/web3klaytn/tree/dev/ethers-ext","keywords":["ethereum","ethers","ethersjs","klaytn","klaytn sdk","klaytn api"],"repository":{"type":"git","url":"git+https://github.com/klaytn/web3klaytn.git"},"bugs":{"url":"https://github.com/klaytn/web3klaytn/issues"}}