@moqtap/codec 0.2.3 → 0.4.0
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/LICENSE +21 -21
- package/README.md +100 -99
- package/dist/{chunk-RZHAPEXO.js → chunk-2A57DRXV.js} +36 -10
- package/dist/{chunk-73MWUKSJ.js → chunk-2UTVXWFF.js} +190 -102
- package/dist/{chunk-JTVCOMBI.cjs → chunk-3XKO6PCR.cjs} +290 -183
- package/dist/{chunk-ACQ4CUJP.cjs → chunk-4BDEU3D4.cjs} +237 -158
- package/dist/{chunk-4N4INRE7.cjs → chunk-4HBKHNU2.cjs} +144 -110
- package/dist/{chunk-2ZT6CVSE.js → chunk-4IVZZOY3.js} +269 -162
- package/dist/{chunk-GLBQDG4L.cjs → chunk-5O764MBD.cjs} +508 -117
- package/dist/chunk-7KBAWOBA.js +1212 -0
- package/dist/{chunk-JSQM2MG3.js → chunk-7QOPNSDF.js} +44 -12
- package/dist/{chunk-SYHW3FLI.cjs → chunk-7RE6KSIY.cjs} +28 -8
- package/dist/{chunk-YG5KJESI.js → chunk-AY6IAHUM.js} +28 -8
- package/dist/{chunk-EFM5T7OM.js → chunk-BLQDWOSG.js} +36 -10
- package/dist/{chunk-UYXTY6ZQ.cjs → chunk-E65QKRSN.cjs} +20 -12
- package/dist/{chunk-BISI45MN.cjs → chunk-EAHE3IOG.cjs} +44 -12
- package/dist/{chunk-PZBPH2D7.js → chunk-GCBFHZW6.js} +216 -137
- package/dist/{chunk-GXEW4COZ.cjs → chunk-H5NSL4MO.cjs} +36 -10
- package/dist/chunk-HZHSO7EW.cjs +1212 -0
- package/dist/{chunk-KZCYQ7ED.cjs → chunk-IILNSDEQ.cjs} +69 -41
- package/dist/{chunk-4XYGE53S.cjs → chunk-J3XCPBW3.cjs} +36 -10
- package/dist/{chunk-6AEHWULA.cjs → chunk-JKOEJZ5B.cjs} +28 -8
- package/dist/{chunk-RUPCJTC3.cjs → chunk-JL3NEW3O.cjs} +23 -1
- package/dist/{chunk-G7GI7LJA.js → chunk-LORZMJJB.js} +36 -10
- package/dist/{chunk-DUBCL3WF.cjs → chunk-LV5C6MEC.cjs} +36 -10
- package/dist/{chunk-ENURAVHI.cjs → chunk-MYXAD5JC.cjs} +44 -12
- package/dist/{chunk-FXZ2MYKJ.js → chunk-MZ7HUCGJ.js} +20 -12
- package/dist/{chunk-S74DWJE2.cjs → chunk-OKG2HT25.cjs} +277 -88
- package/dist/{chunk-BGWGVINJ.cjs → chunk-PKEOQSSZ.cjs} +144 -110
- package/dist/{chunk-2GODRVT5.js → chunk-Q46ZURKX.js} +325 -48
- package/dist/{chunk-UR6JKS56.js → chunk-Q7IGWV3P.js} +41 -9
- package/dist/{chunk-XSNX2IUJ.js → chunk-RW4UG7CN.js} +121 -87
- package/dist/{chunk-DWK5ZQZ4.js → chunk-RZTLQAKF.js} +28 -8
- package/dist/{chunk-UNS34PTA.cjs → chunk-S6IPIN66.cjs} +44 -12
- package/dist/{chunk-YIG2C3LF.cjs → chunk-SDWRXXOO.cjs} +214 -126
- package/dist/{chunk-CEH7ESNC.js → chunk-SHMA4PBY.js} +121 -87
- package/dist/{chunk-MC7W6PMI.js → chunk-U3ZVLT5L.js} +483 -135
- package/dist/{chunk-VJUUZ4W2.cjs → chunk-UJU63EFY.cjs} +374 -97
- package/dist/{chunk-7L43FE6P.js → chunk-VOU7PNHI.js} +23 -1
- package/dist/{chunk-E6E3NQYU.js → chunk-WRHGCVYN.js} +44 -12
- package/dist/{chunk-FPISPJ5N.cjs → chunk-XNWYLVGU.cjs} +529 -181
- package/dist/{chunk-U3IPZYPX.js → chunk-XS77RBY7.js} +228 -39
- package/dist/{chunk-JGG7CMSZ.cjs → chunk-XZE5R57R.cjs} +144 -110
- package/dist/{chunk-77MNXX3M.js → chunk-Y6KCSM3V.js} +121 -87
- package/dist/{chunk-TLYNOOQP.cjs → chunk-YTPZZI2M.cjs} +41 -9
- package/dist/{chunk-7DUBLRXC.js → chunk-YWRCSQBA.js} +44 -12
- package/dist/{chunk-MRJWLGYH.js → chunk-Z3VKP3PJ.js} +69 -41
- package/dist/{chunk-E6P74GDT.js → chunk-Z6U26IRI.js} +464 -73
- package/dist/{codec-FvGCxIhr.d.ts → codec-25u4_1HS.d.ts} +4 -4
- package/dist/{codec-DRcsBCsb.d.ts → codec-3Ppy_5Gd.d.ts} +4 -4
- package/dist/{codec-BdVMRMOI.d.ts → codec-BB0U8MF2.d.cts} +4 -4
- package/dist/{codec-B2cH-f5V.d.cts → codec-BHHfBTnV.d.ts} +4 -4
- package/dist/{codec-B5K73Bdj.d.ts → codec-BN6jk0Td.d.cts} +4 -4
- package/dist/{codec-R8GrCPt2.d.ts → codec-BU0gaSZm.d.ts} +4 -4
- package/dist/{codec-Bq-tLtfP.d.ts → codec-C-Yk2RNa.d.ts} +4 -4
- package/dist/codec-CFWQY9Lj.d.cts +18 -0
- package/dist/{codec-CPlK3Pi5.d.ts → codec-COy4uuPO.d.cts} +4 -4
- package/dist/codec-CewFCsEy.d.ts +18 -0
- package/dist/{codec-KXHvXZVb.d.cts → codec-Ck7ZwFF1.d.cts} +4 -4
- package/dist/{codec-DZhZSIii.d.cts → codec-D2QVSH9D.d.ts} +4 -4
- package/dist/{codec-BwFgpeQu.d.ts → codec-DDUBJGn0.d.cts} +4 -4
- package/dist/{codec-BFeliJFc.d.ts → codec-DNfml-se.d.ts} +4 -4
- package/dist/{codec-C4n1PS09.d.cts → codec-DoOGjjDq.d.cts} +4 -4
- package/dist/{codec-Bap882Fh.d.cts → codec-J7ekOSMc.d.ts} +4 -4
- package/dist/{codec-SKBeHQk7.d.ts → codec-R9TJCq-E.d.cts} +4 -4
- package/dist/{codec-DNUIgLqc.d.cts → codec-ZwV-Njt6.d.ts} +4 -4
- package/dist/{codec-HgBgHkFI.d.cts → codec-j819z_hL.d.cts} +4 -4
- package/dist/{codec-DY4QH364.d.cts → codec-w8z2j_uo.d.cts} +4 -4
- package/dist/{codec-CPvPq0sb.d.cts → codec-wtt6WF1K.d.ts} +4 -4
- package/dist/{codec-BUMjz0J4.d.cts → codec-z6_2PSzi.d.cts} +4 -4
- package/dist/{draft7-session.cjs → draft07-session.cjs} +2 -2
- package/dist/draft07-session.d.cts +8 -0
- package/dist/draft07-session.d.ts +8 -0
- package/dist/{draft7-session.js → draft07-session.js} +1 -1
- package/dist/draft07.cjs +129 -0
- package/dist/draft07.d.cts +67 -0
- package/dist/draft07.d.ts +67 -0
- package/dist/draft07.js +129 -0
- package/dist/draft08-session.cjs +6 -0
- package/dist/draft08-session.d.cts +8 -0
- package/dist/draft08-session.d.ts +8 -0
- package/dist/{draft8-session.js → draft08-session.js} +1 -1
- package/dist/draft08.cjs +119 -0
- package/dist/{draft8.d.cts → draft08.d.cts} +15 -13
- package/dist/{draft8.d.ts → draft08.d.ts} +15 -13
- package/dist/{draft8.js → draft08.js} +7 -4
- package/dist/draft09-session.cjs +6 -0
- package/dist/draft09-session.d.cts +8 -0
- package/dist/draft09-session.d.ts +8 -0
- package/dist/{draft9-session.js → draft09-session.js} +1 -1
- package/dist/draft09.cjs +119 -0
- package/dist/{draft9.d.cts → draft09.d.cts} +15 -13
- package/dist/{draft9.d.ts → draft09.d.ts} +15 -13
- package/dist/{draft9.js → draft09.js} +7 -4
- package/dist/draft10-session.cjs +2 -2
- package/dist/draft10-session.d.cts +6 -6
- package/dist/draft10-session.d.ts +6 -6
- package/dist/draft10-session.js +1 -1
- package/dist/draft10.cjs +8 -5
- package/dist/draft10.d.cts +14 -12
- package/dist/draft10.d.ts +14 -12
- package/dist/draft10.js +16 -13
- package/dist/draft11-session.cjs +2 -2
- package/dist/draft11-session.d.cts +6 -6
- package/dist/draft11-session.d.ts +6 -6
- package/dist/draft11-session.js +1 -1
- package/dist/draft11.cjs +8 -5
- package/dist/draft11.d.cts +14 -12
- package/dist/draft11.d.ts +14 -12
- package/dist/draft11.js +16 -13
- package/dist/draft12-session.cjs +2 -2
- package/dist/draft12-session.d.cts +6 -6
- package/dist/draft12-session.d.ts +6 -6
- package/dist/draft12-session.js +1 -1
- package/dist/draft12.cjs +8 -5
- package/dist/draft12.d.cts +16 -14
- package/dist/draft12.d.ts +16 -14
- package/dist/draft12.js +16 -13
- package/dist/draft13-session.cjs +2 -2
- package/dist/draft13-session.d.cts +6 -6
- package/dist/draft13-session.d.ts +6 -6
- package/dist/draft13-session.js +1 -1
- package/dist/draft13.cjs +8 -5
- package/dist/draft13.d.cts +16 -14
- package/dist/draft13.d.ts +16 -14
- package/dist/draft13.js +16 -13
- package/dist/draft14-session.cjs +2 -2
- package/dist/draft14-session.d.cts +6 -6
- package/dist/draft14-session.d.ts +6 -6
- package/dist/draft14-session.js +1 -1
- package/dist/draft14.cjs +14 -5
- package/dist/draft14.d.cts +14 -12
- package/dist/draft14.d.ts +14 -12
- package/dist/draft14.js +13 -4
- package/dist/draft15-session.cjs +2 -2
- package/dist/draft15-session.d.cts +6 -6
- package/dist/draft15-session.d.ts +6 -6
- package/dist/draft15-session.js +1 -1
- package/dist/draft15.cjs +8 -5
- package/dist/draft15.d.cts +14 -12
- package/dist/draft15.d.ts +14 -12
- package/dist/draft15.js +16 -13
- package/dist/draft16-session.cjs +2 -2
- package/dist/draft16-session.d.cts +6 -6
- package/dist/draft16-session.d.ts +6 -6
- package/dist/draft16-session.js +1 -1
- package/dist/draft16.cjs +8 -5
- package/dist/draft16.d.cts +14 -12
- package/dist/draft16.d.ts +14 -12
- package/dist/draft16.js +16 -13
- package/dist/draft17-session.cjs +2 -2
- package/dist/draft17-session.d.cts +7 -7
- package/dist/draft17-session.d.ts +7 -7
- package/dist/draft17-session.js +1 -1
- package/dist/draft17.cjs +8 -5
- package/dist/draft17.d.cts +11 -9
- package/dist/draft17.d.ts +11 -9
- package/dist/draft17.js +16 -13
- package/dist/index.cjs +52 -74
- package/dist/index.d.cts +41 -60
- package/dist/index.d.ts +41 -60
- package/dist/index.js +40 -62
- package/dist/{session-types-CJIFbTPd.d.ts → session-types-C7UONex5.d.cts} +28 -27
- package/dist/{session-types-Cbq8IGCP.d.cts → session-types-X-IYEGoG.d.ts} +28 -27
- package/dist/session.cjs +46 -13
- package/dist/session.d.cts +29 -11
- package/dist/session.d.ts +29 -11
- package/dist/session.js +46 -13
- package/dist/{types-DxSFvL2b.d.cts → types--Q7_DcvP.d.cts} +43 -39
- package/dist/{types-DxSFvL2b.d.ts → types--Q7_DcvP.d.ts} +43 -39
- package/dist/{types-B0FT5Qs2.d.cts → types-0IWbU9Z_.d.cts} +36 -36
- package/dist/{types-B0FT5Qs2.d.ts → types-0IWbU9Z_.d.ts} +36 -36
- package/dist/{types-gQsr0AAA.d.cts → types-B3g5G9KP.d.cts} +36 -36
- package/dist/{types-gQsr0AAA.d.ts → types-B3g5G9KP.d.ts} +36 -36
- package/dist/{types-Pme7sua0.d.cts → types-BFpFNM_m.d.cts} +57 -32
- package/dist/{types-Pme7sua0.d.ts → types-BFpFNM_m.d.ts} +57 -32
- package/dist/{types-8gUGeMgs.d.cts → types-Br7fm2mf.d.cts} +48 -26
- package/dist/{types-8gUGeMgs.d.ts → types-Br7fm2mf.d.ts} +48 -26
- package/dist/{types-BeAVNU-F.d.cts → types-C2qKTRR_.d.cts} +50 -45
- package/dist/{types-BeAVNU-F.d.ts → types-C2qKTRR_.d.ts} +50 -45
- package/dist/{types-DKpsfD3i.d.cts → types-DEaypVsD.d.cts} +115 -55
- package/dist/{types-DKpsfD3i.d.ts → types-DEaypVsD.d.ts} +115 -55
- package/dist/types-Dl4IaAHR.d.cts +282 -0
- package/dist/types-Dl4IaAHR.d.ts +282 -0
- package/dist/{types-CDa7F5ct.d.cts → types-DrQpTW1G.d.cts} +58 -50
- package/dist/{types-CDa7F5ct.d.ts → types-DrQpTW1G.d.ts} +58 -50
- package/dist/types-DuIO7cWK.d.cts +25 -0
- package/dist/types-DuIO7cWK.d.ts +25 -0
- package/dist/{types-B9A2g05r.d.cts → types-DuxfOYiO.d.cts} +47 -31
- package/dist/{types-B9A2g05r.d.ts → types-DuxfOYiO.d.ts} +47 -31
- package/dist/{types-D1dI_oTX.d.cts → types-jV1yDDBA.d.cts} +36 -36
- package/dist/{types-D1dI_oTX.d.ts → types-jV1yDDBA.d.ts} +36 -36
- package/package.json +192 -192
- package/src/core/buffer-reader.ts +130 -130
- package/src/core/buffer-writer.ts +100 -100
- package/src/core/errors.ts +1 -1
- package/src/core/hex.ts +21 -21
- package/src/core/session-types.ts +61 -59
- package/src/core/types.ts +18 -361
- package/src/drafts/draft07/codec.ts +1058 -938
- package/src/drafts/draft07/data-streams.ts +240 -240
- package/src/drafts/draft07/index.ts +124 -89
- package/src/drafts/draft07/messages.ts +76 -42
- package/src/drafts/draft07/rules.ts +107 -101
- package/src/drafts/draft07/session-fsm.ts +315 -287
- package/src/drafts/draft07/session.ts +8 -6
- package/src/drafts/draft07/types.ts +406 -72
- package/src/drafts/draft07/varint.ts +51 -51
- package/src/drafts/draft08/codec.ts +985 -953
- package/src/drafts/draft08/data-streams.ts +363 -359
- package/src/drafts/draft08/index.ts +10 -9
- package/src/drafts/draft08/messages.ts +59 -59
- package/src/drafts/draft08/rules.ts +73 -73
- package/src/drafts/draft08/session-fsm.ts +335 -303
- package/src/drafts/draft08/session.ts +6 -7
- package/src/drafts/draft08/types.ts +380 -384
- package/src/drafts/draft09/codec.ts +977 -945
- package/src/drafts/draft09/data-streams.ts +336 -332
- package/src/drafts/draft09/index.ts +10 -9
- package/src/drafts/draft09/messages.ts +59 -59
- package/src/drafts/draft09/rules.ts +73 -73
- package/src/drafts/draft09/session-fsm.ts +335 -303
- package/src/drafts/draft09/session.ts +6 -7
- package/src/drafts/draft09/types.ts +380 -384
- package/src/drafts/draft10/codec.ts +977 -945
- package/src/drafts/draft10/data-streams.ts +336 -332
- package/src/drafts/draft10/index.ts +10 -9
- package/src/drafts/draft10/messages.ts +59 -59
- package/src/drafts/draft10/rules.ts +73 -73
- package/src/drafts/draft10/session-fsm.ts +335 -303
- package/src/drafts/draft10/session.ts +6 -7
- package/src/drafts/draft10/types.ts +380 -384
- package/src/drafts/draft11/codec.ts +1054 -988
- package/src/drafts/draft11/data-streams.ts +316 -269
- package/src/drafts/draft11/index.ts +10 -9
- package/src/drafts/draft11/messages.ts +60 -59
- package/src/drafts/draft11/rules.ts +73 -73
- package/src/drafts/draft11/session-fsm.ts +359 -333
- package/src/drafts/draft11/session.ts +6 -7
- package/src/drafts/draft11/types.ts +385 -381
- package/src/drafts/draft12/codec.ts +1178 -1122
- package/src/drafts/draft12/data-streams.ts +324 -275
- package/src/drafts/draft12/index.ts +10 -9
- package/src/drafts/draft12/messages.ts +67 -66
- package/src/drafts/draft12/rules.ts +79 -79
- package/src/drafts/draft12/session-fsm.ts +384 -358
- package/src/drafts/draft12/session.ts +6 -7
- package/src/drafts/draft12/types.ts +424 -419
- package/src/drafts/draft13/codec.ts +1296 -1206
- package/src/drafts/draft13/data-streams.ts +326 -275
- package/src/drafts/draft13/index.ts +10 -9
- package/src/drafts/draft13/messages.ts +73 -68
- package/src/drafts/draft13/rules.ts +81 -81
- package/src/drafts/draft13/session-fsm.ts +392 -366
- package/src/drafts/draft13/session.ts +6 -7
- package/src/drafts/draft13/types.ts +447 -438
- package/src/drafts/draft14/codec.ts +1347 -1043
- package/src/drafts/draft14/data-streams.ts +831 -813
- package/src/drafts/draft14/index.ts +17 -9
- package/src/drafts/draft14/messages.ts +65 -65
- package/src/drafts/draft14/rules.ts +81 -81
- package/src/drafts/draft14/session-fsm.ts +415 -405
- package/src/drafts/draft14/session.ts +6 -7
- package/src/drafts/draft14/types.ts +451 -381
- package/src/drafts/draft15/codec.ts +1138 -978
- package/src/drafts/draft15/data-streams.ts +842 -794
- package/src/drafts/draft15/index.ts +10 -9
- package/src/drafts/draft15/messages.ts +54 -53
- package/src/drafts/draft15/rules.ts +67 -67
- package/src/drafts/draft15/session-fsm.ts +319 -299
- package/src/drafts/draft15/session.ts +6 -7
- package/src/drafts/draft15/types.ts +357 -339
- package/src/drafts/draft16/codec.ts +1242 -966
- package/src/drafts/draft16/data-streams.ts +835 -789
- package/src/drafts/draft16/index.ts +10 -9
- package/src/drafts/draft16/messages.ts +56 -55
- package/src/drafts/draft16/rules.ts +69 -69
- package/src/drafts/draft16/session-fsm.ts +319 -299
- package/src/drafts/draft16/session.ts +6 -7
- package/src/drafts/draft16/types.ts +386 -357
- package/src/drafts/draft17/codec.ts +1209 -971
- package/src/drafts/draft17/data-streams.ts +969 -758
- package/src/drafts/draft17/index.ts +9 -7
- package/src/drafts/draft17/messages.ts +43 -42
- package/src/drafts/draft17/rules.ts +58 -58
- package/src/drafts/draft17/session-fsm.ts +248 -216
- package/src/drafts/draft17/session.ts +5 -5
- package/src/drafts/draft17/types.ts +337 -313
- package/src/index.ts +85 -274
- package/src/session.ts +63 -25
- package/dist/chunk-FZDIEHQL.cjs +0 -1042
- package/dist/chunk-HDWJ2GDE.js +0 -24
- package/dist/chunk-KNDYS3DK.cjs +0 -24
- package/dist/chunk-N2KBF5Q2.js +0 -1042
- package/dist/draft7-session.d.cts +0 -7
- package/dist/draft7-session.d.ts +0 -7
- package/dist/draft7.cjs +0 -72
- package/dist/draft7.d.cts +0 -148
- package/dist/draft7.d.ts +0 -148
- package/dist/draft7.js +0 -72
- package/dist/draft8-session.cjs +0 -6
- package/dist/draft8-session.d.cts +0 -8
- package/dist/draft8-session.d.ts +0 -8
- package/dist/draft8.cjs +0 -116
- package/dist/draft9-session.cjs +0 -6
- package/dist/draft9-session.d.cts +0 -8
- package/dist/draft9-session.d.ts +0 -8
- package/dist/draft9.cjs +0 -116
- package/dist/types-QNXoxC9Y.d.cts +0 -236
- package/dist/types-QNXoxC9Y.d.ts +0 -236
- package/src/drafts/draft07/announce-fsm.ts +0 -2
- package/src/drafts/draft07/parameters.ts +0 -12
- package/src/drafts/draft07/subscription-fsm.ts +0 -3
|
@@ -9,7 +9,7 @@ var _chunkMZ7VU52Ocjs = require('./chunk-MZ7VU52O.cjs');
|
|
|
9
9
|
function violation(code, message, currentPhase, offendingMessage) {
|
|
10
10
|
return { code, message, currentPhase, offendingMessage };
|
|
11
11
|
}
|
|
12
|
-
var
|
|
12
|
+
var Draft07SessionFSM = (_class = class {
|
|
13
13
|
__init() {this._phase = "idle"}
|
|
14
14
|
|
|
15
15
|
__init2() {this._subscriptions = /* @__PURE__ */ new Map()}
|
|
@@ -174,7 +174,11 @@ var SessionFSM = (_class = class {
|
|
|
174
174
|
};
|
|
175
175
|
}
|
|
176
176
|
this._phase = "ready";
|
|
177
|
-
return {
|
|
177
|
+
return {
|
|
178
|
+
ok: true,
|
|
179
|
+
phase: this._phase,
|
|
180
|
+
sideEffects: [{ type: "session-ready" }]
|
|
181
|
+
};
|
|
178
182
|
}
|
|
179
183
|
handleGoAway(message, _direction, sideEffects) {
|
|
180
184
|
if (this._phase !== "ready" && this._phase !== "draining") {
|
|
@@ -190,7 +194,10 @@ var SessionFSM = (_class = class {
|
|
|
190
194
|
}
|
|
191
195
|
this._phase = "draining";
|
|
192
196
|
const goaway = message;
|
|
193
|
-
sideEffects.push({
|
|
197
|
+
sideEffects.push({
|
|
198
|
+
type: "session-draining",
|
|
199
|
+
goAwayUri: goaway.new_session_uri
|
|
200
|
+
});
|
|
194
201
|
return { ok: true, phase: this._phase, sideEffects };
|
|
195
202
|
}
|
|
196
203
|
requireReady(msgType) {
|
|
@@ -208,22 +215,22 @@ var SessionFSM = (_class = class {
|
|
|
208
215
|
const err = this.requireReady(message.type);
|
|
209
216
|
if (err) return { ok: false, violation: err };
|
|
210
217
|
const sub = message;
|
|
211
|
-
if (this._subscriptions.has(sub.
|
|
218
|
+
if (this._subscriptions.has(sub.subscribe_id)) {
|
|
212
219
|
return {
|
|
213
220
|
ok: false,
|
|
214
221
|
violation: violation(
|
|
215
222
|
"DUPLICATE_SUBSCRIBE_ID",
|
|
216
|
-
`Subscribe ID ${sub.
|
|
223
|
+
`Subscribe ID ${sub.subscribe_id} already exists`,
|
|
217
224
|
this._phase,
|
|
218
225
|
message.type
|
|
219
226
|
)
|
|
220
227
|
};
|
|
221
228
|
}
|
|
222
|
-
this._subscriptions.set(sub.
|
|
223
|
-
subscribeId: sub.
|
|
229
|
+
this._subscriptions.set(sub.subscribe_id, {
|
|
230
|
+
subscribeId: sub.subscribe_id,
|
|
224
231
|
phase: "pending",
|
|
225
|
-
trackNamespace: sub.
|
|
226
|
-
trackName: sub.
|
|
232
|
+
trackNamespace: sub.track_namespace,
|
|
233
|
+
trackName: sub.track_name
|
|
227
234
|
});
|
|
228
235
|
return { ok: true, phase: this._phase, sideEffects };
|
|
229
236
|
}
|
|
@@ -231,13 +238,13 @@ var SessionFSM = (_class = class {
|
|
|
231
238
|
const err = this.requireReady(message.type);
|
|
232
239
|
if (err) return { ok: false, violation: err };
|
|
233
240
|
const ok = message;
|
|
234
|
-
const existing = this._subscriptions.get(ok.
|
|
241
|
+
const existing = this._subscriptions.get(ok.subscribe_id);
|
|
235
242
|
if (!existing) {
|
|
236
243
|
return {
|
|
237
244
|
ok: false,
|
|
238
245
|
violation: violation(
|
|
239
246
|
"UNKNOWN_SUBSCRIBE_ID",
|
|
240
|
-
`No subscription with ID ${ok.
|
|
247
|
+
`No subscription with ID ${ok.subscribe_id}`,
|
|
241
248
|
this._phase,
|
|
242
249
|
message.type
|
|
243
250
|
)
|
|
@@ -248,27 +255,30 @@ var SessionFSM = (_class = class {
|
|
|
248
255
|
ok: false,
|
|
249
256
|
violation: violation(
|
|
250
257
|
"STATE_VIOLATION",
|
|
251
|
-
`Subscription ${ok.
|
|
258
|
+
`Subscription ${ok.subscribe_id} is ${existing.phase}, not pending`,
|
|
252
259
|
this._phase,
|
|
253
260
|
message.type
|
|
254
261
|
)
|
|
255
262
|
};
|
|
256
263
|
}
|
|
257
|
-
this._subscriptions.set(ok.
|
|
258
|
-
sideEffects.push({
|
|
264
|
+
this._subscriptions.set(ok.subscribe_id, { ...existing, phase: "active" });
|
|
265
|
+
sideEffects.push({
|
|
266
|
+
type: "subscription-activated",
|
|
267
|
+
subscribeId: ok.subscribe_id
|
|
268
|
+
});
|
|
259
269
|
return { ok: true, phase: this._phase, sideEffects };
|
|
260
270
|
}
|
|
261
271
|
handleSubscribeError(message, _direction, sideEffects) {
|
|
262
272
|
const err = this.requireReady(message.type);
|
|
263
273
|
if (err) return { ok: false, violation: err };
|
|
264
274
|
const subErr = message;
|
|
265
|
-
const existing = this._subscriptions.get(subErr.
|
|
275
|
+
const existing = this._subscriptions.get(subErr.subscribe_id);
|
|
266
276
|
if (!existing) {
|
|
267
277
|
return {
|
|
268
278
|
ok: false,
|
|
269
279
|
violation: violation(
|
|
270
280
|
"UNKNOWN_SUBSCRIBE_ID",
|
|
271
|
-
`No subscription with ID ${subErr.
|
|
281
|
+
`No subscription with ID ${subErr.subscribe_id}`,
|
|
272
282
|
this._phase,
|
|
273
283
|
message.type
|
|
274
284
|
)
|
|
@@ -279,17 +289,20 @@ var SessionFSM = (_class = class {
|
|
|
279
289
|
ok: false,
|
|
280
290
|
violation: violation(
|
|
281
291
|
"STATE_VIOLATION",
|
|
282
|
-
`Subscription ${subErr.
|
|
292
|
+
`Subscription ${subErr.subscribe_id} is ${existing.phase}, not pending`,
|
|
283
293
|
this._phase,
|
|
284
294
|
message.type
|
|
285
295
|
)
|
|
286
296
|
};
|
|
287
297
|
}
|
|
288
|
-
this._subscriptions.set(subErr.
|
|
298
|
+
this._subscriptions.set(subErr.subscribe_id, {
|
|
299
|
+
...existing,
|
|
300
|
+
phase: "error"
|
|
301
|
+
});
|
|
289
302
|
sideEffects.push({
|
|
290
303
|
type: "subscription-ended",
|
|
291
|
-
subscribeId: subErr.
|
|
292
|
-
reason: subErr.
|
|
304
|
+
subscribeId: subErr.subscribe_id,
|
|
305
|
+
reason: subErr.reason_phrase
|
|
293
306
|
});
|
|
294
307
|
return { ok: true, phase: this._phase, sideEffects };
|
|
295
308
|
}
|
|
@@ -297,23 +310,23 @@ var SessionFSM = (_class = class {
|
|
|
297
310
|
const err = this.requireReady(message.type);
|
|
298
311
|
if (err) return { ok: false, violation: err };
|
|
299
312
|
const done = message;
|
|
300
|
-
const existing = this._subscriptions.get(done.
|
|
313
|
+
const existing = this._subscriptions.get(done.subscribe_id);
|
|
301
314
|
if (!existing) {
|
|
302
315
|
return {
|
|
303
316
|
ok: false,
|
|
304
317
|
violation: violation(
|
|
305
318
|
"UNKNOWN_SUBSCRIBE_ID",
|
|
306
|
-
`No subscription with ID ${done.
|
|
319
|
+
`No subscription with ID ${done.subscribe_id}`,
|
|
307
320
|
this._phase,
|
|
308
321
|
message.type
|
|
309
322
|
)
|
|
310
323
|
};
|
|
311
324
|
}
|
|
312
|
-
this._subscriptions.set(done.
|
|
325
|
+
this._subscriptions.set(done.subscribe_id, { ...existing, phase: "done" });
|
|
313
326
|
sideEffects.push({
|
|
314
327
|
type: "subscription-ended",
|
|
315
|
-
subscribeId: done.
|
|
316
|
-
reason: done.
|
|
328
|
+
subscribeId: done.subscribe_id,
|
|
329
|
+
reason: done.reason_phrase
|
|
317
330
|
});
|
|
318
331
|
return { ok: true, phase: this._phase, sideEffects };
|
|
319
332
|
}
|
|
@@ -321,22 +334,22 @@ var SessionFSM = (_class = class {
|
|
|
321
334
|
const err = this.requireReady(message.type);
|
|
322
335
|
if (err) return { ok: false, violation: err };
|
|
323
336
|
const unsub = message;
|
|
324
|
-
const existing = this._subscriptions.get(unsub.
|
|
337
|
+
const existing = this._subscriptions.get(unsub.subscribe_id);
|
|
325
338
|
if (!existing) {
|
|
326
339
|
return {
|
|
327
340
|
ok: false,
|
|
328
341
|
violation: violation(
|
|
329
342
|
"UNKNOWN_SUBSCRIBE_ID",
|
|
330
|
-
`No subscription with ID ${unsub.
|
|
343
|
+
`No subscription with ID ${unsub.subscribe_id}`,
|
|
331
344
|
this._phase,
|
|
332
345
|
message.type
|
|
333
346
|
)
|
|
334
347
|
};
|
|
335
348
|
}
|
|
336
|
-
this._subscriptions.set(unsub.
|
|
349
|
+
this._subscriptions.set(unsub.subscribe_id, { ...existing, phase: "done" });
|
|
337
350
|
sideEffects.push({
|
|
338
351
|
type: "subscription-ended",
|
|
339
|
-
subscribeId: unsub.
|
|
352
|
+
subscribeId: unsub.subscribe_id,
|
|
340
353
|
reason: "unsubscribed"
|
|
341
354
|
});
|
|
342
355
|
return { ok: true, phase: this._phase, sideEffects };
|
|
@@ -349,15 +362,18 @@ var SessionFSM = (_class = class {
|
|
|
349
362
|
const err = this.requireReady(message.type);
|
|
350
363
|
if (err) return { ok: false, violation: err };
|
|
351
364
|
const ann = message;
|
|
352
|
-
const key = this.namespaceKey(ann.
|
|
353
|
-
this._announces.set(key, {
|
|
365
|
+
const key = this.namespaceKey(ann.track_namespace);
|
|
366
|
+
this._announces.set(key, {
|
|
367
|
+
namespace: ann.track_namespace,
|
|
368
|
+
phase: "pending"
|
|
369
|
+
});
|
|
354
370
|
return { ok: true, phase: this._phase, sideEffects };
|
|
355
371
|
}
|
|
356
372
|
handleAnnounceOk(message, _direction, sideEffects) {
|
|
357
373
|
const err = this.requireReady(message.type);
|
|
358
374
|
if (err) return { ok: false, violation: err };
|
|
359
375
|
const ok = message;
|
|
360
|
-
const key = this.namespaceKey(ok.
|
|
376
|
+
const key = this.namespaceKey(ok.track_namespace);
|
|
361
377
|
const existing = this._announces.get(key);
|
|
362
378
|
if (!existing) {
|
|
363
379
|
return {
|
|
@@ -371,14 +387,17 @@ var SessionFSM = (_class = class {
|
|
|
371
387
|
};
|
|
372
388
|
}
|
|
373
389
|
this._announces.set(key, { ...existing, phase: "active" });
|
|
374
|
-
sideEffects.push({
|
|
390
|
+
sideEffects.push({
|
|
391
|
+
type: "announce-activated",
|
|
392
|
+
namespace: ok.track_namespace
|
|
393
|
+
});
|
|
375
394
|
return { ok: true, phase: this._phase, sideEffects };
|
|
376
395
|
}
|
|
377
396
|
handleAnnounceError(message, _direction, sideEffects) {
|
|
378
397
|
const err = this.requireReady(message.type);
|
|
379
398
|
if (err) return { ok: false, violation: err };
|
|
380
399
|
const annErr = message;
|
|
381
|
-
const key = this.namespaceKey(annErr.
|
|
400
|
+
const key = this.namespaceKey(annErr.track_namespace);
|
|
382
401
|
const existing = this._announces.get(key);
|
|
383
402
|
if (!existing) {
|
|
384
403
|
return {
|
|
@@ -392,18 +411,24 @@ var SessionFSM = (_class = class {
|
|
|
392
411
|
};
|
|
393
412
|
}
|
|
394
413
|
this._announces.set(key, { ...existing, phase: "error" });
|
|
395
|
-
sideEffects.push({
|
|
414
|
+
sideEffects.push({
|
|
415
|
+
type: "announce-ended",
|
|
416
|
+
namespace: annErr.track_namespace
|
|
417
|
+
});
|
|
396
418
|
return { ok: true, phase: this._phase, sideEffects };
|
|
397
419
|
}
|
|
398
420
|
handleAnnounceCancel(message, _direction, sideEffects) {
|
|
399
421
|
const err = this.requireReady(message.type);
|
|
400
422
|
if (err) return { ok: false, violation: err };
|
|
401
423
|
const cancel = message;
|
|
402
|
-
const key = this.namespaceKey(cancel.
|
|
424
|
+
const key = this.namespaceKey(cancel.track_namespace);
|
|
403
425
|
const existing = this._announces.get(key);
|
|
404
426
|
if (existing) {
|
|
405
427
|
this._announces.delete(key);
|
|
406
|
-
sideEffects.push({
|
|
428
|
+
sideEffects.push({
|
|
429
|
+
type: "announce-ended",
|
|
430
|
+
namespace: cancel.track_namespace
|
|
431
|
+
});
|
|
407
432
|
}
|
|
408
433
|
return { ok: true, phase: this._phase, sideEffects };
|
|
409
434
|
}
|
|
@@ -411,11 +436,14 @@ var SessionFSM = (_class = class {
|
|
|
411
436
|
const err = this.requireReady(message.type);
|
|
412
437
|
if (err) return { ok: false, violation: err };
|
|
413
438
|
const unann = message;
|
|
414
|
-
const key = this.namespaceKey(unann.
|
|
439
|
+
const key = this.namespaceKey(unann.track_namespace);
|
|
415
440
|
const existing = this._announces.get(key);
|
|
416
441
|
if (existing) {
|
|
417
442
|
this._announces.delete(key);
|
|
418
|
-
sideEffects.push({
|
|
443
|
+
sideEffects.push({
|
|
444
|
+
type: "announce-ended",
|
|
445
|
+
namespace: unann.track_namespace
|
|
446
|
+
});
|
|
419
447
|
}
|
|
420
448
|
return { ok: true, phase: this._phase, sideEffects };
|
|
421
449
|
}
|
|
@@ -432,8 +460,8 @@ var SessionFSM = (_class = class {
|
|
|
432
460
|
}, _class);
|
|
433
461
|
|
|
434
462
|
// src/drafts/draft07/session.ts
|
|
435
|
-
function createDraft07SessionState(
|
|
436
|
-
return new
|
|
463
|
+
function createDraft07SessionState(role) {
|
|
464
|
+
return new Draft07SessionFSM(role);
|
|
437
465
|
}
|
|
438
466
|
|
|
439
467
|
|
|
@@ -293,7 +293,11 @@ var Draft11SessionFSM = (_class = class {
|
|
|
293
293
|
};
|
|
294
294
|
}
|
|
295
295
|
this._phase = "ready";
|
|
296
|
-
return {
|
|
296
|
+
return {
|
|
297
|
+
ok: true,
|
|
298
|
+
phase: this._phase,
|
|
299
|
+
sideEffects: [{ type: "session-ready" }]
|
|
300
|
+
};
|
|
297
301
|
}
|
|
298
302
|
handleGoAway(message, sideEffects) {
|
|
299
303
|
if (this._phase !== "ready" && this._phase !== "draining") {
|
|
@@ -309,7 +313,10 @@ var Draft11SessionFSM = (_class = class {
|
|
|
309
313
|
}
|
|
310
314
|
this._phase = "draining";
|
|
311
315
|
const goaway = message;
|
|
312
|
-
sideEffects.push({
|
|
316
|
+
sideEffects.push({
|
|
317
|
+
type: "session-draining",
|
|
318
|
+
goAwayUri: goaway.new_session_uri
|
|
319
|
+
});
|
|
313
320
|
return { ok: true, phase: this._phase, sideEffects };
|
|
314
321
|
}
|
|
315
322
|
requireReady(msgType) {
|
|
@@ -367,7 +374,10 @@ var Draft11SessionFSM = (_class = class {
|
|
|
367
374
|
)
|
|
368
375
|
};
|
|
369
376
|
this._subscriptions.set(ok.request_id, { ...existing, phase: "active" });
|
|
370
|
-
sideEffects.push({
|
|
377
|
+
sideEffects.push({
|
|
378
|
+
type: "subscription-activated",
|
|
379
|
+
subscribeId: ok.request_id
|
|
380
|
+
});
|
|
371
381
|
return { ok: true, phase: this._phase, sideEffects };
|
|
372
382
|
}
|
|
373
383
|
handleSubscribeError(message, sideEffects) {
|
|
@@ -491,7 +501,10 @@ var Draft11SessionFSM = (_class = class {
|
|
|
491
501
|
const ann = message;
|
|
492
502
|
const nsKey = ann.track_namespace.join("/");
|
|
493
503
|
this._requestIds.add(ann.request_id);
|
|
494
|
-
this._announces.set(nsKey, {
|
|
504
|
+
this._announces.set(nsKey, {
|
|
505
|
+
namespace: ann.track_namespace,
|
|
506
|
+
phase: "pending"
|
|
507
|
+
});
|
|
495
508
|
return { ok: true, phase: this._phase, sideEffects };
|
|
496
509
|
}
|
|
497
510
|
handleAnnounceOk(message, sideEffects) {
|
|
@@ -518,7 +531,10 @@ var Draft11SessionFSM = (_class = class {
|
|
|
518
531
|
const existing = this._announces.get(nsKey);
|
|
519
532
|
if (existing) {
|
|
520
533
|
this._announces.delete(nsKey);
|
|
521
|
-
sideEffects.push({
|
|
534
|
+
sideEffects.push({
|
|
535
|
+
type: "announce-ended",
|
|
536
|
+
namespace: unann.track_namespace
|
|
537
|
+
});
|
|
522
538
|
}
|
|
523
539
|
return { ok: true, phase: this._phase, sideEffects };
|
|
524
540
|
}
|
|
@@ -530,7 +546,10 @@ var Draft11SessionFSM = (_class = class {
|
|
|
530
546
|
const existing = this._announces.get(nsKey);
|
|
531
547
|
if (existing) {
|
|
532
548
|
this._announces.delete(nsKey);
|
|
533
|
-
sideEffects.push({
|
|
549
|
+
sideEffects.push({
|
|
550
|
+
type: "announce-ended",
|
|
551
|
+
namespace: cancel.track_namespace
|
|
552
|
+
});
|
|
534
553
|
}
|
|
535
554
|
return { ok: true, phase: this._phase, sideEffects };
|
|
536
555
|
}
|
|
@@ -542,7 +561,10 @@ var Draft11SessionFSM = (_class = class {
|
|
|
542
561
|
const dupErr = this.checkDuplicateRequestId(fetch.request_id, message.type);
|
|
543
562
|
if (dupErr) return { ok: false, violation: dupErr };
|
|
544
563
|
this._requestIds.add(fetch.request_id);
|
|
545
|
-
this._fetches.set(fetch.request_id, {
|
|
564
|
+
this._fetches.set(fetch.request_id, {
|
|
565
|
+
requestId: fetch.request_id,
|
|
566
|
+
phase: "pending"
|
|
567
|
+
});
|
|
546
568
|
return { ok: true, phase: this._phase, sideEffects };
|
|
547
569
|
}
|
|
548
570
|
handleFetchOk(message, sideEffects) {
|
|
@@ -619,7 +641,11 @@ var Draft11SessionFSM = (_class = class {
|
|
|
619
641
|
)
|
|
620
642
|
};
|
|
621
643
|
this._fetches.set(cancel.request_id, { ...existing, phase: "cancelled" });
|
|
622
|
-
sideEffects.push({
|
|
644
|
+
sideEffects.push({
|
|
645
|
+
type: "fetch-ended",
|
|
646
|
+
requestId: cancel.request_id,
|
|
647
|
+
reason: "cancelled"
|
|
648
|
+
});
|
|
623
649
|
return { ok: true, phase: this._phase, sideEffects };
|
|
624
650
|
}
|
|
625
651
|
// ─── Subscribe announces lifecycle ───
|
|
@@ -682,8 +708,8 @@ var Draft11SessionFSM = (_class = class {
|
|
|
682
708
|
}, _class);
|
|
683
709
|
|
|
684
710
|
// src/drafts/draft11/session.ts
|
|
685
|
-
function createDraft11SessionState(
|
|
686
|
-
return new Draft11SessionFSM(
|
|
711
|
+
function createDraft11SessionState(role) {
|
|
712
|
+
return new Draft11SessionFSM(role);
|
|
687
713
|
}
|
|
688
714
|
|
|
689
715
|
|
|
@@ -280,7 +280,11 @@ var Draft15SessionFSM = (_class = class {
|
|
|
280
280
|
};
|
|
281
281
|
}
|
|
282
282
|
this._phase = "ready";
|
|
283
|
-
return {
|
|
283
|
+
return {
|
|
284
|
+
ok: true,
|
|
285
|
+
phase: this._phase,
|
|
286
|
+
sideEffects: [{ type: "session-ready" }]
|
|
287
|
+
};
|
|
284
288
|
}
|
|
285
289
|
handleGoAway(message, sideEffects) {
|
|
286
290
|
if (this._phase !== "ready" && this._phase !== "draining") {
|
|
@@ -296,7 +300,10 @@ var Draft15SessionFSM = (_class = class {
|
|
|
296
300
|
}
|
|
297
301
|
this._phase = "draining";
|
|
298
302
|
const goaway = message;
|
|
299
|
-
sideEffects.push({
|
|
303
|
+
sideEffects.push({
|
|
304
|
+
type: "session-draining",
|
|
305
|
+
goAwayUri: goaway.new_session_uri
|
|
306
|
+
});
|
|
300
307
|
return { ok: true, phase: this._phase, sideEffects };
|
|
301
308
|
}
|
|
302
309
|
requireReady(msgType) {
|
|
@@ -353,7 +360,10 @@ var Draft15SessionFSM = (_class = class {
|
|
|
353
360
|
)
|
|
354
361
|
};
|
|
355
362
|
this._subscriptions.set(ok.request_id, { ...existing, phase: "active" });
|
|
356
|
-
sideEffects.push({
|
|
363
|
+
sideEffects.push({
|
|
364
|
+
type: "subscription-activated",
|
|
365
|
+
subscribeId: ok.request_id
|
|
366
|
+
});
|
|
357
367
|
return { ok: true, phase: this._phase, sideEffects };
|
|
358
368
|
}
|
|
359
369
|
handleSubscribeUpdate(message, sideEffects) {
|
|
@@ -418,7 +428,10 @@ var Draft15SessionFSM = (_class = class {
|
|
|
418
428
|
const dupErr = this.checkDuplicateRequestId(pub.request_id, message.type);
|
|
419
429
|
if (dupErr) return { ok: false, violation: dupErr };
|
|
420
430
|
this._requestIds.add(pub.request_id);
|
|
421
|
-
this._publishes.set(pub.request_id, {
|
|
431
|
+
this._publishes.set(pub.request_id, {
|
|
432
|
+
requestId: pub.request_id,
|
|
433
|
+
phase: "pending"
|
|
434
|
+
});
|
|
422
435
|
return { ok: true, phase: this._phase, sideEffects };
|
|
423
436
|
}
|
|
424
437
|
handlePublishOk(message, sideEffects) {
|
|
@@ -484,7 +497,10 @@ var Draft15SessionFSM = (_class = class {
|
|
|
484
497
|
const dupErr = this.checkDuplicateRequestId(fetch.request_id, message.type);
|
|
485
498
|
if (dupErr) return { ok: false, violation: dupErr };
|
|
486
499
|
this._requestIds.add(fetch.request_id);
|
|
487
|
-
this._fetches.set(fetch.request_id, {
|
|
500
|
+
this._fetches.set(fetch.request_id, {
|
|
501
|
+
requestId: fetch.request_id,
|
|
502
|
+
phase: "pending"
|
|
503
|
+
});
|
|
488
504
|
return { ok: true, phase: this._phase, sideEffects };
|
|
489
505
|
}
|
|
490
506
|
handleFetchOk(message, sideEffects) {
|
|
@@ -536,7 +552,11 @@ var Draft15SessionFSM = (_class = class {
|
|
|
536
552
|
)
|
|
537
553
|
};
|
|
538
554
|
this._fetches.set(cancel.request_id, { ...existing, phase: "cancelled" });
|
|
539
|
-
sideEffects.push({
|
|
555
|
+
sideEffects.push({
|
|
556
|
+
type: "fetch-ended",
|
|
557
|
+
requestId: cancel.request_id,
|
|
558
|
+
reason: "cancelled"
|
|
559
|
+
});
|
|
540
560
|
return { ok: true, phase: this._phase, sideEffects };
|
|
541
561
|
}
|
|
542
562
|
// REQUEST_ERROR replaces subscribe_error, publish_error, fetch_error, etc.
|
|
@@ -625,8 +645,8 @@ var Draft15SessionFSM = (_class = class {
|
|
|
625
645
|
}, _class);
|
|
626
646
|
|
|
627
647
|
// src/drafts/draft15/session.ts
|
|
628
|
-
function createDraft15SessionState(
|
|
629
|
-
return new Draft15SessionFSM(
|
|
648
|
+
function createDraft15SessionState(role) {
|
|
649
|
+
return new Draft15SessionFSM(role);
|
|
630
650
|
}
|
|
631
651
|
|
|
632
652
|
|
|
@@ -212,8 +212,30 @@ var BufferWriter = class {
|
|
|
212
212
|
}
|
|
213
213
|
};
|
|
214
214
|
|
|
215
|
+
// src/core/hex.ts
|
|
216
|
+
var HEX_TABLE = /* @__PURE__ */ Array.from(
|
|
217
|
+
{ length: 256 },
|
|
218
|
+
(_, i) => i.toString(16).padStart(2, "0")
|
|
219
|
+
);
|
|
220
|
+
function bytesToHex(bytes) {
|
|
221
|
+
const parts = new Array(bytes.byteLength);
|
|
222
|
+
for (let i = 0; i < bytes.byteLength; i++) {
|
|
223
|
+
parts[i] = HEX_TABLE[bytes[i]];
|
|
224
|
+
}
|
|
225
|
+
return parts.join("");
|
|
226
|
+
}
|
|
227
|
+
function hexToBytes(hex) {
|
|
228
|
+
const bytes = new Uint8Array(hex.length / 2);
|
|
229
|
+
for (let i = 0; i < hex.length; i += 2) {
|
|
230
|
+
bytes[i / 2] = Number.parseInt(hex.substring(i, i + 2), 16);
|
|
231
|
+
}
|
|
232
|
+
return bytes;
|
|
233
|
+
}
|
|
215
234
|
|
|
216
235
|
|
|
217
236
|
|
|
218
237
|
|
|
219
|
-
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
exports.DecodeError = DecodeError; exports.BufferReader = BufferReader; exports.BufferWriter = BufferWriter; exports.bytesToHex = bytesToHex; exports.hexToBytes = hexToBytes;
|
|
@@ -306,7 +306,11 @@ var Draft12SessionFSM = class {
|
|
|
306
306
|
};
|
|
307
307
|
}
|
|
308
308
|
this._phase = "ready";
|
|
309
|
-
return {
|
|
309
|
+
return {
|
|
310
|
+
ok: true,
|
|
311
|
+
phase: this._phase,
|
|
312
|
+
sideEffects: [{ type: "session-ready" }]
|
|
313
|
+
};
|
|
310
314
|
}
|
|
311
315
|
handleGoAway(message, sideEffects) {
|
|
312
316
|
if (this._phase !== "ready" && this._phase !== "draining") {
|
|
@@ -322,7 +326,10 @@ var Draft12SessionFSM = class {
|
|
|
322
326
|
}
|
|
323
327
|
this._phase = "draining";
|
|
324
328
|
const goaway = message;
|
|
325
|
-
sideEffects.push({
|
|
329
|
+
sideEffects.push({
|
|
330
|
+
type: "session-draining",
|
|
331
|
+
goAwayUri: goaway.new_session_uri
|
|
332
|
+
});
|
|
326
333
|
return { ok: true, phase: this._phase, sideEffects };
|
|
327
334
|
}
|
|
328
335
|
requireReady(msgType) {
|
|
@@ -380,7 +387,10 @@ var Draft12SessionFSM = class {
|
|
|
380
387
|
)
|
|
381
388
|
};
|
|
382
389
|
this._subscriptions.set(ok.request_id, { ...existing, phase: "active" });
|
|
383
|
-
sideEffects.push({
|
|
390
|
+
sideEffects.push({
|
|
391
|
+
type: "subscription-activated",
|
|
392
|
+
subscribeId: ok.request_id
|
|
393
|
+
});
|
|
384
394
|
return { ok: true, phase: this._phase, sideEffects };
|
|
385
395
|
}
|
|
386
396
|
handleSubscribeError(message, sideEffects) {
|
|
@@ -504,7 +514,10 @@ var Draft12SessionFSM = class {
|
|
|
504
514
|
const ann = message;
|
|
505
515
|
const nsKey = ann.track_namespace.join("/");
|
|
506
516
|
this._requestIds.add(ann.request_id);
|
|
507
|
-
this._announces.set(nsKey, {
|
|
517
|
+
this._announces.set(nsKey, {
|
|
518
|
+
namespace: ann.track_namespace,
|
|
519
|
+
phase: "pending"
|
|
520
|
+
});
|
|
508
521
|
return { ok: true, phase: this._phase, sideEffects };
|
|
509
522
|
}
|
|
510
523
|
handleAnnounceOk(message, sideEffects) {
|
|
@@ -531,7 +544,10 @@ var Draft12SessionFSM = class {
|
|
|
531
544
|
const existing = this._announces.get(nsKey);
|
|
532
545
|
if (existing) {
|
|
533
546
|
this._announces.delete(nsKey);
|
|
534
|
-
sideEffects.push({
|
|
547
|
+
sideEffects.push({
|
|
548
|
+
type: "announce-ended",
|
|
549
|
+
namespace: unann.track_namespace
|
|
550
|
+
});
|
|
535
551
|
}
|
|
536
552
|
return { ok: true, phase: this._phase, sideEffects };
|
|
537
553
|
}
|
|
@@ -543,7 +559,10 @@ var Draft12SessionFSM = class {
|
|
|
543
559
|
const existing = this._announces.get(nsKey);
|
|
544
560
|
if (existing) {
|
|
545
561
|
this._announces.delete(nsKey);
|
|
546
|
-
sideEffects.push({
|
|
562
|
+
sideEffects.push({
|
|
563
|
+
type: "announce-ended",
|
|
564
|
+
namespace: cancel.track_namespace
|
|
565
|
+
});
|
|
547
566
|
}
|
|
548
567
|
return { ok: true, phase: this._phase, sideEffects };
|
|
549
568
|
}
|
|
@@ -581,7 +600,10 @@ var Draft12SessionFSM = class {
|
|
|
581
600
|
const dupErr = this.checkDuplicateRequestId(fetch.request_id, message.type);
|
|
582
601
|
if (dupErr) return { ok: false, violation: dupErr };
|
|
583
602
|
this._requestIds.add(fetch.request_id);
|
|
584
|
-
this._fetches.set(fetch.request_id, {
|
|
603
|
+
this._fetches.set(fetch.request_id, {
|
|
604
|
+
requestId: fetch.request_id,
|
|
605
|
+
phase: "pending"
|
|
606
|
+
});
|
|
585
607
|
return { ok: true, phase: this._phase, sideEffects };
|
|
586
608
|
}
|
|
587
609
|
handleFetchOk(message, sideEffects) {
|
|
@@ -658,7 +680,11 @@ var Draft12SessionFSM = class {
|
|
|
658
680
|
)
|
|
659
681
|
};
|
|
660
682
|
this._fetches.set(cancel.request_id, { ...existing, phase: "cancelled" });
|
|
661
|
-
sideEffects.push({
|
|
683
|
+
sideEffects.push({
|
|
684
|
+
type: "fetch-ended",
|
|
685
|
+
requestId: cancel.request_id,
|
|
686
|
+
reason: "cancelled"
|
|
687
|
+
});
|
|
662
688
|
return { ok: true, phase: this._phase, sideEffects };
|
|
663
689
|
}
|
|
664
690
|
// ─── Subscribe announces lifecycle ───
|
|
@@ -721,8 +747,8 @@ var Draft12SessionFSM = class {
|
|
|
721
747
|
};
|
|
722
748
|
|
|
723
749
|
// src/drafts/draft12/session.ts
|
|
724
|
-
function createDraft12SessionState(
|
|
725
|
-
return new Draft12SessionFSM(
|
|
750
|
+
function createDraft12SessionState(role) {
|
|
751
|
+
return new Draft12SessionFSM(role);
|
|
726
752
|
}
|
|
727
753
|
|
|
728
754
|
export {
|