@latticexyz/common 1.42.0
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/README.md +1 -0
- package/dist/codegen.js +56 -0
- package/dist/codegen.js.map +1 -0
- package/dist/foundry.js +3 -0
- package/dist/foundry.js.map +1 -0
- package/package.json +50 -0
package/README.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Common Codegen
|
package/dist/codegen.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import M from"path";var Y=`// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity >=0.8.0;
|
|
3
|
+
|
|
4
|
+
/* Autogenerated file. Do not edit manually. */`;function B(r,t){return l("",r,t)}function A(r){let t=r.filter(n=>n!==void 0&&n!=="");return l(",",t,n=>n)}function Q({staticResourceData:r,primaryKeys:t}){let n=r?"":"_tableId",i=r?"":"bytes32 _tableId",s=A(t.map(({name:T})=>T)),y=A(t.map(({name:T,typeWithLocation:p})=>`${p} ${T}`)),R=`
|
|
5
|
+
bytes32[] memory _primaryKeys = new bytes32[](${t.length});
|
|
6
|
+
${B(t,(T,p)=>`_primaryKeys[${p}] = ${C(T.name,T)};`)}
|
|
7
|
+
`;return{_tableId:n,_typedTableId:i,_keyArgs:s,_typedKeyArgs:y,_primaryKeysDefinition:R}}function P(r,t){return"./"+M.relative("./"+t,"./"+r)}function Z(r){return L(r.map(({symbol:t,fromPath:n,usedInPath:i})=>({symbol:t,path:P(n,i)})))}function L(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 O(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 ee(r){let t=`bytes32(abi.encodePacked(bytes16("${r.namespace}"), bytes16("${r.name}")))`,n=`
|
|
10
|
+
bytes32 constant _tableId = ${t};
|
|
11
|
+
bytes32 constant ${r.tableIdName} = _tableId;
|
|
12
|
+
`;return{hardcodedTableId:t,tableIdDefinition:n}}function C(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 l(r,t,n){return t.map((i,s)=>n(i,s)+(s===t.length-1?"":r)).join(`
|
|
13
|
+
`)}function ne(r){let t=Y;return t+=B(r,({name:n,memberNames:i})=>`
|
|
14
|
+
enum ${n} {
|
|
15
|
+
${A(i)}
|
|
16
|
+
}
|
|
17
|
+
`),t}function se(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
|
+
function _toBool(uint8 value) pure returns (bool result) {
|
|
19
|
+
assembly {
|
|
20
|
+
result := value
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
`),n.some(({typeId:s})=>s==="bool")&&(i+=`
|
|
24
|
+
function _boolToBytes32(bool value) pure returns (bytes32 result) {
|
|
25
|
+
assembly {
|
|
26
|
+
result := value
|
|
27
|
+
}
|
|
28
|
+
}
|
|
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:p,staticLength:a}=i;t.set(s,F(s,p,a,R)),n.set(y,K(y,p,a,R))}}return[...t.values(),...n.values()]}function F(r,t,n,i){return`
|
|
30
|
+
function ${r}(
|
|
31
|
+
${i} memory _value
|
|
32
|
+
) pure returns (
|
|
33
|
+
${t}[${n}] memory _result
|
|
34
|
+
) {
|
|
35
|
+
// in memory static arrays are just dynamic arrays without the length byte
|
|
36
|
+
assembly {
|
|
37
|
+
_result := add(_value, 0x20)
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
`}function K(r,t,n,i){let s=n*32;return`
|
|
41
|
+
function ${r}(
|
|
42
|
+
${t}[${n}] memory _value
|
|
43
|
+
) view returns (
|
|
44
|
+
${i} memory _result
|
|
45
|
+
) {
|
|
46
|
+
_result = new ${i}(${n});
|
|
47
|
+
uint256 fromPointer;
|
|
48
|
+
uint256 toPointer;
|
|
49
|
+
assembly {
|
|
50
|
+
fromPointer := _value
|
|
51
|
+
toPointer := add(_result, 0x20)
|
|
52
|
+
}
|
|
53
|
+
Memory.copy(fromPointer, toPointer, ${s});
|
|
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};
|
|
56
|
+
//# sourceMappingURL=codegen.js.map
|
|
@@ -0,0 +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.js\";\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.js\";\nimport { RenderEnum } from \"./types.js\";\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.js\";\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"]}
|
package/dist/foundry.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{execa as o}from"execa";import a from"chalk";async function n(t){let{stdout:r}=await o("forge",["config","--json"],{stdio:["inherit","pipe","pipe"],env:{FOUNDRY_PROFILE:t}});return JSON.parse(r)}async function l(t){return(await n(t)).src}async function y(t){return(await n(t)).script}async function x(t){return(await n(t)).test}async function O(t){return(await n(t)).out}async function w(t){return(await n(t)).eth_rpc_url||"http://127.0.0.1:8545"}async function d(t,r){let i={env:{FOUNDRY_PROFILE:r?.profile},stdout:"inherit",stderr:"pipe"};await(r?.silent?o("forge",t,i):s("forge",t,i))}async function m(t,r){return s("cast",t,{env:{FOUNDRY_PROFILE:r?.profile}})}async function F(t){return s("anvil",t)}async function s(t,r,i){let c=`${t} ${r.join(" ")}`;try{console.log(a.gray(`running "${c}"`));let{stdout:e}=await o(t,r,{stdout:"pipe",stderr:"pipe",...i});return e}catch(e){let g=e?.stderr||e?.message||"";throw g+=a.red(`
|
|
2
|
+
Error running "${c}"`),new Error(g)}}export{F as anvil,m as cast,d as forge,n as getForgeConfig,O as getOutDirectory,w as getRpcUrl,y as getScriptDirectory,l as getSrcDirectory,x as getTestDirectory};
|
|
3
|
+
//# sourceMappingURL=foundry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/foundry/index.ts"],"sourcesContent":["import { execa, Options } from \"execa\";\nimport chalk from \"chalk\";\n\nexport interface ForgeConfig {\n // project\n src: string;\n test: string;\n script: string;\n out: string;\n libs: string[];\n eth_rpc_url: string | null;\n\n // all unspecified keys (this interface is far from comprehensive)\n [key: string]: unknown;\n}\n\n/**\n * Get forge config as a parsed json object.\n */\nexport async function getForgeConfig(profile?: string) {\n const { stdout } = await execa(\"forge\", [\"config\", \"--json\"], {\n stdio: [\"inherit\", \"pipe\", \"pipe\"],\n env: { FOUNDRY_PROFILE: profile },\n });\n\n return JSON.parse(stdout) as ForgeConfig;\n}\n\n/**\n * Get the value of \"src\" from forge config.\n * The path to the contract sources relative to the root of the project.\n */\nexport async function getSrcDirectory(profile?: string) {\n return (await getForgeConfig(profile)).src;\n}\n\n/**\n * Get the value of \"script\" from forge config.\n * The path to the contract sources relative to the root of the project.\n */\nexport async function getScriptDirectory(profile?: string) {\n return (await getForgeConfig(profile)).script;\n}\n\n/**\n * Get the value of \"test\" from forge config.\n * The path to the test contract sources relative to the root of the project.\n */\nexport async function getTestDirectory(profile?: string) {\n return (await getForgeConfig(profile)).test;\n}\n\n/**\n * Get the value of \"out\" from forge config.\n * The path to put contract artifacts in, relative to the root of the project.\n */\nexport async function getOutDirectory(profile?: string) {\n return (await getForgeConfig(profile)).out;\n}\n\n/**\n * Get the value of \"eth_rpc_url\" from forge config, default to \"http://127.0.0.1:8545\"\n * @param profile The foundry profile to use\n * @returns The rpc url\n */\nexport async function getRpcUrl(profile?: string) {\n return (await getForgeConfig(profile)).eth_rpc_url || \"http://127.0.0.1:8545\";\n}\n\n/**\n * Execute a forge command\n * @param args The arguments to pass to forge\n * @param options { profile?: The foundry profile to use; silent?: If true, nothing will be logged to the console }\n */\nexport async function forge(args: string[], options?: { profile?: string; silent?: boolean }): Promise<void> {\n const execOptions: Options<string> = {\n env: { FOUNDRY_PROFILE: options?.profile },\n stdout: \"inherit\",\n stderr: \"pipe\",\n };\n\n await (options?.silent ? execa(\"forge\", args, execOptions) : execLog(\"forge\", args, execOptions));\n}\n\n/**\n * Execute a cast command\n * @param args The arguments to pass to cast\n * @returns Stdout of the command\n */\nexport async function cast(args: string[], options?: { profile?: string }): Promise<string> {\n return execLog(\"cast\", args, {\n env: { FOUNDRY_PROFILE: options?.profile },\n });\n}\n\n/**\n * Start an anvil chain\n * @param args The arguments to pass to anvil\n * @returns Stdout of the command\n */\nexport async function anvil(args: string[]): Promise<string> {\n return execLog(\"anvil\", args);\n}\n\n/**\n * Executes the given command, returns the stdout, and logs the command to the console.\n * Throws an error if the command fails.\n * @param command The command to execute\n * @param args The arguments to pass to the command\n * @returns The stdout of the command\n */\nasync function execLog(command: string, args: string[], options?: Options<string>): Promise<string> {\n const commandString = `${command} ${args.join(\" \")}`;\n try {\n console.log(chalk.gray(`running \"${commandString}\"`));\n const { stdout } = await execa(command, args, { stdout: \"pipe\", stderr: \"pipe\", ...options });\n return stdout;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n let errorMessage = error?.stderr || error?.message || \"\";\n errorMessage += chalk.red(`\\nError running \"${commandString}\"`);\n throw new Error(errorMessage);\n }\n}\n"],"mappings":"AAAA,OAAS,SAAAA,MAAsB,QAC/B,OAAOC,MAAW,QAkBlB,eAAsBC,EAAeC,EAAkB,CACrD,GAAM,CAAE,OAAAC,CAAO,EAAI,MAAMJ,EAAM,QAAS,CAAC,SAAU,QAAQ,EAAG,CAC5D,MAAO,CAAC,UAAW,OAAQ,MAAM,EACjC,IAAK,CAAE,gBAAiBG,CAAQ,CAClC,CAAC,EAED,OAAO,KAAK,MAAMC,CAAM,CAC1B,CAMA,eAAsBC,EAAgBF,EAAkB,CACtD,OAAQ,MAAMD,EAAeC,CAAO,GAAG,GACzC,CAMA,eAAsBG,EAAmBH,EAAkB,CACzD,OAAQ,MAAMD,EAAeC,CAAO,GAAG,MACzC,CAMA,eAAsBI,EAAiBJ,EAAkB,CACvD,OAAQ,MAAMD,EAAeC,CAAO,GAAG,IACzC,CAMA,eAAsBK,EAAgBL,EAAkB,CACtD,OAAQ,MAAMD,EAAeC,CAAO,GAAG,GACzC,CAOA,eAAsBM,EAAUN,EAAkB,CAChD,OAAQ,MAAMD,EAAeC,CAAO,GAAG,aAAe,uBACxD,CAOA,eAAsBO,EAAMC,EAAgBC,EAAiE,CAC3G,IAAMC,EAA+B,CACnC,IAAK,CAAE,gBAAiBD,GAAS,OAAQ,EACzC,OAAQ,UACR,OAAQ,MACV,EAEA,MAAOA,GAAS,OAASZ,EAAM,QAASW,EAAME,CAAW,EAAIC,EAAQ,QAASH,EAAME,CAAW,EACjG,CAOA,eAAsBE,EAAKJ,EAAgBC,EAAiD,CAC1F,OAAOE,EAAQ,OAAQH,EAAM,CAC3B,IAAK,CAAE,gBAAiBC,GAAS,OAAQ,CAC3C,CAAC,CACH,CAOA,eAAsBI,EAAML,EAAiC,CAC3D,OAAOG,EAAQ,QAASH,CAAI,CAC9B,CASA,eAAeG,EAAQG,EAAiBN,EAAgBC,EAA4C,CAClG,IAAMM,EAAgB,GAAGD,KAAWN,EAAK,KAAK,GAAG,IACjD,GAAI,CACF,QAAQ,IAAIV,EAAM,KAAK,YAAYiB,IAAgB,CAAC,EACpD,GAAM,CAAE,OAAAd,CAAO,EAAI,MAAMJ,EAAMiB,EAASN,EAAM,CAAE,OAAQ,OAAQ,OAAQ,OAAQ,GAAGC,CAAQ,CAAC,EAC5F,OAAOR,CAET,OAASe,EAAP,CACA,IAAIC,EAAeD,GAAO,QAAUA,GAAO,SAAW,GACtD,MAAAC,GAAgBnB,EAAM,IAAI;AAAA,iBAAoBiB,IAAgB,EACxD,IAAI,MAAME,CAAY,CAC9B,CACF","names":["execa","chalk","getForgeConfig","profile","stdout","getSrcDirectory","getScriptDirectory","getTestDirectory","getOutDirectory","getRpcUrl","forge","args","options","execOptions","execLog","cast","anvil","command","commandString","error","errorMessage"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@latticexyz/common",
|
|
3
|
+
"version": "1.42.0",
|
|
4
|
+
"description": "Common low level logic shared between packages",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/latticexyz/mud.git",
|
|
8
|
+
"directory": "packages/common"
|
|
9
|
+
},
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"type": "module",
|
|
12
|
+
"exports": {
|
|
13
|
+
"./codegen": "./dist/codegen/index.js",
|
|
14
|
+
"./foundry": "./dist/foundry/index.js"
|
|
15
|
+
},
|
|
16
|
+
"typesVersions": {
|
|
17
|
+
"*": {
|
|
18
|
+
"codegen": [
|
|
19
|
+
"./src/codegen/index.ts"
|
|
20
|
+
],
|
|
21
|
+
"foundry": [
|
|
22
|
+
"./src/foundry/index.ts"
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"files": [
|
|
27
|
+
"dist"
|
|
28
|
+
],
|
|
29
|
+
"scripts": {
|
|
30
|
+
"build": "vite build",
|
|
31
|
+
"release": "npm publish --access=public",
|
|
32
|
+
"test": "vitest typecheck --run --passWithNoTests"
|
|
33
|
+
},
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"@latticexyz/config": "workspace:*",
|
|
36
|
+
"@latticexyz/schema-type": "workspace:*",
|
|
37
|
+
"@latticexyz/solidity-parser": "^0.16.0",
|
|
38
|
+
"chalk": "^5.2.0",
|
|
39
|
+
"execa": "^7.0.0",
|
|
40
|
+
"prettier": "^2.8.4",
|
|
41
|
+
"prettier-plugin-solidity": "^1.1.2"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@types/rollup-plugin-peer-deps-external": "^2.2.1",
|
|
45
|
+
"rollup-plugin-peer-deps-external": "^2.2.4",
|
|
46
|
+
"vite": "^4.3.0",
|
|
47
|
+
"vitest": "^0.30.1"
|
|
48
|
+
},
|
|
49
|
+
"gitHead": "914a1e0ae4a573d685841ca2ea921435057deb8f"
|
|
50
|
+
}
|