Releases: EOSIO/eosjs
EOSJS v20.0.0 Release Notes
This release contains upgrades to the test suite and build process along with a breaking change outlined below.
A blog post providing more information can be found here.
Note: Since this release promotes EOSJS v20.0.0-beta3 to v20.0.0 (stable), using the @latest tag or the ^
will now automatically cause an upgrade from v16.0.x to v20.0.0. Developers using EOSJS v16.0.x are recommended to also review the updated README as v20.0.0 is a complete rewrite.
Highlighted Changes
BREAKING CHANGE: Removal of default exports (#490)
Using default exports causes inconsistencies depending on the module system used and makes refactoring code harder; therefore, they have been removed entirely from the EOSJS code. Developers using the JsSignatureProvider on v20.0.0-beta3, will need to update their syntax as follows:
import JsSignatureProvider from 'eosjs/dist/eosjs-jssig'
to
import { JsSignatureProvider } from 'eosjs/dist/eosjs-jssig'
Reduced bundle size significantly (#504)
Loading node modules from third parties is oftentimes the largest operation in a page load for end users. In order to minimize the loading time required for consumers of EOSJS, we have adjusted our distribution bundling process to exclude some unnecessary files. The EOSJS bundle size had been optimized since the v16.0.x release from 550kb to 130kb in v20.0.0-beta3. This change further reduces the bundle size from 130kb to 50kb.
Export Numeric module functions (#511)
The functions from the Numeric module can be useful for consuming applications; therefore, we decided to export them out as part of our bundle for NPM and for the web build.
Security Updates
Update and lock dependency versions in package.json
(#504)
By using the ^
in package.json
, the consuming package has control over when EOSJS dependencies update, which could lead to bugs upon updating automatically. To prevent this, we have locked all versions to a specific version, so we can have discretion over when dependencies update. We also updated some dependency versions to remove some security vulnerabilities.
Update and lock versions in EOSJS-ECC dependency (#49)
EOSJS-ECC dependencies have been locked in order to remove low priority security vulnerabilities.
Other Changes
- (#491)(#496) Integration test suite for the NodeJS environment using Jest
- (#502) Integration test suite for the web build using Cypress
- (#495) Imported in B1 linting config for Typescript (with minor modifications)
- (#514) Support
get_table_by_scope
RPC call - (#464) Support reverse order and show payer option for
get_table_rows
RPC call - (#486) Represent empty name as "" to match RPC v1
- (#507) Add contribution guidelines with CONTRIBUTING.md
- (#524) Update LICENSE
Thanks!
Special thanks to the community contributors that submitted patches for this release:
Disclaimer: Block.one makes its contribution on a voluntary basis as a member of the EOSIO community and is not responsible for ensuring the overall performance of the software or any related applications. We make no representation, warranty, guarantee or undertaking in respect of the releases described here, the related GitHub release, the EOSIO software or any related documentation, whether expressed or implied, including but not limited to the warranties or merchantability, fitness for a particular purpose and noninfringement. In no event shall we be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or documentation or the use or other dealings in the software or documentation. Any test results or performance figures are indicative and will not reflect performance under all conditions. Any reference to any third party or third-party product, resource or service is not an endorsement or recommendation by Block.one. We are not responsible, and disclaim any and all responsibility and liability, for your use of or reliance on any of these resources. Third-party resources may be updated, changed or terminated at any time, so the information here may be out of date or inaccurate.
v20.0.0-beta3 (beta2->beta3)
This release contains breaking changes for the SignatureProvider class. The changes for this release include:
-
Removal of default signature provider from index exports (
import { JsSignatureProvider } from 'eosjs'
->import JsSignatureProvider from 'eosjs/dist/eosjs-jssig'
)
Many eosjs implementations will leverage an alternate signature provider; keeping this out of the default export preventseosjs-ecc
from being bundled automatically, significantly reducing bundle size. This also further dissuades against using the default signature provider in production as this is not a safe practice because it requires users to paste their private key in the context of the webpage -
Necessary measures to ensure eosjs is compatible with React Native and in the Edge/IE11 browser
-
Return the serialized transaction with the signatures when
sign()
is called on the signature provider. Signature providers may have valid reasons to modify the transaction, sosign()
needs to return the reference to the new transaction. -
Optional
sign
parameter to return serialized transaction without signatures whensign()
is called on the signature provider. This can be used to create multisig transaction objects. -
Specify and automate certain aspects of release process
-
Revamp of README and Gitbook documentation (including more usage examples)
v20.0.0-beta2 (beta1->beta2)
This release contains simplifications and refactors to prepare to pull v20 out of beta. This release does contain breaking changes from our previous beta1 release, so refer to this list or the new README documentation if you are having issues upgrading to beta2
Changes include:
- Inclusion of optional AbiProvider in Api constructor (allows passing of local abi's as opposed to retrieving them from the chain)
- Moved tests and setup for tests into their own directory
- Remove default export in index.js to enable tree shaking in the future
import eosjs from 'eosjs'
->import * as eosjs from 'eosjs'
or specify exactly which named imports you need - Pulled interfaces into their own files and exported them separately
not possible before ->import { ApiInterfaces, RpcInterfaces } from 'eosjs'
- Simplify JsonRpc class
import { Rpc } from 'eosjs'
->import { JsonRpc } from 'eosjs'
new Rpc.JsonRpc()
->new JsonRpc()
- clarify danger of bringing keys into webpage context by prepending signature provider export with Js
import { SignatureProvider } from 'eosjs'
->import { JsSignatureProvider } from 'eosjs'
new SignatureProvider()
->new JsSignatureProvider()
- Export RpcError
- Changed BinaryAbi interface account_name field to camel case
- Updated README.md with new syntax and additional information
- set alwaysStrict flag in TSC
- Overall code cleanup
v16.0.8
Script integrity hashes. see usage.
sha512-ZNj2roAUohp5a75xghMPchptWns6y6Gxj6x6C56f2CSVPcmUNzHWUIpbXHeXPj0rD3yRSDXeF22Brs11F8ESSw== lib/eos.js
sha512-zhPSKFEBlDVvUzjl9aBS66cI8tDYoLetynuKvIekHT8NZZ12oxwcZ//M/eT/2Rb/pR/cjFvLD8104Cy//sdEnA== lib/eos.min.js
sha512-VKOxq8R14PpPh4nbLvD8DtxxTv1UmZp7pb3+P8IOQ36m3PBJpm6cd8pI8WRI6d9/aozwADKb3HSFQ7A8s+OhSA== lib/eos.min.js.map
v16.0.7
Script integrity hashes. see usage.
sha512-cBHEVnypCM7GrkDkIOufWlLSnuP4DZ5VJY483iXVI79RtETkfav+n5lRbEoYpPDmdnAbvzH8XK+iDZdI9SzCYA== lib/eos.js
sha512-PN1FGjtx9uGyhFbWFlCiM6CUsnVl68Mw//cPNhYRApYJvjcvPUzPsaoWW/zBhnR2V/r62CMTRDQf9X/nfx7oSg== lib/eos.min.js
sha512-gK4w1toMYX+VDt+DcHu9voY1CVF/lEV6lMakFvUHAi3ue9SgWmoAzx/Ngklaway5DPPJpWwfTZMvPgX0sCnoXg== lib/eos.min.js.map
v16.0.6
Script integrity hashes. see usage.
sha512-1+9QoHM15or8AQMLftEEACcwATU38fqGn1q8NiZ6ybA6fFGWSrdx7ppR859TEwYQAASIUpi7fd8UzQZfqLA6pQ== lib/eos.js
sha512-IS9vyI+sMK7MYNJgHj9G8Li21QYs59sRW/Nyzi+dKUh6bF6OfpOnvzSCTiegWftY1ozOmmyacCH2QIJpZgbuKw== lib/eos.min.js
sha512-g905cUn6OWkdrFTNXd87/ZvTpOHKM0/sOhcGsnS+BFQZ0pp2+KnO6SWg/HdgB/tDvOEm6zSY8p8+/H99cteGPQ== lib/eos.min.js.map
v16.0.3
Script integrity hashes. see usage.
sha512-IROKp40AWkXmwbin81GOCaYvLeQ/x9PUlf+knUmUNGCCeJtElb/sRQ2W1H12AwohAUV3iFzubCuFxsq9fJVuIg== lib/eos.js
sha512-Lb1HeEaUSTxg0Y1KqlKOKeZCRi8XrEat+my3sWdg1lNE81sUZNWogpfC9GSIwPvON1Bqj5nQk2PyTE56lBR8ag== lib/eos.min.js
sha512-MZTqzlynbFpY5Nl/6/MOEAHgX5PtSvHWketq0sgm5OqHxZCein2sYwZOfCv4wrX0Mx2mAzC6nIOsVixcxW4Dnw== lib/eos.min.js.map
v16.0.2
Script integrity hashes. see usage.
sha512-dUt7/CwVCjHz4t894Gk9enCCTkQhaYWVmoQmXfVY6cVSjrG63I2X0yjmySlcLJ00YrHgeBBGGA5h8LOKoPIsOA== lib/eos.js
sha512-22gPq/bBKtvD6mdthugNUuGmYEdKkVnnhvSnl4k62eNPmKoFEmNbmxLIU4Hz/5EsmCX2jsYIwkaiz507wT+fBw== lib/eos.min.js
sha512-JZ6rFW/z2srIZxN+h/lSM/m1k+BEXWLS5Wt1c1RRr9CHxRXWT3ff5l0+zhedOk2kL2ZZNMFqmU4+Q1HPfZ5X3w== lib/eos.min.js.map
v16.0.1
v16.0.0
Script integrity hashes. see usage.
sha512-WVarvM+kg5FyfhRnQH8ZjSswAaUctdOxvsXCXWWwfpV7/vb3Phy5KB3rjKwV8h3+9evInAsyLnxvDsdD+Fd6BA== lib/eos.js
sha512-vNyLnOEb7uFmEtVbLnyZQ9/k4zckM2Vu3jJOKq6XfWEVZG0yKcjDExVN4EQ7e3F+rePWRncMolI2xFi/3qo62A== lib/eos.min.js
sha512-ZhiO8AyYgrZOyDo3y40LVg1YkjqjUr9hYO+te8IYHU1gfAmyZxfut9CQj73+mEgC9u7GV2Gttr3cxTh7QH0rkw== lib/eos.min.js.map