@civiwave/mesh-core 0.1.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.
package/dist/index.cjs ADDED
@@ -0,0 +1,1221 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __commonJS = (cb, mod) => function __require() {
9
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
10
+ };
11
+ var __export = (target, all) => {
12
+ for (var name in all)
13
+ __defProp(target, name, { get: all[name], enumerable: true });
14
+ };
15
+ var __copyProps = (to, from, except, desc) => {
16
+ if (from && typeof from === "object" || typeof from === "function") {
17
+ for (let key of __getOwnPropNames(from))
18
+ if (!__hasOwnProp.call(to, key) && key !== except)
19
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
20
+ }
21
+ return to;
22
+ };
23
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
24
+ // If the importer is in node compatibility mode or this is not an ESM
25
+ // file that has been converted to a CommonJS file using a Babel-
26
+ // compatible transform (i.e. "__esModule" has not been set), then set
27
+ // "default" to the CommonJS "module.exports" for node compatibility.
28
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
29
+ mod
30
+ ));
31
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
32
+
33
+ // node_modules/blakejs/util.js
34
+ var require_util = __commonJS({
35
+ "node_modules/blakejs/util.js"(exports2, module2) {
36
+ "use strict";
37
+ var ERROR_MSG_INPUT = "Input must be an string, Buffer or Uint8Array";
38
+ function normalizeInput(input) {
39
+ let ret;
40
+ if (input instanceof Uint8Array) {
41
+ ret = input;
42
+ } else if (typeof input === "string") {
43
+ const encoder = new TextEncoder();
44
+ ret = encoder.encode(input);
45
+ } else {
46
+ throw new Error(ERROR_MSG_INPUT);
47
+ }
48
+ return ret;
49
+ }
50
+ function toHex2(bytes) {
51
+ return Array.prototype.map.call(bytes, function(n) {
52
+ return (n < 16 ? "0" : "") + n.toString(16);
53
+ }).join("");
54
+ }
55
+ function uint32ToHex(val) {
56
+ return (4294967296 + val).toString(16).substring(1);
57
+ }
58
+ function debugPrint(label, arr, size) {
59
+ let msg = "\n" + label + " = ";
60
+ for (let i = 0; i < arr.length; i += 2) {
61
+ if (size === 32) {
62
+ msg += uint32ToHex(arr[i]).toUpperCase();
63
+ msg += " ";
64
+ msg += uint32ToHex(arr[i + 1]).toUpperCase();
65
+ } else if (size === 64) {
66
+ msg += uint32ToHex(arr[i + 1]).toUpperCase();
67
+ msg += uint32ToHex(arr[i]).toUpperCase();
68
+ } else throw new Error("Invalid size " + size);
69
+ if (i % 6 === 4) {
70
+ msg += "\n" + new Array(label.length + 4).join(" ");
71
+ } else if (i < arr.length - 2) {
72
+ msg += " ";
73
+ }
74
+ }
75
+ console.log(msg);
76
+ }
77
+ function testSpeed(hashFn, N, M) {
78
+ let startMs = (/* @__PURE__ */ new Date()).getTime();
79
+ const input = new Uint8Array(N);
80
+ for (let i = 0; i < N; i++) {
81
+ input[i] = i % 256;
82
+ }
83
+ const genMs = (/* @__PURE__ */ new Date()).getTime();
84
+ console.log("Generated random input in " + (genMs - startMs) + "ms");
85
+ startMs = genMs;
86
+ for (let i = 0; i < M; i++) {
87
+ const hashHex = hashFn(input);
88
+ const hashMs = (/* @__PURE__ */ new Date()).getTime();
89
+ const ms = hashMs - startMs;
90
+ startMs = hashMs;
91
+ console.log("Hashed in " + ms + "ms: " + hashHex.substring(0, 20) + "...");
92
+ console.log(
93
+ Math.round(N / (1 << 20) / (ms / 1e3) * 100) / 100 + " MB PER SECOND"
94
+ );
95
+ }
96
+ }
97
+ module2.exports = {
98
+ normalizeInput,
99
+ toHex: toHex2,
100
+ debugPrint,
101
+ testSpeed
102
+ };
103
+ }
104
+ });
105
+
106
+ // node_modules/blakejs/blake2b.js
107
+ var require_blake2b = __commonJS({
108
+ "node_modules/blakejs/blake2b.js"(exports2, module2) {
109
+ "use strict";
110
+ var util = require_util();
111
+ function ADD64AA(v2, a, b) {
112
+ const o0 = v2[a] + v2[b];
113
+ let o1 = v2[a + 1] + v2[b + 1];
114
+ if (o0 >= 4294967296) {
115
+ o1++;
116
+ }
117
+ v2[a] = o0;
118
+ v2[a + 1] = o1;
119
+ }
120
+ function ADD64AC(v2, a, b0, b1) {
121
+ let o0 = v2[a] + b0;
122
+ if (b0 < 0) {
123
+ o0 += 4294967296;
124
+ }
125
+ let o1 = v2[a + 1] + b1;
126
+ if (o0 >= 4294967296) {
127
+ o1++;
128
+ }
129
+ v2[a] = o0;
130
+ v2[a + 1] = o1;
131
+ }
132
+ function B2B_GET32(arr, i) {
133
+ return arr[i] ^ arr[i + 1] << 8 ^ arr[i + 2] << 16 ^ arr[i + 3] << 24;
134
+ }
135
+ function B2B_G(a, b, c, d, ix, iy) {
136
+ const x0 = m[ix];
137
+ const x1 = m[ix + 1];
138
+ const y0 = m[iy];
139
+ const y1 = m[iy + 1];
140
+ ADD64AA(v, a, b);
141
+ ADD64AC(v, a, x0, x1);
142
+ let xor0 = v[d] ^ v[a];
143
+ let xor1 = v[d + 1] ^ v[a + 1];
144
+ v[d] = xor1;
145
+ v[d + 1] = xor0;
146
+ ADD64AA(v, c, d);
147
+ xor0 = v[b] ^ v[c];
148
+ xor1 = v[b + 1] ^ v[c + 1];
149
+ v[b] = xor0 >>> 24 ^ xor1 << 8;
150
+ v[b + 1] = xor1 >>> 24 ^ xor0 << 8;
151
+ ADD64AA(v, a, b);
152
+ ADD64AC(v, a, y0, y1);
153
+ xor0 = v[d] ^ v[a];
154
+ xor1 = v[d + 1] ^ v[a + 1];
155
+ v[d] = xor0 >>> 16 ^ xor1 << 16;
156
+ v[d + 1] = xor1 >>> 16 ^ xor0 << 16;
157
+ ADD64AA(v, c, d);
158
+ xor0 = v[b] ^ v[c];
159
+ xor1 = v[b + 1] ^ v[c + 1];
160
+ v[b] = xor1 >>> 31 ^ xor0 << 1;
161
+ v[b + 1] = xor0 >>> 31 ^ xor1 << 1;
162
+ }
163
+ var BLAKE2B_IV32 = new Uint32Array([
164
+ 4089235720,
165
+ 1779033703,
166
+ 2227873595,
167
+ 3144134277,
168
+ 4271175723,
169
+ 1013904242,
170
+ 1595750129,
171
+ 2773480762,
172
+ 2917565137,
173
+ 1359893119,
174
+ 725511199,
175
+ 2600822924,
176
+ 4215389547,
177
+ 528734635,
178
+ 327033209,
179
+ 1541459225
180
+ ]);
181
+ var SIGMA8 = [
182
+ 0,
183
+ 1,
184
+ 2,
185
+ 3,
186
+ 4,
187
+ 5,
188
+ 6,
189
+ 7,
190
+ 8,
191
+ 9,
192
+ 10,
193
+ 11,
194
+ 12,
195
+ 13,
196
+ 14,
197
+ 15,
198
+ 14,
199
+ 10,
200
+ 4,
201
+ 8,
202
+ 9,
203
+ 15,
204
+ 13,
205
+ 6,
206
+ 1,
207
+ 12,
208
+ 0,
209
+ 2,
210
+ 11,
211
+ 7,
212
+ 5,
213
+ 3,
214
+ 11,
215
+ 8,
216
+ 12,
217
+ 0,
218
+ 5,
219
+ 2,
220
+ 15,
221
+ 13,
222
+ 10,
223
+ 14,
224
+ 3,
225
+ 6,
226
+ 7,
227
+ 1,
228
+ 9,
229
+ 4,
230
+ 7,
231
+ 9,
232
+ 3,
233
+ 1,
234
+ 13,
235
+ 12,
236
+ 11,
237
+ 14,
238
+ 2,
239
+ 6,
240
+ 5,
241
+ 10,
242
+ 4,
243
+ 0,
244
+ 15,
245
+ 8,
246
+ 9,
247
+ 0,
248
+ 5,
249
+ 7,
250
+ 2,
251
+ 4,
252
+ 10,
253
+ 15,
254
+ 14,
255
+ 1,
256
+ 11,
257
+ 12,
258
+ 6,
259
+ 8,
260
+ 3,
261
+ 13,
262
+ 2,
263
+ 12,
264
+ 6,
265
+ 10,
266
+ 0,
267
+ 11,
268
+ 8,
269
+ 3,
270
+ 4,
271
+ 13,
272
+ 7,
273
+ 5,
274
+ 15,
275
+ 14,
276
+ 1,
277
+ 9,
278
+ 12,
279
+ 5,
280
+ 1,
281
+ 15,
282
+ 14,
283
+ 13,
284
+ 4,
285
+ 10,
286
+ 0,
287
+ 7,
288
+ 6,
289
+ 3,
290
+ 9,
291
+ 2,
292
+ 8,
293
+ 11,
294
+ 13,
295
+ 11,
296
+ 7,
297
+ 14,
298
+ 12,
299
+ 1,
300
+ 3,
301
+ 9,
302
+ 5,
303
+ 0,
304
+ 15,
305
+ 4,
306
+ 8,
307
+ 6,
308
+ 2,
309
+ 10,
310
+ 6,
311
+ 15,
312
+ 14,
313
+ 9,
314
+ 11,
315
+ 3,
316
+ 0,
317
+ 8,
318
+ 12,
319
+ 2,
320
+ 13,
321
+ 7,
322
+ 1,
323
+ 4,
324
+ 10,
325
+ 5,
326
+ 10,
327
+ 2,
328
+ 8,
329
+ 4,
330
+ 7,
331
+ 6,
332
+ 1,
333
+ 5,
334
+ 15,
335
+ 11,
336
+ 9,
337
+ 14,
338
+ 3,
339
+ 12,
340
+ 13,
341
+ 0,
342
+ 0,
343
+ 1,
344
+ 2,
345
+ 3,
346
+ 4,
347
+ 5,
348
+ 6,
349
+ 7,
350
+ 8,
351
+ 9,
352
+ 10,
353
+ 11,
354
+ 12,
355
+ 13,
356
+ 14,
357
+ 15,
358
+ 14,
359
+ 10,
360
+ 4,
361
+ 8,
362
+ 9,
363
+ 15,
364
+ 13,
365
+ 6,
366
+ 1,
367
+ 12,
368
+ 0,
369
+ 2,
370
+ 11,
371
+ 7,
372
+ 5,
373
+ 3
374
+ ];
375
+ var SIGMA82 = new Uint8Array(
376
+ SIGMA8.map(function(x) {
377
+ return x * 2;
378
+ })
379
+ );
380
+ var v = new Uint32Array(32);
381
+ var m = new Uint32Array(32);
382
+ function blake2bCompress(ctx, last) {
383
+ let i = 0;
384
+ for (i = 0; i < 16; i++) {
385
+ v[i] = ctx.h[i];
386
+ v[i + 16] = BLAKE2B_IV32[i];
387
+ }
388
+ v[24] = v[24] ^ ctx.t;
389
+ v[25] = v[25] ^ ctx.t / 4294967296;
390
+ if (last) {
391
+ v[28] = ~v[28];
392
+ v[29] = ~v[29];
393
+ }
394
+ for (i = 0; i < 32; i++) {
395
+ m[i] = B2B_GET32(ctx.b, 4 * i);
396
+ }
397
+ for (i = 0; i < 12; i++) {
398
+ B2B_G(0, 8, 16, 24, SIGMA82[i * 16 + 0], SIGMA82[i * 16 + 1]);
399
+ B2B_G(2, 10, 18, 26, SIGMA82[i * 16 + 2], SIGMA82[i * 16 + 3]);
400
+ B2B_G(4, 12, 20, 28, SIGMA82[i * 16 + 4], SIGMA82[i * 16 + 5]);
401
+ B2B_G(6, 14, 22, 30, SIGMA82[i * 16 + 6], SIGMA82[i * 16 + 7]);
402
+ B2B_G(0, 10, 20, 30, SIGMA82[i * 16 + 8], SIGMA82[i * 16 + 9]);
403
+ B2B_G(2, 12, 22, 24, SIGMA82[i * 16 + 10], SIGMA82[i * 16 + 11]);
404
+ B2B_G(4, 14, 16, 26, SIGMA82[i * 16 + 12], SIGMA82[i * 16 + 13]);
405
+ B2B_G(6, 8, 18, 28, SIGMA82[i * 16 + 14], SIGMA82[i * 16 + 15]);
406
+ }
407
+ for (i = 0; i < 16; i++) {
408
+ ctx.h[i] = ctx.h[i] ^ v[i] ^ v[i + 16];
409
+ }
410
+ }
411
+ var parameterBlock = new Uint8Array([
412
+ 0,
413
+ 0,
414
+ 0,
415
+ 0,
416
+ // 0: outlen, keylen, fanout, depth
417
+ 0,
418
+ 0,
419
+ 0,
420
+ 0,
421
+ // 4: leaf length, sequential mode
422
+ 0,
423
+ 0,
424
+ 0,
425
+ 0,
426
+ // 8: node offset
427
+ 0,
428
+ 0,
429
+ 0,
430
+ 0,
431
+ // 12: node offset
432
+ 0,
433
+ 0,
434
+ 0,
435
+ 0,
436
+ // 16: node depth, inner length, rfu
437
+ 0,
438
+ 0,
439
+ 0,
440
+ 0,
441
+ // 20: rfu
442
+ 0,
443
+ 0,
444
+ 0,
445
+ 0,
446
+ // 24: rfu
447
+ 0,
448
+ 0,
449
+ 0,
450
+ 0,
451
+ // 28: rfu
452
+ 0,
453
+ 0,
454
+ 0,
455
+ 0,
456
+ // 32: salt
457
+ 0,
458
+ 0,
459
+ 0,
460
+ 0,
461
+ // 36: salt
462
+ 0,
463
+ 0,
464
+ 0,
465
+ 0,
466
+ // 40: salt
467
+ 0,
468
+ 0,
469
+ 0,
470
+ 0,
471
+ // 44: salt
472
+ 0,
473
+ 0,
474
+ 0,
475
+ 0,
476
+ // 48: personal
477
+ 0,
478
+ 0,
479
+ 0,
480
+ 0,
481
+ // 52: personal
482
+ 0,
483
+ 0,
484
+ 0,
485
+ 0,
486
+ // 56: personal
487
+ 0,
488
+ 0,
489
+ 0,
490
+ 0
491
+ // 60: personal
492
+ ]);
493
+ function blake2bInit(outlen, key, salt, personal) {
494
+ if (outlen === 0 || outlen > 64) {
495
+ throw new Error("Illegal output length, expected 0 < length <= 64");
496
+ }
497
+ if (key && key.length > 64) {
498
+ throw new Error("Illegal key, expected Uint8Array with 0 < length <= 64");
499
+ }
500
+ if (salt && salt.length !== 16) {
501
+ throw new Error("Illegal salt, expected Uint8Array with length is 16");
502
+ }
503
+ if (personal && personal.length !== 16) {
504
+ throw new Error("Illegal personal, expected Uint8Array with length is 16");
505
+ }
506
+ const ctx = {
507
+ b: new Uint8Array(128),
508
+ h: new Uint32Array(16),
509
+ t: 0,
510
+ // input count
511
+ c: 0,
512
+ // pointer within buffer
513
+ outlen
514
+ // output length in bytes
515
+ };
516
+ parameterBlock.fill(0);
517
+ parameterBlock[0] = outlen;
518
+ if (key) parameterBlock[1] = key.length;
519
+ parameterBlock[2] = 1;
520
+ parameterBlock[3] = 1;
521
+ if (salt) parameterBlock.set(salt, 32);
522
+ if (personal) parameterBlock.set(personal, 48);
523
+ for (let i = 0; i < 16; i++) {
524
+ ctx.h[i] = BLAKE2B_IV32[i] ^ B2B_GET32(parameterBlock, i * 4);
525
+ }
526
+ if (key) {
527
+ blake2bUpdate(ctx, key);
528
+ ctx.c = 128;
529
+ }
530
+ return ctx;
531
+ }
532
+ function blake2bUpdate(ctx, input) {
533
+ for (let i = 0; i < input.length; i++) {
534
+ if (ctx.c === 128) {
535
+ ctx.t += ctx.c;
536
+ blake2bCompress(ctx, false);
537
+ ctx.c = 0;
538
+ }
539
+ ctx.b[ctx.c++] = input[i];
540
+ }
541
+ }
542
+ function blake2bFinal(ctx) {
543
+ ctx.t += ctx.c;
544
+ while (ctx.c < 128) {
545
+ ctx.b[ctx.c++] = 0;
546
+ }
547
+ blake2bCompress(ctx, true);
548
+ const out = new Uint8Array(ctx.outlen);
549
+ for (let i = 0; i < ctx.outlen; i++) {
550
+ out[i] = ctx.h[i >> 2] >> 8 * (i & 3);
551
+ }
552
+ return out;
553
+ }
554
+ function blake2b2(input, key, outlen, salt, personal) {
555
+ outlen = outlen || 64;
556
+ input = util.normalizeInput(input);
557
+ if (salt) {
558
+ salt = util.normalizeInput(salt);
559
+ }
560
+ if (personal) {
561
+ personal = util.normalizeInput(personal);
562
+ }
563
+ const ctx = blake2bInit(outlen, key, salt, personal);
564
+ blake2bUpdate(ctx, input);
565
+ return blake2bFinal(ctx);
566
+ }
567
+ function blake2bHex(input, key, outlen, salt, personal) {
568
+ const output = blake2b2(input, key, outlen, salt, personal);
569
+ return util.toHex(output);
570
+ }
571
+ module2.exports = {
572
+ blake2b: blake2b2,
573
+ blake2bHex,
574
+ blake2bInit,
575
+ blake2bUpdate,
576
+ blake2bFinal
577
+ };
578
+ }
579
+ });
580
+
581
+ // node_modules/blakejs/blake2s.js
582
+ var require_blake2s = __commonJS({
583
+ "node_modules/blakejs/blake2s.js"(exports2, module2) {
584
+ "use strict";
585
+ var util = require_util();
586
+ function B2S_GET32(v2, i) {
587
+ return v2[i] ^ v2[i + 1] << 8 ^ v2[i + 2] << 16 ^ v2[i + 3] << 24;
588
+ }
589
+ function B2S_G(a, b, c, d, x, y) {
590
+ v[a] = v[a] + v[b] + x;
591
+ v[d] = ROTR32(v[d] ^ v[a], 16);
592
+ v[c] = v[c] + v[d];
593
+ v[b] = ROTR32(v[b] ^ v[c], 12);
594
+ v[a] = v[a] + v[b] + y;
595
+ v[d] = ROTR32(v[d] ^ v[a], 8);
596
+ v[c] = v[c] + v[d];
597
+ v[b] = ROTR32(v[b] ^ v[c], 7);
598
+ }
599
+ function ROTR32(x, y) {
600
+ return x >>> y ^ x << 32 - y;
601
+ }
602
+ var BLAKE2S_IV = new Uint32Array([
603
+ 1779033703,
604
+ 3144134277,
605
+ 1013904242,
606
+ 2773480762,
607
+ 1359893119,
608
+ 2600822924,
609
+ 528734635,
610
+ 1541459225
611
+ ]);
612
+ var SIGMA = new Uint8Array([
613
+ 0,
614
+ 1,
615
+ 2,
616
+ 3,
617
+ 4,
618
+ 5,
619
+ 6,
620
+ 7,
621
+ 8,
622
+ 9,
623
+ 10,
624
+ 11,
625
+ 12,
626
+ 13,
627
+ 14,
628
+ 15,
629
+ 14,
630
+ 10,
631
+ 4,
632
+ 8,
633
+ 9,
634
+ 15,
635
+ 13,
636
+ 6,
637
+ 1,
638
+ 12,
639
+ 0,
640
+ 2,
641
+ 11,
642
+ 7,
643
+ 5,
644
+ 3,
645
+ 11,
646
+ 8,
647
+ 12,
648
+ 0,
649
+ 5,
650
+ 2,
651
+ 15,
652
+ 13,
653
+ 10,
654
+ 14,
655
+ 3,
656
+ 6,
657
+ 7,
658
+ 1,
659
+ 9,
660
+ 4,
661
+ 7,
662
+ 9,
663
+ 3,
664
+ 1,
665
+ 13,
666
+ 12,
667
+ 11,
668
+ 14,
669
+ 2,
670
+ 6,
671
+ 5,
672
+ 10,
673
+ 4,
674
+ 0,
675
+ 15,
676
+ 8,
677
+ 9,
678
+ 0,
679
+ 5,
680
+ 7,
681
+ 2,
682
+ 4,
683
+ 10,
684
+ 15,
685
+ 14,
686
+ 1,
687
+ 11,
688
+ 12,
689
+ 6,
690
+ 8,
691
+ 3,
692
+ 13,
693
+ 2,
694
+ 12,
695
+ 6,
696
+ 10,
697
+ 0,
698
+ 11,
699
+ 8,
700
+ 3,
701
+ 4,
702
+ 13,
703
+ 7,
704
+ 5,
705
+ 15,
706
+ 14,
707
+ 1,
708
+ 9,
709
+ 12,
710
+ 5,
711
+ 1,
712
+ 15,
713
+ 14,
714
+ 13,
715
+ 4,
716
+ 10,
717
+ 0,
718
+ 7,
719
+ 6,
720
+ 3,
721
+ 9,
722
+ 2,
723
+ 8,
724
+ 11,
725
+ 13,
726
+ 11,
727
+ 7,
728
+ 14,
729
+ 12,
730
+ 1,
731
+ 3,
732
+ 9,
733
+ 5,
734
+ 0,
735
+ 15,
736
+ 4,
737
+ 8,
738
+ 6,
739
+ 2,
740
+ 10,
741
+ 6,
742
+ 15,
743
+ 14,
744
+ 9,
745
+ 11,
746
+ 3,
747
+ 0,
748
+ 8,
749
+ 12,
750
+ 2,
751
+ 13,
752
+ 7,
753
+ 1,
754
+ 4,
755
+ 10,
756
+ 5,
757
+ 10,
758
+ 2,
759
+ 8,
760
+ 4,
761
+ 7,
762
+ 6,
763
+ 1,
764
+ 5,
765
+ 15,
766
+ 11,
767
+ 9,
768
+ 14,
769
+ 3,
770
+ 12,
771
+ 13,
772
+ 0
773
+ ]);
774
+ var v = new Uint32Array(16);
775
+ var m = new Uint32Array(16);
776
+ function blake2sCompress(ctx, last) {
777
+ let i = 0;
778
+ for (i = 0; i < 8; i++) {
779
+ v[i] = ctx.h[i];
780
+ v[i + 8] = BLAKE2S_IV[i];
781
+ }
782
+ v[12] ^= ctx.t;
783
+ v[13] ^= ctx.t / 4294967296;
784
+ if (last) {
785
+ v[14] = ~v[14];
786
+ }
787
+ for (i = 0; i < 16; i++) {
788
+ m[i] = B2S_GET32(ctx.b, 4 * i);
789
+ }
790
+ for (i = 0; i < 10; i++) {
791
+ B2S_G(0, 4, 8, 12, m[SIGMA[i * 16 + 0]], m[SIGMA[i * 16 + 1]]);
792
+ B2S_G(1, 5, 9, 13, m[SIGMA[i * 16 + 2]], m[SIGMA[i * 16 + 3]]);
793
+ B2S_G(2, 6, 10, 14, m[SIGMA[i * 16 + 4]], m[SIGMA[i * 16 + 5]]);
794
+ B2S_G(3, 7, 11, 15, m[SIGMA[i * 16 + 6]], m[SIGMA[i * 16 + 7]]);
795
+ B2S_G(0, 5, 10, 15, m[SIGMA[i * 16 + 8]], m[SIGMA[i * 16 + 9]]);
796
+ B2S_G(1, 6, 11, 12, m[SIGMA[i * 16 + 10]], m[SIGMA[i * 16 + 11]]);
797
+ B2S_G(2, 7, 8, 13, m[SIGMA[i * 16 + 12]], m[SIGMA[i * 16 + 13]]);
798
+ B2S_G(3, 4, 9, 14, m[SIGMA[i * 16 + 14]], m[SIGMA[i * 16 + 15]]);
799
+ }
800
+ for (i = 0; i < 8; i++) {
801
+ ctx.h[i] ^= v[i] ^ v[i + 8];
802
+ }
803
+ }
804
+ function blake2sInit(outlen, key) {
805
+ if (!(outlen > 0 && outlen <= 32)) {
806
+ throw new Error("Incorrect output length, should be in [1, 32]");
807
+ }
808
+ const keylen = key ? key.length : 0;
809
+ if (key && !(keylen > 0 && keylen <= 32)) {
810
+ throw new Error("Incorrect key length, should be in [1, 32]");
811
+ }
812
+ const ctx = {
813
+ h: new Uint32Array(BLAKE2S_IV),
814
+ // hash state
815
+ b: new Uint8Array(64),
816
+ // input block
817
+ c: 0,
818
+ // pointer within block
819
+ t: 0,
820
+ // input count
821
+ outlen
822
+ // output length in bytes
823
+ };
824
+ ctx.h[0] ^= 16842752 ^ keylen << 8 ^ outlen;
825
+ if (keylen > 0) {
826
+ blake2sUpdate(ctx, key);
827
+ ctx.c = 64;
828
+ }
829
+ return ctx;
830
+ }
831
+ function blake2sUpdate(ctx, input) {
832
+ for (let i = 0; i < input.length; i++) {
833
+ if (ctx.c === 64) {
834
+ ctx.t += ctx.c;
835
+ blake2sCompress(ctx, false);
836
+ ctx.c = 0;
837
+ }
838
+ ctx.b[ctx.c++] = input[i];
839
+ }
840
+ }
841
+ function blake2sFinal(ctx) {
842
+ ctx.t += ctx.c;
843
+ while (ctx.c < 64) {
844
+ ctx.b[ctx.c++] = 0;
845
+ }
846
+ blake2sCompress(ctx, true);
847
+ const out = new Uint8Array(ctx.outlen);
848
+ for (let i = 0; i < ctx.outlen; i++) {
849
+ out[i] = ctx.h[i >> 2] >> 8 * (i & 3) & 255;
850
+ }
851
+ return out;
852
+ }
853
+ function blake2s(input, key, outlen) {
854
+ outlen = outlen || 32;
855
+ input = util.normalizeInput(input);
856
+ const ctx = blake2sInit(outlen, key);
857
+ blake2sUpdate(ctx, input);
858
+ return blake2sFinal(ctx);
859
+ }
860
+ function blake2sHex(input, key, outlen) {
861
+ const output = blake2s(input, key, outlen);
862
+ return util.toHex(output);
863
+ }
864
+ module2.exports = {
865
+ blake2s,
866
+ blake2sHex,
867
+ blake2sInit,
868
+ blake2sUpdate,
869
+ blake2sFinal
870
+ };
871
+ }
872
+ });
873
+
874
+ // node_modules/blakejs/index.js
875
+ var require_blakejs = __commonJS({
876
+ "node_modules/blakejs/index.js"(exports2, module2) {
877
+ "use strict";
878
+ var b2b = require_blake2b();
879
+ var b2s = require_blake2s();
880
+ module2.exports = {
881
+ blake2b: b2b.blake2b,
882
+ blake2bHex: b2b.blake2bHex,
883
+ blake2bInit: b2b.blake2bInit,
884
+ blake2bUpdate: b2b.blake2bUpdate,
885
+ blake2bFinal: b2b.blake2bFinal,
886
+ blake2s: b2s.blake2s,
887
+ blake2sHex: b2s.blake2sHex,
888
+ blake2sInit: b2s.blake2sInit,
889
+ blake2sUpdate: b2s.blake2sUpdate,
890
+ blake2sFinal: b2s.blake2sFinal
891
+ };
892
+ }
893
+ });
894
+
895
+ // src/index.ts
896
+ var index_exports = {};
897
+ __export(index_exports, {
898
+ SS58_PREFIX: () => SS58_PREFIX,
899
+ addStake: () => addStake,
900
+ balanceQueryUrl: () => balanceQueryUrl,
901
+ buildDIDDocument: () => buildDIDDocument,
902
+ createWallet: () => createWallet,
903
+ deleteWallet: () => deleteWallet,
904
+ didFromSS58: () => didFromSS58,
905
+ extrinsicUrl: () => extrinsicUrl,
906
+ fromHex: () => fromHex,
907
+ generateDIDHash: () => generateDIDHash,
908
+ generateKeypair: () => generateKeypair,
909
+ getChainMetadata: () => getChainMetadata,
910
+ getKeeperEndpoint: () => getKeeperEndpoint,
911
+ loadWallet: () => loadWallet,
912
+ metadataUrl: () => metadataUrl,
913
+ publicKeyToSS58: () => publicKeyToSS58,
914
+ queryBalance: () => queryBalance,
915
+ registerDID: () => registerDID,
916
+ removeStake: () => removeStake,
917
+ saveWallet: () => saveWallet,
918
+ setKeeperEndpoint: () => setKeeperEndpoint,
919
+ sign: () => sign,
920
+ stakingUrl: () => stakingUrl,
921
+ submitExtrinsic: () => submitExtrinsic,
922
+ submitPalletExtrinsic: () => submitPalletExtrinsic,
923
+ toHex: () => toHex,
924
+ transfer: () => transfer,
925
+ verify: () => verify
926
+ });
927
+ module.exports = __toCommonJS(index_exports);
928
+
929
+ // src/wallet.ts
930
+ var ed = __toESM(require("@noble/ed25519"), 1);
931
+ var WALLET_STORAGE_KEY = "@mesh/wallet";
932
+ var SS58_PREFIX = 42;
933
+ function toHex(bytes) {
934
+ return Array.from(bytes).map((b) => b.toString(16).padStart(2, "0")).join("");
935
+ }
936
+ function fromHex(hex) {
937
+ const bytes = new Uint8Array(hex.length / 2);
938
+ for (let i = 0; i < hex.length; i += 2) {
939
+ bytes[i / 2] = parseInt(hex.substring(i, i + 2), 16);
940
+ }
941
+ return bytes;
942
+ }
943
+ function publicKeyToSS58(pubkey, prefix = SS58_PREFIX) {
944
+ const { blake2b: blake2b2 } = require_blakejs();
945
+ const prefixByte = new Uint8Array([prefix]);
946
+ const payload = new Uint8Array(1 + pubkey.length);
947
+ payload.set(prefixByte, 0);
948
+ payload.set(pubkey, 1);
949
+ const ss58Pre = new TextEncoder().encode("SS58PRE");
950
+ const input = new Uint8Array(ss58Pre.length + payload.length);
951
+ input.set(ss58Pre, 0);
952
+ input.set(payload, ss58Pre.length);
953
+ const hash = blake2b2(input, void 0, 64);
954
+ const checksum = hash.slice(0, 2);
955
+ const full = new Uint8Array(payload.length + 2);
956
+ full.set(payload, 0);
957
+ full.set(checksum, payload.length);
958
+ return base58Encode(full);
959
+ }
960
+ function base58Encode(bytes) {
961
+ const ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
962
+ let leadingZeros = 0;
963
+ for (const b of bytes) {
964
+ if (b !== 0) break;
965
+ leadingZeros++;
966
+ }
967
+ let num = BigInt(0);
968
+ for (const b of bytes) {
969
+ num = num * BigInt(256) + BigInt(b);
970
+ }
971
+ let result = "";
972
+ while (num > BigInt(0)) {
973
+ const rem = Number(num % BigInt(58));
974
+ num = num / BigInt(58);
975
+ result = ALPHABET[rem] + result;
976
+ }
977
+ return "1".repeat(leadingZeros) + result;
978
+ }
979
+ async function generateKeypair() {
980
+ const secretKey = ed.utils.randomPrivateKey();
981
+ const publicKey = await ed.getPublicKeyAsync(secretKey);
982
+ return { publicKey, secretKey };
983
+ }
984
+ async function sign(message, secretKey) {
985
+ const signature = await ed.signAsync(message, secretKey);
986
+ return signature;
987
+ }
988
+ async function verify(signature, message, publicKey) {
989
+ return ed.verifyAsync(signature, message, publicKey);
990
+ }
991
+ async function saveWallet(wallet, storage) {
992
+ const json = {
993
+ publicKeyHex: toHex(wallet.publicKey),
994
+ secretKeyHex: toHex(wallet.secretKey),
995
+ ss58Address: wallet.ss58Address,
996
+ createdAt: wallet.createdAt
997
+ };
998
+ await storage.setItem(WALLET_STORAGE_KEY, JSON.stringify(json));
999
+ }
1000
+ async function loadWallet(storage) {
1001
+ const raw = await storage.getItem(WALLET_STORAGE_KEY);
1002
+ if (!raw) return null;
1003
+ const json = JSON.parse(raw);
1004
+ return {
1005
+ publicKey: fromHex(json.publicKeyHex),
1006
+ secretKey: fromHex(json.secretKeyHex),
1007
+ ss58Address: json.ss58Address,
1008
+ createdAt: json.createdAt
1009
+ };
1010
+ }
1011
+ async function deleteWallet(storage) {
1012
+ await storage.removeItem(WALLET_STORAGE_KEY);
1013
+ }
1014
+ function createWallet(publicKey, secretKey) {
1015
+ return {
1016
+ publicKey,
1017
+ secretKey,
1018
+ ss58Address: publicKeyToSS58(publicKey),
1019
+ createdAt: (/* @__PURE__ */ new Date()).toISOString()
1020
+ };
1021
+ }
1022
+
1023
+ // src/did.ts
1024
+ var import_blakejs = __toESM(require_blakejs(), 1);
1025
+
1026
+ // src/chain.ts
1027
+ var DEFAULT_KEEPER_ENDPOINT = "http://localhost:8422";
1028
+ var keeperEndpoint = DEFAULT_KEEPER_ENDPOINT;
1029
+ function setKeeperEndpoint(url) {
1030
+ keeperEndpoint = url.replace(/\/+$/, "");
1031
+ }
1032
+ function getKeeperEndpoint() {
1033
+ return keeperEndpoint;
1034
+ }
1035
+ function balanceQueryUrl(base, account) {
1036
+ return `${base}/v1/chain/query/balance?account=${account}`;
1037
+ }
1038
+ function extrinsicUrl(base) {
1039
+ return `${base}/v1/chain/extrinsic`;
1040
+ }
1041
+ function metadataUrl(base, account) {
1042
+ return `${base}/v1/chain/metadata?account=${account}`;
1043
+ }
1044
+ function stakingUrl(base, op) {
1045
+ return `${base}/v1/staking/${op}`;
1046
+ }
1047
+ async function queryBalance(ss58Address) {
1048
+ try {
1049
+ const url = balanceQueryUrl(keeperEndpoint, ss58Address);
1050
+ const response = await fetch(url);
1051
+ if (!response.ok) {
1052
+ return { success: false, error: `HTTP ${response.status}: ${response.statusText}` };
1053
+ }
1054
+ const data = await response.json();
1055
+ return { success: true, data };
1056
+ } catch (err) {
1057
+ return { success: false, error: "Connection failed" };
1058
+ }
1059
+ }
1060
+ async function submitExtrinsic(hexPayload) {
1061
+ try {
1062
+ const url = extrinsicUrl(keeperEndpoint);
1063
+ const response = await fetch(url, {
1064
+ method: "POST",
1065
+ headers: { "Content-Type": "application/json" },
1066
+ body: JSON.stringify({ extrinsic: hexPayload })
1067
+ });
1068
+ if (!response.ok) {
1069
+ return { success: false, error: `HTTP ${response.status}: ${response.statusText}` };
1070
+ }
1071
+ const data = await response.json();
1072
+ return { success: true, data };
1073
+ } catch (err) {
1074
+ return { success: false, error: "Connection failed" };
1075
+ }
1076
+ }
1077
+ async function getChainMetadata(ss58Address) {
1078
+ try {
1079
+ const url = metadataUrl(keeperEndpoint, ss58Address);
1080
+ const response = await fetch(url);
1081
+ if (!response.ok) {
1082
+ return { success: false, error: `HTTP ${response.status}: ${response.statusText}` };
1083
+ }
1084
+ const data = await response.json();
1085
+ return { success: true, data };
1086
+ } catch (err) {
1087
+ return { success: false, error: "Connection failed" };
1088
+ }
1089
+ }
1090
+ async function submitPalletExtrinsic(request) {
1091
+ try {
1092
+ const url = extrinsicUrl(keeperEndpoint);
1093
+ const response = await fetch(url, {
1094
+ method: "POST",
1095
+ headers: { "Content-Type": "application/json" },
1096
+ body: JSON.stringify(request)
1097
+ });
1098
+ if (!response.ok) {
1099
+ return { success: false, error: `HTTP ${response.status}: ${response.statusText}` };
1100
+ }
1101
+ const data = await response.json();
1102
+ return { success: true, data };
1103
+ } catch (err) {
1104
+ return { success: false, error: "Connection failed" };
1105
+ }
1106
+ }
1107
+ async function addStake(hotkey, netuid, amount) {
1108
+ try {
1109
+ const url = stakingUrl(keeperEndpoint, "add-stake");
1110
+ const response = await fetch(url, {
1111
+ method: "POST",
1112
+ headers: { "Content-Type": "application/json" },
1113
+ body: JSON.stringify({ hotkey, netuid, amount })
1114
+ });
1115
+ if (!response.ok) {
1116
+ return { success: false, error: `HTTP ${response.status}: ${response.statusText}` };
1117
+ }
1118
+ const data = await response.json();
1119
+ return { success: true, data };
1120
+ } catch (err) {
1121
+ return { success: false, error: "Connection failed" };
1122
+ }
1123
+ }
1124
+ async function removeStake(hotkey, netuid, amount) {
1125
+ try {
1126
+ const url = stakingUrl(keeperEndpoint, "remove-stake");
1127
+ const response = await fetch(url, {
1128
+ method: "POST",
1129
+ headers: { "Content-Type": "application/json" },
1130
+ body: JSON.stringify({ hotkey, netuid, amount })
1131
+ });
1132
+ if (!response.ok) {
1133
+ return { success: false, error: `HTTP ${response.status}: ${response.statusText}` };
1134
+ }
1135
+ const data = await response.json();
1136
+ return { success: true, data };
1137
+ } catch (err) {
1138
+ return { success: false, error: "Connection failed" };
1139
+ }
1140
+ }
1141
+ async function transfer(destination, amount) {
1142
+ try {
1143
+ const url = stakingUrl(keeperEndpoint, "transfer");
1144
+ const response = await fetch(url, {
1145
+ method: "POST",
1146
+ headers: { "Content-Type": "application/json" },
1147
+ body: JSON.stringify({ destination, amount })
1148
+ });
1149
+ if (!response.ok) {
1150
+ return { success: false, error: `HTTP ${response.status}: ${response.statusText}` };
1151
+ }
1152
+ const data = await response.json();
1153
+ return { success: true, data };
1154
+ } catch (err) {
1155
+ return { success: false, error: "Connection failed" };
1156
+ }
1157
+ }
1158
+
1159
+ // src/did.ts
1160
+ function generateDIDHash(publicKey) {
1161
+ return (0, import_blakejs.blake2b)(publicKey, void 0, 32);
1162
+ }
1163
+ function buildDIDDocument(ss58Address, publicKey) {
1164
+ const publicKeyHex = toHex(publicKey);
1165
+ return {
1166
+ "@context": ["https://www.w3.org/ns/did/v1"],
1167
+ id: `did:civiwave:${ss58Address}`,
1168
+ authentication: [
1169
+ {
1170
+ type: "Ed25519VerificationKey2020",
1171
+ publicKeyMultibase: publicKeyHex
1172
+ }
1173
+ ]
1174
+ };
1175
+ }
1176
+ async function registerDID(wallet) {
1177
+ const publicKeyHex = toHex(wallet.publicKey);
1178
+ const didDocument = buildDIDDocument(wallet.ss58Address, wallet.publicKey);
1179
+ return submitPalletExtrinsic({
1180
+ pallet: "IdentityHub",
1181
+ call: "register_did",
1182
+ params: {
1183
+ public_key: publicKeyHex,
1184
+ did_document: didDocument
1185
+ }
1186
+ });
1187
+ }
1188
+ function didFromSS58(ss58Address) {
1189
+ return `did:civiwave:${ss58Address}`;
1190
+ }
1191
+ // Annotate the CommonJS export names for ESM import in node:
1192
+ 0 && (module.exports = {
1193
+ SS58_PREFIX,
1194
+ addStake,
1195
+ balanceQueryUrl,
1196
+ buildDIDDocument,
1197
+ createWallet,
1198
+ deleteWallet,
1199
+ didFromSS58,
1200
+ extrinsicUrl,
1201
+ fromHex,
1202
+ generateDIDHash,
1203
+ generateKeypair,
1204
+ getChainMetadata,
1205
+ getKeeperEndpoint,
1206
+ loadWallet,
1207
+ metadataUrl,
1208
+ publicKeyToSS58,
1209
+ queryBalance,
1210
+ registerDID,
1211
+ removeStake,
1212
+ saveWallet,
1213
+ setKeeperEndpoint,
1214
+ sign,
1215
+ stakingUrl,
1216
+ submitExtrinsic,
1217
+ submitPalletExtrinsic,
1218
+ toHex,
1219
+ transfer,
1220
+ verify
1221
+ });