@norskvideo/norsk-sdk 1.0.389 → 1.0.391

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.
@@ -2844,6 +2844,19 @@ export declare class MoqOutputNode extends AutoSinkMediaNode<"audio" | "video">
2844
2844
  * see {@link NorskOutput.moq}
2845
2845
  */
2846
2846
  export declare interface MoqOutputSettings extends SinkNodeSettings<MoqOutputNode>, StreamStatisticsMixin {
2847
+ /**
2848
+ * The namespace to publish tracks within (for example: 'bbb')
2849
+ * */
2850
+ namespace: string;
2851
+ /**
2852
+ * The URL of a remote MoQT server subscriber to connect to and publish tracks for
2853
+ * */
2854
+ url: string;
2855
+ /**
2856
+ * Disable verification of remote server's TLS certificate
2857
+ * (for development use ONLY, not for production)
2858
+ * */
2859
+ disableTlsVerify: boolean;
2847
2860
  }
2848
2861
 
2849
2862
  /** @public */
@@ -3310,9 +3323,25 @@ export declare interface NorskOutput {
3310
3323
  */
3311
3324
  fileWebVtt(settings: FileWebVttOutputSettings): Promise<FileWebVttOutputNode>;
3312
3325
  /**
3313
- * Create a Moq Egest
3326
+ * EXPERIMENTAL Connects and sends output to a remote Media over QUIC endpoint
3327
+ *
3328
+ * Here Norsk acts as a Media over QUIC Transport (MoQT) client publisher
3329
+ * and connects to a MoQT server subscriber (e.g. a relay) and publishes a
3330
+ * catalog and a video track into the configured namespace.
3331
+ *
3332
+ * Warning: experimental! Expect bugs and missing features.
3333
+ *
3334
+ * The MoQT specification is still a work in progress and this exeperimental
3335
+ * implementation serves to inform further specification changes
3336
+ *
3337
+ * Current target specification: <https://www.ietf.org/archive/id/draft-ietf-moq-transport-04.html>
3338
+ *
3339
+ * The catalog track is named '.catalog' and describes the available
3340
+ * video track(s) within the namespace
3341
+ *
3342
+ * Video is currently configured to publish as fragmented MP4 (fMP4)
3314
3343
  *
3315
- * @param settings - Configuration for the egest
3344
+ * @param settings - Configuration for the MoQ Output
3316
3345
  */
3317
3346
  moq(settings: MoqOutputSettings): Promise<MoqOutputNode>;
3318
3347
  }
package/lib/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "license": "MIT",
3
3
  "name": "@norskvideo/norsk-sdk",
4
- "version": "1.0.389",
4
+ "version": "1.0.391",
5
5
  "dependencies": {
6
6
  "@bufbuild/protobuf": "^0.3.0",
7
7
  "@grpc/grpc-js": "^1.2.2",
8
- "@norskvideo/norsk-api": "1.0.389",
8
+ "@norskvideo/norsk-api": "1.0.391",
9
9
  "lodash": "^4.17.21",
10
10
  "typescript-nullable": "^0.6.0"
11
11
  },
@@ -3,7 +3,7 @@ import * as grpc from "@grpc/grpc-js";
3
3
  import { MediaClient as MediaClientPB } from "@norskvideo/norsk-api/lib/media_grpc_pb";
4
4
  import EventEmitter from "events";
5
5
  /** @public */
6
- export declare type MediaClient = {
6
+ export type MediaClient = {
7
7
  media: MediaClientPB;
8
8
  subscriptions: grpc.ClientDuplexStream<SubscriptionChannelMessage, SubscriptionChannelResponse>;
9
9
  };
@@ -64,10 +64,10 @@ export interface StreamStatisticsMixin {
64
64
  stats: MultiStreamStatistics) => void;
65
65
  onGopStructure?: (structure: GopStructure) => void;
66
66
  }
67
- export declare type EventMap = {
67
+ export type EventMap = {
68
68
  [key: string]: (arg: any) => void;
69
69
  };
70
- export declare type MediaNodeStateEvents = {
70
+ export type MediaNodeStateEvents = {
71
71
  close: (id: string) => void;
72
72
  };
73
73
  /** @public */
@@ -84,17 +84,17 @@ export declare class MediaNodeState<Events extends EventMap & MediaNodeStateEven
84
84
  close(): Promise<void>;
85
85
  }
86
86
  /** @public */
87
- export declare type ReceiveFromAddress<Pins extends string> = {
87
+ export type ReceiveFromAddress<Pins extends string> = {
88
88
  source: SourceMediaNode;
89
89
  sourceSelector: (streams: StreamMetadata[]) => PinToKey<Pins>;
90
90
  };
91
91
  /** @public */
92
- export declare type ReceiveFromAddressAuto = {
92
+ export type ReceiveFromAddressAuto = {
93
93
  source: SourceMediaNode;
94
94
  sourceSelector: (streams: StreamMetadata[]) => StreamKey[];
95
95
  };
96
96
  /** @public */
97
- export declare type PinToKey<Pins extends string> = Nullable<Partial<Record<Pins, StreamKey[]>>>;
97
+ export type PinToKey<Pins extends string> = Nullable<Partial<Record<Pins, StreamKey[]>>>;
98
98
  /** @public */
99
99
  export interface SubscribeDestination {
100
100
  id?: string;
@@ -102,7 +102,7 @@ export interface SubscribeDestination {
102
102
  on?: (e: "close", a: () => void) => void;
103
103
  off?: (e: "close", a: () => void) => void;
104
104
  }
105
- export declare type SourceMediaNodeEvents = {
105
+ export type SourceMediaNodeEvents = {
106
106
  outboundContextChange: (streams: StreamMetadata[]) => void;
107
107
  } & MediaNodeStateEvents;
108
108
  /** @public */
@@ -124,7 +124,7 @@ export declare class SourceMediaNode<Events extends SourceMediaNodeEvents = Sour
124
124
  * - deny_and_drop: Deny the incoming context, drop any currently queued data, and drop any further data that might be received
125
125
  * this is useful if you have a lot of setup on start-up and would prefer not to queue data while waiting for that to take place
126
126
  * */
127
- export declare type SubscriptionValidationResponse = true | false | "accept" | "deny" | "accept_and_terminate" | "deny_and_queue" | "deny_and_drop";
127
+ export type SubscriptionValidationResponse = true | false | "accept" | "deny" | "accept_and_terminate" | "deny_and_queue" | "deny_and_drop";
128
128
  /** @public */
129
129
  export declare class SinkMediaNode<Pins extends string, Events extends MediaNodeStateEvents = MediaNodeStateEvents> extends MediaNodeState<Events> implements SubscribeDestination {
130
130
  permissiveSubscriptionValidation(_context: Context): SubscriptionValidationResponse;
@@ -45,13 +45,6 @@ function applyMixins(derivedCtor, baseCtors) {
45
45
  exports.applyMixins = applyMixins;
46
46
  /** @public */
47
47
  class MediaNodeState {
48
- constructor(client) {
49
- this.closed = false;
50
- this.events = new events_1.default();
51
- this.client = client;
52
- this.id = undefined;
53
- this.events.setMaxListeners(0);
54
- }
55
48
  emit(name, arg) {
56
49
  this.events.emit(name, arg);
57
50
  }
@@ -61,6 +54,13 @@ class MediaNodeState {
61
54
  off(name, listener) {
62
55
  this.events.off(name, listener);
63
56
  }
57
+ constructor(client) {
58
+ this.closed = false;
59
+ this.events = new events_1.default();
60
+ this.client = client;
61
+ this.id = undefined;
62
+ this.events.setMaxListeners(0);
63
+ }
64
64
  /** @public */
65
65
  async close() {
66
66
  if (this.closed)
@@ -10,6 +10,12 @@ const types_1 = require("./types");
10
10
  * see: {@link NorskDebug.streamTimestampReport}
11
11
  */
12
12
  class StreamTimestampReportNode extends common_1.AutoSinkMediaNode {
13
+ /** @internal */
14
+ static async create(settings, client, unregisterNode) {
15
+ const node = new StreamTimestampReportNode(settings, client, unregisterNode);
16
+ await node.initialised;
17
+ return node;
18
+ }
13
19
  /** @internal */
14
20
  constructor(settings, client, unregisterNode) {
15
21
  super(client, () => this.grpcStream, async (subscription) => this.grpcStream.write((0, common_1.provideFull)(media_pb_1.StreamTimestampReportMessage, (0, common_1.mkMessageCase)({ subscription }))), settings.onSubscriptionError);
@@ -54,12 +60,6 @@ class StreamTimestampReportNode extends common_1.AutoSinkMediaNode {
54
60
  (0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "debugStreamTimestampReport", reject, settings);
55
61
  });
56
62
  }
57
- /** @internal */
58
- static async create(settings, client, unregisterNode) {
59
- const node = new StreamTimestampReportNode(settings, client, unregisterNode);
60
- await node.initialised;
61
- return node;
62
- }
63
63
  }
64
64
  exports.StreamTimestampReportNode = StreamTimestampReportNode;
65
65
  //# sourceMappingURL=debug.js.map
@@ -106,7 +106,7 @@ export interface RtpInputSettings extends SourceNodeSettings<RtpInputNode>, Stre
106
106
  * @public
107
107
  * The stream keys in an RTMP input stream
108
108
  */
109
- export declare type RtmpServerStreamKeys = {
109
+ export type RtmpServerStreamKeys = {
110
110
  audioStreamKey: StreamKeyPB;
111
111
  videoStreamKey: StreamKeyPB;
112
112
  }[];
@@ -194,7 +194,7 @@ export interface RtmpServerInputSettings extends SourceNodeSettings<RtmpServerIn
194
194
  * @public
195
195
  * Return type to enable control of an RTMP stream once media arrives on it
196
196
  */
197
- export declare type OnStreamResult =
197
+ export type OnStreamResult =
198
198
  /** Accept the stream */
199
199
  {
200
200
  accept: true;
@@ -426,7 +426,7 @@ export declare class FileTsInputNode extends TsCommonInputNode<FileTsInputMessag
426
426
  * The return value for the {@link SrtInputSettings.onConnection} callback
427
427
  * determining what to do with an incoming stream
428
428
  */
429
- export declare type SrtConnectionResult =
429
+ export type SrtConnectionResult =
430
430
  /** Accept the stream */
431
431
  {
432
432
  accept: true;
@@ -678,7 +678,7 @@ export interface VideoTestcardGeneratorSettings extends SourceNodeSettings<Video
678
678
  /** Optionally make an interlaced source */
679
679
  interlaced?: boolean;
680
680
  }
681
- declare type Pattern = "black" | "smpte75" | "smpte100";
681
+ type Pattern = "black" | "smpte75" | "smpte100";
682
682
  /**
683
683
  * @public
684
684
  * see: {@link NorskInput.audioSignal}
@@ -14,6 +14,12 @@ const common_pb_1 = require("@norskvideo/norsk-api/lib/shared/common_pb");
14
14
  * see: {@link NorskInput.rtp}
15
15
  */
16
16
  class RtpInputNode extends common_1.SourceMediaNode {
17
+ /** @internal */
18
+ static async create(settings, client, unregisterNode) {
19
+ const node = new RtpInputNode(settings, client, unregisterNode);
20
+ await node.initialised;
21
+ return node;
22
+ }
17
23
  /** @internal */
18
24
  constructor(settings, client, unregisterNode) {
19
25
  super(client, settings.onOutboundContextChange);
@@ -134,12 +140,6 @@ class RtpInputNode extends common_1.SourceMediaNode {
134
140
  (0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "rtp", reject, settings);
135
141
  });
136
142
  }
137
- /** @internal */
138
- static async create(settings, client, unregisterNode) {
139
- const node = new RtpInputNode(settings, client, unregisterNode);
140
- await node.initialised;
141
- return node;
142
- }
143
143
  /**
144
144
  * @public
145
145
  * Applies a gradual nudge to the outgoing stream timestamps by the specified number of milliseconds
@@ -154,6 +154,12 @@ exports.RtpInputNode = RtpInputNode;
154
154
  * see: {@link NorskInput.rtmpServer}
155
155
  */
156
156
  class RtmpServerInputNode extends common_1.SourceMediaNode {
157
+ /** @internal */
158
+ static async create(settings, client, unregisterNode) {
159
+ const node = new RtmpServerInputNode(settings, client, unregisterNode);
160
+ await node.initialised;
161
+ return node;
162
+ }
157
163
  /** @internal */
158
164
  constructor(settings, client, unregisterNode) {
159
165
  super(client, settings.onOutboundContextChange);
@@ -340,12 +346,6 @@ class RtmpServerInputNode extends common_1.SourceMediaNode {
340
346
  (0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "rtmp", reject, settings);
341
347
  });
342
348
  }
343
- /** @internal */
344
- static async create(settings, client, unregisterNode) {
345
- const node = new RtmpServerInputNode(settings, client, unregisterNode);
346
- await node.initialised;
347
- return node;
348
- }
349
349
  /**
350
350
  * @public
351
351
  * Applies a gradual nudge to the outgoing stream timestamps by the specified number of milliseconds
@@ -434,6 +434,12 @@ class TsCommonInputNode extends common_1.SourceMediaNode {
434
434
  * see: {@link NorskInput.deckLink}.
435
435
  */
436
436
  class DeckLinkInputNode extends common_1.SourceMediaNode {
437
+ /** @internal */
438
+ static async create(settings, client, unregisterNode) {
439
+ const node = new DeckLinkInputNode(settings, client, unregisterNode);
440
+ await node.initialised;
441
+ return node;
442
+ }
437
443
  /** @internal */
438
444
  constructor(settings, client, unregisterNode) {
439
445
  super(client, settings.onOutboundContextChange);
@@ -485,12 +491,6 @@ class DeckLinkInputNode extends common_1.SourceMediaNode {
485
491
  (0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "decklink", reject, settings);
486
492
  });
487
493
  }
488
- /** @internal */
489
- static async create(settings, client, unregisterNode) {
490
- const node = new DeckLinkInputNode(settings, client, unregisterNode);
491
- await node.initialised;
492
- return node;
493
- }
494
494
  /**
495
495
  * @public
496
496
  * Applies a gradual nudge to the outgoing stream timestamps by the specified number of milliseconds
@@ -506,6 +506,12 @@ exports.DeckLinkInputNode = DeckLinkInputNode;
506
506
  * see: {@link NorskInput.deltaCast}.
507
507
  */
508
508
  class DeltacastInputNode extends common_1.SourceMediaNode {
509
+ /** @internal */
510
+ static async create(settings, client, unregisterNode) {
511
+ const node = new DeltacastInputNode(settings, client, unregisterNode);
512
+ await node.initialised;
513
+ return node;
514
+ }
509
515
  /** @internal */
510
516
  constructor(settings, client, unregisterNode) {
511
517
  super(client, settings.onOutboundContextChange);
@@ -551,12 +557,6 @@ class DeltacastInputNode extends common_1.SourceMediaNode {
551
557
  (0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "decklink", reject, settings);
552
558
  });
553
559
  }
554
- /** @internal */
555
- static async create(settings, client, unregisterNode) {
556
- const node = new DeltacastInputNode(settings, client, unregisterNode);
557
- await node.initialised;
558
- return node;
559
- }
560
560
  /**
561
561
  * @public
562
562
  * Applies a gradual nudge to the outgoing stream timestamps by the specified number of milliseconds
@@ -571,6 +571,14 @@ exports.DeltacastInputNode = DeltacastInputNode;
571
571
  * see: {@link NorskInput.whip}
572
572
  */
573
573
  class WhipInputNode extends common_1.SourceMediaNode {
574
+ /** @internal */
575
+ static async create(settings, client, unregisterNode) {
576
+ const node = new WhipInputNode(settings, client, unregisterNode);
577
+ await node.initialised;
578
+ node.clientUrl = `${(0, utils_1.publicUrlPrefix)()}/whip/${node.id}/whip.html`;
579
+ node.endpointUrl = `${(0, utils_1.publicUrlPrefix)()}/whip/${node.id}/publish`;
580
+ return node;
581
+ }
574
582
  /** @internal */
575
583
  constructor(settings, client, unregisterNode) {
576
584
  super(client, settings.onOutboundContextChange);
@@ -615,14 +623,6 @@ class WhipInputNode extends common_1.SourceMediaNode {
615
623
  (0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "whipInput", reject, settings);
616
624
  });
617
625
  }
618
- /** @internal */
619
- static async create(settings, client, unregisterNode) {
620
- const node = new WhipInputNode(settings, client, unregisterNode);
621
- await node.initialised;
622
- node.clientUrl = `${(0, utils_1.publicUrlPrefix)()}/whip/${node.id}/whip.html`;
623
- node.endpointUrl = `${(0, utils_1.publicUrlPrefix)()}/whip/${node.id}/publish`;
624
- return node;
625
- }
626
626
  /**
627
627
  * @public
628
628
  * Applies a gradual nudge to the outgoing stream timestamps by the specified number of milliseconds
@@ -643,6 +643,12 @@ exports.WhipInputNode = WhipInputNode;
643
643
  * see: {@link NorskInput.fileWebVtt}
644
644
  */
645
645
  class FileWebVttInputNode extends common_1.SourceMediaNode {
646
+ /** @internal */
647
+ static async create(settings, client, unregisterNode) {
648
+ const node = new FileWebVttInputNode(settings, client, unregisterNode);
649
+ await node.initialised;
650
+ return node;
651
+ }
646
652
  /** @internal */
647
653
  constructor(settings, client, unregisterNode) {
648
654
  super(client, settings.onOutboundContextChange);
@@ -680,12 +686,6 @@ class FileWebVttInputNode extends common_1.SourceMediaNode {
680
686
  (0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "webvtt", reject, settings);
681
687
  });
682
688
  }
683
- /** @internal */
684
- static async create(settings, client, unregisterNode) {
685
- const node = new FileWebVttInputNode(settings, client, unregisterNode);
686
- await node.initialised;
687
- return node;
688
- }
689
689
  }
690
690
  exports.FileWebVttInputNode = FileWebVttInputNode;
691
691
  /**
@@ -693,6 +693,12 @@ exports.FileWebVttInputNode = FileWebVttInputNode;
693
693
  * see: {@link NorskInput.streamWebVtt}
694
694
  */
695
695
  class StreamWebVttInputNode extends common_1.SourceMediaNode {
696
+ /** @internal */
697
+ static async create(settings, client, unregisterNode) {
698
+ const node = new StreamWebVttInputNode(settings, client, unregisterNode);
699
+ await node.initialised;
700
+ return node;
701
+ }
696
702
  /** @internal */
697
703
  constructor(settings, client, unregisterNode) {
698
704
  super(client, settings.onOutboundContextChange);
@@ -734,12 +740,6 @@ class StreamWebVttInputNode extends common_1.SourceMediaNode {
734
740
  (0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "streamWebVtt", reject, settings);
735
741
  });
736
742
  }
737
- /** @internal */
738
- static async create(settings, client, unregisterNode) {
739
- const node = new StreamWebVttInputNode(settings, client, unregisterNode);
740
- await node.initialised;
741
- return node;
742
- }
743
743
  sendChunk(chunk) {
744
744
  this.grpcStream.write((0, utils_1.provideFull)(media_pb_1.StreamWebVttInputMessage, (0, utils_1.mkMessageCase)({ vttChunk: chunk })));
745
745
  }
@@ -799,6 +799,12 @@ exports.FileTsInputNode = FileTsInputNode;
799
799
  * see: {@link NorskInput.srt}
800
800
  */
801
801
  class SrtInputNode extends common_1.SourceMediaNode {
802
+ /** @internal */
803
+ static async create(settings, client, unregisterNode) {
804
+ const node = new SrtInputNode(settings, client, unregisterNode);
805
+ await node.initialised;
806
+ return node;
807
+ }
802
808
  /** @internal */
803
809
  constructor(settings, client, unregisterNode) {
804
810
  super(client, settings.onOutboundContextChange);
@@ -897,12 +903,6 @@ class SrtInputNode extends common_1.SourceMediaNode {
897
903
  (0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "ts", reject, settings);
898
904
  });
899
905
  }
900
- /** @internal */
901
- static async create(settings, client, unregisterNode) {
902
- const node = new SrtInputNode(settings, client, unregisterNode);
903
- await node.initialised;
904
- return node;
905
- }
906
906
  /**
907
907
  * @public
908
908
  * Applies a gradual nudge to the outgoing stream timestamps by the specified number of milliseconds
@@ -1010,6 +1010,12 @@ exports.M3u8InputNode = M3u8InputNode;
1010
1010
  * see: {@link NorskInput.browser}
1011
1011
  */
1012
1012
  class BrowserInputNode extends common_1.SourceMediaNode {
1013
+ /** @internal */
1014
+ static async create(settings, client, unregisterNode) {
1015
+ const node = new BrowserInputNode(settings, client, unregisterNode);
1016
+ await node.initialised;
1017
+ return node;
1018
+ }
1013
1019
  /** @internal */
1014
1020
  constructor(settings, client, unregisterNode) {
1015
1021
  super(client, settings.onOutboundContextChange);
@@ -1083,12 +1089,6 @@ class BrowserInputNode extends common_1.SourceMediaNode {
1083
1089
  (0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "browser", reject, settings);
1084
1090
  });
1085
1091
  }
1086
- /** @internal */
1087
- static async create(settings, client, unregisterNode) {
1088
- const node = new BrowserInputNode(settings, client, unregisterNode);
1089
- await node.initialised;
1090
- return node;
1091
- }
1092
1092
  /**
1093
1093
  * @public
1094
1094
  * Supply new config for an active web browser session
@@ -1117,6 +1117,12 @@ exports.BrowserInputNode = BrowserInputNode;
1117
1117
  * see: {@link NorskInput.audioSignal}
1118
1118
  */
1119
1119
  class AudioSignalGeneratorNode extends common_1.SourceMediaNode {
1120
+ /** @internal */
1121
+ static async create(settings, client, unregisterNode) {
1122
+ const node = new AudioSignalGeneratorNode(settings, client, unregisterNode);
1123
+ await node.initialised;
1124
+ return node;
1125
+ }
1120
1126
  /** @internal */
1121
1127
  constructor(settings, client, unregisterNode) {
1122
1128
  super(client, settings.onOutboundContextChange);
@@ -1157,12 +1163,6 @@ class AudioSignalGeneratorNode extends common_1.SourceMediaNode {
1157
1163
  (0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "audiosignal", reject, settings);
1158
1164
  });
1159
1165
  }
1160
- /** @internal */
1161
- static async create(settings, client, unregisterNode) {
1162
- const node = new AudioSignalGeneratorNode(settings, client, unregisterNode);
1163
- await node.initialised;
1164
- return node;
1165
- }
1166
1166
  }
1167
1167
  exports.AudioSignalGeneratorNode = AudioSignalGeneratorNode;
1168
1168
  function toPattern(p) {
@@ -1182,6 +1182,12 @@ function toPattern(p) {
1182
1182
  * see: {@link NorskInput.audioSignal}
1183
1183
  */
1184
1184
  class VideoTestcardGeneratorNode extends common_1.SourceMediaNode {
1185
+ /** @internal */
1186
+ static async create(settings, client, unregisterNode) {
1187
+ const node = new VideoTestcardGeneratorNode(settings, client, unregisterNode);
1188
+ await node.initialised;
1189
+ return node;
1190
+ }
1185
1191
  /** @internal */
1186
1192
  constructor(settings, client, unregisterNode) {
1187
1193
  super(client, settings.onOutboundContextChange);
@@ -1226,12 +1232,6 @@ class VideoTestcardGeneratorNode extends common_1.SourceMediaNode {
1226
1232
  (0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "videotestcard", reject, settings);
1227
1233
  });
1228
1234
  }
1229
- /** @internal */
1230
- static async create(settings, client, unregisterNode) {
1231
- const node = new VideoTestcardGeneratorNode(settings, client, unregisterNode);
1232
- await node.initialised;
1233
- return node;
1234
- }
1235
1235
  }
1236
1236
  exports.VideoTestcardGeneratorNode = VideoTestcardGeneratorNode;
1237
1237
  /**
@@ -1252,6 +1252,12 @@ function toImageHardwareAcceleration(h) {
1252
1252
  * see: {@link NorskInput.fileImage}
1253
1253
  */
1254
1254
  class FileImageInputNode extends common_1.SourceMediaNode {
1255
+ /** @internal */
1256
+ static async create(settings, client, unregisterNode) {
1257
+ const node = new FileImageInputNode(settings, client, unregisterNode);
1258
+ await node.initialised;
1259
+ return node;
1260
+ }
1255
1261
  /** @internal */
1256
1262
  constructor(settings, client, unregisterNode) {
1257
1263
  super(client, settings.onOutboundContextChange);
@@ -1298,12 +1304,6 @@ class FileImageInputNode extends common_1.SourceMediaNode {
1298
1304
  (0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "imagefile", reject, settings);
1299
1305
  });
1300
1306
  }
1301
- /** @internal */
1302
- static async create(settings, client, unregisterNode) {
1303
- const node = new FileImageInputNode(settings, client, unregisterNode);
1304
- await node.initialised;
1305
- return node;
1306
- }
1307
1307
  }
1308
1308
  exports.FileImageInputNode = FileImageInputNode;
1309
1309
  /**
@@ -1311,6 +1311,12 @@ exports.FileImageInputNode = FileImageInputNode;
1311
1311
  * see: {@link NorskInput.fileMp4}
1312
1312
  */
1313
1313
  class FileMp4InputNode extends common_1.SourceMediaNode {
1314
+ /** @internal */
1315
+ static async create(settings, client, unregisterNode) {
1316
+ const node = new FileMp4InputNode(settings, client, unregisterNode);
1317
+ await node.initialised;
1318
+ return node;
1319
+ }
1314
1320
  /** @internal */
1315
1321
  constructor(settings, client, unregisterNode) {
1316
1322
  super(client, settings.onOutboundContextChange);
@@ -1380,12 +1386,6 @@ class FileMp4InputNode extends common_1.SourceMediaNode {
1380
1386
  (0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "mp4file", reject, settings);
1381
1387
  });
1382
1388
  }
1383
- /** @internal */
1384
- static async create(settings, client, unregisterNode) {
1385
- const node = new FileMp4InputNode(settings, client, unregisterNode);
1386
- await node.initialised;
1387
- return node;
1388
- }
1389
1389
  /**
1390
1390
  * @public
1391
1391
  * Applies a gradual nudge to the outgoing stream timestamps by the specified number of milliseconds
@@ -1419,6 +1419,12 @@ exports.FileMp4InputNode = FileMp4InputNode;
1419
1419
  * see: {@link NorskInput.fileWav}
1420
1420
  */
1421
1421
  class FileWavInputNode extends common_1.SourceMediaNode {
1422
+ /** @internal */
1423
+ static async create(settings, client, unregisterNode) {
1424
+ const node = new FileWavInputNode(settings, client, unregisterNode);
1425
+ await node.initialised;
1426
+ return node;
1427
+ }
1422
1428
  /** @internal */
1423
1429
  constructor(settings, client, unregisterNode) {
1424
1430
  super(client, settings.onOutboundContextChange);
@@ -1453,12 +1459,6 @@ class FileWavInputNode extends common_1.SourceMediaNode {
1453
1459
  (0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "mp4file", reject, settings);
1454
1460
  });
1455
1461
  }
1456
- /** @internal */
1457
- static async create(settings, client, unregisterNode) {
1458
- const node = new FileWavInputNode(settings, client, unregisterNode);
1459
- await node.initialised;
1460
- return node;
1461
- }
1462
1462
  }
1463
1463
  exports.FileWavInputNode = FileWavInputNode;
1464
1464
  //# sourceMappingURL=input.js.map
@@ -2,19 +2,19 @@ import { AutoSinkMediaNode, SinkNodeSettings, SourceMediaNode, StreamStatisticsM
2
2
  import { InputSettings } from "./input";
3
3
  import { MediaStoreStreamSelection, StreamKey, StreamMetadata, X264Codec, X265Codec } from "./types";
4
4
  /** @public */
5
- export declare type MediaStoreExpireByTime = {
5
+ export type MediaStoreExpireByTime = {
6
6
  expire: "byTime";
7
7
  durationS: number;
8
8
  };
9
9
  /** @public */
10
- export declare type MediaStoreExpireBySize = {
10
+ export type MediaStoreExpireBySize = {
11
11
  expire: "bySize";
12
12
  size: bigint;
13
13
  };
14
14
  /** @public */
15
- export declare type MediaStoreExpiry = MediaStoreExpireBySize | MediaStoreExpireByTime;
15
+ export type MediaStoreExpiry = MediaStoreExpireBySize | MediaStoreExpireByTime;
16
16
  /** @public */
17
- export declare type MediaStoreCutRequest = {
17
+ export type MediaStoreCutRequest = {
18
18
  fileFormat: "mp4";
19
19
  id: string;
20
20
  cuts: MediaStoreCut[];
@@ -26,7 +26,7 @@ export declare type MediaStoreCutRequest = {
26
26
  progressCb?: (progress: number) => void;
27
27
  };
28
28
  /** @public */
29
- export declare type MediaStoreStreamVersion = {
29
+ export type MediaStoreStreamVersion = {
30
30
  versionNum: number;
31
31
  metadata: StreamMetadata;
32
32
  startDateTime: Date;
@@ -34,12 +34,12 @@ export declare type MediaStoreStreamVersion = {
34
34
  active: boolean;
35
35
  };
36
36
  /** @public */
37
- export declare type MediaStoreStream = {
37
+ export type MediaStoreStream = {
38
38
  streamKey: StreamKey;
39
39
  versions: MediaStoreStreamVersion[];
40
40
  };
41
41
  /** @public */
42
- export declare type MediaStoreSession = {
42
+ export type MediaStoreSession = {
43
43
  sessionNum: number;
44
44
  streams: MediaStoreStream[];
45
45
  };
@@ -90,7 +90,7 @@ export declare class MediaStoreRecorderCut {
90
90
  */
91
91
  sessionNum?: number;
92
92
  }
93
- declare type MediaStoreCut = {
93
+ type MediaStoreCut = {
94
94
  mediaStoreName: string;
95
95
  cut: {
96
96
  type: "asset";
@@ -163,20 +163,20 @@ export declare class MediaStoreActiveCut {
163
163
  cancel(): void;
164
164
  }
165
165
  /** @public */
166
- export declare type MediaStoreAssetFileWithHash = {
166
+ export type MediaStoreAssetFileWithHash = {
167
167
  file: string;
168
168
  hash: string;
169
169
  importIfNeeded?: boolean;
170
170
  };
171
171
  /** @public */
172
- export declare type MediaStoreAssetFile = {
172
+ export type MediaStoreAssetFile = {
173
173
  file: string;
174
174
  importIfNeeded?: boolean;
175
175
  };
176
176
  /** @public */
177
- export declare type MediaStoreAssetSource = MediaStoreAssetFileWithHash | MediaStoreAssetFile;
177
+ export type MediaStoreAssetSource = MediaStoreAssetFileWithHash | MediaStoreAssetFile;
178
178
  /** @public */
179
- export declare type MediaStoreAssetSettings = {
179
+ export type MediaStoreAssetSettings = {
180
180
  name: string;
181
181
  source?: MediaStoreAssetSource;
182
182
  path: string;