1 // Package .
2 // Generated by MoxieJS — Moxie JavaScript backend
3
4 import * as $rt from './$runtime/index.mjs';
5
6 import * as smesh$lol$web$common$helpers from './smesh_lol_web_common_helpers.mjs';
7 import * as smesh$lol$web$common$jsbridge$node from './smesh_lol_web_common_jsbridge_node.mjs';
8 import * as smesh$lol$web$common$jsbridge$schnorr from './smesh_lol_web_common_jsbridge_schnorr.mjs';
9 import * as smesh$lol$web$common$jsbridge$subtle from './smesh_lol_web_common_jsbridge_subtle.mjs';
10 import * as smesh$lol$web$common$marmot from './smesh_lol_web_common_marmot.mjs';
11 import * as smesh$lol$web$common$mls from './smesh_lol_web_common_mls.mjs';
12 import * as smesh$lol$web$common$nostr from './smesh_lol_web_common_nostr.mjs';
13
14 // Package-level variables
15
16 $rt.types.registerType('..state', {
17 id: '..state',
18 kind: 'struct',
19 methods: new Map(),
20 fields: [
21 { name: 'nostrSec', type: '[32]byte', tag: '', embedded: false },
22 { name: 'nostrPub', type: 'string', tag: '', embedded: false },
23 { name: 'kpp', type: '*smesh.lol/web/common/mls.KeyPairPackage', tag: '', embedded: false },
24 { name: 'gs', type: '*smesh.lol/web/common/marmot.GroupState', tag: '', embedded: false },
25 ],
26 zero: () => ({ nostrSec: $rt.builtin.makeSlice(32, 32, 0), nostrPub: '', kpp: null, gs: null }),
27 });
28 $rt.types.registerType('..response', {
29 id: '..response',
30 kind: 'struct',
31 methods: new Map(),
32 fields: [
33 { name: 'ok', type: 'bool', tag: '', embedded: false },
34 { name: 'err', type: 'string', tag: '', embedded: false },
35 { name: 'eventJSON', type: 'string', tag: '', embedded: false },
36 { name: 'rumorJSON', type: 'string', tag: '', embedded: false },
37 { name: 'pubkey', type: 'string', tag: '', embedded: false },
38 { name: 'content', type: 'string', tag: '', embedded: false },
39 { name: 'kind', type: 'uint32', tag: '', embedded: false },
40 { name: 'mlsGroupIDHex', type: 'string', tag: '', embedded: false },
41 { name: 'nostrGroupIDHex', type: 'string', tag: '', embedded: false },
42 ],
43 zero: () => ({ ok: false, err: '', eventJSON: '', rumorJSON: '', pubkey: '', content: '', kind: 0, mlsGroupIDHex: '', nostrGroupIDHex: '' }),
44 });
45 export function init() {
46 return;
47 }
48
49 export async function main() {
50 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17;
51 $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
52 $t1_2 = newState();
53 $t0_1.$set($t1_2);
54 $t2_3 = $t0_1.$get();
55 $t3_4 = { $get() { return $t2_3.$get().nostrPub; }, $set(v) { const obj = $t2_3.$get(); obj.nostrPub = v; $t2_3.$set(obj); } };
56 $t4_5 = $t3_4.$get();
57 $t5_6 = smesh$lol$web$common$helpers.JsonString($t4_5);
58 $t6_7 = ('{"ready":true,"pubkey":' + $t5_6);
59 $t7_8 = ($t6_7 + '}');
60 $t8_9 = smesh$lol$web$common$jsbridge$node.WriteLine($t7_8);
61 $t9_10 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
62 $t10_11 = new $rt.channel.Channel(0);
63 $t9_10.$set($t10_11);
64 $t11_12 = main$1.bind(null, $t0_1);
65 $t12_13 = smesh$lol$web$common$jsbridge$node.OnLine($t11_12);
66 $t13_14 = main$2.bind(null, $t9_10);
67 $t14_15 = smesh$lol$web$common$jsbridge$node.OnClose($t13_14);
68 $t15_16 = $t9_10.$get();
69 $t16_17 = (await $t15_16.recv()).value;
70 return;
71 }
72
73 function main$1(s, line) {
74 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
75 let $block = 0;
76 while (true) {
77 switch ($block) {
78 case 0: {
79 $t0_1 = trimSpace(line);
80 $t1_2 = $rt.builtin.len($t0_1);
81 $t2_3 = ($t1_2 === 0);
82 if ($t2_3) {
83 $block = 1; break;
84 }
85 else {
86 $block = 2; break;
87 }
88 break;
89 }
90 case 1: {
91 return;
92 break;
93 }
94 case 2: {
95 $t3_4 = s.$get();
96 $t4_5 = handle($t3_4, $t0_1);
97 $t5_6 = serializeResponse($t4_5);
98 $t6_7 = smesh$lol$web$common$jsbridge$node.WriteLine($t5_6);
99 return;
100 break;
101 }
102 }
103 }
104 }
105
106 async function main$2(done) {
107 let $t0_1;
108 $t0_1 = done.$get();
109 await $t0_1.send(true);
110 return;
111 }
112
113 export function newState() {
114 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12;
115 let $block = 0;
116 while (true) {
117 switch ($block) {
118 case 0: {
119 $t0_1 = { $value: { nostrSec: $rt.builtin.makeSlice(32, 32, 0), nostrPub: '', kpp: null, gs: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
120 $t1_2 = { $get() { return $t0_1.$get().nostrSec; }, $set(v) { const obj = $t0_1.$get(); obj.nostrSec = v; $t0_1.$set(obj); } };
121 $t2_3 = $rt.builtin.sliceSlice($t1_2.$get(), undefined, undefined, undefined);
122 $t3_4 = smesh$lol$web$common$jsbridge$subtle.RandomBytes($t2_3);
123 $t4_5 = { $get() { return $t0_1.$get().nostrSec; }, $set(v) { const obj = $t0_1.$get(); obj.nostrSec = v; $t0_1.$set(obj); } };
124 $t5_6 = $rt.builtin.sliceSlice($t4_5.$get(), undefined, undefined, undefined);
125 $t6_7 = smesh$lol$web$common$jsbridge$schnorr.PubKeyFromSecKey($t5_6);
126 $t7_8 = $t6_7[0];
127 $t8_9 = $t6_7[1];
128 if ($t8_9) {
129 $block = 2; break;
130 }
131 else {
132 $block = 1; break;
133 }
134 break;
135 }
136 case 1: {
137 $t9_10 = $rt.types.makeInterface('string', 'mlsinterop: failed to derive pubkey');
138 $rt.runtime.panic($t9_10);
139 break;
140 }
141 case 2: {
142 $t10_11 = smesh$lol$web$common$helpers.HexEncode($t7_8);
143 $t11_12 = { $get() { return $t0_1.$get().nostrPub; }, $set(v) { const obj = $t0_1.$get(); obj.nostrPub = v; $t0_1.$set(obj); } };
144 $t11_12.$set($t10_11);
145 return $t0_1;
146 break;
147 }
148 }
149 }
150 }
151
152 export function handle(s, line) {
153 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17;
154 let $block = 0;
155 while (true) {
156 switch ($block) {
157 case 0: {
158 $t0_1 = smesh$lol$web$common$helpers.JsonGetString(line, 'cmd');
159 $t1_2 = $rt.builtin.stringEqual($t0_1, 'generate_key_package');
160 if ($t1_2) {
161 $block = 1; break;
162 }
163 else {
164 $block = 3; break;
165 }
166 break;
167 }
168 case 1: {
169 $t2_3 = cmdGenerateKeyPackage(s, line);
170 return $t2_3;
171 break;
172 }
173 case 2: {
174 $t3_4 = cmdProcessKeyPackage(line);
175 return $t3_4;
176 break;
177 }
178 case 3: {
179 $t4_5 = $rt.builtin.stringEqual($t0_1, 'process_key_package');
180 if ($t4_5) {
181 $block = 2; break;
182 }
183 else {
184 $block = 5; break;
185 }
186 break;
187 }
188 case 4: {
189 $t5_6 = cmdCreateGroup(s, line);
190 return $t5_6;
191 break;
192 }
193 case 5: {
194 $t6_7 = $rt.builtin.stringEqual($t0_1, 'create_group');
195 if ($t6_7) {
196 $block = 4; break;
197 }
198 else {
199 $block = 7; break;
200 }
201 break;
202 }
203 case 6: {
204 $t7_8 = cmdProcessWelcome(s, line);
205 return $t7_8;
206 break;
207 }
208 case 7: {
209 $t8_9 = $rt.builtin.stringEqual($t0_1, 'process_welcome');
210 if ($t8_9) {
211 $block = 6; break;
212 }
213 else {
214 $block = 9; break;
215 }
216 break;
217 }
218 case 8: {
219 $t9_10 = cmdCreateMessage(s, line);
220 return $t9_10;
221 break;
222 }
223 case 9: {
224 $t10_11 = $rt.builtin.stringEqual($t0_1, 'create_message');
225 if ($t10_11) {
226 $block = 8; break;
227 }
228 else {
229 $block = 11; break;
230 }
231 break;
232 }
233 case 10: {
234 $t11_12 = cmdProcessMessage(s, line);
235 return $t11_12;
236 break;
237 }
238 case 11: {
239 $t12_13 = $rt.builtin.stringEqual($t0_1, 'process_message');
240 if ($t12_13) {
241 $block = 10; break;
242 }
243 else {
244 $block = 13; break;
245 }
246 break;
247 }
248 case 12: {
249 $t13_14 = cmdGetGroupInfo(s);
250 return $t13_14;
251 break;
252 }
253 case 13: {
254 $t14_15 = $rt.builtin.stringEqual($t0_1, 'get_group_info');
255 if ($t14_15) {
256 $block = 12; break;
257 }
258 else {
259 $block = 14; break;
260 }
261 break;
262 }
263 case 14: {
264 $t15_16 = ('unknown cmd: ' + $t0_1);
265 $t16_17 = errResponse($t15_16);
266 return $t16_17;
267 break;
268 }
269 }
270 }
271 }
272
273 export function cmdGenerateKeyPackage(s, line) {
274 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37;
275 let $block = 0;
276 while (true) {
277 switch ($block) {
278 case 0: {
279 $t0_1 = smesh$lol$web$common$helpers.JsonGetString(line, 'relay');
280 $t1_2 = smesh$lol$web$common$jsbridge$node.NowSeconds();
281 $t2_3 = { $get() { return s.$get().nostrPub; }, $set(v) { const obj = s.$get(); obj.nostrPub = v; s.$set(obj); } };
282 $t3_4 = $t2_3.$get();
283 $t4_5 = smesh$lol$web$common$helpers.HexDecode($t3_4);
284 $t5_6 = $rt.builtin.stringEqual($t4_5, null);
285 if ($t5_6) {
286 $block = 1; break;
287 }
288 else {
289 $block = 2; break;
290 }
291 break;
292 }
293 case 1: {
294 $t6_7 = errResponse('decode own pubkey');
295 return $t6_7;
296 break;
297 }
298 case 2: {
299 $t7_8 = smesh$lol$web$common$marmot.GenerateKeyPackage($t4_5, $t1_2);
300 $t8_9 = $t7_8[0];
301 $t9_10 = $t7_8[1];
302 $t10_11 = ($t9_10 !== null);
303 if ($t10_11) {
304 $block = 3; break;
305 }
306 else {
307 $block = 4; break;
308 }
309 break;
310 }
311 case 3: {
312 $t11_12 = $rt.types.methodCall($t9_10, 'Error', []);
313 $t12_13 = ('generate key package: ' + $t11_12);
314 $t13_14 = errResponse($t12_13);
315 return $t13_14;
316 break;
317 }
318 case 4: {
319 $t14_15 = { $get() { return s.$get().kpp; }, $set(v) { const obj = s.$get(); obj.kpp = v; s.$set(obj); } };
320 $t14_15.$set($t8_9);
321 $t15_16 = !$rt.builtin.stringEqual($t0_1, '');
322 if ($t15_16) {
323 $block = 5; break;
324 }
325 else {
326 $t19_20 = null;
327 $block = 6; break;
328 }
329 break;
330 }
331 case 5: {
332 $t16_17 = { $value: $rt.builtin.makeSlice(1, 1, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
333 $t17_18 = $t16_17.$get().addr(0);
334 $t17_18.$set($t0_1);
335 $t18_19 = $rt.builtin.sliceSlice($t16_17.$get(), undefined, undefined, undefined);
336 $t19_20 = $t18_19;
337 $block = 6; break;
338 break;
339 }
340 case 6: {
341 $t20_21 = { $get() { return s.$get().nostrSec; }, $set(v) { const obj = s.$get(); obj.nostrSec = v; s.$set(obj); } };
342 $t21_22 = $t20_21.$get();
343 $t22_23 = smesh$lol$web$common$marmot.KeyPackageToEvent($t8_9, $t21_22, $t1_2, $t19_20);
344 $t23_24 = $t22_23[0];
345 $t24_25 = $t22_23[1];
346 $t25_26 = ($t24_25 !== null);
347 if ($t25_26) {
348 $block = 7; break;
349 }
350 else {
351 $block = 8; break;
352 }
353 break;
354 }
355 case 7: {
356 $t26_27 = $rt.types.methodCall($t24_25, 'Error', []);
357 $t27_28 = ('build kind 443 event: ' + $t26_27);
358 $t28_29 = errResponse($t27_28);
359 return $t28_29;
360 break;
361 }
362 case 8: {
363 $t29_30 = { $value: { ok: false, err: '', eventJSON: '', rumorJSON: '', pubkey: '', content: '', kind: 0, mlsGroupIDHex: '', nostrGroupIDHex: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
364 $t30_31 = okResponse();
365 $t29_30.$set($rt.builtin.cloneValue($t30_31));
366 $t31_32 = smesh$lol$web$common$nostr.Event$ToJSON($t23_24);
367 $t32_33 = { $get() { return $t29_30.$get().eventJSON; }, $set(v) { const obj = $t29_30.$get(); obj.eventJSON = v; $t29_30.$set(obj); } };
368 $t32_33.$set($t31_32);
369 $t33_34 = { $get() { return s.$get().nostrPub; }, $set(v) { const obj = s.$get(); obj.nostrPub = v; s.$set(obj); } };
370 $t34_35 = $t33_34.$get();
371 $t35_36 = { $get() { return $t29_30.$get().pubkey; }, $set(v) { const obj = $t29_30.$get(); obj.pubkey = v; $t29_30.$set(obj); } };
372 $t35_36.$set($t34_35);
373 $t36_37 = $t29_30.$get();
374 return $t36_37;
375 break;
376 }
377 }
378 }
379 }
380
381 export function cmdProcessKeyPackage(line) {
382 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21;
383 let $block = 0;
384 while (true) {
385 switch ($block) {
386 case 0: {
387 $t0_1 = smesh$lol$web$common$helpers.JsonGetString(line, 'event_json');
388 $t1_2 = smesh$lol$web$common$nostr.ParseEvent($t0_1);
389 $t2_3 = ($t1_2 === null);
390 if ($t2_3) {
391 $block = 1; break;
392 }
393 else {
394 $block = 2; break;
395 }
396 break;
397 }
398 case 1: {
399 $t3_4 = errResponse('parse kind 443 event JSON');
400 return $t3_4;
401 break;
402 }
403 case 2: {
404 $t4_5 = { $get() { return $t1_2.$get().Kind; }, $set(v) { const obj = $t1_2.$get(); obj.Kind = v; $t1_2.$set(obj); } };
405 $t5_6 = $t4_5.$get();
406 $t6_7 = ($t5_6 !== 443);
407 if ($t6_7) {
408 $block = 3; break;
409 }
410 else {
411 $block = 4; break;
412 }
413 break;
414 }
415 case 3: {
416 $t7_8 = errResponse('wrong kind: expected 443');
417 return $t7_8;
418 break;
419 }
420 case 4: {
421 $t8_9 = smesh$lol$web$common$marmot.EventToKeyPackage($t1_2);
422 $t9_10 = $t8_9[0];
423 $t10_11 = $t8_9[1];
424 $t11_12 = ($t10_11 !== null);
425 if ($t11_12) {
426 $block = 5; break;
427 }
428 else {
429 $block = 6; break;
430 }
431 break;
432 }
433 case 5: {
434 $t12_13 = $rt.types.methodCall($t10_11, 'Error', []);
435 $t13_14 = ('event to key package: ' + $t12_13);
436 $t14_15 = errResponse($t13_14);
437 return $t14_15;
438 break;
439 }
440 case 6: {
441 $t15_16 = { $value: { ok: false, err: '', eventJSON: '', rumorJSON: '', pubkey: '', content: '', kind: 0, mlsGroupIDHex: '', nostrGroupIDHex: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
442 $t16_17 = okResponse();
443 $t15_16.$set($rt.builtin.cloneValue($t16_17));
444 $t17_18 = { $get() { return $t1_2.$get().PubKey; }, $set(v) { const obj = $t1_2.$get(); obj.PubKey = v; $t1_2.$set(obj); } };
445 $t18_19 = $t17_18.$get();
446 $t19_20 = { $get() { return $t15_16.$get().pubkey; }, $set(v) { const obj = $t15_16.$get(); obj.pubkey = v; $t15_16.$set(obj); } };
447 $t19_20.$set($t18_19);
448 $t20_21 = $t15_16.$get();
449 return $t20_21;
450 break;
451 }
452 }
453 }
454 }
455
456 export function cmdCreateGroup(s, line) {
457 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60;
458 let $block = 0;
459 while (true) {
460 switch ($block) {
461 case 0: {
462 $t0_1 = { $get() { return s.$get().kpp; }, $set(v) { const obj = s.$get(); obj.kpp = v; s.$set(obj); } };
463 $t1_2 = $t0_1.$get();
464 $t2_3 = ($t1_2 === null);
465 if ($t2_3) {
466 $block = 1; break;
467 }
468 else {
469 $block = 2; break;
470 }
471 break;
472 }
473 case 1: {
474 $t3_4 = errResponse('no local key package — call generate_key_package first');
475 return $t3_4;
476 break;
477 }
478 case 2: {
479 $t4_5 = smesh$lol$web$common$helpers.JsonGetString(line, 'member_kp_event_json');
480 $t5_6 = smesh$lol$web$common$helpers.JsonGetString(line, 'name');
481 $t6_7 = smesh$lol$web$common$helpers.JsonGetString(line, 'relay');
482 $t7_8 = smesh$lol$web$common$nostr.ParseEvent($t4_5);
483 $t8_9 = ($t7_8 === null);
484 if ($t8_9) {
485 $block = 3; break;
486 }
487 else {
488 $block = 4; break;
489 }
490 break;
491 }
492 case 3: {
493 $t9_10 = errResponse('parse member KP event JSON');
494 return $t9_10;
495 break;
496 }
497 case 4: {
498 $t10_11 = smesh$lol$web$common$marmot.EventToKeyPackage($t7_8);
499 $t11_12 = $t10_11[0];
500 $t12_13 = $t10_11[1];
501 $t13_14 = ($t12_13 !== null);
502 if ($t13_14) {
503 $block = 5; break;
504 }
505 else {
506 $block = 6; break;
507 }
508 break;
509 }
510 case 5: {
511 $t14_15 = $rt.types.methodCall($t12_13, 'Error', []);
512 $t15_16 = ('member event to key package: ' + $t14_15);
513 $t16_17 = errResponse($t15_16);
514 return $t16_17;
515 break;
516 }
517 case 6: {
518 $t17_18 = { $get() { return $t7_8.$get().PubKey; }, $set(v) { const obj = $t7_8.$get(); obj.PubKey = v; $t7_8.$set(obj); } };
519 $t18_19 = $t17_18.$get();
520 $t19_20 = smesh$lol$web$common$helpers.HexDecode($t18_19);
521 $t20_21 = $rt.builtin.stringEqual($t19_20, null);
522 if ($t20_21) {
523 $block = 7; break;
524 }
525 else {
526 $block = 8; break;
527 }
528 break;
529 }
530 case 7: {
531 $t21_22 = errResponse('decode peer pubkey');
532 return $t21_22;
533 break;
534 }
535 case 8: {
536 $t22_23 = { $get() { return s.$get().nostrPub; }, $set(v) { const obj = s.$get(); obj.nostrPub = v; s.$set(obj); } };
537 $t23_24 = $t22_23.$get();
538 $t24_25 = smesh$lol$web$common$helpers.HexDecode($t23_24);
539 $t25_26 = $rt.builtin.stringEqual($t24_25, null);
540 if ($t25_26) {
541 $block = 9; break;
542 }
543 else {
544 $block = 10; break;
545 }
546 break;
547 }
548 case 9: {
549 $t26_27 = errResponse('decode self pubkey');
550 return $t26_27;
551 break;
552 }
553 case 10: {
554 $t27_28 = !$rt.builtin.stringEqual($t6_7, '');
555 if ($t27_28) {
556 $block = 11; break;
557 }
558 else {
559 $t31_32 = null;
560 $block = 12; break;
561 }
562 break;
563 }
564 case 11: {
565 $t28_29 = { $value: $rt.builtin.makeSlice(1, 1, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
566 $t29_30 = $t28_29.$get().addr(0);
567 $t29_30.$set($t6_7);
568 $t30_31 = $rt.builtin.sliceSlice($t28_29.$get(), undefined, undefined, undefined);
569 $t31_32 = $t30_31;
570 $block = 12; break;
571 break;
572 }
573 case 12: {
574 $t32_33 = { $get() { return s.$get().kpp; }, $set(v) { const obj = s.$get(); obj.kpp = v; s.$set(obj); } };
575 $t33_34 = $t32_33.$get();
576 $t34_35 = smesh$lol$web$common$marmot.CreateDMGroup($t33_34, $t11_12, $t24_25, $t19_20, $t5_6, $t31_32);
577 $t35_36 = $t34_35[0];
578 $t36_37 = $t34_35[1];
579 $t37_38 = $t34_35[2];
580 $t38_39 = ($t37_38 !== null);
581 if ($t38_39) {
582 $block = 13; break;
583 }
584 else {
585 $block = 14; break;
586 }
587 break;
588 }
589 case 13: {
590 $t39_40 = $rt.types.methodCall($t37_38, 'Error', []);
591 $t40_41 = ('create DM group: ' + $t39_40);
592 $t41_42 = errResponse($t40_41);
593 return $t41_42;
594 break;
595 }
596 case 14: {
597 $t42_43 = { $get() { return s.$get().gs; }, $set(v) { const obj = s.$get(); obj.gs = v; s.$set(obj); } };
598 $t42_43.$set($t35_36);
599 $t43_44 = smesh$lol$web$common$jsbridge$node.NowSeconds();
600 $t44_45 = { $get() { return $t7_8.$get().ID; }, $set(v) { const obj = $t7_8.$get(); obj.ID = v; $t7_8.$set(obj); } };
601 $t45_46 = $t44_45.$get();
602 $t46_47 = smesh$lol$web$common$marmot.WelcomeToRumor($t36_37, $t24_25, $t43_44, $t45_46, $t31_32);
603 $t47_48 = { $value: { ok: false, err: '', eventJSON: '', rumorJSON: '', pubkey: '', content: '', kind: 0, mlsGroupIDHex: '', nostrGroupIDHex: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
604 $t48_49 = okResponse();
605 $t47_48.$set($rt.builtin.cloneValue($t48_49));
606 $t49_50 = smesh$lol$web$common$nostr.Event$ToJSON($t46_47);
607 $t50_51 = { $get() { return $t47_48.$get().rumorJSON; }, $set(v) { const obj = $t47_48.$get(); obj.rumorJSON = v; $t47_48.$set(obj); } };
608 $t50_51.$set($t49_50);
609 $t51_52 = { $get() { return $t35_36.$get().MLSGroupID; }, $set(v) { const obj = $t35_36.$get(); obj.MLSGroupID = v; $t35_36.$set(obj); } };
610 $t52_53 = $t51_52.$get();
611 $t53_54 = smesh$lol$web$common$helpers.HexEncode($t52_53);
612 $t54_55 = { $get() { return $t47_48.$get().mlsGroupIDHex; }, $set(v) { const obj = $t47_48.$get(); obj.mlsGroupIDHex = v; $t47_48.$set(obj); } };
613 $t54_55.$set($t53_54);
614 $t55_56 = { $get() { return $t35_36.$get().NostrGroupID; }, $set(v) { const obj = $t35_36.$get(); obj.NostrGroupID = v; $t35_36.$set(obj); } };
615 $t56_57 = $t55_56.$get();
616 $t57_58 = smesh$lol$web$common$helpers.HexEncode($t56_57);
617 $t58_59 = { $get() { return $t47_48.$get().nostrGroupIDHex; }, $set(v) { const obj = $t47_48.$get(); obj.nostrGroupIDHex = v; $t47_48.$set(obj); } };
618 $t58_59.$set($t57_58);
619 $t59_60 = $t47_48.$get();
620 return $t59_60;
621 break;
622 }
623 }
624 }
625 }
626
627 export function cmdProcessWelcome(s, line) {
628 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42;
629 let $block = 0;
630 while (true) {
631 switch ($block) {
632 case 0: {
633 $t0_1 = { $get() { return s.$get().kpp; }, $set(v) { const obj = s.$get(); obj.kpp = v; s.$set(obj); } };
634 $t1_2 = $t0_1.$get();
635 $t2_3 = ($t1_2 === null);
636 if ($t2_3) {
637 $block = 1; break;
638 }
639 else {
640 $block = 2; break;
641 }
642 break;
643 }
644 case 1: {
645 $t3_4 = errResponse('no local key package — call generate_key_package first');
646 return $t3_4;
647 break;
648 }
649 case 2: {
650 $t4_5 = smesh$lol$web$common$helpers.JsonGetString(line, 'rumor_json');
651 $t5_6 = smesh$lol$web$common$nostr.ParseEvent($t4_5);
652 $t6_7 = ($t5_6 === null);
653 if ($t6_7) {
654 $block = 3; break;
655 }
656 else {
657 $block = 4; break;
658 }
659 break;
660 }
661 case 3: {
662 $t7_8 = errResponse('parse rumor JSON');
663 return $t7_8;
664 break;
665 }
666 case 4: {
667 $t8_9 = smesh$lol$web$common$marmot.RumorToWelcome($t5_6);
668 $t9_10 = $t8_9[0];
669 $t10_11 = $t8_9[1];
670 $t11_12 = ($t10_11 !== null);
671 if ($t11_12) {
672 $block = 5; break;
673 }
674 else {
675 $block = 6; break;
676 }
677 break;
678 }
679 case 5: {
680 $t12_13 = $rt.types.methodCall($t10_11, 'Error', []);
681 $t13_14 = ('rumor to welcome: ' + $t12_13);
682 $t14_15 = errResponse($t13_14);
683 return $t14_15;
684 break;
685 }
686 case 6: {
687 $t15_16 = { $get() { return $t5_6.$get().PubKey; }, $set(v) { const obj = $t5_6.$get(); obj.PubKey = v; $t5_6.$set(obj); } };
688 $t16_17 = $t15_16.$get();
689 $t17_18 = smesh$lol$web$common$helpers.HexDecode($t16_17);
690 $t18_19 = $rt.builtin.stringEqual($t17_18, null);
691 if ($t18_19) {
692 $block = 7; break;
693 }
694 else {
695 $block = 8; break;
696 }
697 break;
698 }
699 case 7: {
700 $t19_20 = errResponse('decode rumor sender pubkey');
701 return $t19_20;
702 break;
703 }
704 case 8: {
705 $t20_21 = { $get() { return s.$get().kpp; }, $set(v) { const obj = s.$get(); obj.kpp = v; s.$set(obj); } };
706 $t21_22 = $t20_21.$get();
707 $t22_23 = smesh$lol$web$common$jsbridge$node.NowSeconds();
708 $t23_24 = smesh$lol$web$common$marmot.JoinDMGroup($t9_10, $t21_22, $t17_18, $t22_23);
709 $t24_25 = $t23_24[0];
710 $t25_26 = $t23_24[1];
711 $t26_27 = ($t25_26 !== null);
712 if ($t26_27) {
713 $block = 9; break;
714 }
715 else {
716 $block = 10; break;
717 }
718 break;
719 }
720 case 9: {
721 $t27_28 = $rt.types.methodCall($t25_26, 'Error', []);
722 $t28_29 = ('join DM group: ' + $t27_28);
723 $t29_30 = errResponse($t28_29);
724 return $t29_30;
725 break;
726 }
727 case 10: {
728 $t30_31 = { $get() { return s.$get().gs; }, $set(v) { const obj = s.$get(); obj.gs = v; s.$set(obj); } };
729 $t30_31.$set($t24_25);
730 $t31_32 = { $value: { ok: false, err: '', eventJSON: '', rumorJSON: '', pubkey: '', content: '', kind: 0, mlsGroupIDHex: '', nostrGroupIDHex: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
731 $t32_33 = okResponse();
732 $t31_32.$set($rt.builtin.cloneValue($t32_33));
733 $t33_34 = { $get() { return $t24_25.$get().MLSGroupID; }, $set(v) { const obj = $t24_25.$get(); obj.MLSGroupID = v; $t24_25.$set(obj); } };
734 $t34_35 = $t33_34.$get();
735 $t35_36 = smesh$lol$web$common$helpers.HexEncode($t34_35);
736 $t36_37 = { $get() { return $t31_32.$get().mlsGroupIDHex; }, $set(v) { const obj = $t31_32.$get(); obj.mlsGroupIDHex = v; $t31_32.$set(obj); } };
737 $t36_37.$set($t35_36);
738 $t37_38 = { $get() { return $t24_25.$get().NostrGroupID; }, $set(v) { const obj = $t24_25.$get(); obj.NostrGroupID = v; $t24_25.$set(obj); } };
739 $t38_39 = $t37_38.$get();
740 $t39_40 = smesh$lol$web$common$helpers.HexEncode($t38_39);
741 $t40_41 = { $get() { return $t31_32.$get().nostrGroupIDHex; }, $set(v) { const obj = $t31_32.$get(); obj.nostrGroupIDHex = v; $t31_32.$set(obj); } };
742 $t40_41.$set($t39_40);
743 $t41_42 = $t31_32.$get();
744 return $t41_42;
745 break;
746 }
747 }
748 }
749 }
750
751 export function cmdCreateMessage(s, line) {
752 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56;
753 let $block = 0;
754 while (true) {
755 switch ($block) {
756 case 0: {
757 $t0_1 = { $get() { return s.$get().gs; }, $set(v) { const obj = s.$get(); obj.gs = v; s.$set(obj); } };
758 $t1_2 = $t0_1.$get();
759 $t2_3 = ($t1_2 === null);
760 if ($t2_3) {
761 $block = 1; break;
762 }
763 else {
764 $block = 2; break;
765 }
766 break;
767 }
768 case 1: {
769 $t3_4 = errResponse('no group — create or join one first');
770 return $t3_4;
771 break;
772 }
773 case 2: {
774 $t4_5 = smesh$lol$web$common$helpers.JsonGetString(line, 'mls_group_id_hex');
775 $t5_6 = { $get() { return s.$get().gs; }, $set(v) { const obj = s.$get(); obj.gs = v; s.$set(obj); } };
776 $t6_7 = $t5_6.$get();
777 $t7_8 = { $get() { return $t6_7.$get().MLSGroupID; }, $set(v) { const obj = $t6_7.$get(); obj.MLSGroupID = v; $t6_7.$set(obj); } };
778 $t8_9 = $t7_8.$get();
779 $t9_10 = smesh$lol$web$common$helpers.HexEncode($t8_9);
780 $t10_11 = !$rt.builtin.stringEqual($t4_5, '');
781 if ($t10_11) {
782 $block = 5; break;
783 }
784 else {
785 $block = 4; break;
786 }
787 break;
788 }
789 case 3: {
790 $t11_12 = ('mls_group_id_hex mismatch: want ' + $t4_5);
791 $t12_13 = ($t11_12 + ' have ');
792 $t13_14 = ($t12_13 + $t9_10);
793 $t14_15 = errResponse($t13_14);
794 return $t14_15;
795 break;
796 }
797 case 4: {
798 $t15_16 = smesh$lol$web$common$helpers.JsonGetString(line, 'content');
799 $t16_17 = { $get() { return s.$get().gs; }, $set(v) { const obj = s.$get(); obj.gs = v; s.$set(obj); } };
800 $t17_18 = $t16_17.$get();
801 $t18_19 = { $get() { return $t17_18.$get().Group; }, $set(v) { const obj = $t17_18.$get(); obj.Group = v; $t17_18.$set(obj); } };
802 $t19_20 = $t18_19.$get();
803 $t20_21 = smesh$lol$web$common$mls.Group$CreateApplicationMessage($t19_20, $t15_16);
804 $t21_22 = $t20_21[0];
805 $t22_23 = $t20_21[1];
806 $t23_24 = ($t22_23 !== null);
807 if ($t23_24) {
808 $block = 6; break;
809 }
810 else {
811 $block = 7; break;
812 }
813 break;
814 }
815 case 5: {
816 $t24_25 = !$rt.builtin.stringEqual($t4_5, $t9_10);
817 if ($t24_25) {
818 $block = 3; break;
819 }
820 else {
821 $block = 4; break;
822 }
823 break;
824 }
825 case 6: {
826 $t25_26 = $rt.types.methodCall($t22_23, 'Error', []);
827 $t26_27 = ('create application message: ' + $t25_26);
828 $t27_28 = errResponse($t26_27);
829 return $t27_28;
830 break;
831 }
832 case 7: {
833 $t28_29 = { $get() { return s.$get().gs; }, $set(v) { const obj = s.$get(); obj.gs = v; s.$set(obj); } };
834 $t29_30 = $t28_29.$get();
835 $t30_31 = { $get() { return $t29_30.$get().Group; }, $set(v) { const obj = $t29_30.$get(); obj.Group = v; $t29_30.$set(obj); } };
836 $t31_32 = $t30_31.$get();
837 $t32_33 = smesh$lol$web$common$marmot.DeriveExporterSecret($t31_32);
838 $t33_34 = $t32_33[0];
839 $t34_35 = $t32_33[1];
840 $t35_36 = ($t34_35 !== null);
841 if ($t35_36) {
842 $block = 8; break;
843 }
844 else {
845 $block = 9; break;
846 }
847 break;
848 }
849 case 8: {
850 $t36_37 = $rt.types.methodCall($t34_35, 'Error', []);
851 $t37_38 = ('derive exporter secret: ' + $t36_37);
852 $t38_39 = errResponse($t37_38);
853 return $t38_39;
854 break;
855 }
856 case 9: {
857 $t39_40 = { $get() { return s.$get().gs; }, $set(v) { const obj = s.$get(); obj.gs = v; s.$set(obj); } };
858 $t40_41 = $t39_40.$get();
859 $t41_42 = { $get() { return $t40_41.$get().NostrGroupID; }, $set(v) { const obj = $t40_41.$get(); obj.NostrGroupID = v; $t40_41.$set(obj); } };
860 $t42_43 = $t41_42.$get();
861 $t43_44 = smesh$lol$web$common$jsbridge$node.NowSeconds();
862 $t44_45 = smesh$lol$web$common$marmot.MessageToEvent($t42_43, $t21_22, $t33_34, $t43_44);
863 $t45_46 = $t44_45[0];
864 $t46_47 = $t44_45[1];
865 $t47_48 = ($t46_47 !== null);
866 if ($t47_48) {
867 $block = 10; break;
868 }
869 else {
870 $block = 11; break;
871 }
872 break;
873 }
874 case 10: {
875 $t48_49 = $rt.types.methodCall($t46_47, 'Error', []);
876 $t49_50 = ('build kind 445 event: ' + $t48_49);
877 $t50_51 = errResponse($t49_50);
878 return $t50_51;
879 break;
880 }
881 case 11: {
882 $t51_52 = { $value: { ok: false, err: '', eventJSON: '', rumorJSON: '', pubkey: '', content: '', kind: 0, mlsGroupIDHex: '', nostrGroupIDHex: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
883 $t52_53 = okResponse();
884 $t51_52.$set($rt.builtin.cloneValue($t52_53));
885 $t53_54 = smesh$lol$web$common$nostr.Event$ToJSON($t45_46);
886 $t54_55 = { $get() { return $t51_52.$get().eventJSON; }, $set(v) { const obj = $t51_52.$get(); obj.eventJSON = v; $t51_52.$set(obj); } };
887 $t54_55.$set($t53_54);
888 $t55_56 = $t51_52.$get();
889 return $t55_56;
890 break;
891 }
892 }
893 }
894 }
895
896 export function cmdProcessMessage(s, line) {
897 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47;
898 let $block = 0;
899 while (true) {
900 switch ($block) {
901 case 0: {
902 $t0_1 = { $get() { return s.$get().gs; }, $set(v) { const obj = s.$get(); obj.gs = v; s.$set(obj); } };
903 $t1_2 = $t0_1.$get();
904 $t2_3 = ($t1_2 === null);
905 if ($t2_3) {
906 $block = 1; break;
907 }
908 else {
909 $block = 2; break;
910 }
911 break;
912 }
913 case 1: {
914 $t3_4 = errResponse('no group — create or join one first');
915 return $t3_4;
916 break;
917 }
918 case 2: {
919 $t4_5 = smesh$lol$web$common$helpers.JsonGetString(line, 'event_json');
920 $t5_6 = smesh$lol$web$common$nostr.ParseEvent($t4_5);
921 $t6_7 = ($t5_6 === null);
922 if ($t6_7) {
923 $block = 3; break;
924 }
925 else {
926 $block = 4; break;
927 }
928 break;
929 }
930 case 3: {
931 $t7_8 = errResponse('parse kind 445 event JSON');
932 return $t7_8;
933 break;
934 }
935 case 4: {
936 $t8_9 = { $get() { return s.$get().gs; }, $set(v) { const obj = s.$get(); obj.gs = v; s.$set(obj); } };
937 $t9_10 = $t8_9.$get();
938 $t10_11 = { $get() { return $t9_10.$get().Group; }, $set(v) { const obj = $t9_10.$get(); obj.Group = v; $t9_10.$set(obj); } };
939 $t11_12 = $t10_11.$get();
940 $t12_13 = smesh$lol$web$common$marmot.DeriveExporterSecret($t11_12);
941 $t13_14 = $t12_13[0];
942 $t14_15 = $t12_13[1];
943 $t15_16 = ($t14_15 !== null);
944 if ($t15_16) {
945 $block = 5; break;
946 }
947 else {
948 $block = 6; break;
949 }
950 break;
951 }
952 case 5: {
953 $t16_17 = $rt.types.methodCall($t14_15, 'Error', []);
954 $t17_18 = ('derive exporter secret: ' + $t16_17);
955 $t18_19 = errResponse($t17_18);
956 return $t18_19;
957 break;
958 }
959 case 6: {
960 $t19_20 = smesh$lol$web$common$marmot.EventToMessage($t5_6, $t13_14);
961 $t20_21 = $t19_20[0];
962 $t21_22 = $t19_20[1];
963 $t22_23 = $t19_20[2];
964 $t23_24 = ($t22_23 !== null);
965 if ($t23_24) {
966 $block = 7; break;
967 }
968 else {
969 $block = 8; break;
970 }
971 break;
972 }
973 case 7: {
974 $t24_25 = $rt.types.methodCall($t22_23, 'Error', []);
975 $t25_26 = ('event to message: ' + $t24_25);
976 $t26_27 = errResponse($t25_26);
977 return $t26_27;
978 break;
979 }
980 case 8: {
981 $t27_28 = { $get() { return s.$get().gs; }, $set(v) { const obj = s.$get(); obj.gs = v; s.$set(obj); } };
982 $t28_29 = $t27_28.$get();
983 $t29_30 = { $get() { return $t28_29.$get().Group; }, $set(v) { const obj = $t28_29.$get(); obj.Group = v; $t28_29.$set(obj); } };
984 $t30_31 = $t29_30.$get();
985 $t31_32 = smesh$lol$web$common$mls.Group$UnmarshalAndProcessMessage($t30_31, $t21_22);
986 $t32_33 = $t31_32[0];
987 $t33_34 = $t31_32[1];
988 $t34_35 = $t31_32[2];
989 $t35_36 = ($t34_35 !== null);
990 if ($t35_36) {
991 $block = 9; break;
992 }
993 else {
994 $block = 10; break;
995 }
996 break;
997 }
998 case 9: {
999 $t36_37 = $rt.types.methodCall($t34_35, 'Error', []);
1000 $t37_38 = ('process MLS message: ' + $t36_37);
1001 $t38_39 = errResponse($t37_38);
1002 return $t38_39;
1003 break;
1004 }
1005 case 10: {
1006 $t39_40 = { $value: { ok: false, err: '', eventJSON: '', rumorJSON: '', pubkey: '', content: '', kind: 0, mlsGroupIDHex: '', nostrGroupIDHex: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1007 $t40_41 = okResponse();
1008 $t39_40.$set($rt.builtin.cloneValue($t40_41));
1009 $t41_42 = { $get() { return $t39_40.$get().content; }, $set(v) { const obj = $t39_40.$get(); obj.content = v; $t39_40.$set(obj); } };
1010 $t41_42.$set($t32_33);
1011 $t42_43 = { $get() { return $t39_40.$get().kind; }, $set(v) { const obj = $t39_40.$get(); obj.kind = v; $t39_40.$set(obj); } };
1012 $t42_43.$set(445);
1013 $t43_44 = { $get() { return $t5_6.$get().PubKey; }, $set(v) { const obj = $t5_6.$get(); obj.PubKey = v; $t5_6.$set(obj); } };
1014 $t44_45 = $t43_44.$get();
1015 $t45_46 = { $get() { return $t39_40.$get().pubkey; }, $set(v) { const obj = $t39_40.$get(); obj.pubkey = v; $t39_40.$set(obj); } };
1016 $t45_46.$set($t44_45);
1017 $t46_47 = $t39_40.$get();
1018 return $t46_47;
1019 break;
1020 }
1021 }
1022 }
1023 }
1024
1025 export function cmdGetGroupInfo(s) {
1026 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19;
1027 let $block = 0;
1028 while (true) {
1029 switch ($block) {
1030 case 0: {
1031 $t0_1 = { $get() { return s.$get().gs; }, $set(v) { const obj = s.$get(); obj.gs = v; s.$set(obj); } };
1032 $t1_2 = $t0_1.$get();
1033 $t2_3 = ($t1_2 === null);
1034 if ($t2_3) {
1035 $block = 1; break;
1036 }
1037 else {
1038 $block = 2; break;
1039 }
1040 break;
1041 }
1042 case 1: {
1043 $t3_4 = errResponse('no group');
1044 return $t3_4;
1045 break;
1046 }
1047 case 2: {
1048 $t4_5 = { $value: { ok: false, err: '', eventJSON: '', rumorJSON: '', pubkey: '', content: '', kind: 0, mlsGroupIDHex: '', nostrGroupIDHex: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1049 $t5_6 = okResponse();
1050 $t4_5.$set($rt.builtin.cloneValue($t5_6));
1051 $t6_7 = { $get() { return s.$get().gs; }, $set(v) { const obj = s.$get(); obj.gs = v; s.$set(obj); } };
1052 $t7_8 = $t6_7.$get();
1053 $t8_9 = { $get() { return $t7_8.$get().MLSGroupID; }, $set(v) { const obj = $t7_8.$get(); obj.MLSGroupID = v; $t7_8.$set(obj); } };
1054 $t9_10 = $t8_9.$get();
1055 $t10_11 = smesh$lol$web$common$helpers.HexEncode($t9_10);
1056 $t11_12 = { $get() { return $t4_5.$get().mlsGroupIDHex; }, $set(v) { const obj = $t4_5.$get(); obj.mlsGroupIDHex = v; $t4_5.$set(obj); } };
1057 $t11_12.$set($t10_11);
1058 $t12_13 = { $get() { return s.$get().gs; }, $set(v) { const obj = s.$get(); obj.gs = v; s.$set(obj); } };
1059 $t13_14 = $t12_13.$get();
1060 $t14_15 = { $get() { return $t13_14.$get().NostrGroupID; }, $set(v) { const obj = $t13_14.$get(); obj.NostrGroupID = v; $t13_14.$set(obj); } };
1061 $t15_16 = $t14_15.$get();
1062 $t16_17 = smesh$lol$web$common$helpers.HexEncode($t15_16);
1063 $t17_18 = { $get() { return $t4_5.$get().nostrGroupIDHex; }, $set(v) { const obj = $t4_5.$get(); obj.nostrGroupIDHex = v; $t4_5.$set(obj); } };
1064 $t17_18.$set($t16_17);
1065 $t18_19 = $t4_5.$get();
1066 return $t18_19;
1067 break;
1068 }
1069 }
1070 }
1071 }
1072
1073 export function okResponse() {
1074 let $t0_1, $t1_2, $t2_3;
1075 $t0_1 = { $value: { ok: false, err: '', eventJSON: '', rumorJSON: '', pubkey: '', content: '', kind: 0, mlsGroupIDHex: '', nostrGroupIDHex: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1076 $t1_2 = { $get() { return $t0_1.$get().ok; }, $set(v) { const obj = $t0_1.$get(); obj.ok = v; $t0_1.$set(obj); } };
1077 $t1_2.$set(true);
1078 $t2_3 = $t0_1.$get();
1079 return $t2_3;
1080 }
1081
1082 export function errResponse(msg) {
1083 let $t0_1, $t1_2, $t2_3, $t3_4;
1084 $t0_1 = { $value: { ok: false, err: '', eventJSON: '', rumorJSON: '', pubkey: '', content: '', kind: 0, mlsGroupIDHex: '', nostrGroupIDHex: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1085 $t1_2 = { $get() { return $t0_1.$get().ok; }, $set(v) { const obj = $t0_1.$get(); obj.ok = v; $t0_1.$set(obj); } };
1086 $t2_3 = { $get() { return $t0_1.$get().err; }, $set(v) { const obj = $t0_1.$get(); obj.err = v; $t0_1.$set(obj); } };
1087 $t1_2.$set(false);
1088 $t2_3.$set(msg);
1089 $t3_4 = $t0_1.$get();
1090 return $t3_4;
1091 }
1092
1093 export function serializeResponse(r) {
1094 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80, $t80_81, $t81_82, $t82_83, $t83_84, $t84_85;
1095 let $block = 0;
1096 while (true) {
1097 switch ($block) {
1098 case 0: {
1099 $t0_1 = { $value: { ok: false, err: '', eventJSON: '', rumorJSON: '', pubkey: '', content: '', kind: 0, mlsGroupIDHex: '', nostrGroupIDHex: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1100 $t0_1.$set($rt.builtin.cloneValue(r));
1101 $t1_2 = { $value: $rt.builtin.makeSlice(256, 256, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1102 $t2_3 = $rt.builtin.sliceSlice($t1_2.$get(), undefined, 0, undefined);
1103 $t3_4 = { $get() { return $t0_1.$get().ok; }, $set(v) { const obj = $t0_1.$get(); obj.ok = v; $t0_1.$set(obj); } };
1104 $t4_5 = $t3_4.$get();
1105 if ($t4_5) {
1106 $block = 1; break;
1107 }
1108 else {
1109 $block = 3; break;
1110 }
1111 break;
1112 }
1113 case 1: {
1114 $t5_6 = $rt.builtin.appendString($t2_3, '{"ok":true');
1115 $t6_7 = $t5_6;
1116 $block = 2; break;
1117 break;
1118 }
1119 case 2: {
1120 $t7_8 = { $get() { return $t0_1.$get().err; }, $set(v) { const obj = $t0_1.$get(); obj.err = v; $t0_1.$set(obj); } };
1121 $t8_9 = $t7_8.$get();
1122 $t9_10 = !$rt.builtin.stringEqual($t8_9, '');
1123 if ($t9_10) {
1124 $block = 4; break;
1125 }
1126 else {
1127 $t16_17 = $t6_7;
1128 $block = 5; break;
1129 }
1130 break;
1131 }
1132 case 3: {
1133 $t10_11 = $rt.builtin.appendString($t2_3, '{"ok":false');
1134 $t6_7 = $t10_11;
1135 $block = 2; break;
1136 break;
1137 }
1138 case 4: {
1139 $t11_12 = $rt.builtin.appendString($t6_7, ',"error":');
1140 $t12_13 = { $get() { return $t0_1.$get().err; }, $set(v) { const obj = $t0_1.$get(); obj.err = v; $t0_1.$set(obj); } };
1141 $t13_14 = $t12_13.$get();
1142 $t14_15 = smesh$lol$web$common$helpers.JsonString($t13_14);
1143 $t15_16 = $rt.builtin.appendString($t11_12, $t14_15);
1144 $t16_17 = $t15_16;
1145 $block = 5; break;
1146 break;
1147 }
1148 case 5: {
1149 $t17_18 = { $get() { return $t0_1.$get().eventJSON; }, $set(v) { const obj = $t0_1.$get(); obj.eventJSON = v; $t0_1.$set(obj); } };
1150 $t18_19 = $t17_18.$get();
1151 $t19_20 = !$rt.builtin.stringEqual($t18_19, '');
1152 if ($t19_20) {
1153 $block = 6; break;
1154 }
1155 else {
1156 $t25_26 = $t16_17;
1157 $block = 7; break;
1158 }
1159 break;
1160 }
1161 case 6: {
1162 $t20_21 = $rt.builtin.appendString($t16_17, ',"event_json":');
1163 $t21_22 = { $get() { return $t0_1.$get().eventJSON; }, $set(v) { const obj = $t0_1.$get(); obj.eventJSON = v; $t0_1.$set(obj); } };
1164 $t22_23 = $t21_22.$get();
1165 $t23_24 = smesh$lol$web$common$helpers.JsonString($t22_23);
1166 $t24_25 = $rt.builtin.appendString($t20_21, $t23_24);
1167 $t25_26 = $t24_25;
1168 $block = 7; break;
1169 break;
1170 }
1171 case 7: {
1172 $t26_27 = { $get() { return $t0_1.$get().rumorJSON; }, $set(v) { const obj = $t0_1.$get(); obj.rumorJSON = v; $t0_1.$set(obj); } };
1173 $t27_28 = $t26_27.$get();
1174 $t28_29 = !$rt.builtin.stringEqual($t27_28, '');
1175 if ($t28_29) {
1176 $block = 8; break;
1177 }
1178 else {
1179 $t34_35 = $t25_26;
1180 $block = 9; break;
1181 }
1182 break;
1183 }
1184 case 8: {
1185 $t29_30 = $rt.builtin.appendString($t25_26, ',"rumor_json":');
1186 $t30_31 = { $get() { return $t0_1.$get().rumorJSON; }, $set(v) { const obj = $t0_1.$get(); obj.rumorJSON = v; $t0_1.$set(obj); } };
1187 $t31_32 = $t30_31.$get();
1188 $t32_33 = smesh$lol$web$common$helpers.JsonString($t31_32);
1189 $t33_34 = $rt.builtin.appendString($t29_30, $t32_33);
1190 $t34_35 = $t33_34;
1191 $block = 9; break;
1192 break;
1193 }
1194 case 9: {
1195 $t35_36 = { $get() { return $t0_1.$get().pubkey; }, $set(v) { const obj = $t0_1.$get(); obj.pubkey = v; $t0_1.$set(obj); } };
1196 $t36_37 = $t35_36.$get();
1197 $t37_38 = !$rt.builtin.stringEqual($t36_37, '');
1198 if ($t37_38) {
1199 $block = 10; break;
1200 }
1201 else {
1202 $t43_44 = $t34_35;
1203 $block = 11; break;
1204 }
1205 break;
1206 }
1207 case 10: {
1208 $t38_39 = $rt.builtin.appendString($t34_35, ',"pubkey":');
1209 $t39_40 = { $get() { return $t0_1.$get().pubkey; }, $set(v) { const obj = $t0_1.$get(); obj.pubkey = v; $t0_1.$set(obj); } };
1210 $t40_41 = $t39_40.$get();
1211 $t41_42 = smesh$lol$web$common$helpers.JsonString($t40_41);
1212 $t42_43 = $rt.builtin.appendString($t38_39, $t41_42);
1213 $t43_44 = $t42_43;
1214 $block = 11; break;
1215 break;
1216 }
1217 case 11: {
1218 $t44_45 = { $get() { return $t0_1.$get().content; }, $set(v) { const obj = $t0_1.$get(); obj.content = v; $t0_1.$set(obj); } };
1219 $t45_46 = $t44_45.$get();
1220 $t46_47 = !$rt.builtin.stringEqual($t45_46, '');
1221 if ($t46_47) {
1222 $block = 12; break;
1223 }
1224 else {
1225 $t52_53 = $t43_44;
1226 $block = 13; break;
1227 }
1228 break;
1229 }
1230 case 12: {
1231 $t47_48 = $rt.builtin.appendString($t43_44, ',"content":');
1232 $t48_49 = { $get() { return $t0_1.$get().content; }, $set(v) { const obj = $t0_1.$get(); obj.content = v; $t0_1.$set(obj); } };
1233 $t49_50 = $t48_49.$get();
1234 $t50_51 = smesh$lol$web$common$helpers.JsonString($t49_50);
1235 $t51_52 = $rt.builtin.appendString($t47_48, $t50_51);
1236 $t52_53 = $t51_52;
1237 $block = 13; break;
1238 break;
1239 }
1240 case 13: {
1241 $t53_54 = { $get() { return $t0_1.$get().kind; }, $set(v) { const obj = $t0_1.$get(); obj.kind = v; $t0_1.$set(obj); } };
1242 $t54_55 = $t53_54.$get();
1243 $t55_56 = ($t54_55 !== 0);
1244 if ($t55_56) {
1245 $block = 14; break;
1246 }
1247 else {
1248 $t62_63 = $t52_53;
1249 $block = 15; break;
1250 }
1251 break;
1252 }
1253 case 14: {
1254 $t56_57 = $rt.builtin.appendString($t52_53, ',"kind":');
1255 $t57_58 = { $get() { return $t0_1.$get().kind; }, $set(v) { const obj = $t0_1.$get(); obj.kind = v; $t0_1.$set(obj); } };
1256 $t58_59 = $t57_58.$get();
1257 $t59_60 = BigInt($t58_59);
1258 $t60_61 = smesh$lol$web$common$helpers.Itoa($t59_60);
1259 $t61_62 = $rt.builtin.appendString($t56_57, $t60_61);
1260 $t62_63 = $t61_62;
1261 $block = 15; break;
1262 break;
1263 }
1264 case 15: {
1265 $t63_64 = { $get() { return $t0_1.$get().mlsGroupIDHex; }, $set(v) { const obj = $t0_1.$get(); obj.mlsGroupIDHex = v; $t0_1.$set(obj); } };
1266 $t64_65 = $t63_64.$get();
1267 $t65_66 = !$rt.builtin.stringEqual($t64_65, '');
1268 if ($t65_66) {
1269 $block = 16; break;
1270 }
1271 else {
1272 $t71_72 = $t62_63;
1273 $block = 17; break;
1274 }
1275 break;
1276 }
1277 case 16: {
1278 $t66_67 = $rt.builtin.appendString($t62_63, ',"mls_group_id_hex":');
1279 $t67_68 = { $get() { return $t0_1.$get().mlsGroupIDHex; }, $set(v) { const obj = $t0_1.$get(); obj.mlsGroupIDHex = v; $t0_1.$set(obj); } };
1280 $t68_69 = $t67_68.$get();
1281 $t69_70 = smesh$lol$web$common$helpers.JsonString($t68_69);
1282 $t70_71 = $rt.builtin.appendString($t66_67, $t69_70);
1283 $t71_72 = $t70_71;
1284 $block = 17; break;
1285 break;
1286 }
1287 case 17: {
1288 $t72_73 = { $get() { return $t0_1.$get().nostrGroupIDHex; }, $set(v) { const obj = $t0_1.$get(); obj.nostrGroupIDHex = v; $t0_1.$set(obj); } };
1289 $t73_74 = $t72_73.$get();
1290 $t74_75 = !$rt.builtin.stringEqual($t73_74, '');
1291 if ($t74_75) {
1292 $block = 18; break;
1293 }
1294 else {
1295 $t80_81 = $t71_72;
1296 $block = 19; break;
1297 }
1298 break;
1299 }
1300 case 18: {
1301 $t75_76 = $rt.builtin.appendString($t71_72, ',"nostr_group_id_hex":');
1302 $t76_77 = { $get() { return $t0_1.$get().nostrGroupIDHex; }, $set(v) { const obj = $t0_1.$get(); obj.nostrGroupIDHex = v; $t0_1.$set(obj); } };
1303 $t77_78 = $t76_77.$get();
1304 $t78_79 = smesh$lol$web$common$helpers.JsonString($t77_78);
1305 $t79_80 = $rt.builtin.appendString($t75_76, $t78_79);
1306 $t80_81 = $t79_80;
1307 $block = 19; break;
1308 break;
1309 }
1310 case 19: {
1311 $t81_82 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1312 $t82_83 = $t81_82.$get().addr(0);
1313 $t82_83.$set(125);
1314 $t83_84 = $rt.builtin.sliceSlice($t81_82.$get(), undefined, undefined, undefined);
1315 $t84_85 = $rt.builtin.appendSlice($t80_81, $t83_84);
1316 return $t84_85;
1317 break;
1318 }
1319 }
1320 }
1321 }
1322
1323 export function trimSpace(s) {
1324 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15;
1325 let $block = 0;
1326 while (true) {
1327 switch ($block) {
1328 case 0: {
1329 $t0_1 = $rt.builtin.len(s);
1330 $t2_3 = 0;
1331 $block = 2; break;
1332 break;
1333 }
1334 case 1: {
1335 $t1_2 = ($t2_3 + 1);
1336 $t2_3 = $t1_2;
1337 $block = 2; break;
1338 break;
1339 }
1340 case 2: {
1341 $t3_4 = ($t2_3 < $t0_1);
1342 if ($t3_4) {
1343 $block = 3; break;
1344 }
1345 else {
1346 $t9_10 = $t0_1;
1347 $block = 6; break;
1348 }
1349 break;
1350 }
1351 case 3: {
1352 $t4_5 = s.addr($t2_3);
1353 $t5_6 = $t4_5.$get();
1354 $t6_7 = isSpace($t5_6);
1355 if ($t6_7) {
1356 $block = 1; break;
1357 }
1358 else {
1359 $t9_10 = $t0_1;
1360 $block = 6; break;
1361 }
1362 break;
1363 }
1364 case 4: {
1365 $t7_8 = ($t9_10 - 1);
1366 $t9_10 = $t7_8;
1367 $block = 6; break;
1368 break;
1369 }
1370 case 5: {
1371 $t8_9 = $rt.builtin.stringSlice(s, $t2_3, $t9_10);
1372 return $t8_9;
1373 break;
1374 }
1375 case 6: {
1376 $t10_11 = ($t9_10 > $t2_3);
1377 if ($t10_11) {
1378 $block = 7; break;
1379 }
1380 else {
1381 $block = 5; break;
1382 }
1383 break;
1384 }
1385 case 7: {
1386 $t11_12 = ($t9_10 - 1);
1387 $t12_13 = s.addr($t11_12);
1388 $t13_14 = $t12_13.$get();
1389 $t14_15 = isSpace($t13_14);
1390 if ($t14_15) {
1391 $block = 4; break;
1392 }
1393 else {
1394 $block = 5; break;
1395 }
1396 break;
1397 }
1398 }
1399 }
1400 }
1401
1402 export function isSpace(c) {
1403 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5;
1404 let $block = 0;
1405 while (true) {
1406 switch ($block) {
1407 case 0: {
1408 $t0_1 = (c === 32);
1409 if ($t0_1) {
1410 $t2_3 = true;
1411 $block = 2; break;
1412 }
1413 else {
1414 $block = 4; break;
1415 }
1416 break;
1417 }
1418 case 1: {
1419 $t1_2 = (c === 10);
1420 $t2_3 = $t1_2;
1421 $block = 2; break;
1422 break;
1423 }
1424 case 2: {
1425 return $t2_3;
1426 break;
1427 }
1428 case 3: {
1429 $t3_4 = (c === 13);
1430 if ($t3_4) {
1431 $t2_3 = true;
1432 $block = 2; break;
1433 }
1434 else {
1435 $block = 1; break;
1436 }
1437 break;
1438 }
1439 case 4: {
1440 $t4_5 = (c === 9);
1441 if ($t4_5) {
1442 $t2_3 = true;
1443 $block = 2; break;
1444 }
1445 else {
1446 $block = 3; break;
1447 }
1448 break;
1449 }
1450 }
1451 }
1452 }
1453
1454