diff --git a/README.md b/README.md index e695b33b7..52a868efb 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Documentation can be found [here](https://eosio.github.io/eosjs) The official distribution package can be found at [npm](https://www.npmjs.com/package/eosjs). -### NodeJS Dependency +### Add dependency to your project `yarn add eosjs` @@ -38,7 +38,7 @@ Clone this repository locally then run `yarn build-web`. The browser distributi ### ES Modules -Importing using ES6 module syntax in the browser is supported if you have a transpiler, such as Babel. +Importing using ESM syntax is supported using TypeScript, [webpack](https://webpack.js.org/api/module-methods), or [Node.js with `--experimental-modules` flag](https://nodejs.org/api/esm.html) ```js import { Api, JsonRpc, RpcError } from 'eosjs'; import { JsSignatureProvider } from 'eosjs/dist/eosjs-jssig'; // development only @@ -46,7 +46,7 @@ import { JsSignatureProvider } from 'eosjs/dist/eosjs-jssig'; // devel ### CommonJS -Importing using commonJS syntax is supported by NodeJS out of the box. +Importing using commonJS syntax is supported by Node.js out of the box. ```js const { Api, JsonRpc, RpcError } = require('eosjs'); const { JsSignatureProvider } = require('eosjs/dist/eosjs-jssig'); // development only @@ -69,7 +69,7 @@ const signatureProvider = new JsSignatureProvider([defaultPrivateKey]); ### JSON-RPC -Open a connection to JSON-RPC, include `fetch` when on NodeJS. +Open a connection to JSON-RPC, include `fetch` when on Node.js. ```js const rpc = new JsonRpc('http://127.0.0.1:8888', { fetch }); ``` diff --git a/package.json b/package.json index a48af7a46..b8445fbef 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "test": "jest src/tests/*eosjs*", "test-node": "jest src/tests/*node*", "test-all": "yarn test && yarn test-node && yarn cypress", - "build": "tsc -p ./tsconfig.json && cp src/ripemd.es5.js dist/ripemd.js", + "build": "tsc -p ./tsconfig.json && node scripts/copy-ripe-md.js", "build-web": "webpack --config webpack.prod.js && webpack --config webpack.debug.js", "build-production": "yarn build && yarn build-web && yarn test-all", "clean": "rm -rf dist", diff --git a/scripts/copy-ripe-md.js b/scripts/copy-ripe-md.js new file mode 100644 index 000000000..c047379c7 --- /dev/null +++ b/scripts/copy-ripe-md.js @@ -0,0 +1,8 @@ +var fs = require('fs'); +var path = require('path'); +var root = __dirname.replace('scripts', ''); + +if(!fs.existsSync(path.join(root + 'dist'))) + fs.mkdirSync(path.join(root + 'dist')); + +fs.copyFileSync(path.join(root + 'src/ripemd.es5.js'), path.join(root + 'dist/ripemd.js')); \ No newline at end of file diff --git a/src/eosjs-serialize.ts b/src/eosjs-serialize.ts index 756b198b9..c7e2139bf 100644 --- a/src/eosjs-serialize.ts +++ b/src/eosjs-serialize.ts @@ -1143,3 +1143,17 @@ export function deserializeAction(contract: Contract, account: string, name: str data: deserializeActionData(contract, account, name, data, textEncoder, textDecoder), }; } + +/** Deserialize struct type. If `data` is a `string`, then it's assumed to be in hex. */ +export function deserializeTypeData(contract: Contract, account: string, structName: string, data: string | Uint8Array, textEncoder: TextEncoder, textDecoder: TextDecoder): any { + const type = contract.types.get(structName); + if (typeof data === "string") { + data = hexToUint8Array(data); + } + if(!type) { + throw new Error(`Unknown type ${structName} in contract ${account}`); + } + const buffer = new SerialBuffer({textDecoder, textEncoder}); + buffer.pushArray(data); + return type.deserialize(buffer); +} \ No newline at end of file