@latticexyz/common 2.0.0-alpha.1.39 → 2.0.0-alpha.1.41
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/dist/codegen.js +13 -13
- package/dist/codegen.js.map +1 -1
- package/package.json +4 -4
package/dist/codegen.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import
|
|
1
|
+
import k from"path";var l=`// SPDX-License-Identifier: MIT
|
|
2
2
|
pragma solidity >=0.8.0;
|
|
3
3
|
|
|
4
|
-
/* Autogenerated file. Do not edit manually. */`;function B(r,t){return
|
|
4
|
+
/* Autogenerated file. Do not edit manually. */`;function B(r,t){return S("",r,t)}function I(r){let t=r.filter(n=>n!==void 0&&n!=="");return S(",",t,n=>n)}function O({staticResourceData:r,primaryKeys:t}){let n=r?"":"_tableId",i=r?"":"bytes32 _tableId",s=I(t.map(({name:T})=>T)),y=I(t.map(({name:T,typeWithLocation:o})=>`${o} ${T}`)),R=`
|
|
5
5
|
bytes32[] memory _primaryKeys = new bytes32[](${t.length});
|
|
6
|
-
${B(t,(T,
|
|
7
|
-
`;return{_tableId:n,_typedTableId:i,_keyArgs:s,_typedKeyArgs:y,_primaryKeysDefinition:R}}function
|
|
8
|
-
`)}function
|
|
9
|
-
`+t("IStore _store","_store"," (using the specified store)","_store")),n}function
|
|
6
|
+
${B(t,(T,o)=>`_primaryKeys[${o}] = ${F(T.name,T)};`)}
|
|
7
|
+
`;return{_tableId:n,_typedTableId:i,_keyArgs:s,_typedKeyArgs:y,_primaryKeysDefinition:R}}function Y(r,t){return"./"+k.relative("./"+t,"./"+r)}function ee(r){return N(r.map(t=>"path"in t?t:{symbol:t.symbol,path:Y(t.fromPath,t.usedInPath)}))}function re(r){return N(r.map(({symbol:t,fromPath:n,usedInPath:i})=>({symbol:t,path:Y(n,i)})))}function N(r){let t=new Map;for(let{symbol:i,path:s}of r)t.has(s)||t.set(s,new Set),t.get(s)?.add(i);let n=[];for(let[i,s]of t){let y=[...s].join(", ");n.push(`import { ${y} } from "${i}";`)}return n.join(`
|
|
8
|
+
`)}function te(r,t){let n="";return n+=t(void 0,"StoreSwitch","",void 0),r&&(n+=`
|
|
9
|
+
`+t("IStore _store","_store"," (using the specified store)","_store")),n}function ne(r){let t=`bytes32(abi.encodePacked(bytes16("${r.namespace}"), bytes16("${r.name}")))`,n=`
|
|
10
10
|
bytes32 constant _tableId = ${t};
|
|
11
11
|
bytes32 constant ${r.tableIdName} = _tableId;
|
|
12
|
-
`;return{hardcodedTableId:t,tableIdDefinition:n}}function
|
|
13
|
-
`)}function
|
|
12
|
+
`;return{hardcodedTableId:t,tableIdDefinition:n}}function F(r,{staticByteLength:t,typeUnwrap:n,internalTypeId:i}){let s=t*8,y=`${n}(${r})`;if(i.match(/^uint\d{1,3}$/))return`bytes32(uint256(${y}))`;if(i.match(/^int\d{1,3}$/))return`bytes32(uint256(uint${s}(${y})))`;if(i.match(/^bytes\d{1,2}$/))return`bytes32(${y})`;if(i==="address")return`bytes32(bytes20(${y}))`;if(i==="bool")return`_boolToBytes32(${y})`;throw new Error(`Unknown value type id ${i}`)}function S(r,t,n){return t.map((i,s)=>n(i,s)+(s===t.length-1?"":r)).join(`
|
|
13
|
+
`)}function ye(r){let t=l;return t+=B(r,({name:n,memberNames:i})=>`
|
|
14
14
|
enum ${n} {
|
|
15
|
-
${
|
|
15
|
+
${I(i)}
|
|
16
16
|
}
|
|
17
|
-
`),t}function
|
|
17
|
+
`),t}function Re(r){let{fields:t,primaryKeys:n}=r,i="";for(let s of K([...t,...n]))i+=s;return t.some(({typeId:s})=>s==="bool")&&(i+=`
|
|
18
18
|
function _toBool(uint8 value) pure returns (bool result) {
|
|
19
19
|
assembly {
|
|
20
20
|
result := value
|
|
@@ -26,7 +26,7 @@ pragma solidity >=0.8.0;
|
|
|
26
26
|
result := value
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
`),i}function
|
|
29
|
+
`),i}function K(r){let t=new Map,n=new Map;for(let{typeWrappingData:i,typeWrap:s,typeUnwrap:y,internalTypeId:R}of r){if(!i)continue;let{kind:T}=i;if(T==="staticArray"){let{elementType:o,staticLength:A}=i;t.set(s,H(s,o,A,R)),n.set(y,j(y,o,A,R))}}return[...t.values(),...n.values()]}function H(r,t,n,i){return`
|
|
30
30
|
function ${r}(
|
|
31
31
|
${i} memory _value
|
|
32
32
|
) pure returns (
|
|
@@ -37,7 +37,7 @@ pragma solidity >=0.8.0;
|
|
|
37
37
|
_result := add(_value, 0x20)
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
|
-
`}function
|
|
40
|
+
`}function j(r,t,n,i){let s=n*32;return`
|
|
41
41
|
function ${r}(
|
|
42
42
|
${t}[${n}] memory _value
|
|
43
43
|
) view returns (
|
|
@@ -52,5 +52,5 @@ pragma solidity >=0.8.0;
|
|
|
52
52
|
}
|
|
53
53
|
Memory.copy(fromPointer, toPointer, ${s});
|
|
54
54
|
}
|
|
55
|
-
`}import{AbiTypeToSchemaType as c,getStaticByteLength as N,SchemaType as I,SchemaTypeToAbiType as S}from"@latticexyz/schema-type";import{parseStaticArray as d}from"@latticexyz/config";function oe(r,t){if(r in c){let i=c[r];return{schemaType:i,renderType:H(i)}}let n=d(r);if(n){if(n.elementType in c)return V(r,n.elementType,n.staticLength);throw new Error("Static arrays of user types are not supported")}return j(r,t)}function ce(r,t,n){if(!(r in c||d(r)))return{symbol:r,fromPath:n.userTypesPath+".sol",usedInPath:t}}function H(r){let t=N(r),n=t===0,i=S[r];return{typeId:i,typeWithLocation:n?i+" memory":i,enumName:I[r],staticByteLength:t,isDynamic:n,typeWrap:"",typeUnwrap:"",internalTypeId:i}}function j(r,t){if(r in t.enums){let n=I.UINT8,i=N(n),s=i===0,y=r;return{schemaType:n,renderType:{typeId:y,typeWithLocation:y,enumName:I[n],staticByteLength:i,isDynamic:s,typeWrap:`${r}`,typeUnwrap:"uint8",internalTypeId:`${S[n]}`}}}throw new Error(`User type "${r}" does not exist`)}function V(r,t,n){let i=t+"[]",s=c[i];return{schemaType:s,renderType:{typeId:r,typeWithLocation:`${r} memory`,enumName:I[s],staticByteLength:0,isDynamic:!0,typeWrap:`toStaticArray_${t}_${n}`,typeUnwrap:`fromStaticArray_${t}_${n}`,typeWrappingData:{kind:"staticArray",elementType:t,staticLength:n},internalTypeId:i}}}import{SchemaType as e}from"@latticexyz/schema-type";var Ye={[e.UINT8]:"RecsType.Number",[e.UINT16]:"RecsType.Number",[e.UINT24]:"RecsType.Number",[e.UINT32]:"RecsType.Number",[e.UINT40]:"RecsType.Number",[e.UINT48]:"RecsType.Number",[e.UINT56]:"RecsType.BigInt",[e.UINT64]:"RecsType.BigInt",[e.UINT72]:"RecsType.BigInt",[e.UINT80]:"RecsType.BigInt",[e.UINT88]:"RecsType.BigInt",[e.UINT96]:"RecsType.BigInt",[e.UINT104]:"RecsType.BigInt",[e.UINT112]:"RecsType.BigInt",[e.UINT120]:"RecsType.BigInt",[e.UINT128]:"RecsType.BigInt",[e.UINT136]:"RecsType.BigInt",[e.UINT144]:"RecsType.BigInt",[e.UINT152]:"RecsType.BigInt",[e.UINT160]:"RecsType.BigInt",[e.UINT168]:"RecsType.BigInt",[e.UINT176]:"RecsType.BigInt",[e.UINT184]:"RecsType.BigInt",[e.UINT192]:"RecsType.BigInt",[e.UINT200]:"RecsType.BigInt",[e.UINT208]:"RecsType.BigInt",[e.UINT216]:"RecsType.BigInt",[e.UINT224]:"RecsType.BigInt",[e.UINT232]:"RecsType.BigInt",[e.UINT240]:"RecsType.BigInt",[e.UINT248]:"RecsType.BigInt",[e.UINT256]:"RecsType.BigInt",[e.INT8]:"RecsType.Number",[e.INT16]:"RecsType.Number",[e.INT24]:"RecsType.Number",[e.INT32]:"RecsType.Number",[e.INT40]:"RecsType.Number",[e.INT48]:"RecsType.Number",[e.INT56]:"RecsType.BigInt",[e.INT64]:"RecsType.BigInt",[e.INT72]:"RecsType.BigInt",[e.INT80]:"RecsType.BigInt",[e.INT88]:"RecsType.BigInt",[e.INT96]:"RecsType.BigInt",[e.INT104]:"RecsType.BigInt",[e.INT112]:"RecsType.BigInt",[e.INT120]:"RecsType.BigInt",[e.INT128]:"RecsType.BigInt",[e.INT136]:"RecsType.BigInt",[e.INT144]:"RecsType.BigInt",[e.INT152]:"RecsType.BigInt",[e.INT160]:"RecsType.BigInt",[e.INT168]:"RecsType.BigInt",[e.INT176]:"RecsType.BigInt",[e.INT184]:"RecsType.BigInt",[e.INT192]:"RecsType.BigInt",[e.INT200]:"RecsType.BigInt",[e.INT208]:"RecsType.BigInt",[e.INT216]:"RecsType.BigInt",[e.INT224]:"RecsType.BigInt",[e.INT232]:"RecsType.BigInt",[e.INT240]:"RecsType.BigInt",[e.INT248]:"RecsType.BigInt",[e.INT256]:"RecsType.BigInt",[e.BYTES1]:"RecsType.String",[e.BYTES2]:"RecsType.String",[e.BYTES3]:"RecsType.String",[e.BYTES4]:"RecsType.String",[e.BYTES5]:"RecsType.String",[e.BYTES6]:"RecsType.String",[e.BYTES7]:"RecsType.String",[e.BYTES8]:"RecsType.String",[e.BYTES9]:"RecsType.String",[e.BYTES10]:"RecsType.String",[e.BYTES11]:"RecsType.String",[e.BYTES12]:"RecsType.String",[e.BYTES13]:"RecsType.String",[e.BYTES14]:"RecsType.String",[e.BYTES15]:"RecsType.String",[e.BYTES16]:"RecsType.String",[e.BYTES17]:"RecsType.String",[e.BYTES18]:"RecsType.String",[e.BYTES19]:"RecsType.String",[e.BYTES20]:"RecsType.String",[e.BYTES21]:"RecsType.String",[e.BYTES22]:"RecsType.String",[e.BYTES23]:"RecsType.String",[e.BYTES24]:"RecsType.String",[e.BYTES25]:"RecsType.String",[e.BYTES26]:"RecsType.String",[e.BYTES27]:"RecsType.String",[e.BYTES28]:"RecsType.String",[e.BYTES29]:"RecsType.String",[e.BYTES30]:"RecsType.String",[e.BYTES31]:"RecsType.String",[e.BYTES32]:"RecsType.String",[e.BOOL]:"RecsType.Boolean",[e.ADDRESS]:"RecsType.String",[e.UINT8_ARRAY]:"RecsType.NumberArray",[e.UINT16_ARRAY]:"RecsType.NumberArray",[e.UINT24_ARRAY]:"RecsType.NumberArray",[e.UINT32_ARRAY]:"RecsType.NumberArray",[e.UINT40_ARRAY]:"RecsType.NumberArray",[e.UINT48_ARRAY]:"RecsType.NumberArray",[e.UINT56_ARRAY]:"RecsType.BigIntArray",[e.UINT64_ARRAY]:"RecsType.BigIntArray",[e.UINT72_ARRAY]:"RecsType.BigIntArray",[e.UINT80_ARRAY]:"RecsType.BigIntArray",[e.UINT88_ARRAY]:"RecsType.BigIntArray",[e.UINT96_ARRAY]:"RecsType.BigIntArray",[e.UINT104_ARRAY]:"RecsType.BigIntArray",[e.UINT112_ARRAY]:"RecsType.BigIntArray",[e.UINT120_ARRAY]:"RecsType.BigIntArray",[e.UINT128_ARRAY]:"RecsType.BigIntArray",[e.UINT136_ARRAY]:"RecsType.BigIntArray",[e.UINT144_ARRAY]:"RecsType.BigIntArray",[e.UINT152_ARRAY]:"RecsType.BigIntArray",[e.UINT160_ARRAY]:"RecsType.BigIntArray",[e.UINT168_ARRAY]:"RecsType.BigIntArray",[e.UINT176_ARRAY]:"RecsType.BigIntArray",[e.UINT184_ARRAY]:"RecsType.BigIntArray",[e.UINT192_ARRAY]:"RecsType.BigIntArray",[e.UINT200_ARRAY]:"RecsType.BigIntArray",[e.UINT208_ARRAY]:"RecsType.BigIntArray",[e.UINT216_ARRAY]:"RecsType.BigIntArray",[e.UINT224_ARRAY]:"RecsType.BigIntArray",[e.UINT232_ARRAY]:"RecsType.BigIntArray",[e.UINT240_ARRAY]:"RecsType.BigIntArray",[e.UINT248_ARRAY]:"RecsType.BigIntArray",[e.UINT256_ARRAY]:"RecsType.BigIntArray",[e.INT8_ARRAY]:"RecsType.NumberArray",[e.INT16_ARRAY]:"RecsType.NumberArray",[e.INT24_ARRAY]:"RecsType.NumberArray",[e.INT32_ARRAY]:"RecsType.NumberArray",[e.INT40_ARRAY]:"RecsType.NumberArray",[e.INT48_ARRAY]:"RecsType.NumberArray",[e.INT56_ARRAY]:"RecsType.BigIntArray",[e.INT64_ARRAY]:"RecsType.BigIntArray",[e.INT72_ARRAY]:"RecsType.BigIntArray",[e.INT80_ARRAY]:"RecsType.BigIntArray",[e.INT88_ARRAY]:"RecsType.BigIntArray",[e.INT96_ARRAY]:"RecsType.BigIntArray",[e.INT104_ARRAY]:"RecsType.BigIntArray",[e.INT112_ARRAY]:"RecsType.BigIntArray",[e.INT120_ARRAY]:"RecsType.BigIntArray",[e.INT128_ARRAY]:"RecsType.BigIntArray",[e.INT136_ARRAY]:"RecsType.BigIntArray",[e.INT144_ARRAY]:"RecsType.BigIntArray",[e.INT152_ARRAY]:"RecsType.BigIntArray",[e.INT160_ARRAY]:"RecsType.BigIntArray",[e.INT168_ARRAY]:"RecsType.BigIntArray",[e.INT176_ARRAY]:"RecsType.BigIntArray",[e.INT184_ARRAY]:"RecsType.BigIntArray",[e.INT192_ARRAY]:"RecsType.BigIntArray",[e.INT200_ARRAY]:"RecsType.BigIntArray",[e.INT208_ARRAY]:"RecsType.BigIntArray",[e.INT216_ARRAY]:"RecsType.BigIntArray",[e.INT224_ARRAY]:"RecsType.BigIntArray",[e.INT232_ARRAY]:"RecsType.BigIntArray",[e.INT240_ARRAY]:"RecsType.BigIntArray",[e.INT248_ARRAY]:"RecsType.BigIntArray",[e.INT256_ARRAY]:"RecsType.BigIntArray",[e.BYTES1_ARRAY]:"RecsType.BigIntArray",[e.BYTES2_ARRAY]:"RecsType.BigIntArray",[e.BYTES3_ARRAY]:"RecsType.BigIntArray",[e.BYTES4_ARRAY]:"RecsType.BigIntArray",[e.BYTES5_ARRAY]:"RecsType.BigIntArray",[e.BYTES6_ARRAY]:"RecsType.BigIntArray",[e.BYTES7_ARRAY]:"RecsType.BigIntArray",[e.BYTES8_ARRAY]:"RecsType.BigIntArray",[e.BYTES9_ARRAY]:"RecsType.BigIntArray",[e.BYTES10_ARRAY]:"RecsType.BigIntArray",[e.BYTES11_ARRAY]:"RecsType.BigIntArray",[e.BYTES12_ARRAY]:"RecsType.BigIntArray",[e.BYTES13_ARRAY]:"RecsType.BigIntArray",[e.BYTES14_ARRAY]:"RecsType.BigIntArray",[e.BYTES15_ARRAY]:"RecsType.BigIntArray",[e.BYTES16_ARRAY]:"RecsType.BigIntArray",[e.BYTES17_ARRAY]:"RecsType.BigIntArray",[e.BYTES18_ARRAY]:"RecsType.BigIntArray",[e.BYTES19_ARRAY]:"RecsType.BigIntArray",[e.BYTES20_ARRAY]:"RecsType.BigIntArray",[e.BYTES21_ARRAY]:"RecsType.BigIntArray",[e.BYTES22_ARRAY]:"RecsType.BigIntArray",[e.BYTES23_ARRAY]:"RecsType.BigIntArray",[e.BYTES24_ARRAY]:"RecsType.BigIntArray",[e.BYTES25_ARRAY]:"RecsType.BigIntArray",[e.BYTES26_ARRAY]:"RecsType.BigIntArray",[e.BYTES27_ARRAY]:"RecsType.BigIntArray",[e.BYTES28_ARRAY]:"RecsType.BigIntArray",[e.BYTES29_ARRAY]:"RecsType.BigIntArray",[e.BYTES30_ARRAY]:"RecsType.BigIntArray",[e.BYTES31_ARRAY]:"RecsType.BigIntArray",[e.BYTES32_ARRAY]:"RecsType.BigIntArray",[e.BOOL_ARRAY]:"RecsType.T",[e.ADDRESS_ARRAY]:"RecsType.StringArray",[e.BYTES]:"RecsType.String",[e.STRING]:"RecsType.String"};import{parse as G,visit as X}from"@solidity-parser/parser";import{MUDError as g}from"@latticexyz/config";function be(r,t){let n=G(r),i=!1,s=[],y=[];if(X(n,{ContractDefinition({name:R}){R===t&&(i=!0)},FunctionDefinition({name:R,visibility:T,parameters:p,stateMutability:a,returnParameters:m,isConstructor:D,isFallback:v,isReceiveEther:W},u){if(u!==void 0&&u.type==="ContractDefinition"&&u.name===t)try{if(D||v||W)return;if(T==="default")throw new g("Visibility is not specified");if(T==="external"||T==="public"){y.push({name:R===null?"":R,parameters:p.map(_),stateMutability:a||"",returnParameters:m===null?[]:m.map(_)});for(let{typeName:o}of p.concat(m??[]))s=s.concat(E(o))}}catch(o){throw o instanceof g&&(o.message=`Function "${R}" in contract "${t}": ${o.message}`),o}}}),!i)throw new g(`Contract not found: ${t}`);return{functions:y,symbols:s}}function _({name:r,typeName:t,storageLocation:n}){let i="",{name:s,stateMutability:y}=b(t);return i+=s,y!==null&&(i+=` ${y}`),n!==null&&(i+=` ${n}`),r!==null&&(i+=` ${r}`),i}function b(r){if(r===null)return{name:"",stateMutability:null};if(r.type==="ElementaryTypeName")return{name:r.name,stateMutability:r.stateMutability};if(r.type==="UserDefinedTypeName")return{name:r.namePath,stateMutability:null};if(r.type==="ArrayTypeName"){let t=r.length?.type==="NumberLiteral"?r.length.number:"",{name:n,stateMutability:i}=b(r.baseTypeName);return{name:`${n}[${t}]`,stateMutability:i}}else throw new g(`Invalid typeName.type ${r.type}`)}function E(r){return r?.type==="UserDefinedTypeName"?[r.namePath.split(".")[0]]:r?.type==="ArrayTypeName"?E(r.baseTypeName):[]}import q from"chalk";import f from"prettier";import z from"prettier-plugin-solidity";async function U(r,t){let n;t&&(n=await f.resolveConfig(t));try{return f.format(r,{plugins:[z],parser:"solidity-parse",printWidth:120,semi:!0,tabWidth:2,useTabs:!1,bracketSpacing:!0,...n})}catch(i){let s;return i instanceof Error?s=i.message:s=i,console.log(q.yellow(`Error during output formatting: ${s}`)),r}}async function $(r){return f.format(r,{parser:"typescript"})}import{mkdirSync as h,writeFileSync as x}from"fs";import{dirname as w}from"path";async function We(r,t,n){let i=await U(r);h(w(t),{recursive:!0}),x(t,i),console.log(`${n}: ${t}`)}async function Me(r,t,n){let i=await $(r);h(w(t),{recursive:!0}),x(t,i),console.log(`${n}: ${t}`)}export{be as contractToInterface,We as formatAndWriteSolidity,Me as formatAndWriteTypescript,U as formatSolidity,$ as formatTypescript,H as getSchemaTypeInfo,j as getUserTypeInfo,ce as importForAbiOrUserType,A as renderArguments,Q as renderCommonData,ne as renderEnums,L as renderImports,B as renderList,Z as renderRelativeImports,ee as renderTableId,se as renderTypeHelpers,O as renderWithStore,Y as renderedSolidityHeader,oe as resolveAbiOrUserType,Ye as schemaTypesToRecsTypeStrings,P as solidityRelativeImportPath};
|
|
55
|
+
`}import{AbiTypeToSchemaType as c,getStaticByteLength as d,SchemaType as g,SchemaTypeToAbiType as _}from"@latticexyz/schema-type";import{parseStaticArray as b}from"@latticexyz/config";function Ae(r,t){if(r in c){let i=c[r];return{schemaType:i,renderType:V(i)}}let n=b(r);if(n){if(n.elementType in c)return X(r,n.elementType,n.staticLength);throw new Error("Static arrays of user types are not supported")}return G(r,t)}function Ie(r,t,n){if(!(r in c||b(r)))return{symbol:r,fromPath:n.userTypesPath+".sol",usedInPath:t}}function V(r){let t=d(r),n=t===0,i=_[r];return{typeId:i,typeWithLocation:n?i+" memory":i,enumName:g[r],staticByteLength:t,isDynamic:n,typeWrap:"",typeUnwrap:"",internalTypeId:i}}function G(r,t){if(r in t.enums){let n=g.UINT8,i=d(n),s=i===0,y=r;return{schemaType:n,renderType:{typeId:y,typeWithLocation:y,enumName:g[n],staticByteLength:i,isDynamic:s,typeWrap:`${r}`,typeUnwrap:"uint8",internalTypeId:`${_[n]}`}}}throw new Error(`User type "${r}" does not exist`)}function X(r,t,n){let i=t+"[]",s=c[i];return{schemaType:s,renderType:{typeId:r,typeWithLocation:`${r} memory`,enumName:g[s],staticByteLength:0,isDynamic:!0,typeWrap:`toStaticArray_${t}_${n}`,typeUnwrap:`fromStaticArray_${t}_${n}`,typeWrappingData:{kind:"staticArray",elementType:t,staticLength:n},internalTypeId:i}}}import{SchemaType as e}from"@latticexyz/schema-type";var Se={[e.UINT8]:"RecsType.Number",[e.UINT16]:"RecsType.Number",[e.UINT24]:"RecsType.Number",[e.UINT32]:"RecsType.Number",[e.UINT40]:"RecsType.Number",[e.UINT48]:"RecsType.Number",[e.UINT56]:"RecsType.BigInt",[e.UINT64]:"RecsType.BigInt",[e.UINT72]:"RecsType.BigInt",[e.UINT80]:"RecsType.BigInt",[e.UINT88]:"RecsType.BigInt",[e.UINT96]:"RecsType.BigInt",[e.UINT104]:"RecsType.BigInt",[e.UINT112]:"RecsType.BigInt",[e.UINT120]:"RecsType.BigInt",[e.UINT128]:"RecsType.BigInt",[e.UINT136]:"RecsType.BigInt",[e.UINT144]:"RecsType.BigInt",[e.UINT152]:"RecsType.BigInt",[e.UINT160]:"RecsType.BigInt",[e.UINT168]:"RecsType.BigInt",[e.UINT176]:"RecsType.BigInt",[e.UINT184]:"RecsType.BigInt",[e.UINT192]:"RecsType.BigInt",[e.UINT200]:"RecsType.BigInt",[e.UINT208]:"RecsType.BigInt",[e.UINT216]:"RecsType.BigInt",[e.UINT224]:"RecsType.BigInt",[e.UINT232]:"RecsType.BigInt",[e.UINT240]:"RecsType.BigInt",[e.UINT248]:"RecsType.BigInt",[e.UINT256]:"RecsType.BigInt",[e.INT8]:"RecsType.Number",[e.INT16]:"RecsType.Number",[e.INT24]:"RecsType.Number",[e.INT32]:"RecsType.Number",[e.INT40]:"RecsType.Number",[e.INT48]:"RecsType.Number",[e.INT56]:"RecsType.BigInt",[e.INT64]:"RecsType.BigInt",[e.INT72]:"RecsType.BigInt",[e.INT80]:"RecsType.BigInt",[e.INT88]:"RecsType.BigInt",[e.INT96]:"RecsType.BigInt",[e.INT104]:"RecsType.BigInt",[e.INT112]:"RecsType.BigInt",[e.INT120]:"RecsType.BigInt",[e.INT128]:"RecsType.BigInt",[e.INT136]:"RecsType.BigInt",[e.INT144]:"RecsType.BigInt",[e.INT152]:"RecsType.BigInt",[e.INT160]:"RecsType.BigInt",[e.INT168]:"RecsType.BigInt",[e.INT176]:"RecsType.BigInt",[e.INT184]:"RecsType.BigInt",[e.INT192]:"RecsType.BigInt",[e.INT200]:"RecsType.BigInt",[e.INT208]:"RecsType.BigInt",[e.INT216]:"RecsType.BigInt",[e.INT224]:"RecsType.BigInt",[e.INT232]:"RecsType.BigInt",[e.INT240]:"RecsType.BigInt",[e.INT248]:"RecsType.BigInt",[e.INT256]:"RecsType.BigInt",[e.BYTES1]:"RecsType.String",[e.BYTES2]:"RecsType.String",[e.BYTES3]:"RecsType.String",[e.BYTES4]:"RecsType.String",[e.BYTES5]:"RecsType.String",[e.BYTES6]:"RecsType.String",[e.BYTES7]:"RecsType.String",[e.BYTES8]:"RecsType.String",[e.BYTES9]:"RecsType.String",[e.BYTES10]:"RecsType.String",[e.BYTES11]:"RecsType.String",[e.BYTES12]:"RecsType.String",[e.BYTES13]:"RecsType.String",[e.BYTES14]:"RecsType.String",[e.BYTES15]:"RecsType.String",[e.BYTES16]:"RecsType.String",[e.BYTES17]:"RecsType.String",[e.BYTES18]:"RecsType.String",[e.BYTES19]:"RecsType.String",[e.BYTES20]:"RecsType.String",[e.BYTES21]:"RecsType.String",[e.BYTES22]:"RecsType.String",[e.BYTES23]:"RecsType.String",[e.BYTES24]:"RecsType.String",[e.BYTES25]:"RecsType.String",[e.BYTES26]:"RecsType.String",[e.BYTES27]:"RecsType.String",[e.BYTES28]:"RecsType.String",[e.BYTES29]:"RecsType.String",[e.BYTES30]:"RecsType.String",[e.BYTES31]:"RecsType.String",[e.BYTES32]:"RecsType.String",[e.BOOL]:"RecsType.Boolean",[e.ADDRESS]:"RecsType.String",[e.UINT8_ARRAY]:"RecsType.NumberArray",[e.UINT16_ARRAY]:"RecsType.NumberArray",[e.UINT24_ARRAY]:"RecsType.NumberArray",[e.UINT32_ARRAY]:"RecsType.NumberArray",[e.UINT40_ARRAY]:"RecsType.NumberArray",[e.UINT48_ARRAY]:"RecsType.NumberArray",[e.UINT56_ARRAY]:"RecsType.BigIntArray",[e.UINT64_ARRAY]:"RecsType.BigIntArray",[e.UINT72_ARRAY]:"RecsType.BigIntArray",[e.UINT80_ARRAY]:"RecsType.BigIntArray",[e.UINT88_ARRAY]:"RecsType.BigIntArray",[e.UINT96_ARRAY]:"RecsType.BigIntArray",[e.UINT104_ARRAY]:"RecsType.BigIntArray",[e.UINT112_ARRAY]:"RecsType.BigIntArray",[e.UINT120_ARRAY]:"RecsType.BigIntArray",[e.UINT128_ARRAY]:"RecsType.BigIntArray",[e.UINT136_ARRAY]:"RecsType.BigIntArray",[e.UINT144_ARRAY]:"RecsType.BigIntArray",[e.UINT152_ARRAY]:"RecsType.BigIntArray",[e.UINT160_ARRAY]:"RecsType.BigIntArray",[e.UINT168_ARRAY]:"RecsType.BigIntArray",[e.UINT176_ARRAY]:"RecsType.BigIntArray",[e.UINT184_ARRAY]:"RecsType.BigIntArray",[e.UINT192_ARRAY]:"RecsType.BigIntArray",[e.UINT200_ARRAY]:"RecsType.BigIntArray",[e.UINT208_ARRAY]:"RecsType.BigIntArray",[e.UINT216_ARRAY]:"RecsType.BigIntArray",[e.UINT224_ARRAY]:"RecsType.BigIntArray",[e.UINT232_ARRAY]:"RecsType.BigIntArray",[e.UINT240_ARRAY]:"RecsType.BigIntArray",[e.UINT248_ARRAY]:"RecsType.BigIntArray",[e.UINT256_ARRAY]:"RecsType.BigIntArray",[e.INT8_ARRAY]:"RecsType.NumberArray",[e.INT16_ARRAY]:"RecsType.NumberArray",[e.INT24_ARRAY]:"RecsType.NumberArray",[e.INT32_ARRAY]:"RecsType.NumberArray",[e.INT40_ARRAY]:"RecsType.NumberArray",[e.INT48_ARRAY]:"RecsType.NumberArray",[e.INT56_ARRAY]:"RecsType.BigIntArray",[e.INT64_ARRAY]:"RecsType.BigIntArray",[e.INT72_ARRAY]:"RecsType.BigIntArray",[e.INT80_ARRAY]:"RecsType.BigIntArray",[e.INT88_ARRAY]:"RecsType.BigIntArray",[e.INT96_ARRAY]:"RecsType.BigIntArray",[e.INT104_ARRAY]:"RecsType.BigIntArray",[e.INT112_ARRAY]:"RecsType.BigIntArray",[e.INT120_ARRAY]:"RecsType.BigIntArray",[e.INT128_ARRAY]:"RecsType.BigIntArray",[e.INT136_ARRAY]:"RecsType.BigIntArray",[e.INT144_ARRAY]:"RecsType.BigIntArray",[e.INT152_ARRAY]:"RecsType.BigIntArray",[e.INT160_ARRAY]:"RecsType.BigIntArray",[e.INT168_ARRAY]:"RecsType.BigIntArray",[e.INT176_ARRAY]:"RecsType.BigIntArray",[e.INT184_ARRAY]:"RecsType.BigIntArray",[e.INT192_ARRAY]:"RecsType.BigIntArray",[e.INT200_ARRAY]:"RecsType.BigIntArray",[e.INT208_ARRAY]:"RecsType.BigIntArray",[e.INT216_ARRAY]:"RecsType.BigIntArray",[e.INT224_ARRAY]:"RecsType.BigIntArray",[e.INT232_ARRAY]:"RecsType.BigIntArray",[e.INT240_ARRAY]:"RecsType.BigIntArray",[e.INT248_ARRAY]:"RecsType.BigIntArray",[e.INT256_ARRAY]:"RecsType.BigIntArray",[e.BYTES1_ARRAY]:"RecsType.BigIntArray",[e.BYTES2_ARRAY]:"RecsType.BigIntArray",[e.BYTES3_ARRAY]:"RecsType.BigIntArray",[e.BYTES4_ARRAY]:"RecsType.BigIntArray",[e.BYTES5_ARRAY]:"RecsType.BigIntArray",[e.BYTES6_ARRAY]:"RecsType.BigIntArray",[e.BYTES7_ARRAY]:"RecsType.BigIntArray",[e.BYTES8_ARRAY]:"RecsType.BigIntArray",[e.BYTES9_ARRAY]:"RecsType.BigIntArray",[e.BYTES10_ARRAY]:"RecsType.BigIntArray",[e.BYTES11_ARRAY]:"RecsType.BigIntArray",[e.BYTES12_ARRAY]:"RecsType.BigIntArray",[e.BYTES13_ARRAY]:"RecsType.BigIntArray",[e.BYTES14_ARRAY]:"RecsType.BigIntArray",[e.BYTES15_ARRAY]:"RecsType.BigIntArray",[e.BYTES16_ARRAY]:"RecsType.BigIntArray",[e.BYTES17_ARRAY]:"RecsType.BigIntArray",[e.BYTES18_ARRAY]:"RecsType.BigIntArray",[e.BYTES19_ARRAY]:"RecsType.BigIntArray",[e.BYTES20_ARRAY]:"RecsType.BigIntArray",[e.BYTES21_ARRAY]:"RecsType.BigIntArray",[e.BYTES22_ARRAY]:"RecsType.BigIntArray",[e.BYTES23_ARRAY]:"RecsType.BigIntArray",[e.BYTES24_ARRAY]:"RecsType.BigIntArray",[e.BYTES25_ARRAY]:"RecsType.BigIntArray",[e.BYTES26_ARRAY]:"RecsType.BigIntArray",[e.BYTES27_ARRAY]:"RecsType.BigIntArray",[e.BYTES28_ARRAY]:"RecsType.BigIntArray",[e.BYTES29_ARRAY]:"RecsType.BigIntArray",[e.BYTES30_ARRAY]:"RecsType.BigIntArray",[e.BYTES31_ARRAY]:"RecsType.BigIntArray",[e.BYTES32_ARRAY]:"RecsType.BigIntArray",[e.BOOL_ARRAY]:"RecsType.T",[e.ADDRESS_ARRAY]:"RecsType.StringArray",[e.BYTES]:"RecsType.String",[e.STRING]:"RecsType.String"};import{parse as q,visit as U}from"@solidity-parser/parser";import{MUDError as a}from"@latticexyz/config";function he(r,t){let n=q(r),i=!1,s=[],y=[];if(U(n,{ContractDefinition({name:R}){R===t&&(i=!0)},FunctionDefinition({name:R,visibility:T,parameters:o,stateMutability:A,returnParameters:m,isConstructor:W,isFallback:M,isReceiveEther:L},u){if(u!==void 0&&u.type==="ContractDefinition"&&u.name===t)try{if(W||M||L)return;if(T==="default")throw new a("Visibility is not specified");if(T==="external"||T==="public"){y.push({name:R===null?"":R,parameters:o.map(E),stateMutability:A||"",returnParameters:m===null?[]:m.map(E)});for(let{typeName:p}of o.concat(m??[])){let C=$(p);s=s.concat(z(n,C))}}}catch(p){throw p instanceof a&&(p.message=`Function "${R}" in contract "${t}": ${p.message}`),p}}}),!i)throw new a(`Contract not found: ${t}`);return{functions:y,symbolImports:s}}function E({name:r,typeName:t,storageLocation:n}){let i="",{name:s,stateMutability:y}=h(t);return i+=s,y!==null&&(i+=` ${y}`),n!==null&&(i+=` ${n}`),r!==null&&(i+=` ${r}`),i}function h(r){if(r===null)return{name:"",stateMutability:null};if(r.type==="ElementaryTypeName")return{name:r.name,stateMutability:r.stateMutability};if(r.type==="UserDefinedTypeName")return{name:r.namePath,stateMutability:null};if(r.type==="ArrayTypeName"){let t=r.length?.type==="NumberLiteral"?r.length.number:"",{name:n,stateMutability:i}=h(r.baseTypeName);return{name:`${n}[${t}]`,stateMutability:i}}else throw new a(`Invalid typeName.type ${r.type}`)}function $(r){return r?.type==="UserDefinedTypeName"?[r.namePath.split(".")[0]]:r?.type==="ArrayTypeName"?$(r.baseTypeName):[]}function z(r,t){let n=[];for(let i of t){let s;if(U(r,{ImportDirective({path:y,symbolAliases:R}){if(R)for(let T of R){let o=T[1]||T[0];if(i===o){s={symbol:T[0],path:y};return}}}}),s)n.push(s);else throw new a(`Symbol "${i}" has no explicit import`)}return n}import J from"chalk";import f from"prettier";import Q from"prettier-plugin-solidity";async function x(r,t){let n;t&&(n=await f.resolveConfig(t));try{return f.format(r,{plugins:[Q],parser:"solidity-parse",printWidth:120,semi:!0,tabWidth:2,useTabs:!1,bracketSpacing:!0,...n})}catch(i){let s;return i instanceof Error?s=i.message:s=i,console.log(J.yellow(`Error during output formatting: ${s}`)),r}}async function w(r){return f.format(r,{parser:"typescript"})}import{mkdirSync as D,writeFileSync as v}from"fs";import{dirname as P}from"path";async function Le(r,t,n){let i=await x(r);D(P(t),{recursive:!0}),v(t,i),console.log(`${n}: ${t}`)}async function Ce(r,t,n){let i=await w(r);D(P(t),{recursive:!0}),v(t,i),console.log(`${n}: ${t}`)}export{he as contractToInterface,Le as formatAndWriteSolidity,Ce as formatAndWriteTypescript,x as formatSolidity,w as formatTypescript,V as getSchemaTypeInfo,G as getUserTypeInfo,Ie as importForAbiOrUserType,N as renderAbsoluteImports,I as renderArguments,O as renderCommonData,ye as renderEnums,ee as renderImports,B as renderList,re as renderRelativeImports,ne as renderTableId,Re as renderTypeHelpers,te as renderWithStore,l as renderedSolidityHeader,Ae as resolveAbiOrUserType,Se as schemaTypesToRecsTypeStrings,Y as solidityRelativeImportPath};
|
|
56
56
|
//# sourceMappingURL=codegen.js.map
|
package/dist/codegen.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/codegen/render-solidity/common.ts","../src/codegen/render-solidity/renderEnums.ts","../src/codegen/render-solidity/renderTypeHelpers.ts","../src/codegen/render-solidity/userType.ts","../src/codegen/render-typescript/schemaTypesToRecsTypeStrings.ts","../src/codegen/utils/contractToInterface.ts","../src/codegen/utils/format.ts","../src/codegen/utils/formatAndWrite.ts"],"sourcesContent":["import path from \"path\";\nimport { ImportDatum, RelativeImportDatum, StaticResourceData, RenderPrimaryKey, RenderType } from \"./types\";\n\nexport const renderedSolidityHeader = `// SPDX-License-Identifier: MIT\npragma solidity >=0.8.0;\n\n/* Autogenerated file. Do not edit manually. */`;\n\n/**\n * Renders a list of lines\n */\nexport function renderList<T>(list: T[], renderItem: (item: T, index: number) => string) {\n return internalRenderList(\"\", list, renderItem);\n}\n\n/**\n * Renders a comma-separated list of arguments for solidity functions, ignoring empty and undefined ones\n */\nexport function renderArguments(args: (string | undefined)[]) {\n const filteredArgs = args.filter((arg) => arg !== undefined && arg !== \"\") as string[];\n return internalRenderList(\",\", filteredArgs, (arg) => arg);\n}\n\nexport function renderCommonData({\n staticResourceData,\n primaryKeys,\n}: {\n staticResourceData?: StaticResourceData;\n primaryKeys: RenderPrimaryKey[];\n}) {\n // static resource means static tableId as well, and no tableId arguments\n const _tableId = staticResourceData ? \"\" : \"_tableId\";\n const _typedTableId = staticResourceData ? \"\" : \"bytes32 _tableId\";\n\n const _keyArgs = renderArguments(primaryKeys.map(({ name }) => name));\n const _typedKeyArgs = renderArguments(primaryKeys.map(({ name, typeWithLocation }) => `${typeWithLocation} ${name}`));\n\n const _primaryKeysDefinition = `\n bytes32[] memory _primaryKeys = new bytes32[](${primaryKeys.length});\n ${renderList(\n primaryKeys,\n (primaryKey, index) => `_primaryKeys[${index}] = ${renderValueTypeToBytes32(primaryKey.name, primaryKey)};`\n )}\n `;\n\n return {\n _tableId,\n _typedTableId,\n _keyArgs,\n _typedKeyArgs,\n _primaryKeysDefinition,\n };\n}\n\n/** For 2 paths which are relative to a common root, create a relative import path from one to another */\nexport function solidityRelativeImportPath(fromPath: string, usedInPath: string) {\n // 1st \"./\" must be added because path strips it,\n // but solidity expects it unless there's \"../\" (\"./../\" is fine).\n // 2nd and 3rd \"./\" forcefully avoid absolute paths (everything is relative to `src`).\n return \"./\" + path.relative(\"./\" + usedInPath, \"./\" + fromPath);\n}\n\n/**\n * Aggregates, deduplicates and renders imports for symbols per path.\n * Identical symbols from different paths are NOT handled, they should be checked before rendering.\n */\nexport function renderRelativeImports(imports: RelativeImportDatum[]) {\n return renderImports(\n imports.map(({ symbol, fromPath, usedInPath }) => ({\n symbol,\n path: solidityRelativeImportPath(fromPath, usedInPath),\n }))\n );\n}\n\n/**\n * Aggregates, deduplicates and renders imports for symbols per path.\n * Identical symbols from different paths are NOT handled, they should be checked before rendering.\n */\nexport function renderImports(imports: ImportDatum[]) {\n // Aggregate symbols by import path, also deduplicating them\n const aggregatedImports = new Map<string, Set<string>>();\n for (const { symbol, path } of imports) {\n if (!aggregatedImports.has(path)) {\n aggregatedImports.set(path, new Set());\n }\n aggregatedImports.get(path)?.add(symbol);\n }\n // Render imports\n const renderedImports = [];\n for (const [path, symbols] of aggregatedImports) {\n const renderedSymbols = [...symbols].join(\", \");\n renderedImports.push(`import { ${renderedSymbols} } from \"${path}\";`);\n }\n return renderedImports.join(\"\\n\");\n}\n\nexport function renderWithStore(\n storeArgument: boolean,\n callback: (\n _typedStore: string | undefined,\n _store: string,\n _commentSuffix: string,\n _untypedStore: string | undefined\n ) => string\n) {\n let result = \"\";\n result += callback(undefined, \"StoreSwitch\", \"\", undefined);\n\n if (storeArgument) {\n result += \"\\n\" + callback(\"IStore _store\", \"_store\", \" (using the specified store)\", \"_store\");\n }\n\n return result;\n}\n\nexport function renderTableId(staticResourceData: StaticResourceData) {\n const hardcodedTableId = `bytes32(abi.encodePacked(bytes16(\"${staticResourceData.namespace}\"), bytes16(\"${staticResourceData.name}\")))`;\n\n const tableIdDefinition = `\n bytes32 constant _tableId = ${hardcodedTableId};\n bytes32 constant ${staticResourceData.tableIdName} = _tableId;\n `;\n return {\n hardcodedTableId,\n tableIdDefinition,\n };\n}\n\nfunction renderValueTypeToBytes32(name: string, { staticByteLength, typeUnwrap, internalTypeId }: RenderType) {\n const bits = staticByteLength * 8;\n const innerText = `${typeUnwrap}(${name})`;\n\n if (internalTypeId.match(/^uint\\d{1,3}$/)) {\n return `bytes32(uint256(${innerText}))`;\n } else if (internalTypeId.match(/^int\\d{1,3}$/)) {\n return `bytes32(uint256(uint${bits}(${innerText})))`;\n } else if (internalTypeId.match(/^bytes\\d{1,2}$/)) {\n return `bytes32(${innerText})`;\n } else if (internalTypeId === \"address\") {\n return `bytes32(bytes20(${innerText}))`;\n } else if (internalTypeId === \"bool\") {\n return `_boolToBytes32(${innerText})`;\n } else {\n throw new Error(`Unknown value type id ${internalTypeId}`);\n }\n}\n\nfunction internalRenderList<T>(lineTerminator: string, list: T[], renderItem: (item: T, index: number) => string) {\n return list\n .map((item, index) => renderItem(item, index) + (index === list.length - 1 ? \"\" : lineTerminator))\n .join(\"\\n\");\n}\n","import { renderArguments, renderList, renderedSolidityHeader } from \"./common\";\nimport { RenderEnum } from \"./types\";\n\nexport function renderEnums(enums: RenderEnum[]) {\n let result = renderedSolidityHeader;\n\n result += renderList(\n enums,\n ({ name, memberNames }) => `\n enum ${name} {\n ${renderArguments(memberNames)}\n }\n `\n );\n\n return result;\n}\n","import { RenderField, RenderPrimaryKey, RenderType } from \"./types\";\n\nexport function renderTypeHelpers(options: { fields: RenderField[]; primaryKeys: RenderPrimaryKey[] }) {\n const { fields, primaryKeys } = options;\n\n let result = \"\";\n\n for (const wrappingHelper of getWrappingHelpers([...fields, ...primaryKeys])) {\n result += wrappingHelper;\n }\n\n // bool is special - it's the only primitive value type that can't be typecasted to/from\n if (fields.some(({ typeId }) => typeId === \"bool\")) {\n result += `\n function _toBool(uint8 value) pure returns (bool result) {\n assembly {\n result := value\n }\n }\n `;\n }\n if (primaryKeys.some(({ typeId }) => typeId === \"bool\")) {\n result += `\n function _boolToBytes32(bool value) pure returns (bytes32 result) {\n assembly {\n result := value\n }\n }\n `;\n }\n\n return result;\n}\n\nfunction getWrappingHelpers(array: RenderType[]) {\n const wrappers = new Map();\n const unwrappers = new Map();\n for (const { typeWrappingData, typeWrap, typeUnwrap, internalTypeId } of array) {\n if (!typeWrappingData) continue;\n const { kind } = typeWrappingData;\n\n if (kind === \"staticArray\") {\n const { elementType, staticLength } = typeWrappingData;\n wrappers.set(typeWrap, renderWrapperStaticArray(typeWrap, elementType, staticLength, internalTypeId));\n unwrappers.set(typeUnwrap, renderUnwrapperStaticArray(typeUnwrap, elementType, staticLength, internalTypeId));\n }\n }\n\n return [...wrappers.values(), ...unwrappers.values()];\n}\n\nfunction renderWrapperStaticArray(\n functionName: string,\n elementType: string,\n staticLength: number,\n internalTypeId: string\n) {\n // WARNING: ensure this still works if changing major solidity versions!\n // (the memory layout for static arrays may change)\n return `\n function ${functionName}(\n ${internalTypeId} memory _value\n ) pure returns (\n ${elementType}[${staticLength}] memory _result\n ) {\n // in memory static arrays are just dynamic arrays without the length byte\n assembly {\n _result := add(_value, 0x20)\n }\n }\n `;\n}\n\nfunction renderUnwrapperStaticArray(\n functionName: string,\n elementType: string,\n staticLength: number,\n internalTypeId: string\n) {\n // byte length for memory copying (more efficient than a loop)\n const byteLength = staticLength * 32;\n // TODO to optimize memory usage consider generalizing TightEncoder to a render-time utility\n return `\n function ${functionName}(\n ${elementType}[${staticLength}] memory _value\n ) view returns (\n ${internalTypeId} memory _result\n ) {\n _result = new ${internalTypeId}(${staticLength});\n uint256 fromPointer;\n uint256 toPointer;\n assembly {\n fromPointer := _value\n toPointer := add(_result, 0x20)\n }\n Memory.copy(fromPointer, toPointer, ${byteLength});\n }\n `;\n}\n","import { AbiTypeToSchemaType, getStaticByteLength, SchemaType, SchemaTypeToAbiType } from \"@latticexyz/schema-type\";\nimport { StoreConfig, parseStaticArray } from \"@latticexyz/config\";\nimport { RelativeImportDatum, RenderType } from \"./types\";\n\nexport type UserTypeInfo = ReturnType<typeof getUserTypeInfo>;\n\n/**\n * Resolve an abi or user type into a SchemaType and RenderType\n */\nexport function resolveAbiOrUserType(\n abiOrUserType: string,\n config: StoreConfig\n): {\n schemaType: SchemaType;\n renderType: RenderType;\n} {\n // abi types which directly mirror a SchemaType\n if (abiOrUserType in AbiTypeToSchemaType) {\n const schemaType = AbiTypeToSchemaType[abiOrUserType];\n return {\n schemaType,\n renderType: getSchemaTypeInfo(schemaType),\n };\n }\n // static arrays\n const staticArray = parseStaticArray(abiOrUserType);\n if (staticArray) {\n if (staticArray.elementType in AbiTypeToSchemaType) {\n return getStaticArrayTypeInfo(abiOrUserType, staticArray.elementType, staticArray.staticLength);\n } else {\n throw new Error(\"Static arrays of user types are not supported\");\n }\n }\n // user types\n return getUserTypeInfo(abiOrUserType, config);\n}\n\n/**\n * Get the required import for SchemaType|userType (`undefined` means that no import is required)\n */\nexport function importForAbiOrUserType(\n abiOrUserType: string,\n usedInDirectory: string,\n config: StoreConfig\n): RelativeImportDatum | undefined {\n // abi types which directly mirror a SchemaType\n if (abiOrUserType in AbiTypeToSchemaType) {\n return undefined;\n }\n // static arrays\n const staticArray = parseStaticArray(abiOrUserType);\n if (staticArray) {\n return undefined;\n }\n // user types\n return {\n symbol: abiOrUserType,\n fromPath: config.userTypesPath + \".sol\",\n usedInPath: usedInDirectory,\n };\n}\n\nexport function getSchemaTypeInfo(schemaType: SchemaType): RenderType {\n const staticByteLength = getStaticByteLength(schemaType);\n const isDynamic = staticByteLength === 0;\n const typeId = SchemaTypeToAbiType[schemaType];\n return {\n typeId,\n typeWithLocation: isDynamic ? typeId + \" memory\" : typeId,\n enumName: SchemaType[schemaType],\n staticByteLength,\n isDynamic,\n typeWrap: \"\",\n typeUnwrap: \"\",\n internalTypeId: typeId,\n };\n}\n\nexport function getUserTypeInfo(\n userType: string,\n config: StoreConfig\n): {\n schemaType: SchemaType;\n renderType: RenderType;\n} {\n // enums\n if (userType in config.enums) {\n const schemaType = SchemaType.UINT8;\n const staticByteLength = getStaticByteLength(schemaType);\n const isDynamic = staticByteLength === 0;\n const typeId = userType;\n return {\n schemaType,\n renderType: {\n typeId,\n typeWithLocation: typeId,\n enumName: SchemaType[schemaType],\n staticByteLength,\n isDynamic,\n typeWrap: `${userType}`,\n typeUnwrap: `uint8`,\n internalTypeId: `${SchemaTypeToAbiType[schemaType]}`,\n },\n };\n }\n // invalid\n throw new Error(`User type \"${userType}\" does not exist`);\n}\n\nfunction getStaticArrayTypeInfo(abiType: string, elementType: string, staticLength: number) {\n const internalTypeId = elementType + \"[]\";\n const schemaType = AbiTypeToSchemaType[internalTypeId];\n return {\n schemaType,\n renderType: {\n typeId: abiType,\n typeWithLocation: `${abiType} memory`,\n enumName: SchemaType[schemaType],\n staticByteLength: 0,\n isDynamic: true,\n typeWrap: `toStaticArray_${elementType}_${staticLength}`,\n typeUnwrap: `fromStaticArray_${elementType}_${staticLength}`,\n typeWrappingData: {\n kind: \"staticArray\",\n elementType,\n staticLength,\n },\n internalTypeId,\n },\n } as const;\n}\n","import { SchemaType } from \"@latticexyz/schema-type\";\n\nexport const schemaTypesToRecsTypeStrings: Record<SchemaType, string> = {\n [SchemaType.UINT8]: \"RecsType.Number\",\n [SchemaType.UINT16]: \"RecsType.Number\",\n [SchemaType.UINT24]: \"RecsType.Number\",\n [SchemaType.UINT32]: \"RecsType.Number\",\n [SchemaType.UINT40]: \"RecsType.Number\",\n [SchemaType.UINT48]: \"RecsType.Number\",\n [SchemaType.UINT56]: \"RecsType.BigInt\",\n [SchemaType.UINT64]: \"RecsType.BigInt\",\n [SchemaType.UINT72]: \"RecsType.BigInt\",\n [SchemaType.UINT80]: \"RecsType.BigInt\",\n [SchemaType.UINT88]: \"RecsType.BigInt\",\n [SchemaType.UINT96]: \"RecsType.BigInt\",\n [SchemaType.UINT104]: \"RecsType.BigInt\",\n [SchemaType.UINT112]: \"RecsType.BigInt\",\n [SchemaType.UINT120]: \"RecsType.BigInt\",\n [SchemaType.UINT128]: \"RecsType.BigInt\",\n [SchemaType.UINT136]: \"RecsType.BigInt\",\n [SchemaType.UINT144]: \"RecsType.BigInt\",\n [SchemaType.UINT152]: \"RecsType.BigInt\",\n [SchemaType.UINT160]: \"RecsType.BigInt\",\n [SchemaType.UINT168]: \"RecsType.BigInt\",\n [SchemaType.UINT176]: \"RecsType.BigInt\",\n [SchemaType.UINT184]: \"RecsType.BigInt\",\n [SchemaType.UINT192]: \"RecsType.BigInt\",\n [SchemaType.UINT200]: \"RecsType.BigInt\",\n [SchemaType.UINT208]: \"RecsType.BigInt\",\n [SchemaType.UINT216]: \"RecsType.BigInt\",\n [SchemaType.UINT224]: \"RecsType.BigInt\",\n [SchemaType.UINT232]: \"RecsType.BigInt\",\n [SchemaType.UINT240]: \"RecsType.BigInt\",\n [SchemaType.UINT248]: \"RecsType.BigInt\",\n [SchemaType.UINT256]: \"RecsType.BigInt\",\n [SchemaType.INT8]: \"RecsType.Number\",\n [SchemaType.INT16]: \"RecsType.Number\",\n [SchemaType.INT24]: \"RecsType.Number\",\n [SchemaType.INT32]: \"RecsType.Number\",\n [SchemaType.INT40]: \"RecsType.Number\",\n [SchemaType.INT48]: \"RecsType.Number\",\n [SchemaType.INT56]: \"RecsType.BigInt\",\n [SchemaType.INT64]: \"RecsType.BigInt\",\n [SchemaType.INT72]: \"RecsType.BigInt\",\n [SchemaType.INT80]: \"RecsType.BigInt\",\n [SchemaType.INT88]: \"RecsType.BigInt\",\n [SchemaType.INT96]: \"RecsType.BigInt\",\n [SchemaType.INT104]: \"RecsType.BigInt\",\n [SchemaType.INT112]: \"RecsType.BigInt\",\n [SchemaType.INT120]: \"RecsType.BigInt\",\n [SchemaType.INT128]: \"RecsType.BigInt\",\n [SchemaType.INT136]: \"RecsType.BigInt\",\n [SchemaType.INT144]: \"RecsType.BigInt\",\n [SchemaType.INT152]: \"RecsType.BigInt\",\n [SchemaType.INT160]: \"RecsType.BigInt\",\n [SchemaType.INT168]: \"RecsType.BigInt\",\n [SchemaType.INT176]: \"RecsType.BigInt\",\n [SchemaType.INT184]: \"RecsType.BigInt\",\n [SchemaType.INT192]: \"RecsType.BigInt\",\n [SchemaType.INT200]: \"RecsType.BigInt\",\n [SchemaType.INT208]: \"RecsType.BigInt\",\n [SchemaType.INT216]: \"RecsType.BigInt\",\n [SchemaType.INT224]: \"RecsType.BigInt\",\n [SchemaType.INT232]: \"RecsType.BigInt\",\n [SchemaType.INT240]: \"RecsType.BigInt\",\n [SchemaType.INT248]: \"RecsType.BigInt\",\n [SchemaType.INT256]: \"RecsType.BigInt\",\n [SchemaType.BYTES1]: \"RecsType.String\",\n [SchemaType.BYTES2]: \"RecsType.String\",\n [SchemaType.BYTES3]: \"RecsType.String\",\n [SchemaType.BYTES4]: \"RecsType.String\",\n [SchemaType.BYTES5]: \"RecsType.String\",\n [SchemaType.BYTES6]: \"RecsType.String\",\n [SchemaType.BYTES7]: \"RecsType.String\",\n [SchemaType.BYTES8]: \"RecsType.String\",\n [SchemaType.BYTES9]: \"RecsType.String\",\n [SchemaType.BYTES10]: \"RecsType.String\",\n [SchemaType.BYTES11]: \"RecsType.String\",\n [SchemaType.BYTES12]: \"RecsType.String\",\n [SchemaType.BYTES13]: \"RecsType.String\",\n [SchemaType.BYTES14]: \"RecsType.String\",\n [SchemaType.BYTES15]: \"RecsType.String\",\n [SchemaType.BYTES16]: \"RecsType.String\",\n [SchemaType.BYTES17]: \"RecsType.String\",\n [SchemaType.BYTES18]: \"RecsType.String\",\n [SchemaType.BYTES19]: \"RecsType.String\",\n [SchemaType.BYTES20]: \"RecsType.String\",\n [SchemaType.BYTES21]: \"RecsType.String\",\n [SchemaType.BYTES22]: \"RecsType.String\",\n [SchemaType.BYTES23]: \"RecsType.String\",\n [SchemaType.BYTES24]: \"RecsType.String\",\n [SchemaType.BYTES25]: \"RecsType.String\",\n [SchemaType.BYTES26]: \"RecsType.String\",\n [SchemaType.BYTES27]: \"RecsType.String\",\n [SchemaType.BYTES28]: \"RecsType.String\",\n [SchemaType.BYTES29]: \"RecsType.String\",\n [SchemaType.BYTES30]: \"RecsType.String\",\n [SchemaType.BYTES31]: \"RecsType.String\",\n [SchemaType.BYTES32]: \"RecsType.String\",\n [SchemaType.BOOL]: \"RecsType.Boolean\",\n [SchemaType.ADDRESS]: \"RecsType.String\",\n [SchemaType.UINT8_ARRAY]: \"RecsType.NumberArray\",\n [SchemaType.UINT16_ARRAY]: \"RecsType.NumberArray\",\n [SchemaType.UINT24_ARRAY]: \"RecsType.NumberArray\",\n [SchemaType.UINT32_ARRAY]: \"RecsType.NumberArray\",\n [SchemaType.UINT40_ARRAY]: \"RecsType.NumberArray\",\n [SchemaType.UINT48_ARRAY]: \"RecsType.NumberArray\",\n [SchemaType.UINT56_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT64_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT72_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT80_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT88_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT96_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT104_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT112_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT120_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT128_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT136_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT144_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT152_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT160_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT168_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT176_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT184_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT192_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT200_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT208_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT216_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT224_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT232_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT240_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT248_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT256_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT8_ARRAY]: \"RecsType.NumberArray\",\n [SchemaType.INT16_ARRAY]: \"RecsType.NumberArray\",\n [SchemaType.INT24_ARRAY]: \"RecsType.NumberArray\",\n [SchemaType.INT32_ARRAY]: \"RecsType.NumberArray\",\n [SchemaType.INT40_ARRAY]: \"RecsType.NumberArray\",\n [SchemaType.INT48_ARRAY]: \"RecsType.NumberArray\",\n [SchemaType.INT56_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT64_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT72_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT80_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT88_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT96_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT104_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT112_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT120_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT128_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT136_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT144_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT152_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT160_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT168_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT176_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT184_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT192_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT200_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT208_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT216_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT224_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT232_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT240_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT248_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT256_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES1_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES2_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES3_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES4_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES5_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES6_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES7_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES8_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES9_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES10_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES11_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES12_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES13_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES14_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES15_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES16_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES17_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES18_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES19_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES20_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES21_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES22_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES23_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES24_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES25_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES26_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES27_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES28_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES29_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES30_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES31_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES32_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BOOL_ARRAY]: \"RecsType.T\", // no boolean array\n [SchemaType.ADDRESS_ARRAY]: \"RecsType.StringArray\",\n [SchemaType.BYTES]: \"RecsType.String\",\n [SchemaType.STRING]: \"RecsType.String\",\n};\n","import { parse, visit } from \"@solidity-parser/parser\";\nimport type { TypeName, VariableDeclaration } from \"@solidity-parser/parser/dist/src/ast-types\";\nimport { MUDError } from \"@latticexyz/config\";\n\nexport interface ContractInterfaceFunction {\n name: string;\n parameters: string[];\n stateMutability: string;\n returnParameters: string[];\n}\n\n/**\n * Parse the contract data to get the functions necessary to generate an interface,\n * and symbols to import from the original contract.\n * @param data contents of a file with the solidity contract\n * @param contractName name of the contract\n * @returns interface data\n */\nexport function contractToInterface(data: string, contractName: string) {\n const ast = parse(data);\n\n let withContract = false;\n let symbols: string[] = [];\n const functions: ContractInterfaceFunction[] = [];\n\n visit(ast, {\n ContractDefinition({ name }) {\n if (name === contractName) {\n withContract = true;\n }\n },\n FunctionDefinition(\n { name, visibility, parameters, stateMutability, returnParameters, isConstructor, isFallback, isReceiveEther },\n parent\n ) {\n if (parent !== undefined && parent.type === \"ContractDefinition\" && parent.name === contractName) {\n try {\n // skip constructor and fallbacks\n if (isConstructor || isFallback || isReceiveEther) return;\n // forbid default visibility (this check might be unnecessary, modern solidity already disallows this)\n if (visibility === \"default\") throw new MUDError(`Visibility is not specified`);\n\n if (visibility === \"external\" || visibility === \"public\") {\n functions.push({\n name: name === null ? \"\" : name,\n parameters: parameters.map(parseParameter),\n stateMutability: stateMutability || \"\",\n returnParameters: returnParameters === null ? [] : returnParameters.map(parseParameter),\n });\n\n for (const { typeName } of parameters.concat(returnParameters ?? [])) {\n symbols = symbols.concat(typeNameToExternalSymbols(typeName));\n }\n }\n } catch (error: unknown) {\n if (error instanceof MUDError) {\n error.message = `Function \"${name}\" in contract \"${contractName}\": ${error.message}`;\n }\n throw error;\n }\n }\n },\n });\n\n if (!withContract) {\n throw new MUDError(`Contract not found: ${contractName}`);\n }\n\n return {\n functions,\n symbols,\n };\n}\n\nfunction parseParameter({ name, typeName, storageLocation }: VariableDeclaration): string {\n let typedNameWithLocation = \"\";\n\n const { name: flattenedTypeName, stateMutability } = flattenTypeName(typeName);\n // type name (e.g. uint256)\n typedNameWithLocation += flattenedTypeName;\n // optional mutability (e.g. address payable)\n if (stateMutability !== null) {\n typedNameWithLocation += ` ${stateMutability}`;\n }\n // location, when relevant (e.g. string memory)\n if (storageLocation !== null) {\n typedNameWithLocation += ` ${storageLocation}`;\n }\n // optional variable name\n if (name !== null) {\n typedNameWithLocation += ` ${name}`;\n }\n\n return typedNameWithLocation;\n}\n\nfunction flattenTypeName(typeName: TypeName | null): { name: string; stateMutability: string | null } {\n if (typeName === null) {\n return {\n name: \"\",\n stateMutability: null,\n };\n }\n if (typeName.type === \"ElementaryTypeName\") {\n return {\n name: typeName.name,\n stateMutability: typeName.stateMutability,\n };\n } else if (typeName.type === \"UserDefinedTypeName\") {\n return {\n name: typeName.namePath,\n stateMutability: null,\n };\n } else if (typeName.type === \"ArrayTypeName\") {\n const length = typeName.length?.type === \"NumberLiteral\" ? typeName.length.number : \"\";\n const { name, stateMutability } = flattenTypeName(typeName.baseTypeName);\n return {\n name: `${name}[${length}]`,\n stateMutability,\n };\n } else {\n // TODO function types are unsupported but could be useful\n throw new MUDError(`Invalid typeName.type ${typeName.type}`);\n }\n}\n\n// Get symbols that need to be imported for given typeName\nfunction typeNameToExternalSymbols(typeName: TypeName | null): string[] {\n if (typeName?.type === \"UserDefinedTypeName\") {\n // split is needed to get a library, if types are internal to it\n const symbol = typeName.namePath.split(\".\")[0];\n return [symbol];\n } else if (typeName?.type === \"ArrayTypeName\") {\n return typeNameToExternalSymbols(typeName.baseTypeName);\n } else {\n return [];\n }\n}\n","import chalk from \"chalk\";\nimport prettier from \"prettier\";\nimport prettierPluginSolidity from \"prettier-plugin-solidity\";\n\nexport async function formatSolidity(content: string, prettierConfigPath?: string) {\n let config;\n if (prettierConfigPath) {\n config = await prettier.resolveConfig(prettierConfigPath);\n }\n try {\n return prettier.format(content, {\n plugins: [prettierPluginSolidity],\n parser: \"solidity-parse\",\n\n printWidth: 120,\n semi: true,\n tabWidth: 2,\n useTabs: false,\n bracketSpacing: true,\n\n ...config,\n });\n } catch (error) {\n let message;\n if (error instanceof Error) {\n message = error.message;\n } else {\n message = error;\n }\n console.log(chalk.yellow(`Error during output formatting: ${message}`));\n return content;\n }\n}\n\nexport async function formatTypescript(content: string) {\n return prettier.format(content, {\n parser: \"typescript\",\n });\n}\n","import { mkdirSync, writeFileSync } from \"fs\";\nimport { dirname } from \"path\";\nimport { formatSolidity, formatTypescript } from \"./format\";\n\nexport async function formatAndWriteSolidity(output: string, fullOutputPath: string, logPrefix: string) {\n const formattedOutput = await formatSolidity(output);\n\n mkdirSync(dirname(fullOutputPath), { recursive: true });\n\n writeFileSync(fullOutputPath, formattedOutput);\n console.log(`${logPrefix}: ${fullOutputPath}`);\n}\n\nexport async function formatAndWriteTypescript(output: string, fullOutputPath: string, logPrefix: string) {\n const formattedOutput = await formatTypescript(output);\n\n mkdirSync(dirname(fullOutputPath), { recursive: true });\n\n writeFileSync(fullOutputPath, formattedOutput);\n console.log(`${logPrefix}: ${fullOutputPath}`);\n}\n"],"mappings":"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KAAK,EAAG,kBACpB,CAACA,EAAW,KAAK,EAAG,kBACpB,CAACA,EAAW,KAAK,EAAG,kBACpB,CAACA,EAAW,KAAK,EAAG,kBACpB,CAACA,EAAW,KAAK,EAAG,kBACpB,CAACA,EAAW,KAAK,EAAG,kBACpB,CAACA,EAAW,KAAK,EAAG,kBACpB,CAACA,EAAW,KAAK,EAAG,kBACpB,CAACA,EAAW,KAAK,EAAG,kBACpB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,MAAM,EAAG,kBACrB,CAACA,EAAW,OAAO,EAAG,kBACtB,CAACA,EAAW,OAAO,EAAG,kBACtB,CAACA,EAAW,OAAO,EAAG,kBACtB,CAACA,EAAW,OAAO,EAAG,kBACtB,CAACA,EAAW,OAAO,EAAG,kBACtB,CAACA,E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","names":["path","renderedSolidityHeader","renderList","list","renderItem","internalRenderList","renderArguments","args","filteredArgs","arg","renderCommonData","staticResourceData","primaryKeys","_tableId","_typedTableId","_keyArgs","name","_typedKeyArgs","typeWithLocation","_primaryKeysDefinition","primaryKey","index","renderValueTypeToBytes32","solidityRelativeImportPath","fromPath","usedInPath","renderRelativeImports","imports","renderImports","symbol","aggregatedImports","renderedImports","symbols","renderedSymbols","renderWithStore","storeArgument","callback","result","renderTableId","hardcodedTableId","tableIdDefinition","staticByteLength","typeUnwrap","internalTypeId","bits","innerText","lineTerminator","item","renderEnums","enums","result","renderedSolidityHeader","renderList","name","memberNames","renderArguments","renderTypeHelpers","options","fields","primaryKeys","result","wrappingHelper","getWrappingHelpers","typeId","array","wrappers","unwrappers","typeWrappingData","typeWrap","typeUnwrap","internalTypeId","kind","elementType","staticLength","renderWrapperStaticArray","renderUnwrapperStaticArray","functionName","byteLength","AbiTypeToSchemaType","getStaticByteLength","SchemaType","SchemaTypeToAbiType","parseStaticArray","resolveAbiOrUserType","abiOrUserType","config","schemaType","getSchemaTypeInfo","staticArray","getStaticArrayTypeInfo","getUserTypeInfo","importForAbiOrUserType","usedInDirectory","staticByteLength","isDynamic","typeId","userType","abiType","elementType","staticLength","internalTypeId","SchemaType","schemaTypesToRecsTypeStrings","parse","visit","MUDError","contractToInterface","data","contractName","ast","withContract","symbols","functions","name","visibility","parameters","stateMutability","returnParameters","isConstructor","isFallback","isReceiveEther","parent","parseParameter","typeName","typeNameToExternalSymbols","error","storageLocation","typedNameWithLocation","flattenedTypeName","flattenTypeName","length","chalk","prettier","prettierPluginSolidity","formatSolidity","content","prettierConfigPath","config","error","message","formatTypescript","mkdirSync","writeFileSync","dirname","formatAndWriteSolidity","output","fullOutputPath","logPrefix","formattedOutput","formatSolidity","mkdirSync","dirname","writeFileSync","formatAndWriteTypescript","formatTypescript"]}
|
|
1
|
+
{"version":3,"sources":["../src/codegen/render-solidity/common.ts","../src/codegen/render-solidity/renderEnums.ts","../src/codegen/render-solidity/renderTypeHelpers.ts","../src/codegen/render-solidity/userType.ts","../src/codegen/render-typescript/schemaTypesToRecsTypeStrings.ts","../src/codegen/utils/contractToInterface.ts","../src/codegen/utils/format.ts","../src/codegen/utils/formatAndWrite.ts"],"sourcesContent":["import path from \"path\";\nimport {\n AbsoluteImportDatum,\n RelativeImportDatum,\n ImportDatum,\n StaticResourceData,\n RenderPrimaryKey,\n RenderType,\n} from \"./types\";\n\nexport const renderedSolidityHeader = `// SPDX-License-Identifier: MIT\npragma solidity >=0.8.0;\n\n/* Autogenerated file. Do not edit manually. */`;\n\n/**\n * Renders a list of lines\n */\nexport function renderList<T>(list: T[], renderItem: (item: T, index: number) => string) {\n return internalRenderList(\"\", list, renderItem);\n}\n\n/**\n * Renders a comma-separated list of arguments for solidity functions, ignoring empty and undefined ones\n */\nexport function renderArguments(args: (string | undefined)[]) {\n const filteredArgs = args.filter((arg) => arg !== undefined && arg !== \"\") as string[];\n return internalRenderList(\",\", filteredArgs, (arg) => arg);\n}\n\nexport function renderCommonData({\n staticResourceData,\n primaryKeys,\n}: {\n staticResourceData?: StaticResourceData;\n primaryKeys: RenderPrimaryKey[];\n}) {\n // static resource means static tableId as well, and no tableId arguments\n const _tableId = staticResourceData ? \"\" : \"_tableId\";\n const _typedTableId = staticResourceData ? \"\" : \"bytes32 _tableId\";\n\n const _keyArgs = renderArguments(primaryKeys.map(({ name }) => name));\n const _typedKeyArgs = renderArguments(primaryKeys.map(({ name, typeWithLocation }) => `${typeWithLocation} ${name}`));\n\n const _primaryKeysDefinition = `\n bytes32[] memory _primaryKeys = new bytes32[](${primaryKeys.length});\n ${renderList(\n primaryKeys,\n (primaryKey, index) => `_primaryKeys[${index}] = ${renderValueTypeToBytes32(primaryKey.name, primaryKey)};`\n )}\n `;\n\n return {\n _tableId,\n _typedTableId,\n _keyArgs,\n _typedKeyArgs,\n _primaryKeysDefinition,\n };\n}\n\n/** For 2 paths which are relative to a common root, create a relative import path from one to another */\nexport function solidityRelativeImportPath(fromPath: string, usedInPath: string) {\n // 1st \"./\" must be added because path strips it,\n // but solidity expects it unless there's \"../\" (\"./../\" is fine).\n // 2nd and 3rd \"./\" forcefully avoid absolute paths (everything is relative to `src`).\n return \"./\" + path.relative(\"./\" + usedInPath, \"./\" + fromPath);\n}\n\n/**\n * Aggregates, deduplicates and renders imports for symbols per path.\n * Identical symbols from different paths are NOT handled, they should be checked before rendering.\n */\nexport function renderImports(imports: ImportDatum[]) {\n return renderAbsoluteImports(\n imports.map((importDatum) => {\n if (\"path\" in importDatum) {\n return importDatum;\n } else {\n return {\n symbol: importDatum.symbol,\n path: solidityRelativeImportPath(importDatum.fromPath, importDatum.usedInPath),\n };\n }\n })\n );\n}\n\n/**\n * Aggregates, deduplicates and renders imports for symbols per path.\n * Identical symbols from different paths are NOT handled, they should be checked before rendering.\n */\nexport function renderRelativeImports(imports: RelativeImportDatum[]) {\n return renderAbsoluteImports(\n imports.map(({ symbol, fromPath, usedInPath }) => ({\n symbol,\n path: solidityRelativeImportPath(fromPath, usedInPath),\n }))\n );\n}\n\n/**\n * Aggregates, deduplicates and renders imports for symbols per path.\n * Identical symbols from different paths are NOT handled, they should be checked before rendering.\n */\nexport function renderAbsoluteImports(imports: AbsoluteImportDatum[]) {\n // Aggregate symbols by import path, also deduplicating them\n const aggregatedImports = new Map<string, Set<string>>();\n for (const { symbol, path } of imports) {\n if (!aggregatedImports.has(path)) {\n aggregatedImports.set(path, new Set());\n }\n aggregatedImports.get(path)?.add(symbol);\n }\n // Render imports\n const renderedImports = [];\n for (const [path, symbols] of aggregatedImports) {\n const renderedSymbols = [...symbols].join(\", \");\n renderedImports.push(`import { ${renderedSymbols} } from \"${path}\";`);\n }\n return renderedImports.join(\"\\n\");\n}\n\nexport function renderWithStore(\n storeArgument: boolean,\n callback: (\n _typedStore: string | undefined,\n _store: string,\n _commentSuffix: string,\n _untypedStore: string | undefined\n ) => string\n) {\n let result = \"\";\n result += callback(undefined, \"StoreSwitch\", \"\", undefined);\n\n if (storeArgument) {\n result += \"\\n\" + callback(\"IStore _store\", \"_store\", \" (using the specified store)\", \"_store\");\n }\n\n return result;\n}\n\nexport function renderTableId(staticResourceData: StaticResourceData) {\n const hardcodedTableId = `bytes32(abi.encodePacked(bytes16(\"${staticResourceData.namespace}\"), bytes16(\"${staticResourceData.name}\")))`;\n\n const tableIdDefinition = `\n bytes32 constant _tableId = ${hardcodedTableId};\n bytes32 constant ${staticResourceData.tableIdName} = _tableId;\n `;\n return {\n hardcodedTableId,\n tableIdDefinition,\n };\n}\n\nfunction renderValueTypeToBytes32(name: string, { staticByteLength, typeUnwrap, internalTypeId }: RenderType) {\n const bits = staticByteLength * 8;\n const innerText = `${typeUnwrap}(${name})`;\n\n if (internalTypeId.match(/^uint\\d{1,3}$/)) {\n return `bytes32(uint256(${innerText}))`;\n } else if (internalTypeId.match(/^int\\d{1,3}$/)) {\n return `bytes32(uint256(uint${bits}(${innerText})))`;\n } else if (internalTypeId.match(/^bytes\\d{1,2}$/)) {\n return `bytes32(${innerText})`;\n } else if (internalTypeId === \"address\") {\n return `bytes32(bytes20(${innerText}))`;\n } else if (internalTypeId === \"bool\") {\n return `_boolToBytes32(${innerText})`;\n } else {\n throw new Error(`Unknown value type id ${internalTypeId}`);\n }\n}\n\nfunction internalRenderList<T>(lineTerminator: string, list: T[], renderItem: (item: T, index: number) => string) {\n return list\n .map((item, index) => renderItem(item, index) + (index === list.length - 1 ? \"\" : lineTerminator))\n .join(\"\\n\");\n}\n","import { renderArguments, renderList, renderedSolidityHeader } from \"./common\";\nimport { RenderEnum } from \"./types\";\n\nexport function renderEnums(enums: RenderEnum[]) {\n let result = renderedSolidityHeader;\n\n result += renderList(\n enums,\n ({ name, memberNames }) => `\n enum ${name} {\n ${renderArguments(memberNames)}\n }\n `\n );\n\n return result;\n}\n","import { RenderField, RenderPrimaryKey, RenderType } from \"./types\";\n\nexport function renderTypeHelpers(options: { fields: RenderField[]; primaryKeys: RenderPrimaryKey[] }) {\n const { fields, primaryKeys } = options;\n\n let result = \"\";\n\n for (const wrappingHelper of getWrappingHelpers([...fields, ...primaryKeys])) {\n result += wrappingHelper;\n }\n\n // bool is special - it's the only primitive value type that can't be typecasted to/from\n if (fields.some(({ typeId }) => typeId === \"bool\")) {\n result += `\n function _toBool(uint8 value) pure returns (bool result) {\n assembly {\n result := value\n }\n }\n `;\n }\n if (primaryKeys.some(({ typeId }) => typeId === \"bool\")) {\n result += `\n function _boolToBytes32(bool value) pure returns (bytes32 result) {\n assembly {\n result := value\n }\n }\n `;\n }\n\n return result;\n}\n\nfunction getWrappingHelpers(array: RenderType[]) {\n const wrappers = new Map();\n const unwrappers = new Map();\n for (const { typeWrappingData, typeWrap, typeUnwrap, internalTypeId } of array) {\n if (!typeWrappingData) continue;\n const { kind } = typeWrappingData;\n\n if (kind === \"staticArray\") {\n const { elementType, staticLength } = typeWrappingData;\n wrappers.set(typeWrap, renderWrapperStaticArray(typeWrap, elementType, staticLength, internalTypeId));\n unwrappers.set(typeUnwrap, renderUnwrapperStaticArray(typeUnwrap, elementType, staticLength, internalTypeId));\n }\n }\n\n return [...wrappers.values(), ...unwrappers.values()];\n}\n\nfunction renderWrapperStaticArray(\n functionName: string,\n elementType: string,\n staticLength: number,\n internalTypeId: string\n) {\n // WARNING: ensure this still works if changing major solidity versions!\n // (the memory layout for static arrays may change)\n return `\n function ${functionName}(\n ${internalTypeId} memory _value\n ) pure returns (\n ${elementType}[${staticLength}] memory _result\n ) {\n // in memory static arrays are just dynamic arrays without the length byte\n assembly {\n _result := add(_value, 0x20)\n }\n }\n `;\n}\n\nfunction renderUnwrapperStaticArray(\n functionName: string,\n elementType: string,\n staticLength: number,\n internalTypeId: string\n) {\n // byte length for memory copying (more efficient than a loop)\n const byteLength = staticLength * 32;\n // TODO to optimize memory usage consider generalizing TightEncoder to a render-time utility\n return `\n function ${functionName}(\n ${elementType}[${staticLength}] memory _value\n ) view returns (\n ${internalTypeId} memory _result\n ) {\n _result = new ${internalTypeId}(${staticLength});\n uint256 fromPointer;\n uint256 toPointer;\n assembly {\n fromPointer := _value\n toPointer := add(_result, 0x20)\n }\n Memory.copy(fromPointer, toPointer, ${byteLength});\n }\n `;\n}\n","import { AbiTypeToSchemaType, getStaticByteLength, SchemaType, SchemaTypeToAbiType } from \"@latticexyz/schema-type\";\nimport { StoreConfig, parseStaticArray } from \"@latticexyz/config\";\nimport { RelativeImportDatum, RenderType } from \"./types\";\n\nexport type UserTypeInfo = ReturnType<typeof getUserTypeInfo>;\n\n/**\n * Resolve an abi or user type into a SchemaType and RenderType\n */\nexport function resolveAbiOrUserType(\n abiOrUserType: string,\n config: StoreConfig\n): {\n schemaType: SchemaType;\n renderType: RenderType;\n} {\n // abi types which directly mirror a SchemaType\n if (abiOrUserType in AbiTypeToSchemaType) {\n const schemaType = AbiTypeToSchemaType[abiOrUserType];\n return {\n schemaType,\n renderType: getSchemaTypeInfo(schemaType),\n };\n }\n // static arrays\n const staticArray = parseStaticArray(abiOrUserType);\n if (staticArray) {\n if (staticArray.elementType in AbiTypeToSchemaType) {\n return getStaticArrayTypeInfo(abiOrUserType, staticArray.elementType, staticArray.staticLength);\n } else {\n throw new Error(\"Static arrays of user types are not supported\");\n }\n }\n // user types\n return getUserTypeInfo(abiOrUserType, config);\n}\n\n/**\n * Get the required import for SchemaType|userType (`undefined` means that no import is required)\n */\nexport function importForAbiOrUserType(\n abiOrUserType: string,\n usedInDirectory: string,\n config: StoreConfig\n): RelativeImportDatum | undefined {\n // abi types which directly mirror a SchemaType\n if (abiOrUserType in AbiTypeToSchemaType) {\n return undefined;\n }\n // static arrays\n const staticArray = parseStaticArray(abiOrUserType);\n if (staticArray) {\n return undefined;\n }\n // user types\n return {\n symbol: abiOrUserType,\n fromPath: config.userTypesPath + \".sol\",\n usedInPath: usedInDirectory,\n };\n}\n\nexport function getSchemaTypeInfo(schemaType: SchemaType): RenderType {\n const staticByteLength = getStaticByteLength(schemaType);\n const isDynamic = staticByteLength === 0;\n const typeId = SchemaTypeToAbiType[schemaType];\n return {\n typeId,\n typeWithLocation: isDynamic ? typeId + \" memory\" : typeId,\n enumName: SchemaType[schemaType],\n staticByteLength,\n isDynamic,\n typeWrap: \"\",\n typeUnwrap: \"\",\n internalTypeId: typeId,\n };\n}\n\nexport function getUserTypeInfo(\n userType: string,\n config: StoreConfig\n): {\n schemaType: SchemaType;\n renderType: RenderType;\n} {\n // enums\n if (userType in config.enums) {\n const schemaType = SchemaType.UINT8;\n const staticByteLength = getStaticByteLength(schemaType);\n const isDynamic = staticByteLength === 0;\n const typeId = userType;\n return {\n schemaType,\n renderType: {\n typeId,\n typeWithLocation: typeId,\n enumName: SchemaType[schemaType],\n staticByteLength,\n isDynamic,\n typeWrap: `${userType}`,\n typeUnwrap: `uint8`,\n internalTypeId: `${SchemaTypeToAbiType[schemaType]}`,\n },\n };\n }\n // invalid\n throw new Error(`User type \"${userType}\" does not exist`);\n}\n\nfunction getStaticArrayTypeInfo(abiType: string, elementType: string, staticLength: number) {\n const internalTypeId = elementType + \"[]\";\n const schemaType = AbiTypeToSchemaType[internalTypeId];\n return {\n schemaType,\n renderType: {\n typeId: abiType,\n typeWithLocation: `${abiType} memory`,\n enumName: SchemaType[schemaType],\n staticByteLength: 0,\n isDynamic: true,\n typeWrap: `toStaticArray_${elementType}_${staticLength}`,\n typeUnwrap: `fromStaticArray_${elementType}_${staticLength}`,\n typeWrappingData: {\n kind: \"staticArray\",\n elementType,\n staticLength,\n },\n internalTypeId,\n },\n } as const;\n}\n","import { SchemaType } from \"@latticexyz/schema-type\";\n\nexport const schemaTypesToRecsTypeStrings: Record<SchemaType, string> = {\n [SchemaType.UINT8]: \"RecsType.Number\",\n [SchemaType.UINT16]: \"RecsType.Number\",\n [SchemaType.UINT24]: \"RecsType.Number\",\n [SchemaType.UINT32]: \"RecsType.Number\",\n [SchemaType.UINT40]: \"RecsType.Number\",\n [SchemaType.UINT48]: \"RecsType.Number\",\n [SchemaType.UINT56]: \"RecsType.BigInt\",\n [SchemaType.UINT64]: \"RecsType.BigInt\",\n [SchemaType.UINT72]: \"RecsType.BigInt\",\n [SchemaType.UINT80]: \"RecsType.BigInt\",\n [SchemaType.UINT88]: \"RecsType.BigInt\",\n [SchemaType.UINT96]: \"RecsType.BigInt\",\n [SchemaType.UINT104]: \"RecsType.BigInt\",\n [SchemaType.UINT112]: \"RecsType.BigInt\",\n [SchemaType.UINT120]: \"RecsType.BigInt\",\n [SchemaType.UINT128]: \"RecsType.BigInt\",\n [SchemaType.UINT136]: \"RecsType.BigInt\",\n [SchemaType.UINT144]: \"RecsType.BigInt\",\n [SchemaType.UINT152]: \"RecsType.BigInt\",\n [SchemaType.UINT160]: \"RecsType.BigInt\",\n [SchemaType.UINT168]: \"RecsType.BigInt\",\n [SchemaType.UINT176]: \"RecsType.BigInt\",\n [SchemaType.UINT184]: \"RecsType.BigInt\",\n [SchemaType.UINT192]: \"RecsType.BigInt\",\n [SchemaType.UINT200]: \"RecsType.BigInt\",\n [SchemaType.UINT208]: \"RecsType.BigInt\",\n [SchemaType.UINT216]: \"RecsType.BigInt\",\n [SchemaType.UINT224]: \"RecsType.BigInt\",\n [SchemaType.UINT232]: \"RecsType.BigInt\",\n [SchemaType.UINT240]: \"RecsType.BigInt\",\n [SchemaType.UINT248]: \"RecsType.BigInt\",\n [SchemaType.UINT256]: \"RecsType.BigInt\",\n [SchemaType.INT8]: \"RecsType.Number\",\n [SchemaType.INT16]: \"RecsType.Number\",\n [SchemaType.INT24]: \"RecsType.Number\",\n [SchemaType.INT32]: \"RecsType.Number\",\n [SchemaType.INT40]: \"RecsType.Number\",\n [SchemaType.INT48]: \"RecsType.Number\",\n [SchemaType.INT56]: \"RecsType.BigInt\",\n [SchemaType.INT64]: \"RecsType.BigInt\",\n [SchemaType.INT72]: \"RecsType.BigInt\",\n [SchemaType.INT80]: \"RecsType.BigInt\",\n [SchemaType.INT88]: \"RecsType.BigInt\",\n [SchemaType.INT96]: \"RecsType.BigInt\",\n [SchemaType.INT104]: \"RecsType.BigInt\",\n [SchemaType.INT112]: \"RecsType.BigInt\",\n [SchemaType.INT120]: \"RecsType.BigInt\",\n [SchemaType.INT128]: \"RecsType.BigInt\",\n [SchemaType.INT136]: \"RecsType.BigInt\",\n [SchemaType.INT144]: \"RecsType.BigInt\",\n [SchemaType.INT152]: \"RecsType.BigInt\",\n [SchemaType.INT160]: \"RecsType.BigInt\",\n [SchemaType.INT168]: \"RecsType.BigInt\",\n [SchemaType.INT176]: \"RecsType.BigInt\",\n [SchemaType.INT184]: \"RecsType.BigInt\",\n [SchemaType.INT192]: \"RecsType.BigInt\",\n [SchemaType.INT200]: \"RecsType.BigInt\",\n [SchemaType.INT208]: \"RecsType.BigInt\",\n [SchemaType.INT216]: \"RecsType.BigInt\",\n [SchemaType.INT224]: \"RecsType.BigInt\",\n [SchemaType.INT232]: \"RecsType.BigInt\",\n [SchemaType.INT240]: \"RecsType.BigInt\",\n [SchemaType.INT248]: \"RecsType.BigInt\",\n [SchemaType.INT256]: \"RecsType.BigInt\",\n [SchemaType.BYTES1]: \"RecsType.String\",\n [SchemaType.BYTES2]: \"RecsType.String\",\n [SchemaType.BYTES3]: \"RecsType.String\",\n [SchemaType.BYTES4]: \"RecsType.String\",\n [SchemaType.BYTES5]: \"RecsType.String\",\n [SchemaType.BYTES6]: \"RecsType.String\",\n [SchemaType.BYTES7]: \"RecsType.String\",\n [SchemaType.BYTES8]: \"RecsType.String\",\n [SchemaType.BYTES9]: \"RecsType.String\",\n [SchemaType.BYTES10]: \"RecsType.String\",\n [SchemaType.BYTES11]: \"RecsType.String\",\n [SchemaType.BYTES12]: \"RecsType.String\",\n [SchemaType.BYTES13]: \"RecsType.String\",\n [SchemaType.BYTES14]: \"RecsType.String\",\n [SchemaType.BYTES15]: \"RecsType.String\",\n [SchemaType.BYTES16]: \"RecsType.String\",\n [SchemaType.BYTES17]: \"RecsType.String\",\n [SchemaType.BYTES18]: \"RecsType.String\",\n [SchemaType.BYTES19]: \"RecsType.String\",\n [SchemaType.BYTES20]: \"RecsType.String\",\n [SchemaType.BYTES21]: \"RecsType.String\",\n [SchemaType.BYTES22]: \"RecsType.String\",\n [SchemaType.BYTES23]: \"RecsType.String\",\n [SchemaType.BYTES24]: \"RecsType.String\",\n [SchemaType.BYTES25]: \"RecsType.String\",\n [SchemaType.BYTES26]: \"RecsType.String\",\n [SchemaType.BYTES27]: \"RecsType.String\",\n [SchemaType.BYTES28]: \"RecsType.String\",\n [SchemaType.BYTES29]: \"RecsType.String\",\n [SchemaType.BYTES30]: \"RecsType.String\",\n [SchemaType.BYTES31]: \"RecsType.String\",\n [SchemaType.BYTES32]: \"RecsType.String\",\n [SchemaType.BOOL]: \"RecsType.Boolean\",\n [SchemaType.ADDRESS]: \"RecsType.String\",\n [SchemaType.UINT8_ARRAY]: \"RecsType.NumberArray\",\n [SchemaType.UINT16_ARRAY]: \"RecsType.NumberArray\",\n [SchemaType.UINT24_ARRAY]: \"RecsType.NumberArray\",\n [SchemaType.UINT32_ARRAY]: \"RecsType.NumberArray\",\n [SchemaType.UINT40_ARRAY]: \"RecsType.NumberArray\",\n [SchemaType.UINT48_ARRAY]: \"RecsType.NumberArray\",\n [SchemaType.UINT56_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT64_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT72_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT80_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT88_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT96_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT104_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT112_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT120_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT128_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT136_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT144_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT152_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT160_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT168_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT176_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT184_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT192_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT200_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT208_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT216_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT224_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT232_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT240_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT248_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.UINT256_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT8_ARRAY]: \"RecsType.NumberArray\",\n [SchemaType.INT16_ARRAY]: \"RecsType.NumberArray\",\n [SchemaType.INT24_ARRAY]: \"RecsType.NumberArray\",\n [SchemaType.INT32_ARRAY]: \"RecsType.NumberArray\",\n [SchemaType.INT40_ARRAY]: \"RecsType.NumberArray\",\n [SchemaType.INT48_ARRAY]: \"RecsType.NumberArray\",\n [SchemaType.INT56_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT64_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT72_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT80_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT88_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT96_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT104_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT112_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT120_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT128_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT136_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT144_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT152_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT160_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT168_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT176_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT184_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT192_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT200_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT208_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT216_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT224_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT232_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT240_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT248_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.INT256_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES1_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES2_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES3_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES4_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES5_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES6_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES7_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES8_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES9_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES10_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES11_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES12_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES13_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES14_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES15_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES16_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES17_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES18_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES19_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES20_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES21_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES22_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES23_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES24_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES25_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES26_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES27_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES28_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES29_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES30_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES31_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BYTES32_ARRAY]: \"RecsType.BigIntArray\",\n [SchemaType.BOOL_ARRAY]: \"RecsType.T\", // no boolean array\n [SchemaType.ADDRESS_ARRAY]: \"RecsType.StringArray\",\n [SchemaType.BYTES]: \"RecsType.String\",\n [SchemaType.STRING]: \"RecsType.String\",\n};\n","import { parse, visit } from \"@solidity-parser/parser\";\nimport type { SourceUnit, TypeName, VariableDeclaration } from \"@solidity-parser/parser/dist/src/ast-types\";\nimport { MUDError } from \"@latticexyz/config\";\n\nexport interface ContractInterfaceFunction {\n name: string;\n parameters: string[];\n stateMutability: string;\n returnParameters: string[];\n}\n\ninterface SymbolImport {\n symbol: string;\n path: string;\n}\n\n/**\n * Parse the contract data to get the functions necessary to generate an interface,\n * and symbols to import from the original contract.\n * @param data contents of a file with the solidity contract\n * @param contractName name of the contract\n * @returns interface data\n */\nexport function contractToInterface(data: string, contractName: string) {\n const ast = parse(data);\n\n let withContract = false;\n let symbolImports: SymbolImport[] = [];\n const functions: ContractInterfaceFunction[] = [];\n\n visit(ast, {\n ContractDefinition({ name }) {\n if (name === contractName) {\n withContract = true;\n }\n },\n FunctionDefinition(\n { name, visibility, parameters, stateMutability, returnParameters, isConstructor, isFallback, isReceiveEther },\n parent\n ) {\n if (parent !== undefined && parent.type === \"ContractDefinition\" && parent.name === contractName) {\n try {\n // skip constructor and fallbacks\n if (isConstructor || isFallback || isReceiveEther) return;\n // forbid default visibility (this check might be unnecessary, modern solidity already disallows this)\n if (visibility === \"default\") throw new MUDError(`Visibility is not specified`);\n\n if (visibility === \"external\" || visibility === \"public\") {\n functions.push({\n name: name === null ? \"\" : name,\n parameters: parameters.map(parseParameter),\n stateMutability: stateMutability || \"\",\n returnParameters: returnParameters === null ? [] : returnParameters.map(parseParameter),\n });\n\n for (const { typeName } of parameters.concat(returnParameters ?? [])) {\n const symbols = typeNameToSymbols(typeName);\n symbolImports = symbolImports.concat(symbolsToImports(ast, symbols));\n }\n }\n } catch (error: unknown) {\n if (error instanceof MUDError) {\n error.message = `Function \"${name}\" in contract \"${contractName}\": ${error.message}`;\n }\n throw error;\n }\n }\n },\n });\n\n if (!withContract) {\n throw new MUDError(`Contract not found: ${contractName}`);\n }\n\n return {\n functions,\n symbolImports,\n };\n}\n\nfunction parseParameter({ name, typeName, storageLocation }: VariableDeclaration): string {\n let typedNameWithLocation = \"\";\n\n const { name: flattenedTypeName, stateMutability } = flattenTypeName(typeName);\n // type name (e.g. uint256)\n typedNameWithLocation += flattenedTypeName;\n // optional mutability (e.g. address payable)\n if (stateMutability !== null) {\n typedNameWithLocation += ` ${stateMutability}`;\n }\n // location, when relevant (e.g. string memory)\n if (storageLocation !== null) {\n typedNameWithLocation += ` ${storageLocation}`;\n }\n // optional variable name\n if (name !== null) {\n typedNameWithLocation += ` ${name}`;\n }\n\n return typedNameWithLocation;\n}\n\nfunction flattenTypeName(typeName: TypeName | null): { name: string; stateMutability: string | null } {\n if (typeName === null) {\n return {\n name: \"\",\n stateMutability: null,\n };\n }\n if (typeName.type === \"ElementaryTypeName\") {\n return {\n name: typeName.name,\n stateMutability: typeName.stateMutability,\n };\n } else if (typeName.type === \"UserDefinedTypeName\") {\n return {\n name: typeName.namePath,\n stateMutability: null,\n };\n } else if (typeName.type === \"ArrayTypeName\") {\n const length = typeName.length?.type === \"NumberLiteral\" ? typeName.length.number : \"\";\n const { name, stateMutability } = flattenTypeName(typeName.baseTypeName);\n return {\n name: `${name}[${length}]`,\n stateMutability,\n };\n } else {\n // TODO function types are unsupported but could be useful\n throw new MUDError(`Invalid typeName.type ${typeName.type}`);\n }\n}\n\n// Get symbols that need to be imported for given typeName\nfunction typeNameToSymbols(typeName: TypeName | null): string[] {\n if (typeName?.type === \"UserDefinedTypeName\") {\n // split is needed to get a library, if types are internal to it\n const symbol = typeName.namePath.split(\".\")[0];\n return [symbol];\n } else if (typeName?.type === \"ArrayTypeName\") {\n return typeNameToSymbols(typeName.baseTypeName);\n } else {\n return [];\n }\n}\n\n// Get imports for given symbols.\n// To avoid circular dependencies of interfaces on their implementations,\n// symbols used for args/returns must always be imported from an auxiliary file.\n// To avoid parsing the entire project to build dependencies,\n// symbols must be imported with an explicit `import { symbol } from ...`\nfunction symbolsToImports(ast: SourceUnit, symbols: string[]) {\n const imports: SymbolImport[] = [];\n\n for (const symbol of symbols) {\n let symbolImport: SymbolImport | undefined;\n\n visit(ast, {\n ImportDirective({ path, symbolAliases }) {\n if (symbolAliases) {\n for (const symbolAndAlias of symbolAliases) {\n // either check the alias, or the original symbol if there's no alias\n const symbolAlias = symbolAndAlias[1] || symbolAndAlias[0];\n if (symbol === symbolAlias) {\n symbolImport = {\n // always use the original symbol for interface imports\n symbol: symbolAndAlias[0],\n path,\n };\n return;\n }\n }\n }\n },\n });\n\n if (symbolImport) {\n imports.push(symbolImport);\n } else {\n throw new MUDError(`Symbol \"${symbol}\" has no explicit import`);\n }\n }\n\n return imports;\n}\n","import chalk from \"chalk\";\nimport prettier from \"prettier\";\nimport prettierPluginSolidity from \"prettier-plugin-solidity\";\n\nexport async function formatSolidity(content: string, prettierConfigPath?: string) {\n let config;\n if (prettierConfigPath) {\n config = await prettier.resolveConfig(prettierConfigPath);\n }\n try {\n return prettier.format(content, {\n plugins: [prettierPluginSolidity],\n parser: \"solidity-parse\",\n\n printWidth: 120,\n semi: true,\n tabWidth: 2,\n useTabs: false,\n bracketSpacing: true,\n\n ...config,\n });\n } catch (error) {\n let message;\n if (error instanceof Error) {\n message = error.message;\n } else {\n message = error;\n }\n console.log(chalk.yellow(`Error during output formatting: ${message}`));\n return content;\n }\n}\n\nexport async function formatTypescript(content: string) {\n return prettier.format(content, {\n parser: \"typescript\",\n });\n}\n","import { mkdirSync, writeFileSync } from \"fs\";\nimport { dirname } from \"path\";\nimport { formatSolidity, formatTypescript } from \"./format\";\n\nexport async function formatAndWriteSolidity(output: string, fullOutputPath: string, logPrefix: string) {\n const formattedOutput = await formatSolidity(output);\n\n mkdirSync(dirname(fullOutputPath), { recursive: true });\n\n writeFileSync(fullOutputPath, formattedOutput);\n console.log(`${logPrefix}: ${fullOutputPath}`);\n}\n\nexport async function formatAndWriteTypescript(output: string, fullOutputPath: string, logPrefix: string) {\n const formattedOutput = await formatTypescript(output);\n\n mkdirSync(dirname(fullOutputPath), { recursive: true });\n\n writeFileSync(fullOutputPath, formattedOutput);\n console.log(`${logPrefix}: ${fullOutputPath}`);\n}\n"],"mappings":"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","names":["path","renderedSolidityHeader","renderList","list","renderItem","internalRenderList","renderArguments","args","filteredArgs","arg","renderCommonData","staticResourceData","primaryKeys","_tableId","_typedTableId","_keyArgs","name","_typedKeyArgs","typeWithLocation","_primaryKeysDefinition","primaryKey","index","renderValueTypeToBytes32","solidityRelativeImportPath","fromPath","usedInPath","renderImports","imports","renderAbsoluteImports","importDatum","renderRelativeImports","symbol","aggregatedImports","renderedImports","symbols","renderedSymbols","renderWithStore","storeArgument","callback","result","renderTableId","hardcodedTableId","tableIdDefinition","staticByteLength","typeUnwrap","internalTypeId","bits","innerText","lineTerminator","item","renderEnums","enums","result","renderedSolidityHeader","renderList","name","memberNames","renderArguments","renderTypeHelpers","options","fields","primaryKeys","result","wrappingHelper","getWrappingHelpers","typeId","array","wrappers","unwrappers","typeWrappingData","typeWrap","typeUnwrap","internalTypeId","kind","elementType","staticLength","renderWrapperStaticArray","renderUnwrapperStaticArray","functionName","byteLength","AbiTypeToSchemaType","getStaticByteLength","SchemaType","SchemaTypeToAbiType","parseStaticArray","resolveAbiOrUserType","abiOrUserType","config","schemaType","getSchemaTypeInfo","staticArray","getStaticArrayTypeInfo","getUserTypeInfo","importForAbiOrUserType","usedInDirectory","staticByteLength","isDynamic","typeId","userType","abiType","elementType","staticLength","internalTypeId","SchemaType","schemaTypesToRecsTypeStrings","parse","visit","MUDError","contractToInterface","data","contractName","ast","withContract","symbolImports","functions","name","visibility","parameters","stateMutability","returnParameters","isConstructor","isFallback","isReceiveEther","parent","parseParameter","typeName","symbols","typeNameToSymbols","symbolsToImports","error","storageLocation","typedNameWithLocation","flattenedTypeName","flattenTypeName","length","imports","symbol","symbolImport","path","symbolAliases","symbolAndAlias","symbolAlias","chalk","prettier","prettierPluginSolidity","formatSolidity","content","prettierConfigPath","config","error","message","formatTypescript","mkdirSync","writeFileSync","dirname","formatAndWriteSolidity","output","fullOutputPath","logPrefix","formattedOutput","formatSolidity","mkdirSync","dirname","writeFileSync","formatAndWriteTypescript","formatTypescript"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@latticexyz/common",
|
|
3
|
-
"version": "2.0.0-alpha.1.
|
|
3
|
+
"version": "2.0.0-alpha.1.41+8d86974d",
|
|
4
4
|
"description": "Common low level logic shared between packages",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
"test": "vitest typecheck --run --passWithNoTests"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@latticexyz/config": "2.0.0-alpha.1.
|
|
40
|
-
"@latticexyz/schema-type": "2.0.0-alpha.1.
|
|
39
|
+
"@latticexyz/config": "2.0.0-alpha.1.41+8d86974d",
|
|
40
|
+
"@latticexyz/schema-type": "2.0.0-alpha.1.41+8d86974d",
|
|
41
41
|
"@solidity-parser/parser": "^0.16.0",
|
|
42
42
|
"chalk": "^5.2.0",
|
|
43
43
|
"execa": "^7.0.0",
|
|
@@ -48,5 +48,5 @@
|
|
|
48
48
|
"tsup": "^6.7.0",
|
|
49
49
|
"vitest": "0.30.1"
|
|
50
50
|
},
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "8d86974d5f30846cca10cc9b74f5c12db0be442a"
|
|
52
52
|
}
|