solidity-codecs 0.0.1-beta.1

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