solgen
Version:
A TypeScript SDK generator for Solana IDL - Automatically generates type definitions, account interfaces, and instruction builders
2 lines • 13.5 kB
JavaScript
;var B=Object.create;var d=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var A=Object.getPrototypeOf,D=Object.prototype.hasOwnProperty;var J=(n,e)=>{for(var t in e)d(n,t,{get:e[t],enumerable:!0})},E=(n,e,t,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of U(e))!D.call(n,s)&&s!==t&&d(n,s,{get:()=>e[s],enumerable:!(a=j(e,s))||a.enumerable});return n};var S=(n,e,t)=>(t=n!=null?B(A(n)):{},E(e||!n||!n.__esModule?d(t,"default",{value:n,enumerable:!0}):t,n)),T=n=>E(d({},"__esModule",{value:!0}),n);var V={};J(V,{fieldFromDecoded:()=>b,fieldFromJSON:()=>f,fieldToEncodable:()=>y,fieldToJSON:()=>$,fieldsInterfaceName:()=>O,genAccDiscriminator:()=>z,genIxIdentifier:()=>K,idlTypeToJSONType:()=>l,isComplexType:()=>c,jsonInterfaceName:()=>N,kindInterfaceName:()=>k,layoutForType:()=>w,structFieldInitializer:()=>m,tsTypeFromIdl:()=>p,unreachable:()=>C,valueInterfaceName:()=>F});module.exports=T(V);var r=S(require("camelcase")),g=require("js-sha256"),I=require("snake-case");function C(n){}function O(n){return`${n}Fields`}function F(n){return`${n}Value`}function k(n){return`${n}Kind`}function N(n){return`${n}JSON`}function c(n){return typeof n=="object"&&n!==null}function p(n,e,t="types.",a=!0){var s,i;switch(e){case"bool":return"boolean";case"u8":case"i8":case"u16":case"i16":case"u32":case"i32":case"f32":return"number";case"u64":case"i64":return"BN";case"f64":return"number";case"u128":case"i128":return"BN";case"u256":case"i256":return"BN";case"bytes":return"Uint8Array";case"string":return"string";case"pubkey":return"PublicKey";default:if(c(e)&&"vec"in e)return`Array<${p(n,e.vec,t,a)}>`;if(c(e)&&"option"in e)return`${p(n,e.option,t,a)} | null`;if(c(e)&&"coption"in e)return`${p(n,e.coption,t,a)} | null`;if(c(e)&&"defined"in e){let o=(i=(s=n.types)==null?void 0:s.filter(u=>u.name===e.defined.name))!=null?i:[];if(o.length!==1)throw new Error(`Defined type not found: ${JSON.stringify(e)}`);switch(o[0].type.kind){case"struct":{let u=a?O(e.defined.name):e.defined.name;return`${t}${u}`}case"enum":{let u=k(e.defined.name);return`${t}${u}`}case"type":throw new Error("type layout support not implemented")}}if(c(e)&&"array"in e)return`Array<${p(n,e.array[0],t,a)}>`;if(typeof e=="object"&&"generic"in e)throw new Error("generic type not supported")}throw new Error("Unreachable.")}function w(n,e,t="types."){let a=s=>s===void 0?"":`"${s}"`;switch(n){case"bool":return`solay.bool(${a(e)})`;case"u8":return`solay.u8(${a(e)})`;case"i8":return`solay.i8(${a(e)})`;case"u16":return`solay.u16(${a(e)})`;case"i16":return`solay.i16(${a(e)})`;case"u32":return`solay.u32(${a(e)})`;case"f32":return`solay.f32(${a(e)})`;case"i32":return`solay.i32(${a(e)})`;case"u64":return`solay.u64(${a(e)})`;case"i64":return`solay.i64(${a(e)})`;case"f64":return`solay.f64(${a(e)})`;case"u128":return`solay.u128(${a(e)})`;case"i128":return`solay.i128(${a(e)})`;case"u256":return`solay.u256(${a(e)})`;case"i256":return`solay.i256(${a(e)})`;case"bytes":return`solay.vecU8(${a(e)})`;case"string":return`solay.str(${a(e)})`;case"pubkey":return`solay.publicKey(${a(e)})`;default:if(c(n)&&"vec"in n)return`solay.vec(${w(n.vec)}, ${a(e)})`;if(c(n)&&"option"in n)return`solay.option(${w(n.option)}, ${a(e)})`;if(c(n)&&"coption"in n)throw new Error("coption layout support not implemented");if(c(n)&&"defined"in n)return`${t}${n.defined.name}.layout(${a(e)})`;if(c(n)&&"array"in n){let s=e&&`, ${a(e)}`||"",i=n.array[1],o=n.array[0];return typeof o=="object"&&"defined"in o?`solay.array(${t}${o.defined.name}.layout(), ${i}${s})`:`solay.array(${w(o)}, ${i}${s})`}if(typeof n=="object"&&"generic"in n)throw new Error("generic type not supported")}throw new Error("Unreachable.")}function K(n){let e="global",t=(0,I.snakeCase)(n),a=`${e}:${t}`;return g.sha256.digest(a).slice(0,8)}function z(n){return g.sha256.digest(`account:${(0,r.default)(n,{pascalCase:!0})}`).slice(0,8)}function y(n,e,t="",a="types."){var s,i;switch(e.type){case"bool":case"u8":case"i8":case"u16":case"i16":case"u32":case"i32":case"f32":case"u64":case"i64":case"f64":case"u128":case"i128":case"u256":case"i256":case"string":case"pubkey":return`${t}${(0,r.default)(e.name)}`;case"bytes":{let o=`${t}${(0,r.default)(e.name)}`;return`Buffer.from(${o}.buffer, ${o}.byteOffset, ${o}.length)`}default:if(c(e.type)&&"vec"in e.type){let o=y(n,{name:"item",type:e.type.vec},"",a);return o==="item"?`${t}${(0,r.default)(e.name)}`:`${t}${(0,r.default)(e.name)}.map((item) => ${o})`}if(c(e.type)&&"option"in e.type){let o=y(n,{name:(0,r.default)(e.name),type:e.type.option},t,a);return o===`${t}${(0,r.default)(e.name)}`?o:`(${t}${(0,r.default)(e.name)} && ${o}) || null`}if(c(e.type)&&"coption"in e.type)throw new Error("coption layout support not implemented");if(c(e.type)&&"defined"in e.type){let o=e.type.defined,u=(i=(s=n.types)==null?void 0:s.filter(h=>h.name===o.name))!=null?i:[];if(u.length!==1)throw new Error(`Defined type not found: ${JSON.stringify(e)}`);switch(u[0].type.kind){case"struct":return`${a}${e.type.defined.name}.toEncodable(${t}${(0,r.default)(e.name)})`;case"enum":return`${t}${(0,r.default)(e.name)}.toEncodable()`;case"type":throw new Error("type layout support not implemented")}}if(c(e.type)&&"array"in e.type){let o=e.type.array[0];if(typeof o=="object"&&"defined"in o)return`${t}${(0,r.default)(e.name)}.map((item) => ${a}${o.defined.name}.toEncodable(item))`;let u=y(n,{name:"item",type:o},"",a);return u==="item"?`${t}${(0,r.default)(e.name)}`:`${t}${(0,r.default)(e.name)}.map((item) => ${u})`}throw typeof e.type=="object"&&"generic"in e.type?new Error("generic type not supported"):(e.type,new Error("Unreachable."))}}function b(n,e,t="",a="types."){var s,i;switch(e.type){case"bool":case"u8":case"i8":case"u16":case"i16":case"u32":case"i32":case"f32":case"u64":case"i64":case"f64":case"u128":case"i128":case"u256":case"i256":case"string":case"pubkey":return`${t}${(0,r.default)(e.name)}`;case"bytes":{let o=`${t}${(0,r.default)(e.name)}`;return`new Uint8Array(${o}.buffer, ${o}.byteOffset, ${o}.length)`}default:if(c(e.type)&&"vec"in e.type){let o=b(n,{name:"item",type:e.type.vec},"",a);return o==="item"?`${t}${(0,r.default)(e.name)}`:`${t}${(0,r.default)(e.name)}.map((item: any /* eslint-disable-line @typescript-eslint/no-explicit-any */) => ${o})`}if(c(e.type)&&"option"in e.type){let o=b(n,{name:(0,r.default)(e.name),type:e.type.option},t);return o===`${t}${(0,r.default)(e.name)}`?o:`(${t}${(0,r.default)(e.name)} && ${o}) || null`}if(c(e.type)&&"coption"in e.type)throw new Error("coption layout support not implemented");if(c(e.type)&&"defined"in e.type){let o=e.type.defined,u=(i=(s=n.types)==null?void 0:s.filter(h=>h.name===o.name))!=null?i:[];if(u.length!==1)throw new Error(`Defined type not found: ${JSON.stringify(e)}`);switch(u[0].type.kind){case"struct":case"enum":return`${a}${e.type.defined.name}.fromDecoded(${t}${(0,r.default)(e.name)})`;case"type":throw new Error("type layout support not implemented");default:throw u[0].type,new Error("Unreachable.")}}if(c(e.type)&&"array"in e.type){let o=e.type.array[0];if(typeof o=="object"&&"defined"in o)return`${t}${(0,r.default)(e.name)}.map((item: any /* eslint-disable-line @typescript-eslint/no-explicit-any */) => ${a}${o.defined.name}.fromDecoded(item))`;let u=b(n,{name:"item",type:o},"",a);return u==="item"?`${t}${(0,r.default)(e.name)}`:`${t}${(0,r.default)(e.name)}.map((item: any /* eslint-disable-line @typescript-eslint/no-explicit-any */) => ${u})`}throw typeof e.type=="object"&&"generic"in e.type?new Error("generic type not supported"):(e.type,new Error("Unreachable."))}}function m(n,e,t="fields."){var a,s;switch(e.type){case"bool":case"u8":case"i8":case"u16":case"i16":case"u32":case"i32":case"f32":case"u64":case"i64":case"f64":case"u128":case"i128":case"u256":case"i256":case"bytes":case"string":case"pubkey":return`${t}${(0,r.default)(e.name)}`;default:if(c(e.type)&&"defined"in e.type){let i=e.type.defined,o=(s=(a=n.types)==null?void 0:a.filter(u=>u.name===i.name))!=null?s:[];if(o.length!==1)throw new Error(`Defined type not found: ${i}`);switch(o[0].type.kind){case"struct":return`new types.${o[0].name}({ ...${t}${(0,r.default)(e.name)} })`;case"enum":return o[0].type.kind,`${t}${(0,r.default)(e.name)}`;case"type":throw new Error("alias layout support not implemented");default:o[0].type;return}}if(c(e.type)&&"option"in e.type){let i=m(n,{name:(0,r.default)(e.name),type:e.type.option},t);return i===`${t}${(0,r.default)(e.name)}`?i:`(${t}${(0,r.default)(e.name)} && ${i}) || null`}if(c(e.type)&&"coption"in e.type){let i=m(n,{name:(0,r.default)(e.name),type:e.type.coption},t);return i===`${t}${(0,r.default)(e.name)}`?i:`(${t}${(0,r.default)(e.name)} && ${i}) || null`}if(c(e.type)&&"array"in e.type){let i=e.type.array[0];if(typeof i=="object"&&"defined"in i)return`${t}${(0,r.default)(e.name)}.map((item) => new types.${i.defined.name}({ ...item }))`;let o=m(n,{name:"item",type:i},"");return o==="item"?`${t}${(0,r.default)(e.name)}`:`${t}${(0,r.default)(e.name)}.map((item) => ${o})`}if(c(e.type)&&"vec"in e.type){let i=`${m(n,{name:"item",type:e.type.vec},"")}`;return i==="item"?`${t}${(0,r.default)(e.name)}`:`${t}${(0,r.default)(e.name)}.map((item) => ${i})`}if(typeof e.type=="object"&&"generic"in e.type)throw new Error("generic layout support not implemented");e.type}}function $(n,e,t=""){var a,s;switch(e.type){case"bool":case"u8":case"i8":case"u16":case"i16":case"u32":case"i32":case"f32":case"f64":case"string":return`${t}${(0,r.default)(e.name)}`;case"u64":case"i64":case"u128":case"i128":case"u256":case"i256":case"pubkey":return`${t}${(0,r.default)(e.name)}.toString()`;case"bytes":return`Array.from(${t}${(0,r.default)(e.name)}.values())`;default:if(c(e.type)&&"vec"in e.type){let i=$(n,{name:"item",type:e.type.vec});return i==="item"?`${t}${(0,r.default)(e.name)}`:`${t}${(0,r.default)(e.name)}.map((item) => ${i})`}if(c(e.type)&&"array"in e.type){let i=e.type.array[0];if(typeof i=="object"&&"defined"in i)return`${t}${(0,r.default)(e.name)}.map((item) => item.toJSON())`;let o=$(n,{name:"item",type:i});return o==="item"?`${t}${(0,r.default)(e.name)}`:`${t}${(0,r.default)(e.name)}.map((item) => ${o})`}if(c(e.type)&&"option"in e.type){let i=$(n,{name:(0,r.default)(e.name),type:e.type.option},t);return i===`${t}${(0,r.default)(e.name)}`?i:`(${t}${(0,r.default)(e.name)} && ${i}) || null`}if(c(e.type)&&"coption"in e.type){let i=$(n,{name:(0,r.default)(e.name),type:e.type.coption},t);return i===`${t}${(0,r.default)(e.name)}`?i:`(${t}${(0,r.default)(e.name)} && ${i}) || null`}if(c(e.type)&&"defined"in e.type){let i=e.type.defined,o=(s=(a=n.types)==null?void 0:a.filter(u=>u.name===i.name))!=null?s:[];if(o.length!==1)throw new Error(`Defined type not found: ${JSON.stringify(e)}`);switch(o[0].type.kind){case"struct":case"enum":return`${t}${(0,r.default)(e.name)}.toJSON()`;case"type":throw new Error("type layout support not implemented");default:throw o[0].type,new Error("Unreachable.")}}throw typeof e.type=="object"&&"generic"in e.type?new Error("generic layout support not implemented"):(e.type,new Error("Unreachable."))}}function l(n,e="types."){switch(n){case"bool":return"boolean";case"u8":case"i8":case"u16":case"i16":case"u32":case"i32":case"f32":case"f64":return"number";case"string":case"u64":case"i64":case"u128":case"i128":case"u256":case"i256":case"pubkey":return"string";case"bytes":return"Array<number>";default:if(c(n)&&"vec"in n)return`Array<${l(n.vec,e)}>`;if(c(n)&&"array"in n)return`Array<${l(n.array[0],e)}>`;if(c(n)&&"option"in n)return`${l(n.option,e)} | null`;if(c(n)&&"coption"in n)return`${l(n.coption,e)} | null`;if(c(n)&&"defined"in n)return`${e}${N(n.defined.name)}`;throw typeof n=="object"&&"generic"in n?new Error("generic type not supported"):new Error("Unreachable.")}}function f(n,e="obj",t="types."){let a=e?e+".":"";switch(n.type){case"bool":case"u8":case"i8":case"u16":case"i16":case"u32":case"i32":case"f32":case"f64":case"string":return`${a}${(0,r.default)(n.name)}`;case"bytes":return`Uint8Array.from(${a}${(0,r.default)(n.name)})`;case"u64":case"i64":case"u128":case"i128":return`new BN(${a}${(0,r.default)(n.name)})`;case"u256":case"i256":case"pubkey":return`new PublicKey(${a}${(0,r.default)(n.name)})`;default:if(c(n.type)&&"vec"in n.type){let s=f({name:"item",type:n.type.vec},"",t);return s==="item"?`${a}${(0,r.default)(n.name)}`:`${a}${(0,r.default)(n.name)}.map((item) => ${s})`}if(c(n.type)&&"array"in n.type){let s=f({name:"item",type:n.type.array[0]},"",t);return s==="item"?`${a}${(0,r.default)(n.name)}`:`${a}${(0,r.default)(n.name)}.map((item) => ${s})`}if(c(n.type)&&"option"in n.type){let s=f({name:(0,r.default)(n.name),type:n.type.option},e,t);return s===`${a}${(0,r.default)(n.name)}`?s:`(${a}${(0,r.default)(n.name)} && ${s}) || null`}if(c(n.type)&&"coption"in n.type){let s=f({name:(0,r.default)(n.name),type:n.type.coption},e,t);return s===`${a}${(0,r.default)(n.name)}`?s:`(${a}${(0,r.default)(n.name)} && ${s}) || null`}if(c(n.type)&&"defined"in n.type)return`${t}${n.type.defined.name}.fromJSON(${a}${(0,r.default)(n.name)})`;throw typeof n.type=="object"&&"generic"in n.type?new Error("generic type not supported"):(n.type,new Error("Unreachable."))}}0&&(module.exports={fieldFromDecoded,fieldFromJSON,fieldToEncodable,fieldToJSON,fieldsInterfaceName,genAccDiscriminator,genIxIdentifier,idlTypeToJSONType,isComplexType,jsonInterfaceName,kindInterfaceName,layoutForType,structFieldInitializer,tsTypeFromIdl,unreachable,valueInterfaceName});
//# sourceMappingURL=common.js.map