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.
Files changed (41) hide show
  1. package/dist/codecs/Bytes.d.ts +5 -5
  2. package/dist/codecs/Fixed.d.ts +3 -0
  3. package/dist/codecs/{int.d.ts → Int.d.ts} +1 -1
  4. package/dist/codecs/Struct.d.ts +2 -25
  5. package/dist/codecs/Tuple.d.ts +2 -25
  6. package/dist/codecs/Uint.d.ts +6 -0
  7. package/dist/codecs/Vector.d.ts +6 -14
  8. package/dist/codecs/index.d.ts +7 -8
  9. package/dist/solidity-codecs.cjs.development.js +159 -166
  10. package/dist/solidity-codecs.cjs.development.js.map +3 -3
  11. package/dist/solidity-codecs.cjs.production.min.js +1 -1
  12. package/dist/solidity-codecs.cjs.production.min.js.map +3 -3
  13. package/dist/solidity-codecs.js +159 -166
  14. package/dist/solidity-codecs.js.map +3 -3
  15. package/dist/solidity-codecs.mjs +159 -166
  16. package/dist/solidity-codecs.mjs.map +3 -3
  17. package/dist/types.d.ts +4 -4
  18. package/dist/utils.d.ts +6 -1
  19. package/package.json +1 -1
  20. package/dist/codecs/Enum.d.ts +0 -57
  21. package/dist/codecs/Option.d.ts +0 -6
  22. package/dist/codecs/Result.d.ts +0 -22
  23. package/dist/codecs/bytes.d.ts +0 -6
  24. package/dist/codecs/call.d.ts +0 -6
  25. package/dist/codecs/compact.d.ts +0 -2
  26. package/dist/codecs/fixed-width-ints.d.ts +0 -11
  27. package/dist/codecs/fixed.d.ts +0 -3
  28. package/dist/codecs/struct.d.ts +0 -6
  29. package/dist/codecs/tuple.d.ts +0 -6
  30. package/dist/codecs/uint.d.ts +0 -2
  31. package/dist/codecs/vector.d.ts +0 -6
  32. package/dist/codecs/void.d.ts +0 -2
  33. package/dist/scale-ts.cjs.development.js +0 -427
  34. package/dist/scale-ts.cjs.development.js.map +0 -7
  35. package/dist/scale-ts.cjs.production.min.js +0 -318
  36. package/dist/scale-ts.cjs.production.min.js.map +0 -7
  37. package/dist/scale-ts.es2017.js +0 -403
  38. package/dist/scale-ts.es2017.js.map +0 -7
  39. package/dist/scale-ts.es2019.mjs +0 -348
  40. package/dist/scale-ts.es2019.mjs.map +0 -7
  41. package/dist/test-utils.d.ts +0 -5
@@ -12,9 +12,14 @@ var createCodec = (encoder, decoder) => {
12
12
  result.dec = decoder;
13
13
  return result;
14
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));
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 bytes2 = new Uint8Array(nBytes);
53
+ const bytes = new Uint8Array(nBytes);
49
54
  if (isOdd)
50
- bytes2[0] = 0 | HEX_MAP[hexString[2]];
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
- bytes2[isOdd + i++] = a << 4 | b;
60
+ bytes[isOdd + i++] = a << 4 | b;
56
61
  }
57
- return bytes2;
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/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) => {
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
- 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) {
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 = 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;
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 uint = (nBits) => {
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 = createCodec(encode(nBytes), decode(nBytes));
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(uint(8), (value) => value ? 1n : 0n, Boolean);
124
+ var bool = enhanceCodec(Uint(8), (value) => value ? 1n : 0n, Boolean);
139
125
 
140
126
  // src/codecs/str.ts
141
- var uint256 = uint(256);
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.din = true;
139
+ strEnc.dyn = true;
154
140
  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);
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
- bytes2.i += nElements + padding;
146
+ bytes.i += nElements + padding;
161
147
  return textDecoder.decode(dv);
162
148
  });
163
- strDec.din = true;
149
+ strDec.dyn = true;
164
150
  var str = createCodec(strEnc, strDec);
165
- str.din = true;
151
+ str.dyn = true;
166
152
 
167
- // src/codecs/bytes.ts
168
- var bytesEnc = (nBytes) => (bytes2) => {
169
- if (bytes2.length === 32)
170
- return bytes2;
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(bytes2.length === nBytes ? bytes2 : bytes2.slice(0, nBytes));
158
+ result.set(bytes.length === nBytes ? bytes : bytes.slice(0, nBytes));
173
159
  return result;
174
160
  };
175
- var bytesDec = (nBytes) => toInternalBytes((bytes2) => {
176
- const result = new Uint8Array(bytes2.buffer, bytes2.i, nBytes);
177
- bytes2.i += 32;
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 bytes = (nBytes) => createCodec(bytesEnc(nBytes), bytesDec(nBytes));
181
- bytes.enc = bytesEnc;
182
- bytes.dec = bytesDec;
166
+ var Bytes = (nBytes) => createCodec(bytesEnc(nBytes), bytesDec(nBytes));
167
+ Bytes.enc = bytesEnc;
168
+ Bytes.dec = bytesDec;
183
169
 
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
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 getCodec = (nBytes) => {
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 [bytes3, shift, fn2] = sequence[i];
264
- idx -= bytes3;
265
- dv[usignSetters[bytes3]](idx, fn2(input));
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 [bytes2, , fn] = sequence[0];
269
- idx -= bytes2;
270
- dv[signSetters[bytes2]](idx, fn(input));
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((bytes2) => {
274
- let idx = bytes2.i + 32 - nBytes;
219
+ const dec = toInternalBytes((bytes) => {
220
+ let idx = bytes.i + 32 - nBytes;
275
221
  const bits = sequence[0][0];
276
- let result = BigInt(bytes2.v[signGetters[bits]](idx));
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(bytes2.v[usignGetters[bits2]](idx));
226
+ result = result << shift | BigInt(bytes.v[usignGetters[bits2]](idx));
281
227
  idx += bits2;
282
228
  }
283
- bytes2.i += 32;
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 int = (nBits) => {
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 = getCodec(nBytes);
240
+ cached = getCodec2(nBytes);
295
241
  cache2.set(nBits, cached);
296
242
  return cached;
297
243
  };
298
- int.enc = (nBits) => int(nBits).enc;
299
- int.dec = (nBits) => int(nBits).dec;
244
+ Int.enc = (nBits) => Int(nBits).enc;
245
+ Int.dec = (nBits) => Int(nBits).dec;
300
246
 
301
- // src/codecs/fixed.ts
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 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;
260
+ var Fixed = creator(Int);
261
+ var Ufixed = creator(Uint);
323
262
 
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]));
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 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])));
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/vector.ts
338
- var uint2563 = uint(256);
327
+ // src/codecs/Vector.ts
328
+ var uint2563 = Uint(256);
339
329
  var vectorEnc = (inner, size) => {
340
- if (size >= 0)
341
- return (value) => mergeUint8(...value.map(inner));
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.din = true;
336
+ result.dyn = true;
344
337
  return result;
345
338
  };
346
339
  var vectorDec = (getter, size) => {
347
- const result = toInternalBytes((bytes2) => {
348
- const nElements = size >= 0 ? size : Number(uint2563.dec(bytes2));
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(bytes2);
344
+ result2[i] = getter(bytes);
352
345
  }
353
346
  return result2;
354
347
  });
355
348
  if (size == null)
356
- result.din = true;
349
+ result.dyn = true;
357
350
  return result;
358
351
  };
359
- var vector = (inner, size) => {
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.din = true;
355
+ result.dyn = true;
363
356
  return result;
364
357
  };
365
- vector.enc = vectorEnc;
366
- vector.dec = vectorDec;
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
- fixed,
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/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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",
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
- din?: boolean;
2
+ dyn?: boolean;
3
3
  };
4
4
  export declare type Decoder<T> = ((value: Uint8Array | ArrayBuffer | string) => T) & {
5
- din?: boolean;
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
- din?: boolean;
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 Fixed {
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>([encoder, decoder]: Codec<I>, toFrom: (value: O) => I, fromTo: (value: I) => O) => Codec<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
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.0.1-beta.2",
2
+ "version": "0.0.1-beta.3",
3
3
  "repository": {
4
4
  "type": "git",
5
5
  "url": "git+https://github.com/unstoppablejs/unstoppablejs.git"