near / near-api-js

JavaScript library to interact with NEAR Protocol via RPC API
https://near.github.io/near-api-js
MIT License
392 stars 245 forks source link

Switch to use strings for serialization naming #330

Open ilblackdragon opened 4 years ago

ilblackdragon commented 4 years ago

In transaction.ts, classes are used. Where there is are multiple versions of near-api-js in the project, this result in very confusing error:

 Error: Class PublicKey is missing in schema: publicKey
 at serializeStruct (near-api-js/lib/utils/serialize.js:246:15)
 at serializeField (near-api-js/lib/utils/serialize.js:232:13)
 at near-api-js/lib/utils/serialize.js:250:13
 at Array.map (<anonymous>)
 at serializeStruct (near-api-js/lib/utils/serialize.js:249:29)
 at Object.serialize (near-api-js/lib/utils/serialize.js:272:5)
 at signTransactionObject (near-api-js/lib/transaction.js:192:33)
 at Object.signTransaction (near-api-js/lib/transaction.js:210:16)
 at async Account.signAndSendTransaction (near-api-js/lib/account.js:93:36)
 at async Contract.value <span class="error">[as delete_market]</span> (near-api-js/lib/contract.js:38:39)

We should use strings of class names instead of class literals. Additionally, if we can insure that only single version of near-api-js is used - that would be great as well.

Related to:

vgrichina commented 4 years ago

@ilblackdragon created similar issue for error handling as well https://github.com/near/near-api-js/issues/331