@norskvideo/norsk-studio-alpha 1.27.0-2025-09-08-fdd138b9 → 1.27.0-2025-09-17-ca470951

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/client/info.js CHANGED
@@ -39,7 +39,7 @@ var require_util = __commonJS({
39
39
  exports.getObjectByType = getObjectByType;
40
40
  exports.getObjectByPath = getObjectByPath;
41
41
  exports.displayNodeId = displayNodeId;
42
- exports.assertUnreachable = assertUnreachable4;
42
+ exports.assertUnreachable = assertUnreachable5;
43
43
  exports.waitForCondition = waitForCondition;
44
44
  exports.streamMatchesExpected = streamMatchesExpected;
45
45
  exports.shortStreamNameFromDefinition = shortStreamNameFromDefinition;
@@ -74,7 +74,7 @@ var require_util = __commonJS({
74
74
  url = url.substring(0, url.length - "/index.html".length);
75
75
  if (url.endsWith("/"))
76
76
  url = url.substring(0, url.length - 1);
77
- return new URL(url);
77
+ return new URL(url, window.location.origin);
78
78
  }
79
79
  function componentDocs(componentType, env) {
80
80
  return new URL(`${docsBaseUrl(env)}/components/${componentType}.html`);
@@ -113,7 +113,7 @@ var require_util = __commonJS({
113
113
  }
114
114
  return document2.components[id]?.config?.displayName ?? id;
115
115
  }
116
- function assertUnreachable4(_) {
116
+ function assertUnreachable5(_) {
117
117
  throw new Error("Didn't expect to get here");
118
118
  }
119
119
  async function waitForCondition(condition, timeout, interval, name) {
@@ -455,9 +455,92 @@ var require_hls = __commonJS({
455
455
  }
456
456
  });
457
457
 
458
- // build/output.recorder/info.js
458
+ // build/output.player/info.js
459
459
  var import_util = __toESM(require_util());
460
+
461
+ // build/output.player/summary-view.js
462
+ var import_jsx_runtime = __toESM(require_jsx_runtime());
463
+ function SummaryView({ state }) {
464
+ {
465
+ }
466
+ return (0, import_jsx_runtime.jsxs)("div", { className: "output-player", children: [displaySessions("Active", state.active ? [state.active] : []), displaySessions("Past sessions", state.sessions)] });
467
+ }
468
+ var sessionLink = ({ audio, video }) => {
469
+ if (!audio.tamsId || !video.tamsId)
470
+ return;
471
+ const tamsUrl = ({ tamsId }) => `http://localhost:6791/x-tams/flows/${tamsId}`;
472
+ return `http://localhost:5173/?${tamsUrl(audio)},${tamsUrl(video)}`;
473
+ };
474
+ var displaySessions = (name, sessions) => {
475
+ if (!sessions.length)
476
+ return null;
477
+ return (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [(0, import_jsx_runtime.jsx)("h3", { className: "text-lg font-semibold mb-2 mt-2 dark:text-gray-300", children: name }), (0, import_jsx_runtime.jsx)("ol", { className: "list-none", children: sessions.slice().reverse().map((session) => (0, import_jsx_runtime.jsx)("li", { children: (0, import_jsx_runtime.jsxs)("a", { target: "_blank", href: sessionLink(session), children: ["Play session ", new Date(session.video.startIso).toLocaleTimeString(), " (", (session.video.durationMs / 6e4).toFixed(0), " minutes)"] }) })) })] });
478
+ };
479
+ var summary_view_default = SummaryView;
480
+
481
+ // build/output.player/info.js
460
482
  function info_default(R) {
483
+ const { defineComponent } = R;
484
+ return defineComponent({
485
+ identifier: "output.player",
486
+ category: "output",
487
+ name: "Record and Playback",
488
+ description: "Record a video and audio stream and open a player for the recording",
489
+ subscription: {
490
+ accepts: {
491
+ type: "simple-stream",
492
+ audio: true,
493
+ video: true
494
+ }
495
+ },
496
+ display: (_desc) => {
497
+ return {};
498
+ },
499
+ runtime: {
500
+ initialState: () => ({
501
+ active: void 0,
502
+ sessions: []
503
+ }),
504
+ handleEvent: (ev, s) => {
505
+ const evt = ev.type;
506
+ switch (evt) {
507
+ case "updated":
508
+ s.active = ev.active;
509
+ s.sessions = ev.sessions;
510
+ break;
511
+ default:
512
+ (0, import_util.assertUnreachable)(evt);
513
+ }
514
+ return { ...s };
515
+ },
516
+ summary: summary_view_default
517
+ },
518
+ configForm: {
519
+ form: {
520
+ storePath: {
521
+ help: "The path to which recordings will be made",
522
+ hint: {
523
+ type: "text",
524
+ envOverride: true,
525
+ optional: false
526
+ }
527
+ },
528
+ expiryHours: {
529
+ help: "Expiry time in hours for the store",
530
+ hint: {
531
+ type: "numeric",
532
+ defaultValue: 24,
533
+ envOverride: true
534
+ }
535
+ }
536
+ }
537
+ }
538
+ });
539
+ }
540
+
541
+ // build/output.recorder/info.js
542
+ var import_util2 = __toESM(require_util());
543
+ function info_default2(R) {
461
544
  const { defineComponent } = R;
462
545
  return defineComponent({
463
546
  identifier: "output.recorder",
@@ -495,7 +578,7 @@ function info_default(R) {
495
578
  s.cuts[s.cuts.length - 1] = { id: ev.id, percent: 100, createdMs: s.cuts[s.cuts.length - 1].createdMs };
496
579
  break;
497
580
  default:
498
- (0, import_util.assertUnreachable)(evt);
581
+ (0, import_util2.assertUnreachable)(evt);
499
582
  }
500
583
  while (s.cuts.length > 10) {
501
584
  s.cuts.splice(0, 1);
@@ -538,11 +621,11 @@ function info_default(R) {
538
621
  var import_config = __toESM(require_config());
539
622
 
540
623
  // build/processor.actionReplay/summary.js
541
- var import_jsx_runtime = __toESM(require_jsx_runtime());
624
+ var import_jsx_runtime2 = __toESM(require_jsx_runtime());
542
625
  var import_react = __toESM(require_react());
543
626
  var import_hls = __toESM(require_hls());
544
627
  var changingDuration = false;
545
- function SummaryView({ state, config, sendCommand }) {
628
+ function SummaryView2({ state, config, sendCommand }) {
546
629
  const url = state.contentPlayerUrl;
547
630
  const id = config.id;
548
631
  const previewVideo = (0, import_react.useRef)(null);
@@ -562,8 +645,8 @@ function SummaryView({ state, config, sendCommand }) {
562
645
  }
563
646
  }, [state.contentPlayerUrl]);
564
647
  if (!url)
565
- return (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: "..." });
566
- return (0, import_jsx_runtime.jsxs)("div", { className: "mb-5", children: [(0, import_jsx_runtime.jsx)("h5", { children: "Preview" }), (0, import_jsx_runtime.jsx)("video", { ref: previewVideo, controls: true, onSeeked, autoPlay: true, muted: true, className: state.replaying ? "hidden" : "", id: `${id}-video` }), state.replaying ? (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: "Current Performing Replay" }) : (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [lastSeek ? (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [(0, import_jsx_runtime.jsxs)("p", { children: ["Replay from ", lastSeek.time.toFixed(1), "(s) "] }), (0, import_jsx_runtime.jsxs)("p", { className: "block mb-2 text-sm font-medium text-gray-900 dark:text-white", children: ["Duration: ", playbackDuration, "s"] }), (0, import_jsx_runtime.jsx)("input", { id: "duration-range", type: "range", min: currentMinDuration(), max: currentMaxDuration(), defaultValue: playbackDuration, className: "w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700", onChange: onDurationChange, onInput: onDurationChange })] }) : (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {}), (0, import_jsx_runtime.jsx)("button", { onClick: sendReplayCommand, type: "button", className: "mt-2 mb-2 text-white w-full justify-center bg-primary-700 hover:bg-primary-800 focus:ring-4 focus:outline-none focus:ring-primary-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800", children: "Replay" })] })] });
648
+ return (0, import_jsx_runtime2.jsx)(import_jsx_runtime2.Fragment, { children: "..." });
649
+ return (0, import_jsx_runtime2.jsxs)("div", { className: "mb-5", children: [(0, import_jsx_runtime2.jsx)("h5", { children: "Preview" }), (0, import_jsx_runtime2.jsx)("video", { ref: previewVideo, controls: true, onSeeked, autoPlay: true, muted: true, className: state.replaying ? "hidden" : "", id: `${id}-video` }), state.replaying ? (0, import_jsx_runtime2.jsx)(import_jsx_runtime2.Fragment, { children: "Current Performing Replay" }) : (0, import_jsx_runtime2.jsxs)(import_jsx_runtime2.Fragment, { children: [lastSeek ? (0, import_jsx_runtime2.jsxs)(import_jsx_runtime2.Fragment, { children: [(0, import_jsx_runtime2.jsxs)("p", { children: ["Replay from ", lastSeek.time.toFixed(1), "(s) "] }), (0, import_jsx_runtime2.jsxs)("p", { className: "block mb-2 text-sm font-medium text-gray-900 dark:text-white", children: ["Duration: ", playbackDuration, "s"] }), (0, import_jsx_runtime2.jsx)("input", { id: "duration-range", type: "range", min: currentMinDuration(), max: currentMaxDuration(), defaultValue: playbackDuration, className: "w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700", onChange: onDurationChange, onInput: onDurationChange })] }) : (0, import_jsx_runtime2.jsx)(import_jsx_runtime2.Fragment, {}), (0, import_jsx_runtime2.jsx)("button", { onClick: sendReplayCommand, type: "button", className: "mt-2 mb-2 text-white w-full justify-center bg-primary-700 hover:bg-primary-800 focus:ring-4 focus:outline-none focus:ring-primary-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800", children: "Replay" })] })] });
567
650
  function sendReplayCommand() {
568
651
  if (!previewVideo.current)
569
652
  return;
@@ -602,10 +685,10 @@ function SummaryView({ state, config, sendCommand }) {
602
685
  setLastSeek(void 0);
603
686
  }
604
687
  }
605
- var summary_default = SummaryView;
688
+ var summary_default = SummaryView2;
606
689
 
607
690
  // build/processor.actionReplay/info.js
608
- function info_default2({ defineComponent, assertUnreachable: assertUnreachable4 }) {
691
+ function info_default3({ defineComponent, assertUnreachable: assertUnreachable5 }) {
609
692
  return defineComponent({
610
693
  identifier: "processor.actionReplay",
611
694
  category: "processor",
@@ -650,7 +733,7 @@ function info_default2({ defineComponent, assertUnreachable: assertUnreachable4
650
733
  case "replay-finished":
651
734
  return { ...state, replaying: false };
652
735
  default:
653
- return assertUnreachable4(evType);
736
+ return assertUnreachable5(evType);
654
737
  }
655
738
  }
656
739
  },
@@ -670,7 +753,7 @@ function info_default2({ defineComponent, assertUnreachable: assertUnreachable4
670
753
  }
671
754
 
672
755
  // build/processor.audioLevel/inline-view.js
673
- var import_jsx_runtime2 = __toESM(require_jsx_runtime());
756
+ var import_jsx_runtime3 = __toESM(require_jsx_runtime());
674
757
  var import_react2 = __toESM(require_react());
675
758
  function InlineView({ state, raise }) {
676
759
  raise && (0, import_react2.useEffect)(raise, []);
@@ -687,18 +770,18 @@ function InlineView({ state, raise }) {
687
770
  return Math.max(0, 100 - snapped);
688
771
  }
689
772
  if (!state.levels) {
690
- return (0, import_jsx_runtime2.jsx)(import_jsx_runtime2.Fragment, {});
773
+ return (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, {});
691
774
  }
692
775
  {
693
776
  }
694
- return (0, import_jsx_runtime2.jsx)("div", { className: "processor-audioLevel", children: (0, import_jsx_runtime2.jsx)("div", { className: "audio-level-container-inline", children: (0, import_jsx_runtime2.jsx)("div", { className: "preview-levels-inline", children: (0, import_jsx_runtime2.jsx)("div", { className: `preview-level clip-${percentage(state.levels)}` }) }) }) });
777
+ return (0, import_jsx_runtime3.jsx)("div", { className: "processor-audioLevel", children: (0, import_jsx_runtime3.jsx)("div", { className: "audio-level-container-inline", children: (0, import_jsx_runtime3.jsx)("div", { className: "preview-levels-inline", children: (0, import_jsx_runtime3.jsx)("div", { className: `preview-level clip-${percentage(state.levels)}` }) }) }) });
695
778
  }
696
779
  var inline_view_default = InlineView;
697
780
 
698
781
  // build/processor.audioLevel/summary-view.js
699
- var import_jsx_runtime3 = __toESM(require_jsx_runtime());
782
+ var import_jsx_runtime4 = __toESM(require_jsx_runtime());
700
783
  var import_react3 = __toESM(require_react());
701
- function SummaryView2({ state, sendCommand }) {
784
+ function SummaryView3({ state, sendCommand }) {
702
785
  const [sliderValue, setSliderValue] = (0, import_react3.useState)(state.sliderGain || "0");
703
786
  const [canSetVolume, setCanSetVolume] = (0, import_react3.useState)(true);
704
787
  const throttleDelay = 100;
@@ -717,7 +800,7 @@ function SummaryView2({ state, sendCommand }) {
717
800
  const gainClasses = state.levels ? "col-start-2 self-end" : "col-start-1 col-end-3 self-end justify-self-start";
718
801
  {
719
802
  }
720
- return (0, import_jsx_runtime3.jsx)("div", { className: "processor-audioLevel", children: (0, import_jsx_runtime3.jsxs)("div", { className: "audio-level-container grid mb-6 relative justify-items-center", children: [(0, import_jsx_runtime3.jsxs)("div", { className: `preview-levels-summary ${state.levels ? "" : "opacity-30"}`, children: [(0, import_jsx_runtime3.jsx)("div", { className: "relative w-full h-full", children: (0, import_jsx_runtime3.jsx)("div", { className: `preview-level absolute h-full w-4/6 clip-${percentage(state.levels)}` }) }), (0, import_jsx_runtime3.jsxs)("div", { className: "relative", children: [(0, import_jsx_runtime3.jsx)("div", { className: "text-sm absolute -top-1", children: "0dB" }), (0, import_jsx_runtime3.jsx)("div", { className: "text-sm absolute top-14", children: "-50dB" }), (0, import_jsx_runtime3.jsx)("div", { className: "text-sm absolute -bottom-2", children: "-100dB" })] })] }), (0, import_jsx_runtime3.jsx)("div", { className: "h-full flex items-center", children: (0, import_jsx_runtime3.jsx)("input", { id: "audio-slider", className: `-rotate-90 h-2.5 ${state.levels ? "" : "opacity-20"}`, type: "range", name: "gain", min: "-40", max: "40", step: "1", defaultValue: state.sliderGain || "0", disabled: !state.levels, onChange: (e) => {
803
+ return (0, import_jsx_runtime4.jsx)("div", { className: "processor-audioLevel", children: (0, import_jsx_runtime4.jsxs)("div", { className: "audio-level-container grid mb-6 relative justify-items-center", children: [(0, import_jsx_runtime4.jsxs)("div", { className: `preview-levels-summary ${state.levels ? "" : "opacity-30"}`, children: [(0, import_jsx_runtime4.jsx)("div", { className: "relative w-full h-full", children: (0, import_jsx_runtime4.jsx)("div", { className: `preview-level absolute h-full w-4/6 clip-${percentage(state.levels)}` }) }), (0, import_jsx_runtime4.jsxs)("div", { className: "relative", children: [(0, import_jsx_runtime4.jsx)("div", { className: "text-sm absolute -top-1", children: "0dB" }), (0, import_jsx_runtime4.jsx)("div", { className: "text-sm absolute top-14", children: "-50dB" }), (0, import_jsx_runtime4.jsx)("div", { className: "text-sm absolute -bottom-2", children: "-100dB" })] })] }), (0, import_jsx_runtime4.jsx)("div", { className: "h-full flex items-center", children: (0, import_jsx_runtime4.jsx)("input", { id: "audio-slider", className: `-rotate-90 h-2.5 ${state.levels ? "" : "opacity-20"}`, type: "range", name: "gain", min: "-40", max: "40", step: "1", defaultValue: state.sliderGain || "0", disabled: !state.levels, onChange: (e) => {
721
804
  setSliderValue(e.target.value);
722
805
  if (canSetVolume) {
723
806
  setCanSetVolume(false);
@@ -728,12 +811,12 @@ function SummaryView2({ state, sendCommand }) {
728
811
  }
729
812
  }, onMouseUp: (_e) => {
730
813
  sendCommand({ type: "set-gain", value: Number(sliderValue) });
731
- } }) }), (0, import_jsx_runtime3.jsx)("div", { className: gainClasses, children: state.levels ? "Gain:" : "No incoming audio" }), (0, import_jsx_runtime3.jsx)("div", { className: "col-start-2", children: state.levels ? `${Number(sliderValue) > 0 ? "+" : ""} ${sliderValue} dB` : "" })] }) });
814
+ } }) }), (0, import_jsx_runtime4.jsx)("div", { className: gainClasses, children: state.levels ? "Gain:" : "No incoming audio" }), (0, import_jsx_runtime4.jsx)("div", { className: "col-start-2", children: state.levels ? `${Number(sliderValue) > 0 ? "+" : ""} ${sliderValue} dB` : "" })] }) });
732
815
  }
733
- var summary_view_default = SummaryView2;
816
+ var summary_view_default2 = SummaryView3;
734
817
 
735
818
  // build/processor.audioLevel/info.js
736
- function info_default3({ defineComponent, validation: { Z } }) {
819
+ function info_default4({ defineComponent, validation: { Z } }) {
737
820
  return defineComponent({
738
821
  identifier: "processor.audioLevel",
739
822
  category: "processor",
@@ -770,12 +853,12 @@ function info_default3({ defineComponent, validation: { Z } }) {
770
853
  state.nodeGain = ev.nodeGain;
771
854
  break;
772
855
  default:
773
- assertUnreachable2(evType);
856
+ assertUnreachable3(evType);
774
857
  }
775
858
  return { ...state };
776
859
  },
777
860
  inline: inline_view_default,
778
- summary: summary_view_default
861
+ summary: summary_view_default2
779
862
  },
780
863
  configForm: {
781
864
  form: {
@@ -785,12 +868,12 @@ function info_default3({ defineComponent, validation: { Z } }) {
785
868
  }
786
869
  });
787
870
  }
788
- function assertUnreachable2(_) {
871
+ function assertUnreachable3(_) {
789
872
  throw new Error("Didn't expect to get here");
790
873
  }
791
874
 
792
875
  // build/processor.delayAll/info.js
793
- function info_default4({ defineComponent }) {
876
+ function info_default5({ defineComponent }) {
794
877
  return defineComponent({
795
878
  identifier: "processor.delayAll",
796
879
  category: "processor",
@@ -833,7 +916,7 @@ function info_default4({ defineComponent }) {
833
916
  }
834
917
 
835
918
  // build/processor.whisper-transcribe/info.js
836
- function info_default5({ defineComponent, validation: { Z } }) {
919
+ function info_default6({ defineComponent, validation: { Z } }) {
837
920
  return defineComponent({
838
921
  identifier: "processor.whisper-transcribe",
839
922
  category: "processor",
@@ -877,7 +960,7 @@ function info_default5({ defineComponent, validation: { Z } }) {
877
960
  }
878
961
 
879
962
  // build/util.timestamps/inline-view.js
880
- var import_jsx_runtime4 = __toESM(require_jsx_runtime());
963
+ var import_jsx_runtime5 = __toESM(require_jsx_runtime());
881
964
  var import_react4 = __toESM(require_react());
882
965
 
883
966
  // ../../node_modules/@kurkle/color/dist/color.esm.js
@@ -15266,12 +15349,12 @@ function InlineView2({ state, config: _2 }) {
15266
15349
  }, [state]);
15267
15350
  {
15268
15351
  }
15269
- return (0, import_jsx_runtime4.jsx)("div", { className: "util-timestamp", children: (0, import_jsx_runtime4.jsx)("div", { className: "bg-gray-50 dark:bg-gray-700 rounded", style: { width: "360px", height: "200px", padding: "10px" }, children: (0, import_jsx_runtime4.jsx)("canvas", { className: "bg-gray-50 dark:bg-gray-700 rounded", ref: chartContainer }) }) });
15352
+ return (0, import_jsx_runtime5.jsx)("div", { className: "util-timestamp", children: (0, import_jsx_runtime5.jsx)("div", { className: "bg-gray-50 dark:bg-gray-700 rounded", style: { width: "360px", height: "200px", padding: "10px" }, children: (0, import_jsx_runtime5.jsx)("canvas", { className: "bg-gray-50 dark:bg-gray-700 rounded", ref: chartContainer }) }) });
15270
15353
  }
15271
15354
  var inline_view_default2 = InlineView2;
15272
15355
 
15273
15356
  // build/util.timestamps/info.js
15274
- function info_default6(R) {
15357
+ function info_default7(R) {
15275
15358
  const { defineComponent, All } = R;
15276
15359
  return defineComponent({
15277
15360
  identifier: "util.timestamps",
@@ -15309,7 +15392,7 @@ function info_default6(R) {
15309
15392
  break;
15310
15393
  }
15311
15394
  default:
15312
- assertUnreachable3(evType);
15395
+ assertUnreachable4(evType);
15313
15396
  }
15314
15397
  return { ...state };
15315
15398
  },
@@ -15320,7 +15403,7 @@ function info_default6(R) {
15320
15403
  }
15321
15404
  });
15322
15405
  }
15323
- function assertUnreachable3(_) {
15406
+ function assertUnreachable4(_) {
15324
15407
  throw new Error("Didn't expect to get here");
15325
15408
  }
15326
15409
 
@@ -15344,6 +15427,7 @@ AllComponents.push((r) => info_default3(r));
15344
15427
  AllComponents.push((r) => info_default4(r));
15345
15428
  AllComponents.push((r) => info_default5(r));
15346
15429
  AllComponents.push((r) => info_default6(r));
15430
+ AllComponents.push((r) => info_default7(r));
15347
15431
  export {
15348
15432
  getNodeInfo as default
15349
15433
  };
package/client/style.css CHANGED
@@ -659,6 +659,10 @@ video {
659
659
  cursor: pointer;
660
660
  }
661
661
 
662
+ .list-none {
663
+ list-style-type: none;
664
+ }
665
+
662
666
  .appearance-none {
663
667
  -webkit-appearance: none;
664
668
  -moz-appearance: none;
@@ -722,6 +726,11 @@ video {
722
726
  text-align: center;
723
727
  }
724
728
 
729
+ .text-lg {
730
+ font-size: 1.125rem;
731
+ line-height: 1.75rem;
732
+ }
733
+
725
734
  .text-sm {
726
735
  font-size: 0.875rem;
727
736
  line-height: 1.25rem;
@@ -731,6 +740,10 @@ video {
731
740
  font-weight: 500;
732
741
  }
733
742
 
743
+ .font-semibold {
744
+ font-weight: 600;
745
+ }
746
+
734
747
  .text-gray-900 {
735
748
  --tw-text-opacity: 1;
736
749
  color: rgb(14 21 32 / var(--tw-text-opacity));
@@ -749,6 +762,10 @@ video {
749
762
  opacity: 0.3;
750
763
  }
751
764
 
765
+ .\!filter {
766
+ filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow) !important;
767
+ }
768
+
752
769
  .filter {
753
770
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
754
771
  }
@@ -970,6 +987,11 @@ video {
970
987
  background-color: rgb(37 99 235 / var(--tw-bg-opacity));
971
988
  }
972
989
 
990
+ .dark\:text-gray-300:is(.dark *) {
991
+ --tw-text-opacity: 1;
992
+ color: rgb(209 213 219 / var(--tw-text-opacity));
993
+ }
994
+
973
995
  .dark\:text-white:is(.dark *) {
974
996
  --tw-text-opacity: 1;
975
997
  color: rgb(255 255 255 / var(--tw-text-opacity));
package/lib/info.js CHANGED
@@ -17,16 +17,18 @@ function getNodeInfo(r, type) {
17
17
  }
18
18
  return InitialisedComponents[type];
19
19
  }
20
- const info_1 = __importDefault(require("./output.recorder/info"));
20
+ const info_1 = __importDefault(require("./output.player/info"));
21
21
  AllComponents.push((r) => (0, info_1.default)(r));
22
- const info_2 = __importDefault(require("./processor.actionReplay/info"));
22
+ const info_2 = __importDefault(require("./output.recorder/info"));
23
23
  AllComponents.push((r) => (0, info_2.default)(r));
24
- const info_3 = __importDefault(require("./processor.audioLevel/info"));
24
+ const info_3 = __importDefault(require("./processor.actionReplay/info"));
25
25
  AllComponents.push((r) => (0, info_3.default)(r));
26
- const info_4 = __importDefault(require("./processor.delayAll/info"));
26
+ const info_4 = __importDefault(require("./processor.audioLevel/info"));
27
27
  AllComponents.push((r) => (0, info_4.default)(r));
28
- const info_5 = __importDefault(require("./processor.whisper-transcribe/info"));
28
+ const info_5 = __importDefault(require("./processor.delayAll/info"));
29
29
  AllComponents.push((r) => (0, info_5.default)(r));
30
- const info_6 = __importDefault(require("./util.timestamps/info"));
30
+ const info_6 = __importDefault(require("./processor.whisper-transcribe/info"));
31
31
  AllComponents.push((r) => (0, info_6.default)(r));
32
+ const info_7 = __importDefault(require("./util.timestamps/info"));
33
+ AllComponents.push((r) => (0, info_7.default)(r));
32
34
  //# sourceMappingURL=info.js.map
package/lib/info.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"info.js","sourceRoot":"","sources":["../src/info.ts"],"names":[],"mappings":";;;;;AAYA,8BASC;AAdD,MAAM,qBAAqB,GAA4C,EAAE,CAAC;AAC1E,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB,MAAM,aAAa,GAAkD,EAAE,CAAC;AAExE,SAAwB,WAAW,CAAC,CAAe,EAAE,IAAY;IAC/D,IAAG,CAAC,WAAW,EAAE,CAAC;QAChB,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACf,qBAAqB,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAA;QACF,WAAW,GAAG,IAAI,CAAC;IACrB,CAAC;IACD,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,kEAAqD;AACrD,aAAa,CAAC,IAAI,CAAC,CAAC,CAAe,EAAE,EAAE,CAAC,IAAA,cAAe,EAAC,CAAC,CAAoC,CAAC,CAAC;AAC/F,yEAAmE;AACnE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAe,EAAE,EAAE,CAAC,IAAA,cAAsB,EAAC,CAAC,CAAoC,CAAC,CAAC;AACtG,uEAA+D;AAC/D,aAAa,CAAC,IAAI,CAAC,CAAC,CAAe,EAAE,EAAE,CAAC,IAAA,cAAoB,EAAC,CAAC,CAAoC,CAAC,CAAC;AACpG,qEAA2D;AAC3D,aAAa,CAAC,IAAI,CAAC,CAAC,CAAe,EAAE,EAAE,CAAC,IAAA,cAAkB,EAAC,CAAC,CAAoC,CAAC,CAAC;AAClG,+EAA+E;AAC/E,aAAa,CAAC,IAAI,CAAC,CAAC,CAAe,EAAE,EAAE,CAAC,IAAA,cAA4B,EAAC,CAAC,CAAoC,CAAC,CAAC;AAC5G,kEAAqD;AACrD,aAAa,CAAC,IAAI,CAAC,CAAC,CAAe,EAAE,EAAE,CAAC,IAAA,cAAe,EAAC,CAAC,CAAoC,CAAC,CAAC"}
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../src/info.ts"],"names":[],"mappings":";;;;;AAYA,8BASC;AAdD,MAAM,qBAAqB,GAA4C,EAAE,CAAC;AAC1E,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB,MAAM,aAAa,GAAkD,EAAE,CAAC;AAExE,SAAwB,WAAW,CAAC,CAAe,EAAE,IAAY;IAC/D,IAAG,CAAC,WAAW,EAAE,CAAC;QAChB,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACf,qBAAqB,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAA;QACF,WAAW,GAAG,IAAI,CAAC;IACrB,CAAC;IACD,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,gEAAiD;AACjD,aAAa,CAAC,IAAI,CAAC,CAAC,CAAe,EAAE,EAAE,CAAC,IAAA,cAAa,EAAC,CAAC,CAAoC,CAAC,CAAC;AAC7F,kEAAqD;AACrD,aAAa,CAAC,IAAI,CAAC,CAAC,CAAe,EAAE,EAAE,CAAC,IAAA,cAAe,EAAC,CAAC,CAAoC,CAAC,CAAC;AAC/F,yEAAmE;AACnE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAe,EAAE,EAAE,CAAC,IAAA,cAAsB,EAAC,CAAC,CAAoC,CAAC,CAAC;AACtG,uEAA+D;AAC/D,aAAa,CAAC,IAAI,CAAC,CAAC,CAAe,EAAE,EAAE,CAAC,IAAA,cAAoB,EAAC,CAAC,CAAoC,CAAC,CAAC;AACpG,qEAA2D;AAC3D,aAAa,CAAC,IAAI,CAAC,CAAC,CAAe,EAAE,EAAE,CAAC,IAAA,cAAkB,EAAC,CAAC,CAAoC,CAAC,CAAC;AAClG,+EAA+E;AAC/E,aAAa,CAAC,IAAI,CAAC,CAAC,CAAe,EAAE,EAAE,CAAC,IAAA,cAA4B,EAAC,CAAC,CAAoC,CAAC,CAAC;AAC5G,kEAAqD;AACrD,aAAa,CAAC,IAAI,CAAC,CAAC,CAAe,EAAE,EAAE,CAAC,IAAA,cAAe,EAAC,CAAC,CAAoC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { RecorderEvent, RecorderState } from "./runtime";
2
+ import type Registration from "@norskvideo/norsk-studio/lib/extension/registration";
3
+ export default function (R: Registration): import("@norskvideo/norsk-studio/lib/extension/client-types").NodeInfo<{
4
+ id: string;
5
+ displayName: string;
6
+ storePath: string;
7
+ expiryHours: number;
8
+ }, RecorderState, never, RecorderEvent>;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = default_1;
7
+ const util_1 = require("@norskvideo/norsk-studio/lib/shared/util");
8
+ const summary_view_1 = __importDefault(require("./summary-view"));
9
+ function default_1(R) {
10
+ const { defineComponent, } = R;
11
+ return defineComponent({
12
+ identifier: 'output.player',
13
+ category: 'output',
14
+ name: "Record and Playback",
15
+ description: "Record a video and audio stream and open a player for the recording",
16
+ subscription: {
17
+ accepts: {
18
+ type: "simple-stream",
19
+ audio: true,
20
+ video: true
21
+ }
22
+ },
23
+ display: (_desc) => { return {}; },
24
+ runtime: {
25
+ initialState: () => ({
26
+ active: undefined,
27
+ sessions: [],
28
+ }),
29
+ handleEvent: (ev, s) => {
30
+ const evt = ev.type;
31
+ switch (evt) {
32
+ case "updated":
33
+ s.active = ev.active;
34
+ s.sessions = ev.sessions;
35
+ break;
36
+ default:
37
+ (0, util_1.assertUnreachable)(evt);
38
+ }
39
+ return { ...s };
40
+ },
41
+ summary: summary_view_1.default,
42
+ },
43
+ configForm: {
44
+ form: {
45
+ storePath: {
46
+ help: "The path to which recordings will be made",
47
+ hint: {
48
+ type: 'text',
49
+ envOverride: true,
50
+ optional: false,
51
+ }
52
+ },
53
+ expiryHours: {
54
+ help: "Expiry time in hours for the store",
55
+ hint: {
56
+ type: "numeric",
57
+ defaultValue: 24,
58
+ envOverride: true,
59
+ }
60
+ }
61
+ }
62
+ }
63
+ });
64
+ }
65
+ //# sourceMappingURL=info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/output.player/info.ts"],"names":[],"mappings":";;;;;AAKA,4BA0DC;AA/DD,mEAA6E;AAG7E,kEAAyC;AAEzC,mBAAwB,CAAe;IACrC,MAAM,EACJ,eAAe,GAChB,GAAG,CAAC,CAAC;IAEN,OAAO,eAAe,CAAkE;QACtF,UAAU,EAAE,eAAe;QAC3B,QAAQ,EAAE,QAAQ;QAClB,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,qEAAqE;QAClF,YAAY,EAAE;YACZ,OAAO,EAAE;gBACP,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,IAAI;aACZ;SACF;QACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC;QAClC,OAAO,EAAE;YACP,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;gBACnB,MAAM,EAAE,SAAS;gBACjB,QAAQ,EAAE,EAAE;aACb,CAAC;YACF,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;gBACrB,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC;gBACpB,QAAQ,GAAG,EAAE,CAAC;oBACZ,KAAK,SAAS;wBACZ,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;wBACrB,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;wBACzB,MAAM;oBACR;wBACE,IAAA,wBAAiB,EAAC,GAAG,CAAC,CAAC;gBAC3B,CAAC;gBACD,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;YAClB,CAAC;YACD,OAAO,EAAE,sBAAW;SACrB;QACD,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,SAAS,EAAE;oBACT,IAAI,EAAE,2CAA2C;oBACjD,IAAI,EAAE;wBACJ,IAAI,EAAE,MAAM;wBACZ,WAAW,EAAE,IAAI;wBACjB,QAAQ,EAAE,KAAK;qBAChB;iBACF;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,oCAAoC;oBAC1C,IAAI,EAAE;wBACJ,IAAI,EAAE,SAAS;wBACf,YAAY,EAAE,EAAE;wBAChB,WAAW,EAAE,IAAI;qBAClB;iBACF;aACF;SACF;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { MediaStoreRecorderNode, Norsk, StreamKeyOverrideNode } from '@norskvideo/norsk-sdk';
2
+ import { CreatedMediaNode, InstanceRouteArgs, OnCreated, RelatedMediaNodes, RuntimeUpdates, ServerComponentDefinition, StudioComponentInputStream, StudioRuntime, ServerComponentSchemas } from '@norskvideo/norsk-studio/lib/extension/runtime-types';
3
+ import { components } from './types';
4
+ export type RecordedStreams = components['schemas']['RecordedStreams'];
5
+ export type RecorderSettings = components['schemas']['RecorderSettings'];
6
+ export type RecorderState = {
7
+ active: RecordedStreams['active'];
8
+ sessions: RecordedStreams['sessions'];
9
+ };
10
+ export type RecorderEvent = {
11
+ type: 'updated';
12
+ active: RecordedStreams['active'];
13
+ sessions: RecordedStreams['sessions'];
14
+ };
15
+ export type RecorderCommand = never;
16
+ export default class RecorderDefinition implements ServerComponentDefinition<RecorderSettings, Recorder, RecorderState, RecorderCommand, RecorderEvent> {
17
+ create(norsk: Norsk, cfg: RecorderSettings, cb: OnCreated<Recorder>, runtime: StudioRuntime<RecorderState, RecorderCommand, RecorderEvent>): Promise<void>;
18
+ schemas(): Promise<ServerComponentSchemas>;
19
+ handleCommand(recorder: Recorder, command: RecorderCommand): void;
20
+ instanceRoutes(): Promise<import("@norskvideo/norsk-studio/lib/extension/runtime-types").RouteInfo<InstanceRouteArgs<{
21
+ id: string;
22
+ displayName: string;
23
+ storePath: string;
24
+ expiryHours: number;
25
+ }, Recorder, RecorderState, never, RecorderEvent>>[]>;
26
+ }
27
+ export declare class Recorder implements CreatedMediaNode {
28
+ initialised: Promise<void>;
29
+ norsk: Norsk;
30
+ updates: RuntimeUpdates<RecorderState, RecorderCommand, RecorderEvent>;
31
+ recorder?: MediaStoreRecorderNode;
32
+ videoKey?: StreamKeyOverrideNode;
33
+ audioKey?: StreamKeyOverrideNode;
34
+ id: string;
35
+ cfg: RecorderSettings;
36
+ cutting: boolean;
37
+ cutIndex: number;
38
+ constructor(norsk: Norsk, { updates }: StudioRuntime<RecorderState, RecorderCommand, RecorderEvent>, cfg: RecorderSettings);
39
+ relatedMediaNodes: RelatedMediaNodes;
40
+ initialise(): Promise<void>;
41
+ subscribe(sources: StudioComponentInputStream[]): Promise<void>;
42
+ }
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Recorder = void 0;
7
+ const norsk_sdk_1 = require("@norskvideo/norsk-sdk");
8
+ const runtime_types_1 = require("@norskvideo/norsk-studio/lib/extension/runtime-types");
9
+ const api_1 = require("@norskvideo/norsk-studio/lib/server/api");
10
+ const path_1 = __importDefault(require("path"));
11
+ const util_1 = require("@norskvideo/norsk-studio/lib/shared/util");
12
+ const schemas_1 = require("@norskvideo/norsk-studio-built-ins/lib/shared/schemas");
13
+ const config_1 = __importDefault(require("@norskvideo/norsk-studio/lib/server/config"));
14
+ class RecorderDefinition {
15
+ async create(norsk, cfg, cb, runtime) {
16
+ const node = new Recorder(norsk, runtime, cfg);
17
+ await node.initialised;
18
+ cb(node);
19
+ }
20
+ async schemas() {
21
+ return (0, schemas_1.schemaFromTypes)(path_1.default.join(__dirname, 'types.yaml'), {
22
+ config: 'RecorderSettings'
23
+ });
24
+ }
25
+ handleCommand(recorder, command) {
26
+ const ct = command;
27
+ switch (ct) {
28
+ default:
29
+ (0, util_1.assertUnreachable)(ct);
30
+ }
31
+ }
32
+ async instanceRoutes() {
33
+ return (0, api_1.defineApi)(path_1.default.join(__dirname, 'types.yaml'), {
34
+ '/timeline': {
35
+ get: ({ runtime }) => async (_req, res) => {
36
+ res.status(200).json(runtime.updates.latest());
37
+ }
38
+ },
39
+ });
40
+ }
41
+ }
42
+ exports.default = RecorderDefinition;
43
+ const VideoKey = {
44
+ streamId: 256,
45
+ programNumber: 1,
46
+ sourceName: 'recorder',
47
+ renditionName: 'default'
48
+ };
49
+ const AudioKey = {
50
+ streamId: 257,
51
+ programNumber: 1,
52
+ sourceName: 'recorder',
53
+ renditionName: 'default'
54
+ };
55
+ class Recorder {
56
+ initialised;
57
+ norsk;
58
+ updates;
59
+ recorder;
60
+ videoKey;
61
+ audioKey;
62
+ id;
63
+ cfg;
64
+ cutting = false;
65
+ cutIndex = 0;
66
+ constructor(norsk, { updates }, cfg) {
67
+ this.cfg = cfg;
68
+ this.id = cfg.id;
69
+ this.norsk = norsk;
70
+ this.updates = updates;
71
+ this.relatedMediaNodes = new runtime_types_1.RelatedMediaNodes();
72
+ this.initialised = this.initialise();
73
+ }
74
+ relatedMediaNodes;
75
+ async initialise() {
76
+ this.recorder = await this.norsk.mediaStore.recorder({
77
+ id: `${this.id}-player-recorder`,
78
+ name: this.id,
79
+ path: this.cfg.storePath,
80
+ chunkFileDurationSeconds: 10,
81
+ expiry: {
82
+ expire: 'byTime',
83
+ durationS: this.cfg.expiryHours * 60 * 60
84
+ },
85
+ onClose: () => {
86
+ this.recorder = undefined;
87
+ }
88
+ });
89
+ this.videoKey = await this.norsk.processor.transform.streamKeyOverride({
90
+ streamKey: VideoKey
91
+ });
92
+ this.audioKey = await this.norsk.processor.transform.streamKeyOverride({
93
+ streamKey: AudioKey
94
+ });
95
+ this.recorder.subscribe([
96
+ { source: this.videoKey, sourceSelector: norsk_sdk_1.selectVideo },
97
+ { source: this.audioKey, sourceSelector: norsk_sdk_1.selectAudio }
98
+ ]);
99
+ this.relatedMediaNodes.addInputs([this.audioKey, this.videoKey]);
100
+ const TAMS_URL = `http://${config_1.default.norsk.host()}:${config_1.default.norsk.support_port()}/x-tams`;
101
+ const update = async () => {
102
+ if (!this.recorder)
103
+ return;
104
+ const d = await this.recorder.metadata();
105
+ const storeSessions = [];
106
+ for (const session of d) {
107
+ const detected = detectStreams(session.streams);
108
+ if (!detected)
109
+ continue;
110
+ const { audio: { item: { versions: audios }, index: audioIndex }, video: { item: { versions: videos }, index: videoIndex } } = detected;
111
+ const paired = audios.flatMap((audioVersion) => {
112
+ let found;
113
+ for (const video of videos) {
114
+ const overlap = concomitant(audioVersion, video);
115
+ if (!overlap)
116
+ continue;
117
+ if (!found)
118
+ found = video;
119
+ else if (overlap > concomitant(audioVersion, found))
120
+ found = video;
121
+ }
122
+ if (!found)
123
+ return [];
124
+ return [{
125
+ audio: { ...audioVersion, streamNum: audioIndex + 1 },
126
+ video: { ...found, streamNum: videoIndex + 1 },
127
+ session: session.sessionNum
128
+ }];
129
+ });
130
+ storeSessions.push(...paired);
131
+ }
132
+ const sources = await (await fetch(`${TAMS_URL}/sources`)).json();
133
+ const sessions = storeSessions.map(av => {
134
+ const sessionSources = sources.filter(tagFilter({
135
+ "__mediaStoreName": this.id,
136
+ "__mediaStoreSession": av.session,
137
+ "__mediaStoreType": "version",
138
+ }));
139
+ return {
140
+ audio: toAPI(av.audio, sessionSources),
141
+ video: toAPI(av.video, sessionSources),
142
+ sessionNum: av.session,
143
+ };
144
+ });
145
+ const active = sessions.slice().reverse().find(av => av.audio.active && av.video.active);
146
+ this.updates.raiseEvent({
147
+ type: 'updated',
148
+ active,
149
+ sessions,
150
+ });
151
+ setTimeout(() => void update(), 1000);
152
+ };
153
+ void update();
154
+ }
155
+ async subscribe(sources) {
156
+ this.audioKey?.subscribe(sources.filter((s) => s.isMedia("audio")).map((s) => s.select()));
157
+ this.videoKey?.subscribe(sources.filter((s) => s.isMedia("video")).map((s) => s.select()));
158
+ }
159
+ }
160
+ exports.Recorder = Recorder;
161
+ const detectStreams = (streams) => {
162
+ const indexed = streams.map((item, index) => ({ item, index }));
163
+ const audio = indexed.find(({ item: { streamKey } }) => (0, norsk_sdk_1.streamKeysAreEqual)(streamKey, AudioKey));
164
+ const video = indexed.find(({ item: { streamKey } }) => (0, norsk_sdk_1.streamKeysAreEqual)(streamKey, VideoKey));
165
+ if (!audio || !video)
166
+ return;
167
+ return { audio, video };
168
+ };
169
+ const concomitant = (audio, video) => {
170
+ const aStart = audio.startDateTime.getTime();
171
+ const aEnd = aStart + audio.durationMs;
172
+ const vStart = video.startDateTime.getTime();
173
+ const vEnd = vStart + video.durationMs;
174
+ const start = Math.max(aStart, vStart);
175
+ const end = Math.min(aEnd, vEnd);
176
+ return start < end ? end - start : 0;
177
+ };
178
+ const toAPI = (ver, sources) => ({
179
+ startIso: ver.startDateTime.toISOString(),
180
+ durationMs: ver.durationMs,
181
+ streamNum: ver.streamNum,
182
+ versionNum: ver.versionNum,
183
+ active: ver.active,
184
+ tamsId: sources.find(tagFilter({
185
+ "__mediaStoreType": "version",
186
+ "__mediaStoreVersion": ver.versionNum,
187
+ "__mediaStoreStream": ver.streamNum,
188
+ }))?.id,
189
+ });
190
+ const tagFilter = (spec) => {
191
+ return ({ tags }) => {
192
+ for (const [k, filter] of Object.entries(spec)) {
193
+ if (typeof filter === 'string' || typeof filter === 'number') {
194
+ if (tags[k] !== filter.toString())
195
+ return false;
196
+ }
197
+ else {
198
+ if (!filter(tags[k]))
199
+ return false;
200
+ }
201
+ }
202
+ return true;
203
+ };
204
+ };
205
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/output.player/runtime.ts"],"names":[],"mappings":";;;;;;AAAA,qDAA+K;AAC/K,wFAAuP;AACvP,iEAAoE;AAGpE,gDAAwB;AACxB,mEAA6E;AAC7E,mFAAwF;AACxF,wFAAgE;AAmBhE,MAAqB,kBAAkB;IACrC,KAAK,CAAC,MAAM,CAAC,KAAY,EAAE,GAAqB,EAAE,EAAuB,EAAE,OAAqE;QAC9I,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QAC/C,MAAM,IAAI,CAAC,WAAW,CAAC;QACvB,EAAE,CAAC,IAAI,CAAC,CAAC;IACX,CAAC;IAED,KAAK,CAAC,OAAO;QACX,OAAO,IAAA,yBAAe,EAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE;YACzD,MAAM,EAAE,kBAAkB;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,QAAkB,EAAE,OAAwB;QACxD,MAAM,EAAE,GAAG,OAAO,CAAC;QACnB,QAAQ,EAAE,EAAE,CAAC;YACX;gBACE,IAAA,wBAAiB,EAAC,EAAE,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,OAAO,IAAA,eAAS,EACd,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAClC;YACE,WAAW,EAAE;gBACX,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;oBACxC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;gBAChD,CAAC;aACF;SACF,CAAC,CAAC;IACP,CAAC;CACF;AAhCD,qCAgCC;AAQD,MAAM,QAAQ,GAAc;IAC1B,QAAQ,EAAE,GAAG;IACb,aAAa,EAAE,CAAC;IAChB,UAAU,EAAE,UAAU;IACtB,aAAa,EAAE,SAAS;CACzB,CAAA;AACD,MAAM,QAAQ,GAAc;IAC1B,QAAQ,EAAE,GAAG;IACb,aAAa,EAAE,CAAC;IAChB,UAAU,EAAE,UAAU;IACtB,aAAa,EAAE,SAAS;CACzB,CAAA;AAED,MAAa,QAAQ;IACnB,WAAW,CAAgB;IAC3B,KAAK,CAAQ;IACb,OAAO,CAAgE;IACvE,QAAQ,CAA0B;IAClC,QAAQ,CAAyB;IACjC,QAAQ,CAAyB;IAEjC,EAAE,CAAS;IACX,GAAG,CAAmB;IACtB,OAAO,GAAY,KAAK,CAAC;IACzB,QAAQ,GAAW,CAAC,CAAC;IAErB,YAAY,KAAY,EAAE,EAAE,OAAO,EAAgE,EAAE,GAAqB;QACxH,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,iBAAiB,GAAG,IAAI,iCAAiB,EAAE,CAAC;QACjD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IACvC,CAAC;IAED,iBAAiB,CAAoB;IAErC,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC;YACnD,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,kBAAkB;YAChC,IAAI,EAAE,IAAI,CAAC,EAAE;YACb,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS;YACxB,wBAAwB,EAAE,EAAE;YAC5B,MAAM,EAAE;gBACN,MAAM,EAAE,QAAQ;gBAChB,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,EAAE,GAAG,EAAE;aAC1C;YACD,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;YAC5B,CAAC;SACF,CAAC,CAAA;QACF,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,iBAAiB,CAAC;YACrE,SAAS,EAAE,QAAQ;SACpB,CAAC,CAAA;QACF,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,iBAAiB,CAAC;YACrE,SAAS,EAAE,QAAQ;SACpB,CAAC,CAAA;QACF,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YACtB,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,uBAAW,EAAE;YACtD,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,uBAAW,EAAE;SACvD,CAAC,CAAA;QACF,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEjE,MAAM,QAAQ,GAAG,UAAU,gBAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,gBAAM,CAAC,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC;QAEvF,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAC3B,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACzC,MAAM,aAAa,GAIb,EAAE,CAAC;YACT,KAAK,MAAM,OAAO,IAAI,CAAC,EAAE,CAAC;gBACxB,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAChD,IAAI,CAAC,QAAQ;oBAAE,SAAS;gBACxB,MAAM,EACJ,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,EACxD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,EACzD,GAAG,QAAQ,CAAC;gBACb,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;oBAC7C,IAAI,KAAK,CAAC;oBACV,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;wBAC3B,MAAM,OAAO,GAAG,WAAW,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;wBACjD,IAAI,CAAC,OAAO;4BAAE,SAAS;wBACvB,IAAI,CAAC,KAAK;4BAAE,KAAK,GAAG,KAAK,CAAC;6BACrB,IAAI,OAAO,GAAG,WAAW,CAAC,YAAY,EAAE,KAAK,CAAC;4BAAE,KAAK,GAAG,KAAK,CAAC;oBACrE,CAAC;oBACD,IAAI,CAAC,KAAK;wBAAE,OAAO,EAAE,CAAC;oBACtB,OAAO,CAAC;4BACN,KAAK,EAAE,EAAE,GAAG,YAAY,EAAE,SAAS,EAAE,UAAU,GAAC,CAAC,EAAE;4BACnD,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,UAAU,GAAC,CAAC,EAAE;4BAC5C,OAAO,EAAE,OAAO,CAAC,UAAU;yBAC5B,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBACH,aAAa,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;YAChC,CAAC;YAED,MAAM,OAAO,GAAa,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,QAAQ,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAE5E,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;gBACtC,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;oBAC9C,kBAAkB,EAAE,IAAI,CAAC,EAAE;oBAC3B,qBAAqB,EAAE,EAAE,CAAC,OAAO;oBACjC,kBAAkB,EAAE,SAAS;iBAC9B,CAAC,CAAC,CAAC;gBACJ,OAAO;oBACL,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC;oBACtC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC;oBACtC,UAAU,EAAE,EAAE,CAAC,OAAO;iBACvB,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAEzF,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;gBACtB,IAAI,EAAE,SAAS;gBACf,MAAM;gBACN,QAAQ;aACT,CAAC,CAAC;YACH,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC,CAAA;QACD,KAAK,MAAM,EAAE,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAqC;QAEnD,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAC1F,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IAC5F,CAAC;CACF;AApHD,4BAoHC;AAED,MAAM,aAAa,GAAG,CAAwC,OAAe,EAAE,EAAE;IAC/E,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,IAAA,8BAAkB,EAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IACjG,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,IAAA,8BAAkB,EAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IACjG,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK;QAAE,OAAO;IAC7B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1B,CAAC,CAAC;AACF,MAAM,WAAW,GAAG,CAAC,KAA8B,EAAE,KAA8B,EAAE,EAAE;IACrF,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;IACvC,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;IAEvC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjC,OAAO,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC,CAAC;AACF,MAAM,KAAK,GAAG,CAAC,GAAoD,EAAE,OAAiB,EAAE,EAAE,CAAC,CAAC;IAC1F,QAAQ,EAAE,GAAG,CAAC,aAAa,CAAC,WAAW,EAAE;IACzC,UAAU,EAAE,GAAG,CAAC,UAAU;IAC1B,SAAS,EAAE,GAAG,CAAC,SAAS;IACxB,UAAU,EAAE,GAAG,CAAC,UAAU;IAC1B,MAAM,EAAE,GAAG,CAAC,MAAM;IAClB,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;QAC7B,kBAAkB,EAAE,SAAS;QAC7B,qBAAqB,EAAE,GAAG,CAAC,UAAU;QACrC,oBAAoB,EAAE,GAAG,CAAC,SAAS;KACpC,CAAC,CAAC,EAAE,EAAE;CAER,CAAC,CAAC;AACH,MAAM,SAAS,GACb,CAAC,IAAgF,EAC1B,EAAE;IACzD,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;QAClB,KAAK,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC7D,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,QAAQ,EAAE;oBAAE,OAAO,KAAK,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;YACrC,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { RecorderState, RecorderSettings, RecorderCommand } from "./runtime";
2
+ declare function SummaryView({ state }: {
3
+ state: RecorderState;
4
+ config: RecorderSettings;
5
+ sendCommand: (cmd: RecorderCommand) => void;
6
+ }): import("react/jsx-runtime").JSX.Element;
7
+ export default SummaryView;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ function SummaryView({ state }) {
5
+ { }
6
+ return (0, jsx_runtime_1.jsxs)("div", { className: "output-player", children: [displaySessions("Active", state.active ? [state.active] : []), displaySessions("Past sessions", state.sessions)] });
7
+ }
8
+ const sessionLink = ({ audio, video }) => {
9
+ if (!audio.tamsId || !video.tamsId)
10
+ return;
11
+ const tamsUrl = ({ tamsId }) => `http://localhost:6791/x-tams/flows/${tamsId}`;
12
+ return `http://localhost:5173/?${tamsUrl(audio)},${tamsUrl(video)}`;
13
+ };
14
+ const displaySessions = (name, sessions) => {
15
+ if (!sessions.length)
16
+ return null;
17
+ return (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("h3", { className: "text-lg font-semibold mb-2 mt-2 dark:text-gray-300", children: name }), (0, jsx_runtime_1.jsx)("ol", { className: "list-none", children: sessions.slice().reverse().map(session => (0, jsx_runtime_1.jsx)("li", { children: (0, jsx_runtime_1.jsxs)("a", { target: "_blank", href: sessionLink(session), children: ["Play session ", new Date(session.video.startIso).toLocaleTimeString(), " (", (session.video.durationMs / 60_000).toFixed(0), " minutes)"] }) })) })] });
18
+ };
19
+ exports.default = SummaryView;
20
+ //# sourceMappingURL=summary-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary-view.js","sourceRoot":"","sources":["../../src/output.player/summary-view.tsx"],"names":[],"mappings":";;;AAEA,SAAS,WAAW,CAAC,EAAE,KAAK,EAAmG;IAC7H,CAAC,CAAiF,CAAC;IACnF,OAAO,iCAAK,SAAS,EAAC,eAAe,aAClC,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAC7D,eAAe,CAAC,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,IAC7C,CAAA;AACR,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAqC,EAAE,EAAE;IAC1E,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO;IAC3C,MAAM,OAAO,GAAG,CAAC,EAAE,MAAM,EAAsB,EAAE,EAAE,CAAC,sCAAsC,MAAM,EAAE,CAAC;IACnG,OAAO,0BAA0B,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;AACtE,CAAC,CAAC;AACF,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,QAAmC,EAAE,EAAE;IAC5E,IAAI,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAClC,OAAO,6DACL,+BAAI,SAAS,EAAC,oDAAoD,YAAE,IAAI,GAAM,EAC9E,+BAAI,SAAS,EAAC,WAAW,YACtB,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CACxC,yCAAI,+BAAG,MAAM,EAAC,QAAQ,EAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,8BAAgB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,kBAAkB,EAAE,QAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAc,GAAK,CAC5L,GACE,IACJ,CAAC;AACN,CAAC,CAAC;AAEF,kBAAe,WAAW,CAAC"}
@@ -0,0 +1,71 @@
1
+ export interface paths {
2
+ "/timeline": {
3
+ parameters: {
4
+ query?: never;
5
+ header?: never;
6
+ path?: never;
7
+ cookie?: never;
8
+ };
9
+ get: {
10
+ parameters: {
11
+ query?: never;
12
+ header?: never;
13
+ path?: never;
14
+ cookie?: never;
15
+ };
16
+ requestBody?: never;
17
+ responses: {
18
+ 200: {
19
+ headers: {
20
+ [name: string]: unknown;
21
+ };
22
+ content: {
23
+ "application/json": components["schemas"]["RecordedStreams"][];
24
+ };
25
+ };
26
+ };
27
+ };
28
+ put?: never;
29
+ post?: never;
30
+ delete?: never;
31
+ options?: never;
32
+ head?: never;
33
+ patch?: never;
34
+ trace?: never;
35
+ };
36
+ }
37
+ export type webhooks = Record<string, never>;
38
+ export interface components {
39
+ schemas: {
40
+ RecorderSettings: {
41
+ id: string;
42
+ displayName: string;
43
+ storePath: string;
44
+ expiryHours: number;
45
+ };
46
+ RecordedStreams: {
47
+ active?: components["schemas"]["StreamPair"];
48
+ sessions: components["schemas"]["StreamPair"][];
49
+ };
50
+ StreamPair: {
51
+ audio: components["schemas"]["StreamVersion"];
52
+ video: components["schemas"]["StreamVersion"];
53
+ sessionNum: number;
54
+ };
55
+ StreamVersion: {
56
+ startIso: string;
57
+ durationMs: number;
58
+ streamNum?: number;
59
+ versionNum: number;
60
+ tamsId?: string;
61
+ active: boolean;
62
+ };
63
+ };
64
+ responses: never;
65
+ parameters: never;
66
+ requestBodies: never;
67
+ headers: never;
68
+ pathItems: never;
69
+ }
70
+ export type $defs = Record<string, never>;
71
+ export type operations = Record<string, never>;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/output.player/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,87 @@
1
+ openapi: 3.0.3
2
+ info:
3
+ title: Output Recorder API
4
+ version: 1.0.0
5
+ paths:
6
+ /timeline:
7
+ get:
8
+ summary: Returns all the available timelines in the store
9
+ description: Returns all the available timelines in the store
10
+ responses:
11
+ 200:
12
+ description: Successful operation
13
+ content:
14
+ application/json:
15
+ schema:
16
+ type: array
17
+ description: A list of the streams available
18
+ items:
19
+ $ref: "#/components/schemas/RecordedStreams"
20
+ components:
21
+ schemas:
22
+ RecorderSettings:
23
+ type: object
24
+ properties:
25
+ id:
26
+ type: string
27
+ displayName:
28
+ type: string
29
+ storePath:
30
+ type: string
31
+ expiryHours:
32
+ type: number
33
+ required:
34
+ - id
35
+ - displayName
36
+ - storePath
37
+ - expiryHours
38
+
39
+ RecordedStreams:
40
+ type: object
41
+ properties:
42
+ active:
43
+ $ref: "#/components/schemas/StreamPair"
44
+ sessions:
45
+ type: array
46
+ items:
47
+ $ref: "#/components/schemas/StreamPair"
48
+ required:
49
+ # not active
50
+ - sessions
51
+
52
+ StreamPair:
53
+ type: object
54
+ properties:
55
+ audio:
56
+ $ref: "#/components/schemas/StreamVersion"
57
+ video:
58
+ $ref: "#/components/schemas/StreamVersion"
59
+ sessionNum:
60
+ type: integer
61
+ required:
62
+ - audio
63
+ - video
64
+ - sessionNum
65
+
66
+ StreamVersion:
67
+ type: object
68
+ properties:
69
+ startIso:
70
+ type: string
71
+ format: date
72
+ durationMs:
73
+ type: number
74
+ streamNum:
75
+ type: number
76
+ versionNum:
77
+ type: number
78
+ tamsId:
79
+ type: string
80
+ active:
81
+ type: boolean
82
+ required:
83
+ - startIso
84
+ - durationMs
85
+ - versionNum
86
+ - active
87
+
@@ -172,7 +172,7 @@ class Recorder {
172
172
  this.updates = updates;
173
173
  this.relatedMediaNodes = new runtime_types_1.RelatedMediaNodes();
174
174
  this.initialised = this.initialise();
175
- this.timer = setInterval(() => void this.pruneCutStore, this.cfg.pruneIntervalMs ?? 60000);
175
+ this.timer = setInterval(() => void this.pruneCutStore(), this.cfg.pruneIntervalMs ?? 60000);
176
176
  }
177
177
  async pruneCutStore() {
178
178
  const files = await promises_1.default.readdir(this.cfg.cuts_path);
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/output.recorder/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/output.recorder/runtime.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@norskvideo/norsk-studio-alpha",
3
- "version": "1.27.0-2025-09-08-fdd138b9",
3
+ "version": "1.27.0-2025-09-17-ca470951",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "clean": "rm -rf lib client build && make clean",
@@ -23,9 +23,9 @@
23
23
  "license": "MIT",
24
24
  "dependencies": {
25
25
  "@apidevtools/json-schema-ref-parser": "^12.0.1",
26
- "@norskvideo/norsk-sdk": "^1.0.402-2025-09-08-0b83f9cf",
27
- "@norskvideo/norsk-studio": "1.27.0-2025-09-08-fdd138b9",
28
- "@norskvideo/norsk-studio-built-ins": "1.27.0-2025-09-08-fdd138b9",
26
+ "@norskvideo/norsk-sdk": "^1.0.402-2025-09-10-38401717",
27
+ "@norskvideo/norsk-studio": "1.27.0-2025-09-17-ca470951",
28
+ "@norskvideo/norsk-studio-built-ins": "1.27.0-2025-09-17-ca470951",
29
29
  "@norskvideo/webrtc-client": "^0.1.2",
30
30
  "@react-icons/all-files": "^4.1.0",
31
31
  "chart.js": "^4.4.2",