solidity-codecs 0.0.1-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/codecs/Bytes.d.ts +6 -0
- package/dist/codecs/Enum.d.ts +57 -0
- package/dist/codecs/Option.d.ts +6 -0
- package/dist/codecs/Result.d.ts +22 -0
- package/dist/codecs/Struct.d.ts +25 -0
- package/dist/codecs/Tuple.d.ts +25 -0
- package/dist/codecs/Vector.d.ts +14 -0
- package/dist/codecs/bool.d.ts +2 -0
- package/dist/codecs/bytes.d.ts +6 -0
- package/dist/codecs/call.d.ts +6 -0
- package/dist/codecs/compact.d.ts +2 -0
- package/dist/codecs/fixed-width-ints.d.ts +11 -0
- package/dist/codecs/fixed.d.ts +3 -0
- package/dist/codecs/index.d.ts +10 -0
- package/dist/codecs/int.d.ts +6 -0
- package/dist/codecs/str.d.ts +1 -0
- package/dist/codecs/struct.d.ts +6 -0
- package/dist/codecs/tuple.d.ts +6 -0
- package/dist/codecs/uint.d.ts +2 -0
- package/dist/codecs/vector.d.ts +6 -0
- package/dist/codecs/void.d.ts +2 -0
- package/dist/index.cjs +7 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +7 -0
- package/dist/scale-ts.cjs.development.js +427 -0
- package/dist/scale-ts.cjs.development.js.map +7 -0
- package/dist/scale-ts.cjs.production.min.js +318 -0
- package/dist/scale-ts.cjs.production.min.js.map +7 -0
- package/dist/scale-ts.es2017.js +403 -0
- package/dist/scale-ts.es2017.js.map +7 -0
- package/dist/scale-ts.es2019.mjs +348 -0
- package/dist/scale-ts.es2019.mjs.map +7 -0
- package/dist/solidity-codecs.cjs.development.js +404 -0
- package/dist/solidity-codecs.cjs.development.js.map +7 -0
- package/dist/solidity-codecs.cjs.production.min.js +2 -0
- package/dist/solidity-codecs.cjs.production.min.js.map +7 -0
- package/dist/solidity-codecs.js +384 -0
- package/dist/solidity-codecs.js.map +7 -0
- package/dist/solidity-codecs.mjs +384 -0
- package/dist/solidity-codecs.mjs.map +7 -0
- package/dist/test-utils.d.ts +5 -0
- package/dist/types.d.ts +21 -0
- package/dist/utils.d.ts +5 -0
- package/package.json +49 -0
@@ -0,0 +1,384 @@
|
|
1
|
+
var __defProp = Object.defineProperty;
|
2
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
3
|
+
var __publicField = (obj, key, value) => {
|
4
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
5
|
+
return value;
|
6
|
+
};
|
7
|
+
|
8
|
+
// src/utils.ts
|
9
|
+
var createCodec = (encoder, decoder) => {
|
10
|
+
const result = [encoder, decoder];
|
11
|
+
result.enc = encoder;
|
12
|
+
result.dec = decoder;
|
13
|
+
return result;
|
14
|
+
};
|
15
|
+
var enhanceEncoder = (encoder, mapper) => (value) => encoder(mapper(value));
|
16
|
+
var enhanceDecoder = (decoder, mapper) => (value) => mapper(decoder(value));
|
17
|
+
var enhanceCodec = ([encoder, decoder], toFrom, fromTo) => createCodec(enhanceEncoder(encoder, toFrom), enhanceDecoder(decoder, fromTo));
|
18
|
+
|
19
|
+
// src/internal/toInternalBytes.ts
|
20
|
+
var HEX_MAP = {
|
21
|
+
0: 0,
|
22
|
+
1: 1,
|
23
|
+
2: 2,
|
24
|
+
3: 3,
|
25
|
+
4: 4,
|
26
|
+
5: 5,
|
27
|
+
6: 6,
|
28
|
+
7: 7,
|
29
|
+
8: 8,
|
30
|
+
9: 9,
|
31
|
+
a: 10,
|
32
|
+
b: 11,
|
33
|
+
c: 12,
|
34
|
+
d: 13,
|
35
|
+
e: 14,
|
36
|
+
f: 15,
|
37
|
+
A: 10,
|
38
|
+
B: 11,
|
39
|
+
C: 12,
|
40
|
+
D: 13,
|
41
|
+
E: 14,
|
42
|
+
F: 15
|
43
|
+
};
|
44
|
+
function fromHex(hexString) {
|
45
|
+
const isOdd = hexString.length % 2;
|
46
|
+
const base = (hexString[1] === "x" ? 2 : 0) + isOdd;
|
47
|
+
const nBytes = (hexString.length - base) / 2 + isOdd;
|
48
|
+
const bytes2 = new Uint8Array(nBytes);
|
49
|
+
if (isOdd)
|
50
|
+
bytes2[0] = 0 | HEX_MAP[hexString[2]];
|
51
|
+
for (let i = 0; i < nBytes; ) {
|
52
|
+
const idx = base + i * 2;
|
53
|
+
const a = HEX_MAP[hexString[idx]];
|
54
|
+
const b = HEX_MAP[hexString[idx + 1]];
|
55
|
+
bytes2[isOdd + i++] = a << 4 | b;
|
56
|
+
}
|
57
|
+
return bytes2;
|
58
|
+
}
|
59
|
+
var InternalUint8Array = class extends Uint8Array {
|
60
|
+
constructor(buffer) {
|
61
|
+
super(buffer);
|
62
|
+
__publicField(this, "i", 0);
|
63
|
+
__publicField(this, "v");
|
64
|
+
this.v = new DataView(buffer);
|
65
|
+
}
|
66
|
+
};
|
67
|
+
var toInternalBytes = (fn) => (buffer) => fn(buffer instanceof InternalUint8Array ? buffer : new InternalUint8Array(buffer instanceof Uint8Array ? buffer.buffer : typeof buffer === "string" ? fromHex(buffer).buffer : buffer));
|
68
|
+
|
69
|
+
// src/internal/mergeUint8.ts
|
70
|
+
var mergeUint8 = (...inputs) => {
|
71
|
+
const len = inputs.length;
|
72
|
+
let totalLen = 0;
|
73
|
+
for (let i = 0; i < len; i++)
|
74
|
+
totalLen += inputs[i].byteLength;
|
75
|
+
const result = new Uint8Array(totalLen);
|
76
|
+
for (let idx = 0, at = 0; idx < len; idx++) {
|
77
|
+
const current = inputs[idx];
|
78
|
+
result.set(current, at);
|
79
|
+
at += current.byteLength;
|
80
|
+
}
|
81
|
+
return result;
|
82
|
+
};
|
83
|
+
|
84
|
+
// src/internal/mapObject.ts
|
85
|
+
function mapObject(input, mapper) {
|
86
|
+
return Object.fromEntries(Object.entries(input).map(([key, value]) => [key, mapper(value, key)]));
|
87
|
+
}
|
88
|
+
|
89
|
+
// src/codecs/uint.ts
|
90
|
+
var encode = (nBytes) => {
|
91
|
+
const n64 = nBytes / 8 | 0;
|
92
|
+
const n16 = nBytes % 8 / 2 | 0;
|
93
|
+
const isOdd = nBytes % 2;
|
94
|
+
return (input) => {
|
95
|
+
const result = new Uint8Array(32);
|
96
|
+
const dv = new DataView(result.buffer);
|
97
|
+
let idx = 32;
|
98
|
+
if (isOdd) {
|
99
|
+
dv.setUint8(--idx, Number(input & 255n));
|
100
|
+
input >>= 8n;
|
101
|
+
}
|
102
|
+
for (let i = 0; i < n16; i++) {
|
103
|
+
idx -= 2;
|
104
|
+
dv.setUint16(idx, Number(input & 65535n));
|
105
|
+
input >>= 16n;
|
106
|
+
}
|
107
|
+
const idxLimit = idx - n64 * 8;
|
108
|
+
for (idx -= 8; idx >= idxLimit; idx -= 8) {
|
109
|
+
dv.setBigUint64(idx, input);
|
110
|
+
input >>= 64n;
|
111
|
+
}
|
112
|
+
return result;
|
113
|
+
};
|
114
|
+
};
|
115
|
+
var decode = (nBytes) => {
|
116
|
+
const n64 = Math.ceil(nBytes / 8);
|
117
|
+
return toInternalBytes((bytes2) => {
|
118
|
+
let result = 0n;
|
119
|
+
const nextBlock = bytes2.i + 32;
|
120
|
+
for (let idx = bytes2.i + (32 - n64 * 8); idx < nextBlock; idx += 8)
|
121
|
+
result = result << 64n | bytes2.v.getBigUint64(idx);
|
122
|
+
bytes2.i = nextBlock;
|
123
|
+
return result;
|
124
|
+
});
|
125
|
+
};
|
126
|
+
var cache = /* @__PURE__ */ new Map();
|
127
|
+
var uint = (nBits) => {
|
128
|
+
let cached = cache.get(nBits);
|
129
|
+
if (cached)
|
130
|
+
return cached;
|
131
|
+
const nBytes = nBits / 8;
|
132
|
+
cached = createCodec(encode(nBytes), decode(nBytes));
|
133
|
+
cache.set(nBits, cached);
|
134
|
+
return cached;
|
135
|
+
};
|
136
|
+
|
137
|
+
// src/codecs/bool.ts
|
138
|
+
var bool = enhanceCodec(uint(8), (value) => value ? 1n : 0n, Boolean);
|
139
|
+
|
140
|
+
// src/codecs/str.ts
|
141
|
+
var uint256 = uint(256);
|
142
|
+
var textEncoder = new TextEncoder();
|
143
|
+
var strEnc = (str2) => {
|
144
|
+
const val = textEncoder.encode(str2);
|
145
|
+
const args = [uint256.enc(BigInt(val.length)), val];
|
146
|
+
const extra = val.length % 32;
|
147
|
+
if (extra > 0) {
|
148
|
+
;
|
149
|
+
args.push(new Uint8Array(32 - extra));
|
150
|
+
}
|
151
|
+
return mergeUint8(...args);
|
152
|
+
};
|
153
|
+
strEnc.din = true;
|
154
|
+
var textDecoder = new TextDecoder();
|
155
|
+
var strDec = toInternalBytes((bytes2) => {
|
156
|
+
let nElements = Number(uint256.dec(bytes2));
|
157
|
+
const dv = new DataView(bytes2.buffer, bytes2.i, nElements);
|
158
|
+
const extra = nElements % 32;
|
159
|
+
const padding = extra && 32 - extra;
|
160
|
+
bytes2.i += nElements + padding;
|
161
|
+
return textDecoder.decode(dv);
|
162
|
+
});
|
163
|
+
strDec.din = true;
|
164
|
+
var str = createCodec(strEnc, strDec);
|
165
|
+
str.din = true;
|
166
|
+
|
167
|
+
// src/codecs/bytes.ts
|
168
|
+
var bytesEnc = (nBytes) => (bytes2) => {
|
169
|
+
if (bytes2.length === 32)
|
170
|
+
return bytes2;
|
171
|
+
const result = new Uint8Array(32);
|
172
|
+
result.set(bytes2.length === nBytes ? bytes2 : bytes2.slice(0, nBytes));
|
173
|
+
return result;
|
174
|
+
};
|
175
|
+
var bytesDec = (nBytes) => toInternalBytes((bytes2) => {
|
176
|
+
const result = new Uint8Array(bytes2.buffer, bytes2.i, nBytes);
|
177
|
+
bytes2.i += 32;
|
178
|
+
return result;
|
179
|
+
});
|
180
|
+
var bytes = (nBytes) => createCodec(bytesEnc(nBytes), bytesDec(nBytes));
|
181
|
+
bytes.enc = bytesEnc;
|
182
|
+
bytes.dec = bytesDec;
|
183
|
+
|
184
|
+
// src/codecs/call.ts
|
185
|
+
var uint2562 = uint(256);
|
186
|
+
var callEnc = (...encoders) => (values) => {
|
187
|
+
const mapped = values.map((value, idx) => encoders[idx](value));
|
188
|
+
const resultArray = new Array(encoders.length);
|
189
|
+
const dinamics = [];
|
190
|
+
let len = 0n;
|
191
|
+
for (let i = 0; i < encoders.length; i++) {
|
192
|
+
if (encoders[i].din) {
|
193
|
+
dinamics.push(i);
|
194
|
+
len += 32n;
|
195
|
+
} else {
|
196
|
+
resultArray[i] = mapped[i];
|
197
|
+
len += BigInt(mapped[i].length);
|
198
|
+
}
|
199
|
+
}
|
200
|
+
dinamics.forEach((idx) => {
|
201
|
+
resultArray[idx] = uint2562.enc(len);
|
202
|
+
const data = mapped[idx];
|
203
|
+
resultArray.push(data);
|
204
|
+
len += BigInt(data.length);
|
205
|
+
});
|
206
|
+
return mergeUint8(...resultArray);
|
207
|
+
};
|
208
|
+
var callDec = (...decoders) => toInternalBytes((bytes2) => {
|
209
|
+
const result = new Array(decoders.length);
|
210
|
+
let start = bytes2.i;
|
211
|
+
for (let i = 0; i < decoders.length; i++) {
|
212
|
+
if (decoders[i].din) {
|
213
|
+
const offset = Number(uint2562.dec(bytes2));
|
214
|
+
const current = bytes2.i;
|
215
|
+
bytes2.i = start + offset;
|
216
|
+
result[i] = decoders[i](bytes2);
|
217
|
+
bytes2.i = current;
|
218
|
+
} else {
|
219
|
+
result[i] = decoders[i](bytes2);
|
220
|
+
}
|
221
|
+
}
|
222
|
+
return result;
|
223
|
+
});
|
224
|
+
var call = (...codecs) => createCodec(callEnc(...codecs.map(([encoder]) => encoder)), callDec(...codecs.map(([, decoder]) => decoder)));
|
225
|
+
call.enc = callEnc;
|
226
|
+
call.dec = callDec;
|
227
|
+
|
228
|
+
// src/codecs/int.ts
|
229
|
+
var signGetters = {
|
230
|
+
"1": "getInt8",
|
231
|
+
"2": "getInt16",
|
232
|
+
"8": "getBigInt64"
|
233
|
+
};
|
234
|
+
var signSetters = {
|
235
|
+
"1": "setInt8",
|
236
|
+
"2": "setInt16",
|
237
|
+
"8": "setBigInt64"
|
238
|
+
};
|
239
|
+
var usignGetters = {
|
240
|
+
"1": "getUint8",
|
241
|
+
"2": "getUint16",
|
242
|
+
"8": "getBigUint64"
|
243
|
+
};
|
244
|
+
var usignSetters = {
|
245
|
+
"1": "setUint8",
|
246
|
+
"2": "setUint16",
|
247
|
+
"8": "setBigUint64"
|
248
|
+
};
|
249
|
+
var getCodec = (nBytes) => {
|
250
|
+
const n64 = nBytes / 8 | 0;
|
251
|
+
const n16 = nBytes % 8 / 2 | 0;
|
252
|
+
const sequence = [
|
253
|
+
...Array(n64).fill([8, 64n, (x) => x]),
|
254
|
+
...Array(n16).fill([2, 16n, (x) => Number(x & 65535n)])
|
255
|
+
];
|
256
|
+
if (nBytes % 2)
|
257
|
+
sequence.push([1, 8n, (x) => Number(x & 255n)]);
|
258
|
+
const enc = (input) => {
|
259
|
+
const result = new Uint8Array(32);
|
260
|
+
const dv = new DataView(result.buffer);
|
261
|
+
let idx = 32;
|
262
|
+
for (let i = sequence.length - 1; i > 0; i--) {
|
263
|
+
const [bytes3, shift, fn2] = sequence[i];
|
264
|
+
idx -= bytes3;
|
265
|
+
dv[usignSetters[bytes3]](idx, fn2(input));
|
266
|
+
input >>= shift;
|
267
|
+
}
|
268
|
+
const [bytes2, , fn] = sequence[0];
|
269
|
+
idx -= bytes2;
|
270
|
+
dv[signSetters[bytes2]](idx, fn(input));
|
271
|
+
return result;
|
272
|
+
};
|
273
|
+
const dec = toInternalBytes((bytes2) => {
|
274
|
+
let idx = bytes2.i + 32 - nBytes;
|
275
|
+
const bits = sequence[0][0];
|
276
|
+
let result = BigInt(bytes2.v[signGetters[bits]](idx));
|
277
|
+
idx += bits;
|
278
|
+
for (let i = 1; i < sequence.length; i++) {
|
279
|
+
const [bits2, shift] = sequence[i];
|
280
|
+
result = result << shift | BigInt(bytes2.v[usignGetters[bits2]](idx));
|
281
|
+
idx += bits2;
|
282
|
+
}
|
283
|
+
bytes2.i += 32;
|
284
|
+
return result;
|
285
|
+
});
|
286
|
+
return createCodec(enc, dec);
|
287
|
+
};
|
288
|
+
var cache2 = /* @__PURE__ */ new Map();
|
289
|
+
var int = (nBits) => {
|
290
|
+
let cached = cache2.get(nBits);
|
291
|
+
if (cached)
|
292
|
+
return cached;
|
293
|
+
const nBytes = nBits / 8;
|
294
|
+
cached = getCodec(nBytes);
|
295
|
+
cache2.set(nBits, cached);
|
296
|
+
return cached;
|
297
|
+
};
|
298
|
+
int.enc = (nBits) => int(nBits).enc;
|
299
|
+
int.dec = (nBits) => int(nBits).dec;
|
300
|
+
|
301
|
+
// src/codecs/fixed.ts
|
302
|
+
var creator = (codec) => {
|
303
|
+
const cache3 = /* @__PURE__ */ new Map();
|
304
|
+
return (nBits, decimals) => {
|
305
|
+
const key = decimals << 8 | nBits;
|
306
|
+
let cached = cache3.get(key);
|
307
|
+
if (cached)
|
308
|
+
return cached;
|
309
|
+
cached = enhanceCodec(codec(nBits), (x) => x.value, (value) => ({ value, decimals }));
|
310
|
+
cache3.set(key, cached);
|
311
|
+
return cached;
|
312
|
+
};
|
313
|
+
};
|
314
|
+
var fixed = creator(int);
|
315
|
+
var ufixed = creator(uint);
|
316
|
+
|
317
|
+
// src/codecs/tuple.ts
|
318
|
+
var tupleDec = (...decoders) => toInternalBytes((bytes2) => decoders.map((decoder) => decoder(bytes2)));
|
319
|
+
var tupleEnc = (...encoders) => (values) => mergeUint8(...values.map((value, idx) => encoders[idx](value)));
|
320
|
+
var tuple = (...codecs) => createCodec(tupleEnc(...codecs.map(([encoder]) => encoder)), tupleDec(...codecs.map(([, decoder]) => decoder)));
|
321
|
+
tuple.enc = tupleEnc;
|
322
|
+
tuple.dec = tupleDec;
|
323
|
+
|
324
|
+
// src/codecs/struct.ts
|
325
|
+
var structEnc = (encoders) => {
|
326
|
+
const keys = Object.keys(encoders);
|
327
|
+
return enhanceEncoder(tuple.enc(...Object.values(encoders)), (input) => keys.map((k) => input[k]));
|
328
|
+
};
|
329
|
+
var structDec = (decoders) => {
|
330
|
+
const keys = Object.keys(decoders);
|
331
|
+
return enhanceDecoder(tuple.dec(...Object.values(decoders)), (tuple2) => Object.fromEntries(tuple2.map((value, idx) => [keys[idx], value])));
|
332
|
+
};
|
333
|
+
var struct = (codecs) => createCodec(structEnc(mapObject(codecs, (x) => x[0])), structDec(mapObject(codecs, (x) => x[1])));
|
334
|
+
struct.enc = structEnc;
|
335
|
+
struct.dec = structDec;
|
336
|
+
|
337
|
+
// src/codecs/vector.ts
|
338
|
+
var uint2563 = uint(256);
|
339
|
+
var vectorEnc = (inner, size) => {
|
340
|
+
if (size >= 0)
|
341
|
+
return (value) => mergeUint8(...value.map(inner));
|
342
|
+
const result = (value) => mergeUint8(uint2563.enc(BigInt(value.length)), ...value.map(inner));
|
343
|
+
result.din = true;
|
344
|
+
return result;
|
345
|
+
};
|
346
|
+
var vectorDec = (getter, size) => {
|
347
|
+
const result = toInternalBytes((bytes2) => {
|
348
|
+
const nElements = size >= 0 ? size : Number(uint2563.dec(bytes2));
|
349
|
+
const result2 = new Array(nElements);
|
350
|
+
for (let i = 0; i < nElements; i++) {
|
351
|
+
result2[i] = getter(bytes2);
|
352
|
+
}
|
353
|
+
return result2;
|
354
|
+
});
|
355
|
+
if (size == null)
|
356
|
+
result.din = true;
|
357
|
+
return result;
|
358
|
+
};
|
359
|
+
var vector = (inner, size) => {
|
360
|
+
const result = createCodec(vectorEnc(inner[0], size), vectorDec(inner[1], size));
|
361
|
+
if (size == null)
|
362
|
+
result.din = true;
|
363
|
+
return result;
|
364
|
+
};
|
365
|
+
vector.enc = vectorEnc;
|
366
|
+
vector.dec = vectorDec;
|
367
|
+
export {
|
368
|
+
bool,
|
369
|
+
bytes,
|
370
|
+
call,
|
371
|
+
createCodec,
|
372
|
+
enhanceCodec,
|
373
|
+
enhanceDecoder,
|
374
|
+
enhanceEncoder,
|
375
|
+
fixed,
|
376
|
+
int,
|
377
|
+
str,
|
378
|
+
struct,
|
379
|
+
tuple,
|
380
|
+
ufixed,
|
381
|
+
uint,
|
382
|
+
vector
|
383
|
+
};
|
384
|
+
//# sourceMappingURL=solidity-codecs.js.map
|
@@ -0,0 +1,7 @@
|
|
1
|
+
{
|
2
|
+
"version": 3,
|
3
|
+
"sources": ["../src/utils.ts", "../src/internal/toInternalBytes.ts", "../src/internal/mergeUint8.ts", "../src/internal/mapObject.ts", "../src/codecs/uint.ts", "../src/codecs/bool.ts", "../src/codecs/str.ts", "../src/codecs/bytes.ts", "../src/codecs/call.ts", "../src/codecs/int.ts", "../src/codecs/fixed.ts", "../src/codecs/tuple.ts", "../src/codecs/struct.ts", "../src/codecs/vector.ts"],
|
4
|
+
"sourcesContent": ["import type { Codec, Decoder, Encoder } from \"./types\"\n\nexport const createCodec = <T>(\n encoder: Encoder<T>,\n decoder: Decoder<T>,\n): Codec<T> => {\n const result = [encoder, decoder] as any\n result.enc = encoder\n result.dec = decoder\n return result\n}\n\nexport const enhanceEncoder =\n <I, O>(encoder: Encoder<I>, mapper: (value: O) => I): Encoder<O> =>\n (value) =>\n encoder(mapper(value))\n\nexport const enhanceDecoder =\n <I, O>(decoder: Decoder<I>, mapper: (value: I) => O): Decoder<O> =>\n (value) =>\n mapper(decoder(value))\n\nexport const enhanceCodec = <I, O>(\n [encoder, decoder]: Codec<I>,\n toFrom: (value: O) => I,\n fromTo: (value: I) => O,\n): Codec<O> =>\n createCodec(enhanceEncoder(encoder, toFrom), enhanceDecoder(decoder, fromTo))\n", "import { Decoder } from \"../types\"\n\n// https://jsben.ch/URe1X\nconst HEX_MAP: Record<string, number> = {\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9,\n a: 10,\n b: 11,\n c: 12,\n d: 13,\n e: 14,\n f: 15,\n A: 10,\n B: 11,\n C: 12,\n D: 13,\n E: 14,\n F: 15,\n}\nexport function fromHex(hexString: string): Uint8Array {\n const isOdd = hexString.length % 2\n /* istanbul ignore next */\n const base = (hexString[1] === \"x\" ? 2 : 0) + isOdd\n const nBytes = (hexString.length - base) / 2 + isOdd\n const bytes = new Uint8Array(nBytes)\n\n if (isOdd) bytes[0] = 0 | HEX_MAP[hexString[2]]\n\n for (let i = 0; i < nBytes; ) {\n const idx = base + i * 2\n const a = HEX_MAP[hexString[idx]]\n const b = HEX_MAP[hexString[idx + 1]]\n bytes[isOdd + i++] = (a << 4) | b\n }\n\n return bytes\n}\n\nclass InternalUint8Array extends Uint8Array {\n i: number = 0\n v: DataView\n\n constructor(buffer: ArrayBuffer) {\n super(buffer)\n this.v = new DataView(buffer)\n }\n}\n\nexport const toInternalBytes =\n <T>(fn: (input: InternalUint8Array) => T): Decoder<T> =>\n (buffer: string | ArrayBuffer | Uint8Array | InternalUint8Array) =>\n fn(\n buffer instanceof InternalUint8Array\n ? buffer\n : new InternalUint8Array(\n buffer instanceof Uint8Array\n ? buffer.buffer\n : typeof buffer === \"string\"\n ? fromHex(buffer).buffer\n : buffer,\n ),\n )\n", "export const mergeUint8 = (...inputs: Array<Uint8Array>): Uint8Array => {\n const len = inputs.length\n let totalLen = 0\n for (let i = 0; i < len; i++) totalLen += inputs[i].byteLength\n const result = new Uint8Array(totalLen)\n\n for (let idx = 0, at = 0; idx < len; idx++) {\n const current = inputs[idx]\n result.set(current, at)\n at += current.byteLength\n }\n\n return result\n}\n", "export function mapObject<K extends string | number | symbol, I, O>(\n input: Record<K, I>,\n mapper: (i: I, k: K) => O,\n): Record<K, O>\n\nexport function mapObject<K extends string | number | symbol, I, O>(\n input: Record<K, I>,\n mapper: (i: I, k?: K) => O,\n): Record<K, O> {\n return Object.fromEntries(\n Object.entries(input).map(\n ([key, value]: any) => [key, mapper(value, key)] as const,\n ),\n ) as any\n}\n", "import { Encoder, Decoder, Codec } from \"../types\"\nimport { toInternalBytes } from \"../internal\"\nimport { createCodec } from \"../utils\"\n\nconst encode = (nBytes: number): Encoder<bigint> => {\n const n64 = (nBytes / 8) | 0\n const n16 = ((nBytes % 8) / 2) | 0\n const isOdd = nBytes % 2\n return (input) => {\n const result = new Uint8Array(32)\n const dv = new DataView(result.buffer)\n\n let idx = 32\n if (isOdd) {\n dv.setUint8(--idx, Number(input & 255n))\n input >>= 8n\n }\n\n for (let i = 0; i < n16; i++) {\n // purposely avoiding using setUint32 b/c Number.MAX_SAFE_INTEGER\n // is smaller than the max value of a u32\n idx -= 2\n dv.setUint16(idx, Number(input & 65535n))\n input >>= 16n\n }\n\n const idxLimit = idx - n64 * 8\n for (idx -= 8; idx >= idxLimit; idx -= 8) {\n dv.setBigUint64(idx, input)\n input >>= 64n\n }\n\n return result\n }\n}\n\nconst decode = (nBytes: number): Decoder<bigint> => {\n const n64 = Math.ceil(nBytes / 8)\n return toInternalBytes((bytes) => {\n let result = 0n\n\n const nextBlock = bytes.i + 32\n for (let idx = bytes.i + (32 - n64 * 8); idx < nextBlock; idx += 8)\n result = (result << 64n) | bytes.v.getBigUint64(idx)\n\n bytes.i = nextBlock\n return result\n })\n}\n\nconst cache: Map<number, Codec<bigint>> = new Map()\nexport const uint = (nBits: number): Codec<bigint> => {\n let cached = cache.get(nBits)\n if (cached) return cached\n\n const nBytes = nBits / 8\n cached = createCodec(encode(nBytes), decode(nBytes))\n cache.set(nBits, cached)\n return cached\n}\n", "import { Codec } from \"../types\"\nimport { enhanceCodec } from \"../\"\nimport { uint } from \"./uint\"\n\nexport const bool: Codec<boolean> = enhanceCodec(\n uint(8),\n (value: boolean) => (value ? 1n : 0n),\n Boolean,\n)\n", "import { createCodec, Decoder, Encoder } from \"../\"\nimport { toInternalBytes, mergeUint8 } from \"../internal\"\nimport { uint } from \"./uint\"\n\nconst uint256 = uint(256)\nconst textEncoder = new TextEncoder()\nconst strEnc: Encoder<string> = (str) => {\n const val = textEncoder.encode(str)\n const args = [uint256.enc(BigInt(val.length)), val] as const\n const extra = val.length % 32\n if (extra > 0) {\n ;(args as any).push(new Uint8Array(32 - extra))\n }\n return mergeUint8(...args)\n}\nstrEnc.din = true\n\nconst textDecoder = new TextDecoder()\nconst strDec: Decoder<string> = toInternalBytes((bytes) => {\n let nElements = Number(uint256.dec(bytes))\n const dv = new DataView(bytes.buffer, bytes.i, nElements)\n const extra = nElements % 32\n const padding = extra && 32 - extra\n bytes.i += nElements + padding\n return textDecoder.decode(dv)\n})\nstrDec.din = true\n\nexport const str = createCodec(strEnc, strDec)\nstr.din = true\n", "import { Encoder, Decoder, Codec } from \"../types\"\nimport { createCodec } from \"../\"\nimport { toInternalBytes } from \"../internal\"\n\nconst bytesEnc =\n (nBytes: number): Encoder<Uint8Array> =>\n (bytes) => {\n if (bytes.length === 32) return bytes\n const result = new Uint8Array(32)\n result.set(bytes.length === nBytes ? bytes : bytes.slice(0, nBytes))\n return result\n }\n\nconst bytesDec = (nBytes: number): Decoder<Uint8Array> =>\n toInternalBytes((bytes) => {\n const result = new Uint8Array(bytes.buffer, bytes.i, nBytes)\n bytes.i += 32\n return result\n })\n\nexport const bytes = (nBytes: number): Codec<Uint8Array> =>\n createCodec(bytesEnc(nBytes), bytesDec(nBytes))\n\nbytes.enc = bytesEnc\nbytes.dec = bytesDec\n", "import { Codec, Decoder, Encoder } from \"../types\"\nimport { uint } from \"./uint\"\nimport { mergeUint8, toInternalBytes } from \"../internal\"\nimport { createCodec } from \"../utils\"\n\nconst uint256 = uint(256)\nconst callEnc =\n <\n A extends Array<Encoder<any>>,\n OT extends { [K in keyof A]: A[K] extends Encoder<infer D> ? D : unknown },\n >(\n ...encoders: A\n ): Encoder<[...OT]> =>\n (values) => {\n const mapped = values.map((value, idx) => encoders[idx](value))\n const resultArray = new Array<Uint8Array>(encoders.length)\n const dinamics = []\n let len = 0n\n for (let i = 0; i < encoders.length; i++) {\n if (encoders[i].din) {\n dinamics.push(i)\n len += 32n\n } else {\n resultArray[i] = mapped[i]\n len += BigInt(mapped[i].length)\n }\n }\n\n dinamics.forEach((idx) => {\n resultArray[idx] = uint256.enc(len)\n const data = mapped[idx]\n resultArray.push(data)\n len += BigInt(data.length)\n })\n\n return mergeUint8(...resultArray)\n }\n\nconst callDec = <\n A extends Array<Decoder<any>>,\n OT extends { [K in keyof A]: A[K] extends Decoder<infer D> ? D : unknown },\n>(\n ...decoders: A\n): Decoder<[...OT]> =>\n toInternalBytes((bytes) => {\n const result = new Array(decoders.length) as [...OT]\n let start = bytes.i\n for (let i = 0; i < decoders.length; i++) {\n if (decoders[i].din) {\n const offset = Number(uint256.dec(bytes))\n const current = bytes.i\n bytes.i = start + offset\n result[i] = decoders[i](bytes)\n bytes.i = current\n } else {\n result[i] = decoders[i](bytes)\n }\n }\n return result\n })\n\nexport const call = <\n A extends Array<Codec<any>>,\n OT extends { [K in keyof A]: A[K] extends Codec<infer D> ? D : unknown },\n>(\n ...codecs: A\n): Codec<[...OT]> =>\n createCodec(\n callEnc(...codecs.map(([encoder]) => encoder)),\n callDec(...codecs.map(([, decoder]) => decoder)),\n )\n\ncall.enc = callEnc\ncall.dec = callDec\n", "import { Encoder, Codec } from \"../types\"\nimport { toInternalBytes } from \"../internal\"\nimport { createCodec } from \"../utils\"\n\nconst signGetters: Record<1 | 2 | 8, \"getBigInt64\" | \"getInt16\" | \"getInt8\"> = {\n \"1\": \"getInt8\",\n \"2\": \"getInt16\",\n \"8\": \"getBigInt64\",\n}\n\nconst signSetters: Record<1 | 2 | 8, \"setBigInt64\" | \"setInt16\" | \"setInt8\"> = {\n \"1\": \"setInt8\",\n \"2\": \"setInt16\",\n \"8\": \"setBigInt64\",\n}\n\nconst usignGetters: Record<\n 1 | 2 | 8,\n \"getBigUint64\" | \"getUint16\" | \"getUint8\"\n> = {\n \"1\": \"getUint8\",\n \"2\": \"getUint16\",\n \"8\": \"getBigUint64\",\n}\n\nconst usignSetters: Record<\n 1 | 2 | 8,\n \"setBigUint64\" | \"setUint16\" | \"setUint8\"\n> = {\n \"1\": \"setUint8\",\n \"2\": \"setUint16\",\n \"8\": \"setBigUint64\",\n}\n\nconst getCodec = (nBytes: number): Codec<bigint> => {\n const n64 = (nBytes / 8) | 0\n const n16 = ((nBytes % 8) / 2) | 0\n const sequence = [\n ...Array(n64).fill([8, 64n, (x: bigint) => x]),\n ...Array(n16).fill([2, 16n, (x: bigint) => Number(x & 65535n)]),\n ]\n if (nBytes % 2) sequence.push([1, 8n, (x: bigint) => Number(x & 255n)])\n\n const enc: Encoder<bigint> = (input) => {\n const result = new Uint8Array(32)\n const dv = new DataView(result.buffer)\n\n let idx = 32\n for (let i = sequence.length - 1; i > 0; i--) {\n const [bytes, shift, fn] = sequence[i] as [1, 8n, (x: bigint) => any]\n idx -= bytes\n dv[usignSetters[bytes]](idx, fn(input) as never)\n input >>= shift\n }\n const [bytes, , fn] = sequence[0] as [1, 8n, (x: bigint) => any]\n idx -= bytes\n dv[signSetters[bytes]](idx, fn(input) as never)\n\n return result\n }\n\n const dec = toInternalBytes((bytes) => {\n let idx = bytes.i + 32 - nBytes\n\n const bits = sequence[0][0] as 8\n let result = BigInt(bytes.v[signGetters[bits]](idx))\n idx += bits\n\n for (let i = 1; i < sequence.length; i++) {\n const [bits, shift] = sequence[i] as [1, 8n]\n result = (result << shift) | BigInt(bytes.v[usignGetters[bits]](idx))\n idx += bits\n }\n\n bytes.i += 32\n return result\n })\n\n return createCodec(enc, dec)\n}\n\nconst cache: Map<number, Codec<bigint>> = new Map()\nexport const int = (nBits: number): Codec<bigint> => {\n let cached = cache.get(nBits)\n if (cached) return cached\n\n const nBytes = nBits / 8\n cached = getCodec(nBytes)\n cache.set(nBits, cached)\n return cached\n}\n\nint.enc = (nBits: number) => int(nBits).enc\nint.dec = (nBits: number) => int(nBits).dec\n", "import { Codec, Fixed } from \"../types\"\nimport { enhanceCodec } from \"../utils\"\nimport { int } from \"./int\"\nimport { uint } from \"./uint\"\n\nconst creator = (codec: (nBits: number) => Codec<bigint>) => {\n const cache: Map<number, Codec<Fixed>> = new Map()\n return (nBits: number, decimals: number): Codec<Fixed> => {\n const key = (decimals << 8) | nBits\n let cached = cache.get(key)\n if (cached) return cached\n\n cached = enhanceCodec(\n codec(nBits),\n (x) => x.value,\n (value) => ({ value, decimals }),\n )\n cache.set(key, cached)\n return cached\n }\n}\n\nexport const fixed = creator(int)\nexport const ufixed = creator(uint)\n", "import { Codec, Decoder, Encoder } from \"../types\"\nimport { mergeUint8, toInternalBytes } from \"../internal\"\nimport { createCodec } from \"../utils\"\n\nconst tupleDec = <\n A extends Array<Decoder<any>>,\n OT extends { [K in keyof A]: A[K] extends Decoder<infer D> ? D : unknown },\n>(\n ...decoders: A\n): Decoder<[...OT]> =>\n toInternalBytes(\n (bytes) => decoders.map((decoder) => decoder(bytes)) as [...OT],\n )\n\nconst tupleEnc =\n <\n A extends Array<Encoder<any>>,\n OT extends { [K in keyof A]: A[K] extends Encoder<infer D> ? D : unknown },\n >(\n ...encoders: A\n ): Encoder<[...OT]> =>\n (values) =>\n mergeUint8(...values.map((value, idx) => encoders[idx](value)))\n\nexport const tuple = <\n A extends Array<Codec<any>>,\n OT extends { [K in keyof A]: A[K] extends Codec<infer D> ? D : unknown },\n>(\n ...codecs: A\n): Codec<[...OT]> =>\n createCodec(\n tupleEnc(...codecs.map(([encoder]) => encoder)),\n tupleDec(...codecs.map(([, decoder]) => decoder)),\n )\n\ntuple.enc = tupleEnc\ntuple.dec = tupleDec\n", "import { mapObject } from \"../internal\"\nimport { Codec, Decoder, Encoder, StringRecord } from \"../types\"\nimport { createCodec, enhanceDecoder, enhanceEncoder } from \"../utils\"\nimport { tuple } from \"./tuple\"\n\nconst structEnc = <\n A extends StringRecord<Encoder<any>>,\n OT extends { [K in keyof A]: A[K] extends Encoder<infer D> ? D : unknown },\n>(\n encoders: A,\n): Encoder<OT> => {\n const keys = Object.keys(encoders)\n return enhanceEncoder(tuple.enc(...Object.values(encoders)), (input: OT) =>\n keys.map((k) => input[k]),\n )\n}\n\nconst structDec = <\n A extends StringRecord<Decoder<any>>,\n OT extends { [K in keyof A]: A[K] extends Decoder<infer D> ? D : unknown },\n>(\n decoders: A,\n): Decoder<OT> => {\n const keys = Object.keys(decoders)\n return enhanceDecoder(\n tuple.dec(...Object.values(decoders)),\n (tuple: Array<any>) =>\n Object.fromEntries(tuple.map((value, idx) => [keys[idx], value])) as OT,\n )\n}\n\nexport const struct = <\n A extends StringRecord<Codec<any>>,\n OT extends { [K in keyof A]: A[K] extends Codec<infer D> ? D : unknown },\n>(\n codecs: A,\n): Codec<OT> =>\n createCodec(\n structEnc(mapObject(codecs, (x) => x[0]) as any),\n structDec(mapObject(codecs, (x) => x[1]) as any),\n )\n\nstruct.enc = structEnc\nstruct.dec = structDec\n", "import { toInternalBytes, mergeUint8 } from \"../internal\"\nimport { createCodec } from \"../utils\"\nimport { Codec, Decoder, Encoder } from \"../types\"\nimport { uint } from \"./uint\"\n\nconst uint256 = uint(256)\nconst vectorEnc = <T>(inner: Encoder<T>, size?: number): Encoder<Array<T>> => {\n if (size! >= 0) return (value) => mergeUint8(...value.map(inner))\n const result: Encoder<Array<T>> = (value) =>\n mergeUint8(uint256.enc(BigInt(value.length)), ...value.map(inner))\n result.din = true\n return result\n}\n\nconst vectorDec = <T>(getter: Decoder<T>, size?: number): Decoder<Array<T>> => {\n const result = toInternalBytes((bytes) => {\n const nElements = size! >= 0 ? size! : Number(uint256.dec(bytes))\n const result = new Array(nElements)\n\n for (let i = 0; i < nElements; i++) {\n result[i] = getter(bytes)\n }\n\n return result\n })\n if (size == null) result.din = true\n return result\n}\n\nexport const vector = <T>(inner: Codec<T>, size?: number): Codec<Array<T>> => {\n const result = createCodec(\n vectorEnc(inner[0], size),\n vectorDec(inner[1], size),\n )\n if (size == null) result.din = true\n return result\n}\n\nvector.enc = vectorEnc\nvector.dec = vectorDec\n"],
|
5
|
+
"mappings": "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",
|
6
|
+
"names": []
|
7
|
+
}
|