solidity-codecs 0.0.1-beta.2 → 0.0.1-beta.3
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/codecs/Bytes.d.ts +5 -5
- package/dist/codecs/Fixed.d.ts +3 -0
- package/dist/codecs/{int.d.ts → Int.d.ts} +1 -1
- package/dist/codecs/Struct.d.ts +2 -25
- package/dist/codecs/Tuple.d.ts +2 -25
- package/dist/codecs/Uint.d.ts +6 -0
- package/dist/codecs/Vector.d.ts +6 -14
- package/dist/codecs/index.d.ts +7 -8
- package/dist/solidity-codecs.cjs.development.js +159 -166
- package/dist/solidity-codecs.cjs.development.js.map +3 -3
- package/dist/solidity-codecs.cjs.production.min.js +1 -1
- package/dist/solidity-codecs.cjs.production.min.js.map +3 -3
- package/dist/solidity-codecs.js +159 -166
- package/dist/solidity-codecs.js.map +3 -3
- package/dist/solidity-codecs.mjs +159 -166
- package/dist/solidity-codecs.mjs.map +3 -3
- package/dist/types.d.ts +4 -4
- package/dist/utils.d.ts +6 -1
- package/package.json +1 -1
- package/dist/codecs/Enum.d.ts +0 -57
- package/dist/codecs/Option.d.ts +0 -6
- package/dist/codecs/Result.d.ts +0 -22
- package/dist/codecs/bytes.d.ts +0 -6
- package/dist/codecs/call.d.ts +0 -6
- package/dist/codecs/compact.d.ts +0 -2
- package/dist/codecs/fixed-width-ints.d.ts +0 -11
- package/dist/codecs/fixed.d.ts +0 -3
- package/dist/codecs/struct.d.ts +0 -6
- package/dist/codecs/tuple.d.ts +0 -6
- package/dist/codecs/uint.d.ts +0 -2
- package/dist/codecs/vector.d.ts +0 -6
- package/dist/codecs/void.d.ts +0 -2
- package/dist/scale-ts.cjs.development.js +0 -427
- package/dist/scale-ts.cjs.development.js.map +0 -7
- package/dist/scale-ts.cjs.production.min.js +0 -318
- package/dist/scale-ts.cjs.production.min.js.map +0 -7
- package/dist/scale-ts.es2017.js +0 -403
- package/dist/scale-ts.es2017.js.map +0 -7
- package/dist/scale-ts.es2019.mjs +0 -348
- package/dist/scale-ts.es2019.mjs.map +0 -7
- package/dist/test-utils.d.ts +0 -5
package/dist/solidity-codecs.mjs
CHANGED
@@ -12,9 +12,14 @@ var createCodec = (encoder, decoder) => {
|
|
12
12
|
result.dec = decoder;
|
13
13
|
return result;
|
14
14
|
};
|
15
|
-
var
|
16
|
-
|
17
|
-
|
15
|
+
var dyn = (input, output) => {
|
16
|
+
if (input.dyn)
|
17
|
+
output.dyn = true;
|
18
|
+
return output;
|
19
|
+
};
|
20
|
+
var enhanceEncoder = (encoder, mapper) => dyn(encoder, (value) => encoder(mapper(value)));
|
21
|
+
var enhanceDecoder = (decoder, mapper) => dyn(decoder, (value) => mapper(decoder(value)));
|
22
|
+
var enhanceCodec = (codec, toFrom, fromTo) => dyn(codec, createCodec(enhanceEncoder(codec[0], toFrom), enhanceDecoder(codec[1], fromTo)));
|
18
23
|
|
19
24
|
// src/internal/toInternalBytes.ts
|
20
25
|
var HEX_MAP = {
|
@@ -45,16 +50,16 @@ function fromHex(hexString) {
|
|
45
50
|
const isOdd = hexString.length % 2;
|
46
51
|
const base = (hexString[1] === "x" ? 2 : 0) + isOdd;
|
47
52
|
const nBytes = (hexString.length - base) / 2 + isOdd;
|
48
|
-
const
|
53
|
+
const bytes = new Uint8Array(nBytes);
|
49
54
|
if (isOdd)
|
50
|
-
|
55
|
+
bytes[0] = 0 | HEX_MAP[hexString[2]];
|
51
56
|
for (let i = 0; i < nBytes; ) {
|
52
57
|
const idx = base + i * 2;
|
53
58
|
const a = HEX_MAP[hexString[idx]];
|
54
59
|
const b = HEX_MAP[hexString[idx + 1]];
|
55
|
-
|
60
|
+
bytes[isOdd + i++] = a << 4 | b;
|
56
61
|
}
|
57
|
-
return
|
62
|
+
return bytes;
|
58
63
|
}
|
59
64
|
var InternalUint8Array = class extends Uint8Array {
|
60
65
|
constructor(buffer) {
|
@@ -81,64 +86,45 @@ var mergeUint8 = (...inputs) => {
|
|
81
86
|
return result;
|
82
87
|
};
|
83
88
|
|
84
|
-
// src/
|
85
|
-
|
86
|
-
|
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) => {
|
89
|
+
// src/codecs/Uint.ts
|
90
|
+
var getCodec = (nBytes) => {
|
91
|
+
const n64 = Math.ceil(nBytes / 8);
|
92
|
+
return createCodec((input) => {
|
95
93
|
const result = new Uint8Array(32);
|
96
94
|
const dv = new DataView(result.buffer);
|
97
|
-
|
98
|
-
|
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) {
|
95
|
+
const idxLimit = 32 - n64 * 8;
|
96
|
+
for (let idx = 24; idx >= idxLimit; idx -= 8) {
|
109
97
|
dv.setBigUint64(idx, input);
|
110
98
|
input >>= 64n;
|
111
99
|
}
|
112
100
|
return result;
|
113
|
-
}
|
114
|
-
};
|
115
|
-
var decode = (nBytes) => {
|
116
|
-
const n64 = Math.ceil(nBytes / 8);
|
117
|
-
return toInternalBytes((bytes2) => {
|
101
|
+
}, toInternalBytes((bytes) => {
|
118
102
|
let result = 0n;
|
119
|
-
const nextBlock =
|
120
|
-
for (let idx =
|
121
|
-
result = result << 64n |
|
122
|
-
|
103
|
+
const nextBlock = bytes.i + 32;
|
104
|
+
for (let idx = bytes.i + (32 - n64 * 8); idx < nextBlock; idx += 8)
|
105
|
+
result = result << 64n | bytes.v.getBigUint64(idx);
|
106
|
+
bytes.i = nextBlock;
|
123
107
|
return result;
|
124
|
-
});
|
108
|
+
}));
|
125
109
|
};
|
126
110
|
var cache = /* @__PURE__ */ new Map();
|
127
|
-
var
|
111
|
+
var Uint = (nBits) => {
|
128
112
|
let cached = cache.get(nBits);
|
129
113
|
if (cached)
|
130
114
|
return cached;
|
131
115
|
const nBytes = nBits / 8;
|
132
|
-
cached =
|
116
|
+
cached = getCodec(nBytes);
|
133
117
|
cache.set(nBits, cached);
|
134
118
|
return cached;
|
135
119
|
};
|
120
|
+
Uint.enc = (nBits) => Uint(nBits).enc;
|
121
|
+
Uint.dec = (nBits) => Uint(nBits).dec;
|
136
122
|
|
137
123
|
// src/codecs/bool.ts
|
138
|
-
var bool = enhanceCodec(
|
124
|
+
var bool = enhanceCodec(Uint(8), (value) => value ? 1n : 0n, Boolean);
|
139
125
|
|
140
126
|
// src/codecs/str.ts
|
141
|
-
var uint256 =
|
127
|
+
var uint256 = Uint(256);
|
142
128
|
var textEncoder = new TextEncoder();
|
143
129
|
var strEnc = (str2) => {
|
144
130
|
const val = textEncoder.encode(str2);
|
@@ -150,82 +136,38 @@ var strEnc = (str2) => {
|
|
150
136
|
}
|
151
137
|
return mergeUint8(...args);
|
152
138
|
};
|
153
|
-
strEnc.
|
139
|
+
strEnc.dyn = true;
|
154
140
|
var textDecoder = new TextDecoder();
|
155
|
-
var strDec = toInternalBytes((
|
156
|
-
let nElements = Number(uint256.dec(
|
157
|
-
const dv = new DataView(
|
141
|
+
var strDec = toInternalBytes((bytes) => {
|
142
|
+
let nElements = Number(uint256.dec(bytes));
|
143
|
+
const dv = new DataView(bytes.buffer, bytes.i, nElements);
|
158
144
|
const extra = nElements % 32;
|
159
145
|
const padding = extra && 32 - extra;
|
160
|
-
|
146
|
+
bytes.i += nElements + padding;
|
161
147
|
return textDecoder.decode(dv);
|
162
148
|
});
|
163
|
-
strDec.
|
149
|
+
strDec.dyn = true;
|
164
150
|
var str = createCodec(strEnc, strDec);
|
165
|
-
str.
|
151
|
+
str.dyn = true;
|
166
152
|
|
167
|
-
// src/codecs/
|
168
|
-
var bytesEnc = (nBytes) => (
|
169
|
-
if (
|
170
|
-
return
|
153
|
+
// src/codecs/Bytes.ts
|
154
|
+
var bytesEnc = (nBytes) => (bytes) => {
|
155
|
+
if (bytes.length === 32)
|
156
|
+
return bytes;
|
171
157
|
const result = new Uint8Array(32);
|
172
|
-
result.set(
|
158
|
+
result.set(bytes.length === nBytes ? bytes : bytes.slice(0, nBytes));
|
173
159
|
return result;
|
174
160
|
};
|
175
|
-
var bytesDec = (nBytes) => toInternalBytes((
|
176
|
-
const result = new Uint8Array(
|
177
|
-
|
161
|
+
var bytesDec = (nBytes) => toInternalBytes((bytes) => {
|
162
|
+
const result = new Uint8Array(bytes.buffer, bytes.i, nBytes);
|
163
|
+
bytes.i += 32;
|
178
164
|
return result;
|
179
165
|
});
|
180
|
-
var
|
181
|
-
|
182
|
-
|
166
|
+
var Bytes = (nBytes) => createCodec(bytesEnc(nBytes), bytesDec(nBytes));
|
167
|
+
Bytes.enc = bytesEnc;
|
168
|
+
Bytes.dec = bytesDec;
|
183
169
|
|
184
|
-
// src/codecs/
|
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
|
170
|
+
// src/codecs/Int.ts
|
229
171
|
var signGetters = {
|
230
172
|
"1": "getInt8",
|
231
173
|
"2": "getInt16",
|
@@ -246,7 +188,7 @@ var usignSetters = {
|
|
246
188
|
"2": "setUint16",
|
247
189
|
"8": "setBigUint64"
|
248
190
|
};
|
249
|
-
var
|
191
|
+
var getCodec2 = (nBytes) => {
|
250
192
|
const n64 = nBytes / 8 | 0;
|
251
193
|
const n16 = nBytes % 8 / 2 | 0;
|
252
194
|
const sequence = [
|
@@ -258,47 +200,51 @@ var getCodec = (nBytes) => {
|
|
258
200
|
const enc = (input) => {
|
259
201
|
const result = new Uint8Array(32);
|
260
202
|
const dv = new DataView(result.buffer);
|
203
|
+
if (input < 0n) {
|
204
|
+
for (let i = 0; i < 32 - nBytes; i += 8)
|
205
|
+
dv.setBigInt64(i, -1n);
|
206
|
+
}
|
261
207
|
let idx = 32;
|
262
208
|
for (let i = sequence.length - 1; i > 0; i--) {
|
263
|
-
const [
|
264
|
-
idx -=
|
265
|
-
dv[usignSetters[
|
209
|
+
const [bytes2, shift, fn2] = sequence[i];
|
210
|
+
idx -= bytes2;
|
211
|
+
dv[usignSetters[bytes2]](idx, fn2(input));
|
266
212
|
input >>= shift;
|
267
213
|
}
|
268
|
-
const [
|
269
|
-
idx -=
|
270
|
-
dv[signSetters[
|
214
|
+
const [bytes, , fn] = sequence[0];
|
215
|
+
idx -= bytes;
|
216
|
+
dv[signSetters[bytes]](idx, fn(input));
|
271
217
|
return result;
|
272
218
|
};
|
273
|
-
const dec = toInternalBytes((
|
274
|
-
let idx =
|
219
|
+
const dec = toInternalBytes((bytes) => {
|
220
|
+
let idx = bytes.i + 32 - nBytes;
|
275
221
|
const bits = sequence[0][0];
|
276
|
-
let result = BigInt(
|
222
|
+
let result = BigInt(bytes.v[signGetters[bits]](idx));
|
277
223
|
idx += bits;
|
278
224
|
for (let i = 1; i < sequence.length; i++) {
|
279
225
|
const [bits2, shift] = sequence[i];
|
280
|
-
result = result << shift | BigInt(
|
226
|
+
result = result << shift | BigInt(bytes.v[usignGetters[bits2]](idx));
|
281
227
|
idx += bits2;
|
282
228
|
}
|
283
|
-
|
229
|
+
bytes.i += 32;
|
284
230
|
return result;
|
285
231
|
});
|
286
232
|
return createCodec(enc, dec);
|
287
233
|
};
|
288
234
|
var cache2 = /* @__PURE__ */ new Map();
|
289
|
-
var
|
235
|
+
var Int = (nBits) => {
|
290
236
|
let cached = cache2.get(nBits);
|
291
237
|
if (cached)
|
292
238
|
return cached;
|
293
239
|
const nBytes = nBits / 8;
|
294
|
-
cached =
|
240
|
+
cached = getCodec2(nBytes);
|
295
241
|
cache2.set(nBits, cached);
|
296
242
|
return cached;
|
297
243
|
};
|
298
|
-
|
299
|
-
|
244
|
+
Int.enc = (nBits) => Int(nBits).enc;
|
245
|
+
Int.dec = (nBits) => Int(nBits).dec;
|
300
246
|
|
301
|
-
// src/codecs/
|
247
|
+
// src/codecs/Fixed.ts
|
302
248
|
var creator = (codec) => {
|
303
249
|
const cache3 = /* @__PURE__ */ new Map();
|
304
250
|
return (nBits, decimals) => {
|
@@ -311,74 +257,121 @@ var creator = (codec) => {
|
|
311
257
|
return cached;
|
312
258
|
};
|
313
259
|
};
|
314
|
-
var
|
315
|
-
var
|
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;
|
260
|
+
var Fixed = creator(Int);
|
261
|
+
var Ufixed = creator(Uint);
|
323
262
|
|
324
|
-
// src/codecs/
|
325
|
-
var
|
326
|
-
|
327
|
-
|
263
|
+
// src/codecs/Tuple.ts
|
264
|
+
var uint2562 = Uint(256);
|
265
|
+
var dynamicEnc = (...encoders) => {
|
266
|
+
const res = (values) => {
|
267
|
+
const mapped = values.map((value, idx) => encoders[idx](value));
|
268
|
+
const resultArray = new Array(encoders.length);
|
269
|
+
const dinamics = [];
|
270
|
+
let len = 0n;
|
271
|
+
for (let i = 0; i < encoders.length; i++) {
|
272
|
+
if (encoders[i].dyn) {
|
273
|
+
dinamics.push(i);
|
274
|
+
len += 32n;
|
275
|
+
} else {
|
276
|
+
resultArray[i] = mapped[i];
|
277
|
+
len += BigInt(mapped[i].length);
|
278
|
+
}
|
279
|
+
}
|
280
|
+
dinamics.forEach((idx) => {
|
281
|
+
resultArray[idx] = uint2562.enc(len);
|
282
|
+
const data = mapped[idx];
|
283
|
+
resultArray.push(data);
|
284
|
+
len += BigInt(data.length);
|
285
|
+
});
|
286
|
+
return mergeUint8(...resultArray);
|
287
|
+
};
|
288
|
+
res.dyn = true;
|
289
|
+
return res;
|
328
290
|
};
|
329
|
-
var
|
330
|
-
|
331
|
-
|
291
|
+
var staticEnc = (...encoders) => (values) => mergeUint8(...values.map((value, idx) => encoders[idx](value)));
|
292
|
+
var staticDec = (...decoders) => toInternalBytes((bytes) => decoders.map((decoder) => decoder(bytes)));
|
293
|
+
var dynamicDec = (...decoders) => {
|
294
|
+
const res = toInternalBytes((bytes) => {
|
295
|
+
const result = new Array(decoders.length);
|
296
|
+
let start = bytes.i;
|
297
|
+
for (let i = 0; i < decoders.length; i++) {
|
298
|
+
if (decoders[i].dyn) {
|
299
|
+
const offset = Number(uint2562.dec(bytes));
|
300
|
+
const current = bytes.i;
|
301
|
+
bytes.i = start + offset;
|
302
|
+
result[i] = decoders[i](bytes);
|
303
|
+
bytes.i = current;
|
304
|
+
} else {
|
305
|
+
result[i] = decoders[i](bytes);
|
306
|
+
}
|
307
|
+
}
|
308
|
+
return result;
|
309
|
+
});
|
310
|
+
res.dyn = true;
|
311
|
+
return res;
|
312
|
+
};
|
313
|
+
var Tuple = (...codecs) => {
|
314
|
+
const isDyn = codecs.some((c) => c.dyn);
|
315
|
+
const [enc, dec] = isDyn ? [dynamicEnc, dynamicDec] : [staticEnc, staticDec];
|
316
|
+
const res = createCodec(enc(...codecs.map(([encoder]) => encoder)), dec(...codecs.map(([, decoder]) => decoder)));
|
317
|
+
res.dyn = isDyn;
|
318
|
+
return res;
|
319
|
+
};
|
320
|
+
|
321
|
+
// src/codecs/Struct.ts
|
322
|
+
var Struct = (codecs) => {
|
323
|
+
const keys = Object.keys(codecs);
|
324
|
+
return enhanceCodec(Tuple(...Object.values(codecs)), (input) => keys.map((k) => input[k]), (tuple) => Object.fromEntries(tuple.map((value, idx) => [keys[idx], value])));
|
332
325
|
};
|
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
326
|
|
337
|
-
// src/codecs/
|
338
|
-
var uint2563 =
|
327
|
+
// src/codecs/Vector.ts
|
328
|
+
var uint2563 = Uint(256);
|
339
329
|
var vectorEnc = (inner, size) => {
|
340
|
-
if (size >= 0)
|
341
|
-
|
330
|
+
if (size >= 0) {
|
331
|
+
const res = (value) => mergeUint8(...value.map(inner));
|
332
|
+
res.dyn = inner.dyn;
|
333
|
+
return res;
|
334
|
+
}
|
342
335
|
const result = (value) => mergeUint8(uint2563.enc(BigInt(value.length)), ...value.map(inner));
|
343
|
-
result.
|
336
|
+
result.dyn = true;
|
344
337
|
return result;
|
345
338
|
};
|
346
339
|
var vectorDec = (getter, size) => {
|
347
|
-
const result = toInternalBytes((
|
348
|
-
const nElements = size >= 0 ? size : Number(uint2563.dec(
|
340
|
+
const result = toInternalBytes((bytes) => {
|
341
|
+
const nElements = size >= 0 ? size : Number(uint2563.dec(bytes));
|
349
342
|
const result2 = new Array(nElements);
|
350
343
|
for (let i = 0; i < nElements; i++) {
|
351
|
-
result2[i] = getter(
|
344
|
+
result2[i] = getter(bytes);
|
352
345
|
}
|
353
346
|
return result2;
|
354
347
|
});
|
355
348
|
if (size == null)
|
356
|
-
result.
|
349
|
+
result.dyn = true;
|
357
350
|
return result;
|
358
351
|
};
|
359
|
-
var
|
352
|
+
var Vector = (inner, size) => {
|
360
353
|
const result = createCodec(vectorEnc(inner[0], size), vectorDec(inner[1], size));
|
361
354
|
if (size == null)
|
362
|
-
result.
|
355
|
+
result.dyn = true;
|
363
356
|
return result;
|
364
357
|
};
|
365
|
-
|
366
|
-
|
358
|
+
Vector.enc = vectorEnc;
|
359
|
+
Vector.dec = vectorDec;
|
367
360
|
export {
|
361
|
+
Bytes,
|
362
|
+
Fixed,
|
363
|
+
Int,
|
364
|
+
Struct,
|
365
|
+
Tuple,
|
366
|
+
Ufixed,
|
367
|
+
Uint,
|
368
|
+
Vector,
|
368
369
|
bool,
|
369
|
-
bytes,
|
370
|
-
call,
|
371
370
|
createCodec,
|
371
|
+
dyn,
|
372
372
|
enhanceCodec,
|
373
373
|
enhanceDecoder,
|
374
374
|
enhanceEncoder,
|
375
|
-
|
376
|
-
int,
|
377
|
-
str,
|
378
|
-
struct,
|
379
|
-
tuple,
|
380
|
-
ufixed,
|
381
|
-
uint,
|
382
|
-
vector
|
375
|
+
str
|
383
376
|
};
|
384
377
|
//# sourceMappingURL=solidity-codecs.js.map
|
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"version": 3,
|
3
|
-
"sources": ["../src/utils.ts", "../src/internal/toInternalBytes.ts", "../src/internal/mergeUint8.ts", "../src/
|
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": ";;;;;;;;AAEO,IAAM,cAAc,CACzB,SACA,YACa;AACb,QAAM,SAAS,CAAC,SAAS,OAAO;AAChC,SAAO,MAAM;AACb,SAAO,MAAM;AACb,SAAO;AACT;AAEO,IAAM,
|
3
|
+
"sources": ["../src/utils.ts", "../src/internal/toInternalBytes.ts", "../src/internal/mergeUint8.ts", "../src/codecs/Uint.ts", "../src/codecs/bool.ts", "../src/codecs/str.ts", "../src/codecs/Bytes.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 dyn = <T extends { dyn?: boolean }>(\n input: { dyn?: boolean },\n output: T,\n): T => {\n if (input.dyn) output.dyn = true\n return output\n}\n\nexport const enhanceEncoder = <I, O>(\n encoder: Encoder<I>,\n mapper: (value: O) => I,\n): Encoder<O> => dyn(encoder, ((value) => encoder(mapper(value))) as Encoder<O>)\n\nexport const enhanceDecoder = <I, O>(\n decoder: Decoder<I>,\n mapper: (value: I) => O,\n): Decoder<O> => dyn(decoder, ((value) => mapper(decoder(value))) as Decoder<O>)\n\nexport const enhanceCodec = <I, O>(\n codec: Codec<I>,\n toFrom: (value: O) => I,\n fromTo: (value: I) => O,\n): Codec<O> =>\n dyn(\n codec,\n createCodec(\n enhanceEncoder(codec[0], toFrom),\n enhanceDecoder(codec[1], fromTo),\n ),\n )\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", "import { Codec } from \"../types\"\nimport { toInternalBytes } from \"../internal\"\nimport { createCodec } from \"../utils\"\n\nconst getCodec = (nBytes: number): Codec<bigint> => {\n const n64 = Math.ceil(nBytes / 8)\n return createCodec(\n (input) => {\n const result = new Uint8Array(32)\n const dv = new DataView(result.buffer)\n\n const idxLimit = 32 - n64 * 8\n for (let idx = 24; idx >= idxLimit; idx -= 8) {\n dv.setBigUint64(idx, input)\n input >>= 64n\n }\n\n return result\n },\n 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}\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 = getCodec(nBytes)\n cache.set(nBits, cached)\n return cached\n}\n\nUint.enc = (nBits: number) => Uint(nBits).enc\nUint.dec = (nBits: number) => Uint(nBits).dec\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.dyn = 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.dyn = true\n\nexport const str = createCodec(strEnc, strDec)\nstr.dyn = 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 { 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 if (input < 0n) {\n for (let i = 0; i < 32 - nBytes; i += 8) dv.setBigInt64(i, -1n)\n }\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, Decimal } 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<Decimal>> = new Map()\n return (nBits: number, decimals: number): Codec<Decimal> => {\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 { Uint } from \"./Uint\"\nimport { mergeUint8, toInternalBytes } from \"../internal\"\nimport { createCodec } from \"../utils\"\n\nconst uint256 = Uint(256)\nconst dynamicEnc = <\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 const res: Encoder<[...OT]> = (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].dyn) {\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\n res.dyn = true\n return res\n}\n\nconst staticEnc =\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\nconst staticDec = <\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 )\nconst dynamicDec = <\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 const res: Decoder<[...OT]> = 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].dyn) {\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 res.dyn = true\n return res\n}\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 const isDyn = codecs.some((c) => c.dyn)\n const [enc, dec] = isDyn\n ? ([dynamicEnc, dynamicDec] as const)\n : ([staticEnc, staticDec] as const)\n\n const res: Codec<[...OT]> = createCodec(\n enc(...codecs.map(([encoder]) => encoder)),\n dec(...codecs.map(([, decoder]) => decoder)),\n )\n res.dyn = isDyn\n return res\n}\n", "import { Codec, StringRecord } from \"../types\"\nimport { enhanceCodec } from \"../utils\"\nimport { Tuple } from \"./Tuple\"\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 const keys = Object.keys(codecs)\n return enhanceCodec(\n Tuple(...Object.values(codecs)),\n (input: OT) => keys.map((k) => input[k]),\n (tuple: Array<any>) =>\n Object.fromEntries(tuple.map((value, idx) => [keys[idx], value])) as OT,\n )\n}\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) {\n const res: Encoder<Array<T>> = (value) => mergeUint8(...value.map(inner))\n res.dyn = inner.dyn\n return res\n }\n const result: Encoder<Array<T>> = (value) =>\n mergeUint8(uint256.enc(BigInt(value.length)), ...value.map(inner))\n result.dyn = 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.dyn = 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.dyn = true\n return result\n}\n\nVector.enc = vectorEnc\nVector.dec = vectorDec\n"],
|
5
|
+
"mappings": "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",
|
6
6
|
"names": []
|
7
7
|
}
|
package/dist/types.d.ts
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
export declare type Encoder<T> = ((value: T) => Uint8Array) & {
|
2
|
-
|
2
|
+
dyn?: boolean;
|
3
3
|
};
|
4
4
|
export declare type Decoder<T> = ((value: Uint8Array | ArrayBuffer | string) => T) & {
|
5
|
-
|
5
|
+
dyn?: boolean;
|
6
6
|
};
|
7
7
|
export declare type Codec<T> = [Encoder<T>, Decoder<T>] & {
|
8
8
|
enc: Encoder<T>;
|
9
9
|
dec: Decoder<T>;
|
10
|
-
|
10
|
+
dyn?: boolean;
|
11
11
|
};
|
12
12
|
export declare type CodecType<T extends Codec<any>> = T extends Codec<infer V> ? V : unknown;
|
13
13
|
export declare type StringRecord<T> = {
|
@@ -15,7 +15,7 @@ export declare type StringRecord<T> = {
|
|
15
15
|
[Num: number]: never;
|
16
16
|
[Str: string]: T;
|
17
17
|
};
|
18
|
-
export interface
|
18
|
+
export interface Decimal {
|
19
19
|
value: bigint;
|
20
20
|
decimals: number;
|
21
21
|
}
|
package/dist/utils.d.ts
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
import type { Codec, Decoder, Encoder } from "./types";
|
2
2
|
export declare const createCodec: <T>(encoder: Encoder<T>, decoder: Decoder<T>) => Codec<T>;
|
3
|
+
export declare const dyn: <T extends {
|
4
|
+
dyn?: boolean | undefined;
|
5
|
+
}>(input: {
|
6
|
+
dyn?: boolean;
|
7
|
+
}, output: T) => T;
|
3
8
|
export declare const enhanceEncoder: <I, O>(encoder: Encoder<I>, mapper: (value: O) => I) => Encoder<O>;
|
4
9
|
export declare const enhanceDecoder: <I, O>(decoder: Decoder<I>, mapper: (value: I) => O) => Decoder<O>;
|
5
|
-
export declare const enhanceCodec: <I, O>(
|
10
|
+
export declare const enhanceCodec: <I, O>(codec: Codec<I>, toFrom: (value: O) => I, fromTo: (value: I) => O) => Codec<O>;
|
package/package.json
CHANGED