@stellar-expert/contract-wasm-interface-parser 6.1.0 → 6.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/wasmparser.js +1 -1
- package/lib/wasmparser.js.map +1 -1
- package/package.json +2 -2
package/lib/wasmparser.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("@stellar/stellar-sdk")):"function"==typeof define&&define.amd?define(["@stellar/stellar-sdk"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).sorobanwasmparser=t(e["@stellar/stellar-sdk"])}(this,function(e){"use strict";class t{constructor(e){this.data=e}data;pointer=8;readCustomSections(){const e=[];for(;this.pointer<this.data.length;){const t=this.readUint8();let r=this.readVarUint32();if(0===t){const t=this.pointer,s=this.readString();r-=this.pointer-t,e.push({name:s,contents:this.data.subarray(this.pointer,this.pointer+r)})}this.pointer+=r}return e}readUint8(){return this.data.readUint8(this.pointer++)}readVarUint32(){let e=0,t=0;for(;;){let r=this.readUint8();if(e|=(127&r)<<t,t+=7,!(128&r))break}return e>>>0}readString(){const e=this.readVarUint32(),t=this.data.subarray(this.pointer,this.pointer+e);return this.pointer+=e,t.toString("utf-8")}}function r(e){const t={};for(const{value:r}of e){const e=r.key.toString(),s=r.val.toString();switch(e){case"rsver":t.rustVersion=s;break;case"rssdkver":t.sdkVersion=s;break;default:t[e]=s}}return t}function s(e){return(new a).parse(e)}class a{constructor(){this.res={}}res;addSpec(e,t,r){let s=this.res[e];void 0===s&&(s=this.res[e]={}),r.call(this,t,s)}parse(e){for(const t of e){const{value:e}=t;switch(t.type){case"scSpecEntryFunctionV0":this.addSpec("functions",e,this.parseFunction);break;case"scSpecEntryUdtStructV0":this.addSpec("structs",e,this.parseStruct);break;case"scSpecEntryUdtUnionV0":this.addSpec("unions",e,this.parseUnion);break;case"scSpecEntryUdtEnumV0":this.addSpec("enums",e,this.parseEnum);break;case"scSpecEntryUdtErrorEnumV0":this.addSpec("errors",e,this.parseError);break;case"scSpecEntryEventV0":this.addSpec("events",e,this.parseEvent);break;default:console.log("Unknown spec type: "+t.type)}}return this.res}parseFunction(e,t){t[e.name.toString()]=this.withDocs({inputs:e.inputs.map(e=>this.parseFuncArgument(e)),outputs:e.outputs.map(e=>this.parseParameterType(e))},e)}parseStruct(e,t){const r={};for(const t of e.fields)this.parseParameter(t,r);t[this.parseStructName(e)]=this.withDocs({fields:r},e)}parseUnion(e,t){const r={};for(const{value:t}of e.cases)r[t.name.toString()]=t.type?t.type.map(e=>this.parseParameterType(e)):[];t[this.parseStructName(e)]=this.withDocs({cases:r},e)}parseEnum(e,t){const r={};for(const t of e.cases){const e=t.value;e.name?r[e.name.toString()]=e.value:r[t.name.toString()]=this.withDocs({value:e},t)}t[this.parseStructName(e)]=this.withDocs({cases:r},e)}parseError(e,t){for(const r of e.cases)t[r.name.toString()]=this.withDocs({value:r.value},r)}parseEvent(e,t){let r;switch(e.dataFormat.value){case 1:r="Vec";break;case 2:r="Map";break;default:r=e.dataFormat.name}const s={prefixTopics:e.prefixTopics.map(e=>e.toString()),params:e.params.map(e=>{const t={name:e.name.toString(),type:this.parseParameterType(e.type),location:0===e.location.value?"data":"topics"};return this.withDocs(t,e)}),dataFormat:r};t[this.parseStructName(e)]=this.withDocs(s,e)}parseParameterType(e){const t=e.type;switch(t){case"scSpecTypeOption":return`Option<${this.parseParameterType(e.value.valueType)}>`;case"scSpecTypeBytesN":return`BytesN<${e.value.n}>`;case"scSpecTypeVec":return`Vec<${this.parseParameterType(e.value.elementType)}>`;case"scSpecTypeMap":return`Map<${this.parseParameterType(e.value.keyType)}, ${this.parseParameterType(e.value.valueType)}>`;case"scSpecTypeResult":return`Result<${this.parseParameterType(e.value.okType)}, ${this.parseParameterType(e.value.errorType)}>`;case"scSpecTypeTuple":return`(${e.value.valueTypes.map(e=>this.parseParameterType(e)).join(", ")})`;case"scSpecTypeUdt":return e.value.name.toString();default:let r=t.replace("scSpecType","");return(/^[IU](8|16|32|64|128)$/.test(r)||"Bool"===r)&&(r=r.toLowerCase()),r}}parseStructName(e){let t=e.name.toString();return e.lib.length&&(t+=":"+e.lib.toString()),t}parseParameter(e,t){t[e.name.toString()]=this.withDocs({type:this.parseParameterType(e.type)},e)}parseFuncArgument(e){return this.withDocs({name:e.name.toString(),type:this.parseParameterType(e.type)},e)}withDocs(e,t){return t.doc?.length&&(e.doc=t.doc.toString()),e}}return{parseContractMetadata:function(a){const n=new t(a).readCustomSections(),i={};for(const t of n)switch(t.name){case"contractenvmetav0":const a=e.xdr.ScEnvMetaEntry.fromXdr(t.contents).value;i.interfaceVersion=`${a.protocol}.${a.preRelease}`;break;case"contractmetav0":Object.assign(i,r(e.xdr.decodeStream(e.xdr.ScMetaEntry,t.contents)));break;case"contractspecv0":Object.assign(i,s(e.xdr.decodeStream(e.xdr.ScSpecEntry,t.contents)));break;default:i[t.name]=t.contents.toString()}return i}}});
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("@stellar/stellar-sdk")):"function"==typeof define&&define.amd?define(["@stellar/stellar-sdk"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).sorobanwasmparser=t(e["@stellar/stellar-sdk"])}(this,function(e){"use strict";class t{constructor(e){this.data=e}data;pointer=8;readCustomSections(){const e=[];for(;this.pointer<this.data.length;){const t=this.readUint8();let r=this.readVarUint32();if(0===t){const t=this.pointer,s=this.readString();if(!/^[a-zA-Z0-9!@#$%^&*_+\-=:\\|\/]+$/.test(s))continue;r-=this.pointer-t,e.push({name:s,contents:this.data.subarray(this.pointer,this.pointer+r)})}this.pointer+=r}return e}readUint8(){return this.data.readUint8(this.pointer++)}readVarUint32(){let e=0,t=0;for(;;){let r=this.readUint8();if(e|=(127&r)<<t,t+=7,!(128&r))break}return e>>>0}readString(){const e=this.readVarUint32(),t=this.data.subarray(this.pointer,this.pointer+e);return this.pointer+=e,t.toString("utf-8")}}function r(e){const t={};for(const{value:r}of e){const e=r.key.toString(),s=r.val.toString();switch(e){case"rsver":t.rustVersion=s;break;case"rssdkver":t.sdkVersion=s;break;default:t[e]=s}}return t}function s(e){return(new a).parse(e)}class a{constructor(){this.res={}}res;addSpec(e,t,r){let s=this.res[e];void 0===s&&(s=this.res[e]={}),r.call(this,t,s)}parse(e){for(const t of e){const{value:e}=t;switch(t.type){case"scSpecEntryFunctionV0":this.addSpec("functions",e,this.parseFunction);break;case"scSpecEntryUdtStructV0":this.addSpec("structs",e,this.parseStruct);break;case"scSpecEntryUdtUnionV0":this.addSpec("unions",e,this.parseUnion);break;case"scSpecEntryUdtEnumV0":this.addSpec("enums",e,this.parseEnum);break;case"scSpecEntryUdtErrorEnumV0":this.addSpec("errors",e,this.parseError);break;case"scSpecEntryEventV0":this.addSpec("events",e,this.parseEvent);break;default:console.log("Unknown spec type: "+t.type)}}return this.res}parseFunction(e,t){t[e.name.toString()]=this.withDocs({inputs:e.inputs.map(e=>this.parseFuncArgument(e)),outputs:e.outputs.map(e=>this.parseParameterType(e))},e)}parseStruct(e,t){const r={};for(const t of e.fields)this.parseParameter(t,r);t[this.parseStructName(e)]=this.withDocs({fields:r},e)}parseUnion(e,t){const r={};for(const{value:t}of e.cases)r[t.name.toString()]=t.type?t.type.map(e=>this.parseParameterType(e)):[];t[this.parseStructName(e)]=this.withDocs({cases:r},e)}parseEnum(e,t){const r={};for(const t of e.cases){const e=t.value;e.name?r[e.name.toString()]=e.value:r[t.name.toString()]=this.withDocs({value:e},t)}t[this.parseStructName(e)]=this.withDocs({cases:r},e)}parseError(e,t){for(const r of e.cases)t[r.name.toString()]=this.withDocs({value:r.value},r)}parseEvent(e,t){let r;switch(e.dataFormat.value){case 1:r="Vec";break;case 2:r="Map";break;default:r=e.dataFormat.name}const s={prefixTopics:e.prefixTopics.map(e=>e.toString()),params:e.params.map(e=>{const t={name:e.name.toString(),type:this.parseParameterType(e.type),location:0===e.location.value?"data":"topics"};return this.withDocs(t,e)}),dataFormat:r};t[this.parseStructName(e)]=this.withDocs(s,e)}parseParameterType(e){const t=e.type;switch(t){case"scSpecTypeOption":return`Option<${this.parseParameterType(e.value.valueType)}>`;case"scSpecTypeBytesN":return`BytesN<${e.value.n}>`;case"scSpecTypeVec":return`Vec<${this.parseParameterType(e.value.elementType)}>`;case"scSpecTypeMap":return`Map<${this.parseParameterType(e.value.keyType)}, ${this.parseParameterType(e.value.valueType)}>`;case"scSpecTypeResult":return`Result<${this.parseParameterType(e.value.okType)}, ${this.parseParameterType(e.value.errorType)}>`;case"scSpecTypeTuple":return`(${e.value.valueTypes.map(e=>this.parseParameterType(e)).join(", ")})`;case"scSpecTypeUdt":return e.value.name.toString();default:let r=t.replace("scSpecType","");return(/^[IU](8|16|32|64|128)$/.test(r)||"Bool"===r)&&(r=r.toLowerCase()),r}}parseStructName(e){let t=e.name.toString();return e.lib.length&&(t+=":"+e.lib.toString()),t}parseParameter(e,t){t[e.name.toString()]=this.withDocs({type:this.parseParameterType(e.type)},e)}parseFuncArgument(e){return this.withDocs({name:e.name.toString(),type:this.parseParameterType(e.type)},e)}withDocs(e,t){return t.doc?.length&&(e.doc=t.doc.toString()),e}}return{parseContractMetadata:function(a){const n=new t(a).readCustomSections(),i={};for(const t of n)switch(t.name){case"contractenvmetav0":const a=e.xdr.ScEnvMetaEntry.fromXdr(t.contents).value;i.interfaceVersion=`${a.protocol}.${a.preRelease}`;break;case"contractmetav0":Object.assign(i,r(e.xdr.decodeStream(e.xdr.ScMetaEntry,t.contents)));break;case"contractspecv0":Object.assign(i,s(e.xdr.decodeStream(e.xdr.ScSpecEntry,t.contents)));break;default:i[t.name]=t.contents.toString()}return i}}});
|
|
2
2
|
//# sourceMappingURL=wasmparser.js.map
|
package/lib/wasmparser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wasmparser.js","sources":["../src/wasm-section-reader.js","../src/xdr-spec-parser.js","../src/bundle.js","../src/index.js"],"sourcesContent":["/**\r\n * Minimalistic WASM metadata reader\r\n */\r\nexport class WasmSectionReader {\r\n constructor(data) {\r\n this.data = data\r\n }\r\n\r\n /**\r\n * @type {Buffer}\r\n * @private\r\n */\r\n data\r\n /**\r\n * Current reader position\r\n * @type {number}\r\n * @private\r\n */\r\n pointer = 8\r\n\r\n /**\r\n * Read custom metadata sections from raw WASM\r\n * @return {{name: string, contents: Buffer}[]}\r\n */\r\n readCustomSections() {\r\n const sections = []\r\n while (this.pointer < this.data.length) {\r\n const sectionType = this.readUint8()\r\n let length = this.readVarUint32()\r\n if (sectionType === 0) { //accumulate only custom sections\r\n const sectionStart = this.pointer\r\n const name = this.readString()\r\n length -= this.pointer - sectionStart\r\n sections.push({\r\n name,\r\n contents: this.data.subarray(this.pointer, this.pointer + length)\r\n })\r\n }\r\n this.pointer += length\r\n }\r\n return sections\r\n }\r\n\r\n /**\r\n * @return {number}\r\n * @private\r\n */\r\n readUint8() {\r\n return this.data.readUint8(this.pointer++)\r\n }\r\n\r\n /**\r\n * @return {number}\r\n * @private\r\n */\r\n readVarUint32() {\r\n let result = 0\r\n let shift = 0\r\n while (true) {\r\n let byte = this.readUint8()\r\n result |= (byte & 0x7f) << shift\r\n shift += 7\r\n if ((byte & 0x80) === 0)\r\n break\r\n }\r\n return result >>> 0\r\n }\r\n\r\n /**\r\n * @return {string}\r\n * @private\r\n */\r\n readString() {\r\n const length = this.readVarUint32()\r\n const contents = this.data.subarray(this.pointer, this.pointer + length)\r\n this.pointer += length\r\n return contents.toString('utf-8')\r\n }\r\n}","export function parseContractMeta(meta) {\r\n const res = {}\r\n for (const {value} of meta) {\r\n const key = value.key.toString()\r\n const val = value.val.toString()\r\n switch (key) {\r\n case 'rsver':\r\n res.rustVersion = val\r\n break\r\n case 'rssdkver':\r\n res.sdkVersion = val\r\n break\r\n default:\r\n res[key] = val\r\n break\r\n }\r\n }\r\n return res\r\n}\r\n\r\nexport function parseSpec(entries) {\r\n return new SpecParser().parse(entries)\r\n}\r\n\r\n\r\nclass SpecParser {\r\n constructor() {\r\n this.res = {}\r\n }\r\n\r\n /**\r\n * @type {{}}\r\n */\r\n res\r\n\r\n addSpec(key, attr, parser) {\r\n //this.parseFunction(attr), attr.doc\r\n let spec = this.res[key]\r\n if (spec === undefined) {\r\n spec = this.res[key] = {}\r\n }\r\n parser.call(this, attr, spec)\r\n }\r\n\r\n parse(entries) {\r\n for (const spec of entries) {\r\n const {value} = spec\r\n switch (spec.type) {\r\n case 'scSpecEntryFunctionV0':\r\n this.addSpec('functions', value, this.parseFunction)\r\n break\r\n case 'scSpecEntryUdtStructV0':\r\n this.addSpec('structs', value, this.parseStruct)\r\n break\r\n case 'scSpecEntryUdtUnionV0':\r\n this.addSpec('unions', value, this.parseUnion)\r\n break\r\n case 'scSpecEntryUdtEnumV0':\r\n this.addSpec('enums', value, this.parseEnum)\r\n break\r\n case 'scSpecEntryUdtErrorEnumV0':\r\n this.addSpec('errors', value, this.parseError)\r\n break\r\n case 'scSpecEntryEventV0':\r\n this.addSpec('events', value, this.parseEvent)\r\n break\r\n default:\r\n console.log('Unknown spec type: ' + spec.type)\r\n break\r\n }\r\n }\r\n return this.res\r\n }\r\n\r\n parseFunction(attr, into) {\r\n into[attr.name.toString()] = this.withDocs({\r\n inputs: attr.inputs.map(a => this.parseFuncArgument(a)),\r\n outputs: attr.outputs.map(o => this.parseParameterType(o))\r\n }, attr)\r\n }\r\n\r\n parseStruct(attr, into) {\r\n const fields = {}\r\n for (const f of attr.fields) {\r\n this.parseParameter(f, fields)\r\n }\r\n into[this.parseStructName(attr)] = this.withDocs({fields}, attr)\r\n }\r\n\r\n parseUnion(attr, into) {\r\n const cases = {}\r\n for (const {value} of attr.cases) {\r\n cases[value.name.toString()] = value.type ?\r\n value.type.map(t => this.parseParameterType(t)) :\r\n []\r\n }\r\n into[this.parseStructName(attr)] = this.withDocs({cases}, attr)\r\n }\r\n\r\n parseEnum(attr, into) {\r\n const cases = {}\r\n for (const c of attr.cases) {\r\n const value = c.value\r\n if (value.name) {\r\n cases[value.name.toString()] = value.value\r\n } else {\r\n cases[c.name.toString()] = this.withDocs({value}, c)\r\n }\r\n }\r\n into[this.parseStructName(attr)] = this.withDocs({cases}, attr)\r\n }\r\n\r\n parseError(attr, into) {\r\n for (const c of attr.cases) {\r\n into[c.name.toString()] = this.withDocs({value: c.value}, c)\r\n }\r\n }\r\n\r\n parseEvent(attr, into) {\r\n let dataFormat\r\n switch (attr.dataFormat.value) {\r\n case 1:\r\n dataFormat = 'Vec'\r\n break\r\n case 2:\r\n dataFormat = 'Map'\r\n break\r\n default:\r\n dataFormat = attr.dataFormat.name\r\n break\r\n }\r\n const evt = {\r\n prefixTopics: attr.prefixTopics.map(t => t.toString()),\r\n params: attr.params.map(p => {\r\n const param = {\r\n name: p.name.toString(),\r\n type: this.parseParameterType(p.type),\r\n location: p.location.value === 0 ? 'data' : 'topics'\r\n }\r\n return this.withDocs(param, p)\r\n }),\r\n dataFormat\r\n }\r\n into[this.parseStructName(attr)] = this.withDocs(evt, attr)\r\n }\r\n\r\n parseParameterType(type) {\r\n const typeName = type.type\r\n switch (typeName) {\r\n case 'scSpecTypeOption':\r\n return `Option<${this.parseParameterType(type.value.valueType)}>`\r\n case 'scSpecTypeBytesN':\r\n return `BytesN<${type.value.n}>`\r\n case 'scSpecTypeVec':\r\n return `Vec<${this.parseParameterType(type.value.elementType)}>`\r\n case 'scSpecTypeMap':\r\n return `Map<${this.parseParameterType(type.value.keyType)}, ${this.parseParameterType(type.value.valueType)}>`\r\n case 'scSpecTypeResult':\r\n return `Result<${this.parseParameterType(type.value.okType)}, ${this.parseParameterType(type.value.errorType)}>`\r\n case 'scSpecTypeTuple':\r\n return `(${type.value.valueTypes.map(v => this.parseParameterType(v)).join(', ')})`\r\n case 'scSpecTypeUdt':\r\n return type.value.name.toString()\r\n default:\r\n let res = typeName.replace('scSpecType', '')\r\n if (/^[IU](8|16|32|64|128)$/.test(res) || res === 'Bool') { //remap standard int types\r\n res = res.toLowerCase()\r\n }\r\n return res\r\n }\r\n }\r\n\r\n parseStructName(value) {\r\n let structName = value.name.toString()\r\n if (value.lib.length) {\r\n structName += ':' + value.lib.toString()\r\n }\r\n return structName\r\n }\r\n\r\n parseParameter(param, into) {\r\n into[param.name.toString()] = this.withDocs({type: this.parseParameterType(param.type)}, param)\r\n }\r\n\r\n parseFuncArgument(arg) {\r\n return this.withDocs({\r\n name: arg.name.toString(),\r\n type: this.parseParameterType(arg.type)\r\n }, arg)\r\n }\r\n\r\n withDocs(descriptor, attr) {\r\n if (attr.doc?.length) {\r\n descriptor.doc = attr.doc.toString()\r\n }\r\n return descriptor\r\n }\r\n}\r\n\r\n","import {parseContractMetadata} from './index.js'\r\n\r\nconst index = {parseContractMetadata}\r\n\r\nexport default index","import {xdr} from '@stellar/stellar-sdk'\r\nimport {WasmSectionReader} from './wasm-section-reader.js'\r\nimport {parseContractMeta, parseSpec} from './xdr-spec-parser.js'\r\n\r\n/**\r\n * Parse contract metadata from WASM sections\r\n * @param {Buffer} rawWasm\r\n * @return {ParsedWasmMeta}\r\n */\r\nexport function parseContractMetadata(rawWasm) {\r\n const wasmSectionReader = new WasmSectionReader(rawWasm)\r\n const sections = wasmSectionReader.readCustomSections()\r\n const res = {}\r\n for (const section of sections) {\r\n switch (section.name) {\r\n case 'contractenvmetav0':\r\n const v = xdr.ScEnvMetaEntry.fromXdr(section.contents).value\r\n res.interfaceVersion = `${v.protocol}.${v.preRelease}`\r\n break\r\n case 'contractmetav0':\r\n Object.assign(res, parseContractMeta(xdr.decodeStream(xdr.ScMetaEntry, section.contents)))\r\n break\r\n case 'contractspecv0':\r\n Object.assign(res, parseSpec(xdr.decodeStream(xdr.ScSpecEntry, section.contents)))\r\n break\r\n default:\r\n res[section.name] = section.contents.toString()\r\n break\r\n }\r\n }\r\n return res\r\n}\r\n\r\n/**\r\n * @typedef {{}} ParsedWasmMeta\r\n * @property {{}} functions\r\n * @property {{}} [errors]\r\n * @property {{}} [enums]\r\n * @property {{}} [structs]\r\n * @property {{}} [unions]\r\n * @property {string} rustVersion\r\n * @property {string} sdkVersion\r\n * @property {string} interfaceVersion\r\n */"],"names":["WasmSectionReader","constructor","data","this","pointer","readCustomSections","sections","length","sectionType","readUint8","readVarUint32","sectionStart","name","readString","push","contents","subarray","result","shift","byte","toString","parseContractMeta","meta","res","value","key","val","rustVersion","sdkVersion","parseSpec","entries","SpecParser","parse","addSpec","attr","parser","spec","undefined","call","type","parseFunction","parseStruct","parseUnion","parseEnum","parseError","parseEvent","console","log","into","withDocs","inputs","map","a","parseFuncArgument","outputs","o","parseParameterType","fields","f","parseParameter","parseStructName","cases","t","c","dataFormat","evt","prefixTopics","params","p","param","location","typeName","valueType","n","elementType","keyType","okType","errorType","valueTypes","v","join","replace","test","toLowerCase","structName","lib","arg","descriptor","doc","parseContractMetadata","rawWasm","section","xdr","ScEnvMetaEntry","fromXdr","interfaceVersion","protocol","preRelease","Object","assign","decodeStream","ScMetaEntry","ScSpecEntry"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wasmparser.js","sources":["../src/wasm-section-reader.js","../src/xdr-spec-parser.js","../src/bundle.js","../src/index.js"],"sourcesContent":["/**\r\n * Minimalistic WASM metadata reader\r\n */\r\nexport class WasmSectionReader {\r\n constructor(data) {\r\n this.data = data\r\n }\r\n\r\n /**\r\n * @type {Buffer}\r\n * @private\r\n */\r\n data\r\n /**\r\n * Current reader position\r\n * @type {number}\r\n * @private\r\n */\r\n pointer = 8\r\n\r\n /**\r\n * Read custom metadata sections from raw WASM\r\n * @return {{name: string, contents: Buffer}[]}\r\n */\r\n readCustomSections() {\r\n const sections = []\r\n while (this.pointer < this.data.length) {\r\n const sectionType = this.readUint8()\r\n let length = this.readVarUint32()\r\n if (sectionType === 0) { //accumulate only custom sections\r\n const sectionStart = this.pointer\r\n const name = this.readString()\r\n if (!/^[a-zA-Z0-9!@#$%^&*_+\\-=:\\\\|\\/]+$/.test(name))\r\n continue //skip sections with malformed names\r\n length -= this.pointer - sectionStart\r\n sections.push({\r\n name,\r\n contents: this.data.subarray(this.pointer, this.pointer + length)\r\n })\r\n }\r\n this.pointer += length\r\n }\r\n return sections\r\n }\r\n\r\n /**\r\n * @return {number}\r\n * @private\r\n */\r\n readUint8() {\r\n return this.data.readUint8(this.pointer++)\r\n }\r\n\r\n /**\r\n * @return {number}\r\n * @private\r\n */\r\n readVarUint32() {\r\n let result = 0\r\n let shift = 0\r\n while (true) {\r\n let byte = this.readUint8()\r\n result |= (byte & 0x7f) << shift\r\n shift += 7\r\n if ((byte & 0x80) === 0)\r\n break\r\n }\r\n return result >>> 0\r\n }\r\n\r\n /**\r\n * @return {string}\r\n * @private\r\n */\r\n readString() {\r\n const length = this.readVarUint32()\r\n const contents = this.data.subarray(this.pointer, this.pointer + length)\r\n this.pointer += length\r\n return contents.toString('utf-8')\r\n }\r\n}","export function parseContractMeta(meta) {\r\n const res = {}\r\n for (const {value} of meta) {\r\n const key = value.key.toString()\r\n const val = value.val.toString()\r\n switch (key) {\r\n case 'rsver':\r\n res.rustVersion = val\r\n break\r\n case 'rssdkver':\r\n res.sdkVersion = val\r\n break\r\n default:\r\n res[key] = val\r\n break\r\n }\r\n }\r\n return res\r\n}\r\n\r\nexport function parseSpec(entries) {\r\n return new SpecParser().parse(entries)\r\n}\r\n\r\n\r\nclass SpecParser {\r\n constructor() {\r\n this.res = {}\r\n }\r\n\r\n /**\r\n * @type {{}}\r\n */\r\n res\r\n\r\n addSpec(key, attr, parser) {\r\n //this.parseFunction(attr), attr.doc\r\n let spec = this.res[key]\r\n if (spec === undefined) {\r\n spec = this.res[key] = {}\r\n }\r\n parser.call(this, attr, spec)\r\n }\r\n\r\n parse(entries) {\r\n for (const spec of entries) {\r\n const {value} = spec\r\n switch (spec.type) {\r\n case 'scSpecEntryFunctionV0':\r\n this.addSpec('functions', value, this.parseFunction)\r\n break\r\n case 'scSpecEntryUdtStructV0':\r\n this.addSpec('structs', value, this.parseStruct)\r\n break\r\n case 'scSpecEntryUdtUnionV0':\r\n this.addSpec('unions', value, this.parseUnion)\r\n break\r\n case 'scSpecEntryUdtEnumV0':\r\n this.addSpec('enums', value, this.parseEnum)\r\n break\r\n case 'scSpecEntryUdtErrorEnumV0':\r\n this.addSpec('errors', value, this.parseError)\r\n break\r\n case 'scSpecEntryEventV0':\r\n this.addSpec('events', value, this.parseEvent)\r\n break\r\n default:\r\n console.log('Unknown spec type: ' + spec.type)\r\n break\r\n }\r\n }\r\n return this.res\r\n }\r\n\r\n parseFunction(attr, into) {\r\n into[attr.name.toString()] = this.withDocs({\r\n inputs: attr.inputs.map(a => this.parseFuncArgument(a)),\r\n outputs: attr.outputs.map(o => this.parseParameterType(o))\r\n }, attr)\r\n }\r\n\r\n parseStruct(attr, into) {\r\n const fields = {}\r\n for (const f of attr.fields) {\r\n this.parseParameter(f, fields)\r\n }\r\n into[this.parseStructName(attr)] = this.withDocs({fields}, attr)\r\n }\r\n\r\n parseUnion(attr, into) {\r\n const cases = {}\r\n for (const {value} of attr.cases) {\r\n cases[value.name.toString()] = value.type ?\r\n value.type.map(t => this.parseParameterType(t)) :\r\n []\r\n }\r\n into[this.parseStructName(attr)] = this.withDocs({cases}, attr)\r\n }\r\n\r\n parseEnum(attr, into) {\r\n const cases = {}\r\n for (const c of attr.cases) {\r\n const value = c.value\r\n if (value.name) {\r\n cases[value.name.toString()] = value.value\r\n } else {\r\n cases[c.name.toString()] = this.withDocs({value}, c)\r\n }\r\n }\r\n into[this.parseStructName(attr)] = this.withDocs({cases}, attr)\r\n }\r\n\r\n parseError(attr, into) {\r\n for (const c of attr.cases) {\r\n into[c.name.toString()] = this.withDocs({value: c.value}, c)\r\n }\r\n }\r\n\r\n parseEvent(attr, into) {\r\n let dataFormat\r\n switch (attr.dataFormat.value) {\r\n case 1:\r\n dataFormat = 'Vec'\r\n break\r\n case 2:\r\n dataFormat = 'Map'\r\n break\r\n default:\r\n dataFormat = attr.dataFormat.name\r\n break\r\n }\r\n const evt = {\r\n prefixTopics: attr.prefixTopics.map(t => t.toString()),\r\n params: attr.params.map(p => {\r\n const param = {\r\n name: p.name.toString(),\r\n type: this.parseParameterType(p.type),\r\n location: p.location.value === 0 ? 'data' : 'topics'\r\n }\r\n return this.withDocs(param, p)\r\n }),\r\n dataFormat\r\n }\r\n into[this.parseStructName(attr)] = this.withDocs(evt, attr)\r\n }\r\n\r\n parseParameterType(type) {\r\n const typeName = type.type\r\n switch (typeName) {\r\n case 'scSpecTypeOption':\r\n return `Option<${this.parseParameterType(type.value.valueType)}>`\r\n case 'scSpecTypeBytesN':\r\n return `BytesN<${type.value.n}>`\r\n case 'scSpecTypeVec':\r\n return `Vec<${this.parseParameterType(type.value.elementType)}>`\r\n case 'scSpecTypeMap':\r\n return `Map<${this.parseParameterType(type.value.keyType)}, ${this.parseParameterType(type.value.valueType)}>`\r\n case 'scSpecTypeResult':\r\n return `Result<${this.parseParameterType(type.value.okType)}, ${this.parseParameterType(type.value.errorType)}>`\r\n case 'scSpecTypeTuple':\r\n return `(${type.value.valueTypes.map(v => this.parseParameterType(v)).join(', ')})`\r\n case 'scSpecTypeUdt':\r\n return type.value.name.toString()\r\n default:\r\n let res = typeName.replace('scSpecType', '')\r\n if (/^[IU](8|16|32|64|128)$/.test(res) || res === 'Bool') { //remap standard int types\r\n res = res.toLowerCase()\r\n }\r\n return res\r\n }\r\n }\r\n\r\n parseStructName(value) {\r\n let structName = value.name.toString()\r\n if (value.lib.length) {\r\n structName += ':' + value.lib.toString()\r\n }\r\n return structName\r\n }\r\n\r\n parseParameter(param, into) {\r\n into[param.name.toString()] = this.withDocs({type: this.parseParameterType(param.type)}, param)\r\n }\r\n\r\n parseFuncArgument(arg) {\r\n return this.withDocs({\r\n name: arg.name.toString(),\r\n type: this.parseParameterType(arg.type)\r\n }, arg)\r\n }\r\n\r\n withDocs(descriptor, attr) {\r\n if (attr.doc?.length) {\r\n descriptor.doc = attr.doc.toString()\r\n }\r\n return descriptor\r\n }\r\n}\r\n\r\n","import {parseContractMetadata} from './index.js'\r\n\r\nconst index = {parseContractMetadata}\r\n\r\nexport default index","import {xdr} from '@stellar/stellar-sdk'\r\nimport {WasmSectionReader} from './wasm-section-reader.js'\r\nimport {parseContractMeta, parseSpec} from './xdr-spec-parser.js'\r\n\r\n/**\r\n * Parse contract metadata from WASM sections\r\n * @param {Buffer} rawWasm\r\n * @return {ParsedWasmMeta}\r\n */\r\nexport function parseContractMetadata(rawWasm) {\r\n const wasmSectionReader = new WasmSectionReader(rawWasm)\r\n const sections = wasmSectionReader.readCustomSections()\r\n const res = {}\r\n for (const section of sections) {\r\n switch (section.name) {\r\n case 'contractenvmetav0':\r\n const v = xdr.ScEnvMetaEntry.fromXdr(section.contents).value\r\n res.interfaceVersion = `${v.protocol}.${v.preRelease}`\r\n break\r\n case 'contractmetav0':\r\n Object.assign(res, parseContractMeta(xdr.decodeStream(xdr.ScMetaEntry, section.contents)))\r\n break\r\n case 'contractspecv0':\r\n Object.assign(res, parseSpec(xdr.decodeStream(xdr.ScSpecEntry, section.contents)))\r\n break\r\n default:\r\n res[section.name] = section.contents.toString()\r\n break\r\n }\r\n }\r\n return res\r\n}\r\n\r\n/**\r\n * @typedef {{}} ParsedWasmMeta\r\n * @property {{}} functions\r\n * @property {{}} [errors]\r\n * @property {{}} [enums]\r\n * @property {{}} [structs]\r\n * @property {{}} [unions]\r\n * @property {string} rustVersion\r\n * @property {string} sdkVersion\r\n * @property {string} interfaceVersion\r\n */"],"names":["WasmSectionReader","constructor","data","this","pointer","readCustomSections","sections","length","sectionType","readUint8","readVarUint32","sectionStart","name","readString","test","push","contents","subarray","result","shift","byte","toString","parseContractMeta","meta","res","value","key","val","rustVersion","sdkVersion","parseSpec","entries","SpecParser","parse","addSpec","attr","parser","spec","undefined","call","type","parseFunction","parseStruct","parseUnion","parseEnum","parseError","parseEvent","console","log","into","withDocs","inputs","map","a","parseFuncArgument","outputs","o","parseParameterType","fields","f","parseParameter","parseStructName","cases","t","c","dataFormat","evt","prefixTopics","params","p","param","location","typeName","valueType","n","elementType","keyType","okType","errorType","valueTypes","v","join","replace","toLowerCase","structName","lib","arg","descriptor","doc","parseContractMetadata","rawWasm","section","xdr","ScEnvMetaEntry","fromXdr","interfaceVersion","protocol","preRelease","Object","assign","decodeStream","ScMetaEntry","ScSpecEntry"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stellar-expert/contract-wasm-interface-parser",
|
|
3
|
-
"version": "6.1.
|
|
3
|
+
"version": "6.1.1",
|
|
4
4
|
"description": "Contract interface metadata parser for binary WASM",
|
|
5
5
|
"author": "orbitlens <orbit@stellar.expert>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"url": "git+https://github.com/stellar-expert/contract-wasm-interface-parser.git"
|
|
20
20
|
},
|
|
21
21
|
"scripts": {
|
|
22
|
-
"
|
|
22
|
+
"prepublishOnly": "rollup -c",
|
|
23
23
|
"test": "jest"
|
|
24
24
|
},
|
|
25
25
|
"peerDependencies": {
|