solidity-codecs 0.0.1-beta.2 → 0.0.1-beta.3

Sign up to get free protection for your applications and to get access to all the features.
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"