@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
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import type { SessionState,
|
|
2
|
-
import {
|
|
1
|
+
import type { SessionState, SessionStateOptionsRole } from '../../core/session-types.js'
|
|
2
|
+
import { Draft07SessionFSM } from './session-fsm.js'
|
|
3
|
+
import type { Draft07Message, Draft07MessageType } from './types.js'
|
|
3
4
|
|
|
4
|
-
export function createDraft07SessionState(
|
|
5
|
-
|
|
5
|
+
export function createDraft07SessionState(
|
|
6
|
+
role: SessionStateOptionsRole,
|
|
7
|
+
): SessionState<Draft07Message, Draft07MessageType> {
|
|
8
|
+
return new Draft07SessionFSM(role)
|
|
6
9
|
}
|
|
7
10
|
|
|
8
11
|
export type {
|
|
@@ -12,10 +15,9 @@ export type {
|
|
|
12
15
|
ProtocolViolationCode,
|
|
13
16
|
SessionPhase,
|
|
14
17
|
SessionState,
|
|
15
|
-
SessionStateOptions,
|
|
16
18
|
SideEffect,
|
|
17
19
|
SubscriptionPhase,
|
|
18
20
|
SubscriptionState,
|
|
19
21
|
TransitionResult,
|
|
20
22
|
ValidationResult,
|
|
21
|
-
} from
|
|
23
|
+
} from '../../core/session-types.js'
|
|
@@ -1,72 +1,406 @@
|
|
|
1
|
-
// Draft-07
|
|
2
|
-
//
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
readonly
|
|
7
|
-
readonly
|
|
8
|
-
readonly
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
readonly
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
export interface
|
|
67
|
-
readonly type:
|
|
68
|
-
readonly
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
export
|
|
1
|
+
// Draft-07 message types
|
|
2
|
+
// Field names use snake_case to match test vector JSON
|
|
3
|
+
|
|
4
|
+
// Unknown parameter for passthrough
|
|
5
|
+
export interface UnknownParam {
|
|
6
|
+
readonly id: string // e.g. "0x21"
|
|
7
|
+
readonly length: number
|
|
8
|
+
readonly raw_hex: string
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
// Setup parameters (ROLE, PATH, MAX_SUBSCRIBE_ID)
|
|
12
|
+
export interface Draft07SetupParams {
|
|
13
|
+
role?: bigint // 0x00
|
|
14
|
+
path?: string // 0x01
|
|
15
|
+
max_subscribe_id?: bigint // 0x02
|
|
16
|
+
unknown?: UnknownParam[]
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// Version-specific parameters
|
|
20
|
+
export interface Draft07Params {
|
|
21
|
+
authorization_info?: string // 0x02
|
|
22
|
+
delivery_timeout?: bigint // 0x03
|
|
23
|
+
max_cache_duration?: bigint // 0x04
|
|
24
|
+
unknown?: UnknownParam[]
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// All Draft-07 message type tags
|
|
28
|
+
export type Draft07MessageType =
|
|
29
|
+
| 'client_setup'
|
|
30
|
+
| 'server_setup'
|
|
31
|
+
| 'subscribe'
|
|
32
|
+
| 'subscribe_ok'
|
|
33
|
+
| 'subscribe_error'
|
|
34
|
+
| 'subscribe_done'
|
|
35
|
+
| 'subscribe_update'
|
|
36
|
+
| 'unsubscribe'
|
|
37
|
+
| 'announce'
|
|
38
|
+
| 'announce_ok'
|
|
39
|
+
| 'announce_error'
|
|
40
|
+
| 'announce_cancel'
|
|
41
|
+
| 'unannounce'
|
|
42
|
+
| 'track_status_request'
|
|
43
|
+
| 'track_status'
|
|
44
|
+
| 'object_stream'
|
|
45
|
+
| 'object_datagram'
|
|
46
|
+
| 'stream_header_track'
|
|
47
|
+
| 'stream_header_group'
|
|
48
|
+
| 'stream_header_subgroup'
|
|
49
|
+
| 'goaway'
|
|
50
|
+
| 'subscribe_announces'
|
|
51
|
+
| 'subscribe_announces_ok'
|
|
52
|
+
| 'subscribe_announces_error'
|
|
53
|
+
| 'unsubscribe_announces'
|
|
54
|
+
| 'max_subscribe_id'
|
|
55
|
+
| 'fetch'
|
|
56
|
+
| 'fetch_ok'
|
|
57
|
+
| 'fetch_error'
|
|
58
|
+
| 'fetch_cancel'
|
|
59
|
+
|
|
60
|
+
// Base message interface
|
|
61
|
+
export interface Draft07BaseMessage {
|
|
62
|
+
readonly type: Draft07MessageType
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Setup messages
|
|
66
|
+
export interface ClientSetup extends Draft07BaseMessage {
|
|
67
|
+
readonly type: 'client_setup'
|
|
68
|
+
readonly supported_versions: bigint[]
|
|
69
|
+
readonly parameters: Draft07SetupParams
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export interface ServerSetup extends Draft07BaseMessage {
|
|
73
|
+
readonly type: 'server_setup'
|
|
74
|
+
readonly selected_version: bigint
|
|
75
|
+
readonly parameters: Draft07SetupParams
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Subscribe messages
|
|
79
|
+
export interface Subscribe extends Draft07BaseMessage {
|
|
80
|
+
readonly type: 'subscribe'
|
|
81
|
+
readonly subscribe_id: bigint
|
|
82
|
+
readonly track_alias: bigint
|
|
83
|
+
readonly track_namespace: string[]
|
|
84
|
+
readonly track_name: string
|
|
85
|
+
readonly subscriber_priority: number
|
|
86
|
+
readonly group_order: number // uint8: 0=original, 1=ascending, 2=descending
|
|
87
|
+
readonly filter_type: bigint // varint: 1=latest_group, 2=latest_object, 3=absolute_start, 4=absolute_range
|
|
88
|
+
readonly start_group?: bigint
|
|
89
|
+
readonly start_object?: bigint
|
|
90
|
+
readonly end_group?: bigint
|
|
91
|
+
readonly end_object?: bigint
|
|
92
|
+
readonly parameters: Draft07Params
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export interface SubscribeOk extends Draft07BaseMessage {
|
|
96
|
+
readonly type: 'subscribe_ok'
|
|
97
|
+
readonly subscribe_id: bigint
|
|
98
|
+
readonly expires: bigint
|
|
99
|
+
readonly group_order: number // uint8
|
|
100
|
+
readonly content_exists: number // uint8
|
|
101
|
+
readonly largest_group_id?: bigint
|
|
102
|
+
readonly largest_object_id?: bigint
|
|
103
|
+
readonly parameters: Draft07Params
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export interface SubscribeError extends Draft07BaseMessage {
|
|
107
|
+
readonly type: 'subscribe_error'
|
|
108
|
+
readonly subscribe_id: bigint
|
|
109
|
+
readonly error_code: bigint
|
|
110
|
+
readonly reason_phrase: string
|
|
111
|
+
readonly track_alias: bigint
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
export interface SubscribeDone extends Draft07BaseMessage {
|
|
115
|
+
readonly type: 'subscribe_done'
|
|
116
|
+
readonly subscribe_id: bigint
|
|
117
|
+
readonly status_code: bigint
|
|
118
|
+
readonly reason_phrase: string
|
|
119
|
+
readonly content_exists: number // uint8
|
|
120
|
+
readonly final_group?: bigint
|
|
121
|
+
readonly final_object?: bigint
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export interface SubscribeUpdate extends Draft07BaseMessage {
|
|
125
|
+
readonly type: 'subscribe_update'
|
|
126
|
+
readonly subscribe_id: bigint
|
|
127
|
+
readonly start_group: bigint
|
|
128
|
+
readonly start_object: bigint
|
|
129
|
+
readonly end_group: bigint
|
|
130
|
+
readonly end_object: bigint
|
|
131
|
+
readonly subscriber_priority: number
|
|
132
|
+
readonly parameters: Draft07Params
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export interface Unsubscribe extends Draft07BaseMessage {
|
|
136
|
+
readonly type: 'unsubscribe'
|
|
137
|
+
readonly subscribe_id: bigint
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// Announce messages
|
|
141
|
+
export interface Announce extends Draft07BaseMessage {
|
|
142
|
+
readonly type: 'announce'
|
|
143
|
+
readonly track_namespace: string[]
|
|
144
|
+
readonly parameters: Draft07Params
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
export interface AnnounceOk extends Draft07BaseMessage {
|
|
148
|
+
readonly type: 'announce_ok'
|
|
149
|
+
readonly track_namespace: string[]
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export interface AnnounceError extends Draft07BaseMessage {
|
|
153
|
+
readonly type: 'announce_error'
|
|
154
|
+
readonly track_namespace: string[]
|
|
155
|
+
readonly error_code: bigint
|
|
156
|
+
readonly reason_phrase: string
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export interface AnnounceCancel extends Draft07BaseMessage {
|
|
160
|
+
readonly type: 'announce_cancel'
|
|
161
|
+
readonly track_namespace: string[]
|
|
162
|
+
readonly error_code: bigint
|
|
163
|
+
readonly reason_phrase: string
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
export interface Unannounce extends Draft07BaseMessage {
|
|
167
|
+
readonly type: 'unannounce'
|
|
168
|
+
readonly track_namespace: string[]
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// Track status
|
|
172
|
+
export interface TrackStatusRequest extends Draft07BaseMessage {
|
|
173
|
+
readonly type: 'track_status_request'
|
|
174
|
+
readonly track_namespace: string[]
|
|
175
|
+
readonly track_name: string
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
export interface TrackStatus extends Draft07BaseMessage {
|
|
179
|
+
readonly type: 'track_status'
|
|
180
|
+
readonly track_namespace: string[]
|
|
181
|
+
readonly track_name: string
|
|
182
|
+
readonly status_code: bigint
|
|
183
|
+
readonly last_group_id: bigint
|
|
184
|
+
readonly last_object_id: bigint
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// Object/stream messages
|
|
188
|
+
export interface ObjectStream extends Draft07BaseMessage {
|
|
189
|
+
readonly type: 'object_stream'
|
|
190
|
+
readonly track_alias: bigint
|
|
191
|
+
readonly group_id: bigint
|
|
192
|
+
readonly object_id: bigint
|
|
193
|
+
readonly publisher_priority: number
|
|
194
|
+
readonly object_status?: number
|
|
195
|
+
readonly payload: Uint8Array
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
export interface ObjectDatagram extends Draft07BaseMessage {
|
|
199
|
+
readonly type: 'object_datagram'
|
|
200
|
+
readonly track_alias: bigint
|
|
201
|
+
readonly group_id: bigint
|
|
202
|
+
readonly object_id: bigint
|
|
203
|
+
readonly publisher_priority: number
|
|
204
|
+
readonly object_status?: number
|
|
205
|
+
readonly payload: Uint8Array
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
export interface StreamHeaderTrack extends Draft07BaseMessage {
|
|
209
|
+
readonly type: 'stream_header_track'
|
|
210
|
+
readonly track_alias: bigint
|
|
211
|
+
readonly publisher_priority: number
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
export interface StreamHeaderGroup extends Draft07BaseMessage {
|
|
215
|
+
readonly type: 'stream_header_group'
|
|
216
|
+
readonly track_alias: bigint
|
|
217
|
+
readonly group_id: bigint
|
|
218
|
+
readonly publisher_priority: number
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
export interface StreamHeaderSubgroup extends Draft07BaseMessage {
|
|
222
|
+
readonly type: 'stream_header_subgroup'
|
|
223
|
+
readonly track_alias: bigint
|
|
224
|
+
readonly group_id: bigint
|
|
225
|
+
readonly subgroup_id: bigint
|
|
226
|
+
readonly publisher_priority: number
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// GoAway
|
|
230
|
+
export interface GoAway extends Draft07BaseMessage {
|
|
231
|
+
readonly type: 'goaway'
|
|
232
|
+
readonly new_session_uri: string
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
// Subscribe Announces
|
|
236
|
+
export interface SubscribeAnnounces extends Draft07BaseMessage {
|
|
237
|
+
readonly type: 'subscribe_announces'
|
|
238
|
+
readonly track_namespace_prefix: string[]
|
|
239
|
+
readonly parameters: Draft07Params
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
export interface SubscribeAnnouncesOk extends Draft07BaseMessage {
|
|
243
|
+
readonly type: 'subscribe_announces_ok'
|
|
244
|
+
readonly track_namespace_prefix: string[]
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
export interface SubscribeAnnouncesError extends Draft07BaseMessage {
|
|
248
|
+
readonly type: 'subscribe_announces_error'
|
|
249
|
+
readonly track_namespace_prefix: string[]
|
|
250
|
+
readonly error_code: bigint
|
|
251
|
+
readonly reason_phrase: string
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
// Unsubscribe Announces
|
|
255
|
+
export interface UnsubscribeAnnounces extends Draft07BaseMessage {
|
|
256
|
+
readonly type: 'unsubscribe_announces'
|
|
257
|
+
readonly track_namespace_prefix: string[]
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
// Max Subscribe ID
|
|
261
|
+
export interface MaxSubscribeId extends Draft07BaseMessage {
|
|
262
|
+
readonly type: 'max_subscribe_id'
|
|
263
|
+
readonly subscribe_id: bigint
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
// Fetch
|
|
267
|
+
export interface Fetch extends Draft07BaseMessage {
|
|
268
|
+
readonly type: 'fetch'
|
|
269
|
+
readonly subscribe_id: bigint
|
|
270
|
+
readonly track_namespace: string[]
|
|
271
|
+
readonly track_name: string
|
|
272
|
+
readonly subscriber_priority: number
|
|
273
|
+
readonly group_order: number // uint8
|
|
274
|
+
readonly start_group: bigint
|
|
275
|
+
readonly start_object: bigint
|
|
276
|
+
readonly end_group: bigint
|
|
277
|
+
readonly end_object: bigint
|
|
278
|
+
readonly parameters: Draft07Params
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
export interface FetchOk extends Draft07BaseMessage {
|
|
282
|
+
readonly type: 'fetch_ok'
|
|
283
|
+
readonly subscribe_id: bigint
|
|
284
|
+
readonly group_order: number // uint8
|
|
285
|
+
readonly end_of_track: number // uint8
|
|
286
|
+
readonly largest_group_id: bigint
|
|
287
|
+
readonly largest_object_id: bigint
|
|
288
|
+
readonly parameters: Draft07Params
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
export interface FetchError extends Draft07BaseMessage {
|
|
292
|
+
readonly type: 'fetch_error'
|
|
293
|
+
readonly subscribe_id: bigint
|
|
294
|
+
readonly error_code: bigint
|
|
295
|
+
readonly reason_phrase: string
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
export interface FetchCancel extends Draft07BaseMessage {
|
|
299
|
+
readonly type: 'fetch_cancel'
|
|
300
|
+
readonly subscribe_id: bigint
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
// Union type of all Draft-07 messages
|
|
304
|
+
export type Draft07Message =
|
|
305
|
+
| ClientSetup
|
|
306
|
+
| ServerSetup
|
|
307
|
+
| Subscribe
|
|
308
|
+
| SubscribeOk
|
|
309
|
+
| SubscribeError
|
|
310
|
+
| SubscribeDone
|
|
311
|
+
| SubscribeUpdate
|
|
312
|
+
| Unsubscribe
|
|
313
|
+
| Announce
|
|
314
|
+
| AnnounceOk
|
|
315
|
+
| AnnounceError
|
|
316
|
+
| AnnounceCancel
|
|
317
|
+
| Unannounce
|
|
318
|
+
| TrackStatusRequest
|
|
319
|
+
| TrackStatus
|
|
320
|
+
| ObjectStream
|
|
321
|
+
| ObjectDatagram
|
|
322
|
+
| StreamHeaderTrack
|
|
323
|
+
| StreamHeaderGroup
|
|
324
|
+
| StreamHeaderSubgroup
|
|
325
|
+
| GoAway
|
|
326
|
+
| SubscribeAnnounces
|
|
327
|
+
| SubscribeAnnouncesOk
|
|
328
|
+
| SubscribeAnnouncesError
|
|
329
|
+
| UnsubscribeAnnounces
|
|
330
|
+
| MaxSubscribeId
|
|
331
|
+
| Fetch
|
|
332
|
+
| FetchOk
|
|
333
|
+
| FetchError
|
|
334
|
+
| FetchCancel
|
|
335
|
+
|
|
336
|
+
// Draft-07 data stream types
|
|
337
|
+
|
|
338
|
+
export interface ObjectPayload {
|
|
339
|
+
readonly type: 'object'
|
|
340
|
+
readonly objectId: bigint
|
|
341
|
+
readonly payloadLength: number
|
|
342
|
+
readonly status?: bigint
|
|
343
|
+
readonly payload: Uint8Array
|
|
344
|
+
readonly byteOffset: number
|
|
345
|
+
readonly payloadByteOffset: number
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
export interface SubgroupStream {
|
|
349
|
+
readonly type: 'subgroup'
|
|
350
|
+
readonly streamTypeId: 0x04
|
|
351
|
+
readonly trackAlias: bigint
|
|
352
|
+
readonly groupId: bigint
|
|
353
|
+
readonly subgroupId: bigint
|
|
354
|
+
readonly publisherPriority: number
|
|
355
|
+
readonly objects: ObjectPayload[]
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
export interface DatagramObject {
|
|
359
|
+
readonly type: 'datagram'
|
|
360
|
+
readonly streamTypeId: 0x01
|
|
361
|
+
readonly trackAlias: bigint
|
|
362
|
+
readonly groupId: bigint
|
|
363
|
+
readonly objectId: bigint
|
|
364
|
+
readonly publisherPriority: number
|
|
365
|
+
readonly payloadLength: number
|
|
366
|
+
readonly status?: bigint
|
|
367
|
+
readonly payload: Uint8Array
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
export interface FetchObjectPayload {
|
|
371
|
+
readonly type: 'object'
|
|
372
|
+
readonly groupId: bigint
|
|
373
|
+
readonly subgroupId: bigint
|
|
374
|
+
readonly objectId: bigint
|
|
375
|
+
readonly publisherPriority: number
|
|
376
|
+
readonly payloadLength: number
|
|
377
|
+
readonly status?: bigint
|
|
378
|
+
readonly payload: Uint8Array
|
|
379
|
+
readonly byteOffset: number
|
|
380
|
+
readonly payloadByteOffset: number
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
export interface FetchStream {
|
|
384
|
+
readonly type: 'fetch'
|
|
385
|
+
readonly subscribeId: bigint
|
|
386
|
+
readonly objects: FetchObjectPayload[]
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
export type Draft07DataStream = SubgroupStream | DatagramObject | FetchStream
|
|
390
|
+
|
|
391
|
+
// Streaming data stream decoder types
|
|
392
|
+
export interface SubgroupStreamHeader {
|
|
393
|
+
readonly type: 'subgroup_header'
|
|
394
|
+
readonly trackAlias: bigint
|
|
395
|
+
readonly groupId: bigint
|
|
396
|
+
readonly subgroupId: bigint
|
|
397
|
+
readonly publisherPriority: number
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
export interface FetchStreamHeader {
|
|
401
|
+
readonly type: 'fetch_header'
|
|
402
|
+
readonly subscribeId: bigint
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
export type DataStreamHeader = SubgroupStreamHeader | FetchStreamHeader
|
|
406
|
+
export type DataStreamEvent = DataStreamHeader | ObjectPayload
|
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
import { BufferReader } from
|
|
2
|
-
import type { DecodeResult } from
|
|
3
|
-
import { DecodeError } from
|
|
4
|
-
|
|
5
|
-
export function encodeVarInt(value: number | bigint): Uint8Array {
|
|
6
|
-
const v = BigInt(value)
|
|
7
|
-
if (v < 0n) throw new Error(
|
|
8
|
-
|
|
9
|
-
if (v < 0x40n) {
|
|
10
|
-
const buf = new Uint8Array(1)
|
|
11
|
-
buf[0] = Number(v)
|
|
12
|
-
return buf
|
|
13
|
-
}
|
|
14
|
-
if (v < 0x4000n) {
|
|
15
|
-
const buf = new Uint8Array(2)
|
|
16
|
-
const n = Number(v) | 0x4000
|
|
17
|
-
buf[0] = n >> 8
|
|
18
|
-
buf[1] = n & 0xff
|
|
19
|
-
return buf
|
|
20
|
-
}
|
|
21
|
-
if (v < 0x40000000n) {
|
|
22
|
-
const buf = new Uint8Array(4)
|
|
23
|
-
const n = Number(v) | 0x80000000
|
|
24
|
-
buf[0] = (n >>> 24) & 0xff
|
|
25
|
-
buf[1] = (n >>> 16) & 0xff
|
|
26
|
-
buf[2] = (n >>> 8) & 0xff
|
|
27
|
-
buf[3] = n & 0xff
|
|
28
|
-
return buf
|
|
29
|
-
}
|
|
30
|
-
if (v < 0x4000000000000000n) {
|
|
31
|
-
const buf = new Uint8Array(8)
|
|
32
|
-
const tagged = v | 0xc000000000000000n
|
|
33
|
-
const view = new DataView(buf.buffer)
|
|
34
|
-
view.setBigUint64(0, tagged)
|
|
35
|
-
return buf
|
|
36
|
-
}
|
|
37
|
-
throw new Error(
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export function decodeVarInt(bytes: Uint8Array, offset = 0): DecodeResult<bigint> {
|
|
41
|
-
try {
|
|
42
|
-
const reader = new BufferReader(bytes, offset)
|
|
43
|
-
const value = reader.readVarInt()
|
|
44
|
-
return { ok: true, value, bytesRead: reader.offset - offset }
|
|
45
|
-
} catch (e) {
|
|
46
|
-
if (e instanceof DecodeError) {
|
|
47
|
-
return { ok: false, error: e }
|
|
48
|
-
}
|
|
49
|
-
throw e
|
|
50
|
-
}
|
|
51
|
-
}
|
|
1
|
+
import { BufferReader } from '../../core/buffer-reader.js'
|
|
2
|
+
import type { DecodeResult } from '../../core/types.js'
|
|
3
|
+
import { DecodeError } from '../../core/types.js'
|
|
4
|
+
|
|
5
|
+
export function encodeVarInt(value: number | bigint): Uint8Array {
|
|
6
|
+
const v = BigInt(value)
|
|
7
|
+
if (v < 0n) throw new Error('VarInt value must be non-negative')
|
|
8
|
+
|
|
9
|
+
if (v < 0x40n) {
|
|
10
|
+
const buf = new Uint8Array(1)
|
|
11
|
+
buf[0] = Number(v)
|
|
12
|
+
return buf
|
|
13
|
+
}
|
|
14
|
+
if (v < 0x4000n) {
|
|
15
|
+
const buf = new Uint8Array(2)
|
|
16
|
+
const n = Number(v) | 0x4000
|
|
17
|
+
buf[0] = n >> 8
|
|
18
|
+
buf[1] = n & 0xff
|
|
19
|
+
return buf
|
|
20
|
+
}
|
|
21
|
+
if (v < 0x40000000n) {
|
|
22
|
+
const buf = new Uint8Array(4)
|
|
23
|
+
const n = Number(v) | 0x80000000
|
|
24
|
+
buf[0] = (n >>> 24) & 0xff
|
|
25
|
+
buf[1] = (n >>> 16) & 0xff
|
|
26
|
+
buf[2] = (n >>> 8) & 0xff
|
|
27
|
+
buf[3] = n & 0xff
|
|
28
|
+
return buf
|
|
29
|
+
}
|
|
30
|
+
if (v < 0x4000000000000000n) {
|
|
31
|
+
const buf = new Uint8Array(8)
|
|
32
|
+
const tagged = v | 0xc000000000000000n
|
|
33
|
+
const view = new DataView(buf.buffer)
|
|
34
|
+
view.setBigUint64(0, tagged)
|
|
35
|
+
return buf
|
|
36
|
+
}
|
|
37
|
+
throw new Error('VarInt value exceeds 62-bit range')
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export function decodeVarInt(bytes: Uint8Array, offset = 0): DecodeResult<bigint> {
|
|
41
|
+
try {
|
|
42
|
+
const reader = new BufferReader(bytes, offset)
|
|
43
|
+
const value = reader.readVarInt()
|
|
44
|
+
return { ok: true, value, bytesRead: reader.offset - offset }
|
|
45
|
+
} catch (e) {
|
|
46
|
+
if (e instanceof DecodeError) {
|
|
47
|
+
return { ok: false, error: e }
|
|
48
|
+
}
|
|
49
|
+
throw e
|
|
50
|
+
}
|
|
51
|
+
}
|