@norskvideo/norsk-studio-built-ins 1.27.0-2025-07-09-1c530503 → 1.27.0-2025-07-09-d12abafa

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.
@@ -0,0 +1,358 @@
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 norsk_sdk_1 = require("@norskvideo/norsk-sdk");
30
+ const __1 = require("../");
31
+ const builder_1 = require("@norskvideo/norsk-studio/lib/test/_util/builder");
32
+ const document = __importStar(require("@norskvideo/norsk-studio/lib/runtime/document"));
33
+ const yaml_1 = __importDefault(require("yaml"));
34
+ const execution_1 = __importStar(require("@norskvideo/norsk-studio/lib/runtime/execution"));
35
+ const sinks_1 = require("@norskvideo/norsk-studio/lib/test/_util/sinks");
36
+ const info_1 = __importDefault(require("../input.file/info"));
37
+ const client_types_1 = require("@norskvideo/norsk-studio/lib/extension/client-types");
38
+ const chai_1 = require("chai");
39
+ const util_1 = require("@norskvideo/norsk-studio/lib/shared/util");
40
+ const path_1 = __importDefault(require("path"));
41
+ const express_1 = __importDefault(require("express"));
42
+ async function defaultRuntime() {
43
+ const runtime = (0, builder_1.emptyRuntime)();
44
+ await (0, __1.registerAll)(runtime);
45
+ return runtime;
46
+ }
47
+ describe("File Input", () => {
48
+ const testMp4 = path_1.default.resolve(__dirname, "../../data/TraditionalMusic.mp4");
49
+ const testTs = path_1.default.resolve(__dirname, "../../data/InkDrop.ts");
50
+ function impl(desc, cfg, cb) {
51
+ async function testDocument(additionalCfg) {
52
+ const runtime = await defaultRuntime();
53
+ const finalCfg = { ...cfg, ...(additionalCfg ?? {}) };
54
+ const yaml = new builder_1.YamlBuilder()
55
+ .addNode(new builder_1.YamlNodeBuilder('file-input', (0, info_1.default)(client_types_1.RegistrationConsts), finalCfg).reify())
56
+ .reify();
57
+ return document.load(__filename, runtime, yaml_1.default.stringify(yaml));
58
+ }
59
+ describe(desc, () => {
60
+ cb(testDocument, cfg);
61
+ });
62
+ }
63
+ impl("File Input Component", {
64
+ id: 'file-input',
65
+ displayName: "Test File Input",
66
+ sourceName: 'file-source'
67
+ }, (testDocument, _cfg) => {
68
+ let norsk = undefined;
69
+ describe("Initial State", () => {
70
+ afterEach(async () => {
71
+ await norsk?.close();
72
+ });
73
+ it("Should start in idle state", async () => {
74
+ norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
75
+ const compiled = await testDocument();
76
+ const result = await (0, execution_1.default)(norsk, compiled);
77
+ const fileNode = result.components['file-input'];
78
+ (0, chai_1.expect)(fileNode).to.not.be.undefined;
79
+ const state = result.runtimeState.getNodeState('file-input');
80
+ (0, chai_1.expect)(state.status).to.equal('idle');
81
+ (0, chai_1.expect)(state.currentFile).to.be.null;
82
+ (0, chai_1.expect)(state.error).to.be.null;
83
+ });
84
+ });
85
+ describe("API Endpoints", () => {
86
+ let app;
87
+ let server;
88
+ let port;
89
+ let result;
90
+ beforeEach(async () => {
91
+ console.log('starting');
92
+ norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
93
+ app = (0, express_1.default)();
94
+ app.use(express_1.default.json());
95
+ server = app.listen(0);
96
+ port = server.address().port;
97
+ const compiled = await testDocument();
98
+ result = await (0, execution_1.default)(norsk, compiled, app);
99
+ console.log('started');
100
+ });
101
+ afterEach(async () => {
102
+ console.log("Shutting down");
103
+ await norsk?.close();
104
+ console.log("And express ");
105
+ server?.close();
106
+ console.log("Shut down");
107
+ });
108
+ const latestState = () => {
109
+ return result?.runtimeState.getNodeState('file-input');
110
+ };
111
+ it("Should respond to status endpoint", async () => {
112
+ const fileNode = result.components['file-input'];
113
+ const response = await fetch(`http://localhost:${port}/${fileNode.id}/status`);
114
+ (0, chai_1.expect)(response.status).to.equal(200);
115
+ const status = await response.json();
116
+ (0, chai_1.expect)(status.status).to.equal('idle');
117
+ });
118
+ it("Should handle play endpoint with valid MP4 file", async () => {
119
+ const fileNode = result.components['file-input'];
120
+ const response = await fetch(`http://localhost:${port}/${fileNode.id}/play`, {
121
+ method: 'POST',
122
+ headers: { 'Content-Type': 'application/json' },
123
+ body: JSON.stringify({ filePath: testMp4 })
124
+ });
125
+ (0, chai_1.expect)(response.status).to.equal(200);
126
+ const result_body = await response.json();
127
+ (0, chai_1.expect)(result_body.status).to.equal('playing');
128
+ (0, chai_1.expect)(result_body.filePath).to.equal(testMp4);
129
+ await (0, util_1.waitForCondition)(async () => {
130
+ const state = latestState();
131
+ return state?.status === 'playing';
132
+ });
133
+ const state = latestState();
134
+ (0, chai_1.expect)(state?.currentFile).to.equal(testMp4);
135
+ });
136
+ it("Should handle play endpoint with valid TS file", async () => {
137
+ const fileNode = result.components['file-input'];
138
+ const response = await fetch(`http://localhost:${port}/${fileNode.id}/play`, {
139
+ method: 'POST',
140
+ headers: { 'Content-Type': 'application/json' },
141
+ body: JSON.stringify({ filePath: testTs })
142
+ });
143
+ (0, chai_1.expect)(response.status).to.equal(200);
144
+ const result_body = await response.json();
145
+ (0, chai_1.expect)(result_body.status).to.equal('playing');
146
+ (0, chai_1.expect)(result_body.filePath).to.equal(testTs);
147
+ await (0, util_1.waitForCondition)(async () => {
148
+ const state = latestState();
149
+ return state?.status === 'playing';
150
+ });
151
+ const state = latestState();
152
+ (0, chai_1.expect)(state?.currentFile).to.equal(testTs);
153
+ });
154
+ it("Should reject play request without filePath", async () => {
155
+ const fileNode = result.components['file-input'];
156
+ const response = await fetch(`http://localhost:${port}/${fileNode.id}/play`, {
157
+ method: 'POST',
158
+ headers: { 'Content-Type': 'application/json' },
159
+ body: JSON.stringify({})
160
+ });
161
+ (0, chai_1.expect)(response.status).to.equal(400);
162
+ const error = await response.json();
163
+ (0, chai_1.expect)(error.error).to.include('filePath is required');
164
+ });
165
+ it("Should handle stop endpoint for MP4", async () => {
166
+ const fileNode = result.components['file-input'];
167
+ await fetch(`http://localhost:${port}/${fileNode.id}/play`, {
168
+ method: 'POST',
169
+ headers: { 'Content-Type': 'application/json' },
170
+ body: JSON.stringify({ filePath: testMp4 })
171
+ });
172
+ await (0, util_1.waitForCondition)(async () => {
173
+ const state = latestState();
174
+ return state?.status === 'playing';
175
+ });
176
+ const response = await fetch(`http://localhost:${port}/${fileNode.id}/stop`, {
177
+ method: 'POST'
178
+ });
179
+ (0, chai_1.expect)(response.status).to.equal(200);
180
+ const result_body = await response.json();
181
+ (0, chai_1.expect)(result_body.status).to.equal('stopped');
182
+ await (0, util_1.waitForCondition)(async () => {
183
+ const state = latestState();
184
+ return state?.status === 'idle';
185
+ });
186
+ const state = latestState();
187
+ (0, chai_1.expect)(state?.currentFile).to.be.null;
188
+ });
189
+ it("Should handle stop endpoint for TS", async () => {
190
+ const fileNode = result.components['file-input'];
191
+ await fetch(`http://localhost:${port}/${fileNode.id}/play`, {
192
+ method: 'POST',
193
+ headers: { 'Content-Type': 'application/json' },
194
+ body: JSON.stringify({ filePath: testTs })
195
+ });
196
+ await (0, util_1.waitForCondition)(async () => {
197
+ const state = latestState();
198
+ return state?.status === 'playing';
199
+ });
200
+ const response = await fetch(`http://localhost:${port}/${fileNode.id}/stop`, {
201
+ method: 'POST'
202
+ });
203
+ (0, chai_1.expect)(response.status).to.equal(200);
204
+ const result_body = await response.json();
205
+ (0, chai_1.expect)(result_body.status).to.equal('stopped');
206
+ await (0, util_1.waitForCondition)(async () => {
207
+ const state = latestState();
208
+ return state?.status === 'idle';
209
+ });
210
+ const state = latestState();
211
+ (0, chai_1.expect)(state?.currentFile).to.be.null;
212
+ });
213
+ it("Should handle file not found error", async () => {
214
+ const fileNode = result.components['file-input'];
215
+ const nonExistentFile = '/nonexistent/file.mp4';
216
+ const response = await fetch(`http://localhost:${port}/${fileNode.id}/play`, {
217
+ method: 'POST',
218
+ headers: { 'Content-Type': 'application/json' },
219
+ body: JSON.stringify({ filePath: nonExistentFile })
220
+ });
221
+ (0, chai_1.expect)(response.status).to.equal(200);
222
+ await (0, util_1.waitForCondition)(async () => {
223
+ const state = latestState();
224
+ return state?.status === 'error';
225
+ }, 5000);
226
+ const state = latestState();
227
+ (0, chai_1.expect)(state?.error).to.not.be.null;
228
+ (0, chai_1.expect)(state?.error).to.include('Failed to create file input');
229
+ });
230
+ it("Should reject unsupported file types", async () => {
231
+ const fileNode = result.components['file-input'];
232
+ const response = await fetch(`http://localhost:${port}/${fileNode.id}/play`, {
233
+ method: 'POST',
234
+ headers: { 'Content-Type': 'application/json' },
235
+ body: JSON.stringify({ filePath: '/some/file.txt' })
236
+ });
237
+ (0, chai_1.expect)(response.status).to.equal(200);
238
+ await (0, util_1.waitForCondition)(async () => {
239
+ const state = latestState();
240
+ return state?.status === 'error';
241
+ });
242
+ const state = latestState();
243
+ (0, chai_1.expect)(state?.error).to.include('Unsupported file type');
244
+ });
245
+ it("Should handle unsupported file extensions", async () => {
246
+ const fileNode = result.components['file-input'];
247
+ const response = await fetch(`http://localhost:${port}/${fileNode.id}/play`, {
248
+ method: 'POST',
249
+ headers: { 'Content-Type': 'application/json' },
250
+ body: JSON.stringify({ filePath: '/some/file.avi' })
251
+ });
252
+ (0, chai_1.expect)(response.status).to.equal(200);
253
+ await (0, util_1.waitForCondition)(async () => {
254
+ const state = latestState();
255
+ return state?.status === 'error';
256
+ });
257
+ const state = latestState();
258
+ (0, chai_1.expect)(state?.error).to.include('Unsupported file type: .avi');
259
+ });
260
+ });
261
+ describe("Stream Output", () => {
262
+ let app;
263
+ let server;
264
+ let port;
265
+ let result;
266
+ let sink;
267
+ beforeEach(async () => {
268
+ norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
269
+ app = (0, express_1.default)();
270
+ app.use(express_1.default.json());
271
+ server = app.listen(0);
272
+ port = server.address().port;
273
+ const compiled = await testDocument();
274
+ result = await (0, execution_1.default)(norsk, compiled, app);
275
+ sink = new sinks_1.TraceSink(norsk, "sink");
276
+ await sink.initialised;
277
+ });
278
+ afterEach(async () => {
279
+ await norsk?.close();
280
+ server?.close();
281
+ });
282
+ it("Should output streams when playing MP4 file", async () => {
283
+ const fileNode = result.components['file-input'];
284
+ const subs = new execution_1.ComponentSubscriptions(norsk, sink);
285
+ subs.setSources([
286
+ new execution_1.StudioNodeSubscriptionSource(fileNode, result.document.components['file-input'].yaml, { type: 'take-all-streams', filter: client_types_1.Av.map((media) => ({ media })) }, (0, info_1.default)(client_types_1.RegistrationConsts))
287
+ ]);
288
+ await fetch(`http://localhost:${port}/${fileNode.id}/play`, {
289
+ method: 'POST',
290
+ headers: { 'Content-Type': 'application/json' },
291
+ body: JSON.stringify({ filePath: testMp4 })
292
+ });
293
+ await (0, sinks_1.waitForAssert)(() => sink.streamCount() > 0, () => {
294
+ (0, chai_1.expect)(sink.streamCount()).to.be.greaterThan(0);
295
+ }, 10000, 100);
296
+ });
297
+ it("Should output streams when playing TS file", async () => {
298
+ const fileNode = result.components['file-input'];
299
+ const subs = new execution_1.ComponentSubscriptions(norsk, sink);
300
+ subs.setSources([
301
+ new execution_1.StudioNodeSubscriptionSource(fileNode, result.document.components['file-input'].yaml, { type: 'take-all-streams', filter: client_types_1.Av.map((media) => ({ media })) }, (0, info_1.default)(client_types_1.RegistrationConsts))
302
+ ]);
303
+ await fetch(`http://localhost:${port}/${fileNode.id}/play`, {
304
+ method: 'POST',
305
+ headers: { 'Content-Type': 'application/json' },
306
+ body: JSON.stringify({ filePath: testTs })
307
+ });
308
+ await (0, sinks_1.waitForAssert)(() => sink.streamCount() > 0, () => {
309
+ (0, chai_1.expect)(sink.streamCount()).to.be.greaterThan(0);
310
+ }, 10000, 100);
311
+ });
312
+ });
313
+ describe("Concurrent Operations", () => {
314
+ let app;
315
+ let server;
316
+ let port;
317
+ let result;
318
+ beforeEach(async () => {
319
+ norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
320
+ app = (0, express_1.default)();
321
+ app.use(express_1.default.json());
322
+ server = app.listen(0);
323
+ port = server.address().port;
324
+ const compiled = await testDocument();
325
+ result = await (0, execution_1.default)(norsk, compiled, app);
326
+ });
327
+ afterEach(async () => {
328
+ await norsk?.close();
329
+ server?.close();
330
+ });
331
+ const latestState = () => {
332
+ return result?.runtimeState.getNodeState('file-input');
333
+ };
334
+ it("Should reject concurrent play requests", async () => {
335
+ const fileNode = result.components['file-input'];
336
+ const response1 = await fetch(`http://localhost:${port}/${fileNode.id}/play`, {
337
+ method: 'POST',
338
+ headers: { 'Content-Type': 'application/json' },
339
+ body: JSON.stringify({ filePath: testMp4 })
340
+ });
341
+ (0, chai_1.expect)(response1.status).to.equal(200);
342
+ await (0, util_1.waitForCondition)(async () => {
343
+ const state = latestState();
344
+ return state?.status === 'playing';
345
+ });
346
+ const response2 = await fetch(`http://localhost:${port}/${fileNode.id}/play`, {
347
+ method: 'POST',
348
+ headers: { 'Content-Type': 'application/json' },
349
+ body: JSON.stringify({ filePath: testMp4 })
350
+ });
351
+ (0, chai_1.expect)(response2.status).to.equal(200);
352
+ const state = latestState();
353
+ (0, chai_1.expect)(state?.status).to.equal('playing');
354
+ });
355
+ });
356
+ });
357
+ });
358
+ //# sourceMappingURL=file-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-input.js","sourceRoot":"","sources":["../../src/test/file-input.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@norskvideo/norsk-studio-built-ins",
3
- "version": "1.27.0-2025-07-09-1c530503",
3
+ "version": "1.27.0-2025-07-09-d12abafa",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "clean": "rm -rf lib client build && make clean",
@@ -23,7 +23,7 @@
23
23
  "dependencies": {
24
24
  "@apidevtools/json-schema-ref-parser": "^12.0.1",
25
25
  "@norskvideo/norsk-sdk": "^1.0.402-2025-07-09-56ffd6cf",
26
- "@norskvideo/norsk-studio": "1.27.0-2025-07-09-1c530503",
26
+ "@norskvideo/norsk-studio": "1.27.0-2025-07-09-d12abafa",
27
27
  "@norskvideo/webrtc-client": "^0.1.2",
28
28
  "@react-icons/all-files": "^4.1.0",
29
29
  "body-parser": "^1.20.2",