@moqtap/codec 0.1.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 -0
- package/README.md +95 -0
- package/dist/chunk-23YG7F46.js +764 -0
- package/dist/chunk-2NARXGVA.cjs +194 -0
- package/dist/chunk-3BSZ55L3.cjs +307 -0
- package/dist/chunk-5WFXFLL4.cjs +1185 -0
- package/dist/chunk-DC4L6ZIT.js +307 -0
- package/dist/chunk-GDRGWFEK.cjs +498 -0
- package/dist/chunk-IQPDRQVC.js +1185 -0
- package/dist/chunk-QYG6KGOV.cjs +101 -0
- package/dist/chunk-UOBWHJA5.js +101 -0
- package/dist/chunk-WNTXF3DE.cjs +764 -0
- package/dist/chunk-YBSEOSSP.js +194 -0
- package/dist/chunk-YPXLV5YK.js +498 -0
- package/dist/codec-CTvFtQQI.d.cts +86 -0
- package/dist/codec-qPzfmLNu.d.ts +86 -0
- package/dist/draft14-session.cjs +6 -0
- package/dist/draft14-session.d.cts +8 -0
- package/dist/draft14-session.d.ts +8 -0
- package/dist/draft14-session.js +6 -0
- package/dist/draft14.cjs +121 -0
- package/dist/draft14.d.cts +96 -0
- package/dist/draft14.d.ts +96 -0
- package/dist/draft14.js +121 -0
- package/dist/draft7-session.cjs +7 -0
- package/dist/draft7-session.d.cts +7 -0
- package/dist/draft7-session.d.ts +7 -0
- package/dist/draft7-session.js +7 -0
- package/dist/draft7.cjs +60 -0
- package/dist/draft7.d.cts +72 -0
- package/dist/draft7.d.ts +72 -0
- package/dist/draft7.js +60 -0
- package/dist/index.cjs +40 -0
- package/dist/index.d.cts +40 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.js +40 -0
- package/dist/session-types-B9NIf7_F.d.ts +101 -0
- package/dist/session-types-CCo-oA-d.d.cts +101 -0
- package/dist/session.cjs +27 -0
- package/dist/session.d.cts +24 -0
- package/dist/session.d.ts +24 -0
- package/dist/session.js +27 -0
- package/dist/types-CIk5W10V.d.cts +249 -0
- package/dist/types-CIk5W10V.d.ts +249 -0
- package/dist/types-ClXELFGN.d.cts +241 -0
- package/dist/types-ClXELFGN.d.ts +241 -0
- package/package.json +84 -0
- package/src/core/buffer-reader.ts +107 -0
- package/src/core/buffer-writer.ts +91 -0
- package/src/core/errors.ts +1 -0
- package/src/core/session-types.ts +103 -0
- package/src/core/types.ts +363 -0
- package/src/drafts/draft07/announce-fsm.ts +2 -0
- package/src/drafts/draft07/codec.ts +874 -0
- package/src/drafts/draft07/index.ts +70 -0
- package/src/drafts/draft07/messages.ts +44 -0
- package/src/drafts/draft07/parameters.ts +12 -0
- package/src/drafts/draft07/rules.ts +75 -0
- package/src/drafts/draft07/session-fsm.ts +353 -0
- package/src/drafts/draft07/session.ts +21 -0
- package/src/drafts/draft07/subscription-fsm.ts +3 -0
- package/src/drafts/draft07/varint.ts +23 -0
- package/src/drafts/draft14/codec.ts +1330 -0
- package/src/drafts/draft14/index.ts +132 -0
- package/src/drafts/draft14/messages.ts +76 -0
- package/src/drafts/draft14/rules.ts +70 -0
- package/src/drafts/draft14/session-fsm.ts +480 -0
- package/src/drafts/draft14/session.ts +26 -0
- package/src/drafts/draft14/types.ts +365 -0
- package/src/index.ts +85 -0
- package/src/session.ts +58 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { S as SessionStateOptions, a as SessionState } from './session-types-B9NIf7_F.js';
|
|
2
|
+
export { A as AnnouncePhase, b as AnnounceState, P as ProtocolViolation, d as ProtocolViolationCode, g as SessionPhase, h as SideEffect, i as SubscriptionPhase, j as SubscriptionState, T as TransitionResult, V as ValidationResult } from './session-types-B9NIf7_F.js';
|
|
3
|
+
import './types-ClXELFGN.js';
|
|
4
|
+
|
|
5
|
+
declare function createDraft07SessionState(options: SessionStateOptions): SessionState;
|
|
6
|
+
|
|
7
|
+
export { SessionState, SessionStateOptions, createDraft07SessionState };
|
package/dist/draft7.cjs
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
var _chunkWNTXF3DEcjs = require('./chunk-WNTXF3DE.cjs');
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
var _chunkQYG6KGOVcjs = require('./chunk-QYG6KGOV.cjs');
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
var _chunk2NARXGVAcjs = require('./chunk-2NARXGVA.cjs');
|
|
20
|
+
|
|
21
|
+
// src/drafts/draft07/parameters.ts
|
|
22
|
+
function encodeParameters(params) {
|
|
23
|
+
const writer = new (0, _chunk2NARXGVAcjs.BufferWriter)();
|
|
24
|
+
writer.writeParameters(params);
|
|
25
|
+
return writer.finish();
|
|
26
|
+
}
|
|
27
|
+
function decodeParameters(reader) {
|
|
28
|
+
return reader.readParameters();
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// src/drafts/draft07/index.ts
|
|
32
|
+
var defaultCodec = _chunkWNTXF3DEcjs.createDraft07Codec.call(void 0, );
|
|
33
|
+
function encodeMessage(message) {
|
|
34
|
+
return defaultCodec.encodeMessage(message);
|
|
35
|
+
}
|
|
36
|
+
function decodeMessage(bytes) {
|
|
37
|
+
return defaultCodec.decodeMessage(bytes);
|
|
38
|
+
}
|
|
39
|
+
function createStreamDecoder() {
|
|
40
|
+
return defaultCodec.createStreamDecoder();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
exports.CLIENT_ONLY_MESSAGES = _chunkQYG6KGOVcjs.CLIENT_ONLY_MESSAGES; exports.CONTROL_MESSAGES = _chunkQYG6KGOVcjs.CONTROL_MESSAGES; exports.DATA_MESSAGES = _chunkQYG6KGOVcjs.DATA_MESSAGES; exports.DecodeError = _chunk2NARXGVAcjs.DecodeError; exports.MESSAGE_ID_TO_TYPE = _chunkWNTXF3DEcjs.MESSAGE_ID_TO_TYPE; exports.MESSAGE_TYPE_IDS = _chunkWNTXF3DEcjs.MESSAGE_TYPE_IDS; exports.SERVER_ONLY_MESSAGES = _chunkQYG6KGOVcjs.SERVER_ONLY_MESSAGES; exports.createDraft07Codec = _chunkWNTXF3DEcjs.createDraft07Codec; exports.createStreamDecoder = createStreamDecoder; exports.decodeMessage = decodeMessage; exports.decodeParameters = decodeParameters; exports.decodeVarInt = _chunkWNTXF3DEcjs.decodeVarInt; exports.encodeMessage = encodeMessage; exports.encodeParameters = encodeParameters; exports.encodeVarInt = _chunkWNTXF3DEcjs.encodeVarInt; exports.getLegalIncoming = _chunkQYG6KGOVcjs.getLegalIncoming; exports.getLegalOutgoing = _chunkQYG6KGOVcjs.getLegalOutgoing;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { g as DecodeResult, a as Codec, p as MoqtMessageType, o as MoqtMessage } from './types-ClXELFGN.cjs';
|
|
2
|
+
export { A as Announce, b as AnnounceCancel, c as AnnounceError, d as AnnounceOk, e as ClientSetup, D as DecodeError, f as DecodeErrorCode, F as Fetch, j as FetchCancel, k as FetchError, l as FetchOk, m as FilterType, G as GoAway, n as GroupOrderValue, M as MaxSubscribeId, O as ObjectDatagram, q as ObjectStream, S as ServerSetup, r as StreamHeaderGroup, s as StreamHeaderSubgroup, t as StreamHeaderTrack, u as Subscribe, v as SubscribeAnnounces, w as SubscribeAnnouncesError, x as SubscribeAnnouncesOk, y as SubscribeDone, z as SubscribeError, E as SubscribeOk, H as SubscribeUpdate, T as TrackStatus, I as TrackStatusRequest, U as Unannounce, J as Unsubscribe, K as UnsubscribeAnnounces } from './types-ClXELFGN.cjs';
|
|
3
|
+
|
|
4
|
+
declare function encodeVarInt(value: number | bigint): Uint8Array;
|
|
5
|
+
declare function decodeVarInt(bytes: Uint8Array, offset?: number): DecodeResult<bigint>;
|
|
6
|
+
|
|
7
|
+
declare class BufferReader {
|
|
8
|
+
readonly buffer: Uint8Array;
|
|
9
|
+
private readonly view;
|
|
10
|
+
private pos;
|
|
11
|
+
constructor(buffer: Uint8Array, offset?: number);
|
|
12
|
+
get offset(): number;
|
|
13
|
+
get remaining(): number;
|
|
14
|
+
readUint8(): number;
|
|
15
|
+
readBytes(length: number): Uint8Array;
|
|
16
|
+
readVarInt(): bigint;
|
|
17
|
+
readString(): string;
|
|
18
|
+
readTuple(): string[];
|
|
19
|
+
readParameters(): Map<bigint, Uint8Array>;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
declare function createDraft07Codec(): Codec;
|
|
23
|
+
|
|
24
|
+
declare function encodeParameters(params: Map<bigint, Uint8Array>): Uint8Array;
|
|
25
|
+
declare function decodeParameters(reader: BufferReader): Map<bigint, Uint8Array>;
|
|
26
|
+
|
|
27
|
+
declare const MESSAGE_TYPE_IDS: {
|
|
28
|
+
readonly subscribe_update: 2n;
|
|
29
|
+
readonly subscribe: 3n;
|
|
30
|
+
readonly subscribe_ok: 4n;
|
|
31
|
+
readonly subscribe_error: 5n;
|
|
32
|
+
readonly announce: 6n;
|
|
33
|
+
readonly announce_ok: 7n;
|
|
34
|
+
readonly announce_error: 8n;
|
|
35
|
+
readonly unannounce: 9n;
|
|
36
|
+
readonly unsubscribe: 10n;
|
|
37
|
+
readonly subscribe_done: 11n;
|
|
38
|
+
readonly announce_cancel: 12n;
|
|
39
|
+
readonly track_status_request: 13n;
|
|
40
|
+
readonly track_status: 14n;
|
|
41
|
+
readonly goaway: 16n;
|
|
42
|
+
readonly subscribe_announces: 17n;
|
|
43
|
+
readonly subscribe_announces_ok: 18n;
|
|
44
|
+
readonly subscribe_announces_error: 19n;
|
|
45
|
+
readonly unsubscribe_announces: 20n;
|
|
46
|
+
readonly max_subscribe_id: 21n;
|
|
47
|
+
readonly fetch: 22n;
|
|
48
|
+
readonly fetch_cancel: 23n;
|
|
49
|
+
readonly fetch_ok: 24n;
|
|
50
|
+
readonly fetch_error: 25n;
|
|
51
|
+
readonly client_setup: 64n;
|
|
52
|
+
readonly server_setup: 65n;
|
|
53
|
+
readonly object_stream: 0n;
|
|
54
|
+
readonly object_datagram: 1n;
|
|
55
|
+
readonly stream_header_track: 80n;
|
|
56
|
+
readonly stream_header_group: 81n;
|
|
57
|
+
readonly stream_header_subgroup: 4n;
|
|
58
|
+
};
|
|
59
|
+
declare const MESSAGE_ID_TO_TYPE: Map<bigint, string>;
|
|
60
|
+
|
|
61
|
+
declare const CONTROL_MESSAGES: ReadonlySet<MoqtMessageType>;
|
|
62
|
+
declare const DATA_MESSAGES: ReadonlySet<MoqtMessageType>;
|
|
63
|
+
declare const CLIENT_ONLY_MESSAGES: ReadonlySet<MoqtMessageType>;
|
|
64
|
+
declare const SERVER_ONLY_MESSAGES: ReadonlySet<MoqtMessageType>;
|
|
65
|
+
declare function getLegalOutgoing(phase: string, role: 'client' | 'server'): Set<MoqtMessageType>;
|
|
66
|
+
declare function getLegalIncoming(phase: string, role: 'client' | 'server'): Set<MoqtMessageType>;
|
|
67
|
+
|
|
68
|
+
declare function encodeMessage(message: MoqtMessage): Uint8Array;
|
|
69
|
+
declare function decodeMessage(bytes: Uint8Array): DecodeResult<MoqtMessage>;
|
|
70
|
+
declare function createStreamDecoder(): TransformStream<Uint8Array, MoqtMessage>;
|
|
71
|
+
|
|
72
|
+
export { CLIENT_ONLY_MESSAGES, CONTROL_MESSAGES, DATA_MESSAGES, DecodeResult, MESSAGE_ID_TO_TYPE, MESSAGE_TYPE_IDS, MoqtMessage, MoqtMessageType, SERVER_ONLY_MESSAGES, createDraft07Codec, createStreamDecoder, decodeMessage, decodeParameters, decodeVarInt, encodeMessage, encodeParameters, encodeVarInt, getLegalIncoming, getLegalOutgoing };
|
package/dist/draft7.d.ts
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { g as DecodeResult, a as Codec, p as MoqtMessageType, o as MoqtMessage } from './types-ClXELFGN.js';
|
|
2
|
+
export { A as Announce, b as AnnounceCancel, c as AnnounceError, d as AnnounceOk, e as ClientSetup, D as DecodeError, f as DecodeErrorCode, F as Fetch, j as FetchCancel, k as FetchError, l as FetchOk, m as FilterType, G as GoAway, n as GroupOrderValue, M as MaxSubscribeId, O as ObjectDatagram, q as ObjectStream, S as ServerSetup, r as StreamHeaderGroup, s as StreamHeaderSubgroup, t as StreamHeaderTrack, u as Subscribe, v as SubscribeAnnounces, w as SubscribeAnnouncesError, x as SubscribeAnnouncesOk, y as SubscribeDone, z as SubscribeError, E as SubscribeOk, H as SubscribeUpdate, T as TrackStatus, I as TrackStatusRequest, U as Unannounce, J as Unsubscribe, K as UnsubscribeAnnounces } from './types-ClXELFGN.js';
|
|
3
|
+
|
|
4
|
+
declare function encodeVarInt(value: number | bigint): Uint8Array;
|
|
5
|
+
declare function decodeVarInt(bytes: Uint8Array, offset?: number): DecodeResult<bigint>;
|
|
6
|
+
|
|
7
|
+
declare class BufferReader {
|
|
8
|
+
readonly buffer: Uint8Array;
|
|
9
|
+
private readonly view;
|
|
10
|
+
private pos;
|
|
11
|
+
constructor(buffer: Uint8Array, offset?: number);
|
|
12
|
+
get offset(): number;
|
|
13
|
+
get remaining(): number;
|
|
14
|
+
readUint8(): number;
|
|
15
|
+
readBytes(length: number): Uint8Array;
|
|
16
|
+
readVarInt(): bigint;
|
|
17
|
+
readString(): string;
|
|
18
|
+
readTuple(): string[];
|
|
19
|
+
readParameters(): Map<bigint, Uint8Array>;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
declare function createDraft07Codec(): Codec;
|
|
23
|
+
|
|
24
|
+
declare function encodeParameters(params: Map<bigint, Uint8Array>): Uint8Array;
|
|
25
|
+
declare function decodeParameters(reader: BufferReader): Map<bigint, Uint8Array>;
|
|
26
|
+
|
|
27
|
+
declare const MESSAGE_TYPE_IDS: {
|
|
28
|
+
readonly subscribe_update: 2n;
|
|
29
|
+
readonly subscribe: 3n;
|
|
30
|
+
readonly subscribe_ok: 4n;
|
|
31
|
+
readonly subscribe_error: 5n;
|
|
32
|
+
readonly announce: 6n;
|
|
33
|
+
readonly announce_ok: 7n;
|
|
34
|
+
readonly announce_error: 8n;
|
|
35
|
+
readonly unannounce: 9n;
|
|
36
|
+
readonly unsubscribe: 10n;
|
|
37
|
+
readonly subscribe_done: 11n;
|
|
38
|
+
readonly announce_cancel: 12n;
|
|
39
|
+
readonly track_status_request: 13n;
|
|
40
|
+
readonly track_status: 14n;
|
|
41
|
+
readonly goaway: 16n;
|
|
42
|
+
readonly subscribe_announces: 17n;
|
|
43
|
+
readonly subscribe_announces_ok: 18n;
|
|
44
|
+
readonly subscribe_announces_error: 19n;
|
|
45
|
+
readonly unsubscribe_announces: 20n;
|
|
46
|
+
readonly max_subscribe_id: 21n;
|
|
47
|
+
readonly fetch: 22n;
|
|
48
|
+
readonly fetch_cancel: 23n;
|
|
49
|
+
readonly fetch_ok: 24n;
|
|
50
|
+
readonly fetch_error: 25n;
|
|
51
|
+
readonly client_setup: 64n;
|
|
52
|
+
readonly server_setup: 65n;
|
|
53
|
+
readonly object_stream: 0n;
|
|
54
|
+
readonly object_datagram: 1n;
|
|
55
|
+
readonly stream_header_track: 80n;
|
|
56
|
+
readonly stream_header_group: 81n;
|
|
57
|
+
readonly stream_header_subgroup: 4n;
|
|
58
|
+
};
|
|
59
|
+
declare const MESSAGE_ID_TO_TYPE: Map<bigint, string>;
|
|
60
|
+
|
|
61
|
+
declare const CONTROL_MESSAGES: ReadonlySet<MoqtMessageType>;
|
|
62
|
+
declare const DATA_MESSAGES: ReadonlySet<MoqtMessageType>;
|
|
63
|
+
declare const CLIENT_ONLY_MESSAGES: ReadonlySet<MoqtMessageType>;
|
|
64
|
+
declare const SERVER_ONLY_MESSAGES: ReadonlySet<MoqtMessageType>;
|
|
65
|
+
declare function getLegalOutgoing(phase: string, role: 'client' | 'server'): Set<MoqtMessageType>;
|
|
66
|
+
declare function getLegalIncoming(phase: string, role: 'client' | 'server'): Set<MoqtMessageType>;
|
|
67
|
+
|
|
68
|
+
declare function encodeMessage(message: MoqtMessage): Uint8Array;
|
|
69
|
+
declare function decodeMessage(bytes: Uint8Array): DecodeResult<MoqtMessage>;
|
|
70
|
+
declare function createStreamDecoder(): TransformStream<Uint8Array, MoqtMessage>;
|
|
71
|
+
|
|
72
|
+
export { CLIENT_ONLY_MESSAGES, CONTROL_MESSAGES, DATA_MESSAGES, DecodeResult, MESSAGE_ID_TO_TYPE, MESSAGE_TYPE_IDS, MoqtMessage, MoqtMessageType, SERVER_ONLY_MESSAGES, createDraft07Codec, createStreamDecoder, decodeMessage, decodeParameters, decodeVarInt, encodeMessage, encodeParameters, encodeVarInt, getLegalIncoming, getLegalOutgoing };
|
package/dist/draft7.js
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import {
|
|
2
|
+
MESSAGE_ID_TO_TYPE,
|
|
3
|
+
MESSAGE_TYPE_IDS,
|
|
4
|
+
createDraft07Codec,
|
|
5
|
+
decodeVarInt,
|
|
6
|
+
encodeVarInt
|
|
7
|
+
} from "./chunk-23YG7F46.js";
|
|
8
|
+
import {
|
|
9
|
+
CLIENT_ONLY_MESSAGES,
|
|
10
|
+
CONTROL_MESSAGES,
|
|
11
|
+
DATA_MESSAGES,
|
|
12
|
+
SERVER_ONLY_MESSAGES,
|
|
13
|
+
getLegalIncoming,
|
|
14
|
+
getLegalOutgoing
|
|
15
|
+
} from "./chunk-UOBWHJA5.js";
|
|
16
|
+
import {
|
|
17
|
+
BufferWriter,
|
|
18
|
+
DecodeError
|
|
19
|
+
} from "./chunk-YBSEOSSP.js";
|
|
20
|
+
|
|
21
|
+
// src/drafts/draft07/parameters.ts
|
|
22
|
+
function encodeParameters(params) {
|
|
23
|
+
const writer = new BufferWriter();
|
|
24
|
+
writer.writeParameters(params);
|
|
25
|
+
return writer.finish();
|
|
26
|
+
}
|
|
27
|
+
function decodeParameters(reader) {
|
|
28
|
+
return reader.readParameters();
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// src/drafts/draft07/index.ts
|
|
32
|
+
var defaultCodec = createDraft07Codec();
|
|
33
|
+
function encodeMessage(message) {
|
|
34
|
+
return defaultCodec.encodeMessage(message);
|
|
35
|
+
}
|
|
36
|
+
function decodeMessage(bytes) {
|
|
37
|
+
return defaultCodec.decodeMessage(bytes);
|
|
38
|
+
}
|
|
39
|
+
function createStreamDecoder() {
|
|
40
|
+
return defaultCodec.createStreamDecoder();
|
|
41
|
+
}
|
|
42
|
+
export {
|
|
43
|
+
CLIENT_ONLY_MESSAGES,
|
|
44
|
+
CONTROL_MESSAGES,
|
|
45
|
+
DATA_MESSAGES,
|
|
46
|
+
DecodeError,
|
|
47
|
+
MESSAGE_ID_TO_TYPE,
|
|
48
|
+
MESSAGE_TYPE_IDS,
|
|
49
|
+
SERVER_ONLY_MESSAGES,
|
|
50
|
+
createDraft07Codec,
|
|
51
|
+
createStreamDecoder,
|
|
52
|
+
decodeMessage,
|
|
53
|
+
decodeParameters,
|
|
54
|
+
decodeVarInt,
|
|
55
|
+
encodeMessage,
|
|
56
|
+
encodeParameters,
|
|
57
|
+
encodeVarInt,
|
|
58
|
+
getLegalIncoming,
|
|
59
|
+
getLegalOutgoing
|
|
60
|
+
};
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkWNTXF3DEcjs = require('./chunk-WNTXF3DE.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunk5WFXFLL4cjs = require('./chunk-5WFXFLL4.cjs');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
var _chunk2NARXGVAcjs = require('./chunk-2NARXGVA.cjs');
|
|
10
|
+
|
|
11
|
+
// src/index.ts
|
|
12
|
+
var DRAFT_ALIASES = {
|
|
13
|
+
"07": "draft-ietf-moq-transport-07",
|
|
14
|
+
"draft-ietf-moq-transport-07": "draft-ietf-moq-transport-07",
|
|
15
|
+
"14": "draft-ietf-moq-transport-14",
|
|
16
|
+
"draft-ietf-moq-transport-14": "draft-ietf-moq-transport-14"
|
|
17
|
+
};
|
|
18
|
+
function createCodec(options) {
|
|
19
|
+
const draft = DRAFT_ALIASES[options.draft];
|
|
20
|
+
if (!draft) {
|
|
21
|
+
throw new Error(
|
|
22
|
+
`Unsupported draft: "${options.draft}". Use a draft-scoped import instead:
|
|
23
|
+
import { createDraft07Codec } from '@moqtap/codec/draft7'
|
|
24
|
+
import { createDraft14Codec } from '@moqtap/codec/draft14'
|
|
25
|
+
Supported draft values: ${Object.keys(DRAFT_ALIASES).join(", ")}`
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
switch (draft) {
|
|
29
|
+
case "draft-ietf-moq-transport-07":
|
|
30
|
+
return _chunkWNTXF3DEcjs.createDraft07Codec.call(void 0, );
|
|
31
|
+
case "draft-ietf-moq-transport-14":
|
|
32
|
+
return _chunk5WFXFLL4cjs.createDraft14Codec.call(void 0, );
|
|
33
|
+
default:
|
|
34
|
+
throw new Error(`Unsupported draft: ${draft}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
exports.DecodeError = _chunk2NARXGVAcjs.DecodeError; exports.createCodec = createCodec;
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { C as CodecOptions, a as Codec } from './types-ClXELFGN.cjs';
|
|
2
|
+
export { A as Announce, b as AnnounceCancel, c as AnnounceError, d as AnnounceOk, B as BaseCodec, e as ClientSetup, D as DecodeError, f as DecodeErrorCode, g as DecodeResult, h as Draft, i as DraftShorthand, F as Fetch, j as FetchCancel, k as FetchError, l as FetchOk, m as FilterType, G as GoAway, n as GroupOrderValue, M as MaxSubscribeId, o as MoqtMessage, p as MoqtMessageType, O as ObjectDatagram, q as ObjectStream, S as ServerSetup, r as StreamHeaderGroup, s as StreamHeaderSubgroup, t as StreamHeaderTrack, u as Subscribe, v as SubscribeAnnounces, w as SubscribeAnnouncesError, x as SubscribeAnnouncesOk, y as SubscribeDone, z as SubscribeError, E as SubscribeOk, H as SubscribeUpdate, T as TrackStatus, I as TrackStatusRequest, U as Unannounce, J as Unsubscribe, K as UnsubscribeAnnounces } from './types-ClXELFGN.cjs';
|
|
3
|
+
import { D as Draft14Codec } from './codec-CTvFtQQI.cjs';
|
|
4
|
+
export { D as Draft14DataStream, a as Draft14Message, b as Draft14Params } from './types-CIk5W10V.cjs';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @moqtap/codec — MoQT wire-format codec
|
|
8
|
+
*
|
|
9
|
+
* This is the root entry point. It re-exports shared types and the
|
|
10
|
+
* `createCodec()` factory which requires an explicit draft version.
|
|
11
|
+
*
|
|
12
|
+
* For direct access to a specific draft, use subpath imports:
|
|
13
|
+
* import { createDraft07Codec } from '@moqtap/codec/draft7';
|
|
14
|
+
* import { createDraft14Codec } from '@moqtap/codec/draft14';
|
|
15
|
+
*
|
|
16
|
+
* A default (versionless) codec will be available once the MoQT
|
|
17
|
+
* specification reaches RFC status. Until then, always specify a draft.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Create a codec for draft-07 (returns full Codec with stream decoder).
|
|
22
|
+
*/
|
|
23
|
+
declare function createCodec(options: CodecOptions & {
|
|
24
|
+
draft: 'draft-ietf-moq-transport-07' | '07';
|
|
25
|
+
}): Codec;
|
|
26
|
+
/**
|
|
27
|
+
* Create a codec for draft-14 (returns Draft14Codec with data stream support).
|
|
28
|
+
*/
|
|
29
|
+
declare function createCodec(options: CodecOptions & {
|
|
30
|
+
draft: 'draft-ietf-moq-transport-14' | '14';
|
|
31
|
+
}): Draft14Codec;
|
|
32
|
+
/**
|
|
33
|
+
* Create a codec for the specified draft version.
|
|
34
|
+
*
|
|
35
|
+
* A draft must always be specified — there is no default while the
|
|
36
|
+
* MoQT specification is still in draft stage.
|
|
37
|
+
*/
|
|
38
|
+
declare function createCodec(options: CodecOptions): Codec | Draft14Codec;
|
|
39
|
+
|
|
40
|
+
export { Codec, CodecOptions, Draft14Codec, createCodec };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { C as CodecOptions, a as Codec } from './types-ClXELFGN.js';
|
|
2
|
+
export { A as Announce, b as AnnounceCancel, c as AnnounceError, d as AnnounceOk, B as BaseCodec, e as ClientSetup, D as DecodeError, f as DecodeErrorCode, g as DecodeResult, h as Draft, i as DraftShorthand, F as Fetch, j as FetchCancel, k as FetchError, l as FetchOk, m as FilterType, G as GoAway, n as GroupOrderValue, M as MaxSubscribeId, o as MoqtMessage, p as MoqtMessageType, O as ObjectDatagram, q as ObjectStream, S as ServerSetup, r as StreamHeaderGroup, s as StreamHeaderSubgroup, t as StreamHeaderTrack, u as Subscribe, v as SubscribeAnnounces, w as SubscribeAnnouncesError, x as SubscribeAnnouncesOk, y as SubscribeDone, z as SubscribeError, E as SubscribeOk, H as SubscribeUpdate, T as TrackStatus, I as TrackStatusRequest, U as Unannounce, J as Unsubscribe, K as UnsubscribeAnnounces } from './types-ClXELFGN.js';
|
|
3
|
+
import { D as Draft14Codec } from './codec-qPzfmLNu.js';
|
|
4
|
+
export { D as Draft14DataStream, a as Draft14Message, b as Draft14Params } from './types-CIk5W10V.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @moqtap/codec — MoQT wire-format codec
|
|
8
|
+
*
|
|
9
|
+
* This is the root entry point. It re-exports shared types and the
|
|
10
|
+
* `createCodec()` factory which requires an explicit draft version.
|
|
11
|
+
*
|
|
12
|
+
* For direct access to a specific draft, use subpath imports:
|
|
13
|
+
* import { createDraft07Codec } from '@moqtap/codec/draft7';
|
|
14
|
+
* import { createDraft14Codec } from '@moqtap/codec/draft14';
|
|
15
|
+
*
|
|
16
|
+
* A default (versionless) codec will be available once the MoQT
|
|
17
|
+
* specification reaches RFC status. Until then, always specify a draft.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Create a codec for draft-07 (returns full Codec with stream decoder).
|
|
22
|
+
*/
|
|
23
|
+
declare function createCodec(options: CodecOptions & {
|
|
24
|
+
draft: 'draft-ietf-moq-transport-07' | '07';
|
|
25
|
+
}): Codec;
|
|
26
|
+
/**
|
|
27
|
+
* Create a codec for draft-14 (returns Draft14Codec with data stream support).
|
|
28
|
+
*/
|
|
29
|
+
declare function createCodec(options: CodecOptions & {
|
|
30
|
+
draft: 'draft-ietf-moq-transport-14' | '14';
|
|
31
|
+
}): Draft14Codec;
|
|
32
|
+
/**
|
|
33
|
+
* Create a codec for the specified draft version.
|
|
34
|
+
*
|
|
35
|
+
* A draft must always be specified — there is no default while the
|
|
36
|
+
* MoQT specification is still in draft stage.
|
|
37
|
+
*/
|
|
38
|
+
declare function createCodec(options: CodecOptions): Codec | Draft14Codec;
|
|
39
|
+
|
|
40
|
+
export { Codec, CodecOptions, Draft14Codec, createCodec };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createDraft07Codec
|
|
3
|
+
} from "./chunk-23YG7F46.js";
|
|
4
|
+
import {
|
|
5
|
+
createDraft14Codec
|
|
6
|
+
} from "./chunk-IQPDRQVC.js";
|
|
7
|
+
import {
|
|
8
|
+
DecodeError
|
|
9
|
+
} from "./chunk-YBSEOSSP.js";
|
|
10
|
+
|
|
11
|
+
// src/index.ts
|
|
12
|
+
var DRAFT_ALIASES = {
|
|
13
|
+
"07": "draft-ietf-moq-transport-07",
|
|
14
|
+
"draft-ietf-moq-transport-07": "draft-ietf-moq-transport-07",
|
|
15
|
+
"14": "draft-ietf-moq-transport-14",
|
|
16
|
+
"draft-ietf-moq-transport-14": "draft-ietf-moq-transport-14"
|
|
17
|
+
};
|
|
18
|
+
function createCodec(options) {
|
|
19
|
+
const draft = DRAFT_ALIASES[options.draft];
|
|
20
|
+
if (!draft) {
|
|
21
|
+
throw new Error(
|
|
22
|
+
`Unsupported draft: "${options.draft}". Use a draft-scoped import instead:
|
|
23
|
+
import { createDraft07Codec } from '@moqtap/codec/draft7'
|
|
24
|
+
import { createDraft14Codec } from '@moqtap/codec/draft14'
|
|
25
|
+
Supported draft values: ${Object.keys(DRAFT_ALIASES).join(", ")}`
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
switch (draft) {
|
|
29
|
+
case "draft-ietf-moq-transport-07":
|
|
30
|
+
return createDraft07Codec();
|
|
31
|
+
case "draft-ietf-moq-transport-14":
|
|
32
|
+
return createDraft14Codec();
|
|
33
|
+
default:
|
|
34
|
+
throw new Error(`Unsupported draft: ${draft}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export {
|
|
38
|
+
DecodeError,
|
|
39
|
+
createCodec
|
|
40
|
+
};
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { p as MoqtMessageType, o as MoqtMessage } from './types-ClXELFGN.js';
|
|
2
|
+
|
|
3
|
+
type SessionPhase = 'idle' | 'setup' | 'ready' | 'draining' | 'closed' | 'error';
|
|
4
|
+
type SubscriptionPhase = 'pending' | 'active' | 'error' | 'done';
|
|
5
|
+
type AnnouncePhase = 'pending' | 'active' | 'error';
|
|
6
|
+
type PublishPhase = 'pending' | 'active' | 'error' | 'done';
|
|
7
|
+
type FetchPhase = 'pending' | 'active' | 'error' | 'cancelled';
|
|
8
|
+
interface SubscriptionState {
|
|
9
|
+
readonly subscribeId: bigint;
|
|
10
|
+
readonly phase: SubscriptionPhase;
|
|
11
|
+
readonly trackNamespace: string[];
|
|
12
|
+
readonly trackName: string;
|
|
13
|
+
}
|
|
14
|
+
interface AnnounceState {
|
|
15
|
+
readonly namespace: string[];
|
|
16
|
+
readonly phase: AnnouncePhase;
|
|
17
|
+
}
|
|
18
|
+
interface PublishState {
|
|
19
|
+
readonly requestId: bigint;
|
|
20
|
+
readonly phase: PublishPhase;
|
|
21
|
+
}
|
|
22
|
+
interface FetchState {
|
|
23
|
+
readonly requestId: bigint;
|
|
24
|
+
readonly phase: FetchPhase;
|
|
25
|
+
}
|
|
26
|
+
interface SessionStateOptions {
|
|
27
|
+
codec: {
|
|
28
|
+
draft: string;
|
|
29
|
+
};
|
|
30
|
+
role: 'client' | 'server';
|
|
31
|
+
}
|
|
32
|
+
interface SessionState<M = MoqtMessage, T extends string = MoqtMessageType> {
|
|
33
|
+
readonly phase: SessionPhase;
|
|
34
|
+
readonly role: 'client' | 'server';
|
|
35
|
+
receive(message: M): TransitionResult<T>;
|
|
36
|
+
validateOutgoing(message: M): ValidationResult<T>;
|
|
37
|
+
send(message: M): TransitionResult<T>;
|
|
38
|
+
readonly subscriptions: ReadonlyMap<bigint, SubscriptionState>;
|
|
39
|
+
readonly announces: ReadonlyMap<string, AnnounceState>;
|
|
40
|
+
readonly legalOutgoing: ReadonlySet<T>;
|
|
41
|
+
readonly legalIncoming: ReadonlySet<T>;
|
|
42
|
+
reset(): void;
|
|
43
|
+
}
|
|
44
|
+
type TransitionResult<T extends string = MoqtMessageType> = {
|
|
45
|
+
ok: true;
|
|
46
|
+
phase: SessionPhase;
|
|
47
|
+
sideEffects: SideEffect[];
|
|
48
|
+
} | {
|
|
49
|
+
ok: false;
|
|
50
|
+
violation: ProtocolViolation<T>;
|
|
51
|
+
};
|
|
52
|
+
type ValidationResult<T extends string = MoqtMessageType> = {
|
|
53
|
+
ok: true;
|
|
54
|
+
} | {
|
|
55
|
+
ok: false;
|
|
56
|
+
violation: ProtocolViolation<T>;
|
|
57
|
+
};
|
|
58
|
+
interface ProtocolViolation<T extends string = MoqtMessageType> {
|
|
59
|
+
readonly code: ProtocolViolationCode;
|
|
60
|
+
readonly message: string;
|
|
61
|
+
readonly currentPhase: SessionPhase;
|
|
62
|
+
readonly offendingMessage: T;
|
|
63
|
+
}
|
|
64
|
+
type ProtocolViolationCode = 'MESSAGE_BEFORE_SETUP' | 'UNEXPECTED_MESSAGE' | 'DUPLICATE_SUBSCRIBE_ID' | 'UNKNOWN_SUBSCRIBE_ID' | 'DUPLICATE_REQUEST_ID' | 'UNKNOWN_REQUEST_ID' | 'ROLE_VIOLATION' | 'STATE_VIOLATION' | 'SETUP_VIOLATION';
|
|
65
|
+
type SideEffect = {
|
|
66
|
+
type: 'subscription-activated';
|
|
67
|
+
subscribeId: bigint;
|
|
68
|
+
} | {
|
|
69
|
+
type: 'subscription-ended';
|
|
70
|
+
subscribeId: bigint;
|
|
71
|
+
reason: string;
|
|
72
|
+
} | {
|
|
73
|
+
type: 'announce-activated';
|
|
74
|
+
namespace: string[];
|
|
75
|
+
} | {
|
|
76
|
+
type: 'announce-ended';
|
|
77
|
+
namespace: string[];
|
|
78
|
+
} | {
|
|
79
|
+
type: 'publish-activated';
|
|
80
|
+
requestId: bigint;
|
|
81
|
+
} | {
|
|
82
|
+
type: 'publish-ended';
|
|
83
|
+
requestId: bigint;
|
|
84
|
+
reason: string;
|
|
85
|
+
} | {
|
|
86
|
+
type: 'fetch-activated';
|
|
87
|
+
requestId: bigint;
|
|
88
|
+
} | {
|
|
89
|
+
type: 'fetch-ended';
|
|
90
|
+
requestId: bigint;
|
|
91
|
+
reason: string;
|
|
92
|
+
} | {
|
|
93
|
+
type: 'session-ready';
|
|
94
|
+
} | {
|
|
95
|
+
type: 'session-draining';
|
|
96
|
+
goAwayUri: string;
|
|
97
|
+
} | {
|
|
98
|
+
type: 'session-closed';
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
export type { AnnouncePhase as A, FetchPhase as F, ProtocolViolation as P, SessionStateOptions as S, TransitionResult as T, ValidationResult as V, SessionState as a, AnnounceState as b, FetchState as c, ProtocolViolationCode as d, PublishPhase as e, PublishState as f, SessionPhase as g, SideEffect as h, SubscriptionPhase as i, SubscriptionState as j };
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { p as MoqtMessageType, o as MoqtMessage } from './types-ClXELFGN.cjs';
|
|
2
|
+
|
|
3
|
+
type SessionPhase = 'idle' | 'setup' | 'ready' | 'draining' | 'closed' | 'error';
|
|
4
|
+
type SubscriptionPhase = 'pending' | 'active' | 'error' | 'done';
|
|
5
|
+
type AnnouncePhase = 'pending' | 'active' | 'error';
|
|
6
|
+
type PublishPhase = 'pending' | 'active' | 'error' | 'done';
|
|
7
|
+
type FetchPhase = 'pending' | 'active' | 'error' | 'cancelled';
|
|
8
|
+
interface SubscriptionState {
|
|
9
|
+
readonly subscribeId: bigint;
|
|
10
|
+
readonly phase: SubscriptionPhase;
|
|
11
|
+
readonly trackNamespace: string[];
|
|
12
|
+
readonly trackName: string;
|
|
13
|
+
}
|
|
14
|
+
interface AnnounceState {
|
|
15
|
+
readonly namespace: string[];
|
|
16
|
+
readonly phase: AnnouncePhase;
|
|
17
|
+
}
|
|
18
|
+
interface PublishState {
|
|
19
|
+
readonly requestId: bigint;
|
|
20
|
+
readonly phase: PublishPhase;
|
|
21
|
+
}
|
|
22
|
+
interface FetchState {
|
|
23
|
+
readonly requestId: bigint;
|
|
24
|
+
readonly phase: FetchPhase;
|
|
25
|
+
}
|
|
26
|
+
interface SessionStateOptions {
|
|
27
|
+
codec: {
|
|
28
|
+
draft: string;
|
|
29
|
+
};
|
|
30
|
+
role: 'client' | 'server';
|
|
31
|
+
}
|
|
32
|
+
interface SessionState<M = MoqtMessage, T extends string = MoqtMessageType> {
|
|
33
|
+
readonly phase: SessionPhase;
|
|
34
|
+
readonly role: 'client' | 'server';
|
|
35
|
+
receive(message: M): TransitionResult<T>;
|
|
36
|
+
validateOutgoing(message: M): ValidationResult<T>;
|
|
37
|
+
send(message: M): TransitionResult<T>;
|
|
38
|
+
readonly subscriptions: ReadonlyMap<bigint, SubscriptionState>;
|
|
39
|
+
readonly announces: ReadonlyMap<string, AnnounceState>;
|
|
40
|
+
readonly legalOutgoing: ReadonlySet<T>;
|
|
41
|
+
readonly legalIncoming: ReadonlySet<T>;
|
|
42
|
+
reset(): void;
|
|
43
|
+
}
|
|
44
|
+
type TransitionResult<T extends string = MoqtMessageType> = {
|
|
45
|
+
ok: true;
|
|
46
|
+
phase: SessionPhase;
|
|
47
|
+
sideEffects: SideEffect[];
|
|
48
|
+
} | {
|
|
49
|
+
ok: false;
|
|
50
|
+
violation: ProtocolViolation<T>;
|
|
51
|
+
};
|
|
52
|
+
type ValidationResult<T extends string = MoqtMessageType> = {
|
|
53
|
+
ok: true;
|
|
54
|
+
} | {
|
|
55
|
+
ok: false;
|
|
56
|
+
violation: ProtocolViolation<T>;
|
|
57
|
+
};
|
|
58
|
+
interface ProtocolViolation<T extends string = MoqtMessageType> {
|
|
59
|
+
readonly code: ProtocolViolationCode;
|
|
60
|
+
readonly message: string;
|
|
61
|
+
readonly currentPhase: SessionPhase;
|
|
62
|
+
readonly offendingMessage: T;
|
|
63
|
+
}
|
|
64
|
+
type ProtocolViolationCode = 'MESSAGE_BEFORE_SETUP' | 'UNEXPECTED_MESSAGE' | 'DUPLICATE_SUBSCRIBE_ID' | 'UNKNOWN_SUBSCRIBE_ID' | 'DUPLICATE_REQUEST_ID' | 'UNKNOWN_REQUEST_ID' | 'ROLE_VIOLATION' | 'STATE_VIOLATION' | 'SETUP_VIOLATION';
|
|
65
|
+
type SideEffect = {
|
|
66
|
+
type: 'subscription-activated';
|
|
67
|
+
subscribeId: bigint;
|
|
68
|
+
} | {
|
|
69
|
+
type: 'subscription-ended';
|
|
70
|
+
subscribeId: bigint;
|
|
71
|
+
reason: string;
|
|
72
|
+
} | {
|
|
73
|
+
type: 'announce-activated';
|
|
74
|
+
namespace: string[];
|
|
75
|
+
} | {
|
|
76
|
+
type: 'announce-ended';
|
|
77
|
+
namespace: string[];
|
|
78
|
+
} | {
|
|
79
|
+
type: 'publish-activated';
|
|
80
|
+
requestId: bigint;
|
|
81
|
+
} | {
|
|
82
|
+
type: 'publish-ended';
|
|
83
|
+
requestId: bigint;
|
|
84
|
+
reason: string;
|
|
85
|
+
} | {
|
|
86
|
+
type: 'fetch-activated';
|
|
87
|
+
requestId: bigint;
|
|
88
|
+
} | {
|
|
89
|
+
type: 'fetch-ended';
|
|
90
|
+
requestId: bigint;
|
|
91
|
+
reason: string;
|
|
92
|
+
} | {
|
|
93
|
+
type: 'session-ready';
|
|
94
|
+
} | {
|
|
95
|
+
type: 'session-draining';
|
|
96
|
+
goAwayUri: string;
|
|
97
|
+
} | {
|
|
98
|
+
type: 'session-closed';
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
export type { AnnouncePhase as A, FetchPhase as F, ProtocolViolation as P, SessionStateOptions as S, TransitionResult as T, ValidationResult as V, SessionState as a, AnnounceState as b, FetchState as c, ProtocolViolationCode as d, PublishPhase as e, PublishState as f, SessionPhase as g, SideEffect as h, SubscriptionPhase as i, SubscriptionState as j };
|
package/dist/session.cjs
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunk3BSZ55L3cjs = require('./chunk-3BSZ55L3.cjs');
|
|
4
|
+
require('./chunk-QYG6KGOV.cjs');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
var _chunkGDRGWFEKcjs = require('./chunk-GDRGWFEK.cjs');
|
|
8
|
+
|
|
9
|
+
// src/session.ts
|
|
10
|
+
function createSessionState(options) {
|
|
11
|
+
const draft = options.codec.draft;
|
|
12
|
+
switch (draft) {
|
|
13
|
+
case "draft-ietf-moq-transport-07":
|
|
14
|
+
return _chunk3BSZ55L3cjs.createDraft07SessionState.call(void 0, options);
|
|
15
|
+
case "draft-ietf-moq-transport-14":
|
|
16
|
+
return _chunkGDRGWFEKcjs.createDraft14SessionState.call(void 0, options);
|
|
17
|
+
default:
|
|
18
|
+
throw new Error(
|
|
19
|
+
`Unsupported draft for session: "${draft}". Use a draft-scoped import instead:
|
|
20
|
+
import { createDraft07SessionState } from '@moqtap/codec/draft7/session'
|
|
21
|
+
import { createDraft14SessionState } from '@moqtap/codec/draft14/session'`
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
exports.createSessionState = createSessionState;
|