solidity-codecs 0.0.1-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,348 @@
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 bytes = new Uint8Array(nBytes);
49
+ if (isOdd)
50
+ bytes[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
+ bytes[isOdd + i++] = a << 4 | b;
56
+ }
57
+ return bytes;
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(typeof buffer === "string" ? fromHex(buffer).buffer : buffer instanceof Uint8Array ? buffer.buffer : buffer));
68
+
69
+ // src/internal/mergeUint8.ts
70
+ var mergeUint8 = (...inputs) => {
71
+ const totalLen = inputs.reduce((acc, a) => acc + a.byteLength, 0);
72
+ const result = new Uint8Array(totalLen);
73
+ for (let idx = 0, at = 0; idx < inputs.length; idx++) {
74
+ const current = inputs[idx];
75
+ result.set(current, at);
76
+ at += current.byteLength;
77
+ }
78
+ return result;
79
+ };
80
+
81
+ // src/internal/mapObject.ts
82
+ function mapObject(input, mapper) {
83
+ return Object.fromEntries(Object.entries(input).map(([key, value]) => [key, mapper(value, key)]));
84
+ }
85
+
86
+ // src/codecs/fixed-width-ints.ts
87
+ function decodeInt(nBytes, getter) {
88
+ return toInternalBytes((bytes) => {
89
+ const result = bytes.v[getter](bytes.i, true);
90
+ bytes.i += nBytes;
91
+ return result;
92
+ });
93
+ }
94
+ function encodeInt(nBytes, setter) {
95
+ return (input) => {
96
+ const result = new Uint8Array(nBytes);
97
+ const dv = new DataView(result.buffer);
98
+ dv[setter](0, input, true);
99
+ return result;
100
+ };
101
+ }
102
+ function intCodec(nBytes, getter, setter) {
103
+ return createCodec(encodeInt(nBytes, setter), decodeInt(nBytes, getter));
104
+ }
105
+ var u8 = intCodec(1, "getUint8", "setUint8");
106
+ var u16 = intCodec(2, "getUint16", "setUint16");
107
+ var u32 = intCodec(4, "getUint32", "setUint32");
108
+ var u64 = intCodec(8, "getBigUint64", "setBigUint64");
109
+ var i8 = intCodec(1, "getInt8", "setInt8");
110
+ var i16 = intCodec(2, "getInt16", "setInt16");
111
+ var i32 = intCodec(4, "getInt32", "setInt32");
112
+ var i64 = intCodec(8, "getBigInt64", "setBigInt64");
113
+ var x128Enc = (value) => {
114
+ const result = new Uint8Array(16);
115
+ const dv = new DataView(result.buffer);
116
+ dv.setBigInt64(0, value, true);
117
+ dv.setBigInt64(8, value >> 64n, true);
118
+ return result;
119
+ };
120
+ var create128Dec = (isSigned) => toInternalBytes((input) => {
121
+ const { v, i } = input;
122
+ const right = v.getBigUint64(i, true);
123
+ const left = v[isSigned ? "getBigInt64" : "getBigUint64"](i + 8, true);
124
+ input.i += 16;
125
+ return left << 64n | right;
126
+ });
127
+ var u128 = createCodec(x128Enc, create128Dec());
128
+ var i128 = createCodec(x128Enc, create128Dec(1));
129
+
130
+ // src/codecs/bool.ts
131
+ var booleanToNumber = (value) => value ? 1 : 0;
132
+ var bool = enhanceCodec(u8, booleanToNumber, Boolean);
133
+
134
+ // src/codecs/compact.ts
135
+ var bytesToIntType = {
136
+ [1]: u8[1],
137
+ [2]: u16[1],
138
+ [4]: u32[1]
139
+ };
140
+ var compactDec = toInternalBytes((bytes) => {
141
+ let usedBytes = bytes.i;
142
+ const init = bytes[usedBytes];
143
+ const kind = init & 3;
144
+ if (kind !== 3) {
145
+ const nBytes2 = kind === 2 ? 4 : kind + 1;
146
+ return bytesToIntType[nBytes2](bytes) >>> 2;
147
+ }
148
+ const nBytes = (init >>> 2) + 4;
149
+ const start = usedBytes + 1;
150
+ bytes.i += nBytes + 1;
151
+ let result = 0n;
152
+ for (let i = nBytes - 1; i >= 0; i--)
153
+ result = result << 8n | BigInt(bytes[start + i]);
154
+ return result;
155
+ });
156
+ var compactEnc = (input) => {
157
+ if (input < 0) {
158
+ throw new Error(`Wrong Compat input (${input})`);
159
+ }
160
+ if (input < 1 << 6) {
161
+ const temp = new Uint8Array(1);
162
+ temp[0] = Number(input) << 2;
163
+ return temp;
164
+ }
165
+ if (input < 1 << 14) {
166
+ const temp = new Uint8Array(2);
167
+ let pInput = (Number(input) << 2) + 1;
168
+ const dv = new DataView(temp.buffer);
169
+ dv.setUint16(0, pInput, true);
170
+ return temp;
171
+ }
172
+ if (input < 1 << 30) {
173
+ const temp = new Uint8Array(4);
174
+ let pInput = (Number(input) << 2) + 2;
175
+ const dv = new DataView(temp.buffer);
176
+ dv.setUint32(0, pInput, true);
177
+ return temp;
178
+ }
179
+ const result = [];
180
+ let tmp = BigInt(input);
181
+ while (tmp > 0) {
182
+ result.push(Number(tmp));
183
+ tmp >>= 8n;
184
+ }
185
+ result.unshift((result.length - 4 << 2) + 3);
186
+ return new Uint8Array(result);
187
+ };
188
+ var compact = createCodec(compactEnc, compactDec);
189
+
190
+ // src/codecs/str.ts
191
+ var textEncoder = new TextEncoder();
192
+ var strEnc = (str2) => {
193
+ const val = textEncoder.encode(str2);
194
+ return mergeUint8(compact.enc(val.length), val);
195
+ };
196
+ var textDecoder = new TextDecoder();
197
+ var strDec = toInternalBytes((bytes) => {
198
+ let nElements = compact.dec(bytes);
199
+ const dv = new DataView(bytes.buffer, bytes.i, nElements);
200
+ bytes.i += nElements;
201
+ return textDecoder.decode(dv);
202
+ });
203
+ var str = createCodec(strEnc, strDec);
204
+
205
+ // src/codecs/void.ts
206
+ var emptyArr = new Uint8Array(0);
207
+ var _void = createCodec(() => emptyArr, Function.prototype);
208
+
209
+ // src/codecs/Bytes.ts
210
+ var BytesEnc = (nBytes) => (bytes) => bytes.length === nBytes ? bytes : bytes.slice(0, nBytes);
211
+ var BytesDec = (nBytes) => toInternalBytes((bytes) => {
212
+ const nUsedBytes = bytes.i;
213
+ const len = nBytes !== Infinity ? nBytes : bytes.byteLength - nUsedBytes;
214
+ const result = new Uint8Array(bytes.buffer, nUsedBytes, len);
215
+ bytes.i += len;
216
+ return result;
217
+ });
218
+ var Bytes = (nBytes) => createCodec(BytesEnc(nBytes), BytesDec(nBytes));
219
+ Bytes.enc = BytesEnc;
220
+ Bytes.dec = BytesDec;
221
+
222
+ // src/codecs/Enum.ts
223
+ var enumEnc = (inner) => {
224
+ const keys = Object.keys(inner);
225
+ return ({ tag, value }) => {
226
+ const idx = keys.indexOf(tag);
227
+ return mergeUint8(u8.enc(idx), inner[tag](value));
228
+ };
229
+ };
230
+ var enumDec = (inner) => {
231
+ const entries = Object.entries(inner);
232
+ return toInternalBytes((bytes) => {
233
+ const idx = u8.dec(bytes);
234
+ const [tag, innerDecoder] = entries[idx];
235
+ const innerResult = innerDecoder(bytes);
236
+ return {
237
+ tag,
238
+ value: innerResult
239
+ };
240
+ });
241
+ };
242
+ var Enum = (inner) => createCodec(enumEnc(mapObject(inner, ([encoder]) => encoder)), enumDec(mapObject(inner, ([, decoder]) => decoder)));
243
+ Enum.enc = enumEnc;
244
+ Enum.dec = enumDec;
245
+
246
+ // src/codecs/Option.ts
247
+ var OptionDec = (inner) => toInternalBytes((bytes) => {
248
+ const val = u8.dec(bytes);
249
+ if (val === 0)
250
+ return void 0;
251
+ return inner === bool[1] ? val === 1 : inner(bytes);
252
+ });
253
+ var OptionEnc = (inner) => (value) => {
254
+ const result = new Uint8Array(1);
255
+ if (value === void 0) {
256
+ result[0] = 0;
257
+ return result;
258
+ }
259
+ result[0] = 1;
260
+ if (inner === bool[0]) {
261
+ result[0] = value ? 1 : 2;
262
+ return result;
263
+ }
264
+ return mergeUint8(result, inner(value));
265
+ };
266
+ var Option = (inner) => createCodec(OptionEnc(inner[0]), OptionDec(inner[1]));
267
+ Option.enc = OptionEnc;
268
+ Option.dec = OptionDec;
269
+
270
+ // src/codecs/Result.ts
271
+ var ResultDec = (okDecoder, koDecoder) => toInternalBytes((bytes) => {
272
+ const val = u8[1](bytes);
273
+ const success = val === 0;
274
+ const decoder = success ? okDecoder : koDecoder;
275
+ const value = decoder(bytes);
276
+ return { success, value };
277
+ });
278
+ var ResultEnc = (okEncoder, koEncoder) => ({ success, value }) => mergeUint8(u8[0](success ? 0 : 1), (success ? okEncoder : koEncoder)(value));
279
+ var Result = (okCodec, koCodec) => createCodec(ResultEnc(okCodec[0], koCodec[0]), ResultDec(okCodec[1], koCodec[1]));
280
+ Result.dec = ResultDec;
281
+ Result.enc = ResultEnc;
282
+
283
+ // src/codecs/Tuple.ts
284
+ var TupleDec = (...decoders) => toInternalBytes((bytes) => decoders.map((decoder) => decoder(bytes)));
285
+ var TupleEnc = (...encoders) => (values) => mergeUint8(...values.map((value, idx) => encoders[idx](value)));
286
+ var Tuple = (...codecs) => createCodec(TupleEnc(...codecs.map(([encoder]) => encoder)), TupleDec(...codecs.map(([, decoder]) => decoder)));
287
+ Tuple.enc = TupleEnc;
288
+ Tuple.dec = TupleDec;
289
+
290
+ // src/codecs/Struct.ts
291
+ var StructEnc = (encoders) => {
292
+ const keys = Object.keys(encoders);
293
+ return enhanceEncoder(Tuple.enc(...Object.values(encoders)), (input) => keys.map((k) => input[k]));
294
+ };
295
+ var StructDec = (decoders) => {
296
+ const keys = Object.keys(decoders);
297
+ return enhanceDecoder(Tuple.dec(...Object.values(decoders)), (tuple) => Object.fromEntries(tuple.map((value, idx) => [keys[idx], value])));
298
+ };
299
+ var Struct = (codecs) => createCodec(StructEnc(mapObject(codecs, (x) => x[0])), StructDec(mapObject(codecs, (x) => x[1])));
300
+ Struct.enc = StructEnc;
301
+ Struct.dec = StructDec;
302
+
303
+ // src/codecs/Vector.ts
304
+ var VectorEnc = (inner, size) => size > 0 ? (value) => mergeUint8(...value.map(inner)) : (value) => mergeUint8(compact.enc(value.length), ...value.map(inner));
305
+ function VectorDec(getter, size) {
306
+ return toInternalBytes((bytes) => {
307
+ const nElements = size > 0 ? size : compact.dec(bytes);
308
+ const result = new Array(nElements);
309
+ for (let i = 0; i < nElements; i++) {
310
+ const current = getter(bytes);
311
+ result[i] = current;
312
+ }
313
+ return result;
314
+ });
315
+ }
316
+ function Vector(inner, size) {
317
+ return createCodec(VectorEnc(inner[0], size), VectorDec(inner[1], size));
318
+ }
319
+ Vector.enc = VectorEnc;
320
+ Vector.dec = VectorDec;
321
+ export {
322
+ Bytes,
323
+ Enum,
324
+ Option,
325
+ Result,
326
+ Struct,
327
+ Tuple,
328
+ Vector,
329
+ _void,
330
+ bool,
331
+ compact,
332
+ createCodec,
333
+ enhanceCodec,
334
+ enhanceDecoder,
335
+ enhanceEncoder,
336
+ i128,
337
+ i16,
338
+ i32,
339
+ i64,
340
+ i8,
341
+ str,
342
+ u128,
343
+ u16,
344
+ u32,
345
+ u64,
346
+ u8
347
+ };
348
+ //# sourceMappingURL=scale-ts.es2019.mjs.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/fixed-width-ints.ts", "../src/codecs/bool.ts", "../src/codecs/compact.ts", "../src/codecs/str.ts", "../src/codecs/void.ts", "../src/codecs/Bytes.ts", "../src/codecs/Enum.ts", "../src/codecs/Option.ts", "../src/codecs/Result.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 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 typeof buffer === \"string\"\n ? fromHex(buffer).buffer\n : buffer instanceof Uint8Array\n ? buffer.buffer\n : buffer,\n ),\n )\n", "export const mergeUint8 = (...inputs: Array<Uint8Array>): Uint8Array => {\n const totalLen = inputs.reduce((acc, a) => acc + a.byteLength, 0)\n const result = new Uint8Array(totalLen)\n\n for (let idx = 0, at = 0; idx < inputs.length; 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 { createCodec } from \"../utils\"\nimport { Codec, Decoder, Encoder } from \"../types\"\nimport { toInternalBytes } from \"../internal\"\n\nfunction decodeInt(nBytes: 8, getter: keyof DataView): Decoder<bigint>\nfunction decodeInt(nBytes: number, getter: keyof DataView): Decoder<number>\nfunction decodeInt(\n nBytes: number,\n getter: keyof DataView,\n): Decoder<number> | Decoder<bigint> {\n return toInternalBytes((bytes) => {\n const result = (bytes.v[getter] as any)(bytes.i, true) as number\n bytes.i += nBytes\n return result\n })\n}\n\nfunction encodeInt(nBytes: 8, setter: keyof DataView): Encoder<bigint>\nfunction encodeInt(nBytes: number, setter: keyof DataView): Encoder<number>\nfunction encodeInt(\n nBytes: number,\n setter: keyof DataView,\n): Encoder<number> | Encoder<bigint> {\n return (input: number | bigint) => {\n const result = new Uint8Array(nBytes)\n const dv = new DataView(result.buffer)\n ;(dv[setter] as any)(0, input, true)\n return result\n }\n}\n\nfunction intCodec(\n nBytes: 8,\n getter: keyof DataView,\n setter: keyof DataView,\n): Codec<bigint>\nfunction intCodec(\n nBytes: number,\n getter: keyof DataView,\n setter: keyof DataView,\n): Codec<number>\nfunction intCodec(\n nBytes: number,\n getter: keyof DataView,\n setter: keyof DataView,\n): Codec<bigint> | Codec<number> {\n return createCodec(encodeInt(nBytes, setter), decodeInt(nBytes, getter))\n}\n\nexport const u8 = intCodec(1, \"getUint8\", \"setUint8\")\nexport const u16 = intCodec(2, \"getUint16\", \"setUint16\")\nexport const u32 = intCodec(4, \"getUint32\", \"setUint32\")\nexport const u64 = intCodec(8, \"getBigUint64\", \"setBigUint64\")\nexport const i8 = intCodec(1, \"getInt8\", \"setInt8\")\nexport const i16 = intCodec(2, \"getInt16\", \"setInt16\")\nexport const i32 = intCodec(4, \"getInt32\", \"setInt32\")\nexport const i64 = intCodec(8, \"getBigInt64\", \"setBigInt64\")\n\nconst x128Enc: Encoder<bigint> = (value) => {\n const result = new Uint8Array(16)\n const dv = new DataView(result.buffer)\n dv.setBigInt64(0, value, true)\n dv.setBigInt64(8, value >> 64n, true)\n return result\n}\n\nconst create128Dec = (isSigned?: number): Decoder<bigint> =>\n toInternalBytes((input) => {\n const { v, i } = input\n const right = v.getBigUint64(i, true)\n const left = v[isSigned ? \"getBigInt64\" : \"getBigUint64\"](i + 8, true)\n input.i += 16\n return (left << 64n) | right\n })\n\nexport const u128 = createCodec(x128Enc, create128Dec())\nexport const i128 = createCodec(x128Enc, create128Dec(1))\n", "import { Codec } from \"../types\"\nimport { enhanceCodec } from \"../\"\nimport { u8 } from \"./fixed-width-ints\"\n\nconst booleanToNumber = (value: boolean) => (value ? 1 : 0)\n\nexport const bool: Codec<boolean> = enhanceCodec(u8, booleanToNumber, Boolean)\n", "import { createCodec } from \"../\"\nimport { toInternalBytes } from \"../internal\"\nimport { u8, u16, u32 } from \"./fixed-width-ints\"\nimport { Decoder, Encoder, Codec } from \"../types\"\n\nconst bytesToIntType = {\n [1]: u8[1],\n [2]: u16[1],\n [4]: u32[1],\n} as const\n\nconst compactDec: Decoder<number | bigint> = toInternalBytes<number | bigint>(\n (bytes) => {\n let usedBytes = bytes.i\n const init = bytes[usedBytes]\n\n const kind = init & 3\n\n if (kind !== 3) {\n const nBytes = kind === 2 ? 4 : kind + 1\n return bytesToIntType[nBytes as 1 | 2 | 4](bytes) >>> 2\n }\n\n const nBytes = (init >>> 2) + 4\n const start = usedBytes + 1\n bytes.i += nBytes + 1\n\n let result = 0n\n for (let i = nBytes - 1; i >= 0; i--)\n result = (result << 8n) | BigInt(bytes[start + i])\n\n return result\n },\n)\n\nconst compactEnc: Encoder<number | bigint> = (input) => {\n if (input < 0) {\n throw new Error(`Wrong Compat input (${input})`)\n }\n if (input < 1 << 6) {\n const temp = new Uint8Array(1)\n temp[0] = Number(input) << 2\n return temp\n }\n if (input < 1 << 14) {\n const temp = new Uint8Array(2)\n let pInput = (Number(input) << 2) + 1\n const dv = new DataView(temp.buffer)\n dv.setUint16(0, pInput, true)\n return temp\n }\n if (input < 1 << 30) {\n const temp = new Uint8Array(4)\n let pInput = (Number(input) << 2) + 2\n const dv = new DataView(temp.buffer)\n dv.setUint32(0, pInput, true)\n return temp\n }\n\n const result: number[] = []\n let tmp = BigInt(input)\n while (tmp > 0) {\n result.push(Number(tmp))\n tmp >>= 8n\n }\n result.unshift(((result.length - 4) << 2) + 3)\n return new Uint8Array(result)\n}\n\nexport const compact: Codec<number | bigint> = createCodec(\n compactEnc,\n compactDec,\n)\n", "import { createCodec, Decoder, Encoder } from \"../\"\nimport { toInternalBytes, mergeUint8 } from \"../internal\"\nimport { compact } from \"./compact\"\n\nconst textEncoder = new TextEncoder()\nconst strEnc: Encoder<string> = (str) => {\n const val = textEncoder.encode(str)\n return mergeUint8(compact.enc(val.length), val)\n}\n\nconst textDecoder = new TextDecoder()\nconst strDec: Decoder<string> = toInternalBytes((bytes) => {\n let nElements = compact.dec(bytes) as number\n const dv = new DataView(bytes.buffer, bytes.i, nElements)\n bytes.i += nElements\n return textDecoder.decode(dv)\n})\n\nexport const str = createCodec(strEnc, strDec)\n", "import { Codec } from \"../types\"\nimport { createCodec } from \"../\"\n\nconst emptyArr = new Uint8Array(0)\nexport const _void: Codec<undefined> = createCodec(\n () => emptyArr,\n Function.prototype as () => undefined,\n)\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 bytes.length === nBytes ? bytes : bytes.slice(0, nBytes)\n\nconst BytesDec = (nBytes: number): Decoder<Uint8Array> =>\n toInternalBytes((bytes) => {\n const nUsedBytes = bytes.i\n const len = nBytes !== Infinity ? nBytes : bytes.byteLength - nUsedBytes\n const result = new Uint8Array(bytes.buffer, nUsedBytes, len)\n bytes.i += len\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, StringRecord } from \"../types\"\nimport { toInternalBytes, mapObject, mergeUint8 } from \"../internal\"\nimport { createCodec, u8 } from \"../\"\n\nconst enumEnc = <\n O extends StringRecord<Encoder<any>>,\n OT extends {\n [K in keyof O]: O[K] extends Encoder<infer D>\n ? D extends undefined\n ? { tag: K; value?: undefined }\n : { tag: K; value: D }\n : unknown\n },\n>(\n inner: O,\n): Encoder<OT[keyof O]> => {\n const keys = Object.keys(inner)\n return ({ tag, value }: any) => {\n const idx = keys.indexOf(tag)\n return mergeUint8(u8.enc(idx), (inner as any)[tag](value))\n }\n}\n\nconst enumDec = <\n O extends StringRecord<Decoder<any>>,\n OT extends {\n [K in keyof O]: O[K] extends Decoder<infer D>\n ? D extends undefined\n ? { tag: K; value?: undefined }\n : { tag: K; value: D }\n : unknown\n },\n>(\n inner: O,\n): Decoder<OT[keyof O]> => {\n const entries = Object.entries(inner)\n\n return toInternalBytes((bytes) => {\n const idx = u8.dec(bytes)\n const [tag, innerDecoder] = entries[idx]\n const innerResult = innerDecoder(bytes)\n\n return {\n tag,\n value: innerResult,\n } as OT[keyof O]\n })\n}\n\nexport const Enum = <\n O extends StringRecord<Codec<any>>,\n OT extends {\n [K in keyof O]: O[K] extends Codec<infer D>\n ? D extends undefined\n ? { tag: K; value?: undefined }\n : { tag: K; value: D }\n : unknown\n },\n>(\n inner: O,\n): Codec<OT[keyof O]> =>\n createCodec<OT[keyof O]>(\n enumEnc(mapObject(inner, ([encoder]) => encoder) as any) as any,\n enumDec(mapObject(inner, ([, decoder]) => decoder) as any),\n )\n\nEnum.enc = enumEnc\nEnum.dec = enumDec\n", "import { Decoder, Encoder, Codec } from \"../types\"\nimport { toInternalBytes, mergeUint8 } from \"../internal\"\nimport { createCodec } from \"../utils\"\nimport { u8 } from \"./fixed-width-ints\"\nimport { bool } from \"./bool\"\n\nconst OptionDec = <T>(inner: Decoder<T>): Decoder<T | undefined | void> =>\n toInternalBytes<T | undefined>((bytes) => {\n const val = u8.dec(bytes)\n if (val === 0) return undefined\n\n return inner === (bool[1] as any)\n ? ((val === 1) as unknown as T)\n : inner(bytes)\n })\n\nconst OptionEnc =\n <T>(inner: Encoder<T>): Encoder<T | undefined | void> =>\n (value) => {\n const result = new Uint8Array(1)\n if (value === undefined) {\n result[0] = 0\n return result\n }\n\n result[0] = 1\n if (inner === (bool[0] as any)) {\n result[0] = value ? 1 : 2\n return result\n }\n\n return mergeUint8(result, inner(value))\n }\n\nexport const Option = <T>(inner: Codec<T>): Codec<T | undefined | void> =>\n createCodec(OptionEnc(inner[0]), OptionDec(inner[1]))\n\nOption.enc = OptionEnc\nOption.dec = OptionDec\n", "import { createCodec } from \"../utils\"\nimport { mergeUint8, toInternalBytes } from \"../internal\"\nimport { Decoder, Encoder, Codec } from \"../types\"\nimport { u8 } from \"./fixed-width-ints\"\n\ntype ResultPayload<OK, KO> =\n | { success: true; value: OK }\n | { success: false; value: KO }\n\nconst ResultDec = <OK, KO>(\n okDecoder: Decoder<OK>,\n koDecoder: Decoder<KO>,\n): Decoder<ResultPayload<OK, KO>> =>\n toInternalBytes((bytes) => {\n const val = u8[1](bytes)\n const success = val === 0\n const decoder = success ? okDecoder : koDecoder\n const value = decoder(bytes)\n return { success, value } as ResultPayload<OK, KO>\n })\n\nconst ResultEnc =\n <OK, KO>(\n okEncoder: Encoder<OK>,\n koEncoder: Encoder<KO>,\n ): Encoder<ResultPayload<OK, KO>> =>\n ({ success, value }) =>\n mergeUint8(\n u8[0](success ? 0 : 1),\n (success ? okEncoder : koEncoder)(value as any),\n )\n\nexport const Result = <OK, KO>(\n okCodec: Codec<OK>,\n koCodec: Codec<KO>,\n): Codec<ResultPayload<OK, KO>> =>\n createCodec(\n ResultEnc(okCodec[0], koCodec[0]),\n ResultDec(okCodec[1], koCodec[1]),\n )\n\nResult.dec = ResultDec\nResult.enc = ResultEnc\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 { compact } from \"./compact\"\n\nconst VectorEnc = <T>(inner: Encoder<T>, size?: number): Encoder<Array<T>> =>\n size! > 0\n ? (value) => mergeUint8(...value.map(inner))\n : (value) => mergeUint8(compact.enc(value.length), ...value.map(inner))\n\nfunction VectorDec<T>(getter: Decoder<T>, size?: number): Decoder<Array<T>> {\n return toInternalBytes((bytes) => {\n const nElements = size! > 0 ? size! : compact.dec(bytes)\n const result = new Array(nElements as number)\n\n for (let i = 0; i < nElements; i++) {\n const current = getter(bytes)\n result[i] = current\n }\n\n return result\n })\n}\n\nexport function Vector<T>(inner: Codec<T>, size?: number): Codec<Array<T>> {\n return createCodec(VectorEnc(inner[0], size), VectorDec(inner[1], size))\n}\n\nVector.enc = VectorEnc\nVector.dec = VectorDec\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }