@derivesome/sockets 1.0.7 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.package.json.~undo-tree~ +6 -2
- package/dist/cjs/server/app.d.ts +4 -0
- package/dist/cjs/server/app.d.ts.map +1 -1
- package/dist/cjs/server/app.js +27 -7
- package/dist/cjs/server/app.js.map +1 -1
- package/dist/cjs/server/connection.d.ts +7 -0
- package/dist/cjs/server/connection.d.ts.map +1 -0
- package/dist/cjs/server/connection.js +13 -0
- package/dist/cjs/server/connection.js.map +1 -0
- package/dist/cjs/server/events.d.ts +8 -8
- package/dist/cjs/server/events.d.ts.map +1 -1
- package/dist/cjs/socket.d.ts +19 -6
- package/dist/cjs/socket.d.ts.map +1 -1
- package/dist/cjs/socket.js +84 -16
- package/dist/cjs/socket.js.map +1 -1
- package/dist/esm/server/app.d.ts +4 -0
- package/dist/esm/server/app.d.ts.map +1 -1
- package/dist/esm/server/app.js +27 -7
- package/dist/esm/server/app.js.map +1 -1
- package/dist/esm/server/connection.d.ts +7 -0
- package/dist/esm/server/connection.d.ts.map +1 -0
- package/dist/esm/server/connection.js +9 -0
- package/dist/esm/server/connection.js.map +1 -0
- package/dist/esm/server/events.d.ts +8 -8
- package/dist/esm/server/events.d.ts.map +1 -1
- package/dist/esm/socket.d.ts +19 -6
- package/dist/esm/socket.d.ts.map +1 -1
- package/dist/esm/socket.js +86 -18
- package/dist/esm/socket.js.map +1 -1
- package/package.json +3 -2
- package/package.json~ +2 -1
- package/src/.socket.ts.~undo-tree~ +455 -2
- package/src/server/.app.test.ts.~undo-tree~ +3 -2
- package/src/server/.app.ts.~undo-tree~ +20 -2
- package/src/server/.connection.ts.~undo-tree~ +11 -0
- package/src/server/.events.ts.~undo-tree~ +16 -2
- package/src/server/app.test.ts +1 -1
- package/src/server/app.ts +29 -7
- package/src/server/app.ts~ +29 -8
- package/src/server/connection.ts +14 -0
- package/src/server/connection.ts~ +0 -0
- package/src/server/events.ts +8 -8
- package/src/server/events.ts~ +9 -14
- package/src/socket.ts +113 -24
- package/src/socket.ts~ +115 -26
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
(undo-tree-save-format-version . 1)
|
|
2
|
-
"
|
|
2
|
+
"0df584ca335ae26166b257d7404f99620181b3fe"
|
|
3
3
|
[nil nil nil nil (27032 60014 827880 725000) 0 nil]
|
|
4
4
|
([nil nil ((nil rear-nonsticky nil 1051 . 1052) (nil fontified nil 1 . 1052) (1 . 1052) (t 27032 60008 440612 298000)) nil (27032 60014 827880 58000) 0 nil])
|
|
5
5
|
([nil nil ((26 . 33) (#("c" 0 1 (face font-lock-string-face fontified t)) . -26) (undo-tree-id0 . -1) (undo-tree-id1 . -1) (undo-tree-id2 . -1) (undo-tree-id3 . -1) (undo-tree-id4 . -1) (undo-tree-id5 . -1) (undo-tree-id6 . -1) (undo-tree-id7 . -1) (undo-tree-id8 . -1) (undo-tree-id9 . -1) (undo-tree-id10 . -1) (undo-tree-id11 . -1) (undo-tree-id12 . -1) (undo-tree-id13 . -1) (undo-tree-id14 . -1) (undo-tree-id15 . -1) (undo-tree-id16 . -1) (undo-tree-id17 . -1) (undo-tree-id18 . -1) (undo-tree-id19 . -1) (undo-tree-id20 . -1) (undo-tree-id21 . -1) (undo-tree-id22 . -1) (undo-tree-id23 . -1) (undo-tree-id24 . -1) (undo-tree-id25 . -1) (undo-tree-id26 . -1) (undo-tree-id27 . -1) (undo-tree-id28 . -1) (undo-tree-id29 . -1) (undo-tree-id30 . -1) (undo-tree-id31 . -1) (undo-tree-id32 . -1) (undo-tree-id33 . -1) (undo-tree-id34 . -1) (undo-tree-id35 . -1) (undo-tree-id36 . -1) (undo-tree-id37 . -1) (undo-tree-id38 . -1) (undo-tree-id39 . -1) (undo-tree-id40 . -1) (undo-tree-id41 . -1) (undo-tree-id42 . -1) (undo-tree-id43 . -1) (undo-tree-id44 . -1) (undo-tree-id45 . -1) (undo-tree-id46 . -1) (undo-tree-id47 . -1) (undo-tree-id48 . -1) (undo-tree-id49 . -1) (undo-tree-id50 . -1) (undo-tree-id51 . -1) (undo-tree-id52 . -1) (undo-tree-id53 . -1) (undo-tree-id54 . -1) (undo-tree-id55 . -1) (undo-tree-id56 . -1) (undo-tree-id57 . -1) (undo-tree-id58 . -1) (undo-tree-id59 . -1) (undo-tree-id60 . -1) (undo-tree-id61 . -1) (undo-tree-id62 . -1) (undo-tree-id63 . -1) (undo-tree-id64 . -1) (undo-tree-id65 . -1) (undo-tree-id66 . -1) (undo-tree-id67 . -1) (undo-tree-id68 . -1) (undo-tree-id69 . -1) (undo-tree-id70 . -1) (undo-tree-id71 . -1) (#("o" 0 1 (face font-lock-string-face fontified t)) . -27) (undo-tree-id72 . -1) (undo-tree-id73 . -1) (undo-tree-id74 . -1) (undo-tree-id75 . -1) (undo-tree-id76 . -1) (undo-tree-id77 . -1) (undo-tree-id78 . -1) (undo-tree-id79 . -1) (undo-tree-id80 . -1) (undo-tree-id81 . -1) (undo-tree-id82 . -1) (undo-tree-id83 . -1) (undo-tree-id84 . -1) (undo-tree-id85 . -1) (undo-tree-id86 . -1) (undo-tree-id87 . -1) (undo-tree-id88 . -1) (undo-tree-id89 . -1) (undo-tree-id90 . -1) (undo-tree-id91 . -1) (undo-tree-id92 . -1) (undo-tree-id93 . -1) (undo-tree-id94 . -1) (undo-tree-id95 . -1) (undo-tree-id96 . -1) (undo-tree-id97 . -1) (undo-tree-id98 . -1) (undo-tree-id99 . -1) (undo-tree-id100 . -1) (undo-tree-id101 . -1) (undo-tree-id102 . -1) (undo-tree-id103 . -1) (undo-tree-id104 . -1) (undo-tree-id105 . -1) (undo-tree-id106 . -1) (undo-tree-id107 . -1) (undo-tree-id108 . -1) (undo-tree-id109 . -1) (undo-tree-id110 . -1) (undo-tree-id111 . -1) (undo-tree-id112 . -1) (undo-tree-id113 . -1) (undo-tree-id114 . -1) (undo-tree-id115 . -1) (undo-tree-id116 . -1) (undo-tree-id117 . -1) (undo-tree-id118 . -1) (undo-tree-id119 . -1) (undo-tree-id120 . -1) (undo-tree-id121 . -1) (undo-tree-id122 . -1) (undo-tree-id123 . -1) (undo-tree-id124 . -1) (undo-tree-id125 . -1) (undo-tree-id126 . -1) (undo-tree-id127 . -1) (undo-tree-id128 . -1) (undo-tree-id129 . -1) (undo-tree-id130 . -1) (undo-tree-id131 . -1) (undo-tree-id132 . -1) (#("r" 0 1 (face font-lock-string-face fontified t)) . -28) (undo-tree-id133 . -1) (undo-tree-id134 . -1) (undo-tree-id135 . -1) (undo-tree-id136 . -1) (undo-tree-id137 . -1) (undo-tree-id138 . -1) (undo-tree-id139 . -1) (undo-tree-id140 . -1) (undo-tree-id141 . -1) (undo-tree-id142 . -1) (undo-tree-id143 . -1) (undo-tree-id144 . -1) (undo-tree-id145 . -1) (undo-tree-id146 . -1) (undo-tree-id147 . -1) (undo-tree-id148 . -1) (undo-tree-id149 . -1) (undo-tree-id150 . -1) (undo-tree-id151 . -1) (undo-tree-id152 . -1) (undo-tree-id153 . -1) (undo-tree-id154 . -1) (undo-tree-id155 . -1) (undo-tree-id156 . -1) (undo-tree-id157 . -1) (undo-tree-id158 . -1) (undo-tree-id159 . -1) (undo-tree-id160 . -1) (undo-tree-id161 . -1) (undo-tree-id162 . -1) (undo-tree-id163 . -1) (undo-tree-id164 . -1) (undo-tree-id165 . -1) (undo-tree-id166 . -1) (undo-tree-id167 . -1) (undo-tree-id168 . -1) (undo-tree-id169 . -1) (undo-tree-id170 . -1) (undo-tree-id171 . -1) (undo-tree-id172 . -1) (undo-tree-id173 . -1) (undo-tree-id174 . -1) (undo-tree-id175 . -1) (undo-tree-id176 . -1) (undo-tree-id177 . -1) (undo-tree-id178 . -1) (undo-tree-id179 . -1) (undo-tree-id180 . -1) (undo-tree-id181 . -1) (undo-tree-id182 . -1) (#("e" 0 1 (face font-lock-string-face fontified t)) . -29) (undo-tree-id183 . -1) (undo-tree-id184 . -1) (undo-tree-id185 . -1) (undo-tree-id186 . -1) (undo-tree-id187 . -1) (undo-tree-id188 . -1) (undo-tree-id189 . -1) (undo-tree-id190 . -1) (undo-tree-id191 . -1) (undo-tree-id192 . -1) (undo-tree-id193 . -1) (undo-tree-id194 . -1) (undo-tree-id195 . -1) (undo-tree-id196 . -1) (undo-tree-id197 . -1) (undo-tree-id198 . -1) (undo-tree-id199 . -1) (undo-tree-id200 . -1) (undo-tree-id201 . -1) (undo-tree-id202 . -1) (undo-tree-id203 . -1) (undo-tree-id204 . -1) (undo-tree-id205 . -1) (undo-tree-id206 . -1) (undo-tree-id207 . -1) (undo-tree-id208 . -1) (undo-tree-id209 . -1) (undo-tree-id210 . -1) (undo-tree-id211 . -1) (undo-tree-id212 . -1) (undo-tree-id213 . -1) (undo-tree-id214 . -1) (undo-tree-id215 . -1) (undo-tree-id216 . -1) 30) nil (27032 60014 827875 758000) 0 nil])
|
|
@@ -112,5 +112,9 @@
|
|
|
112
112
|
\"@derivesome/core\": \"workspace:*\",
|
|
113
113
|
\"binencode\": \"^1.0.1\",
|
|
114
114
|
\"p-lens\": \"^1.0.2" 0 3 (face font-lock-string-face fontified t) 3 5 (fontified t) 5 6 (fontified t) 6 8 (fontified t) 8 17 (face font-lock-string-face fontified t) 17 25 (fontified t) 25 28 (face font-lock-string-face fontified t) 28 38 (fontified t) 38 46 (face font-lock-string-face fontified t) 46 58 (fontified t) 58 65 (face font-lock-string-face fontified t) 65 67 (fontified t) 67 90 (face font-lock-string-face fontified t) 90 100 (fontified t) 100 109 (face font-lock-string-face fontified t) 109 111 (fontified t) 111 132 (face font-lock-string-face fontified t) 132 148 (fontified t) 148 157 (face font-lock-string-face fontified t) 157 169 (fontified t) 169 176 (face font-lock-string-face fontified t) 176 178 (fontified t) 178 201 (face font-lock-string-face fontified t) 201 211 (fontified t) 211 220 (face font-lock-string-face fontified t) 220 222 (fontified t) 222 243 (face font-lock-string-face fontified t) 243 259 (fontified t) 259 268 (face font-lock-string-face fontified t) 268 280 (fontified t) 280 287 (face font-lock-string-face fontified t) 287 289 (fontified t) 289 312 (face font-lock-string-face fontified t) 312 322 (fontified t) 322 331 (face font-lock-string-face fontified t) 331 333 (fontified t) 333 354 (face font-lock-string-face fontified t) 354 363 (fontified t) 363 370 (fontified t) 370 374 (fontified t) 374 384 (face font-lock-string-face fontified t) 384 388 (fontified t) 388 394 (fontified t) 394 402 (face font-lock-string-face fontified t) 402 406 (fontified t) 406 414 (fontified t) 414 421 (face font-lock-string-face fontified t) 421 423 (fontified t) 423 435 (face font-lock-string-face fontified t) 435 441 (face font-lock-string-face fontified t) 441 447 (face font-lock-string-face fontified t) 447 449 (fontified t) 449 457 (fontified t) 457 466 (face font-lock-string-face fontified t) 466 468 (fontified t) 468 480 (face font-lock-string-face fontified t) 480 486 (face font-lock-string-face fontified t) 486 490 (face font-lock-string-face fontified t) 490 491 (fontified t) 491 506 (fontified t) 506 515 (face font-lock-string-face fontified t) 515 519 (fontified t) 519 527 (fontified t) 527 534 (face font-lock-string-face fontified t) 534 536 (fontified t) 536 548 (face font-lock-string-face fontified t) 548 554 (face font-lock-string-face fontified t) 554 560 (face font-lock-string-face fontified t) 560 562 (fontified t) 562 570 (fontified t) 570 579 (face font-lock-string-face fontified t) 579 581 (fontified t) 581 593 (face font-lock-string-face fontified t) 593 599 (face font-lock-string-face fontified t) 599 603 (face font-lock-string-face fontified t) 603 604 (fontified t) 604 619 (fontified t) 619 628 (face font-lock-string-face fontified t) 628 632 (fontified t) 632 640 (fontified t) 640 647 (face font-lock-string-face fontified t) 647 649 (fontified t) 649 661 (face font-lock-string-face fontified t) 661 667 (face font-lock-string-face fontified t) 667 673 (face font-lock-string-face fontified t) 673 675 (fontified t) 675 683 (fontified t) 683 692 (face font-lock-string-face fontified t) 692 694 (fontified t) 694 706 (face font-lock-string-face fontified t) 706 712 (face font-lock-string-face fontified t) 712 716 (face font-lock-string-face fontified t) 716 717 (fontified t) 717 725 (fontified t) 725 729 (fontified t) 729 730 (fontified t rear-nonsticky t) 730 732 (fontified t) 732 736 (fontified t) 736 746 (face font-lock-string-face fontified t) 746 750 (fontified t) 750 756 (fontified t) 756 764 (face font-lock-string-face fontified t) 764 768 (fontified t) 768 776 (fontified t) 776 783 (face font-lock-string-face fontified t) 783 785 (fontified t) 785 809 (face font-lock-string-face fontified t) 809 815 (face font-lock-string-face fontified t) 815 817 (fontified t) 817 825 (fontified t) 825 834 (face font-lock-string-face fontified t) 834 836 (fontified t) 836 863 (face font-lock-string-face fontified t) 863 864 (face font-lock-string-face fontified t) 864 865 (fontified t) 865 880 (fontified t) 880 889 (face font-lock-string-face fontified t) 889 893 (fontified t) 893 901 (fontified t) 901 908 (face font-lock-string-face fontified t) 908 910 (fontified t) 910 934 (face font-lock-string-face fontified t) 934 940 (face font-lock-string-face fontified t) 940 942 (fontified t) 942 950 (fontified t) 950 959 (face font-lock-string-face fontified t) 959 961 (fontified t) 961 988 (face font-lock-string-face fontified t) 988 989 (face font-lock-string-face fontified t) 989 990 (fontified t) 990 1005 (fontified t) 1005 1014 (face font-lock-string-face fontified t) 1014 1018 (fontified t) 1018 1020 (fontified t) 1020 1026 (fontified t) 1026 1033 (fontified t face font-lock-string-face) 1033 1035 (fontified t) 1035 1059 (fontified t face font-lock-string-face) 1059 1065 (fontified t face font-lock-string-face) 1065 1067 (fontified t) 1075 1084 (face font-lock-string-face) 1086 1113 (face font-lock-string-face) 1113 1114 (face font-lock-string-face) 1127 1128 (rear-nonsticky t) 1136 1153 (face font-lock-string-face) 1161 1174 (face font-lock-string-face) 1176 1185 (face font-lock-string-face) 1191 1202 (face font-lock-string-face) 1204 1213 (face font-lock-string-face) 1219 1229 (face font-lock-string-face) 1231 1239 (face font-lock-string-face) 1245 1250 (face font-lock-string-face) 1252 1261 (face font-lock-string-face) 1267 1279 (face font-lock-string-face) 1281 1289 (face font-lock-string-face) 1295 1303 (face font-lock-string-face) 1305 1314 (face font-lock-string-face) 1322 1336 (face font-lock-string-face) 1344 1345 (face font-lock-string-face) 1345 1362 (face font-lock-string-face) 1364 1377 (face font-lock-string-face) 1383 1394 (face font-lock-string-face) 1396 1404 (face font-lock-string-face) 1410 1411 (face font-lock-string-face) 1411 1418 (face font-lock-string-face) 1420 1426 (face font-lock-string-face) 1426 1427 (face font-lock-string-face)) . 538) (undo-tree-id34 . -1384) (undo-tree-id35 . -1384) (undo-tree-id36 . -855) (undo-tree-id37 . 564) (undo-tree-id38 . -855) (undo-tree-id39 . -855) (undo-tree-id40 . -367) (undo-tree-id41 . -388) (undo-tree-id42 . -725) (undo-tree-id43 . -683) (undo-tree-id44 . -683) (undo-tree-id45 . -683) (undo-tree-id46 . -1411) (undo-tree-id47 . -1411) (undo-tree-id48 . -1411) (undo-tree-id49 . -1376) (undo-tree-id50 . -1344) (undo-tree-id51 . -729) (undo-tree-id52 . -735) (undo-tree-id53 . -1128) (undo-tree-id54 . -732) (undo-tree-id55 . -1129) (undo-tree-id56 . -804) (undo-tree-id57 . -855) (undo-tree-id58 . -862) (undo-tree-id59 . -862) (undo-tree-id60 . -862) (t 27033 48691 761531 164000)) nil (27033 49656 51274 445000) 0 nil])
|
|
115
|
-
([nil
|
|
115
|
+
([nil nil ((54 . 55) (#("6" 0 1 (face font-lock-string-face fontified t)) . -54) (undo-tree-id0 . -1) (undo-tree-id1 . -1) (undo-tree-id2 . -1) (undo-tree-id3 . -1) (undo-tree-id4 . -1) (undo-tree-id5 . -1) (undo-tree-id6 . -1) (undo-tree-id7 . -1) (undo-tree-id8 . -1) (undo-tree-id9 . -1) (undo-tree-id10 . -1) (undo-tree-id11 . -1) (undo-tree-id12 . -1) (undo-tree-id13 . -1) (undo-tree-id14 . -1) (undo-tree-id15 . -1) (undo-tree-id16 . -1) (undo-tree-id17 . -1) (undo-tree-id18 . -1) (undo-tree-id19 . -1) (undo-tree-id20 . -1) (undo-tree-id21 . -1) (undo-tree-id22 . -1) (undo-tree-id23 . -1) (undo-tree-id24 . -1) (undo-tree-id25 . -1) (undo-tree-id26 . -1) (undo-tree-id27 . -1) (undo-tree-id28 . -1) (undo-tree-id29 . -1) (undo-tree-id30 . -1) (undo-tree-id31 . -1) (undo-tree-id32 . -1) (undo-tree-id33 . -1) 55 (t 27033 49635 906404 370000)) nil (27033 49656 51262 506000) 0 nil])
|
|
116
|
+
([nil nil ((54 . 56) (#("7" 0 1 (face font-lock-string-face fontified t)) . -54) (undo-tree-id74 . -1) (undo-tree-id75 . -1) (undo-tree-id76 . -1) (undo-tree-id77 . -1) (undo-tree-id78 . -1) (undo-tree-id79 . -1) (undo-tree-id80 . -1) (undo-tree-id81 . -1) (undo-tree-id82 . -1) (undo-tree-id83 . -1) (undo-tree-id84 . -1) (undo-tree-id85 . -1) (undo-tree-id86 . -1) (undo-tree-id87 . -1) (undo-tree-id88 . -1) (undo-tree-id89 . -1) (undo-tree-id90 . -1) 55 (t 27033 49656 50241 60000)) nil (27033 54029 398899 463000) 0 nil])
|
|
117
|
+
([nil nil ((#("7" 0 1 (face font-lock-string-face fontified t)) . 55) (undo-tree-id61 . -1) (undo-tree-id62 . -1) (undo-tree-id63 . -1) (undo-tree-id64 . -1) (undo-tree-id65 . -1) (undo-tree-id66 . -1) (undo-tree-id67 . -1) (undo-tree-id68 . -1) (undo-tree-id69 . -1) (undo-tree-id70 . -1) (undo-tree-id71 . -1) (undo-tree-id72 . -1) (undo-tree-id73 . -1)) nil (27033 54029 398892 516000) 0 nil])
|
|
118
|
+
([nil nil ((1981 . 2004) (t 27033 54029 395848 618000)) nil (27033 57350 669420 815000) 0 nil])
|
|
119
|
+
([nil current ((54 . 55) (#("8" 0 1 (face font-lock-string-face fontified t)) . -54) (undo-tree-id0 . -1) (undo-tree-id1 . -1) (undo-tree-id2 . -1) (undo-tree-id3 . -1) (undo-tree-id4 . -1) (undo-tree-id5 . -1) (undo-tree-id6 . -1) (undo-tree-id7 . -1) (undo-tree-id8 . -1) (undo-tree-id9 . -1) (undo-tree-id10 . -1) (undo-tree-id11 . -1) (undo-tree-id12 . -1) (undo-tree-id13 . -1) (undo-tree-id14 . -1) (undo-tree-id15 . -1) (undo-tree-id16 . -1) (undo-tree-id17 . -1) (undo-tree-id18 . -1) (undo-tree-id19 . -1) (undo-tree-id20 . -1) (undo-tree-id21 . -1) (undo-tree-id22 . -1) (undo-tree-id23 . -1) (undo-tree-id24 . -1) (undo-tree-id25 . -1) (undo-tree-id26 . -1) (undo-tree-id27 . -1) (undo-tree-id28 . -1) (undo-tree-id29 . -1) (undo-tree-id30 . -1) (undo-tree-id31 . -1) (undo-tree-id32 . -1) (undo-tree-id33 . -1) (undo-tree-id34 . -1) (undo-tree-id35 . -1) (undo-tree-id36 . -1) (undo-tree-id37 . -1) (undo-tree-id38 . -1) (undo-tree-id39 . -1) (undo-tree-id40 . -1) (undo-tree-id41 . -1) (undo-tree-id42 . -1) (undo-tree-id43 . -1) (undo-tree-id44 . -1) (undo-tree-id45 . -1) (undo-tree-id46 . -1) (undo-tree-id47 . -1) (undo-tree-id48 . -1) (undo-tree-id49 . -1) 55 (t 27033 56920 970818 636000)) nil (27033 57350 669418 124000) 0 nil])
|
|
116
120
|
nil
|
package/dist/cjs/server/app.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { Server } from "./server";
|
|
|
2
2
|
import { PubSub } from "@derivesome/core";
|
|
3
3
|
import { ServerEvent } from "./events";
|
|
4
4
|
import { Plugin } from "./plugin";
|
|
5
|
+
import { Connection } from "./connection";
|
|
5
6
|
export type AppConfig = {
|
|
6
7
|
host: string;
|
|
7
8
|
port: number;
|
|
@@ -12,7 +13,10 @@ export declare class App {
|
|
|
12
13
|
server: Server;
|
|
13
14
|
ps: PubSub<ServerEvent>;
|
|
14
15
|
plugins: Map<string, Plugin>;
|
|
16
|
+
connections: Map<string, Connection>;
|
|
15
17
|
constructor(cfg: AppConfig);
|
|
18
|
+
private addConnection;
|
|
19
|
+
private removeConnection;
|
|
16
20
|
use(plugin: Plugin): void;
|
|
17
21
|
private init;
|
|
18
22
|
start(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/server/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,MAAM,EAAU,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/server/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,MAAM,EAAU,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,qBAAa,GAAG;IACd,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IACxB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;IACzC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAa;gBAErC,GAAG,EAAE,SAAS;IAM1B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,gBAAgB;IAQxB,GAAG,CAAC,MAAM,EAAE,MAAM;IAuBlB,OAAO,CAAC,IAAI;IAoHZ,KAAK;CASN"}
|
package/dist/cjs/server/app.js
CHANGED
|
@@ -5,16 +5,33 @@ const server_1 = require("./server");
|
|
|
5
5
|
const core_1 = require("@derivesome/core");
|
|
6
6
|
const socket_1 = require("../socket");
|
|
7
7
|
const binencode_1 = require("binencode");
|
|
8
|
+
const connection_1 = require("./connection");
|
|
9
|
+
const uuid_1 = require("uuid");
|
|
8
10
|
class App {
|
|
9
11
|
config;
|
|
10
12
|
server;
|
|
11
13
|
ps;
|
|
12
14
|
plugins = new Map();
|
|
15
|
+
connections = new Map();
|
|
13
16
|
constructor(cfg) {
|
|
14
17
|
this.config = cfg;
|
|
15
18
|
this.server = new server_1.Server(cfg);
|
|
16
19
|
this.ps = (0, core_1.pubsub)();
|
|
17
20
|
}
|
|
21
|
+
addConnection(connection) {
|
|
22
|
+
if (this.connections.has(connection.id)) {
|
|
23
|
+
console.log(`Connection already exists: ${connection.id}`);
|
|
24
|
+
}
|
|
25
|
+
;
|
|
26
|
+
this.connections.set(connection.id, connection);
|
|
27
|
+
}
|
|
28
|
+
removeConnection(id) {
|
|
29
|
+
if (!this.connections.has(id)) {
|
|
30
|
+
console.log(`Connection does not exist: ${id}`);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
this.connections.delete(id);
|
|
34
|
+
}
|
|
18
35
|
use(plugin) {
|
|
19
36
|
this.plugins.set(plugin.name, plugin);
|
|
20
37
|
this.ps.subscribe(async (event) => {
|
|
@@ -56,12 +73,14 @@ class App {
|
|
|
56
73
|
});
|
|
57
74
|
ws.addListener("connection", async (client, req) => {
|
|
58
75
|
const socket = new socket_1.Socket(() => client);
|
|
76
|
+
const connection = new connection_1.Connection(socket, (0, uuid_1.v4)());
|
|
77
|
+
this.addConnection(connection);
|
|
59
78
|
await this.ps.publishAsync({
|
|
60
79
|
type: "client-connection",
|
|
61
80
|
app: this,
|
|
62
81
|
ws,
|
|
63
82
|
req,
|
|
64
|
-
|
|
83
|
+
connection,
|
|
65
84
|
});
|
|
66
85
|
socket.connection.addEventListener("open", async (ev) => {
|
|
67
86
|
await this.ps.publishAsync({
|
|
@@ -69,7 +88,7 @@ class App {
|
|
|
69
88
|
app: this,
|
|
70
89
|
ws,
|
|
71
90
|
event: ev,
|
|
72
|
-
|
|
91
|
+
connection,
|
|
73
92
|
});
|
|
74
93
|
});
|
|
75
94
|
socket.connection.addEventListener("close", async (ev) => {
|
|
@@ -78,8 +97,9 @@ class App {
|
|
|
78
97
|
app: this,
|
|
79
98
|
ws,
|
|
80
99
|
event: ev,
|
|
81
|
-
|
|
100
|
+
connection,
|
|
82
101
|
});
|
|
102
|
+
this.removeConnection(connection.id);
|
|
83
103
|
});
|
|
84
104
|
socket.connection.addEventListener("error", async (ev) => {
|
|
85
105
|
await this.ps.publishAsync({
|
|
@@ -87,7 +107,7 @@ class App {
|
|
|
87
107
|
app: this,
|
|
88
108
|
ws,
|
|
89
109
|
event: ev,
|
|
90
|
-
|
|
110
|
+
connection,
|
|
91
111
|
});
|
|
92
112
|
});
|
|
93
113
|
socket.connection.on("upgrade", async (req) => {
|
|
@@ -96,7 +116,7 @@ class App {
|
|
|
96
116
|
app: this,
|
|
97
117
|
ws,
|
|
98
118
|
req,
|
|
99
|
-
|
|
119
|
+
connection,
|
|
100
120
|
});
|
|
101
121
|
});
|
|
102
122
|
socket.connection.on("message", async (data, isBinary) => {
|
|
@@ -105,7 +125,7 @@ class App {
|
|
|
105
125
|
app: this,
|
|
106
126
|
isBinary,
|
|
107
127
|
message: data,
|
|
108
|
-
|
|
128
|
+
connection,
|
|
109
129
|
ws,
|
|
110
130
|
});
|
|
111
131
|
let buffer;
|
|
@@ -133,7 +153,7 @@ class App {
|
|
|
133
153
|
type: "client-message",
|
|
134
154
|
app: this,
|
|
135
155
|
message: decoded,
|
|
136
|
-
|
|
156
|
+
connection,
|
|
137
157
|
ws,
|
|
138
158
|
});
|
|
139
159
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/server/app.ts"],"names":[],"mappings":";;;AAAA,qCAAkC;AAElC,2CAAkD;AAElD,sCAAmC;AACnC,yCAA6D;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/server/app.ts"],"names":[],"mappings":";;;AAAA,qCAAkC;AAElC,2CAAkD;AAElD,sCAAmC;AACnC,yCAA6D;AAE7D,6CAA0C;AAC1C,+BAA0B;AAQ1B,MAAa,GAAG;IACd,MAAM,CAAY;IAClB,MAAM,CAAS;IACf,EAAE,CAAsB;IACxB,OAAO,GAAwB,IAAI,GAAG,EAAE,CAAC;IACzC,WAAW,GAA4B,IAAI,GAAG,EAAE,CAAC;IAEjD,YAAY,GAAc;QACxB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,GAAG,IAAA,aAAM,GAAE,CAAC;IACrB,CAAC;IAEO,aAAa,CAAC,UAAsB;QAC1C,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,8BAA8B,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7D,CAAC;QAAA,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC;IAEO,gBAAgB,CAAC,EAAU;QACjC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,GAAG,CAAC,MAAc;QAChB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAChC,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBACpC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC;gBAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,sBAAU,CAAC,MAAM,EAAE,CAAC;oBACpC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC5C,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,KAAK,sBAAU,CAAC,MAAM,EAAE,CAAC;wBACxD,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;wBAClF,IAAI,OAAO,KAAK,MAAM,CAAC,IAAI;4BAAE,OAAO;oBACtC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC,EAAE,KAAK,IAAI,EAAE;YACZ,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACrB,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;YAC3B,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,IAAI,CAAC,EAAmB;QAC9B,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;YACrC,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC;gBACzB,IAAI,EAAE,cAAc;gBACpB,GAAG,EAAE,IAAI;gBACT,EAAE;aACH,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;YAC/C,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC;gBACzB,IAAI,EAAE,gBAAgB;gBACtB,GAAG,EAAE,IAAI;gBACT,EAAE;gBACF,GAAG;gBACH,OAAO;aACR,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;YACjD,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,UAAU,GAAG,IAAI,uBAAU,CAAC,MAAM,EAAE,IAAA,SAAE,GAAE,CAAC,CAAC;YAChD,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YAE/B,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC;gBACzB,IAAI,EAAE,mBAAmB;gBACzB,GAAG,EAAE,IAAI;gBACT,EAAE;gBACF,GAAG;gBACH,UAAU;aACX,CAAC,CAAC;YAEH,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;gBACtD,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC;oBACzB,IAAI,EAAE,aAAa;oBACnB,GAAG,EAAE,IAAI;oBACT,EAAE;oBACF,KAAK,EAAE,EAAE;oBACT,UAAU;iBACX,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;gBACvD,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC;oBACzB,IAAI,EAAE,cAAc;oBACpB,GAAG,EAAE,IAAI;oBACT,EAAE;oBACF,KAAK,EAAE,EAAE;oBACT,UAAU;iBACX,CAAC,CAAC;gBACH,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;gBACvD,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC;oBACzB,IAAI,EAAE,cAAc;oBACpB,GAAG,EAAE,IAAI;oBACT,EAAE;oBACF,KAAK,EAAE,EAAE;oBACT,UAAU;iBACX,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;gBAC5C,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC;oBACzB,IAAI,EAAE,gBAAgB;oBACtB,GAAG,EAAE,IAAI;oBACT,EAAE;oBACF,GAAG;oBACH,UAAU;iBACX,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;gBACvD,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC;oBACzB,IAAI,EAAE,oBAAoB;oBAC1B,GAAG,EAAE,IAAI;oBACT,QAAQ;oBACR,OAAO,EAAE,IAAI;oBACb,UAAU;oBACV,EAAE;iBACH,CAAC,CAAC;gBAEH,IAAI,MAAM,CAAC;gBAEX,IAAI,CAAC;oBACH,MAAM,GAAG,IAAI,wBAAY,EAAE,CAAC;oBAC5B,MAAM,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,IAAW,CAAC,CAAC;gBAC5C,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACnB,CAAC;gBAED,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;oBACxC,OAAO;gBACT,CAAC;gBAED,IAAI,OAAO,CAAC;gBAEZ,IAAI,CAAC;oBACH,OAAO,GAAG,kBAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAClC,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACnB,CAAC;gBAED,IAAI,CAAC,OAAO;oBAAE,OAAO;gBAErB,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC;oBACzB,IAAI,EAAE,gBAAgB;oBACtB,GAAG,EAAE,IAAI;oBACT,OAAO,EAAE,OAAO;oBAChB,UAAU;oBACV,EAAE;iBACH,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAEjC,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;CACF;AAhLD,kBAgLC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../src/server/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,qBAAa,UAAU;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;gBAGT,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM;CAKb"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Connection = void 0;
|
|
4
|
+
class Connection {
|
|
5
|
+
socket;
|
|
6
|
+
id;
|
|
7
|
+
constructor(socket, id) {
|
|
8
|
+
this.socket = socket;
|
|
9
|
+
this.id = id;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.Connection = Connection;
|
|
13
|
+
//# sourceMappingURL=connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../src/server/connection.ts"],"names":[],"mappings":";;;AAEA,MAAa,UAAU;IACrB,MAAM,CAAS;IACf,EAAE,CAAS;IAEX,YACE,MAAc,EACd,EAAU;QAEV,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;CACF;AAXD,gCAWC"}
|
|
@@ -2,8 +2,8 @@ import { type Binary } from "binencode";
|
|
|
2
2
|
import { type App } from "./app";
|
|
3
3
|
import { type WebSocketServer, type RawData } from "ws";
|
|
4
4
|
import { type IncomingMessage } from "http";
|
|
5
|
-
import { type Socket } from "../socket";
|
|
6
5
|
import { type ErrorEvent, type CloseEvent, type Event as WSEvent } from "ws";
|
|
6
|
+
import { Connection } from "./connection";
|
|
7
7
|
export type BaseServerEvent<Type extends string, Data extends Record<string, unknown> = {}> = Data & {
|
|
8
8
|
type: Type;
|
|
9
9
|
app: App;
|
|
@@ -16,26 +16,26 @@ export type ServerEvent = BaseServerEvent<"server-headers", {
|
|
|
16
16
|
headers: string[];
|
|
17
17
|
req: IncomingMessage;
|
|
18
18
|
}> | BaseServerEvent<"client-connection", {
|
|
19
|
-
|
|
19
|
+
connection: Connection;
|
|
20
20
|
req: IncomingMessage;
|
|
21
21
|
}> | BaseServerEvent<"client-message", {
|
|
22
|
-
|
|
22
|
+
connection: Connection;
|
|
23
23
|
message: Binary;
|
|
24
24
|
}> | BaseServerEvent<"client-message-raw", {
|
|
25
|
-
|
|
25
|
+
connection: Connection;
|
|
26
26
|
message: RawData;
|
|
27
27
|
isBinary: boolean;
|
|
28
28
|
}> | BaseServerEvent<"client-error", {
|
|
29
|
-
|
|
29
|
+
connection: Connection;
|
|
30
30
|
event: ErrorEvent;
|
|
31
31
|
}> | BaseServerEvent<"client-open", {
|
|
32
|
-
|
|
32
|
+
connection: Connection;
|
|
33
33
|
event: WSEvent;
|
|
34
34
|
}> | BaseServerEvent<"client-close", {
|
|
35
|
-
|
|
35
|
+
connection: Connection;
|
|
36
36
|
event: CloseEvent;
|
|
37
37
|
}> | BaseServerEvent<"client-upgrade", {
|
|
38
|
-
|
|
38
|
+
connection: Connection;
|
|
39
39
|
req: IncomingMessage;
|
|
40
40
|
}> | BaseServerEvent<"server-ready"> | BaseServerEvent<"server-error"> | BaseServerEvent<"server-close">;
|
|
41
41
|
//# sourceMappingURL=events.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/server/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,OAAO,EAAE,MAAM,IAAI,CAAC;AACxD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/server/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,OAAO,EAAE,MAAM,IAAI,CAAC;AACxD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,KAAK,IAAI,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,MAAM,eAAe,CACzB,IAAI,SAAS,MAAM,EACnB,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,IACvC,IAAI,GAAG;IACT,IAAI,EAAE,IAAI,CAAC;IACX,GAAG,EAAE,GAAG,CAAC;IACT,EAAE,EAAE,eAAe,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,WAAW,GACnB,eAAe,CACb,gBAAgB,EAChB;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,EAAE,eAAe,CAAA;CAAE,CAC5C,GACD,eAAe,CACb,gBAAgB,EAChB;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,EAAE,eAAe,CAAA;CAAE,CAC5C,GACD,eAAe,CACb,mBAAmB,EACnB;IAAE,UAAU,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,eAAe,CAAA;CAAE,CACjD,GACD,eAAe,CAAC,gBAAgB,EAAE;IAAE,UAAU,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAC9E,eAAe,CACb,oBAAoB,EACpB;IAAE,UAAU,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAChE,GACD,eAAe,CAAC,cAAc,EAAE;IAAE,UAAU,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC,GAC9E,eAAe,CAAC,aAAa,EAAE;IAAE,UAAU,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,GAC1E,eAAe,CAAC,cAAc,EAAE;IAAE,UAAU,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC,GAC9E,eAAe,CAAC,gBAAgB,EAAE;IAAE,UAAU,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,eAAe,CAAA;CAAE,CAAC,GACnF,eAAe,CAAC,cAAc,CAAC,GAC/B,eAAe,CAAC,cAAc,CAAC,GAC/B,eAAe,CAAC,cAAc,CAAC,CAAC"}
|
package/dist/cjs/socket.d.ts
CHANGED
|
@@ -1,17 +1,30 @@
|
|
|
1
1
|
import { type Binary } from "binencode";
|
|
2
2
|
import { type WebSocket as WSWebSocket } from "ws";
|
|
3
|
-
import { type InferPattern, type PatLoose } from
|
|
3
|
+
import { type InferPattern, type PatLoose } from "p-lens";
|
|
4
4
|
import { type PubSub } from "@derivesome/core";
|
|
5
5
|
export type WebSocketImplementation = WebSocket | WSWebSocket;
|
|
6
|
-
export type SocketConfig = {
|
|
6
|
+
export type SocketConfig = {
|
|
7
|
+
autoReconnect?: boolean;
|
|
8
|
+
maxRetries?: number;
|
|
9
|
+
retryDelay?: number;
|
|
10
|
+
};
|
|
7
11
|
export declare class Socket<Impl extends WebSocketImplementation = WebSocketImplementation> {
|
|
8
12
|
connection: Impl;
|
|
9
|
-
factory
|
|
13
|
+
private factory;
|
|
14
|
+
private cfg;
|
|
10
15
|
ps: PubSub<Binary>;
|
|
11
|
-
|
|
16
|
+
private cleanups;
|
|
17
|
+
private retryCount;
|
|
18
|
+
private retryTimer;
|
|
19
|
+
constructor(factory: () => Impl, cfg?: SocketConfig);
|
|
20
|
+
addEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | AddEventListenerOptions, autoCleanup?: boolean): () => void;
|
|
21
|
+
once<K extends keyof WebSocketEventMap>(type: K, listener: (ev: WebSocketEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
22
|
+
whenReady(fn: () => (void | Promise<void>)): Promise<void>;
|
|
23
|
+
private cleanup;
|
|
24
|
+
private scheduleReconnect;
|
|
12
25
|
private connect;
|
|
13
26
|
sendBinary(data: Binary): void;
|
|
14
|
-
send<T>(data: T): void
|
|
15
|
-
watch<P extends PatLoose>(pat: P, fn: (data: InferPattern<P>) =>
|
|
27
|
+
send<T>(data: T): Promise<void>;
|
|
28
|
+
watch<P extends PatLoose>(pat: P, fn: (data: InferPattern<P>) => void | Promise<void>): import("@derivesome/core").VoidFunction;
|
|
16
29
|
}
|
|
17
30
|
//# sourceMappingURL=socket.d.ts.map
|
package/dist/cjs/socket.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,KAAK,SAAS,IAAI,WAAW,EAAE,MAAM,IAAI,CAAC;AACnD,OAAO,
|
|
1
|
+
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,KAAK,SAAS,IAAI,WAAW,EAAE,MAAM,IAAI,CAAC;AACnD,OAAO,EAAW,KAAK,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACnE,OAAO,EAAU,KAAK,MAAM,EAAc,MAAM,kBAAkB,CAAC;AAEnE,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,WAAW,CAAC;AAE9D,MAAM,MAAM,YAAY,GAAG;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,qBAAa,MAAM,CACjB,IAAI,SAAS,uBAAuB,GAAG,uBAAuB;IAE9D,UAAU,EAAG,IAAI,CAAC;IAClB,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,GAAG,CAAe;IAC1B,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACnB,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,UAAU,CAA8C;gBAEpD,OAAO,EAAE,MAAM,IAAI,EAAE,GAAG,GAAE,YAAiB;IAOvD,gBAAgB,CAAC,CAAC,SAAS,MAAM,iBAAiB,EAChD,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,GAAG,EAC5D,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,EAC3C,WAAW,CAAC,EAAE,OAAO,GACpB,MAAM,IAAI;IAcb,IAAI,CAAC,CAAC,SAAS,MAAM,iBAAiB,EACpC,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,GAAG,EAC3C,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB;IAevC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAehD,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,OAAO;IA4Bf,UAAU,CAAC,IAAI,EAAE,MAAM;IAKjB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAMrB,KAAK,CAAC,CAAC,SAAS,QAAQ,EACtB,GAAG,EAAE,CAAC,EACN,EAAE,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAStD"}
|
package/dist/cjs/socket.js
CHANGED
|
@@ -7,29 +7,95 @@ const core_1 = require("@derivesome/core");
|
|
|
7
7
|
class Socket {
|
|
8
8
|
connection;
|
|
9
9
|
factory;
|
|
10
|
+
cfg;
|
|
10
11
|
ps;
|
|
11
|
-
|
|
12
|
+
cleanups = new Set();
|
|
13
|
+
retryCount = 0;
|
|
14
|
+
retryTimer = null;
|
|
15
|
+
constructor(factory, cfg = {}) {
|
|
12
16
|
this.factory = factory;
|
|
17
|
+
this.cfg = cfg;
|
|
13
18
|
this.ps = (0, core_1.pubsub)();
|
|
14
19
|
this.connect();
|
|
15
20
|
}
|
|
21
|
+
addEventListener(type, listener, options, autoCleanup) {
|
|
22
|
+
const con = this.connection;
|
|
23
|
+
con.addEventListener(type, listener, options);
|
|
24
|
+
const unsub = () => {
|
|
25
|
+
try {
|
|
26
|
+
con.removeEventListener(type, listener, options);
|
|
27
|
+
}
|
|
28
|
+
catch { }
|
|
29
|
+
};
|
|
30
|
+
if (autoCleanup !== false) {
|
|
31
|
+
this.cleanups.add(unsub);
|
|
32
|
+
}
|
|
33
|
+
return unsub;
|
|
34
|
+
}
|
|
35
|
+
once(type, listener, options) {
|
|
36
|
+
const unsub = this.addEventListener(type, async (ev) => {
|
|
37
|
+
try {
|
|
38
|
+
await listener(ev);
|
|
39
|
+
}
|
|
40
|
+
finally {
|
|
41
|
+
(0, core_1.onNextTick)(unsub);
|
|
42
|
+
}
|
|
43
|
+
}, options);
|
|
44
|
+
}
|
|
45
|
+
async whenReady(fn) {
|
|
46
|
+
if (!(this.connection instanceof WebSocket)) {
|
|
47
|
+
await fn();
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (this.connection.readyState === WebSocket.OPEN) {
|
|
51
|
+
await fn();
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
this.once('open', async () => {
|
|
55
|
+
await fn();
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
cleanup() {
|
|
60
|
+
for (const fn of this.cleanups) {
|
|
61
|
+
fn();
|
|
62
|
+
}
|
|
63
|
+
this.cleanups.clear();
|
|
64
|
+
}
|
|
65
|
+
scheduleReconnect() {
|
|
66
|
+
const { maxRetries = Infinity, retryDelay = 1000 } = this.cfg;
|
|
67
|
+
if (this.retryCount >= maxRetries)
|
|
68
|
+
return;
|
|
69
|
+
const delay = Math.min(retryDelay * Math.pow(2, this.retryCount), 30_000);
|
|
70
|
+
this.retryCount++;
|
|
71
|
+
this.retryTimer = setTimeout(() => {
|
|
72
|
+
this.retryTimer = null;
|
|
73
|
+
this.cleanup();
|
|
74
|
+
this.connect();
|
|
75
|
+
}, delay);
|
|
76
|
+
}
|
|
16
77
|
connect() {
|
|
17
78
|
this.connection = this.factory();
|
|
18
79
|
this.connection.binaryType = "arraybuffer";
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const decoded = binencode_1.serial.decode(buff);
|
|
27
|
-
await this.ps.publishAsync(decoded);
|
|
28
|
-
}
|
|
29
|
-
catch (e) {
|
|
30
|
-
console.error(e);
|
|
31
|
-
}
|
|
80
|
+
this.addEventListener("message", async (ev) => {
|
|
81
|
+
if (ev.data instanceof ArrayBuffer) {
|
|
82
|
+
const buff = new binencode_1.BinaryBuffer();
|
|
83
|
+
buff.data = new Uint8Array(ev.data);
|
|
84
|
+
try {
|
|
85
|
+
const decoded = binencode_1.serial.decode(buff);
|
|
86
|
+
await this.ps.publishAsync(decoded);
|
|
32
87
|
}
|
|
88
|
+
catch (e) {
|
|
89
|
+
console.error(e);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
if (this.cfg.autoReconnect) {
|
|
94
|
+
this.addEventListener("close", () => {
|
|
95
|
+
this.scheduleReconnect();
|
|
96
|
+
});
|
|
97
|
+
this.addEventListener("open", () => {
|
|
98
|
+
this.retryCount = 0;
|
|
33
99
|
});
|
|
34
100
|
}
|
|
35
101
|
}
|
|
@@ -37,8 +103,10 @@ class Socket {
|
|
|
37
103
|
const encoded = binencode_1.serial.encode(data);
|
|
38
104
|
this.connection.send(new Uint8Array(encoded.data));
|
|
39
105
|
}
|
|
40
|
-
send(data) {
|
|
41
|
-
|
|
106
|
+
async send(data) {
|
|
107
|
+
await this.whenReady(() => {
|
|
108
|
+
this.sendBinary(binencode_1.bin.auto(data));
|
|
109
|
+
});
|
|
42
110
|
}
|
|
43
111
|
watch(pat, fn) {
|
|
44
112
|
return this.ps.subscribe(async (binary) => {
|
package/dist/cjs/socket.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/socket.ts"],"names":[],"mappings":";;;AAAA,yCAAmE;AAEnE,
|
|
1
|
+
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/socket.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/server/app.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { Server } from "./server";
|
|
|
2
2
|
import { PubSub } from "@derivesome/core";
|
|
3
3
|
import { ServerEvent } from "./events";
|
|
4
4
|
import { Plugin } from "./plugin";
|
|
5
|
+
import { Connection } from "./connection";
|
|
5
6
|
export type AppConfig = {
|
|
6
7
|
host: string;
|
|
7
8
|
port: number;
|
|
@@ -12,7 +13,10 @@ export declare class App {
|
|
|
12
13
|
server: Server;
|
|
13
14
|
ps: PubSub<ServerEvent>;
|
|
14
15
|
plugins: Map<string, Plugin>;
|
|
16
|
+
connections: Map<string, Connection>;
|
|
15
17
|
constructor(cfg: AppConfig);
|
|
18
|
+
private addConnection;
|
|
19
|
+
private removeConnection;
|
|
16
20
|
use(plugin: Plugin): void;
|
|
17
21
|
private init;
|
|
18
22
|
start(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/server/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,MAAM,EAAU,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/server/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,MAAM,EAAU,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,qBAAa,GAAG;IACd,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IACxB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;IACzC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAa;gBAErC,GAAG,EAAE,SAAS;IAM1B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,gBAAgB;IAQxB,GAAG,CAAC,MAAM,EAAE,MAAM;IAuBlB,OAAO,CAAC,IAAI;IAoHZ,KAAK;CASN"}
|
package/dist/esm/server/app.js
CHANGED
|
@@ -2,16 +2,33 @@ import { Server } from "./server";
|
|
|
2
2
|
import { pubsub } from "@derivesome/core";
|
|
3
3
|
import { Socket } from "../socket";
|
|
4
4
|
import { BinaryBuffer, BinaryType, serial } from "binencode";
|
|
5
|
+
import { Connection } from "./connection";
|
|
6
|
+
import { v4 } from 'uuid';
|
|
5
7
|
export class App {
|
|
6
8
|
config;
|
|
7
9
|
server;
|
|
8
10
|
ps;
|
|
9
11
|
plugins = new Map();
|
|
12
|
+
connections = new Map();
|
|
10
13
|
constructor(cfg) {
|
|
11
14
|
this.config = cfg;
|
|
12
15
|
this.server = new Server(cfg);
|
|
13
16
|
this.ps = pubsub();
|
|
14
17
|
}
|
|
18
|
+
addConnection(connection) {
|
|
19
|
+
if (this.connections.has(connection.id)) {
|
|
20
|
+
console.log(`Connection already exists: ${connection.id}`);
|
|
21
|
+
}
|
|
22
|
+
;
|
|
23
|
+
this.connections.set(connection.id, connection);
|
|
24
|
+
}
|
|
25
|
+
removeConnection(id) {
|
|
26
|
+
if (!this.connections.has(id)) {
|
|
27
|
+
console.log(`Connection does not exist: ${id}`);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
this.connections.delete(id);
|
|
31
|
+
}
|
|
15
32
|
use(plugin) {
|
|
16
33
|
this.plugins.set(plugin.name, plugin);
|
|
17
34
|
this.ps.subscribe(async (event) => {
|
|
@@ -53,12 +70,14 @@ export class App {
|
|
|
53
70
|
});
|
|
54
71
|
ws.addListener("connection", async (client, req) => {
|
|
55
72
|
const socket = new Socket(() => client);
|
|
73
|
+
const connection = new Connection(socket, v4());
|
|
74
|
+
this.addConnection(connection);
|
|
56
75
|
await this.ps.publishAsync({
|
|
57
76
|
type: "client-connection",
|
|
58
77
|
app: this,
|
|
59
78
|
ws,
|
|
60
79
|
req,
|
|
61
|
-
|
|
80
|
+
connection,
|
|
62
81
|
});
|
|
63
82
|
socket.connection.addEventListener("open", async (ev) => {
|
|
64
83
|
await this.ps.publishAsync({
|
|
@@ -66,7 +85,7 @@ export class App {
|
|
|
66
85
|
app: this,
|
|
67
86
|
ws,
|
|
68
87
|
event: ev,
|
|
69
|
-
|
|
88
|
+
connection,
|
|
70
89
|
});
|
|
71
90
|
});
|
|
72
91
|
socket.connection.addEventListener("close", async (ev) => {
|
|
@@ -75,8 +94,9 @@ export class App {
|
|
|
75
94
|
app: this,
|
|
76
95
|
ws,
|
|
77
96
|
event: ev,
|
|
78
|
-
|
|
97
|
+
connection,
|
|
79
98
|
});
|
|
99
|
+
this.removeConnection(connection.id);
|
|
80
100
|
});
|
|
81
101
|
socket.connection.addEventListener("error", async (ev) => {
|
|
82
102
|
await this.ps.publishAsync({
|
|
@@ -84,7 +104,7 @@ export class App {
|
|
|
84
104
|
app: this,
|
|
85
105
|
ws,
|
|
86
106
|
event: ev,
|
|
87
|
-
|
|
107
|
+
connection,
|
|
88
108
|
});
|
|
89
109
|
});
|
|
90
110
|
socket.connection.on("upgrade", async (req) => {
|
|
@@ -93,7 +113,7 @@ export class App {
|
|
|
93
113
|
app: this,
|
|
94
114
|
ws,
|
|
95
115
|
req,
|
|
96
|
-
|
|
116
|
+
connection,
|
|
97
117
|
});
|
|
98
118
|
});
|
|
99
119
|
socket.connection.on("message", async (data, isBinary) => {
|
|
@@ -102,7 +122,7 @@ export class App {
|
|
|
102
122
|
app: this,
|
|
103
123
|
isBinary,
|
|
104
124
|
message: data,
|
|
105
|
-
|
|
125
|
+
connection,
|
|
106
126
|
ws,
|
|
107
127
|
});
|
|
108
128
|
let buffer;
|
|
@@ -130,7 +150,7 @@ export class App {
|
|
|
130
150
|
type: "client-message",
|
|
131
151
|
app: this,
|
|
132
152
|
message: decoded,
|
|
133
|
-
|
|
153
|
+
connection,
|
|
134
154
|
ws,
|
|
135
155
|
});
|
|
136
156
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/server/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAU,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/server/app.ts"],"names":[],"mappings":"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"}
|