@latticexyz/protocol-parser 2.2.18-ebe1aea8d4afb690ce1c7c2bcb42dc0f1faf6e77 → 2.2.18

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/internal.js CHANGED
@@ -1,2 +1,755 @@
1
- import{isDynamicAbiType as M}from"@latticexyz/schema-type/internal";function Ke(e){let t=[],i=[];for(let a of e)M(a)?i.push(a):t.push(a);return{staticFields:t,dynamicFields:i}}import{hexToString as Q,sliceHex as X}from"viem";import{assertExhaustive as Y}from"@latticexyz/common/utils";import{arrayToStaticAbiType as Z,staticAbiTypeToByteLength as ee}from"@latticexyz/schema-type/internal";import{getAddress as W,hexToBigInt as _,hexToBool as q}from"viem";import{assertExhaustive as C}from"@latticexyz/common/utils";import{staticAbiTypeToByteLength as G,staticAbiTypeToDefaultValue as J}from"@latticexyz/schema-type/internal";import{MUDError as h}from"@latticexyz/common/errors";import{staticAbiTypeToByteLength as V}from"@latticexyz/schema-type/internal";var u=class extends h{constructor(i){super(`Hex value "${i}" is an odd length (${i.length-2}). It must be an even length.`);this.name="InvalidHexValueError"}},S=class extends h{constructor(i){super(`Hex value "${i}" has length of ${i.length-2}, but expected length of 64 for a schema.`);this.name="InvalidHexLengthForSchemaError"}},g=class extends h{constructor(i){super(`Hex value "${i}" has length of ${i.length-2}, but expected length of 64 for encoded lengths.`);this.name="InvalidHexLengthForEncodedLengthsError"}},A=class extends h{constructor(i,a){super(`Hex value "${a}" has length of ${a.length-2}, but expected length of ${V[i]*2} for ${i} type.`);this.name="InvalidHexLengthForStaticFieldError"}},v=class extends h{constructor(i,a){super(`Hex value "${a}" has length of ${a.length-2}, but expected a multiple of ${V[i]*2} for ${i}[] type.`);this.name="InvalidHexLengthForArrayFieldError"}},P=class extends h{constructor(i,a,c){super(`Schema "${i}" static data length (${a}) did not match the summed length of all static fields (${c}). Is \`staticAbiTypeToByteLength\` up to date with Solidity schema types?`);this.name="SchemaStaticLengthMismatchError"}},H=class extends h{constructor(i,a,c){super(`EncodedLengths "${i}" total bytes length (${a}) did not match the summed length of all field byte lengths (${c}).`);this.name="EncodedLengthsLengthMismatchError"}};function y(e,t){if(t.length>3&&t.length%2!==0)throw new u(t);if((t.length-2)/2!==G[e])throw new A(e,t);switch(e){case"uint8":case"uint16":case"uint24":case"uint32":case"uint40":case"uint48":case"uint56":case"uint64":case"uint72":case"uint80":case"uint88":case"uint96":case"uint104":case"uint112":case"uint120":case"uint128":case"uint136":case"uint144":case"uint152":case"uint160":case"uint168":case"uint176":case"uint184":case"uint192":case"uint200":case"uint208":case"uint216":case"uint224":case"uint232":case"uint240":case"uint248":case"uint256":case"int8":case"int16":case"int24":case"int32":case"int40":case"int48":case"int56":case"int64":case"int72":case"int80":case"int88":case"int96":case"int104":case"int112":case"int120":case"int128":case"int136":case"int144":case"int152":case"int160":case"int168":case"int176":case"int184":case"int192":case"int200":case"int208":case"int216":case"int224":case"int232":case"int240":case"int248":case"int256":{let a=_(t,{signed:e.startsWith("int")}),c=typeof J[e];if(c==="number")return Number(a);if(c==="bigint")return a;throw new Error(`Unexpected default value type (${c}) for ABI type (${e})`)}case"bytes1":case"bytes2":case"bytes3":case"bytes4":case"bytes5":case"bytes6":case"bytes7":case"bytes8":case"bytes9":case"bytes10":case"bytes11":case"bytes12":case"bytes13":case"bytes14":case"bytes15":case"bytes16":case"bytes17":case"bytes18":case"bytes19":case"bytes20":case"bytes21":case"bytes22":case"bytes23":case"bytes24":case"bytes25":case"bytes26":case"bytes27":case"bytes28":case"bytes29":case"bytes30":case"bytes31":case"bytes32":return t;case"bool":return q(t);case"address":return W(t)}return C(e,`Unsupported static ABI type: ${e}`)}function f(e,t){if(e==="bytes")return t;if(e==="string")return Q(t);if(t.length>3&&t.length%2!==0)throw new u(t);let i=(t.length-2)/2;switch(e){case"uint8[]":case"uint16[]":case"uint24[]":case"uint32[]":case"uint40[]":case"uint48[]":case"uint56[]":case"uint64[]":case"uint72[]":case"uint80[]":case"uint88[]":case"uint96[]":case"uint104[]":case"uint112[]":case"uint120[]":case"uint128[]":case"uint136[]":case"uint144[]":case"uint152[]":case"uint160[]":case"uint168[]":case"uint176[]":case"uint184[]":case"uint192[]":case"uint200[]":case"uint208[]":case"uint216[]":case"uint224[]":case"uint232[]":case"uint240[]":case"uint248[]":case"uint256[]":case"int8[]":case"int16[]":case"int24[]":case"int32[]":case"int40[]":case"int48[]":case"int56[]":case"int64[]":case"int72[]":case"int80[]":case"int88[]":case"int96[]":case"int104[]":case"int112[]":case"int120[]":case"int128[]":case"int136[]":case"int144[]":case"int152[]":case"int160[]":case"int168[]":case"int176[]":case"int184[]":case"int192[]":case"int200[]":case"int208[]":case"int216[]":case"int224[]":case"int232[]":case"int240[]":case"int248[]":case"int256[]":case"bytes1[]":case"bytes2[]":case"bytes3[]":case"bytes4[]":case"bytes5[]":case"bytes6[]":case"bytes7[]":case"bytes8[]":case"bytes9[]":case"bytes10[]":case"bytes11[]":case"bytes12[]":case"bytes13[]":case"bytes14[]":case"bytes15[]":case"bytes16[]":case"bytes17[]":case"bytes18[]":case"bytes19[]":case"bytes20[]":case"bytes21[]":case"bytes22[]":case"bytes23[]":case"bytes24[]":case"bytes25[]":case"bytes26[]":case"bytes27[]":case"bytes28[]":case"bytes29[]":case"bytes30[]":case"bytes31[]":case"bytes32[]":case"bool[]":case"address[]":{let a=Z(e),c=ee[a];if(i%c!==0)throw new v(a,t);return new Array(i/c).fill(void 0).map((s,r)=>{let o=X(t,r*c,(r+1)*c);return y(a,o)})}}return Y(e,`Unsupported dynamic ABI type: ${e}`)}import{isDynamicAbiType as te}from"@latticexyz/schema-type/internal";function yt(e,t){return te(e)?f(e,t):y(e,t)}import{decodeAbiParameters as ie}from"viem";function $(e,t){if(e.staticFields.length!==t.length)throw new Error(`key tuple length ${t.length} does not match key schema length ${e.staticFields.length}`);return t.map((i,a)=>ie([{type:e.staticFields[a]}],i)[0])}function Tt(e,t){let i=$({staticFields:Object.values(e),dynamicFields:[]},t);return Object.fromEntries(Object.keys(e).map((a,c)=>[a,i[c]]))}import{staticAbiTypeToByteLength as ce,dynamicAbiTypeToDefaultValue as re}from"@latticexyz/schema-type/internal";import{readHex as j}from"@latticexyz/common";function k(e){if(e.length!==66)throw new g(e);let t=y("uint56",j(e,25,32)),i=f("uint40[]",j(e,0,25)),a=Object.freeze([...i].reverse()),c=BigInt(a.reduce((n,s)=>n+s,0));if(c!==t)throw new H(e,t,c);return{totalByteLength:t,fieldByteLengths:a}}import{staticAbiTypeToByteLength as ae}from"@latticexyz/schema-type/internal";function T(e){return e.reduce((t,i)=>t+ae[i],0)}import{readHex as L}from"@latticexyz/common";function B(e,t){let i=[],a=0;e.staticFields.forEach(s=>{let r=ce[s],o=y(s,L(t,a,a+r));a+=r,i.push(o)});let c=T(e.staticFields),n=a;if(n!==c&&console.warn("Decoded static data length does not match value schema's expected static data length. Data may get corrupted. Is `getStaticByteLength` outdated?",{expectedLength:c,actualLength:n,bytesOffset:a}),e.dynamicFields.length>0){let s=k(L(t,a,a+32));a+=32,e.dynamicFields.forEach((o,l)=>{let m=s.fieldByteLengths[l];if(m>0){let d=f(o,L(t,a,a+m));a+=m,i.push(d)}else i.push(re[o])});let r=a-32-n;BigInt(r)!==s.totalByteLength&&console.warn("Decoded dynamic data length does not match data layout's expected data length. Data may get corrupted. Did the data layout change?",{expectedLength:s.totalByteLength,actualLength:r,bytesOffset:a})}return i}import{isStaticAbiType as se,isDynamicAbiType as ne}from"@latticexyz/schema-type/internal";function E(e,t){let i=Object.values(e).filter(se),a=Object.values(e).filter(ne),c=B({staticFields:i,dynamicFields:a},t);return Object.fromEntries(Object.keys(e).map((n,s)=>[n,c[s]]))}import{concatHex as oe,padHex as me}from"viem";import{isStaticAbiType as pe}from"@latticexyz/schema-type/internal";import{readHex as ye}from"@latticexyz/common";function Wt(e,{staticData:t,encodedLengths:i,dynamicData:a}){return E(e,oe([ye(t,0,T(Object.values(e).filter(pe))),me(i,{size:32}),a]))}import{arrayToStaticAbiType as le,isArrayAbiType as de}from"@latticexyz/schema-type/internal";import{encodePacked as w}from"viem";function p(e,t){if(de(e)&&Array.isArray(t)){let i=le(e);return t.length===0?"0x":w(t.map(()=>i),t)}return w([e],[t])}import{isStaticAbiType as ue}from"@latticexyz/schema-type/internal";import{encodeAbiParameters as he}from"viem";function O(e,t){return t.map((i,a)=>he([{type:e.staticFields[a]}],[i]))}function ii(e,t){let i=Object.values(e).filter(ue);return O({staticFields:i,dynamicFields:[]},Object.values(t))}function ri(e,t){let i=t.slice(0,e.staticFields.length),a=t.slice(e.staticFields.length),c=i.map((m,d)=>p(e.staticFields[d],m).replace(/^0x/,"")).join("");if(e.dynamicFields.length===0)return`0x${c}`;let n=a.map((m,d)=>p(e.dynamicFields[d],m).replace(/^0x/,"")),s=n.map(m=>m.length/2).reverse(),r=s.reduce((m,d)=>m+BigInt(d),0n),o=n.join(""),l=`${s.map(m=>p("uint40",m).replace(/^0x/,"")).join("")}${p("uint56",r).replace(/^0x/,"")}`.padStart(64,"0");return`0x${c}${l}${o}`}import{concatHex as ge}from"viem";import{isStaticAbiType as xe,isDynamicAbiType as Se}from"@latticexyz/schema-type/internal";import{concatHex as I}from"viem";import{concatHex as fe,padHex as Te,size as be}from"viem";function K(e){let t=e.map(be).reverse(),i=t.reduce((a,c)=>a+BigInt(c),0n);return Te(fe([...t.map(a=>p("uint40",a)),p("uint56",i)]),{size:32,dir:"left"})}function z(e,t){let i=Object.entries(e),a=i.filter(([,o])=>xe(o)),c=i.filter(([,o])=>Se(o)),n=a.map(([o,l])=>p(l,t[o])),s=c.map(([o,l])=>p(l,t[o])),r=K(s);return{staticData:I(n),encodedLengths:r,dynamicData:I(s)}}function vi(e,t){let{staticData:i,encodedLengths:a,dynamicData:c}=z(e,t);return ge([i,a,c])}function Hi(e){return`0x${[e.staticFieldLengths.reduce((i,a)=>i+a,0).toString(16).padStart(4,"0"),e.staticFieldLengths.length.toString(16).padStart(2,"0"),e.numDynamicFields.toString(16).padStart(2,"0"),...e.staticFieldLengths.map(i=>i.toString(16).padStart(2,"0"))].join("").padEnd(64,"0")}`}import{schemaAbiTypes as N,staticAbiTypeToByteLength as Ae}from"@latticexyz/schema-type/internal";import{hexToNumber as b,sliceHex as x}from"viem";function D(e){if(e.length!==66)throw new S(e);let t=b(x(e,0,2)),i=b(x(e,2,3)),a=b(x(e,3,4)),c=[],n=[];for(let r=4;r<4+i;r++){let o=b(x(e,r,r+1));c.push(N[o])}for(let r=4+i;r<4+i+a;r++){let o=b(x(e,r,r+1));n.push(N[o])}let s=c.reduce((r,o)=>r+Ae[o],0);if(s!==t)throw console.warn(`Schema "${e}" static data length (${t}) did not match the summed length of all static fields (${s}). Is \`staticAbiTypeToByteLength\` up to date with Solidity schema types?`),new P(e,t,s);return{staticFields:c,dynamicFields:n}}import{sliceHex as R}from"viem";function Ki(e){let t=D(R(e,0,32));return{keySchema:D(R(e,32,64)),valueSchema:t}}import{isStaticAbiType as ve}from"@latticexyz/schema-type/internal";import{schemaAbiTypes as U}from"@latticexyz/schema-type/internal";function F(e){let t=e.staticFields.map(a=>U.indexOf(a)),i=e.dynamicFields.map(a=>U.indexOf(a));return`0x${[T(e.staticFields).toString(16).padStart(4,"0"),e.staticFields.length.toString(16).padStart(2,"0"),e.dynamicFields.length.toString(16).padStart(2,"0"),...t.map(a=>a.toString(16).padStart(2,"0")),...i.map(a=>a.toString(16).padStart(2,"0"))].join("").padEnd(64,"0")}`}function Wi(e){return F({staticFields:Object.values(e).filter(ve),dynamicFields:[]})}function qi(e,t){return t<e.staticFields.length?e.staticFields[t]:e.dynamicFields[t-e.staticFields.length]}import{isDynamicAbiType as Pe,isStaticAbiType as He,staticAbiTypeToByteLength as Fe}from"@latticexyz/schema-type/internal";function Ji(e){let t=Object.values(e).filter(He),i=Object.values(e).filter(Pe),a=t.map(n=>Fe[n]);return`0x${[a.reduce((n,s)=>n+s,0).toString(16).padStart(4,"0"),t.length.toString(16).padStart(2,"0"),i.length.toString(16).padStart(2,"0"),...a.map(n=>n.toString(16).padStart(2,"0"))].join("").padEnd(64,"0")}`}import{isDynamicAbiType as Le,isStaticAbiType as De}from"@latticexyz/schema-type/internal";function Zi(e){return F({staticFields:Object.values(e).filter(De),dynamicFields:Object.values(e).filter(Le)})}function ta(e,t){return Object.fromEntries(e.key.map(i=>[i,t[i]]))}function aa(e,t){return Object.fromEntries(Object.keys(e.schema).filter(i=>!e.key.includes(i)).map(i=>[i,t[i]]))}import{isDynamicAbiType as Ve,isStaticAbiType as $e}from"@latticexyz/schema-type/internal";function sa(e,t){return[...Object.entries(e).filter(([,a])=>$e(a)).map(([a])=>a),...Object.entries(e).filter(([,a])=>Ve(a)).map(([a])=>a)].indexOf(t)}function oa(e){return Object.fromEntries(e.key.map(t=>[t,e.schema[t]]))}import{encodeAbiParameters as je}from"viem";function la(e,t){return e.key.map(i=>je([e.schema[i]],[t[i]]))}function ha(e){return Object.fromEntries(Object.entries(e.schema).filter(([t])=>!e.key.includes(t)))}import{mapObject as ke}from"@latticexyz/common/utils";function Ta(e){return ke(e,t=>t.type)}export{H as EncodedLengthsLengthMismatchError,u as InvalidHexLengthError,v as InvalidHexLengthForArrayFieldError,g as InvalidHexLengthForEncodedLengthsError,S as InvalidHexLengthForSchemaError,A as InvalidHexLengthForStaticFieldError,P as SchemaStaticLengthMismatchError,Ke as abiTypesToSchema,f as decodeDynamicField,yt as decodeField,Tt as decodeKey,$ as decodeKeyTuple,B as decodeRecord,y as decodeStaticField,E as decodeValue,Wt as decodeValueArgs,p as encodeField,ii as encodeKey,O as encodeKeyTuple,ri as encodeRecord,vi as encodeValue,z as encodeValueArgs,Hi as fieldLayoutToHex,sa as getFieldIndex,ta as getKey,oa as getKeySchema,la as getKeyTuple,Ta as getSchemaTypes,aa as getValue,ha as getValueSchema,k as hexToEncodedLengths,D as hexToSchema,Ki as hexToTableSchema,Wi as keySchemaToHex,qi as schemaIndexToAbiType,F as schemaToHex,T as staticDataLength,Ji as valueSchemaToFieldLayoutHex,Zi as valueSchemaToHex};
1
+ // src/abiTypesToSchema.ts
2
+ import { isDynamicAbiType } from "@latticexyz/schema-type/internal";
3
+ function abiTypesToSchema(abiTypes) {
4
+ const staticFields = [];
5
+ const dynamicFields = [];
6
+ for (const abiType of abiTypes) {
7
+ if (isDynamicAbiType(abiType)) dynamicFields.push(abiType);
8
+ else staticFields.push(abiType);
9
+ }
10
+ return { staticFields, dynamicFields };
11
+ }
12
+
13
+ // src/decodeDynamicField.ts
14
+ import { hexToString, sliceHex } from "viem";
15
+ import { assertExhaustive as assertExhaustive2 } from "@latticexyz/common/utils";
16
+ import {
17
+ arrayToStaticAbiType,
18
+ staticAbiTypeToByteLength as staticAbiTypeToByteLength3
19
+ } from "@latticexyz/schema-type/internal";
20
+
21
+ // src/decodeStaticField.ts
22
+ import { getAddress, hexToBigInt, hexToBool } from "viem";
23
+ import { assertExhaustive } from "@latticexyz/common/utils";
24
+ import {
25
+ staticAbiTypeToByteLength as staticAbiTypeToByteLength2,
26
+ staticAbiTypeToDefaultValue
27
+ } from "@latticexyz/schema-type/internal";
28
+
29
+ // src/errors.ts
30
+ import { MUDError } from "@latticexyz/common/errors";
31
+ import { staticAbiTypeToByteLength } from "@latticexyz/schema-type/internal";
32
+ var InvalidHexLengthError = class extends MUDError {
33
+ constructor(value) {
34
+ super(`Hex value "${value}" is an odd length (${value.length - 2}). It must be an even length.`);
35
+ this.name = "InvalidHexValueError";
36
+ }
37
+ };
38
+ var InvalidHexLengthForSchemaError = class extends MUDError {
39
+ constructor(value) {
40
+ super(`Hex value "${value}" has length of ${value.length - 2}, but expected length of 64 for a schema.`);
41
+ this.name = "InvalidHexLengthForSchemaError";
42
+ }
43
+ };
44
+ var InvalidHexLengthForEncodedLengthsError = class extends MUDError {
45
+ constructor(value) {
46
+ super(`Hex value "${value}" has length of ${value.length - 2}, but expected length of 64 for encoded lengths.`);
47
+ this.name = "InvalidHexLengthForEncodedLengthsError";
48
+ }
49
+ };
50
+ var InvalidHexLengthForStaticFieldError = class extends MUDError {
51
+ constructor(abiType, value) {
52
+ super(
53
+ `Hex value "${value}" has length of ${value.length - 2}, but expected length of ${staticAbiTypeToByteLength[abiType] * 2} for ${abiType} type.`
54
+ );
55
+ this.name = "InvalidHexLengthForStaticFieldError";
56
+ }
57
+ };
58
+ var InvalidHexLengthForArrayFieldError = class extends MUDError {
59
+ constructor(abiType, value) {
60
+ super(
61
+ `Hex value "${value}" has length of ${value.length - 2}, but expected a multiple of ${staticAbiTypeToByteLength[abiType] * 2} for ${abiType}[] type.`
62
+ );
63
+ this.name = "InvalidHexLengthForArrayFieldError";
64
+ }
65
+ };
66
+ var SchemaStaticLengthMismatchError = class extends MUDError {
67
+ constructor(schemaData, definedLength, summedLength) {
68
+ super(
69
+ `Schema "${schemaData}" static data length (${definedLength}) did not match the summed length of all static fields (${summedLength}). Is \`staticAbiTypeToByteLength\` up to date with Solidity schema types?`
70
+ );
71
+ this.name = "SchemaStaticLengthMismatchError";
72
+ }
73
+ };
74
+ var EncodedLengthsLengthMismatchError = class extends MUDError {
75
+ constructor(encodedLengthsData, definedLength, summedLength) {
76
+ super(
77
+ `EncodedLengths "${encodedLengthsData}" total bytes length (${definedLength}) did not match the summed length of all field byte lengths (${summedLength}).`
78
+ );
79
+ this.name = "EncodedLengthsLengthMismatchError";
80
+ }
81
+ };
82
+
83
+ // src/decodeStaticField.ts
84
+ function decodeStaticField(abiType, data) {
85
+ if (data.length > 3 && data.length % 2 !== 0) {
86
+ throw new InvalidHexLengthError(data);
87
+ }
88
+ const dataSize = (data.length - 2) / 2;
89
+ if (dataSize !== staticAbiTypeToByteLength2[abiType]) {
90
+ throw new InvalidHexLengthForStaticFieldError(abiType, data);
91
+ }
92
+ switch (abiType) {
93
+ case "uint8":
94
+ case "uint16":
95
+ case "uint24":
96
+ case "uint32":
97
+ case "uint40":
98
+ case "uint48":
99
+ case "uint56":
100
+ case "uint64":
101
+ case "uint72":
102
+ case "uint80":
103
+ case "uint88":
104
+ case "uint96":
105
+ case "uint104":
106
+ case "uint112":
107
+ case "uint120":
108
+ case "uint128":
109
+ case "uint136":
110
+ case "uint144":
111
+ case "uint152":
112
+ case "uint160":
113
+ case "uint168":
114
+ case "uint176":
115
+ case "uint184":
116
+ case "uint192":
117
+ case "uint200":
118
+ case "uint208":
119
+ case "uint216":
120
+ case "uint224":
121
+ case "uint232":
122
+ case "uint240":
123
+ case "uint248":
124
+ case "uint256":
125
+ case "int8":
126
+ case "int16":
127
+ case "int24":
128
+ case "int32":
129
+ case "int40":
130
+ case "int48":
131
+ case "int56":
132
+ case "int64":
133
+ case "int72":
134
+ case "int80":
135
+ case "int88":
136
+ case "int96":
137
+ case "int104":
138
+ case "int112":
139
+ case "int120":
140
+ case "int128":
141
+ case "int136":
142
+ case "int144":
143
+ case "int152":
144
+ case "int160":
145
+ case "int168":
146
+ case "int176":
147
+ case "int184":
148
+ case "int192":
149
+ case "int200":
150
+ case "int208":
151
+ case "int216":
152
+ case "int224":
153
+ case "int232":
154
+ case "int240":
155
+ case "int248":
156
+ case "int256": {
157
+ const value = hexToBigInt(data, { signed: abiType.startsWith("int") });
158
+ const defaultValueType = typeof staticAbiTypeToDefaultValue[abiType];
159
+ if (defaultValueType === "number") {
160
+ return Number(value);
161
+ }
162
+ if (defaultValueType === "bigint") {
163
+ return value;
164
+ }
165
+ throw new Error(`Unexpected default value type (${defaultValueType}) for ABI type (${abiType})`);
166
+ }
167
+ case "bytes1":
168
+ case "bytes2":
169
+ case "bytes3":
170
+ case "bytes4":
171
+ case "bytes5":
172
+ case "bytes6":
173
+ case "bytes7":
174
+ case "bytes8":
175
+ case "bytes9":
176
+ case "bytes10":
177
+ case "bytes11":
178
+ case "bytes12":
179
+ case "bytes13":
180
+ case "bytes14":
181
+ case "bytes15":
182
+ case "bytes16":
183
+ case "bytes17":
184
+ case "bytes18":
185
+ case "bytes19":
186
+ case "bytes20":
187
+ case "bytes21":
188
+ case "bytes22":
189
+ case "bytes23":
190
+ case "bytes24":
191
+ case "bytes25":
192
+ case "bytes26":
193
+ case "bytes27":
194
+ case "bytes28":
195
+ case "bytes29":
196
+ case "bytes30":
197
+ case "bytes31":
198
+ case "bytes32": {
199
+ return data;
200
+ }
201
+ case "bool": {
202
+ return hexToBool(data);
203
+ }
204
+ case "address": {
205
+ return getAddress(data);
206
+ }
207
+ }
208
+ return assertExhaustive(abiType, `Unsupported static ABI type: ${abiType}`);
209
+ }
210
+
211
+ // src/decodeDynamicField.ts
212
+ function decodeDynamicField(abiType, data) {
213
+ if (abiType === "bytes") {
214
+ return data;
215
+ }
216
+ if (abiType === "string") {
217
+ return hexToString(data);
218
+ }
219
+ if (data.length > 3 && data.length % 2 !== 0) {
220
+ throw new InvalidHexLengthError(data);
221
+ }
222
+ const dataSize = (data.length - 2) / 2;
223
+ switch (abiType) {
224
+ case "uint8[]":
225
+ case "uint16[]":
226
+ case "uint24[]":
227
+ case "uint32[]":
228
+ case "uint40[]":
229
+ case "uint48[]":
230
+ case "uint56[]":
231
+ case "uint64[]":
232
+ case "uint72[]":
233
+ case "uint80[]":
234
+ case "uint88[]":
235
+ case "uint96[]":
236
+ case "uint104[]":
237
+ case "uint112[]":
238
+ case "uint120[]":
239
+ case "uint128[]":
240
+ case "uint136[]":
241
+ case "uint144[]":
242
+ case "uint152[]":
243
+ case "uint160[]":
244
+ case "uint168[]":
245
+ case "uint176[]":
246
+ case "uint184[]":
247
+ case "uint192[]":
248
+ case "uint200[]":
249
+ case "uint208[]":
250
+ case "uint216[]":
251
+ case "uint224[]":
252
+ case "uint232[]":
253
+ case "uint240[]":
254
+ case "uint248[]":
255
+ case "uint256[]":
256
+ case "int8[]":
257
+ case "int16[]":
258
+ case "int24[]":
259
+ case "int32[]":
260
+ case "int40[]":
261
+ case "int48[]":
262
+ case "int56[]":
263
+ case "int64[]":
264
+ case "int72[]":
265
+ case "int80[]":
266
+ case "int88[]":
267
+ case "int96[]":
268
+ case "int104[]":
269
+ case "int112[]":
270
+ case "int120[]":
271
+ case "int128[]":
272
+ case "int136[]":
273
+ case "int144[]":
274
+ case "int152[]":
275
+ case "int160[]":
276
+ case "int168[]":
277
+ case "int176[]":
278
+ case "int184[]":
279
+ case "int192[]":
280
+ case "int200[]":
281
+ case "int208[]":
282
+ case "int216[]":
283
+ case "int224[]":
284
+ case "int232[]":
285
+ case "int240[]":
286
+ case "int248[]":
287
+ case "int256[]":
288
+ case "bytes1[]":
289
+ case "bytes2[]":
290
+ case "bytes3[]":
291
+ case "bytes4[]":
292
+ case "bytes5[]":
293
+ case "bytes6[]":
294
+ case "bytes7[]":
295
+ case "bytes8[]":
296
+ case "bytes9[]":
297
+ case "bytes10[]":
298
+ case "bytes11[]":
299
+ case "bytes12[]":
300
+ case "bytes13[]":
301
+ case "bytes14[]":
302
+ case "bytes15[]":
303
+ case "bytes16[]":
304
+ case "bytes17[]":
305
+ case "bytes18[]":
306
+ case "bytes19[]":
307
+ case "bytes20[]":
308
+ case "bytes21[]":
309
+ case "bytes22[]":
310
+ case "bytes23[]":
311
+ case "bytes24[]":
312
+ case "bytes25[]":
313
+ case "bytes26[]":
314
+ case "bytes27[]":
315
+ case "bytes28[]":
316
+ case "bytes29[]":
317
+ case "bytes30[]":
318
+ case "bytes31[]":
319
+ case "bytes32[]":
320
+ case "bool[]":
321
+ case "address[]": {
322
+ const staticAbiType = arrayToStaticAbiType(abiType);
323
+ const itemByteLength = staticAbiTypeToByteLength3[staticAbiType];
324
+ if (dataSize % itemByteLength !== 0) {
325
+ throw new InvalidHexLengthForArrayFieldError(staticAbiType, data);
326
+ }
327
+ const items = new Array(dataSize / itemByteLength).fill(void 0).map((_, i) => {
328
+ const itemData = sliceHex(data, i * itemByteLength, (i + 1) * itemByteLength);
329
+ return decodeStaticField(staticAbiType, itemData);
330
+ });
331
+ return items;
332
+ }
333
+ }
334
+ return assertExhaustive2(abiType, `Unsupported dynamic ABI type: ${abiType}`);
335
+ }
336
+
337
+ // src/decodeField.ts
338
+ import { isDynamicAbiType as isDynamicAbiType2 } from "@latticexyz/schema-type/internal";
339
+ function decodeField(abiType, data) {
340
+ return isDynamicAbiType2(abiType) ? decodeDynamicField(abiType, data) : decodeStaticField(abiType, data);
341
+ }
342
+
343
+ // src/decodeKeyTuple.ts
344
+ import { decodeAbiParameters } from "viem";
345
+ function decodeKeyTuple(keySchema, keyTuple) {
346
+ if (keySchema.staticFields.length !== keyTuple.length) {
347
+ throw new Error(
348
+ `key tuple length ${keyTuple.length} does not match key schema length ${keySchema.staticFields.length}`
349
+ );
350
+ }
351
+ return keyTuple.map(
352
+ (key, index) => decodeAbiParameters([{ type: keySchema.staticFields[index] }], key)[0]
353
+ );
354
+ }
355
+
356
+ // src/decodeKey.ts
357
+ function decodeKey(keySchema, data) {
358
+ const keyValues = decodeKeyTuple({ staticFields: Object.values(keySchema), dynamicFields: [] }, data);
359
+ return Object.fromEntries(
360
+ Object.keys(keySchema).map((name, i) => [name, keyValues[i]])
361
+ );
362
+ }
363
+
364
+ // src/decodeRecord.ts
365
+ import {
366
+ staticAbiTypeToByteLength as staticAbiTypeToByteLength5,
367
+ dynamicAbiTypeToDefaultValue
368
+ } from "@latticexyz/schema-type/internal";
369
+
370
+ // src/hexToEncodedLengths.ts
371
+ import { readHex } from "@latticexyz/common";
372
+ function hexToEncodedLengths(data) {
373
+ if (data.length !== 66) {
374
+ throw new InvalidHexLengthForEncodedLengthsError(data);
375
+ }
376
+ const totalByteLength = decodeStaticField("uint56", readHex(data, 32 - 7, 32));
377
+ const reversedFieldByteLengths = decodeDynamicField("uint40[]", readHex(data, 0, 32 - 7));
378
+ const fieldByteLengths = Object.freeze([...reversedFieldByteLengths].reverse());
379
+ const summedLength = BigInt(fieldByteLengths.reduce((total, length) => total + length, 0));
380
+ if (summedLength !== totalByteLength) {
381
+ throw new EncodedLengthsLengthMismatchError(data, totalByteLength, summedLength);
382
+ }
383
+ return { totalByteLength, fieldByteLengths };
384
+ }
385
+
386
+ // src/staticDataLength.ts
387
+ import { staticAbiTypeToByteLength as staticAbiTypeToByteLength4 } from "@latticexyz/schema-type/internal";
388
+ function staticDataLength(staticFields) {
389
+ return staticFields.reduce((length, fieldType) => length + staticAbiTypeToByteLength4[fieldType], 0);
390
+ }
391
+
392
+ // src/decodeRecord.ts
393
+ import { readHex as readHex2 } from "@latticexyz/common";
394
+ function decodeRecord(valueSchema, data) {
395
+ const values = [];
396
+ let bytesOffset = 0;
397
+ valueSchema.staticFields.forEach((fieldType) => {
398
+ const fieldByteLength = staticAbiTypeToByteLength5[fieldType];
399
+ const value = decodeStaticField(fieldType, readHex2(data, bytesOffset, bytesOffset + fieldByteLength));
400
+ bytesOffset += fieldByteLength;
401
+ values.push(value);
402
+ });
403
+ const schemaStaticDataLength = staticDataLength(valueSchema.staticFields);
404
+ const actualStaticDataLength = bytesOffset;
405
+ if (actualStaticDataLength !== schemaStaticDataLength) {
406
+ console.warn(
407
+ "Decoded static data length does not match value schema's expected static data length. Data may get corrupted. Is `getStaticByteLength` outdated?",
408
+ {
409
+ expectedLength: schemaStaticDataLength,
410
+ actualLength: actualStaticDataLength,
411
+ bytesOffset
412
+ }
413
+ );
414
+ }
415
+ if (valueSchema.dynamicFields.length > 0) {
416
+ const dataLayout = hexToEncodedLengths(readHex2(data, bytesOffset, bytesOffset + 32));
417
+ bytesOffset += 32;
418
+ valueSchema.dynamicFields.forEach((fieldType, i) => {
419
+ const dataLength = dataLayout.fieldByteLengths[i];
420
+ if (dataLength > 0) {
421
+ const value = decodeDynamicField(fieldType, readHex2(data, bytesOffset, bytesOffset + dataLength));
422
+ bytesOffset += dataLength;
423
+ values.push(value);
424
+ } else {
425
+ values.push(dynamicAbiTypeToDefaultValue[fieldType]);
426
+ }
427
+ });
428
+ const actualDynamicDataLength = bytesOffset - 32 - actualStaticDataLength;
429
+ if (BigInt(actualDynamicDataLength) !== dataLayout.totalByteLength) {
430
+ console.warn(
431
+ "Decoded dynamic data length does not match data layout's expected data length. Data may get corrupted. Did the data layout change?",
432
+ {
433
+ expectedLength: dataLayout.totalByteLength,
434
+ actualLength: actualDynamicDataLength,
435
+ bytesOffset
436
+ }
437
+ );
438
+ }
439
+ }
440
+ return values;
441
+ }
442
+
443
+ // src/decodeValue.ts
444
+ import { isStaticAbiType, isDynamicAbiType as isDynamicAbiType3 } from "@latticexyz/schema-type/internal";
445
+ function decodeValue(valueSchema, data) {
446
+ const staticFields = Object.values(valueSchema).filter(isStaticAbiType);
447
+ const dynamicFields = Object.values(valueSchema).filter(isDynamicAbiType3);
448
+ const valueTuple = decodeRecord({ staticFields, dynamicFields }, data);
449
+ return Object.fromEntries(
450
+ Object.keys(valueSchema).map((name, i) => [name, valueTuple[i]])
451
+ );
452
+ }
453
+
454
+ // src/decodeValueArgs.ts
455
+ import { concatHex, padHex } from "viem";
456
+ import { isStaticAbiType as isStaticAbiType2 } from "@latticexyz/schema-type/internal";
457
+ import { readHex as readHex3 } from "@latticexyz/common";
458
+ function decodeValueArgs(valueSchema, { staticData, encodedLengths, dynamicData }) {
459
+ return decodeValue(
460
+ valueSchema,
461
+ concatHex([
462
+ readHex3(staticData, 0, staticDataLength(Object.values(valueSchema).filter(isStaticAbiType2))),
463
+ padHex(encodedLengths, { size: 32 }),
464
+ dynamicData
465
+ ])
466
+ );
467
+ }
468
+
469
+ // src/encodeField.ts
470
+ import { arrayToStaticAbiType as arrayToStaticAbiType2, isArrayAbiType } from "@latticexyz/schema-type/internal";
471
+ import { encodePacked } from "viem";
472
+ function encodeField(fieldType, value) {
473
+ if (isArrayAbiType(fieldType) && Array.isArray(value)) {
474
+ const staticFieldType = arrayToStaticAbiType2(fieldType);
475
+ return value.length === 0 ? "0x" : encodePacked(
476
+ value.map(() => staticFieldType),
477
+ value
478
+ );
479
+ }
480
+ return encodePacked([fieldType], [value]);
481
+ }
482
+
483
+ // src/encodeKey.ts
484
+ import { isStaticAbiType as isStaticAbiType3 } from "@latticexyz/schema-type/internal";
485
+
486
+ // src/encodeKeyTuple.ts
487
+ import { encodeAbiParameters } from "viem";
488
+ function encodeKeyTuple(keySchema, keyTuple) {
489
+ return keyTuple.map((key, index) => encodeAbiParameters([{ type: keySchema.staticFields[index] }], [key]));
490
+ }
491
+
492
+ // src/encodeKey.ts
493
+ function encodeKey(keySchema, key) {
494
+ const staticFields = Object.values(keySchema).filter(isStaticAbiType3);
495
+ return encodeKeyTuple({ staticFields, dynamicFields: [] }, Object.values(key));
496
+ }
497
+
498
+ // src/encodeRecord.ts
499
+ function encodeRecord(valueSchema, values) {
500
+ const staticValues = values.slice(0, valueSchema.staticFields.length);
501
+ const dynamicValues = values.slice(valueSchema.staticFields.length);
502
+ const staticData = staticValues.map((value, i) => encodeField(valueSchema.staticFields[i], value).replace(/^0x/, "")).join("");
503
+ if (valueSchema.dynamicFields.length === 0) return `0x${staticData}`;
504
+ const dynamicDataItems = dynamicValues.map(
505
+ (value, i) => encodeField(valueSchema.dynamicFields[i], value).replace(/^0x/, "")
506
+ );
507
+ const dynamicFieldByteLengths = dynamicDataItems.map((value) => value.length / 2).reverse();
508
+ const dynamicTotalByteLength = dynamicFieldByteLengths.reduce((total, length) => total + BigInt(length), 0n);
509
+ const dynamicData = dynamicDataItems.join("");
510
+ const encodedLengths = `${dynamicFieldByteLengths.map((length) => encodeField("uint40", length).replace(/^0x/, "")).join("")}${encodeField("uint56", dynamicTotalByteLength).replace(/^0x/, "")}`.padStart(64, "0");
511
+ return `0x${staticData}${encodedLengths}${dynamicData}`;
512
+ }
513
+
514
+ // src/encodeValue.ts
515
+ import { concatHex as concatHex4 } from "viem";
516
+
517
+ // src/encodeValueArgs.ts
518
+ import {
519
+ isStaticAbiType as isStaticAbiType4,
520
+ isDynamicAbiType as isDynamicAbiType4
521
+ } from "@latticexyz/schema-type/internal";
522
+ import { concatHex as concatHex3 } from "viem";
523
+
524
+ // src/encodeLengths.ts
525
+ import { concatHex as concatHex2, padHex as padHex2, size } from "viem";
526
+ function encodeLengths(values) {
527
+ const byteLengths = values.map(size).reverse();
528
+ const totalByteLength = byteLengths.reduce((total, length) => total + BigInt(length), 0n);
529
+ return padHex2(
530
+ concatHex2([...byteLengths.map((length) => encodeField("uint40", length)), encodeField("uint56", totalByteLength)]),
531
+ { size: 32, dir: "left" }
532
+ );
533
+ }
534
+
535
+ // src/encodeValueArgs.ts
536
+ function encodeValueArgs(valueSchema, value) {
537
+ const valueSchemaEntries = Object.entries(valueSchema);
538
+ const staticFields = valueSchemaEntries.filter(([, type]) => isStaticAbiType4(type));
539
+ const dynamicFields = valueSchemaEntries.filter(([, type]) => isDynamicAbiType4(type));
540
+ const encodedStaticValues = staticFields.map(([name, type]) => encodeField(type, value[name]));
541
+ const encodedDynamicValues = dynamicFields.map(
542
+ ([name, type]) => encodeField(type, value[name])
543
+ );
544
+ const encodedLengths = encodeLengths(encodedDynamicValues);
545
+ return {
546
+ staticData: concatHex3(encodedStaticValues),
547
+ encodedLengths,
548
+ dynamicData: concatHex3(encodedDynamicValues)
549
+ };
550
+ }
551
+
552
+ // src/encodeValue.ts
553
+ function encodeValue(valueSchema, value) {
554
+ const { staticData, encodedLengths, dynamicData } = encodeValueArgs(valueSchema, value);
555
+ return concatHex4([staticData, encodedLengths, dynamicData]);
556
+ }
557
+
558
+ // src/fieldLayoutToHex.ts
559
+ function fieldLayoutToHex(fieldLayout) {
560
+ const staticDataLength2 = fieldLayout.staticFieldLengths.reduce((totalLength, length) => totalLength + length, 0);
561
+ return `0x${[
562
+ staticDataLength2.toString(16).padStart(4, "0"),
563
+ fieldLayout.staticFieldLengths.length.toString(16).padStart(2, "0"),
564
+ fieldLayout.numDynamicFields.toString(16).padStart(2, "0"),
565
+ ...fieldLayout.staticFieldLengths.map((schemaType) => schemaType.toString(16).padStart(2, "0"))
566
+ ].join("").padEnd(64, "0")}`;
567
+ }
568
+
569
+ // src/hexToSchema.ts
570
+ import {
571
+ schemaAbiTypes,
572
+ staticAbiTypeToByteLength as staticAbiTypeToByteLength6
573
+ } from "@latticexyz/schema-type/internal";
574
+ import { hexToNumber, sliceHex as sliceHex2 } from "viem";
575
+ function hexToSchema(data) {
576
+ if (data.length !== 66) {
577
+ throw new InvalidHexLengthForSchemaError(data);
578
+ }
579
+ const staticDataLength2 = hexToNumber(sliceHex2(data, 0, 2));
580
+ const numStaticFields = hexToNumber(sliceHex2(data, 2, 3));
581
+ const numDynamicFields = hexToNumber(sliceHex2(data, 3, 4));
582
+ const staticFields = [];
583
+ const dynamicFields = [];
584
+ for (let i = 4; i < 4 + numStaticFields; i++) {
585
+ const schemaTypeIndex = hexToNumber(sliceHex2(data, i, i + 1));
586
+ staticFields.push(schemaAbiTypes[schemaTypeIndex]);
587
+ }
588
+ for (let i = 4 + numStaticFields; i < 4 + numStaticFields + numDynamicFields; i++) {
589
+ const schemaTypeIndex = hexToNumber(sliceHex2(data, i, i + 1));
590
+ dynamicFields.push(schemaAbiTypes[schemaTypeIndex]);
591
+ }
592
+ const actualStaticDataLength = staticFields.reduce((acc, fieldType) => acc + staticAbiTypeToByteLength6[fieldType], 0);
593
+ if (actualStaticDataLength !== staticDataLength2) {
594
+ console.warn(
595
+ `Schema "${data}" static data length (${staticDataLength2}) did not match the summed length of all static fields (${actualStaticDataLength}). Is \`staticAbiTypeToByteLength\` up to date with Solidity schema types?`
596
+ );
597
+ throw new SchemaStaticLengthMismatchError(data, staticDataLength2, actualStaticDataLength);
598
+ }
599
+ return { staticFields, dynamicFields };
600
+ }
601
+
602
+ // src/hexToTableSchema.ts
603
+ import { sliceHex as sliceHex3 } from "viem";
604
+ function hexToTableSchema(data) {
605
+ const valueSchema = hexToSchema(sliceHex3(data, 0, 32));
606
+ const keySchema = hexToSchema(sliceHex3(data, 32, 64));
607
+ return {
608
+ keySchema,
609
+ valueSchema
610
+ };
611
+ }
612
+
613
+ // src/keySchemaToHex.ts
614
+ import { isStaticAbiType as isStaticAbiType5 } from "@latticexyz/schema-type/internal";
615
+
616
+ // src/schemaToHex.ts
617
+ import { schemaAbiTypes as schemaAbiTypes2 } from "@latticexyz/schema-type/internal";
618
+ function schemaToHex(schema) {
619
+ const staticSchemaTypes = schema.staticFields.map((abiType) => schemaAbiTypes2.indexOf(abiType));
620
+ const dynamicSchemaTypes = schema.dynamicFields.map((abiType) => schemaAbiTypes2.indexOf(abiType));
621
+ return `0x${[
622
+ staticDataLength(schema.staticFields).toString(16).padStart(4, "0"),
623
+ schema.staticFields.length.toString(16).padStart(2, "0"),
624
+ schema.dynamicFields.length.toString(16).padStart(2, "0"),
625
+ ...staticSchemaTypes.map((schemaType) => schemaType.toString(16).padStart(2, "0")),
626
+ ...dynamicSchemaTypes.map((schemaType) => schemaType.toString(16).padStart(2, "0"))
627
+ ].join("").padEnd(64, "0")}`;
628
+ }
629
+
630
+ // src/keySchemaToHex.ts
631
+ function keySchemaToHex(keySchema) {
632
+ return schemaToHex({ staticFields: Object.values(keySchema).filter(isStaticAbiType5), dynamicFields: [] });
633
+ }
634
+
635
+ // src/schemaIndexToAbiType.ts
636
+ function schemaIndexToAbiType(schema, schemaIndex) {
637
+ if (schemaIndex < schema.staticFields.length) {
638
+ return schema.staticFields[schemaIndex];
639
+ }
640
+ return schema.dynamicFields[schemaIndex - schema.staticFields.length];
641
+ }
642
+
643
+ // src/valueSchemaToFieldLayoutHex.ts
644
+ import { isDynamicAbiType as isDynamicAbiType5, isStaticAbiType as isStaticAbiType6, staticAbiTypeToByteLength as staticAbiTypeToByteLength7 } from "@latticexyz/schema-type/internal";
645
+ function valueSchemaToFieldLayoutHex(valueSchema) {
646
+ const staticFields = Object.values(valueSchema).filter(isStaticAbiType6);
647
+ const dynamicFields = Object.values(valueSchema).filter(isDynamicAbiType5);
648
+ const staticFieldLengths = staticFields.map((fieldType) => staticAbiTypeToByteLength7[fieldType]);
649
+ const staticDataLength2 = staticFieldLengths.reduce((dataLength, fieldLength) => dataLength + fieldLength, 0);
650
+ return `0x${[
651
+ staticDataLength2.toString(16).padStart(4, "0"),
652
+ staticFields.length.toString(16).padStart(2, "0"),
653
+ dynamicFields.length.toString(16).padStart(2, "0"),
654
+ ...staticFieldLengths.map((fieldLength) => fieldLength.toString(16).padStart(2, "0"))
655
+ ].join("").padEnd(64, "0")}`;
656
+ }
657
+
658
+ // src/valueSchemaToHex.ts
659
+ import { isDynamicAbiType as isDynamicAbiType6, isStaticAbiType as isStaticAbiType7 } from "@latticexyz/schema-type/internal";
660
+ function valueSchemaToHex(valueSchema) {
661
+ return schemaToHex({
662
+ staticFields: Object.values(valueSchema).filter(isStaticAbiType7),
663
+ dynamicFields: Object.values(valueSchema).filter(isDynamicAbiType6)
664
+ });
665
+ }
666
+
667
+ // src/getKey.ts
668
+ function getKey(table, record) {
669
+ return Object.fromEntries(table.key.map((fieldName) => [fieldName, record[fieldName]]));
670
+ }
671
+
672
+ // src/getValue.ts
673
+ function getValue(table, record) {
674
+ return Object.fromEntries(
675
+ Object.keys(table.schema).filter((fieldName) => !table.key.includes(fieldName)).map((fieldName) => [fieldName, record[fieldName]])
676
+ );
677
+ }
678
+
679
+ // src/getFieldIndex.ts
680
+ import { isDynamicAbiType as isDynamicAbiType7, isStaticAbiType as isStaticAbiType8 } from "@latticexyz/schema-type/internal";
681
+ function getFieldIndex(valueSchema, fieldName) {
682
+ const fieldNames = [
683
+ ...Object.entries(valueSchema).filter(([, fieldType]) => isStaticAbiType8(fieldType)).map(([fieldName2]) => fieldName2),
684
+ ...Object.entries(valueSchema).filter(([, fieldType]) => isDynamicAbiType7(fieldType)).map(([fieldName2]) => fieldName2)
685
+ ];
686
+ return fieldNames.indexOf(fieldName);
687
+ }
688
+
689
+ // src/getKeySchema.ts
690
+ function getKeySchema(table) {
691
+ return Object.fromEntries(table.key.map((fieldName) => [fieldName, table.schema[fieldName]]));
692
+ }
693
+
694
+ // src/getKeyTuple.ts
695
+ import { encodeAbiParameters as encodeAbiParameters2 } from "viem";
696
+ function getKeyTuple(table, key) {
697
+ return table.key.map(
698
+ (fieldName) => encodeAbiParameters2([table.schema[fieldName]], [key[fieldName]])
699
+ );
700
+ }
701
+
702
+ // src/getValueSchema.ts
703
+ function getValueSchema(table) {
704
+ return Object.fromEntries(
705
+ Object.entries(table.schema).filter(([fieldName]) => !table.key.includes(fieldName))
706
+ );
707
+ }
708
+
709
+ // src/getSchemaTypes.ts
710
+ import { mapObject } from "@latticexyz/common/utils";
711
+ function getSchemaTypes(schema) {
712
+ return mapObject(schema, (value) => value.type);
713
+ }
714
+ export {
715
+ EncodedLengthsLengthMismatchError,
716
+ InvalidHexLengthError,
717
+ InvalidHexLengthForArrayFieldError,
718
+ InvalidHexLengthForEncodedLengthsError,
719
+ InvalidHexLengthForSchemaError,
720
+ InvalidHexLengthForStaticFieldError,
721
+ SchemaStaticLengthMismatchError,
722
+ abiTypesToSchema,
723
+ decodeDynamicField,
724
+ decodeField,
725
+ decodeKey,
726
+ decodeKeyTuple,
727
+ decodeRecord,
728
+ decodeStaticField,
729
+ decodeValue,
730
+ decodeValueArgs,
731
+ encodeField,
732
+ encodeKey,
733
+ encodeKeyTuple,
734
+ encodeRecord,
735
+ encodeValue,
736
+ encodeValueArgs,
737
+ fieldLayoutToHex,
738
+ getFieldIndex,
739
+ getKey,
740
+ getKeySchema,
741
+ getKeyTuple,
742
+ getSchemaTypes,
743
+ getValue,
744
+ getValueSchema,
745
+ hexToEncodedLengths,
746
+ hexToSchema,
747
+ hexToTableSchema,
748
+ keySchemaToHex,
749
+ schemaIndexToAbiType,
750
+ schemaToHex,
751
+ staticDataLength,
752
+ valueSchemaToFieldLayoutHex,
753
+ valueSchemaToHex
754
+ };
2
755
  //# sourceMappingURL=internal.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/abiTypesToSchema.ts","../src/decodeDynamicField.ts","../src/decodeStaticField.ts","../src/errors.ts","../src/decodeField.ts","../src/decodeKeyTuple.ts","../src/decodeKey.ts","../src/decodeRecord.ts","../src/hexToEncodedLengths.ts","../src/staticDataLength.ts","../src/decodeValue.ts","../src/decodeValueArgs.ts","../src/encodeField.ts","../src/encodeKey.ts","../src/encodeKeyTuple.ts","../src/encodeRecord.ts","../src/encodeValue.ts","../src/encodeValueArgs.ts","../src/encodeLengths.ts","../src/fieldLayoutToHex.ts","../src/hexToSchema.ts","../src/hexToTableSchema.ts","../src/keySchemaToHex.ts","../src/schemaToHex.ts","../src/schemaIndexToAbiType.ts","../src/valueSchemaToFieldLayoutHex.ts","../src/valueSchemaToHex.ts","../src/getKey.ts","../src/getValue.ts","../src/getFieldIndex.ts","../src/getKeySchema.ts","../src/getKeyTuple.ts","../src/getValueSchema.ts","../src/getSchemaTypes.ts"],"sourcesContent":["import { DynamicAbiType, SchemaAbiType, StaticAbiType, isDynamicAbiType } from \"@latticexyz/schema-type/internal\";\nimport { Schema } from \"./common\";\n\nexport function abiTypesToSchema(abiTypes: SchemaAbiType[]): Schema {\n const staticFields: StaticAbiType[] = [];\n const dynamicFields: DynamicAbiType[] = [];\n for (const abiType of abiTypes) {\n if (isDynamicAbiType(abiType)) dynamicFields.push(abiType);\n else staticFields.push(abiType);\n }\n return { staticFields, dynamicFields };\n}\n","import { Hex, hexToString, sliceHex } from \"viem\";\nimport { assertExhaustive } from \"@latticexyz/common/utils\";\nimport {\n DynamicAbiType,\n DynamicAbiTypeToPrimitiveType,\n arrayToStaticAbiType,\n staticAbiTypeToByteLength,\n} from \"@latticexyz/schema-type/internal\";\nimport { decodeStaticField } from \"./decodeStaticField\";\nimport { InvalidHexLengthError, InvalidHexLengthForArrayFieldError } from \"./errors\";\n\n// TODO: require size/length for dynamic fields, because hex might be longer (sometimes we just move the length pointer of arrays without updating the value)\n// this means the error should probably change from \"invalid length\" to \"too short\", which viem has that we could reuse?\n\nexport function decodeDynamicField<\n TAbiType extends DynamicAbiType,\n TPrimitiveType extends DynamicAbiTypeToPrimitiveType<TAbiType>,\n>(abiType: TAbiType, data: Hex): TPrimitiveType {\n if (abiType === \"bytes\") {\n return data as TPrimitiveType;\n }\n if (abiType === \"string\") {\n return hexToString(data) as TPrimitiveType;\n }\n\n if (data.length > 3 && data.length % 2 !== 0) {\n throw new InvalidHexLengthError(data);\n }\n\n const dataSize = (data.length - 2) / 2;\n\n switch (abiType) {\n case \"uint8[]\":\n case \"uint16[]\":\n case \"uint24[]\":\n case \"uint32[]\":\n case \"uint40[]\":\n case \"uint48[]\":\n case \"uint56[]\":\n case \"uint64[]\":\n case \"uint72[]\":\n case \"uint80[]\":\n case \"uint88[]\":\n case \"uint96[]\":\n case \"uint104[]\":\n case \"uint112[]\":\n case \"uint120[]\":\n case \"uint128[]\":\n case \"uint136[]\":\n case \"uint144[]\":\n case \"uint152[]\":\n case \"uint160[]\":\n case \"uint168[]\":\n case \"uint176[]\":\n case \"uint184[]\":\n case \"uint192[]\":\n case \"uint200[]\":\n case \"uint208[]\":\n case \"uint216[]\":\n case \"uint224[]\":\n case \"uint232[]\":\n case \"uint240[]\":\n case \"uint248[]\":\n case \"uint256[]\":\n case \"int8[]\":\n case \"int16[]\":\n case \"int24[]\":\n case \"int32[]\":\n case \"int40[]\":\n case \"int48[]\":\n case \"int56[]\":\n case \"int64[]\":\n case \"int72[]\":\n case \"int80[]\":\n case \"int88[]\":\n case \"int96[]\":\n case \"int104[]\":\n case \"int112[]\":\n case \"int120[]\":\n case \"int128[]\":\n case \"int136[]\":\n case \"int144[]\":\n case \"int152[]\":\n case \"int160[]\":\n case \"int168[]\":\n case \"int176[]\":\n case \"int184[]\":\n case \"int192[]\":\n case \"int200[]\":\n case \"int208[]\":\n case \"int216[]\":\n case \"int224[]\":\n case \"int232[]\":\n case \"int240[]\":\n case \"int248[]\":\n case \"int256[]\":\n case \"bytes1[]\":\n case \"bytes2[]\":\n case \"bytes3[]\":\n case \"bytes4[]\":\n case \"bytes5[]\":\n case \"bytes6[]\":\n case \"bytes7[]\":\n case \"bytes8[]\":\n case \"bytes9[]\":\n case \"bytes10[]\":\n case \"bytes11[]\":\n case \"bytes12[]\":\n case \"bytes13[]\":\n case \"bytes14[]\":\n case \"bytes15[]\":\n case \"bytes16[]\":\n case \"bytes17[]\":\n case \"bytes18[]\":\n case \"bytes19[]\":\n case \"bytes20[]\":\n case \"bytes21[]\":\n case \"bytes22[]\":\n case \"bytes23[]\":\n case \"bytes24[]\":\n case \"bytes25[]\":\n case \"bytes26[]\":\n case \"bytes27[]\":\n case \"bytes28[]\":\n case \"bytes29[]\":\n case \"bytes30[]\":\n case \"bytes31[]\":\n case \"bytes32[]\":\n case \"bool[]\":\n case \"address[]\": {\n const staticAbiType = arrayToStaticAbiType(abiType);\n const itemByteLength = staticAbiTypeToByteLength[staticAbiType];\n if (dataSize % itemByteLength !== 0) {\n throw new InvalidHexLengthForArrayFieldError(staticAbiType, data);\n }\n const items = new Array(dataSize / itemByteLength).fill(undefined).map((_, i) => {\n const itemData = sliceHex(data, i * itemByteLength, (i + 1) * itemByteLength);\n return decodeStaticField(staticAbiType, itemData);\n });\n return items as TPrimitiveType;\n }\n }\n\n return assertExhaustive(abiType, `Unsupported dynamic ABI type: ${abiType}`);\n}\n","import { Hex, getAddress, hexToBigInt, hexToBool } from \"viem\";\nimport { assertExhaustive } from \"@latticexyz/common/utils\";\nimport {\n StaticAbiType,\n StaticAbiTypeToPrimitiveType,\n staticAbiTypeToByteLength,\n staticAbiTypeToDefaultValue,\n} from \"@latticexyz/schema-type/internal\";\nimport { InvalidHexLengthError, InvalidHexLengthForStaticFieldError } from \"./errors\";\n\nexport function decodeStaticField<\n TAbiType extends StaticAbiType,\n TPrimitiveType extends StaticAbiTypeToPrimitiveType<TAbiType>,\n>(abiType: TAbiType, data: Hex): TPrimitiveType {\n if (data.length > 3 && data.length % 2 !== 0) {\n throw new InvalidHexLengthError(data);\n }\n\n const dataSize = (data.length - 2) / 2;\n if (dataSize !== staticAbiTypeToByteLength[abiType]) {\n throw new InvalidHexLengthForStaticFieldError(abiType, data);\n }\n\n switch (abiType) {\n case \"uint8\":\n case \"uint16\":\n case \"uint24\":\n case \"uint32\":\n case \"uint40\":\n case \"uint48\":\n case \"uint56\":\n case \"uint64\":\n case \"uint72\":\n case \"uint80\":\n case \"uint88\":\n case \"uint96\":\n case \"uint104\":\n case \"uint112\":\n case \"uint120\":\n case \"uint128\":\n case \"uint136\":\n case \"uint144\":\n case \"uint152\":\n case \"uint160\":\n case \"uint168\":\n case \"uint176\":\n case \"uint184\":\n case \"uint192\":\n case \"uint200\":\n case \"uint208\":\n case \"uint216\":\n case \"uint224\":\n case \"uint232\":\n case \"uint240\":\n case \"uint248\":\n case \"uint256\":\n case \"int8\":\n case \"int16\":\n case \"int24\":\n case \"int32\":\n case \"int40\":\n case \"int48\":\n case \"int56\":\n case \"int64\":\n case \"int72\":\n case \"int80\":\n case \"int88\":\n case \"int96\":\n case \"int104\":\n case \"int112\":\n case \"int120\":\n case \"int128\":\n case \"int136\":\n case \"int144\":\n case \"int152\":\n case \"int160\":\n case \"int168\":\n case \"int176\":\n case \"int184\":\n case \"int192\":\n case \"int200\":\n case \"int208\":\n case \"int216\":\n case \"int224\":\n case \"int232\":\n case \"int240\":\n case \"int248\":\n case \"int256\": {\n const value = hexToBigInt(data, { signed: abiType.startsWith(\"int\") });\n const defaultValueType = typeof staticAbiTypeToDefaultValue[abiType];\n if (defaultValueType === \"number\") {\n return Number(value) as TPrimitiveType;\n }\n if (defaultValueType === \"bigint\") {\n return value as TPrimitiveType;\n }\n throw new Error(`Unexpected default value type (${defaultValueType}) for ABI type (${abiType})`);\n }\n\n case \"bytes1\":\n case \"bytes2\":\n case \"bytes3\":\n case \"bytes4\":\n case \"bytes5\":\n case \"bytes6\":\n case \"bytes7\":\n case \"bytes8\":\n case \"bytes9\":\n case \"bytes10\":\n case \"bytes11\":\n case \"bytes12\":\n case \"bytes13\":\n case \"bytes14\":\n case \"bytes15\":\n case \"bytes16\":\n case \"bytes17\":\n case \"bytes18\":\n case \"bytes19\":\n case \"bytes20\":\n case \"bytes21\":\n case \"bytes22\":\n case \"bytes23\":\n case \"bytes24\":\n case \"bytes25\":\n case \"bytes26\":\n case \"bytes27\":\n case \"bytes28\":\n case \"bytes29\":\n case \"bytes30\":\n case \"bytes31\":\n case \"bytes32\": {\n return data as TPrimitiveType;\n }\n\n case \"bool\": {\n return hexToBool(data) as TPrimitiveType;\n }\n\n case \"address\": {\n return getAddress(data) as TPrimitiveType;\n }\n }\n\n return assertExhaustive(abiType, `Unsupported static ABI type: ${abiType}`);\n}\n","import { Hex } from \"viem\";\nimport { MUDError } from \"@latticexyz/common/errors\";\nimport { StaticAbiType, staticAbiTypeToByteLength } from \"@latticexyz/schema-type/internal\";\n\nexport class InvalidHexLengthError extends MUDError {\n override name = \"InvalidHexValueError\";\n constructor(value: Hex) {\n super(`Hex value \"${value}\" is an odd length (${value.length - 2}). It must be an even length.`);\n }\n}\n\nexport class InvalidHexLengthForSchemaError extends MUDError {\n override name = \"InvalidHexLengthForSchemaError\";\n constructor(value: Hex) {\n super(`Hex value \"${value}\" has length of ${value.length - 2}, but expected length of 64 for a schema.`);\n }\n}\n\nexport class InvalidHexLengthForEncodedLengthsError extends MUDError {\n override name = \"InvalidHexLengthForEncodedLengthsError\";\n constructor(value: Hex) {\n super(`Hex value \"${value}\" has length of ${value.length - 2}, but expected length of 64 for encoded lengths.`);\n }\n}\n\nexport class InvalidHexLengthForStaticFieldError extends MUDError {\n override name = \"InvalidHexLengthForStaticFieldError\";\n constructor(abiType: StaticAbiType, value: Hex) {\n super(\n `Hex value \"${value}\" has length of ${value.length - 2}, but expected length of ${\n staticAbiTypeToByteLength[abiType] * 2\n } for ${abiType} type.`,\n );\n }\n}\n\nexport class InvalidHexLengthForArrayFieldError extends MUDError {\n override name = \"InvalidHexLengthForArrayFieldError\";\n constructor(abiType: StaticAbiType, value: Hex) {\n super(\n `Hex value \"${value}\" has length of ${value.length - 2}, but expected a multiple of ${\n staticAbiTypeToByteLength[abiType] * 2\n } for ${abiType}[] type.`,\n );\n }\n}\n\nexport class SchemaStaticLengthMismatchError extends MUDError {\n override name = \"SchemaStaticLengthMismatchError\";\n constructor(schemaData: Hex, definedLength: number, summedLength: number) {\n super(\n `Schema \"${schemaData}\" static data length (${definedLength}) did not match the summed length of all static fields (${summedLength}). ` +\n `Is \\`staticAbiTypeToByteLength\\` up to date with Solidity schema types?`,\n );\n }\n}\n\nexport class EncodedLengthsLengthMismatchError extends MUDError {\n override name = \"EncodedLengthsLengthMismatchError\";\n constructor(encodedLengthsData: Hex, definedLength: bigint, summedLength: bigint) {\n super(\n `EncodedLengths \"${encodedLengthsData}\" total bytes length (${definedLength}) did not match the summed length of all field byte lengths (${summedLength}).`,\n );\n }\n}\n","import { Hex } from \"viem\";\nimport { SchemaAbiType, SchemaAbiTypeToPrimitiveType, isDynamicAbiType } from \"@latticexyz/schema-type/internal\";\nimport { decodeDynamicField } from \"./decodeDynamicField\";\nimport { decodeStaticField } from \"./decodeStaticField\";\n\nexport function decodeField<\n TAbiType extends SchemaAbiType,\n TPrimitiveType extends SchemaAbiTypeToPrimitiveType<TAbiType>,\n>(abiType: TAbiType, data: Hex): TPrimitiveType {\n return (\n isDynamicAbiType(abiType) ? decodeDynamicField(abiType, data) : decodeStaticField(abiType, data)\n ) as TPrimitiveType;\n}\n","import { Hex, decodeAbiParameters } from \"viem\";\nimport { StaticPrimitiveType } from \"@latticexyz/schema-type/internal\";\nimport { Schema } from \"./common\";\n\n// key tuples are encoded in the same way as abi.encode, so we can decode them with viem\n\n/** @deprecated use `decodeKey` instead */\nexport function decodeKeyTuple(keySchema: Schema, keyTuple: readonly Hex[]): StaticPrimitiveType[] {\n if (keySchema.staticFields.length !== keyTuple.length) {\n throw new Error(\n `key tuple length ${keyTuple.length} does not match key schema length ${keySchema.staticFields.length}`,\n );\n }\n return keyTuple.map(\n (key, index) => decodeAbiParameters([{ type: keySchema.staticFields[index] }], key)[0] as StaticPrimitiveType,\n );\n}\n","import { Hex } from \"viem\";\nimport { SchemaToPrimitives, KeySchema } from \"./common\";\nimport { decodeKeyTuple } from \"./decodeKeyTuple\";\n\nexport function decodeKey<TSchema extends KeySchema>(\n keySchema: TSchema,\n data: readonly Hex[],\n): SchemaToPrimitives<TSchema> {\n // TODO: refactor and move all decodeKeyTuple logic into this method so we can delete decodeKeyTuple\n const keyValues = decodeKeyTuple({ staticFields: Object.values(keySchema), dynamicFields: [] }, data);\n\n return Object.fromEntries(\n Object.keys(keySchema).map((name, i) => [name, keyValues[i]]),\n ) as SchemaToPrimitives<TSchema>;\n}\n","import {\n StaticPrimitiveType,\n DynamicPrimitiveType,\n staticAbiTypeToByteLength,\n dynamicAbiTypeToDefaultValue,\n} from \"@latticexyz/schema-type/internal\";\nimport { Hex } from \"viem\";\nimport { Schema } from \"./common\";\nimport { decodeDynamicField } from \"./decodeDynamicField\";\nimport { decodeStaticField } from \"./decodeStaticField\";\nimport { hexToEncodedLengths } from \"./hexToEncodedLengths\";\nimport { staticDataLength } from \"./staticDataLength\";\nimport { readHex } from \"@latticexyz/common\";\n\n/** @deprecated use `decodeValue` instead */\nexport function decodeRecord(valueSchema: Schema, data: Hex): readonly (StaticPrimitiveType | DynamicPrimitiveType)[] {\n const values: (StaticPrimitiveType | DynamicPrimitiveType)[] = [];\n\n let bytesOffset = 0;\n valueSchema.staticFields.forEach((fieldType) => {\n const fieldByteLength = staticAbiTypeToByteLength[fieldType];\n const value = decodeStaticField(fieldType, readHex(data, bytesOffset, bytesOffset + fieldByteLength));\n bytesOffset += fieldByteLength;\n values.push(value);\n });\n\n // Warn user if static data length doesn't match the value schema, because data corruption might be possible.\n const schemaStaticDataLength = staticDataLength(valueSchema.staticFields);\n const actualStaticDataLength = bytesOffset;\n if (actualStaticDataLength !== schemaStaticDataLength) {\n console.warn(\n \"Decoded static data length does not match value schema's expected static data length. Data may get corrupted. Is `getStaticByteLength` outdated?\",\n {\n expectedLength: schemaStaticDataLength,\n actualLength: actualStaticDataLength,\n bytesOffset,\n },\n );\n }\n\n if (valueSchema.dynamicFields.length > 0) {\n const dataLayout = hexToEncodedLengths(readHex(data, bytesOffset, bytesOffset + 32));\n bytesOffset += 32;\n\n valueSchema.dynamicFields.forEach((fieldType, i) => {\n const dataLength = dataLayout.fieldByteLengths[i];\n if (dataLength > 0) {\n const value = decodeDynamicField(fieldType, readHex(data, bytesOffset, bytesOffset + dataLength));\n bytesOffset += dataLength;\n values.push(value);\n } else {\n values.push(dynamicAbiTypeToDefaultValue[fieldType]);\n }\n });\n\n // Warn user if dynamic data length doesn't match the dynamic data length, because data corruption might be possible.\n const actualDynamicDataLength = bytesOffset - 32 - actualStaticDataLength;\n // TODO: refactor this so we don't break for bytes offsets >UINT40\n if (BigInt(actualDynamicDataLength) !== dataLayout.totalByteLength) {\n console.warn(\n \"Decoded dynamic data length does not match data layout's expected data length. Data may get corrupted. Did the data layout change?\",\n {\n expectedLength: dataLayout.totalByteLength,\n actualLength: actualDynamicDataLength,\n bytesOffset,\n },\n );\n }\n }\n\n return values;\n}\n","import { Hex } from \"viem\";\nimport { decodeStaticField } from \"./decodeStaticField\";\nimport { decodeDynamicField } from \"./decodeDynamicField\";\nimport { InvalidHexLengthForEncodedLengthsError, EncodedLengthsLengthMismatchError } from \"./errors\";\nimport { readHex } from \"@latticexyz/common\";\n\n// Keep this logic in sync with EncodedLengths.sol\n\n// - Last 7 bytes (uint56) are used for the total byte length of the dynamic data\n// - The next 5 byte (uint40) sections are used for the byte length of each field, indexed from right to left\n\n// We use byte lengths rather than item counts so that, on chain, we can slice without having to get the value schema first (and thus the field lengths of each dynamic type)\n\nexport function hexToEncodedLengths(data: Hex): {\n totalByteLength: bigint;\n fieldByteLengths: readonly number[];\n} {\n if (data.length !== 66) {\n throw new InvalidHexLengthForEncodedLengthsError(data);\n }\n\n const totalByteLength = decodeStaticField(\"uint56\", readHex(data, 32 - 7, 32));\n // TODO: use value schema to make sure we only parse as many as we need (rather than zeroes at the end)?\n const reversedFieldByteLengths = decodeDynamicField(\"uint40[]\", readHex(data, 0, 32 - 7));\n // Reverse the lengths\n const fieldByteLengths = Object.freeze([...reversedFieldByteLengths].reverse());\n\n const summedLength = BigInt(fieldByteLengths.reduce((total, length) => total + length, 0));\n if (summedLength !== totalByteLength) {\n throw new EncodedLengthsLengthMismatchError(data, totalByteLength, summedLength);\n }\n\n return { totalByteLength, fieldByteLengths };\n}\n","import { StaticAbiType, staticAbiTypeToByteLength } from \"@latticexyz/schema-type/internal\";\n\nexport function staticDataLength(staticFields: readonly StaticAbiType[]): number {\n return staticFields.reduce((length, fieldType) => length + staticAbiTypeToByteLength[fieldType], 0);\n}\n","import { isStaticAbiType, isDynamicAbiType } from \"@latticexyz/schema-type/internal\";\nimport { Hex } from \"viem\";\nimport { SchemaToPrimitives, ValueSchema } from \"./common\";\nimport { decodeRecord } from \"./decodeRecord\";\n\nexport function decodeValue<TSchema extends ValueSchema>(valueSchema: TSchema, data: Hex): SchemaToPrimitives<TSchema> {\n const staticFields = Object.values(valueSchema).filter(isStaticAbiType);\n const dynamicFields = Object.values(valueSchema).filter(isDynamicAbiType);\n\n // TODO: refactor and move all decodeRecord logic into this method so we can delete decodeRecord\n const valueTuple = decodeRecord({ staticFields, dynamicFields }, data);\n\n return Object.fromEntries(\n Object.keys(valueSchema).map((name, i) => [name, valueTuple[i]]),\n ) as SchemaToPrimitives<TSchema>;\n}\n","import { concatHex, padHex } from \"viem\";\nimport { isStaticAbiType } from \"@latticexyz/schema-type/internal\";\nimport { SchemaToPrimitives, ValueArgs, ValueSchema } from \"./common\";\nimport { decodeValue } from \"./decodeValue\";\nimport { staticDataLength } from \"./staticDataLength\";\nimport { readHex } from \"@latticexyz/common\";\n\nexport function decodeValueArgs<TSchema extends ValueSchema>(\n valueSchema: TSchema,\n { staticData, encodedLengths, dynamicData }: ValueArgs,\n): SchemaToPrimitives<TSchema> {\n return decodeValue(\n valueSchema,\n concatHex([\n readHex(staticData, 0, staticDataLength(Object.values(valueSchema).filter(isStaticAbiType))),\n padHex(encodedLengths, { size: 32 }),\n dynamicData,\n ]),\n );\n}\n","import { SchemaAbiType, arrayToStaticAbiType, isArrayAbiType } from \"@latticexyz/schema-type/internal\";\nimport { AbiParameterToPrimitiveType } from \"abitype\";\nimport { Hex, encodePacked } from \"viem\";\n\nexport function encodeField<TSchemaAbiType extends SchemaAbiType>(\n fieldType: TSchemaAbiType,\n value: AbiParameterToPrimitiveType<{ type: TSchemaAbiType }>,\n): Hex {\n if (isArrayAbiType(fieldType) && Array.isArray(value)) {\n const staticFieldType = arrayToStaticAbiType(fieldType);\n // TODO: we can remove conditional once this is fixed: https://github.com/wagmi-dev/viem/pull/1147\n return value.length === 0\n ? \"0x\"\n : encodePacked(\n value.map(() => staticFieldType),\n value,\n );\n }\n return encodePacked([fieldType], [value as never]);\n}\n","import { isStaticAbiType } from \"@latticexyz/schema-type/internal\";\nimport { Hex } from \"viem\";\nimport { SchemaToPrimitives, KeySchema } from \"./common\";\nimport { encodeKeyTuple } from \"./encodeKeyTuple\";\n\nexport function encodeKey<TSchema extends KeySchema>(\n keySchema: TSchema,\n key: SchemaToPrimitives<TSchema>,\n): readonly Hex[] {\n const staticFields = Object.values(keySchema).filter(isStaticAbiType);\n // TODO: refactor and move all encodeKeyTuple logic into this method so we can delete encodeKeyTuple\n return encodeKeyTuple({ staticFields, dynamicFields: [] }, Object.values(key));\n}\n","import { StaticPrimitiveType } from \"@latticexyz/schema-type/internal\";\nimport { Hex, encodeAbiParameters } from \"viem\";\nimport { Schema } from \"./common\";\n\n/** @deprecated use `encodeKey` instead */\nexport function encodeKeyTuple(keySchema: Schema, keyTuple: StaticPrimitiveType[]): Hex[] {\n return keyTuple.map((key, index) => encodeAbiParameters([{ type: keySchema.staticFields[index] }], [key]));\n}\n","import { StaticPrimitiveType, DynamicPrimitiveType } from \"@latticexyz/schema-type/internal\";\nimport { Hex } from \"viem\";\nimport { encodeField } from \"./encodeField\";\nimport { Schema } from \"./common\";\n\n/** @deprecated use `encodeValue` instead */\nexport function encodeRecord(\n valueSchema: Schema,\n values: readonly (StaticPrimitiveType | DynamicPrimitiveType)[],\n): Hex {\n const staticValues = values.slice(0, valueSchema.staticFields.length) as readonly StaticPrimitiveType[];\n const dynamicValues = values.slice(valueSchema.staticFields.length) as readonly DynamicPrimitiveType[];\n\n const staticData = staticValues\n .map((value, i) => encodeField(valueSchema.staticFields[i], value).replace(/^0x/, \"\"))\n .join(\"\");\n\n if (valueSchema.dynamicFields.length === 0) return `0x${staticData}`;\n\n const dynamicDataItems = dynamicValues.map((value, i) =>\n encodeField(valueSchema.dynamicFields[i], value).replace(/^0x/, \"\"),\n );\n\n const dynamicFieldByteLengths = dynamicDataItems.map((value) => value.length / 2).reverse();\n const dynamicTotalByteLength = dynamicFieldByteLengths.reduce((total, length) => total + BigInt(length), 0n);\n\n const dynamicData = dynamicDataItems.join(\"\");\n\n const encodedLengths = `${dynamicFieldByteLengths\n .map((length) => encodeField(\"uint40\", length).replace(/^0x/, \"\"))\n .join(\"\")}${encodeField(\"uint56\", dynamicTotalByteLength).replace(/^0x/, \"\")}`.padStart(64, \"0\");\n\n return `0x${staticData}${encodedLengths}${dynamicData}`;\n}\n","import { Hex, concatHex } from \"viem\";\nimport { SchemaToPrimitives, ValueSchema } from \"./common\";\nimport { encodeValueArgs } from \"./encodeValueArgs\";\n\nexport function encodeValue<TSchema extends ValueSchema>(\n valueSchema: TSchema,\n value: SchemaToPrimitives<TSchema>,\n): Hex {\n const { staticData, encodedLengths, dynamicData } = encodeValueArgs(valueSchema, value);\n return concatHex([staticData, encodedLengths, dynamicData]);\n}\n","import {\n StaticPrimitiveType,\n DynamicPrimitiveType,\n isStaticAbiType,\n isDynamicAbiType,\n StaticAbiType,\n DynamicAbiType,\n} from \"@latticexyz/schema-type/internal\";\nimport { concatHex } from \"viem\";\nimport { encodeField } from \"./encodeField\";\nimport { SchemaToPrimitives, ValueArgs, ValueSchema } from \"./common\";\nimport { encodeLengths } from \"./encodeLengths\";\n\nexport function encodeValueArgs<TSchema extends ValueSchema>(\n valueSchema: TSchema,\n value: SchemaToPrimitives<TSchema>,\n): ValueArgs {\n const valueSchemaEntries = Object.entries(valueSchema);\n const staticFields = valueSchemaEntries.filter(([, type]) => isStaticAbiType(type)) as [string, StaticAbiType][];\n const dynamicFields = valueSchemaEntries.filter(([, type]) => isDynamicAbiType(type)) as [string, DynamicAbiType][];\n // TODO: validate <=5 dynamic fields\n // TODO: validate <=28 total fields\n\n const encodedStaticValues = staticFields.map(([name, type]) => encodeField(type, value[name] as StaticPrimitiveType));\n const encodedDynamicValues = dynamicFields.map(([name, type]) =>\n encodeField(type, value[name] as DynamicPrimitiveType),\n );\n\n const encodedLengths = encodeLengths(encodedDynamicValues);\n\n return {\n staticData: concatHex(encodedStaticValues),\n encodedLengths,\n dynamicData: concatHex(encodedDynamicValues),\n };\n}\n","import { Hex, concatHex, padHex, size } from \"viem\";\nimport { encodeField } from \"./encodeField\";\n\nexport function encodeLengths(values: Hex[]): Hex {\n const byteLengths = values.map(size).reverse();\n const totalByteLength = byteLengths.reduce((total, length) => total + BigInt(length), 0n);\n\n return padHex(\n concatHex([...byteLengths.map((length) => encodeField(\"uint40\", length)), encodeField(\"uint56\", totalByteLength)]),\n { size: 32, dir: \"left\" },\n );\n}\n","import { Hex } from \"viem\";\nimport { FieldLayout } from \"./common\";\n\n/** @deprecated use `valueSchemaToFieldLayoutHex` instead */\nexport function fieldLayoutToHex(fieldLayout: FieldLayout): Hex {\n const staticDataLength = fieldLayout.staticFieldLengths.reduce((totalLength, length) => totalLength + length, 0);\n return `0x${[\n staticDataLength.toString(16).padStart(4, \"0\"),\n fieldLayout.staticFieldLengths.length.toString(16).padStart(2, \"0\"),\n fieldLayout.numDynamicFields.toString(16).padStart(2, \"0\"),\n ...fieldLayout.staticFieldLengths.map((schemaType) => schemaType.toString(16).padStart(2, \"0\")),\n ]\n .join(\"\")\n .padEnd(64, \"0\")}`;\n}\n","import {\n StaticAbiType,\n DynamicAbiType,\n schemaAbiTypes,\n staticAbiTypeToByteLength,\n} from \"@latticexyz/schema-type/internal\";\nimport { Hex, hexToNumber, sliceHex } from \"viem\";\nimport { Schema } from \"./common\";\nimport { InvalidHexLengthForSchemaError, SchemaStaticLengthMismatchError } from \"./errors\";\n\nexport function hexToSchema(data: Hex): Schema {\n if (data.length !== 66) {\n throw new InvalidHexLengthForSchemaError(data);\n }\n\n const staticDataLength = hexToNumber(sliceHex(data, 0, 2));\n const numStaticFields = hexToNumber(sliceHex(data, 2, 3));\n const numDynamicFields = hexToNumber(sliceHex(data, 3, 4));\n const staticFields: StaticAbiType[] = [];\n const dynamicFields: DynamicAbiType[] = [];\n\n for (let i = 4; i < 4 + numStaticFields; i++) {\n const schemaTypeIndex = hexToNumber(sliceHex(data, i, i + 1));\n staticFields.push(schemaAbiTypes[schemaTypeIndex] as StaticAbiType);\n }\n for (let i = 4 + numStaticFields; i < 4 + numStaticFields + numDynamicFields; i++) {\n const schemaTypeIndex = hexToNumber(sliceHex(data, i, i + 1));\n dynamicFields.push(schemaAbiTypes[schemaTypeIndex] as DynamicAbiType);\n }\n\n // validate static data length\n const actualStaticDataLength = staticFields.reduce((acc, fieldType) => acc + staticAbiTypeToByteLength[fieldType], 0);\n if (actualStaticDataLength !== staticDataLength) {\n console.warn(\n `Schema \"${data}\" static data length (${staticDataLength}) did not match the summed length of all static fields (${actualStaticDataLength}). ` +\n `Is \\`staticAbiTypeToByteLength\\` up to date with Solidity schema types?`,\n );\n throw new SchemaStaticLengthMismatchError(data, staticDataLength, actualStaticDataLength);\n }\n\n return { staticFields, dynamicFields };\n}\n","import { Hex, sliceHex } from \"viem\";\nimport { TableSchema } from \"./common\";\nimport { hexToSchema } from \"./hexToSchema\";\n\nexport function hexToTableSchema(data: Hex): TableSchema {\n const valueSchema = hexToSchema(sliceHex(data, 0, 32));\n const keySchema = hexToSchema(sliceHex(data, 32, 64));\n return {\n keySchema,\n valueSchema,\n };\n}\n","import { isStaticAbiType } from \"@latticexyz/schema-type/internal\";\nimport { Hex } from \"viem\";\nimport { KeySchema } from \"./common\";\nimport { schemaToHex } from \"./schemaToHex\";\n\nexport function keySchemaToHex(keySchema: KeySchema): Hex {\n return schemaToHex({ staticFields: Object.values(keySchema).filter(isStaticAbiType), dynamicFields: [] });\n}\n","import { schemaAbiTypes } from \"@latticexyz/schema-type/internal\";\nimport { Hex } from \"viem\";\nimport { Schema } from \"./common\";\nimport { staticDataLength } from \"./staticDataLength\";\n\n/** @deprecated use `keySchemaToHex` or `valueSchemaToHex` instead */\nexport function schemaToHex(schema: Schema): Hex {\n const staticSchemaTypes = schema.staticFields.map((abiType) => schemaAbiTypes.indexOf(abiType));\n const dynamicSchemaTypes = schema.dynamicFields.map((abiType) => schemaAbiTypes.indexOf(abiType));\n return `0x${[\n staticDataLength(schema.staticFields).toString(16).padStart(4, \"0\"),\n schema.staticFields.length.toString(16).padStart(2, \"0\"),\n schema.dynamicFields.length.toString(16).padStart(2, \"0\"),\n ...staticSchemaTypes.map((schemaType) => schemaType.toString(16).padStart(2, \"0\")),\n ...dynamicSchemaTypes.map((schemaType) => schemaType.toString(16).padStart(2, \"0\")),\n ]\n .join(\"\")\n .padEnd(64, \"0\")}`;\n}\n","import { SchemaAbiType } from \"@latticexyz/schema-type/internal\";\nimport { Schema } from \"./common\";\n\nexport function schemaIndexToAbiType(schema: Schema, schemaIndex: number): SchemaAbiType {\n if (schemaIndex < schema.staticFields.length) {\n return schema.staticFields[schemaIndex];\n }\n return schema.dynamicFields[schemaIndex - schema.staticFields.length];\n}\n","import { Hex } from \"viem\";\nimport { ValueSchema } from \"./common\";\nimport { isDynamicAbiType, isStaticAbiType, staticAbiTypeToByteLength } from \"@latticexyz/schema-type/internal\";\n\n// TODO: add tests once we have corresponding tests for FieldLayout.sol (bytes32 -> FieldLayout and vice versa)\nexport function valueSchemaToFieldLayoutHex(valueSchema: ValueSchema): Hex {\n const staticFields = Object.values(valueSchema).filter(isStaticAbiType);\n const dynamicFields = Object.values(valueSchema).filter(isDynamicAbiType);\n\n const staticFieldLengths = staticFields.map((fieldType) => staticAbiTypeToByteLength[fieldType]);\n const staticDataLength = staticFieldLengths.reduce((dataLength, fieldLength) => dataLength + fieldLength, 0);\n\n return `0x${[\n staticDataLength.toString(16).padStart(4, \"0\"),\n staticFields.length.toString(16).padStart(2, \"0\"),\n dynamicFields.length.toString(16).padStart(2, \"0\"),\n ...staticFieldLengths.map((fieldLength) => fieldLength.toString(16).padStart(2, \"0\")),\n ]\n .join(\"\")\n .padEnd(64, \"0\")}`;\n}\n","import { isDynamicAbiType, isStaticAbiType } from \"@latticexyz/schema-type/internal\";\nimport { Hex } from \"viem\";\nimport { ValueSchema } from \"./common\";\nimport { schemaToHex } from \"./schemaToHex\";\n\nexport function valueSchemaToHex(valueSchema: ValueSchema): Hex {\n return schemaToHex({\n staticFields: Object.values(valueSchema).filter(isStaticAbiType),\n dynamicFields: Object.values(valueSchema).filter(isDynamicAbiType),\n });\n}\n","import { Table } from \"@latticexyz/config\";\nimport { getKeySchema } from \"./getKeySchema\";\nimport { getSchemaPrimitives } from \"./getSchemaPrimitives\";\n\ntype PartialTable = Pick<Table, \"schema\" | \"key\">;\n\nexport function getKey<table extends PartialTable>(\n table: table,\n record: getSchemaPrimitives<table[\"schema\"]>,\n): getSchemaPrimitives<getKeySchema<table>> {\n return Object.fromEntries(table.key.map((fieldName) => [fieldName, record[fieldName]])) as never;\n}\n","import { Table } from \"@latticexyz/config\";\nimport { getValueSchema } from \"./getValueSchema\";\nimport { getSchemaPrimitives } from \"./getSchemaPrimitives\";\n\ntype PartialTable = Pick<Table, \"schema\" | \"key\">;\n\nexport function getValue<table extends PartialTable>(\n table: table,\n record: getSchemaPrimitives<table[\"schema\"]>,\n): getSchemaPrimitives<getValueSchema<table>> {\n return Object.fromEntries(\n Object.keys(table.schema)\n .filter((fieldName) => !table.key.includes(fieldName))\n .map((fieldName) => [fieldName, record[fieldName]]),\n ) as never;\n}\n","import { isDynamicAbiType, isStaticAbiType } from \"@latticexyz/schema-type/internal\";\nimport { ValueSchema } from \"./common\";\n\nexport function getFieldIndex<valueSchema extends ValueSchema>(\n valueSchema: valueSchema,\n fieldName: keyof valueSchema & string,\n): number {\n const fieldNames = [\n ...Object.entries(valueSchema)\n .filter(([, fieldType]) => isStaticAbiType(fieldType))\n .map(([fieldName]) => fieldName),\n ...Object.entries(valueSchema)\n .filter(([, fieldType]) => isDynamicAbiType(fieldType))\n .map(([fieldName]) => fieldName),\n ];\n\n return fieldNames.indexOf(fieldName);\n}\n","import { StaticAbiType, Table } from \"@latticexyz/config\";\n\ntype PartialTable = Pick<Table, \"schema\" | \"key\">;\n\nexport type ResolvedKeySchema = {\n readonly [fieldName: string]: {\n /** the Solidity primitive ABI type */\n readonly type: StaticAbiType;\n /** the user defined type or Solidity primitive ABI type */\n readonly internalType: string;\n };\n};\n\nexport type getKeySchema<table extends PartialTable> = PartialTable extends table\n ? ResolvedKeySchema\n : {\n readonly [fieldName in Extract<keyof table[\"schema\"], table[\"key\"][number]>]: table[\"schema\"][fieldName] & {\n readonly type: StaticAbiType;\n };\n };\n\nexport function getKeySchema<table extends PartialTable>(table: table): getKeySchema<table> {\n return Object.fromEntries(table.key.map((fieldName) => [fieldName, table.schema[fieldName]])) as getKeySchema<table>;\n}\n","import { Hex, encodeAbiParameters } from \"viem\";\nimport { getSchemaPrimitives } from \"./getSchemaPrimitives\";\nimport { getKeySchema } from \"./getKeySchema\";\nimport { Table } from \"@latticexyz/config\";\n\ntype PartialTable = Pick<Table, \"schema\" | \"key\">;\n\nexport type getKeyTuple<table extends PartialTable, key extends readonly unknown[] = table[\"key\"]> = {\n [i in keyof key]: Hex;\n} & unknown;\n\nexport function getKeyTuple<const table extends PartialTable>(\n table: table,\n key: getSchemaPrimitives<getKeySchema<table>>,\n): getKeyTuple<table> {\n return table.key.map((fieldName) =>\n encodeAbiParameters([table.schema[fieldName]], [key[fieldName as never]]),\n ) as never;\n}\n","import { Schema, Table } from \"@latticexyz/config\";\n\ntype PartialTable = Pick<Table, \"schema\" | \"key\">;\n\nexport type getValueSchema<table extends PartialTable> = PartialTable extends table\n ? Schema\n : {\n readonly [fieldName in Exclude<keyof table[\"schema\"], table[\"key\"][number]>]: table[\"schema\"][fieldName];\n };\n\nexport function getValueSchema<table extends PartialTable>(table: table): getValueSchema<table> {\n return Object.fromEntries(\n Object.entries(table.schema).filter(([fieldName]) => !table.key.includes(fieldName)),\n ) as getValueSchema<table>;\n}\n","import { Schema } from \"@latticexyz/config\";\nimport { mapObject } from \"@latticexyz/common/utils\";\n\nexport type getSchemaTypes<schema extends Schema> = {\n readonly [fieldName in keyof schema]: schema[fieldName][\"type\"];\n};\n\nexport function getSchemaTypes<schema extends Schema>(schema: schema): getSchemaTypes<schema> {\n return mapObject(schema, (value) => value.type);\n}\n"],"mappings":"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","names":["isDynamicAbiType","abiTypesToSchema","abiTypes","staticFields","dynamicFields","abiType","hexToString","sliceHex","assertExhaustive","arrayToStaticAbiType","staticAbiTypeToByteLength","getAddress","hexToBigInt","hexToBool","assertExhaustive","staticAbiTypeToByteLength","staticAbiTypeToDefaultValue","MUDError","staticAbiTypeToByteLength","InvalidHexLengthError","value","InvalidHexLengthForSchemaError","InvalidHexLengthForEncodedLengthsError","InvalidHexLengthForStaticFieldError","abiType","InvalidHexLengthForArrayFieldError","SchemaStaticLengthMismatchError","schemaData","definedLength","summedLength","EncodedLengthsLengthMismatchError","encodedLengthsData","decodeStaticField","abiType","data","InvalidHexLengthError","staticAbiTypeToByteLength","InvalidHexLengthForStaticFieldError","value","hexToBigInt","defaultValueType","staticAbiTypeToDefaultValue","hexToBool","getAddress","assertExhaustive","decodeDynamicField","abiType","data","hexToString","InvalidHexLengthError","dataSize","staticAbiType","arrayToStaticAbiType","itemByteLength","staticAbiTypeToByteLength","InvalidHexLengthForArrayFieldError","_","i","itemData","sliceHex","decodeStaticField","assertExhaustive","isDynamicAbiType","decodeField","abiType","data","isDynamicAbiType","decodeDynamicField","decodeStaticField","decodeAbiParameters","decodeKeyTuple","keySchema","keyTuple","key","index","decodeKey","keySchema","data","keyValues","decodeKeyTuple","name","i","staticAbiTypeToByteLength","dynamicAbiTypeToDefaultValue","readHex","hexToEncodedLengths","data","InvalidHexLengthForEncodedLengthsError","totalByteLength","decodeStaticField","reversedFieldByteLengths","decodeDynamicField","fieldByteLengths","summedLength","total","length","EncodedLengthsLengthMismatchError","staticAbiTypeToByteLength","staticDataLength","staticFields","length","fieldType","readHex","decodeRecord","valueSchema","data","values","bytesOffset","fieldType","fieldByteLength","staticAbiTypeToByteLength","value","decodeStaticField","schemaStaticDataLength","staticDataLength","actualStaticDataLength","dataLayout","hexToEncodedLengths","i","dataLength","decodeDynamicField","dynamicAbiTypeToDefaultValue","actualDynamicDataLength","isStaticAbiType","isDynamicAbiType","decodeValue","valueSchema","data","staticFields","isStaticAbiType","dynamicFields","isDynamicAbiType","valueTuple","decodeRecord","name","i","concatHex","padHex","isStaticAbiType","readHex","decodeValueArgs","valueSchema","staticData","encodedLengths","dynamicData","decodeValue","concatHex","staticDataLength","isStaticAbiType","padHex","arrayToStaticAbiType","isArrayAbiType","encodePacked","encodeField","fieldType","value","staticFieldType","isStaticAbiType","encodeAbiParameters","encodeKeyTuple","keySchema","keyTuple","key","index","encodeKey","keySchema","key","staticFields","isStaticAbiType","encodeKeyTuple","encodeRecord","valueSchema","values","staticValues","dynamicValues","staticData","value","i","encodeField","dynamicDataItems","dynamicFieldByteLengths","dynamicTotalByteLength","total","length","dynamicData","encodedLengths","concatHex","isStaticAbiType","isDynamicAbiType","concatHex","concatHex","padHex","size","encodeLengths","values","byteLengths","size","totalByteLength","total","length","padHex","concatHex","encodeField","encodeValueArgs","valueSchema","value","valueSchemaEntries","staticFields","type","isStaticAbiType","dynamicFields","isDynamicAbiType","encodedStaticValues","name","encodeField","encodedDynamicValues","encodedLengths","encodeLengths","concatHex","encodeValue","valueSchema","value","staticData","encodedLengths","dynamicData","encodeValueArgs","concatHex","fieldLayoutToHex","fieldLayout","totalLength","length","schemaType","schemaAbiTypes","staticAbiTypeToByteLength","hexToNumber","sliceHex","hexToSchema","data","InvalidHexLengthForSchemaError","staticDataLength","hexToNumber","sliceHex","numStaticFields","numDynamicFields","staticFields","dynamicFields","i","schemaTypeIndex","schemaAbiTypes","actualStaticDataLength","acc","fieldType","staticAbiTypeToByteLength","SchemaStaticLengthMismatchError","sliceHex","hexToTableSchema","data","valueSchema","hexToSchema","sliceHex","isStaticAbiType","schemaAbiTypes","schemaToHex","schema","staticSchemaTypes","abiType","schemaAbiTypes","dynamicSchemaTypes","staticDataLength","schemaType","keySchemaToHex","keySchema","schemaToHex","isStaticAbiType","schemaIndexToAbiType","schema","schemaIndex","isDynamicAbiType","isStaticAbiType","staticAbiTypeToByteLength","valueSchemaToFieldLayoutHex","valueSchema","staticFields","dynamicFields","staticFieldLengths","fieldType","dataLength","fieldLength","isDynamicAbiType","isStaticAbiType","valueSchemaToHex","valueSchema","schemaToHex","isStaticAbiType","isDynamicAbiType","getKey","table","record","fieldName","getValue","table","record","fieldName","isDynamicAbiType","isStaticAbiType","getFieldIndex","valueSchema","fieldName","fieldType","getKeySchema","table","fieldName","encodeAbiParameters","getKeyTuple","table","key","fieldName","getValueSchema","table","fieldName","mapObject","getSchemaTypes","schema","value"]}
1
+ {"version":3,"sources":["../src/abiTypesToSchema.ts","../src/decodeDynamicField.ts","../src/decodeStaticField.ts","../src/errors.ts","../src/decodeField.ts","../src/decodeKeyTuple.ts","../src/decodeKey.ts","../src/decodeRecord.ts","../src/hexToEncodedLengths.ts","../src/staticDataLength.ts","../src/decodeValue.ts","../src/decodeValueArgs.ts","../src/encodeField.ts","../src/encodeKey.ts","../src/encodeKeyTuple.ts","../src/encodeRecord.ts","../src/encodeValue.ts","../src/encodeValueArgs.ts","../src/encodeLengths.ts","../src/fieldLayoutToHex.ts","../src/hexToSchema.ts","../src/hexToTableSchema.ts","../src/keySchemaToHex.ts","../src/schemaToHex.ts","../src/schemaIndexToAbiType.ts","../src/valueSchemaToFieldLayoutHex.ts","../src/valueSchemaToHex.ts","../src/getKey.ts","../src/getValue.ts","../src/getFieldIndex.ts","../src/getKeySchema.ts","../src/getKeyTuple.ts","../src/getValueSchema.ts","../src/getSchemaTypes.ts"],"sourcesContent":["import { DynamicAbiType, SchemaAbiType, StaticAbiType, isDynamicAbiType } from \"@latticexyz/schema-type/internal\";\nimport { Schema } from \"./common\";\n\nexport function abiTypesToSchema(abiTypes: SchemaAbiType[]): Schema {\n const staticFields: StaticAbiType[] = [];\n const dynamicFields: DynamicAbiType[] = [];\n for (const abiType of abiTypes) {\n if (isDynamicAbiType(abiType)) dynamicFields.push(abiType);\n else staticFields.push(abiType);\n }\n return { staticFields, dynamicFields };\n}\n","import { Hex, hexToString, sliceHex } from \"viem\";\nimport { assertExhaustive } from \"@latticexyz/common/utils\";\nimport {\n DynamicAbiType,\n DynamicAbiTypeToPrimitiveType,\n arrayToStaticAbiType,\n staticAbiTypeToByteLength,\n} from \"@latticexyz/schema-type/internal\";\nimport { decodeStaticField } from \"./decodeStaticField\";\nimport { InvalidHexLengthError, InvalidHexLengthForArrayFieldError } from \"./errors\";\n\n// TODO: require size/length for dynamic fields, because hex might be longer (sometimes we just move the length pointer of arrays without updating the value)\n// this means the error should probably change from \"invalid length\" to \"too short\", which viem has that we could reuse?\n\nexport function decodeDynamicField<\n TAbiType extends DynamicAbiType,\n TPrimitiveType extends DynamicAbiTypeToPrimitiveType<TAbiType>,\n>(abiType: TAbiType, data: Hex): TPrimitiveType {\n if (abiType === \"bytes\") {\n return data as TPrimitiveType;\n }\n if (abiType === \"string\") {\n return hexToString(data) as TPrimitiveType;\n }\n\n if (data.length > 3 && data.length % 2 !== 0) {\n throw new InvalidHexLengthError(data);\n }\n\n const dataSize = (data.length - 2) / 2;\n\n switch (abiType) {\n case \"uint8[]\":\n case \"uint16[]\":\n case \"uint24[]\":\n case \"uint32[]\":\n case \"uint40[]\":\n case \"uint48[]\":\n case \"uint56[]\":\n case \"uint64[]\":\n case \"uint72[]\":\n case \"uint80[]\":\n case \"uint88[]\":\n case \"uint96[]\":\n case \"uint104[]\":\n case \"uint112[]\":\n case \"uint120[]\":\n case \"uint128[]\":\n case \"uint136[]\":\n case \"uint144[]\":\n case \"uint152[]\":\n case \"uint160[]\":\n case \"uint168[]\":\n case \"uint176[]\":\n case \"uint184[]\":\n case \"uint192[]\":\n case \"uint200[]\":\n case \"uint208[]\":\n case \"uint216[]\":\n case \"uint224[]\":\n case \"uint232[]\":\n case \"uint240[]\":\n case \"uint248[]\":\n case \"uint256[]\":\n case \"int8[]\":\n case \"int16[]\":\n case \"int24[]\":\n case \"int32[]\":\n case \"int40[]\":\n case \"int48[]\":\n case \"int56[]\":\n case \"int64[]\":\n case \"int72[]\":\n case \"int80[]\":\n case \"int88[]\":\n case \"int96[]\":\n case \"int104[]\":\n case \"int112[]\":\n case \"int120[]\":\n case \"int128[]\":\n case \"int136[]\":\n case \"int144[]\":\n case \"int152[]\":\n case \"int160[]\":\n case \"int168[]\":\n case \"int176[]\":\n case \"int184[]\":\n case \"int192[]\":\n case \"int200[]\":\n case \"int208[]\":\n case \"int216[]\":\n case \"int224[]\":\n case \"int232[]\":\n case \"int240[]\":\n case \"int248[]\":\n case \"int256[]\":\n case \"bytes1[]\":\n case \"bytes2[]\":\n case \"bytes3[]\":\n case \"bytes4[]\":\n case \"bytes5[]\":\n case \"bytes6[]\":\n case \"bytes7[]\":\n case \"bytes8[]\":\n case \"bytes9[]\":\n case \"bytes10[]\":\n case \"bytes11[]\":\n case \"bytes12[]\":\n case \"bytes13[]\":\n case \"bytes14[]\":\n case \"bytes15[]\":\n case \"bytes16[]\":\n case \"bytes17[]\":\n case \"bytes18[]\":\n case \"bytes19[]\":\n case \"bytes20[]\":\n case \"bytes21[]\":\n case \"bytes22[]\":\n case \"bytes23[]\":\n case \"bytes24[]\":\n case \"bytes25[]\":\n case \"bytes26[]\":\n case \"bytes27[]\":\n case \"bytes28[]\":\n case \"bytes29[]\":\n case \"bytes30[]\":\n case \"bytes31[]\":\n case \"bytes32[]\":\n case \"bool[]\":\n case \"address[]\": {\n const staticAbiType = arrayToStaticAbiType(abiType);\n const itemByteLength = staticAbiTypeToByteLength[staticAbiType];\n if (dataSize % itemByteLength !== 0) {\n throw new InvalidHexLengthForArrayFieldError(staticAbiType, data);\n }\n const items = new Array(dataSize / itemByteLength).fill(undefined).map((_, i) => {\n const itemData = sliceHex(data, i * itemByteLength, (i + 1) * itemByteLength);\n return decodeStaticField(staticAbiType, itemData);\n });\n return items as TPrimitiveType;\n }\n }\n\n return assertExhaustive(abiType, `Unsupported dynamic ABI type: ${abiType}`);\n}\n","import { Hex, getAddress, hexToBigInt, hexToBool } from \"viem\";\nimport { assertExhaustive } from \"@latticexyz/common/utils\";\nimport {\n StaticAbiType,\n StaticAbiTypeToPrimitiveType,\n staticAbiTypeToByteLength,\n staticAbiTypeToDefaultValue,\n} from \"@latticexyz/schema-type/internal\";\nimport { InvalidHexLengthError, InvalidHexLengthForStaticFieldError } from \"./errors\";\n\nexport function decodeStaticField<\n TAbiType extends StaticAbiType,\n TPrimitiveType extends StaticAbiTypeToPrimitiveType<TAbiType>,\n>(abiType: TAbiType, data: Hex): TPrimitiveType {\n if (data.length > 3 && data.length % 2 !== 0) {\n throw new InvalidHexLengthError(data);\n }\n\n const dataSize = (data.length - 2) / 2;\n if (dataSize !== staticAbiTypeToByteLength[abiType]) {\n throw new InvalidHexLengthForStaticFieldError(abiType, data);\n }\n\n switch (abiType) {\n case \"uint8\":\n case \"uint16\":\n case \"uint24\":\n case \"uint32\":\n case \"uint40\":\n case \"uint48\":\n case \"uint56\":\n case \"uint64\":\n case \"uint72\":\n case \"uint80\":\n case \"uint88\":\n case \"uint96\":\n case \"uint104\":\n case \"uint112\":\n case \"uint120\":\n case \"uint128\":\n case \"uint136\":\n case \"uint144\":\n case \"uint152\":\n case \"uint160\":\n case \"uint168\":\n case \"uint176\":\n case \"uint184\":\n case \"uint192\":\n case \"uint200\":\n case \"uint208\":\n case \"uint216\":\n case \"uint224\":\n case \"uint232\":\n case \"uint240\":\n case \"uint248\":\n case \"uint256\":\n case \"int8\":\n case \"int16\":\n case \"int24\":\n case \"int32\":\n case \"int40\":\n case \"int48\":\n case \"int56\":\n case \"int64\":\n case \"int72\":\n case \"int80\":\n case \"int88\":\n case \"int96\":\n case \"int104\":\n case \"int112\":\n case \"int120\":\n case \"int128\":\n case \"int136\":\n case \"int144\":\n case \"int152\":\n case \"int160\":\n case \"int168\":\n case \"int176\":\n case \"int184\":\n case \"int192\":\n case \"int200\":\n case \"int208\":\n case \"int216\":\n case \"int224\":\n case \"int232\":\n case \"int240\":\n case \"int248\":\n case \"int256\": {\n const value = hexToBigInt(data, { signed: abiType.startsWith(\"int\") });\n const defaultValueType = typeof staticAbiTypeToDefaultValue[abiType];\n if (defaultValueType === \"number\") {\n return Number(value) as TPrimitiveType;\n }\n if (defaultValueType === \"bigint\") {\n return value as TPrimitiveType;\n }\n throw new Error(`Unexpected default value type (${defaultValueType}) for ABI type (${abiType})`);\n }\n\n case \"bytes1\":\n case \"bytes2\":\n case \"bytes3\":\n case \"bytes4\":\n case \"bytes5\":\n case \"bytes6\":\n case \"bytes7\":\n case \"bytes8\":\n case \"bytes9\":\n case \"bytes10\":\n case \"bytes11\":\n case \"bytes12\":\n case \"bytes13\":\n case \"bytes14\":\n case \"bytes15\":\n case \"bytes16\":\n case \"bytes17\":\n case \"bytes18\":\n case \"bytes19\":\n case \"bytes20\":\n case \"bytes21\":\n case \"bytes22\":\n case \"bytes23\":\n case \"bytes24\":\n case \"bytes25\":\n case \"bytes26\":\n case \"bytes27\":\n case \"bytes28\":\n case \"bytes29\":\n case \"bytes30\":\n case \"bytes31\":\n case \"bytes32\": {\n return data as TPrimitiveType;\n }\n\n case \"bool\": {\n return hexToBool(data) as TPrimitiveType;\n }\n\n case \"address\": {\n return getAddress(data) as TPrimitiveType;\n }\n }\n\n return assertExhaustive(abiType, `Unsupported static ABI type: ${abiType}`);\n}\n","import { Hex } from \"viem\";\nimport { MUDError } from \"@latticexyz/common/errors\";\nimport { StaticAbiType, staticAbiTypeToByteLength } from \"@latticexyz/schema-type/internal\";\n\nexport class InvalidHexLengthError extends MUDError {\n override name = \"InvalidHexValueError\";\n constructor(value: Hex) {\n super(`Hex value \"${value}\" is an odd length (${value.length - 2}). It must be an even length.`);\n }\n}\n\nexport class InvalidHexLengthForSchemaError extends MUDError {\n override name = \"InvalidHexLengthForSchemaError\";\n constructor(value: Hex) {\n super(`Hex value \"${value}\" has length of ${value.length - 2}, but expected length of 64 for a schema.`);\n }\n}\n\nexport class InvalidHexLengthForEncodedLengthsError extends MUDError {\n override name = \"InvalidHexLengthForEncodedLengthsError\";\n constructor(value: Hex) {\n super(`Hex value \"${value}\" has length of ${value.length - 2}, but expected length of 64 for encoded lengths.`);\n }\n}\n\nexport class InvalidHexLengthForStaticFieldError extends MUDError {\n override name = \"InvalidHexLengthForStaticFieldError\";\n constructor(abiType: StaticAbiType, value: Hex) {\n super(\n `Hex value \"${value}\" has length of ${value.length - 2}, but expected length of ${\n staticAbiTypeToByteLength[abiType] * 2\n } for ${abiType} type.`,\n );\n }\n}\n\nexport class InvalidHexLengthForArrayFieldError extends MUDError {\n override name = \"InvalidHexLengthForArrayFieldError\";\n constructor(abiType: StaticAbiType, value: Hex) {\n super(\n `Hex value \"${value}\" has length of ${value.length - 2}, but expected a multiple of ${\n staticAbiTypeToByteLength[abiType] * 2\n } for ${abiType}[] type.`,\n );\n }\n}\n\nexport class SchemaStaticLengthMismatchError extends MUDError {\n override name = \"SchemaStaticLengthMismatchError\";\n constructor(schemaData: Hex, definedLength: number, summedLength: number) {\n super(\n `Schema \"${schemaData}\" static data length (${definedLength}) did not match the summed length of all static fields (${summedLength}). ` +\n `Is \\`staticAbiTypeToByteLength\\` up to date with Solidity schema types?`,\n );\n }\n}\n\nexport class EncodedLengthsLengthMismatchError extends MUDError {\n override name = \"EncodedLengthsLengthMismatchError\";\n constructor(encodedLengthsData: Hex, definedLength: bigint, summedLength: bigint) {\n super(\n `EncodedLengths \"${encodedLengthsData}\" total bytes length (${definedLength}) did not match the summed length of all field byte lengths (${summedLength}).`,\n );\n }\n}\n","import { Hex } from \"viem\";\nimport { SchemaAbiType, SchemaAbiTypeToPrimitiveType, isDynamicAbiType } from \"@latticexyz/schema-type/internal\";\nimport { decodeDynamicField } from \"./decodeDynamicField\";\nimport { decodeStaticField } from \"./decodeStaticField\";\n\nexport function decodeField<\n TAbiType extends SchemaAbiType,\n TPrimitiveType extends SchemaAbiTypeToPrimitiveType<TAbiType>,\n>(abiType: TAbiType, data: Hex): TPrimitiveType {\n return (\n isDynamicAbiType(abiType) ? decodeDynamicField(abiType, data) : decodeStaticField(abiType, data)\n ) as TPrimitiveType;\n}\n","import { Hex, decodeAbiParameters } from \"viem\";\nimport { StaticPrimitiveType } from \"@latticexyz/schema-type/internal\";\nimport { Schema } from \"./common\";\n\n// key tuples are encoded in the same way as abi.encode, so we can decode them with viem\n\n/** @deprecated use `decodeKey` instead */\nexport function decodeKeyTuple(keySchema: Schema, keyTuple: readonly Hex[]): StaticPrimitiveType[] {\n if (keySchema.staticFields.length !== keyTuple.length) {\n throw new Error(\n `key tuple length ${keyTuple.length} does not match key schema length ${keySchema.staticFields.length}`,\n );\n }\n return keyTuple.map(\n (key, index) => decodeAbiParameters([{ type: keySchema.staticFields[index] }], key)[0] as StaticPrimitiveType,\n );\n}\n","import { Hex } from \"viem\";\nimport { SchemaToPrimitives, KeySchema } from \"./common\";\nimport { decodeKeyTuple } from \"./decodeKeyTuple\";\n\nexport function decodeKey<TSchema extends KeySchema>(\n keySchema: TSchema,\n data: readonly Hex[],\n): SchemaToPrimitives<TSchema> {\n // TODO: refactor and move all decodeKeyTuple logic into this method so we can delete decodeKeyTuple\n const keyValues = decodeKeyTuple({ staticFields: Object.values(keySchema), dynamicFields: [] }, data);\n\n return Object.fromEntries(\n Object.keys(keySchema).map((name, i) => [name, keyValues[i]]),\n ) as SchemaToPrimitives<TSchema>;\n}\n","import {\n StaticPrimitiveType,\n DynamicPrimitiveType,\n staticAbiTypeToByteLength,\n dynamicAbiTypeToDefaultValue,\n} from \"@latticexyz/schema-type/internal\";\nimport { Hex } from \"viem\";\nimport { Schema } from \"./common\";\nimport { decodeDynamicField } from \"./decodeDynamicField\";\nimport { decodeStaticField } from \"./decodeStaticField\";\nimport { hexToEncodedLengths } from \"./hexToEncodedLengths\";\nimport { staticDataLength } from \"./staticDataLength\";\nimport { readHex } from \"@latticexyz/common\";\n\n/** @deprecated use `decodeValue` instead */\nexport function decodeRecord(valueSchema: Schema, data: Hex): readonly (StaticPrimitiveType | DynamicPrimitiveType)[] {\n const values: (StaticPrimitiveType | DynamicPrimitiveType)[] = [];\n\n let bytesOffset = 0;\n valueSchema.staticFields.forEach((fieldType) => {\n const fieldByteLength = staticAbiTypeToByteLength[fieldType];\n const value = decodeStaticField(fieldType, readHex(data, bytesOffset, bytesOffset + fieldByteLength));\n bytesOffset += fieldByteLength;\n values.push(value);\n });\n\n // Warn user if static data length doesn't match the value schema, because data corruption might be possible.\n const schemaStaticDataLength = staticDataLength(valueSchema.staticFields);\n const actualStaticDataLength = bytesOffset;\n if (actualStaticDataLength !== schemaStaticDataLength) {\n console.warn(\n \"Decoded static data length does not match value schema's expected static data length. Data may get corrupted. Is `getStaticByteLength` outdated?\",\n {\n expectedLength: schemaStaticDataLength,\n actualLength: actualStaticDataLength,\n bytesOffset,\n },\n );\n }\n\n if (valueSchema.dynamicFields.length > 0) {\n const dataLayout = hexToEncodedLengths(readHex(data, bytesOffset, bytesOffset + 32));\n bytesOffset += 32;\n\n valueSchema.dynamicFields.forEach((fieldType, i) => {\n const dataLength = dataLayout.fieldByteLengths[i];\n if (dataLength > 0) {\n const value = decodeDynamicField(fieldType, readHex(data, bytesOffset, bytesOffset + dataLength));\n bytesOffset += dataLength;\n values.push(value);\n } else {\n values.push(dynamicAbiTypeToDefaultValue[fieldType]);\n }\n });\n\n // Warn user if dynamic data length doesn't match the dynamic data length, because data corruption might be possible.\n const actualDynamicDataLength = bytesOffset - 32 - actualStaticDataLength;\n // TODO: refactor this so we don't break for bytes offsets >UINT40\n if (BigInt(actualDynamicDataLength) !== dataLayout.totalByteLength) {\n console.warn(\n \"Decoded dynamic data length does not match data layout's expected data length. Data may get corrupted. Did the data layout change?\",\n {\n expectedLength: dataLayout.totalByteLength,\n actualLength: actualDynamicDataLength,\n bytesOffset,\n },\n );\n }\n }\n\n return values;\n}\n","import { Hex } from \"viem\";\nimport { decodeStaticField } from \"./decodeStaticField\";\nimport { decodeDynamicField } from \"./decodeDynamicField\";\nimport { InvalidHexLengthForEncodedLengthsError, EncodedLengthsLengthMismatchError } from \"./errors\";\nimport { readHex } from \"@latticexyz/common\";\n\n// Keep this logic in sync with EncodedLengths.sol\n\n// - Last 7 bytes (uint56) are used for the total byte length of the dynamic data\n// - The next 5 byte (uint40) sections are used for the byte length of each field, indexed from right to left\n\n// We use byte lengths rather than item counts so that, on chain, we can slice without having to get the value schema first (and thus the field lengths of each dynamic type)\n\nexport function hexToEncodedLengths(data: Hex): {\n totalByteLength: bigint;\n fieldByteLengths: readonly number[];\n} {\n if (data.length !== 66) {\n throw new InvalidHexLengthForEncodedLengthsError(data);\n }\n\n const totalByteLength = decodeStaticField(\"uint56\", readHex(data, 32 - 7, 32));\n // TODO: use value schema to make sure we only parse as many as we need (rather than zeroes at the end)?\n const reversedFieldByteLengths = decodeDynamicField(\"uint40[]\", readHex(data, 0, 32 - 7));\n // Reverse the lengths\n const fieldByteLengths = Object.freeze([...reversedFieldByteLengths].reverse());\n\n const summedLength = BigInt(fieldByteLengths.reduce((total, length) => total + length, 0));\n if (summedLength !== totalByteLength) {\n throw new EncodedLengthsLengthMismatchError(data, totalByteLength, summedLength);\n }\n\n return { totalByteLength, fieldByteLengths };\n}\n","import { StaticAbiType, staticAbiTypeToByteLength } from \"@latticexyz/schema-type/internal\";\n\nexport function staticDataLength(staticFields: readonly StaticAbiType[]): number {\n return staticFields.reduce((length, fieldType) => length + staticAbiTypeToByteLength[fieldType], 0);\n}\n","import { isStaticAbiType, isDynamicAbiType } from \"@latticexyz/schema-type/internal\";\nimport { Hex } from \"viem\";\nimport { SchemaToPrimitives, ValueSchema } from \"./common\";\nimport { decodeRecord } from \"./decodeRecord\";\n\nexport function decodeValue<TSchema extends ValueSchema>(valueSchema: TSchema, data: Hex): SchemaToPrimitives<TSchema> {\n const staticFields = Object.values(valueSchema).filter(isStaticAbiType);\n const dynamicFields = Object.values(valueSchema).filter(isDynamicAbiType);\n\n // TODO: refactor and move all decodeRecord logic into this method so we can delete decodeRecord\n const valueTuple = decodeRecord({ staticFields, dynamicFields }, data);\n\n return Object.fromEntries(\n Object.keys(valueSchema).map((name, i) => [name, valueTuple[i]]),\n ) as SchemaToPrimitives<TSchema>;\n}\n","import { concatHex, padHex } from \"viem\";\nimport { isStaticAbiType } from \"@latticexyz/schema-type/internal\";\nimport { SchemaToPrimitives, ValueArgs, ValueSchema } from \"./common\";\nimport { decodeValue } from \"./decodeValue\";\nimport { staticDataLength } from \"./staticDataLength\";\nimport { readHex } from \"@latticexyz/common\";\n\nexport function decodeValueArgs<TSchema extends ValueSchema>(\n valueSchema: TSchema,\n { staticData, encodedLengths, dynamicData }: ValueArgs,\n): SchemaToPrimitives<TSchema> {\n return decodeValue(\n valueSchema,\n concatHex([\n readHex(staticData, 0, staticDataLength(Object.values(valueSchema).filter(isStaticAbiType))),\n padHex(encodedLengths, { size: 32 }),\n dynamicData,\n ]),\n );\n}\n","import { SchemaAbiType, arrayToStaticAbiType, isArrayAbiType } from \"@latticexyz/schema-type/internal\";\nimport { AbiParameterToPrimitiveType } from \"abitype\";\nimport { Hex, encodePacked } from \"viem\";\n\nexport function encodeField<TSchemaAbiType extends SchemaAbiType>(\n fieldType: TSchemaAbiType,\n value: AbiParameterToPrimitiveType<{ type: TSchemaAbiType }>,\n): Hex {\n if (isArrayAbiType(fieldType) && Array.isArray(value)) {\n const staticFieldType = arrayToStaticAbiType(fieldType);\n // TODO: we can remove conditional once this is fixed: https://github.com/wagmi-dev/viem/pull/1147\n return value.length === 0\n ? \"0x\"\n : encodePacked(\n value.map(() => staticFieldType),\n value,\n );\n }\n return encodePacked([fieldType], [value as never]);\n}\n","import { isStaticAbiType } from \"@latticexyz/schema-type/internal\";\nimport { Hex } from \"viem\";\nimport { SchemaToPrimitives, KeySchema } from \"./common\";\nimport { encodeKeyTuple } from \"./encodeKeyTuple\";\n\nexport function encodeKey<TSchema extends KeySchema>(\n keySchema: TSchema,\n key: SchemaToPrimitives<TSchema>,\n): readonly Hex[] {\n const staticFields = Object.values(keySchema).filter(isStaticAbiType);\n // TODO: refactor and move all encodeKeyTuple logic into this method so we can delete encodeKeyTuple\n return encodeKeyTuple({ staticFields, dynamicFields: [] }, Object.values(key));\n}\n","import { StaticPrimitiveType } from \"@latticexyz/schema-type/internal\";\nimport { Hex, encodeAbiParameters } from \"viem\";\nimport { Schema } from \"./common\";\n\n/** @deprecated use `encodeKey` instead */\nexport function encodeKeyTuple(keySchema: Schema, keyTuple: StaticPrimitiveType[]): Hex[] {\n return keyTuple.map((key, index) => encodeAbiParameters([{ type: keySchema.staticFields[index] }], [key]));\n}\n","import { StaticPrimitiveType, DynamicPrimitiveType } from \"@latticexyz/schema-type/internal\";\nimport { Hex } from \"viem\";\nimport { encodeField } from \"./encodeField\";\nimport { Schema } from \"./common\";\n\n/** @deprecated use `encodeValue` instead */\nexport function encodeRecord(\n valueSchema: Schema,\n values: readonly (StaticPrimitiveType | DynamicPrimitiveType)[],\n): Hex {\n const staticValues = values.slice(0, valueSchema.staticFields.length) as readonly StaticPrimitiveType[];\n const dynamicValues = values.slice(valueSchema.staticFields.length) as readonly DynamicPrimitiveType[];\n\n const staticData = staticValues\n .map((value, i) => encodeField(valueSchema.staticFields[i], value).replace(/^0x/, \"\"))\n .join(\"\");\n\n if (valueSchema.dynamicFields.length === 0) return `0x${staticData}`;\n\n const dynamicDataItems = dynamicValues.map((value, i) =>\n encodeField(valueSchema.dynamicFields[i], value).replace(/^0x/, \"\"),\n );\n\n const dynamicFieldByteLengths = dynamicDataItems.map((value) => value.length / 2).reverse();\n const dynamicTotalByteLength = dynamicFieldByteLengths.reduce((total, length) => total + BigInt(length), 0n);\n\n const dynamicData = dynamicDataItems.join(\"\");\n\n const encodedLengths = `${dynamicFieldByteLengths\n .map((length) => encodeField(\"uint40\", length).replace(/^0x/, \"\"))\n .join(\"\")}${encodeField(\"uint56\", dynamicTotalByteLength).replace(/^0x/, \"\")}`.padStart(64, \"0\");\n\n return `0x${staticData}${encodedLengths}${dynamicData}`;\n}\n","import { Hex, concatHex } from \"viem\";\nimport { SchemaToPrimitives, ValueSchema } from \"./common\";\nimport { encodeValueArgs } from \"./encodeValueArgs\";\n\nexport function encodeValue<TSchema extends ValueSchema>(\n valueSchema: TSchema,\n value: SchemaToPrimitives<TSchema>,\n): Hex {\n const { staticData, encodedLengths, dynamicData } = encodeValueArgs(valueSchema, value);\n return concatHex([staticData, encodedLengths, dynamicData]);\n}\n","import {\n StaticPrimitiveType,\n DynamicPrimitiveType,\n isStaticAbiType,\n isDynamicAbiType,\n StaticAbiType,\n DynamicAbiType,\n} from \"@latticexyz/schema-type/internal\";\nimport { concatHex } from \"viem\";\nimport { encodeField } from \"./encodeField\";\nimport { SchemaToPrimitives, ValueArgs, ValueSchema } from \"./common\";\nimport { encodeLengths } from \"./encodeLengths\";\n\nexport function encodeValueArgs<TSchema extends ValueSchema>(\n valueSchema: TSchema,\n value: SchemaToPrimitives<TSchema>,\n): ValueArgs {\n const valueSchemaEntries = Object.entries(valueSchema);\n const staticFields = valueSchemaEntries.filter(([, type]) => isStaticAbiType(type)) as [string, StaticAbiType][];\n const dynamicFields = valueSchemaEntries.filter(([, type]) => isDynamicAbiType(type)) as [string, DynamicAbiType][];\n // TODO: validate <=5 dynamic fields\n // TODO: validate <=28 total fields\n\n const encodedStaticValues = staticFields.map(([name, type]) => encodeField(type, value[name] as StaticPrimitiveType));\n const encodedDynamicValues = dynamicFields.map(([name, type]) =>\n encodeField(type, value[name] as DynamicPrimitiveType),\n );\n\n const encodedLengths = encodeLengths(encodedDynamicValues);\n\n return {\n staticData: concatHex(encodedStaticValues),\n encodedLengths,\n dynamicData: concatHex(encodedDynamicValues),\n };\n}\n","import { Hex, concatHex, padHex, size } from \"viem\";\nimport { encodeField } from \"./encodeField\";\n\nexport function encodeLengths(values: Hex[]): Hex {\n const byteLengths = values.map(size).reverse();\n const totalByteLength = byteLengths.reduce((total, length) => total + BigInt(length), 0n);\n\n return padHex(\n concatHex([...byteLengths.map((length) => encodeField(\"uint40\", length)), encodeField(\"uint56\", totalByteLength)]),\n { size: 32, dir: \"left\" },\n );\n}\n","import { Hex } from \"viem\";\nimport { FieldLayout } from \"./common\";\n\n/** @deprecated use `valueSchemaToFieldLayoutHex` instead */\nexport function fieldLayoutToHex(fieldLayout: FieldLayout): Hex {\n const staticDataLength = fieldLayout.staticFieldLengths.reduce((totalLength, length) => totalLength + length, 0);\n return `0x${[\n staticDataLength.toString(16).padStart(4, \"0\"),\n fieldLayout.staticFieldLengths.length.toString(16).padStart(2, \"0\"),\n fieldLayout.numDynamicFields.toString(16).padStart(2, \"0\"),\n ...fieldLayout.staticFieldLengths.map((schemaType) => schemaType.toString(16).padStart(2, \"0\")),\n ]\n .join(\"\")\n .padEnd(64, \"0\")}`;\n}\n","import {\n StaticAbiType,\n DynamicAbiType,\n schemaAbiTypes,\n staticAbiTypeToByteLength,\n} from \"@latticexyz/schema-type/internal\";\nimport { Hex, hexToNumber, sliceHex } from \"viem\";\nimport { Schema } from \"./common\";\nimport { InvalidHexLengthForSchemaError, SchemaStaticLengthMismatchError } from \"./errors\";\n\nexport function hexToSchema(data: Hex): Schema {\n if (data.length !== 66) {\n throw new InvalidHexLengthForSchemaError(data);\n }\n\n const staticDataLength = hexToNumber(sliceHex(data, 0, 2));\n const numStaticFields = hexToNumber(sliceHex(data, 2, 3));\n const numDynamicFields = hexToNumber(sliceHex(data, 3, 4));\n const staticFields: StaticAbiType[] = [];\n const dynamicFields: DynamicAbiType[] = [];\n\n for (let i = 4; i < 4 + numStaticFields; i++) {\n const schemaTypeIndex = hexToNumber(sliceHex(data, i, i + 1));\n staticFields.push(schemaAbiTypes[schemaTypeIndex] as StaticAbiType);\n }\n for (let i = 4 + numStaticFields; i < 4 + numStaticFields + numDynamicFields; i++) {\n const schemaTypeIndex = hexToNumber(sliceHex(data, i, i + 1));\n dynamicFields.push(schemaAbiTypes[schemaTypeIndex] as DynamicAbiType);\n }\n\n // validate static data length\n const actualStaticDataLength = staticFields.reduce((acc, fieldType) => acc + staticAbiTypeToByteLength[fieldType], 0);\n if (actualStaticDataLength !== staticDataLength) {\n console.warn(\n `Schema \"${data}\" static data length (${staticDataLength}) did not match the summed length of all static fields (${actualStaticDataLength}). ` +\n `Is \\`staticAbiTypeToByteLength\\` up to date with Solidity schema types?`,\n );\n throw new SchemaStaticLengthMismatchError(data, staticDataLength, actualStaticDataLength);\n }\n\n return { staticFields, dynamicFields };\n}\n","import { Hex, sliceHex } from \"viem\";\nimport { TableSchema } from \"./common\";\nimport { hexToSchema } from \"./hexToSchema\";\n\nexport function hexToTableSchema(data: Hex): TableSchema {\n const valueSchema = hexToSchema(sliceHex(data, 0, 32));\n const keySchema = hexToSchema(sliceHex(data, 32, 64));\n return {\n keySchema,\n valueSchema,\n };\n}\n","import { isStaticAbiType } from \"@latticexyz/schema-type/internal\";\nimport { Hex } from \"viem\";\nimport { KeySchema } from \"./common\";\nimport { schemaToHex } from \"./schemaToHex\";\n\nexport function keySchemaToHex(keySchema: KeySchema): Hex {\n return schemaToHex({ staticFields: Object.values(keySchema).filter(isStaticAbiType), dynamicFields: [] });\n}\n","import { schemaAbiTypes } from \"@latticexyz/schema-type/internal\";\nimport { Hex } from \"viem\";\nimport { Schema } from \"./common\";\nimport { staticDataLength } from \"./staticDataLength\";\n\n/** @deprecated use `keySchemaToHex` or `valueSchemaToHex` instead */\nexport function schemaToHex(schema: Schema): Hex {\n const staticSchemaTypes = schema.staticFields.map((abiType) => schemaAbiTypes.indexOf(abiType));\n const dynamicSchemaTypes = schema.dynamicFields.map((abiType) => schemaAbiTypes.indexOf(abiType));\n return `0x${[\n staticDataLength(schema.staticFields).toString(16).padStart(4, \"0\"),\n schema.staticFields.length.toString(16).padStart(2, \"0\"),\n schema.dynamicFields.length.toString(16).padStart(2, \"0\"),\n ...staticSchemaTypes.map((schemaType) => schemaType.toString(16).padStart(2, \"0\")),\n ...dynamicSchemaTypes.map((schemaType) => schemaType.toString(16).padStart(2, \"0\")),\n ]\n .join(\"\")\n .padEnd(64, \"0\")}`;\n}\n","import { SchemaAbiType } from \"@latticexyz/schema-type/internal\";\nimport { Schema } from \"./common\";\n\nexport function schemaIndexToAbiType(schema: Schema, schemaIndex: number): SchemaAbiType {\n if (schemaIndex < schema.staticFields.length) {\n return schema.staticFields[schemaIndex];\n }\n return schema.dynamicFields[schemaIndex - schema.staticFields.length];\n}\n","import { Hex } from \"viem\";\nimport { ValueSchema } from \"./common\";\nimport { isDynamicAbiType, isStaticAbiType, staticAbiTypeToByteLength } from \"@latticexyz/schema-type/internal\";\n\n// TODO: add tests once we have corresponding tests for FieldLayout.sol (bytes32 -> FieldLayout and vice versa)\nexport function valueSchemaToFieldLayoutHex(valueSchema: ValueSchema): Hex {\n const staticFields = Object.values(valueSchema).filter(isStaticAbiType);\n const dynamicFields = Object.values(valueSchema).filter(isDynamicAbiType);\n\n const staticFieldLengths = staticFields.map((fieldType) => staticAbiTypeToByteLength[fieldType]);\n const staticDataLength = staticFieldLengths.reduce((dataLength, fieldLength) => dataLength + fieldLength, 0);\n\n return `0x${[\n staticDataLength.toString(16).padStart(4, \"0\"),\n staticFields.length.toString(16).padStart(2, \"0\"),\n dynamicFields.length.toString(16).padStart(2, \"0\"),\n ...staticFieldLengths.map((fieldLength) => fieldLength.toString(16).padStart(2, \"0\")),\n ]\n .join(\"\")\n .padEnd(64, \"0\")}`;\n}\n","import { isDynamicAbiType, isStaticAbiType } from \"@latticexyz/schema-type/internal\";\nimport { Hex } from \"viem\";\nimport { ValueSchema } from \"./common\";\nimport { schemaToHex } from \"./schemaToHex\";\n\nexport function valueSchemaToHex(valueSchema: ValueSchema): Hex {\n return schemaToHex({\n staticFields: Object.values(valueSchema).filter(isStaticAbiType),\n dynamicFields: Object.values(valueSchema).filter(isDynamicAbiType),\n });\n}\n","import { Table } from \"@latticexyz/config\";\nimport { getKeySchema } from \"./getKeySchema\";\nimport { getSchemaPrimitives } from \"./getSchemaPrimitives\";\n\ntype PartialTable = Pick<Table, \"schema\" | \"key\">;\n\nexport function getKey<table extends PartialTable>(\n table: table,\n record: getSchemaPrimitives<table[\"schema\"]>,\n): getSchemaPrimitives<getKeySchema<table>> {\n return Object.fromEntries(table.key.map((fieldName) => [fieldName, record[fieldName]])) as never;\n}\n","import { Table } from \"@latticexyz/config\";\nimport { getValueSchema } from \"./getValueSchema\";\nimport { getSchemaPrimitives } from \"./getSchemaPrimitives\";\n\ntype PartialTable = Pick<Table, \"schema\" | \"key\">;\n\nexport function getValue<table extends PartialTable>(\n table: table,\n record: getSchemaPrimitives<table[\"schema\"]>,\n): getSchemaPrimitives<getValueSchema<table>> {\n return Object.fromEntries(\n Object.keys(table.schema)\n .filter((fieldName) => !table.key.includes(fieldName))\n .map((fieldName) => [fieldName, record[fieldName]]),\n ) as never;\n}\n","import { isDynamicAbiType, isStaticAbiType } from \"@latticexyz/schema-type/internal\";\nimport { ValueSchema } from \"./common\";\n\nexport function getFieldIndex<valueSchema extends ValueSchema>(\n valueSchema: valueSchema,\n fieldName: keyof valueSchema & string,\n): number {\n const fieldNames = [\n ...Object.entries(valueSchema)\n .filter(([, fieldType]) => isStaticAbiType(fieldType))\n .map(([fieldName]) => fieldName),\n ...Object.entries(valueSchema)\n .filter(([, fieldType]) => isDynamicAbiType(fieldType))\n .map(([fieldName]) => fieldName),\n ];\n\n return fieldNames.indexOf(fieldName);\n}\n","import { StaticAbiType, Table } from \"@latticexyz/config\";\n\ntype PartialTable = Pick<Table, \"schema\" | \"key\">;\n\nexport type ResolvedKeySchema = {\n readonly [fieldName: string]: {\n /** the Solidity primitive ABI type */\n readonly type: StaticAbiType;\n /** the user defined type or Solidity primitive ABI type */\n readonly internalType: string;\n };\n};\n\nexport type getKeySchema<table extends PartialTable> = PartialTable extends table\n ? ResolvedKeySchema\n : {\n readonly [fieldName in Extract<keyof table[\"schema\"], table[\"key\"][number]>]: table[\"schema\"][fieldName] & {\n readonly type: StaticAbiType;\n };\n };\n\nexport function getKeySchema<table extends PartialTable>(table: table): getKeySchema<table> {\n return Object.fromEntries(table.key.map((fieldName) => [fieldName, table.schema[fieldName]])) as getKeySchema<table>;\n}\n","import { Hex, encodeAbiParameters } from \"viem\";\nimport { getSchemaPrimitives } from \"./getSchemaPrimitives\";\nimport { getKeySchema } from \"./getKeySchema\";\nimport { Table } from \"@latticexyz/config\";\n\ntype PartialTable = Pick<Table, \"schema\" | \"key\">;\n\nexport type getKeyTuple<table extends PartialTable, key extends readonly unknown[] = table[\"key\"]> = {\n [i in keyof key]: Hex;\n} & unknown;\n\nexport function getKeyTuple<const table extends PartialTable>(\n table: table,\n key: getSchemaPrimitives<getKeySchema<table>>,\n): getKeyTuple<table> {\n return table.key.map((fieldName) =>\n encodeAbiParameters([table.schema[fieldName]], [key[fieldName as never]]),\n ) as never;\n}\n","import { Schema, Table } from \"@latticexyz/config\";\n\ntype PartialTable = Pick<Table, \"schema\" | \"key\">;\n\nexport type getValueSchema<table extends PartialTable> = PartialTable extends table\n ? Schema\n : {\n readonly [fieldName in Exclude<keyof table[\"schema\"], table[\"key\"][number]>]: table[\"schema\"][fieldName];\n };\n\nexport function getValueSchema<table extends PartialTable>(table: table): getValueSchema<table> {\n return Object.fromEntries(\n Object.entries(table.schema).filter(([fieldName]) => !table.key.includes(fieldName)),\n ) as getValueSchema<table>;\n}\n","import { Schema } from \"@latticexyz/config\";\nimport { mapObject } from \"@latticexyz/common/utils\";\n\nexport type getSchemaTypes<schema extends Schema> = {\n readonly [fieldName in keyof schema]: schema[fieldName][\"type\"];\n};\n\nexport function getSchemaTypes<schema extends Schema>(schema: schema): getSchemaTypes<schema> {\n return mapObject(schema, (value) => value.type);\n}\n"],"mappings":"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","names":["assertExhaustive","staticAbiTypeToByteLength","staticAbiTypeToByteLength","staticAbiTypeToByteLength","staticAbiTypeToByteLength","assertExhaustive","isDynamicAbiType","isDynamicAbiType","staticAbiTypeToByteLength","staticAbiTypeToByteLength","readHex","staticAbiTypeToByteLength","isDynamicAbiType","isDynamicAbiType","isStaticAbiType","readHex","isStaticAbiType","arrayToStaticAbiType","isStaticAbiType","isStaticAbiType","concatHex","isStaticAbiType","isDynamicAbiType","concatHex","concatHex","padHex","padHex","concatHex","isStaticAbiType","isDynamicAbiType","concatHex","concatHex","staticDataLength","staticAbiTypeToByteLength","sliceHex","staticDataLength","sliceHex","staticAbiTypeToByteLength","sliceHex","sliceHex","isStaticAbiType","schemaAbiTypes","schemaAbiTypes","isStaticAbiType","isDynamicAbiType","isStaticAbiType","staticAbiTypeToByteLength","staticDataLength","isDynamicAbiType","isStaticAbiType","isStaticAbiType","isDynamicAbiType","isDynamicAbiType","isStaticAbiType","fieldName","encodeAbiParameters"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@latticexyz/protocol-parser",
3
- "version": "2.2.18-ebe1aea8d4afb690ce1c7c2bcb42dc0f1faf6e77",
3
+ "version": "2.2.18",
4
4
  "description": "Parser utilities for the MUD protocol",
5
5
  "repository": {
6
6
  "type": "git",
@@ -28,13 +28,12 @@
28
28
  ],
29
29
  "dependencies": {
30
30
  "abitype": "1.0.6",
31
- "@latticexyz/common": "2.2.18-ebe1aea8d4afb690ce1c7c2bcb42dc0f1faf6e77",
32
- "@latticexyz/config": "2.2.18-ebe1aea8d4afb690ce1c7c2bcb42dc0f1faf6e77",
33
- "@latticexyz/schema-type": "2.2.18-ebe1aea8d4afb690ce1c7c2bcb42dc0f1faf6e77"
31
+ "@latticexyz/common": "2.2.18",
32
+ "@latticexyz/config": "2.2.18",
33
+ "@latticexyz/schema-type": "2.2.18"
34
34
  },
35
35
  "devDependencies": {
36
- "viem": "2.21.19",
37
- "vitest": "0.34.6"
36
+ "viem": "2.21.19"
38
37
  },
39
38
  "peerDependencies": {
40
39
  "viem": "2.x"
@@ -49,7 +48,7 @@
49
48
  "clean:js": "shx rm -rf dist",
50
49
  "dev": "tsup --watch",
51
50
  "lint": "eslint .",
52
- "test": "vitest typecheck --run && vitest --run",
51
+ "test": "vitest --run",
53
52
  "test:ci": "pnpm run test"
54
53
  }
55
54
  }