@moqtap/codec 0.2.3 → 0.3.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/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/draft7-session.cjs +2 -2
- package/dist/draft7-session.d.cts +6 -5
- package/dist/draft7-session.d.ts +6 -5
- package/dist/draft7-session.js +1 -1
- package/dist/draft7.cjs +71 -14
- package/dist/draft7.d.cts +53 -134
- package/dist/draft7.d.ts +53 -134
- package/dist/draft7.js +76 -19
- package/dist/draft8-session.cjs +2 -2
- package/dist/draft8-session.d.cts +6 -6
- package/dist/draft8-session.d.ts +6 -6
- package/dist/draft8-session.js +1 -1
- package/dist/draft8.cjs +8 -5
- package/dist/draft8.d.cts +14 -12
- package/dist/draft8.d.ts +14 -12
- package/dist/draft8.js +7 -4
- package/dist/draft9-session.cjs +2 -2
- package/dist/draft9-session.d.cts +6 -6
- package/dist/draft9-session.d.ts +6 -6
- package/dist/draft9-session.js +1 -1
- package/dist/draft9.cjs +8 -5
- package/dist/draft9.d.cts +14 -12
- package/dist/draft9.d.ts +14 -12
- package/dist/draft9.js +7 -4
- 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 +28 -9
- package/dist/session.d.ts +28 -9
- 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.ts → types-0IWbU9Z_.d.cts} +36 -36
- package/dist/{types-B0FT5Qs2.d.cts → 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.ts → types-Br7fm2mf.d.cts} +48 -26
- package/dist/{types-8gUGeMgs.d.cts → 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 +62 -23
- 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/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 @@ import {
|
|
|
9
9
|
function violation(code, message, currentPhase, offendingMessage) {
|
|
10
10
|
return { code, message, currentPhase, offendingMessage };
|
|
11
11
|
}
|
|
12
|
-
var
|
|
12
|
+
var Draft07SessionFSM = class {
|
|
13
13
|
_phase = "idle";
|
|
14
14
|
_role;
|
|
15
15
|
_subscriptions = /* @__PURE__ */ new Map();
|
|
@@ -174,7 +174,11 @@ var SessionFSM = 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 {
|
|
|
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 {
|
|
|
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 {
|
|
|
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 {
|
|
|
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 {
|
|
|
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 {
|
|
|
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 {
|
|
|
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 {
|
|
|
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 {
|
|
|
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 {
|
|
|
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 {
|
|
|
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 {
|
|
|
432
460
|
};
|
|
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
|
export {
|