@norskvideo/norsk-studio-alpha 1.27.0-2026-01-10-23683704 → 1.27.0-2026-01-15-ecb87e67

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 (33) hide show
  1. package/client/info.js +290 -191
  2. package/client/style.css +25 -0
  3. package/lib/output.fileMp4/_gen/types.d.ts +2 -0
  4. package/lib/output.fileMp4/_gen/zod.js +2 -0
  5. package/lib/output.fileMp4/_gen/zod.js.map +1 -1
  6. package/lib/output.fileMp4/info.d.ts +2 -0
  7. package/lib/output.fileMp4/info.js +16 -0
  8. package/lib/output.fileMp4/info.js.map +1 -1
  9. package/lib/output.fileMp4/runtime.js +2 -0
  10. package/lib/output.fileMp4/runtime.js.map +1 -1
  11. package/lib/output.fileMp4/types.yaml +10 -0
  12. package/lib/processor.hardSourceSwitch/_gen/types.d.ts +1 -1
  13. package/lib/processor.hardSourceSwitch/_gen/zod.js +1 -1
  14. package/lib/processor.hardSourceSwitch/_gen/zod.js.map +1 -1
  15. package/lib/processor.hardSourceSwitch/info.d.ts +1 -1
  16. package/lib/processor.hardSourceSwitch/info.js +40 -3
  17. package/lib/processor.hardSourceSwitch/info.js.map +1 -1
  18. package/lib/processor.hardSourceSwitch/inline-view.d.ts +1 -1
  19. package/lib/processor.hardSourceSwitch/inline-view.js +14 -2
  20. package/lib/processor.hardSourceSwitch/inline-view.js.map +1 -1
  21. package/lib/processor.hardSourceSwitch/runtime.d.ts +1 -0
  22. package/lib/processor.hardSourceSwitch/runtime.js +12 -0
  23. package/lib/processor.hardSourceSwitch/runtime.js.map +1 -1
  24. package/lib/processor.hardSourceSwitch/source-selection.d.ts +7 -0
  25. package/lib/processor.hardSourceSwitch/source-selection.js +35 -0
  26. package/lib/processor.hardSourceSwitch/source-selection.js.map +1 -0
  27. package/lib/processor.hardSourceSwitch/types.yaml +3 -3
  28. package/lib/test/hard-source-switch.d.ts +1 -0
  29. package/lib/test/hard-source-switch.js +504 -0
  30. package/lib/test/hard-source-switch.js.map +1 -0
  31. package/lib/test/output.fileMp4.js +3 -1
  32. package/lib/test/output.fileMp4.js.map +1 -1
  33. package/package.json +5 -5
@@ -0,0 +1,504 @@
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 () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const norsk_sdk_1 = require("@norskvideo/norsk-sdk");
40
+ const builder_1 = require("@norskvideo/norsk-studio/lib/test/_util/builder");
41
+ const document = __importStar(require("@norskvideo/norsk-studio/lib/runtime/document"));
42
+ const yaml_1 = __importDefault(require("yaml"));
43
+ const execution_1 = __importDefault(require("@norskvideo/norsk-studio/lib/runtime/execution"));
44
+ const sinks_1 = require("@norskvideo/norsk-studio/lib/test/_util/sinks");
45
+ const info_1 = __importDefault(require("../processor.hardSourceSwitch/info"));
46
+ const chai_1 = require("chai");
47
+ const runtime_1 = require("@norskvideo/norsk-studio/lib/test/_util/runtime");
48
+ const session_1 = __importDefault(require("@norskvideo/norsk-studio/lib/client/session"));
49
+ const client_types_1 = require("@norskvideo/norsk-studio/lib/extension/client-types");
50
+ const document_1 = require("@norskvideo/norsk-studio/lib/shared/document");
51
+ const __1 = __importDefault(require(".."));
52
+ const path_1 = __importDefault(require("path"));
53
+ const promises_1 = __importDefault(require("fs/promises"));
54
+ const config_1 = __importDefault(require("@norskvideo/norsk-studio/lib/server/config"));
55
+ const HardSourceInfo = (0, info_1.default)(client_types_1.RegistrationConsts);
56
+ async function setupTestMp4() {
57
+ const sourceMp4 = path_1.default.resolve(__dirname, '../../../built-ins/data/TraditionalMusic.mp4');
58
+ const dataDir = config_1.default.server.dataDirectory();
59
+ const testMp4Name = 'hard-switch-test.mp4';
60
+ const destMp4 = path_1.default.join(dataDir, testMp4Name);
61
+ try {
62
+ await promises_1.default.access(destMp4);
63
+ }
64
+ catch {
65
+ await promises_1.default.copyFile(sourceMp4, destMp4);
66
+ }
67
+ return testMp4Name;
68
+ }
69
+ async function cleanupTestMp4() {
70
+ const dataDir = config_1.default.server.dataDirectory();
71
+ const testMp4 = path_1.default.join(dataDir, 'hard-switch-test.mp4');
72
+ try {
73
+ await promises_1.default.unlink(testMp4);
74
+ }
75
+ catch {
76
+ }
77
+ }
78
+ async function createRuntime() {
79
+ const runtime = await (0, runtime_1.testRuntime)();
80
+ await (0, __1.default)(runtime);
81
+ return runtime;
82
+ }
83
+ async function createLibrary() {
84
+ const runtime = await createRuntime();
85
+ return (0, runtime_1.extractLibraryFromRuntime)(runtime);
86
+ }
87
+ describe("Hard Source Switch", () => {
88
+ describe("Design time", () => {
89
+ const yaml = new builder_1.YamlBuilder().reify();
90
+ let session = undefined;
91
+ const initialConfig = {
92
+ id: "switch",
93
+ displayName: "Switch",
94
+ outputSource: "output",
95
+ maxQueueMs: 1000,
96
+ failoverTimeoutMs: 2000,
97
+ sourcePriority: []
98
+ };
99
+ function getSwitch() {
100
+ return session?.description.findNode(initialConfig.id);
101
+ }
102
+ beforeEach(async () => {
103
+ const library = await createLibrary();
104
+ session = new session_1.default(library, new document_1.DocumentDescription(library, yaml), {});
105
+ session.addNode(HardSourceInfo.identifier);
106
+ session.finishEditingNode("", { config: initialConfig });
107
+ });
108
+ describe("Adding the first source", () => {
109
+ beforeEach(async () => {
110
+ const source = session.addNode(runtime_1.AvInput.info.identifier);
111
+ session?.finishEditingNode("", { config: { id: 'source1', sourceName: true } });
112
+ session?.addSubscription(source, getSwitch());
113
+ });
114
+ it("Accepts the source subscription", () => {
115
+ const switchNode = getSwitch();
116
+ void (0, chai_1.expect)(switchNode).to.not.be.undefined;
117
+ });
118
+ });
119
+ describe("Adding two sources", () => {
120
+ beforeEach(async () => {
121
+ const source1 = session.addNode(runtime_1.AvInput.info.identifier);
122
+ session.finishEditingNode("", { config: { id: 'source1', sourceName: true } });
123
+ const source2 = session.addNode(runtime_1.AvInput.info.identifier);
124
+ session.finishEditingNode("", { config: { id: 'source2', sourceName: true } });
125
+ session.addSubscription(source1, getSwitch());
126
+ session.addSubscription(source2, getSwitch());
127
+ });
128
+ it("Accepts both sources", () => {
129
+ const switchNode = getSwitch();
130
+ void (0, chai_1.expect)(switchNode).to.not.be.undefined;
131
+ });
132
+ });
133
+ describe("Removing a source", () => {
134
+ beforeEach(async () => {
135
+ const source1 = session.addNode(runtime_1.AvInput.info.identifier);
136
+ session.finishEditingNode("", { config: { id: 'source1', sourceName: true } });
137
+ const source2 = session.addNode(runtime_1.AvInput.info.identifier);
138
+ session.finishEditingNode("", { config: { id: 'source2', sourceName: true } });
139
+ session.addSubscription(source1, getSwitch());
140
+ session.addSubscription(source2, getSwitch());
141
+ session.removeSubscription(source1.id, getSwitch().id);
142
+ });
143
+ it("Removes the source from subscriptions", () => {
144
+ const switchNode = getSwitch();
145
+ void (0, chai_1.expect)(switchNode).to.not.be.undefined;
146
+ });
147
+ });
148
+ describe("Source is renamed", () => {
149
+ beforeEach(async () => {
150
+ const source1 = session.addNode(runtime_1.AvInput.info.identifier);
151
+ session.finishEditingNode("", { config: { id: 'source1', sourceName: true } });
152
+ const source2 = session.addNode(runtime_1.AvInput.info.identifier);
153
+ session.finishEditingNode("", { config: { id: 'source2', sourceName: true } });
154
+ session.addSubscription(source1, getSwitch());
155
+ session.addSubscription(source2, getSwitch());
156
+ const testConfig = { ...source1.config };
157
+ testConfig.id = 'renamed';
158
+ session.finishEditingNode("source1", { config: testConfig });
159
+ });
160
+ it("Re-adds the source with new name", () => {
161
+ const switchNode = getSwitch();
162
+ void (0, chai_1.expect)(switchNode).to.not.be.undefined;
163
+ });
164
+ });
165
+ describe("Source is deleted", () => {
166
+ beforeEach(async () => {
167
+ const source1 = session.addNode(runtime_1.AvInput.info.identifier);
168
+ session.finishEditingNode("", { config: { id: 'source1', sourceName: true } });
169
+ const source2 = session.addNode(runtime_1.AvInput.info.identifier);
170
+ session.finishEditingNode("", { config: { id: 'source2', sourceName: true } });
171
+ const source3 = session.addNode(runtime_1.AvInput.info.identifier);
172
+ session.finishEditingNode("", { config: { id: 'source3', sourceName: true } });
173
+ session.addSubscription(source1, getSwitch());
174
+ session.addSubscription(source2, getSwitch());
175
+ session.addSubscription(source3, getSwitch());
176
+ session.removeNode("source2");
177
+ });
178
+ it("Removes the source", () => {
179
+ const switchNode = getSwitch();
180
+ void (0, chai_1.expect)(switchNode).to.not.be.undefined;
181
+ });
182
+ });
183
+ });
184
+ const config = {
185
+ id: 'switch',
186
+ displayName: 'Hard Switch',
187
+ outputSource: 'output',
188
+ maxQueueMs: 1000,
189
+ failoverTimeoutMs: 2000,
190
+ sourcePriority: []
191
+ };
192
+ describe("Runtime", () => {
193
+ async function testDocument(cb) {
194
+ const runtime = await createRuntime();
195
+ const yaml = new builder_1.YamlBuilder();
196
+ const hs = new builder_1.YamlNodeBuilder('switch', HardSourceInfo, config);
197
+ yaml.addNode((new builder_1.YamlNodeBuilder('primary', runtime_1.AvInput.info, { sourceName: true })).reify());
198
+ yaml.addNode((new builder_1.YamlNodeBuilder('backup', runtime_1.AvInput.info, { sourceName: true })).reify());
199
+ hs.subscribe("primary", ["video", "audio"]);
200
+ hs.subscribe("backup", ["video", "audio"]);
201
+ cb?.(yaml, hs);
202
+ yaml.addNode(hs.reify());
203
+ const compiled = document.load(__filename, runtime, yaml_1.default.stringify(yaml.reify()));
204
+ return compiled;
205
+ }
206
+ let norsk = undefined;
207
+ let result = undefined;
208
+ afterEach(async () => {
209
+ const switcher = result?.components['switch'];
210
+ await switcher?.close();
211
+ await norsk?.close();
212
+ await new Promise((r) => {
213
+ setTimeout(() => {
214
+ r();
215
+ }, 100.0);
216
+ });
217
+ norsk = undefined;
218
+ result = undefined;
219
+ });
220
+ const latestState = () => {
221
+ return result?.runtimeState.getNodeState('switch');
222
+ };
223
+ describe("No active inputs", () => {
224
+ it("Should wait for sources to become available", async () => {
225
+ const compiled = await testDocument();
226
+ norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
227
+ result = await (0, execution_1.default)(norsk, compiled);
228
+ const switcher = result.components['switch'];
229
+ const primary = result.components['primary'];
230
+ const backup = result.components['backup'];
231
+ await primary.close();
232
+ await backup.close();
233
+ await new Promise(resolve => setTimeout(resolve, 500));
234
+ void (0, chai_1.expect)(switcher.activeSource).to.be.oneOf(['', 'primary', 'backup']);
235
+ });
236
+ });
237
+ describe("Primary source is active only", () => {
238
+ it("Should output A/V from the primary source", async () => {
239
+ const compiled = await testDocument();
240
+ norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
241
+ result = await (0, execution_1.default)(norsk, compiled);
242
+ const switcher = result.components['switch'];
243
+ const backup = result.components['backup'];
244
+ await backup.close();
245
+ await Promise.all([
246
+ (0, sinks_1.assertNodeOutputsAudioFrames)(norsk, result, 'switch'),
247
+ (0, sinks_1.assertNodeOutputsVideoFrames)(norsk, result, 'switch'),
248
+ (0, sinks_1.waitForAssert)(() => switcher.activeSource == 'primary', () => { (0, chai_1.expect)(switcher.activeSource).equals('primary'); }, 10000.0, 10.0),
249
+ (0, sinks_1.waitForAssert)(() => (latestState())?.activeSource == 'primary', () => { (0, chai_1.expect)(latestState()?.activeSource).equals('primary'); }, 10000.0, 10.0)
250
+ ]);
251
+ });
252
+ });
253
+ describe("Backup source is active only", () => {
254
+ it("Should output A/V from the backup source", async () => {
255
+ norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
256
+ const compiled = await testDocument();
257
+ result = await (0, execution_1.default)(norsk, compiled);
258
+ const switcher = result.components['switch'];
259
+ const primary = result.components['primary'];
260
+ await primary.close();
261
+ await Promise.all([
262
+ (0, sinks_1.assertNodeOutputsAudioFrames)(norsk, result, 'switch'),
263
+ (0, sinks_1.assertNodeOutputsVideoFrames)(norsk, result, 'switch'),
264
+ (0, sinks_1.waitForAssert)(() => switcher.activeSource == 'backup', () => { (0, chai_1.expect)(switcher.activeSource).equals('backup'); }, 10000.0, 10.0),
265
+ (0, sinks_1.waitForAssert)(() => (latestState())?.activeSource == 'backup', () => { (0, chai_1.expect)(latestState()?.activeSource).equals('backup'); }, 10000.0, 10.0)
266
+ ]);
267
+ });
268
+ });
269
+ describe("Primary and backup sources are active", () => {
270
+ it("Should output A/V from the first available source (primary)", async () => {
271
+ norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
272
+ const compiled = await testDocument();
273
+ result = await (0, execution_1.default)(norsk, compiled);
274
+ const switcher = result.components['switch'];
275
+ await Promise.all([
276
+ (0, sinks_1.assertNodeOutputsAudioFrames)(norsk, result, 'switch'),
277
+ (0, sinks_1.assertNodeOutputsVideoFrames)(norsk, result, 'switch'),
278
+ (0, sinks_1.waitForAssert)(() => switcher.activeSource == 'primary', () => { (0, chai_1.expect)(switcher.activeSource).equals('primary'); }, 10000.0, 10.0)
279
+ ]);
280
+ });
281
+ });
282
+ });
283
+ describe("MP4 Fallback Runtime", () => {
284
+ let norsk;
285
+ let result;
286
+ after(async () => {
287
+ await cleanupTestMp4();
288
+ });
289
+ afterEach(async () => {
290
+ const switcher = result?.components['switch'];
291
+ await switcher?.close();
292
+ await norsk?.close();
293
+ await new Promise((r) => {
294
+ setTimeout(() => {
295
+ r();
296
+ }, 100.0);
297
+ });
298
+ norsk = undefined;
299
+ result = undefined;
300
+ });
301
+ async function testDocumentWithMp4(mp4FilePath, cb) {
302
+ const runtime = await createRuntime();
303
+ const configWithMp4 = {
304
+ ...config,
305
+ fallbackFilePath: mp4FilePath
306
+ };
307
+ const yaml = new builder_1.YamlBuilder();
308
+ const hs = new builder_1.YamlNodeBuilder('switch', HardSourceInfo, configWithMp4);
309
+ yaml.addNode((new builder_1.YamlNodeBuilder('primary', runtime_1.AvInput.info, { sourceName: true })).reify());
310
+ yaml.addNode((new builder_1.YamlNodeBuilder('backup', runtime_1.AvInput.info, { sourceName: true })).reify());
311
+ hs.subscribe("primary", ["video", "audio"]);
312
+ hs.subscribe("backup", ["video", "audio"]);
313
+ cb?.(yaml, hs);
314
+ yaml.addNode(hs.reify());
315
+ const compiled = document.load(__filename, runtime, yaml_1.default.stringify(yaml.reify()));
316
+ return compiled;
317
+ }
318
+ describe("No active inputs with MP4 fallback", () => {
319
+ it("Should output A/V from the MP4 fallback source", async () => {
320
+ const testMp4Path = await setupTestMp4();
321
+ norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
322
+ const compiled = await testDocumentWithMp4(testMp4Path);
323
+ result = await (0, execution_1.default)(norsk, compiled);
324
+ const switcher = result.components['switch'];
325
+ const primary = result.components['primary'];
326
+ const backup = result.components['backup'];
327
+ await new Promise(resolve => setTimeout(resolve, 500));
328
+ await primary.close();
329
+ await backup.close();
330
+ await new Promise(resolve => setTimeout(resolve, 4000));
331
+ await Promise.all([
332
+ (0, sinks_1.assertNodeOutputsAudioFrames)(norsk, result, 'switch'),
333
+ (0, sinks_1.assertNodeOutputsVideoFrames)(norsk, result, 'switch'),
334
+ (0, sinks_1.waitForAssert)(() => switcher.activeSource == 'fallback', () => { (0, chai_1.expect)(switcher.activeSource).equals('fallback'); }, 5000.0, 100.0)
335
+ ]);
336
+ });
337
+ });
338
+ describe("Switch from MP4 fallback to primary source", () => {
339
+ it("Should switch to primary when source becomes available", async () => {
340
+ const testMp4Path = await setupTestMp4();
341
+ norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
342
+ const compiled = await testDocumentWithMp4(testMp4Path);
343
+ result = await (0, execution_1.default)(norsk, compiled);
344
+ const switcher = result.components['switch'];
345
+ const primary = result.components['primary'];
346
+ const backup = result.components['backup'];
347
+ await new Promise(resolve => setTimeout(resolve, 500));
348
+ await primary.close();
349
+ await backup.close();
350
+ await new Promise(resolve => setTimeout(resolve, 4000));
351
+ await (0, sinks_1.waitForAssert)(() => switcher.activeSource == 'fallback', () => { (0, chai_1.expect)(switcher.activeSource).equals('fallback'); }, 5000.0, 100.0);
352
+ await Promise.all([
353
+ (0, sinks_1.assertNodeOutputsAudioFrames)(norsk, result, 'switch'),
354
+ (0, sinks_1.assertNodeOutputsVideoFrames)(norsk, result, 'switch')
355
+ ]);
356
+ void (0, chai_1.expect)(switcher.mp4).to.not.be.undefined;
357
+ });
358
+ });
359
+ describe("MP4 fallback configuration", () => {
360
+ it("Should create MP4 input node when fallbackFilePath is configured", async () => {
361
+ const testMp4Path = await setupTestMp4();
362
+ norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
363
+ const compiled = await testDocumentWithMp4(testMp4Path);
364
+ result = await (0, execution_1.default)(norsk, compiled);
365
+ const switcher = result.components['switch'];
366
+ void (0, chai_1.expect)(switcher.mp4).to.not.be.undefined;
367
+ });
368
+ });
369
+ });
370
+ describe("Commands", () => {
371
+ async function testDocument() {
372
+ const runtime = await createRuntime();
373
+ const yaml = new builder_1.YamlBuilder();
374
+ const hs = new builder_1.YamlNodeBuilder('switch', HardSourceInfo, config);
375
+ yaml.addNode((new builder_1.YamlNodeBuilder('primary', runtime_1.AvInput.info, { sourceName: true })).reify());
376
+ yaml.addNode((new builder_1.YamlNodeBuilder('backup', runtime_1.AvInput.info, { sourceName: true })).reify());
377
+ hs.subscribe("primary", ["video", "audio"]);
378
+ hs.subscribe("backup", ["video", "audio"]);
379
+ yaml.addNode(hs.reify());
380
+ const compiled = document.load(__filename, runtime, yaml_1.default.stringify(yaml.reify()));
381
+ return compiled;
382
+ }
383
+ let norsk = undefined;
384
+ let result = undefined;
385
+ afterEach(async () => {
386
+ await norsk?.close();
387
+ norsk = undefined;
388
+ result = undefined;
389
+ });
390
+ const latestState = () => {
391
+ return result?.runtimeState.getNodeState('switch');
392
+ };
393
+ const sendCommand = async (cmd) => {
394
+ const switcher = result?.components['switch'];
395
+ if (switcher) {
396
+ if (cmd.type === 'set-priority-order') {
397
+ switcher.setPriorityOrder(cmd.sources);
398
+ }
399
+ else if (cmd.type === 'switch-to-source') {
400
+ await switcher.switchToSource(cmd.source);
401
+ }
402
+ }
403
+ };
404
+ describe("set-priority-order command", () => {
405
+ it("Should update the priority order", async () => {
406
+ norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
407
+ const compiled = await testDocument();
408
+ result = await (0, execution_1.default)(norsk, compiled);
409
+ const switcher = result.components['switch'];
410
+ await (0, sinks_1.waitForAssert)(() => switcher.activeSource == 'primary', () => { (0, chai_1.expect)(switcher.activeSource).equals('primary'); }, 10000.0, 10.0);
411
+ await sendCommand({
412
+ type: 'set-priority-order',
413
+ sources: ['backup', 'primary']
414
+ });
415
+ await (0, sinks_1.waitForAssert)(() => latestState()?.sourcePriority?.length === 2, () => {
416
+ const state = latestState();
417
+ void (0, chai_1.expect)(state?.sourcePriority).deep.equals(['backup', 'primary']);
418
+ }, 5000.0, 10.0);
419
+ });
420
+ });
421
+ describe("switch-to-source command", () => {
422
+ it("Should switch to specified source when available", async () => {
423
+ norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
424
+ const compiled = await testDocument();
425
+ result = await (0, execution_1.default)(norsk, compiled);
426
+ const switcher = result.components['switch'];
427
+ await (0, sinks_1.waitForAssert)(() => switcher.availableSourceNames.length == 2 && switcher.activeSource === 'primary', () => {
428
+ void (0, chai_1.expect)(switcher.availableSourceNames).to.have.members(['primary', 'backup']);
429
+ void (0, chai_1.expect)(switcher.activeSource).equals('primary');
430
+ }, 10000.0, 10.0);
431
+ await sendCommand({
432
+ type: 'switch-to-source',
433
+ source: 'backup'
434
+ });
435
+ await (0, sinks_1.waitForAssert)(() => latestState()?.activeSource === 'backup', () => {
436
+ void (0, chai_1.expect)(latestState()?.activeSource).equals('backup');
437
+ void (0, chai_1.expect)(switcher.activeSource).equals('backup');
438
+ }, 5000.0, 10.0);
439
+ await sendCommand({
440
+ type: 'switch-to-source',
441
+ source: 'primary'
442
+ });
443
+ await (0, sinks_1.waitForAssert)(() => latestState()?.activeSource === 'primary', () => {
444
+ void (0, chai_1.expect)(latestState()?.activeSource).equals('primary');
445
+ void (0, chai_1.expect)(switcher.activeSource).equals('primary');
446
+ }, 5000.0, 10.0);
447
+ });
448
+ it("Should return error result when switching to already active source", async () => {
449
+ norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
450
+ const compiled = await testDocument();
451
+ result = await (0, execution_1.default)(norsk, compiled);
452
+ const switcher = result.components['switch'];
453
+ await (0, sinks_1.waitForAssert)(() => switcher.activeSource === 'primary', () => { (0, chai_1.expect)(switcher.activeSource).equals('primary'); }, 10000.0, 10.0);
454
+ const commandResult = await switcher.switchToSource('primary');
455
+ void (0, chai_1.expect)(commandResult.status).to.equal('error');
456
+ if (commandResult.status === 'error') {
457
+ void (0, chai_1.expect)(commandResult.error).to.contain('already active');
458
+ }
459
+ });
460
+ });
461
+ });
462
+ describe("Manual switch priority promotion", () => {
463
+ async function testDocument() {
464
+ const runtime = await createRuntime();
465
+ const yaml = new builder_1.YamlBuilder();
466
+ const hs = new builder_1.YamlNodeBuilder('switch', HardSourceInfo, config);
467
+ yaml.addNode((new builder_1.YamlNodeBuilder('primary', runtime_1.AvInput.info, { sourceName: true })).reify());
468
+ yaml.addNode((new builder_1.YamlNodeBuilder('backup', runtime_1.AvInput.info, { sourceName: true })).reify());
469
+ hs.subscribe("primary", ["video", "audio"]);
470
+ hs.subscribe("backup", ["video", "audio"]);
471
+ yaml.addNode(hs.reify());
472
+ const compiled = document.load(__filename, runtime, yaml_1.default.stringify(yaml.reify()));
473
+ return compiled;
474
+ }
475
+ let norsk = undefined;
476
+ let result = undefined;
477
+ afterEach(async () => {
478
+ await norsk?.close();
479
+ norsk = undefined;
480
+ result = undefined;
481
+ });
482
+ const latestState = () => {
483
+ return result?.runtimeState.getNodeState('switch');
484
+ };
485
+ it("Should promote manually selected source to top priority", async () => {
486
+ norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
487
+ const compiled = await testDocument();
488
+ result = await (0, execution_1.default)(norsk, compiled);
489
+ const switcher = result.components['switch'];
490
+ await (0, sinks_1.waitForAssert)(() => switcher.availableSourceNames.length == 2, () => {
491
+ void (0, chai_1.expect)(switcher.availableSourceNames).to.have.members(['primary', 'backup']);
492
+ }, 10000.0, 10.0);
493
+ void (0, chai_1.expect)(switcher.sourcePriority[0]).equals('primary');
494
+ await switcher.switchToSource('backup');
495
+ await (0, sinks_1.waitForAssert)(() => switcher.activeSource === 'backup', () => { (0, chai_1.expect)(switcher.activeSource).equals('backup'); }, 5000.0, 10.0);
496
+ await (0, sinks_1.waitForAssert)(() => latestState()?.sourcePriority?.[0] === 'backup', () => {
497
+ const state = latestState();
498
+ void (0, chai_1.expect)(state?.sourcePriority?.[0]).equals('backup');
499
+ void (0, chai_1.expect)(state?.sourcePriority?.[1]).equals('primary');
500
+ }, 5000.0, 10.0);
501
+ });
502
+ });
503
+ });
504
+ //# sourceMappingURL=hard-source-switch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hard-source-switch.js","sourceRoot":"","sources":["../../../src/test/hard-source-switch.ts"],"names":[],"mappings":"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"}
@@ -64,7 +64,9 @@ describe("fileMp4", () => {
64
64
  const yaml = new builder_1.YamlBuilder()
65
65
  .addNode(new builder_1.YamlNodeBuilder('fileMp4', (0, info_1.default)(client_types_1.RegistrationConsts), {
66
66
  fileName: path_1.default.join(test_dir_prefix, "test-output"),
67
- writeMode: "fragmented"
67
+ writeMode: "fragmented",
68
+ incrementalWriteInterval: 10,
69
+ expectedFileDuration: 3600
68
70
  }).reify())
69
71
  .reify();
70
72
  return document.load(__filename, runtime, yaml_1.default.stringify(yaml));
@@ -1 +1 @@
1
- {"version":3,"file":"output.fileMp4.js","sourceRoot":"","sources":["../../../src/test/output.fileMp4.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output.fileMp4.js","sourceRoot":"","sources":["../../../src/test/output.fileMp4.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-2026-01-10-23683704",
3
+ "version": "1.27.0-2026-01-15-ecb87e67",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "clean": "rm -rf lib client build .wireit && make clean",
@@ -13,7 +13,7 @@
13
13
  "build:types": "wireit",
14
14
  "build:tailwind": "wireit",
15
15
  "lint": "wireit",
16
- "test": "LOG_LEVEL=error mocha --no-parallel --jobs=0 --timeout 120000 --recursive lib/test",
16
+ "test": "LOG_LEVEL=error mocha --no-parallel --jobs=0 --timeout 120000 --exit --recursive lib/test",
17
17
  "build:no-lint": "wireit"
18
18
  },
19
19
  "wireit": {
@@ -164,9 +164,9 @@
164
164
  "@apidevtools/json-schema-ref-parser": "^12.0.1",
165
165
  "@norskvideo/norsk-player": "^1.0.4",
166
166
  "@norskvideo/norsk-player-react": "*",
167
- "@norskvideo/norsk-sdk": "^1.0.402-2026-01-10-a65137ac",
168
- "@norskvideo/norsk-studio": "1.27.0-2026-01-10-23683704",
169
- "@norskvideo/norsk-studio-built-ins": "1.27.0-2026-01-10-23683704",
167
+ "@norskvideo/norsk-sdk": "^1.0.402-2026-01-15-5687d367",
168
+ "@norskvideo/norsk-studio": "1.27.0-2026-01-15-ecb87e67",
169
+ "@norskvideo/norsk-studio-built-ins": "1.27.0-2026-01-15-ecb87e67",
170
170
  "@norskvideo/webrtc-client": "^0.1.2",
171
171
  "@react-icons/all-files": "^4.1.0",
172
172
  "chart.js": "^4.4.2",