@norskvideo/norsk-studio-built-ins 1.10.0 → 1.10.1

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.
Files changed (103) hide show
  1. package/package.json +1 -1
  2. package/lib/input.mediaconnect/flow-selection.d.ts +0 -9
  3. package/lib/input.mediaconnect/flow-selection.js +0 -40
  4. package/lib/input.mediaconnect/flow-selection.js.map +0 -1
  5. package/lib/input.mediaconnect/info.d.ts +0 -3
  6. package/lib/input.mediaconnect/info.js +0 -70
  7. package/lib/input.mediaconnect/info.js.map +0 -1
  8. package/lib/input.mediaconnect/node-view.d.ts +0 -6
  9. package/lib/input.mediaconnect/node-view.js +0 -38
  10. package/lib/input.mediaconnect/node-view.js.map +0 -1
  11. package/lib/input.mediaconnect/output-selection.d.ts +0 -9
  12. package/lib/input.mediaconnect/output-selection.js +0 -55
  13. package/lib/input.mediaconnect/output-selection.js.map +0 -1
  14. package/lib/input.mediaconnect/runtime.d.ts +0 -23
  15. package/lib/input.mediaconnect/runtime.js +0 -133
  16. package/lib/input.mediaconnect/runtime.js.map +0 -1
  17. package/lib/output.medialive/channel-selection.d.ts +0 -9
  18. package/lib/output.medialive/channel-selection.js +0 -40
  19. package/lib/output.medialive/channel-selection.js.map +0 -1
  20. package/lib/output.medialive/fullscreen.d.ts +0 -6
  21. package/lib/output.medialive/fullscreen.js +0 -31
  22. package/lib/output.medialive/fullscreen.js.map +0 -1
  23. package/lib/output.medialive/info.d.ts +0 -3
  24. package/lib/output.medialive/info.js +0 -111
  25. package/lib/output.medialive/info.js.map +0 -1
  26. package/lib/output.medialive/inline.d.ts +0 -6
  27. package/lib/output.medialive/inline.js +0 -30
  28. package/lib/output.medialive/inline.js.map +0 -1
  29. package/lib/output.medialive/input-selection.d.ts +0 -9
  30. package/lib/output.medialive/input-selection.js +0 -58
  31. package/lib/output.medialive/input-selection.js.map +0 -1
  32. package/lib/output.medialive/node-view.d.ts +0 -6
  33. package/lib/output.medialive/node-view.js +0 -36
  34. package/lib/output.medialive/node-view.js.map +0 -1
  35. package/lib/output.medialive/runtime.d.ts +0 -34
  36. package/lib/output.medialive/runtime.js +0 -142
  37. package/lib/output.medialive/runtime.js.map +0 -1
  38. package/lib/output.medialive/url-selection.d.ts +0 -9
  39. package/lib/output.medialive/url-selection.js +0 -45
  40. package/lib/output.medialive/url-selection.js.map +0 -1
  41. package/lib/processor.actionReplay/info.d.ts +0 -5
  42. package/lib/processor.actionReplay/info.js +0 -100
  43. package/lib/processor.actionReplay/info.js.map +0 -1
  44. package/lib/processor.actionReplay/runtime.d.ts +0 -59
  45. package/lib/processor.actionReplay/runtime.js +0 -224
  46. package/lib/processor.actionReplay/runtime.js.map +0 -1
  47. package/lib/processor.actionReplay/summary.d.ts +0 -7
  48. package/lib/processor.actionReplay/summary.js +0 -76
  49. package/lib/processor.actionReplay/summary.js.map +0 -1
  50. package/lib/processor.audioLevel/info.d.ts +0 -3
  51. package/lib/processor.audioLevel/info.js +0 -83
  52. package/lib/processor.audioLevel/info.js.map +0 -1
  53. package/lib/processor.audioLevel/inline-view.d.ts +0 -6
  54. package/lib/processor.audioLevel/inline-view.js +0 -23
  55. package/lib/processor.audioLevel/inline-view.js.map +0 -1
  56. package/lib/processor.audioLevel/runtime.d.ts +0 -49
  57. package/lib/processor.audioLevel/runtime.js +0 -82
  58. package/lib/processor.audioLevel/runtime.js.map +0 -1
  59. package/lib/processor.audioLevel/summary-view.d.ts +0 -7
  60. package/lib/processor.audioLevel/summary-view.js +0 -36
  61. package/lib/processor.audioLevel/summary-view.js.map +0 -1
  62. package/lib/processor.audioMixer/fullscreen-view.d.ts +0 -8
  63. package/lib/processor.audioMixer/fullscreen-view.js +0 -121
  64. package/lib/processor.audioMixer/fullscreen-view.js.map +0 -1
  65. package/lib/processor.audioMixer/info.d.ts +0 -4
  66. package/lib/processor.audioMixer/info.js +0 -148
  67. package/lib/processor.audioMixer/info.js.map +0 -1
  68. package/lib/processor.audioMixer/inline-view.d.ts +0 -7
  69. package/lib/processor.audioMixer/inline-view.js +0 -43
  70. package/lib/processor.audioMixer/inline-view.js.map +0 -1
  71. package/lib/processor.audioMixer/runtime.d.ts +0 -119
  72. package/lib/processor.audioMixer/runtime.js +0 -142
  73. package/lib/processor.audioMixer/runtime.js.map +0 -1
  74. package/lib/processor.audioMixer/summary-view.d.ts +0 -7
  75. package/lib/processor.audioMixer/summary-view.js +0 -11
  76. package/lib/processor.audioMixer/summary-view.js.map +0 -1
  77. package/lib/processor.aws-transcribe/info.d.ts +0 -3
  78. package/lib/processor.aws-transcribe/info.js +0 -81
  79. package/lib/processor.aws-transcribe/info.js.map +0 -1
  80. package/lib/processor.aws-transcribe/runtime.d.ts +0 -39
  81. package/lib/processor.aws-transcribe/runtime.js +0 -164
  82. package/lib/processor.aws-transcribe/runtime.js.map +0 -1
  83. package/lib/processor.aws-transcribe/transcribe-language-selection.d.ts +0 -9
  84. package/lib/processor.aws-transcribe/transcribe-language-selection.js +0 -40
  85. package/lib/processor.aws-transcribe/transcribe-language-selection.js.map +0 -1
  86. package/lib/processor.aws-transcribe/translate-language-selection.d.ts +0 -9
  87. package/lib/processor.aws-transcribe/translate-language-selection.js +0 -40
  88. package/lib/processor.aws-transcribe/translate-language-selection.js.map +0 -1
  89. package/lib/processor.fixedLadder/newFile.d.ts +0 -3
  90. package/lib/processor.fixedLadder/newFile.js +0 -145
  91. package/lib/processor.fixedLadder/newFile.js.map +0 -1
  92. package/lib/processor.monetise/info.d.ts +0 -3
  93. package/lib/processor.monetise/info.js +0 -90
  94. package/lib/processor.monetise/info.js.map +0 -1
  95. package/lib/processor.monetise/runtime.d.ts +0 -57
  96. package/lib/processor.monetise/runtime.js +0 -141
  97. package/lib/processor.monetise/runtime.js.map +0 -1
  98. package/lib/processor.monetise/summary.d.ts +0 -7
  99. package/lib/processor.monetise/summary.js +0 -39
  100. package/lib/processor.monetise/summary.js.map +0 -1
  101. package/lib/test/audio-mixer.d.ts +0 -0
  102. package/lib/test/audio-mixer.js +0 -2
  103. package/lib/test/audio-mixer.js.map +0 -1
@@ -1,111 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- const react_1 = __importDefault(require("react"));
30
- function default_1({ defineComponent, validation: { Z }, All }) {
31
- const ChannelSelection = react_1.default.lazy(async () => Promise.resolve().then(() => __importStar(require('./channel-selection'))));
32
- const InputSelection = react_1.default.lazy(async () => Promise.resolve().then(() => __importStar(require('./input-selection'))));
33
- const UrlSelection = react_1.default.lazy(async () => Promise.resolve().then(() => __importStar(require('./url-selection'))));
34
- const NodeView = react_1.default.lazy(async () => Promise.resolve().then(() => __importStar(require('./node-view'))));
35
- const InlineView = react_1.default.lazy(async () => Promise.resolve().then(() => __importStar(require('./inline'))));
36
- const FullscreenView = react_1.default.lazy(async () => Promise.resolve().then(() => __importStar(require('./fullscreen'))));
37
- return defineComponent({
38
- identifier: 'output.medialive',
39
- category: 'output',
40
- name: "Media Live Output",
41
- subscription: {
42
- accepts: {
43
- type: "multi-stream",
44
- media: All
45
- },
46
- },
47
- extraValidation: function (ctx) {
48
- const audioStreams = ctx.subscriptions.filter((s) => s.streams.select.includes("audio"));
49
- const videoStreams = ctx.subscriptions.filter((s) => s.streams.select.includes("video"));
50
- if (audioStreams.length == 0) {
51
- ctx.addWarning("Output has no audio, is this intentional");
52
- }
53
- if (videoStreams.length == 0) {
54
- ctx.addWarning("Output has no video, is this intentional");
55
- }
56
- },
57
- designtime: {
58
- node: NodeView
59
- },
60
- runtime: {
61
- initialState: () => ({
62
- url: undefined
63
- }),
64
- handleEvent: (ev, state) => {
65
- const evType = ev.type;
66
- switch (evType) {
67
- case "url-located":
68
- return { ...state, url: ev.url };
69
- default:
70
- assertUnreachable(evType);
71
- }
72
- },
73
- inline: InlineView,
74
- fullscreen: FullscreenView,
75
- },
76
- configForm: {
77
- form: {
78
- channelId: {
79
- help: "The channel to output to",
80
- hint: {
81
- type: "custom",
82
- component: ChannelSelection,
83
- validation: Z.string().min(1, "Choosing a channel is mandatory")
84
- }
85
- },
86
- inputId: {
87
- help: "The input of the channel to output to",
88
- hint: {
89
- type: "custom",
90
- component: InputSelection,
91
- validation: Z.string().min(1, "Choosing an input is mandatory")
92
- }
93
- },
94
- destinationIndex: {
95
- help: "The publish URL to output to",
96
- hint: {
97
- type: "custom",
98
- defaultValue: 0,
99
- component: UrlSelection,
100
- validation: Z.number().min(0, "Choosing a url is mandatory")
101
- }
102
- }
103
- }
104
- }
105
- });
106
- }
107
- exports.default = default_1;
108
- function assertUnreachable(_) {
109
- throw new Error("Didn't expect to get here");
110
- }
111
- //# sourceMappingURL=info.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/output.medialive/info.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import type { MediaLiveConfig, MediaLiveState } from "./runtime";
2
- declare function InlineView({ state, config }: {
3
- state: MediaLiveState;
4
- config: MediaLiveConfig;
5
- }): import("react/jsx-runtime").JSX.Element;
6
- export default InlineView;
@@ -1,30 +0,0 @@
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
- const jsx_runtime_1 = require("react/jsx-runtime");
7
- const react_1 = require("react");
8
- const hls_js_1 = __importDefault(require("hls.js"));
9
- function InlineView({ state, config }) {
10
- const url = state.url;
11
- const id = config.id;
12
- (0, react_1.useEffect)(() => {
13
- if (!url)
14
- return;
15
- const element = document.getElementById(`${id}-video`);
16
- if (hls_js_1.default.isSupported()) {
17
- const hls = new hls_js_1.default();
18
- hls.loadSource(url);
19
- hls.attachMedia(element);
20
- }
21
- else if (element.canPlayType('application/vnd.apple.mpegurl')) {
22
- element.src = url;
23
- }
24
- }, [state.url]);
25
- if (!url)
26
- return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: "..." });
27
- return (0, jsx_runtime_1.jsx)("div", { className: "preview-outer-container", children: (0, jsx_runtime_1.jsx)("video", { autoPlay: true, muted: true, id: `${id}-video` }) });
28
- }
29
- exports.default = InlineView;
30
- //# sourceMappingURL=inline.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inline.js","sourceRoot":"","sources":["../../src/output.medialive/inline.tsx"],"names":[],"mappings":";;;;;;AAAA,iCAAkC;AAElC,oDAAyB;AAEzB,SAAS,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAsD;IACvF,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IACtB,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;IACrB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,GAAG;YAAE,OAAO;QAEjB,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAqB,CAAC;QAE3E,IAAI,gBAAG,CAAC,WAAW,EAAE,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,IAAI,gBAAG,EAAE,CAAC;YACtB,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACpB,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;aACI,IAAI,OAAO,CAAC,WAAW,CAAC,+BAA+B,CAAC,EAAE,CAAC;YAC9D,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;QACpB,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAEhB,IAAI,CAAC,GAAG;QAAE,OAAO,mEAAQ,CAAA;IAEzB,OAAO,gCAAK,SAAS,EAAC,yBAAyB,YAC7C,kCAAO,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,GAAU,GAC1D,CAAA;AACT,CAAC;AAED,kBAAe,UAAU,CAAC"}
@@ -1,9 +0,0 @@
1
- import type { MediaLiveConfig } from "./runtime";
2
- type InputSelectionProps = {
3
- defaultValue?: string;
4
- id: string;
5
- onChanged: (value: string) => void;
6
- latest: Partial<MediaLiveConfig>;
7
- };
8
- declare function inputSelection(props: InputSelectionProps): import("react/jsx-runtime").JSX.Element;
9
- export default inputSelection;
@@ -1,58 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const jsx_runtime_1 = require("react/jsx-runtime");
4
- const react_1 = require("react");
5
- function inputSelection(props) {
6
- const [loading, setLoading] = (0, react_1.useState)(true);
7
- const [channels, setChannels] = (0, react_1.useState)(undefined);
8
- const [channel, setChannel] = (0, react_1.useState)(undefined);
9
- (0, react_1.useEffect)(() => {
10
- console.log("Loading channels for input", props);
11
- const fn = async () => {
12
- setLoading(true);
13
- const result = await fetch('components/output.medialive/channels');
14
- if (result.ok && result.body) {
15
- const channels = await result.json();
16
- setChannels(channels);
17
- setLoading(false);
18
- if (props.defaultValue)
19
- props.onChanged(props.defaultValue);
20
- }
21
- else {
22
- const text = await result.text();
23
- throw new Error(text);
24
- }
25
- };
26
- fn().catch(console.error);
27
- }, []);
28
- (0, react_1.useEffect)(() => {
29
- const channel = channels?.find((c) => c.Id == props.latest.channelId);
30
- setChannel(channel);
31
- const firstInput = channel?.InputAttachments?.[0]?.InputId;
32
- if (firstInput && channel?.InputAttachments?.length == 1 && firstInput !== props.defaultValue) {
33
- props.onChanged(firstInput);
34
- }
35
- }, [channels, props.latest.channelId]);
36
- if (loading) {
37
- return (0, jsx_runtime_1.jsx)("div", { children: "..." });
38
- }
39
- if (channel == undefined) {
40
- return (0, jsx_runtime_1.jsx)("div", { children: "..." });
41
- }
42
- if (!channel.InputAttachments) {
43
- return (0, jsx_runtime_1.jsx)("div", { children: "Channel has no inputs" });
44
- }
45
- const firstInput = channel.InputAttachments?.[0];
46
- if (firstInput && channel.InputAttachments.length == 1) {
47
- return (0, jsx_runtime_1.jsx)("div", { children: firstInput.InputAttachmentName });
48
- }
49
- return (0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsxs)("select", { defaultValue: props.defaultValue, className: `node-editor-select-input`, id: props.id, onChange: myOnChange, onBlur: myOnChange, children: [(0, jsx_runtime_1.jsx)("option", { value: "", children: "---" }, "empty"), channel.InputAttachments.map((o, i) => {
50
- const val = o.InputId;
51
- return (0, jsx_runtime_1.jsx)("option", { value: val, children: o.InputAttachmentName }, i);
52
- })] }) });
53
- function myOnChange(e) {
54
- props.onChanged(e.target.value);
55
- }
56
- }
57
- exports.default = inputSelection;
58
- //# sourceMappingURL=input-selection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"input-selection.js","sourceRoot":"","sources":["../../src/output.medialive/input-selection.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import type { NodeDescription } from "@norskvideo/norsk-studio/lib/shared/document";
2
- import type { MediaLiveConfig } from "./runtime";
3
- declare function NodeView(props: {
4
- node: NodeDescription<MediaLiveConfig>;
5
- }): import("react/jsx-runtime").JSX.Element;
6
- export default NodeView;
@@ -1,36 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const jsx_runtime_1 = require("react/jsx-runtime");
4
- const react_1 = require("react");
5
- function NodeView(props) {
6
- const [loading, setLoading] = (0, react_1.useState)(true);
7
- const [channel, setChannel] = (0, react_1.useState)(undefined);
8
- const [input, setInput] = (0, react_1.useState)(undefined);
9
- (0, react_1.useEffect)(() => {
10
- if (!props.node.config.channelId)
11
- return;
12
- if (!props.node.config.inputId)
13
- return;
14
- const fn = async () => {
15
- const channels = await fetch('components/output.medialive/channels').then(async (f) => f.json());
16
- const input = await fetch('components/output.medialive/inputs/' + props.node.config.inputId).then(async (f) => f.json());
17
- const channel = channels.find((c) => c.Id == props.node.config.channelId);
18
- setChannel(channel);
19
- setInput(input);
20
- setLoading(false);
21
- };
22
- fn().catch(console.error);
23
- }, [props.node.config.channelId, props.node.config.inputId]);
24
- if (loading) {
25
- return (0, jsx_runtime_1.jsx)("div", { children: "..." });
26
- }
27
- if (!channel) {
28
- return (0, jsx_runtime_1.jsx)("div", { children: "[Error: Failed to load channel]" });
29
- }
30
- if (!input) {
31
- return (0, jsx_runtime_1.jsx)("div", { children: "[Error: Missing input on channel]" });
32
- }
33
- return (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)("div", { children: ["Name: ", channel.Name] }), (0, jsx_runtime_1.jsxs)("div", { children: ["Input: ", input.Name] }), (0, jsx_runtime_1.jsxs)("div", { children: ["Url: ", input.Destinations?.[props.node.config.destinationIndex].Url] })] });
34
- }
35
- exports.default = NodeView;
36
- //# sourceMappingURL=node-view.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"node-view.js","sourceRoot":"","sources":["../../src/output.medialive/node-view.tsx"],"names":[],"mappings":";;;AAIA,iCAA4C;AAE5C,SAAS,QAAQ,CAAC,KAAiD;IACjE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAA6B,SAAS,CAAC,CAAC;IAC9E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAyC,SAAS,CAAC,CAAC;IAEtF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS;YAAE,OAAO;QACzC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO;QAEvC,MAAM,EAAE,GAAG,KAAK,IAAI,EAAE;YACpB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,sCAAsC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAqB,CAAA;YACpH,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,qCAAqC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAA+B,CAAC;YACvJ,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC1E,UAAU,CAAC,OAAO,CAAC,CAAC;YACpB,QAAQ,CAAC,KAAK,CAAC,CAAC;YAEhB,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC,CAAA;QACD,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;IAE5D,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,kDAAc,CAAA;IACvB,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,8EAA0C,CAAA;IACnD,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,gFAA4C,CAAA;IACrD,CAAC;IAED,OAAO,4CACL,sDAAY,OAAO,CAAC,IAAI,IAAO,EAC/B,uDAAa,KAAK,CAAC,IAAI,IAAO,EAC9B,qDAAW,KAAK,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,IAAO,IAC1E,CAAA;AACR,CAAC;AAED,kBAAe,QAAQ,CAAC"}
@@ -1,34 +0,0 @@
1
- /// <reference types="express-ws" />
2
- import { Norsk } from '@norskvideo/norsk-sdk';
3
- import { CustomSinkNode } from '@norskvideo/norsk-studio/lib/extension/base-nodes';
4
- import { OnCreated, RuntimeUpdates, ServerComponentDefinition, StudioRuntime } from '@norskvideo/norsk-studio/lib/extension/runtime-types';
5
- export type MediaLiveConfig = {
6
- id: string;
7
- displayName: string;
8
- channelId: string;
9
- inputId: string;
10
- destinationIndex: number;
11
- };
12
- export type MediaLiveState = {
13
- url?: string;
14
- };
15
- export type MediaLiveEvent = {
16
- type: 'url-located';
17
- url: string;
18
- };
19
- export type MediaLiveCommand = object;
20
- export default class MediaConnectSourceDefinition implements ServerComponentDefinition<MediaLiveConfig, MediaLiveOutput, MediaLiveState, MediaLiveCommand, MediaLiveEvent> {
21
- create(norsk: Norsk, cfg: MediaLiveConfig, cb: OnCreated<MediaLiveOutput>, { updates }: StudioRuntime<MediaLiveState, MediaLiveEvent>): Promise<void>;
22
- routes(): import("express-ws").Router;
23
- }
24
- export declare class MediaLiveOutput extends CustomSinkNode {
25
- norsk: Norsk;
26
- cfg: MediaLiveConfig;
27
- initialised: Promise<void>;
28
- updates: RuntimeUpdates<MediaLiveState, MediaLiveEvent>;
29
- static create(norsk: Norsk, cfg: MediaLiveConfig, updates: RuntimeUpdates<MediaLiveState, MediaLiveEvent>): Promise<MediaLiveOutput>;
30
- constructor(cfg: MediaLiveConfig, norsk: Norsk, updates: RuntimeUpdates<MediaLiveState, MediaLiveEvent>);
31
- initialise(): Promise<void>;
32
- loadOutputInformation(): Promise<void>;
33
- close(): Promise<void>;
34
- }
@@ -1,142 +0,0 @@
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.MediaLiveOutput = void 0;
7
- const base_nodes_1 = require("@norskvideo/norsk-studio/lib/extension/base-nodes");
8
- const express_1 = __importDefault(require("express"));
9
- const client_medialive_1 = require("@aws-sdk/client-medialive");
10
- const logging_1 = require("@norskvideo/norsk-studio/lib/server/logging");
11
- const client_mediapackage_1 = require("@aws-sdk/client-mediapackage");
12
- class MediaConnectSourceDefinition {
13
- async create(norsk, cfg, cb, { updates }) {
14
- const node = await MediaLiveOutput.create(norsk, cfg, updates);
15
- cb(node);
16
- }
17
- routes() {
18
- const router = express_1.default.Router();
19
- router.get("/channels", async (_req, res) => {
20
- let channels = [];
21
- try {
22
- const client = new client_medialive_1.MediaLiveClient({ region: process.env.AWS_REGION ?? "eu-west-2" });
23
- const response = await client.send(new client_medialive_1.ListChannelsCommand({ MaxResults: 100 }));
24
- channels = response.Channels ?? [];
25
- client.destroy();
26
- }
27
- catch (e) {
28
- handleAwsException(e, res);
29
- return;
30
- }
31
- res.writeHead(200);
32
- res.end(JSON.stringify(channels));
33
- });
34
- router.get('/inputs/:id', async (req, res) => {
35
- let input = undefined;
36
- try {
37
- const client = new client_medialive_1.MediaLiveClient({ region: process.env.AWS_REGION ?? "eu-west-2" });
38
- input = await client.send(new client_medialive_1.DescribeInputCommand({ InputId: req.params.id }));
39
- client.destroy();
40
- }
41
- catch (e) {
42
- handleAwsException(e, res);
43
- return;
44
- }
45
- if (!input) {
46
- res.writeHead(404);
47
- res.end("Input not found?");
48
- return;
49
- }
50
- res.writeHead(200);
51
- res.end(JSON.stringify(input));
52
- });
53
- return router;
54
- }
55
- }
56
- exports.default = MediaConnectSourceDefinition;
57
- function handleAwsException(e, res) {
58
- if (e instanceof client_medialive_1.MediaLiveServiceException) {
59
- res.writeHead(e?.$metadata?.httpStatusCode ?? 500);
60
- res.end(JSON.stringify(e));
61
- }
62
- else {
63
- res.writeHead(500);
64
- res.end(JSON.stringify(e));
65
- }
66
- }
67
- class MediaLiveOutput extends base_nodes_1.CustomSinkNode {
68
- norsk;
69
- cfg;
70
- initialised;
71
- updates;
72
- static async create(norsk, cfg, updates) {
73
- const node = new MediaLiveOutput(cfg, norsk, updates);
74
- await node.initialised;
75
- return node;
76
- }
77
- constructor(cfg, norsk, updates) {
78
- super(cfg.id);
79
- this.norsk = norsk;
80
- this.cfg = cfg;
81
- this.initialised = this.initialise();
82
- this.updates = updates;
83
- }
84
- async initialise() {
85
- let input = undefined;
86
- try {
87
- const client = new client_medialive_1.MediaLiveClient({ region: process.env.AWS_REGION ?? "eu-west-2" });
88
- input = await client.send(new client_medialive_1.DescribeInputCommand({ InputId: this.cfg.inputId }));
89
- client.destroy();
90
- }
91
- catch (e) {
92
- console.error("Failed to retrieve input information from AWS, cannot start media node");
93
- return;
94
- }
95
- const url = input?.Destinations?.[this.cfg.destinationIndex];
96
- if (!input || !url) {
97
- console.error("Failed to load channel and input details, cannot start node", this.id, this.cfg);
98
- return;
99
- }
100
- if (!url.Ip) {
101
- console.error("No IP address on input, cannot start", this.id, this.cfg);
102
- return;
103
- }
104
- if (!url.Port) {
105
- console.error("No listener port on flow output, cannot start", this.id, this.cfg);
106
- return;
107
- }
108
- const udp = await this.norsk.output.udpTs({
109
- id: `${this.id}-udpTs`,
110
- destinationIp: url.Ip,
111
- port: parseInt(url.Port, 10),
112
- interface: 'any',
113
- rtpEncapsulate: true,
114
- bufferDelayMs: 5000.0,
115
- avDelayMs: 50.0,
116
- });
117
- this.setup({ sink: udp });
118
- void this.loadOutputInformation();
119
- }
120
- async loadOutputInformation() {
121
- const client = new client_medialive_1.MediaLiveClient({ region: process.env.AWS_REGION ?? "eu-west-2" });
122
- const packageClient = new client_mediapackage_1.MediaPackageClient({ region: process.env.AWS_REGION ?? "eu-west-2" });
123
- const result = await client.send(new client_medialive_1.DescribeChannelCommand({ ChannelId: this.cfg.channelId }));
124
- const mediaPackageChannel = result?.Destinations?.[0]?.MediaPackageSettings?.[0]?.ChannelId;
125
- if (!mediaPackageChannel) {
126
- (0, logging_1.warninglog)("Failed to locate media package for medialive output, no preview is available");
127
- return;
128
- }
129
- const result2 = await packageClient.send(new client_mediapackage_1.ListOriginEndpointsCommand({ ChannelId: mediaPackageChannel }));
130
- const url = result2.OriginEndpoints?.[0]?.Url;
131
- if (!url) {
132
- (0, logging_1.warninglog)("No URL available for media package, no preview is available");
133
- return;
134
- }
135
- this.updates.raiseEvent({ type: 'url-located', url });
136
- }
137
- async close() {
138
- await super.close();
139
- }
140
- }
141
- exports.MediaLiveOutput = MediaLiveOutput;
142
- //# sourceMappingURL=runtime.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/output.medialive/runtime.ts"],"names":[],"mappings":";;;;;;AACA,kFAAmF;AAInF,sDAA4C;AAC5C,gEAAsM;AACtM,yEAAyE;AACzE,sEAA8F;AA6B9F,MAAqB,4BAA4B;IAC/C,KAAK,CAAC,MAAM,CAAC,KAAY,EAAE,GAAoB,EAAE,EAA8B,EAAE,EAAE,OAAO,EAAiD;QACzI,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC/D,EAAE,CAAC,IAAI,CAAC,CAAC;IACX,CAAC;IAED,MAAM;QACJ,MAAM,MAAM,GAAG,iBAAO,CAAC,MAAM,EAAE,CAAA;QAC/B,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YAC1C,IAAI,QAAQ,GAAqB,EAAE,CAAC;YAEpC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,kCAAe,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,WAAW,EAAE,CAAC,CAAC;gBACtF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,sCAAmB,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBACjF,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC;gBACnC,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,kBAAkB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC3B,OAAO;YACT,CAAC;YACD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAA;QAEF,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;YAC3C,IAAI,KAAK,GAA2C,SAAS,CAAC;YAC9D,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,kCAAe,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,WAAW,EAAE,CAAC,CAAC;gBACtF,KAAK,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,uCAAoB,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;gBAChF,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,kBAAkB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC3B,OAAO;YACT,CAAC;YACD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;gBAC5B,OAAO;YACT,CAAC;YACD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAA;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AA7CD,+CA6CC;AAGD,SAAS,kBAAkB,CAAC,CAAU,EAAE,GAAa;IACnD,IAAI,CAAC,YAAY,4CAAyB,EAAE,CAAC;QAC3C,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,cAAc,IAAI,GAAG,CAAC,CAAC;QACnD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACnB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,MAAa,eAAgB,SAAQ,2BAAc;IACjD,KAAK,CAAQ;IACb,GAAG,CAAkB;IACrB,WAAW,CAAgB;IAC3B,OAAO,CAAiD;IAExD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAY,EAAE,GAAoB,EAAE,OAAuD;QAC7G,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACtD,MAAM,IAAI,CAAC,WAAW,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,GAAoB,EAAE,KAAY,EAAE,OAAuD;QACrG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,KAAK,GAA2C,SAAS,CAAC;QAE9D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,kCAAe,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,WAAW,EAAE,CAAC,CAAC;YACtF,KAAK,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,uCAAoB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACnF,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,wEAAwE,CAAC,CAAC;YACxF,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,KAAK,EAAE,YAAY,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAE7D,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,6DAA6D,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAChG,OAAO;QACT,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACzE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAClF,OAAO;QACT,CAAC;QAGD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YACxC,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,QAAQ;YACtB,aAAa,EAAE,GAAG,CAAC,EAAE;YACrB,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YAC5B,SAAS,EAAE,KAAK;YAChB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,MAAM;YACrB,SAAS,EAAE,IAAI;SAChB,CAAC,CAAA;QACF,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAC1B,KAAK,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,MAAM,MAAM,GAAG,IAAI,kCAAe,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,WAAW,EAAE,CAAC,CAAC;QACtF,MAAM,aAAa,GAAG,IAAI,wCAAkB,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,WAAW,EAAE,CAAC,CAAC;QAChG,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,yCAAsB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;QAC/F,MAAM,mBAAmB,GAAG,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;QAE5F,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,IAAA,oBAAU,EAAC,8EAA8E,CAAC,CAAC;YAC3F,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,gDAA0B,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;QAC7G,MAAM,GAAG,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAA;QAE7C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,IAAA,oBAAU,EAAC,6DAA6D,CAAC,CAAC;YAC1E,OAAO;QACT,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAAA;IACvD,CAAC;IAEQ,KAAK,CAAC,KAAK;QAClB,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;CACF;AAvFD,0CAuFC"}
@@ -1,9 +0,0 @@
1
- import type { MediaLiveConfig } from "./runtime";
2
- type UrlSelectionProps = {
3
- defaultValue?: number;
4
- id: string;
5
- onChanged: (value: number) => void;
6
- latest: Partial<MediaLiveConfig>;
7
- };
8
- declare function UrlSelection(props: UrlSelectionProps): import("react/jsx-runtime").JSX.Element;
9
- export default UrlSelection;
@@ -1,45 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const jsx_runtime_1 = require("react/jsx-runtime");
4
- const react_1 = require("react");
5
- function UrlSelection(props) {
6
- const [loading, setLoading] = (0, react_1.useState)(true);
7
- const [input, setInput] = (0, react_1.useState)(undefined);
8
- (0, react_1.useEffect)(() => {
9
- const fn = async () => {
10
- setLoading(true);
11
- if (props.latest.inputId) {
12
- const result = await fetch('components/output.medialive/inputs/' + props.latest.inputId);
13
- if (result.ok && result.body) {
14
- const flow = await result.json();
15
- setInput(flow);
16
- setLoading(false);
17
- if (props.defaultValue !== undefined)
18
- props.onChanged(props.defaultValue);
19
- }
20
- else {
21
- const text = await result.text();
22
- throw new Error(text);
23
- }
24
- }
25
- };
26
- fn().catch(console.error);
27
- }, [props.latest.inputId]);
28
- if (loading) {
29
- return (0, jsx_runtime_1.jsx)("div", { children: "..." });
30
- }
31
- if (input == undefined) {
32
- return (0, jsx_runtime_1.jsx)("div", { children: "..." });
33
- }
34
- if (!input.Destinations) {
35
- return (0, jsx_runtime_1.jsx)("div", { children: "Input has no destinations" });
36
- }
37
- return (0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsxs)("select", { defaultValue: props.defaultValue, className: `node-editor-select-input`, id: props.id, onChange: myOnChange, onBlur: myOnChange, children: [(0, jsx_runtime_1.jsx)("option", { value: "", children: "---" }, "empty"), input.Destinations.map((o, i) => {
38
- return (0, jsx_runtime_1.jsx)("option", { value: i, children: o.Url }, i);
39
- })] }) });
40
- function myOnChange(e) {
41
- props.onChanged(parseInt(e.target.value, 10));
42
- }
43
- }
44
- exports.default = UrlSelection;
45
- //# sourceMappingURL=url-selection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"url-selection.js","sourceRoot":"","sources":["../../src/output.medialive/url-selection.tsx"],"names":[],"mappings":";;;AAAA,iCAAyD;AAYzD,SAAS,YAAY,CAAC,KAAwB;IAC5C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IAE7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAyC,SAAS,CAAC,CAAC;IAEtF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,EAAE,GAAG,KAAK,IAAI,EAAE;YACpB,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,qCAAqC,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;gBACxF,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;oBAC7B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAgC,CAAC;oBAC/D,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACf,UAAU,CAAC,KAAK,CAAC,CAAC;oBAClB,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;wBAClC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBACxC,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;oBACjC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC,CAAA;QACD,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;IAG1B,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,kDAAc,CAAA;IACvB,CAAC;IAED,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;QACvB,OAAO,kDAAc,CAAA;IACvB,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QACxB,OAAO,wEAAoC,CAAA;IAC7C,CAAC;IACD,OAAO,0CACL,oCAAQ,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,SAAS,EAAE,0BAA0B,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,aACrI,mCAAoB,KAAK,EAAC,EAAE,qBAAhB,OAAO,CAAsB,EACxC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBAC/B,OAAO,mCAAgB,KAAK,EAAE,CAAC,YAAG,CAAC,CAAC,GAAG,IAAnB,CAAC,CAA4B,CAAA;gBACnD,CAAC,CAAC,IACK,GACL,CAAA;IAEN,SAAS,UAAU,CAAC,CAAiC;QACnD,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED,kBAAe,YAAY,CAAC"}
@@ -1,5 +0,0 @@
1
- import type Registration from "@norskvideo/norsk-studio/lib/extension/registration";
2
- import type { ActionReplayConfig, ActionReplayState, ActionReplayCommand, ActionReplayEvent } from "./runtime";
3
- export default function ({ defineComponent, assertUnreachable, Av, }: Registration): import("@norskvideo/norsk-studio/lib/extension/client-types").NodeInfo<ActionReplayConfig, ActionReplayState, ActionReplayCommand, ActionReplayEvent>;
4
- export declare const hardwareNames: readonly ["quadra", "nvidia"];
5
- export type HardwareName = typeof hardwareNames[number];
@@ -1,100 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.hardwareNames = void 0;
30
- const react_1 = __importDefault(require("react"));
31
- const config_1 = require("@norskvideo/norsk-studio/lib/shared/config");
32
- function default_1({ defineComponent, assertUnreachable, Av, }) {
33
- const SummaryView = react_1.default.lazy(async () => Promise.resolve().then(() => __importStar(require('./summary'))));
34
- return defineComponent({
35
- identifier: 'processor.transform.actionReplay',
36
- category: 'processor',
37
- name: "Action Replay",
38
- subscription: {
39
- accepts: {
40
- type: 'single-stream',
41
- media: Av
42
- },
43
- produces: {
44
- type: 'single-stream',
45
- media: Av
46
- },
47
- },
48
- extraValidation: (ctx) => {
49
- if (ctx.subscriptions.length == 0) {
50
- return;
51
- }
52
- if (ctx.subscriptions.length > 1) {
53
- ctx.addError("Action replay can only subscribe to a single source");
54
- return;
55
- }
56
- if (!ctx.subscriptions[0].streams.select.includes("audio")) {
57
- ctx.addError("Action replay requires audio in the subscription");
58
- }
59
- if (!ctx.subscriptions[0].streams.select.includes("video")) {
60
- ctx.addError("Action replay requires video in the subscription");
61
- }
62
- },
63
- runtime: {
64
- summary: SummaryView,
65
- initialState: () => ({
66
- replaying: false,
67
- contentPlayerUrl: undefined
68
- }),
69
- handleEvent: (ev, state) => {
70
- const evType = ev.type;
71
- switch (evType) {
72
- case "content-player-created":
73
- return { ...state, contentPlayerUrl: ev.url };
74
- case "replay-started":
75
- return { ...state, replaying: true };
76
- case "replay-finished":
77
- return { ...state, replaying: false };
78
- default:
79
- return assertUnreachable(evType);
80
- }
81
- }
82
- },
83
- display: (desc) => {
84
- const { __global: _, ...rem } = desc.config;
85
- return rem;
86
- },
87
- configForm: {
88
- global: {
89
- hardware: (0, config_1.HardwareSelection)()
90
- },
91
- form: {}
92
- }
93
- });
94
- }
95
- exports.default = default_1;
96
- exports.hardwareNames = [
97
- 'quadra',
98
- 'nvidia'
99
- ];
100
- //# sourceMappingURL=info.js.map