+7
-2
deno.json
+7
-2
deno.json
···
18
18
"compile": {
19
19
"command": "deno compile --include=./dist --no-check --allow-read=./dist --allow-net='0.0.0.0:3001' ./src/server/main.ts",
20
20
"dependencies": ["build"]
21
-
}
21
+
},
22
+
"format:imports": "deno run -A npm:eslint --fix 'src/**/*.{ts,tsx}'",
23
+
"format": "deno run format:imports && deno fmt"
22
24
},
23
25
24
26
"imports": {
···
29
31
"@sitnik/nanoid": "jsr:@sitnik/nanoid@^5.1.5",
30
32
"@types/react": "npm:@types/react@^19.1.6",
31
33
"@types/react-dom": "npm:@types/react-dom@^19.1.6",
34
+
"@typescript-eslint/parser": "npm:@typescript-eslint/parser@^8.34.0",
32
35
"@vitejs/plugin-react": "npm:@vitejs/plugin-react@^4.4.1",
36
+
"eslint-plugin-simple-import-sort": "npm:eslint-plugin-simple-import-sort@^12.1.1",
33
37
"react": "npm:react@^19.1.0",
34
38
"react-dom": "npm:react-dom@^19.1.0",
35
39
"react-router-dom": "npm:react-router-dom@^7.5.1",
36
40
"vite": "npm:vite@^6.3.2",
37
-
"zod": "npm:zod@3"
41
+
"zod": "npm:zod@3",
42
+
"zustand": "npm:zustand@^5.0.5"
38
43
},
39
44
"nodeModulesDir": "auto",
40
45
+832
-10
deno.lock
+832
-10
deno.lock
···
20
20
"npm:@types/node@*": "22.15.15",
21
21
"npm:@types/react-dom@^19.1.6": "19.1.6_@types+react@19.1.6",
22
22
"npm:@types/react@^19.1.6": "19.1.6",
23
+
"npm:@typescript-eslint/parser@^8.34.0": "8.34.0_eslint@9.28.0_typescript@5.8.3",
23
24
"npm:@vitejs/plugin-react@^4.4.1": "4.5.1_vite@6.3.5__picomatch@4.0.2_@babel+core@7.27.4_@types+node@22.15.15",
25
+
"npm:eslint-plugin-simple-import-sort@^12.1.1": "12.1.1_eslint@9.28.0",
26
+
"npm:eslint@*": "9.28.0",
27
+
"npm:eslint@8.57.0": "8.57.0",
24
28
"npm:path-to-regexp@^6.3.0": "6.3.0",
25
29
"npm:react-dom@^19.1.0": "19.1.0_react@19.1.0",
26
30
"npm:react-router-dom@^7.5.1": "7.6.2_react@19.1.0_react-dom@19.1.0__react@19.1.0",
27
31
"npm:react@^19.1.0": "19.1.0",
28
32
"npm:vite@^6.3.2": "6.3.5_picomatch@4.0.2_@types+node@22.15.15",
29
-
"npm:zod@3": "3.25.53"
33
+
"npm:zod@3": "3.25.53",
34
+
"npm:zustand@^5.0.5": "5.0.5_@types+react@19.1.6_react@19.1.0"
30
35
},
31
36
"jsr": {
32
37
"@oak/commons@1.0.1": {
···
125
130
"debug",
126
131
"gensync",
127
132
"json5",
128
-
"semver"
133
+
"semver@6.3.1"
129
134
]
130
135
},
131
136
"@babel/generator@7.27.5": {
···
145
150
"@babel/helper-validator-option",
146
151
"browserslist",
147
152
"lru-cache",
148
-
"semver"
153
+
"semver@6.3.1"
149
154
]
150
155
},
151
156
"@babel/helper-module-imports@7.27.1": {
···
221
226
"@babel/template",
222
227
"@babel/types",
223
228
"debug",
224
-
"globals"
229
+
"globals@11.12.0"
225
230
]
226
231
},
227
232
"@babel/types@7.27.6": {
···
368
373
"os": ["win32"],
369
374
"cpu": ["x64"]
370
375
},
376
+
"@eslint-community/eslint-utils@4.7.0_eslint@8.57.0": {
377
+
"integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==",
378
+
"dependencies": [
379
+
"eslint@8.57.0",
380
+
"eslint-visitor-keys@3.4.3"
381
+
]
382
+
},
383
+
"@eslint-community/eslint-utils@4.7.0_eslint@9.28.0": {
384
+
"integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==",
385
+
"dependencies": [
386
+
"eslint@9.28.0",
387
+
"eslint-visitor-keys@3.4.3"
388
+
]
389
+
},
390
+
"@eslint-community/regexpp@4.12.1": {
391
+
"integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ=="
392
+
},
393
+
"@eslint/config-array@0.20.0": {
394
+
"integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==",
395
+
"dependencies": [
396
+
"@eslint/object-schema",
397
+
"debug",
398
+
"minimatch@3.1.2"
399
+
]
400
+
},
401
+
"@eslint/config-helpers@0.2.2": {
402
+
"integrity": "sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg=="
403
+
},
404
+
"@eslint/core@0.14.0": {
405
+
"integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==",
406
+
"dependencies": [
407
+
"@types/json-schema"
408
+
]
409
+
},
410
+
"@eslint/eslintrc@2.1.4": {
411
+
"integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
412
+
"dependencies": [
413
+
"ajv",
414
+
"debug",
415
+
"espree@9.6.1_acorn@8.15.0",
416
+
"globals@13.24.0",
417
+
"ignore",
418
+
"import-fresh",
419
+
"js-yaml",
420
+
"minimatch@3.1.2",
421
+
"strip-json-comments"
422
+
]
423
+
},
424
+
"@eslint/eslintrc@3.3.1": {
425
+
"integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==",
426
+
"dependencies": [
427
+
"ajv",
428
+
"debug",
429
+
"espree@10.4.0_acorn@8.15.0",
430
+
"globals@14.0.0",
431
+
"ignore",
432
+
"import-fresh",
433
+
"js-yaml",
434
+
"minimatch@3.1.2",
435
+
"strip-json-comments"
436
+
]
437
+
},
438
+
"@eslint/js@8.57.0": {
439
+
"integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g=="
440
+
},
441
+
"@eslint/js@9.28.0": {
442
+
"integrity": "sha512-fnqSjGWd/CoIp4EXIxWVK/sHA6DOHN4+8Ix2cX5ycOY7LG0UY8nHCU5pIp2eaE1Mc7Qd8kHspYNzYXT2ojPLzg=="
443
+
},
444
+
"@eslint/object-schema@2.1.6": {
445
+
"integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA=="
446
+
},
447
+
"@eslint/plugin-kit@0.3.1": {
448
+
"integrity": "sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==",
449
+
"dependencies": [
450
+
"@eslint/core",
451
+
"levn"
452
+
]
453
+
},
454
+
"@humanfs/core@0.19.1": {
455
+
"integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="
456
+
},
457
+
"@humanfs/node@0.16.6": {
458
+
"integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==",
459
+
"dependencies": [
460
+
"@humanfs/core",
461
+
"@humanwhocodes/retry@0.3.1"
462
+
]
463
+
},
464
+
"@humanwhocodes/config-array@0.11.14": {
465
+
"integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
466
+
"dependencies": [
467
+
"@humanwhocodes/object-schema",
468
+
"debug",
469
+
"minimatch@3.1.2"
470
+
],
471
+
"deprecated": true
472
+
},
473
+
"@humanwhocodes/module-importer@1.0.1": {
474
+
"integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="
475
+
},
476
+
"@humanwhocodes/object-schema@2.0.3": {
477
+
"integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
478
+
"deprecated": true
479
+
},
480
+
"@humanwhocodes/retry@0.3.1": {
481
+
"integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA=="
482
+
},
483
+
"@humanwhocodes/retry@0.4.3": {
484
+
"integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ=="
485
+
},
371
486
"@jridgewell/gen-mapping@0.3.8": {
372
487
"integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
373
488
"dependencies": [
···
390
505
"dependencies": [
391
506
"@jridgewell/resolve-uri",
392
507
"@jridgewell/sourcemap-codec"
508
+
]
509
+
},
510
+
"@nodelib/fs.scandir@2.1.5": {
511
+
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
512
+
"dependencies": [
513
+
"@nodelib/fs.stat",
514
+
"run-parallel"
515
+
]
516
+
},
517
+
"@nodelib/fs.stat@2.0.5": {
518
+
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="
519
+
},
520
+
"@nodelib/fs.walk@1.2.8": {
521
+
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
522
+
"dependencies": [
523
+
"@nodelib/fs.scandir",
524
+
"fastq"
393
525
]
394
526
},
395
527
"@rolldown/pluginutils@1.0.0-beta.9": {
···
527
659
"@types/estree@1.0.7": {
528
660
"integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ=="
529
661
},
662
+
"@types/json-schema@7.0.15": {
663
+
"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="
664
+
},
530
665
"@types/node@22.15.15": {
531
666
"integrity": "sha512-R5muMcZob3/Jjchn5LcO8jdKwSCbzqmPB6ruBxMcf9kbxtniZHP327s6C37iOfuw8mbKK3cAQa7sEl7afLrQ8A==",
532
667
"dependencies": [
···
545
680
"csstype"
546
681
]
547
682
},
683
+
"@typescript-eslint/parser@8.34.0_eslint@9.28.0_typescript@5.8.3": {
684
+
"integrity": "sha512-vxXJV1hVFx3IXz/oy2sICsJukaBrtDEQSBiV48/YIV5KWjX1dO+bcIr/kCPrW6weKXvsaGKFNlwH0v2eYdRRbA==",
685
+
"dependencies": [
686
+
"@typescript-eslint/scope-manager",
687
+
"@typescript-eslint/types",
688
+
"@typescript-eslint/typescript-estree",
689
+
"@typescript-eslint/visitor-keys",
690
+
"debug",
691
+
"eslint@9.28.0",
692
+
"typescript"
693
+
]
694
+
},
695
+
"@typescript-eslint/project-service@8.34.0_typescript@5.8.3": {
696
+
"integrity": "sha512-iEgDALRf970/B2YExmtPMPF54NenZUf4xpL3wsCRx/lgjz6ul/l13R81ozP/ZNuXfnLCS+oPmG7JIxfdNYKELw==",
697
+
"dependencies": [
698
+
"@typescript-eslint/tsconfig-utils",
699
+
"@typescript-eslint/types",
700
+
"debug",
701
+
"typescript"
702
+
]
703
+
},
704
+
"@typescript-eslint/scope-manager@8.34.0": {
705
+
"integrity": "sha512-9Ac0X8WiLykl0aj1oYQNcLZjHgBojT6cW68yAgZ19letYu+Hxd0rE0veI1XznSSst1X5lwnxhPbVdwjDRIomRw==",
706
+
"dependencies": [
707
+
"@typescript-eslint/types",
708
+
"@typescript-eslint/visitor-keys"
709
+
]
710
+
},
711
+
"@typescript-eslint/tsconfig-utils@8.34.0_typescript@5.8.3": {
712
+
"integrity": "sha512-+W9VYHKFIzA5cBeooqQxqNriAP0QeQ7xTiDuIOr71hzgffm3EL2hxwWBIIj4GuofIbKxGNarpKqIq6Q6YrShOA==",
713
+
"dependencies": [
714
+
"typescript"
715
+
]
716
+
},
717
+
"@typescript-eslint/types@8.34.0": {
718
+
"integrity": "sha512-9V24k/paICYPniajHfJ4cuAWETnt7Ssy+R0Rbcqo5sSFr3QEZ/8TSoUi9XeXVBGXCaLtwTOKSLGcInCAvyZeMA=="
719
+
},
720
+
"@typescript-eslint/typescript-estree@8.34.0_typescript@5.8.3": {
721
+
"integrity": "sha512-rOi4KZxI7E0+BMqG7emPSK1bB4RICCpF7QD3KCLXn9ZvWoESsOMlHyZPAHyG04ujVplPaHbmEvs34m+wjgtVtg==",
722
+
"dependencies": [
723
+
"@typescript-eslint/project-service",
724
+
"@typescript-eslint/tsconfig-utils",
725
+
"@typescript-eslint/types",
726
+
"@typescript-eslint/visitor-keys",
727
+
"debug",
728
+
"fast-glob",
729
+
"is-glob",
730
+
"minimatch@9.0.5",
731
+
"semver@7.7.2",
732
+
"ts-api-utils",
733
+
"typescript"
734
+
]
735
+
},
736
+
"@typescript-eslint/visitor-keys@8.34.0": {
737
+
"integrity": "sha512-qHV7pW7E85A0x6qyrFn+O+q1k1p3tQCsqIZ1KZ5ESLXY57aTvUd3/a4rdPTeXisvhXn2VQG0VSKUqs8KHF2zcA==",
738
+
"dependencies": [
739
+
"@typescript-eslint/types",
740
+
"eslint-visitor-keys@4.2.1"
741
+
]
742
+
},
743
+
"@ungap/structured-clone@1.3.0": {
744
+
"integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="
745
+
},
548
746
"@vitejs/plugin-react@4.5.1_vite@6.3.5__picomatch@4.0.2_@babel+core@7.27.4": {
549
747
"integrity": "sha512-uPZBqSI0YD4lpkIru6M35sIfylLGTyhGHvDZbNLuMA73lMlwJKz5xweH7FajfcCAc2HnINciejA9qTz0dr0M7A==",
550
748
"dependencies": [
···
569
767
"vite@6.3.5_picomatch@4.0.2_@types+node@22.15.15"
570
768
]
571
769
},
770
+
"acorn-jsx@5.3.2_acorn@8.15.0": {
771
+
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
772
+
"dependencies": [
773
+
"acorn"
774
+
]
775
+
},
776
+
"acorn@8.15.0": {
777
+
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
778
+
"bin": true
779
+
},
780
+
"ajv@6.12.6": {
781
+
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
782
+
"dependencies": [
783
+
"fast-deep-equal",
784
+
"fast-json-stable-stringify",
785
+
"json-schema-traverse",
786
+
"uri-js"
787
+
]
788
+
},
789
+
"ansi-regex@5.0.1": {
790
+
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
791
+
},
792
+
"ansi-styles@4.3.0": {
793
+
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
794
+
"dependencies": [
795
+
"color-convert"
796
+
]
797
+
},
798
+
"argparse@2.0.1": {
799
+
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
800
+
},
801
+
"balanced-match@1.0.2": {
802
+
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
803
+
},
804
+
"brace-expansion@1.1.11": {
805
+
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
806
+
"dependencies": [
807
+
"balanced-match",
808
+
"concat-map"
809
+
]
810
+
},
811
+
"brace-expansion@2.0.1": {
812
+
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
813
+
"dependencies": [
814
+
"balanced-match"
815
+
]
816
+
},
817
+
"braces@3.0.3": {
818
+
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
819
+
"dependencies": [
820
+
"fill-range"
821
+
]
822
+
},
572
823
"browserslist@4.25.0": {
573
824
"integrity": "sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==",
574
825
"dependencies": [
···
579
830
],
580
831
"bin": true
581
832
},
833
+
"callsites@3.1.0": {
834
+
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
835
+
},
582
836
"caniuse-lite@1.0.30001721": {
583
837
"integrity": "sha512-cOuvmUVtKrtEaoKiO0rSc29jcjwMwX5tOHDy4MgVFEWiUXj4uBMJkwI8MDySkgXidpMiHUcviogAvFi4pA2hDQ=="
584
838
},
839
+
"chalk@4.1.2": {
840
+
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
841
+
"dependencies": [
842
+
"ansi-styles",
843
+
"supports-color"
844
+
]
845
+
},
846
+
"color-convert@2.0.1": {
847
+
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
848
+
"dependencies": [
849
+
"color-name"
850
+
]
851
+
},
852
+
"color-name@1.1.4": {
853
+
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
854
+
},
855
+
"concat-map@0.0.1": {
856
+
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
857
+
},
585
858
"convert-source-map@2.0.0": {
586
859
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="
587
860
},
588
861
"cookie@1.0.2": {
589
862
"integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA=="
590
863
},
864
+
"cross-spawn@7.0.6": {
865
+
"integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
866
+
"dependencies": [
867
+
"path-key",
868
+
"shebang-command",
869
+
"which"
870
+
]
871
+
},
591
872
"csstype@3.1.3": {
592
873
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
593
874
},
···
597
878
"ms"
598
879
]
599
880
},
881
+
"deep-is@0.1.4": {
882
+
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
883
+
},
884
+
"doctrine@3.0.0": {
885
+
"integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
886
+
"dependencies": [
887
+
"esutils"
888
+
]
889
+
},
600
890
"electron-to-chromium@1.5.165": {
601
891
"integrity": "sha512-naiMx1Z6Nb2TxPU6fiFrUrDTjyPMLdTtaOd2oLmG8zVSg2hCWGkhPyxwk+qRmZ1ytwVqUv0u7ZcDA5+ALhaUtw=="
602
892
},
···
635
925
"escalade@3.2.0": {
636
926
"integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="
637
927
},
928
+
"escape-string-regexp@4.0.0": {
929
+
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
930
+
},
931
+
"eslint-plugin-simple-import-sort@12.1.1_eslint@9.28.0": {
932
+
"integrity": "sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==",
933
+
"dependencies": [
934
+
"eslint@9.28.0"
935
+
]
936
+
},
937
+
"eslint-scope@7.2.2": {
938
+
"integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
939
+
"dependencies": [
940
+
"esrecurse",
941
+
"estraverse"
942
+
]
943
+
},
944
+
"eslint-scope@8.4.0": {
945
+
"integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==",
946
+
"dependencies": [
947
+
"esrecurse",
948
+
"estraverse"
949
+
]
950
+
},
951
+
"eslint-visitor-keys@3.4.3": {
952
+
"integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="
953
+
},
954
+
"eslint-visitor-keys@4.2.1": {
955
+
"integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ=="
956
+
},
957
+
"eslint@8.57.0": {
958
+
"integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
959
+
"dependencies": [
960
+
"@eslint-community/eslint-utils@4.7.0_eslint@8.57.0",
961
+
"@eslint-community/regexpp",
962
+
"@eslint/eslintrc@2.1.4",
963
+
"@eslint/js@8.57.0",
964
+
"@humanwhocodes/config-array",
965
+
"@humanwhocodes/module-importer",
966
+
"@nodelib/fs.walk",
967
+
"@ungap/structured-clone",
968
+
"ajv",
969
+
"chalk",
970
+
"cross-spawn",
971
+
"debug",
972
+
"doctrine",
973
+
"escape-string-regexp",
974
+
"eslint-scope@7.2.2",
975
+
"eslint-visitor-keys@3.4.3",
976
+
"espree@9.6.1_acorn@8.15.0",
977
+
"esquery",
978
+
"esutils",
979
+
"fast-deep-equal",
980
+
"file-entry-cache@6.0.1",
981
+
"find-up",
982
+
"glob-parent@6.0.2",
983
+
"globals@13.24.0",
984
+
"graphemer",
985
+
"ignore",
986
+
"imurmurhash",
987
+
"is-glob",
988
+
"is-path-inside",
989
+
"js-yaml",
990
+
"json-stable-stringify-without-jsonify",
991
+
"levn",
992
+
"lodash.merge",
993
+
"minimatch@3.1.2",
994
+
"natural-compare",
995
+
"optionator",
996
+
"strip-ansi",
997
+
"text-table"
998
+
],
999
+
"deprecated": true,
1000
+
"bin": true
1001
+
},
1002
+
"eslint@9.28.0": {
1003
+
"integrity": "sha512-ocgh41VhRlf9+fVpe7QKzwLj9c92fDiqOj8Y3Sd4/ZmVA4Btx4PlUYPq4pp9JDyupkf1upbEXecxL2mwNV7jPQ==",
1004
+
"dependencies": [
1005
+
"@eslint-community/eslint-utils@4.7.0_eslint@9.28.0",
1006
+
"@eslint-community/regexpp",
1007
+
"@eslint/config-array",
1008
+
"@eslint/config-helpers",
1009
+
"@eslint/core",
1010
+
"@eslint/eslintrc@3.3.1",
1011
+
"@eslint/js@9.28.0",
1012
+
"@eslint/plugin-kit",
1013
+
"@humanfs/node",
1014
+
"@humanwhocodes/module-importer",
1015
+
"@humanwhocodes/retry@0.4.3",
1016
+
"@types/estree",
1017
+
"@types/json-schema",
1018
+
"ajv",
1019
+
"chalk",
1020
+
"cross-spawn",
1021
+
"debug",
1022
+
"escape-string-regexp",
1023
+
"eslint-scope@8.4.0",
1024
+
"eslint-visitor-keys@4.2.1",
1025
+
"espree@10.4.0_acorn@8.15.0",
1026
+
"esquery",
1027
+
"esutils",
1028
+
"fast-deep-equal",
1029
+
"file-entry-cache@8.0.0",
1030
+
"find-up",
1031
+
"glob-parent@6.0.2",
1032
+
"ignore",
1033
+
"imurmurhash",
1034
+
"is-glob",
1035
+
"json-stable-stringify-without-jsonify",
1036
+
"lodash.merge",
1037
+
"minimatch@3.1.2",
1038
+
"natural-compare",
1039
+
"optionator"
1040
+
],
1041
+
"bin": true
1042
+
},
1043
+
"espree@10.4.0_acorn@8.15.0": {
1044
+
"integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==",
1045
+
"dependencies": [
1046
+
"acorn",
1047
+
"acorn-jsx",
1048
+
"eslint-visitor-keys@4.2.1"
1049
+
]
1050
+
},
1051
+
"espree@9.6.1_acorn@8.15.0": {
1052
+
"integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
1053
+
"dependencies": [
1054
+
"acorn",
1055
+
"acorn-jsx",
1056
+
"eslint-visitor-keys@3.4.3"
1057
+
]
1058
+
},
1059
+
"esquery@1.6.0": {
1060
+
"integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
1061
+
"dependencies": [
1062
+
"estraverse"
1063
+
]
1064
+
},
1065
+
"esrecurse@4.3.0": {
1066
+
"integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
1067
+
"dependencies": [
1068
+
"estraverse"
1069
+
]
1070
+
},
1071
+
"estraverse@5.3.0": {
1072
+
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="
1073
+
},
1074
+
"esutils@2.0.3": {
1075
+
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
1076
+
},
1077
+
"fast-deep-equal@3.1.3": {
1078
+
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
1079
+
},
1080
+
"fast-glob@3.3.3": {
1081
+
"integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
1082
+
"dependencies": [
1083
+
"@nodelib/fs.stat",
1084
+
"@nodelib/fs.walk",
1085
+
"glob-parent@5.1.2",
1086
+
"merge2",
1087
+
"micromatch"
1088
+
]
1089
+
},
1090
+
"fast-json-stable-stringify@2.1.0": {
1091
+
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
1092
+
},
1093
+
"fast-levenshtein@2.0.6": {
1094
+
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="
1095
+
},
1096
+
"fastq@1.19.1": {
1097
+
"integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
1098
+
"dependencies": [
1099
+
"reusify"
1100
+
]
1101
+
},
638
1102
"fdir@6.4.5_picomatch@4.0.2": {
639
1103
"integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==",
640
1104
"dependencies": [
641
-
"picomatch"
1105
+
"picomatch@4.0.2"
642
1106
],
643
1107
"optionalPeers": [
644
-
"picomatch"
1108
+
"picomatch@4.0.2"
1109
+
]
1110
+
},
1111
+
"file-entry-cache@6.0.1": {
1112
+
"integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
1113
+
"dependencies": [
1114
+
"flat-cache@3.2.0"
1115
+
]
1116
+
},
1117
+
"file-entry-cache@8.0.0": {
1118
+
"integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
1119
+
"dependencies": [
1120
+
"flat-cache@4.0.1"
1121
+
]
1122
+
},
1123
+
"fill-range@7.1.1": {
1124
+
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
1125
+
"dependencies": [
1126
+
"to-regex-range"
1127
+
]
1128
+
},
1129
+
"find-up@5.0.0": {
1130
+
"integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
1131
+
"dependencies": [
1132
+
"locate-path",
1133
+
"path-exists"
1134
+
]
1135
+
},
1136
+
"flat-cache@3.2.0": {
1137
+
"integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
1138
+
"dependencies": [
1139
+
"flatted",
1140
+
"keyv",
1141
+
"rimraf"
645
1142
]
646
1143
},
1144
+
"flat-cache@4.0.1": {
1145
+
"integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
1146
+
"dependencies": [
1147
+
"flatted",
1148
+
"keyv"
1149
+
]
1150
+
},
1151
+
"flatted@3.3.3": {
1152
+
"integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg=="
1153
+
},
1154
+
"fs.realpath@1.0.0": {
1155
+
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
1156
+
},
647
1157
"fsevents@2.3.3": {
648
1158
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
649
1159
"os": ["darwin"],
···
652
1162
"gensync@1.0.0-beta.2": {
653
1163
"integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="
654
1164
},
1165
+
"glob-parent@5.1.2": {
1166
+
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1167
+
"dependencies": [
1168
+
"is-glob"
1169
+
]
1170
+
},
1171
+
"glob-parent@6.0.2": {
1172
+
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
1173
+
"dependencies": [
1174
+
"is-glob"
1175
+
]
1176
+
},
1177
+
"glob@7.2.3": {
1178
+
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
1179
+
"dependencies": [
1180
+
"fs.realpath",
1181
+
"inflight",
1182
+
"inherits",
1183
+
"minimatch@3.1.2",
1184
+
"once",
1185
+
"path-is-absolute"
1186
+
],
1187
+
"deprecated": true
1188
+
},
655
1189
"globals@11.12.0": {
656
1190
"integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
657
1191
},
1192
+
"globals@13.24.0": {
1193
+
"integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
1194
+
"dependencies": [
1195
+
"type-fest"
1196
+
]
1197
+
},
1198
+
"globals@14.0.0": {
1199
+
"integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="
1200
+
},
1201
+
"graphemer@1.4.0": {
1202
+
"integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="
1203
+
},
1204
+
"has-flag@4.0.0": {
1205
+
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
1206
+
},
1207
+
"ignore@5.3.2": {
1208
+
"integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="
1209
+
},
1210
+
"import-fresh@3.3.1": {
1211
+
"integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
1212
+
"dependencies": [
1213
+
"parent-module",
1214
+
"resolve-from"
1215
+
]
1216
+
},
1217
+
"imurmurhash@0.1.4": {
1218
+
"integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="
1219
+
},
1220
+
"inflight@1.0.6": {
1221
+
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
1222
+
"dependencies": [
1223
+
"once",
1224
+
"wrappy"
1225
+
],
1226
+
"deprecated": true
1227
+
},
1228
+
"inherits@2.0.4": {
1229
+
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
1230
+
},
1231
+
"is-extglob@2.1.1": {
1232
+
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
1233
+
},
1234
+
"is-glob@4.0.3": {
1235
+
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1236
+
"dependencies": [
1237
+
"is-extglob"
1238
+
]
1239
+
},
1240
+
"is-number@7.0.0": {
1241
+
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
1242
+
},
1243
+
"is-path-inside@3.0.3": {
1244
+
"integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ=="
1245
+
},
1246
+
"isexe@2.0.0": {
1247
+
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
1248
+
},
658
1249
"js-tokens@4.0.0": {
659
1250
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
660
1251
},
1252
+
"js-yaml@4.1.0": {
1253
+
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
1254
+
"dependencies": [
1255
+
"argparse"
1256
+
],
1257
+
"bin": true
1258
+
},
661
1259
"jsesc@3.1.0": {
662
1260
"integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
663
1261
"bin": true
1262
+
},
1263
+
"json-buffer@3.0.1": {
1264
+
"integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="
1265
+
},
1266
+
"json-schema-traverse@0.4.1": {
1267
+
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
1268
+
},
1269
+
"json-stable-stringify-without-jsonify@1.0.1": {
1270
+
"integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="
664
1271
},
665
1272
"json5@2.2.3": {
666
1273
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
667
1274
"bin": true
668
1275
},
1276
+
"keyv@4.5.4": {
1277
+
"integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
1278
+
"dependencies": [
1279
+
"json-buffer"
1280
+
]
1281
+
},
1282
+
"levn@0.4.1": {
1283
+
"integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
1284
+
"dependencies": [
1285
+
"prelude-ls",
1286
+
"type-check"
1287
+
]
1288
+
},
1289
+
"locate-path@6.0.0": {
1290
+
"integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
1291
+
"dependencies": [
1292
+
"p-locate"
1293
+
]
1294
+
},
1295
+
"lodash.merge@4.6.2": {
1296
+
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
1297
+
},
669
1298
"lru-cache@5.1.1": {
670
1299
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
671
1300
"dependencies": [
672
1301
"yallist"
673
1302
]
674
1303
},
1304
+
"merge2@1.4.1": {
1305
+
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
1306
+
},
1307
+
"micromatch@4.0.8": {
1308
+
"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
1309
+
"dependencies": [
1310
+
"braces",
1311
+
"picomatch@2.3.1"
1312
+
]
1313
+
},
1314
+
"minimatch@3.1.2": {
1315
+
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
1316
+
"dependencies": [
1317
+
"brace-expansion@1.1.11"
1318
+
]
1319
+
},
1320
+
"minimatch@9.0.5": {
1321
+
"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
1322
+
"dependencies": [
1323
+
"brace-expansion@2.0.1"
1324
+
]
1325
+
},
675
1326
"ms@2.1.3": {
676
1327
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
677
1328
},
678
1329
"nanoid@3.3.11": {
679
1330
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
680
1331
"bin": true
1332
+
},
1333
+
"natural-compare@1.4.0": {
1334
+
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="
681
1335
},
682
1336
"node-releases@2.0.19": {
683
1337
"integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw=="
684
1338
},
1339
+
"once@1.4.0": {
1340
+
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
1341
+
"dependencies": [
1342
+
"wrappy"
1343
+
]
1344
+
},
1345
+
"optionator@0.9.4": {
1346
+
"integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
1347
+
"dependencies": [
1348
+
"deep-is",
1349
+
"fast-levenshtein",
1350
+
"levn",
1351
+
"prelude-ls",
1352
+
"type-check",
1353
+
"word-wrap"
1354
+
]
1355
+
},
1356
+
"p-limit@3.1.0": {
1357
+
"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
1358
+
"dependencies": [
1359
+
"yocto-queue"
1360
+
]
1361
+
},
1362
+
"p-locate@5.0.0": {
1363
+
"integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
1364
+
"dependencies": [
1365
+
"p-limit"
1366
+
]
1367
+
},
1368
+
"parent-module@1.0.1": {
1369
+
"integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
1370
+
"dependencies": [
1371
+
"callsites"
1372
+
]
1373
+
},
1374
+
"path-exists@4.0.0": {
1375
+
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
1376
+
},
1377
+
"path-is-absolute@1.0.1": {
1378
+
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
1379
+
},
1380
+
"path-key@3.1.1": {
1381
+
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
1382
+
},
685
1383
"path-to-regexp@6.3.0": {
686
1384
"integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ=="
687
1385
},
688
1386
"picocolors@1.1.1": {
689
1387
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
690
1388
},
1389
+
"picomatch@2.3.1": {
1390
+
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
1391
+
},
691
1392
"picomatch@4.0.2": {
692
1393
"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg=="
693
1394
},
···
698
1399
"picocolors",
699
1400
"source-map-js"
700
1401
]
1402
+
},
1403
+
"prelude-ls@1.2.1": {
1404
+
"integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="
1405
+
},
1406
+
"punycode@2.3.1": {
1407
+
"integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="
1408
+
},
1409
+
"queue-microtask@1.2.3": {
1410
+
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
701
1411
},
702
1412
"react-dom@19.1.0_react@19.1.0": {
703
1413
"integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==",
···
732
1442
"react@19.1.0": {
733
1443
"integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg=="
734
1444
},
1445
+
"resolve-from@4.0.0": {
1446
+
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="
1447
+
},
1448
+
"reusify@1.1.0": {
1449
+
"integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="
1450
+
},
1451
+
"rimraf@3.0.2": {
1452
+
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
1453
+
"dependencies": [
1454
+
"glob"
1455
+
],
1456
+
"deprecated": true,
1457
+
"bin": true
1458
+
},
735
1459
"rollup@4.41.1": {
736
1460
"integrity": "sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==",
737
1461
"dependencies": [
···
762
1486
],
763
1487
"bin": true
764
1488
},
1489
+
"run-parallel@1.2.0": {
1490
+
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
1491
+
"dependencies": [
1492
+
"queue-microtask"
1493
+
]
1494
+
},
765
1495
"scheduler@0.26.0": {
766
1496
"integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA=="
767
1497
},
···
769
1499
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
770
1500
"bin": true
771
1501
},
1502
+
"semver@7.7.2": {
1503
+
"integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
1504
+
"bin": true
1505
+
},
772
1506
"set-cookie-parser@2.7.1": {
773
1507
"integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ=="
774
1508
},
1509
+
"shebang-command@2.0.0": {
1510
+
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
1511
+
"dependencies": [
1512
+
"shebang-regex"
1513
+
]
1514
+
},
1515
+
"shebang-regex@3.0.0": {
1516
+
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
1517
+
},
775
1518
"source-map-js@1.2.1": {
776
1519
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="
777
1520
},
1521
+
"strip-ansi@6.0.1": {
1522
+
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
1523
+
"dependencies": [
1524
+
"ansi-regex"
1525
+
]
1526
+
},
1527
+
"strip-json-comments@3.1.1": {
1528
+
"integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="
1529
+
},
1530
+
"supports-color@7.2.0": {
1531
+
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
1532
+
"dependencies": [
1533
+
"has-flag"
1534
+
]
1535
+
},
1536
+
"text-table@0.2.0": {
1537
+
"integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="
1538
+
},
778
1539
"tinyglobby@0.2.14_picomatch@4.0.2": {
779
1540
"integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==",
780
1541
"dependencies": [
781
1542
"fdir",
782
-
"picomatch"
1543
+
"picomatch@4.0.2"
1544
+
]
1545
+
},
1546
+
"to-regex-range@5.0.1": {
1547
+
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1548
+
"dependencies": [
1549
+
"is-number"
1550
+
]
1551
+
},
1552
+
"ts-api-utils@2.1.0_typescript@5.8.3": {
1553
+
"integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==",
1554
+
"dependencies": [
1555
+
"typescript"
1556
+
]
1557
+
},
1558
+
"type-check@0.4.0": {
1559
+
"integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
1560
+
"dependencies": [
1561
+
"prelude-ls"
783
1562
]
1563
+
},
1564
+
"type-fest@0.20.2": {
1565
+
"integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ=="
1566
+
},
1567
+
"typescript@5.8.3": {
1568
+
"integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
1569
+
"bin": true
784
1570
},
785
1571
"undici-types@6.21.0": {
786
1572
"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="
···
794
1580
],
795
1581
"bin": true
796
1582
},
1583
+
"uri-js@4.4.1": {
1584
+
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
1585
+
"dependencies": [
1586
+
"punycode"
1587
+
]
1588
+
},
797
1589
"vite@6.3.5_picomatch@4.0.2": {
798
1590
"integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==",
799
1591
"dependencies": [
800
1592
"esbuild",
801
1593
"fdir",
802
-
"picomatch",
1594
+
"picomatch@4.0.2",
803
1595
"postcss",
804
1596
"rollup",
805
1597
"tinyglobby"
···
815
1607
"@types/node",
816
1608
"esbuild",
817
1609
"fdir",
818
-
"picomatch",
1610
+
"picomatch@4.0.2",
819
1611
"postcss",
820
1612
"rollup",
821
1613
"tinyglobby"
···
828
1620
],
829
1621
"bin": true
830
1622
},
1623
+
"which@2.0.2": {
1624
+
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
1625
+
"dependencies": [
1626
+
"isexe"
1627
+
],
1628
+
"bin": true
1629
+
},
1630
+
"word-wrap@1.2.5": {
1631
+
"integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="
1632
+
},
1633
+
"wrappy@1.0.2": {
1634
+
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
1635
+
},
831
1636
"yallist@3.1.1": {
832
1637
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
833
1638
},
1639
+
"yocto-queue@0.1.0": {
1640
+
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
1641
+
},
834
1642
"zod@3.25.53": {
835
1643
"integrity": "sha512-BKOKoY3XcGUVkqaalCtFK15LhwR0G0i65AClFpWSXLN2gJNBGlTktukHgwexCTa/dAacPPp9ReryXPWyeZF4LQ=="
1644
+
},
1645
+
"zustand@5.0.5_@types+react@19.1.6_react@19.1.0": {
1646
+
"integrity": "sha512-mILtRfKW9xM47hqxGIxCv12gXusoY/xTSHBYApXozR0HmQv299whhBeeAcRy+KrPPybzosvJBCOmVjq6x12fCg==",
1647
+
"dependencies": [
1648
+
"@types/react",
1649
+
"react"
1650
+
],
1651
+
"optionalPeers": [
1652
+
"@types/react",
1653
+
"react"
1654
+
]
836
1655
}
837
1656
},
838
1657
"workspace": {
···
843
1662
"npm:@deno/vite-plugin@^1.0.4",
844
1663
"npm:@types/react-dom@^19.1.6",
845
1664
"npm:@types/react@^19.1.6",
1665
+
"npm:@typescript-eslint/parser@^8.34.0",
846
1666
"npm:@vitejs/plugin-react@^4.4.1",
1667
+
"npm:eslint-plugin-simple-import-sort@^12.1.1",
847
1668
"npm:react-dom@^19.1.0",
848
1669
"npm:react-router-dom@^7.5.1",
849
1670
"npm:react@^19.1.0",
850
1671
"npm:vite@^6.3.2",
851
-
"npm:zod@3"
1672
+
"npm:zod@3",
1673
+
"npm:zustand@^5.0.5"
852
1674
]
853
1675
}
854
1676
}
+20
eslint.config.js
+20
eslint.config.js
···
1
+
import tsParser from "@typescript-eslint/parser";
2
+
import simpleImportSort from "eslint-plugin-simple-import-sort";
3
+
4
+
export default [
5
+
{
6
+
files: ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx"],
7
+
languageOptions: {
8
+
parser: tsParser,
9
+
ecmaVersion: "latest",
10
+
sourceType: "module",
11
+
},
12
+
plugins: {
13
+
"simple-import-sort": simpleImportSort,
14
+
},
15
+
rules: {
16
+
"simple-import-sort/imports": "error",
17
+
"simple-import-sort/exports": "error",
18
+
},
19
+
},
20
+
];
+2
-1
src/client/src/App.tsx
+2
-1
src/client/src/App.tsx
+3
-1
src/client/src/main.tsx
+3
-1
src/client/src/main.tsx
+2
-1
src/common/crypto-enc.ts
+2
-1
src/common/crypto-enc.ts
+2
-2
src/common/crypto-sig.ts
+2
-2
src/common/crypto-sig.ts
···
1
1
import { decodeJwt, importJWK, JWTPayload, jwtVerify, JWTVerifyResult } from "@panva/jose";
2
-
import { generateKeyPair } from "@panva/jose/key/generate/keypair";
3
2
import { calculateJwkThumbprint } from "@panva/jose/jwk/thumbprint";
4
3
import { exportJWK } from "@panva/jose/key/export";
5
-
import { z, ZodError } from "zod/v4";
4
+
import { generateKeyPair } from "@panva/jose/key/generate/keypair";
6
5
import { signAlgo } from "@repo/common/crypto-algos.ts";
6
+
import { z, ZodError } from "zod/v4";
7
7
8
8
const CLOCK_TOLERANCE_S = 30;
9
9
+1
-1
src/common/socket.ts
+1
-1
src/common/socket.ts
···
1
1
import { BlockingAtom } from "./blocking-atom.ts";
2
2
import { BlockingQueue } from "./blocking-queue.ts";
3
-
import { makeGate } from "./gate.ts";
4
3
import { CancellationError } from "./errors.ts";
4
+
import { makeGate } from "./gate.ts";
5
5
6
6
const STREAM_CONFIG_DEFAULT = {
7
7
signal: undefined as AbortSignal | undefined,
+2
-1
src/schema/proto.ts
+2
-1
src/schema/proto.ts
+1
-1
src/server/main.ts
+1
-1
src/server/main.ts
+1
-1
src/server/routes-socket/handler-error.ts
+1
-1
src/server/routes-socket/handler-error.ts
+1
-2
src/server/routes-socket/handler-preauth.ts
+1
-2
src/server/routes-socket/handler-preauth.ts
···
1
1
import { jwtVerify } from "@panva/jose";
2
-
3
2
import { combineSignals, timeoutSignal } from "@repo/common/aborts.ts";
3
+
import { jwtDecodedSchema } from "@repo/common/crypto-sig.ts";
4
4
import { AuthError, normalizeError } from "@repo/common/errors.ts";
5
5
import { takeSocket } from "@repo/common/socket.ts";
6
6
import { StrictMap } from "@repo/common/strict-map.ts";
7
-
import { jwtDecodedSchema } from "@repo/common/crypto-sig.ts";
8
7
import { preauthAuthnMessageSchema } from "@repo/schema/proto.ts";
9
8
import { parseIdentId, parseRealmId } from "@repo/schema/state.ts";
10
9
+1
-1
src/server/routes-socket/handler-realm.ts
+1
-1
src/server/routes-socket/handler-realm.ts
···
1
-
import { Realm, Session } from "./state.ts";
2
1
import { streamSocket } from "../../common/socket.ts";
2
+
import { Realm, Session } from "./state.ts";
3
3
4
4
export async function realmHandler(ws: WebSocket, realm: Realm, auth: Session, signal: AbortSignal) {
5
5
ws.send(`welcome ${auth.identid} to ${auth.realmid} - ${realm.identities.keys()} `);
+1
-1
src/server/routes-socket/handler.ts
+1
-1
src/server/routes-socket/handler.ts
···
2
2
3
3
import { errorHandler } from "./handler-error.ts";
4
4
import { preauthHandler } from "./handler-preauth.ts";
5
-
import { attachSocket, detachSocket } from "./state.ts";
6
5
import { realmHandler } from "./handler-realm.ts";
6
+
import { attachSocket, detachSocket } from "./state.ts";
7
7
8
8
export async function socketHandler(this: WebSocket) {
9
9
const controller = new AbortController();
+1
src/server/routes-socket/middleware.ts
+1
src/server/routes-socket/middleware.ts
+1
-1
src/types/branded-id.ts
+1
-1
src/types/branded-id.ts
+2
-2
vite.config.ts
+2
-2
vite.config.ts