@norskvideo/norsk-studio-built-ins 1.14.0 → 1.16.0

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 (135) hide show
  1. package/README.md +16 -0
  2. package/client/info.js +725 -456
  3. package/client/style.css +321 -112
  4. package/lib/info.js +2 -2
  5. package/lib/info.js.map +1 -1
  6. package/lib/input.rtmp/info.js +1 -1
  7. package/lib/input.rtmp/info.js.map +1 -1
  8. package/lib/input.silence/info.js +1 -0
  9. package/lib/input.silence/info.js.map +1 -1
  10. package/lib/input.srt-caller/info.js +6 -5
  11. package/lib/input.srt-caller/info.js.map +1 -1
  12. package/lib/input.srt-caller/runtime.d.ts +1 -1
  13. package/lib/input.srt-listener/info.js +7 -5
  14. package/lib/input.srt-listener/info.js.map +1 -1
  15. package/lib/input.srt-listener/runtime.d.ts +1 -1
  16. package/lib/input.udp-ts/info.d.ts +1 -1
  17. package/lib/input.udp-ts/info.js +5 -4
  18. package/lib/input.udp-ts/info.js.map +1 -1
  19. package/lib/input.udp-ts/runtime.d.ts +1 -1
  20. package/lib/input.videoTestCard/info.js +1 -0
  21. package/lib/input.videoTestCard/info.js.map +1 -1
  22. package/lib/output.autoCmaf/info.d.ts +1 -1
  23. package/lib/output.autoCmaf/info.js +54 -1
  24. package/lib/output.autoCmaf/info.js.map +1 -1
  25. package/lib/output.autoCmaf/runtime.d.ts +10 -0
  26. package/lib/output.autoCmaf/runtime.js +35 -4
  27. package/lib/output.autoCmaf/runtime.js.map +1 -1
  28. package/lib/output.autoCmaf/summary.js +23 -1
  29. package/lib/output.autoCmaf/summary.js.map +1 -1
  30. package/lib/output.preview/info.js +1 -0
  31. package/lib/output.preview/info.js.map +1 -1
  32. package/lib/output.preview/runtime.js +8 -4
  33. package/lib/output.preview/runtime.js.map +1 -1
  34. package/lib/output.rtmp/info.js +1 -0
  35. package/lib/output.rtmp/info.js.map +1 -1
  36. package/lib/output.srt/info.js +6 -5
  37. package/lib/output.srt/info.js.map +1 -1
  38. package/lib/output.srt/runtime.d.ts +1 -1
  39. package/lib/output.statistics/info.js +1 -0
  40. package/lib/output.statistics/info.js.map +1 -1
  41. package/lib/output.udpTs/info.d.ts +1 -1
  42. package/lib/output.udpTs/info.js +4 -3
  43. package/lib/output.udpTs/info.js.map +1 -1
  44. package/lib/output.udpTs/runtime.d.ts +1 -1
  45. package/lib/output.whep/info.js +1 -0
  46. package/lib/output.whep/info.js.map +1 -1
  47. package/lib/processor.browserOverlay/info.d.ts +2 -2
  48. package/lib/processor.browserOverlay/info.js +55 -1
  49. package/lib/processor.browserOverlay/info.js.map +1 -1
  50. package/lib/processor.browserOverlay/inline-view.d.ts +6 -0
  51. package/lib/processor.browserOverlay/inline-view.js +8 -0
  52. package/lib/processor.browserOverlay/inline-view.js.map +1 -0
  53. package/lib/processor.browserOverlay/openApi.d.ts +174 -0
  54. package/lib/processor.browserOverlay/openApi.js +3 -0
  55. package/lib/processor.browserOverlay/openApi.js.map +1 -0
  56. package/lib/processor.browserOverlay/runtime.d.ts +40 -6
  57. package/lib/processor.browserOverlay/runtime.js +147 -18
  58. package/lib/processor.browserOverlay/runtime.js.map +1 -1
  59. package/lib/processor.browserOverlay/summary-view.d.ts +4 -0
  60. package/lib/processor.browserOverlay/summary-view.js +27 -0
  61. package/lib/processor.browserOverlay/summary-view.js.map +1 -0
  62. package/lib/processor.browserOverlay/types.yaml +65 -0
  63. package/lib/processor.cascadingSwitch/info.js +1 -0
  64. package/lib/processor.cascadingSwitch/info.js.map +1 -1
  65. package/lib/processor.fixedLadder/codec-editor.js +1 -1
  66. package/lib/processor.fixedLadder/codec-editor.js.map +1 -1
  67. package/lib/processor.fixedLadder/codec-view.js +1 -1
  68. package/lib/processor.fixedLadder/codec-view.js.map +1 -1
  69. package/lib/processor.fixedLadder/info.js +1 -0
  70. package/lib/processor.fixedLadder/info.js.map +1 -1
  71. package/lib/processor.fixedLadder/rung-view.js +1 -1
  72. package/lib/processor.fixedLadder/rung-view.js.map +1 -1
  73. package/lib/processor.onscreenGraphic/image-selection.d.ts +9 -0
  74. package/lib/{processor.dynamicBug/bug-selection.js → processor.onscreenGraphic/image-selection.js} +10 -10
  75. package/lib/processor.onscreenGraphic/image-selection.js.map +1 -0
  76. package/lib/processor.onscreenGraphic/info.d.ts +3 -0
  77. package/lib/{processor.dynamicBug → processor.onscreenGraphic}/info.js +12 -12
  78. package/lib/processor.onscreenGraphic/info.js.map +1 -0
  79. package/lib/processor.onscreenGraphic/runtime.d.ts +67 -0
  80. package/lib/{processor.dynamicBug → processor.onscreenGraphic}/runtime.js +109 -161
  81. package/lib/processor.onscreenGraphic/runtime.js.map +1 -0
  82. package/lib/processor.onscreenGraphic/summary-view.d.ts +4 -0
  83. package/lib/processor.onscreenGraphic/summary-view.js +128 -0
  84. package/lib/processor.onscreenGraphic/summary-view.js.map +1 -0
  85. package/lib/processor.onscreenGraphic/types.d.ts +257 -0
  86. package/lib/processor.onscreenGraphic/types.js.map +1 -0
  87. package/lib/processor.onscreenGraphic/types.yaml +162 -0
  88. package/lib/processor.whisper-transcribe/info.js +3 -2
  89. package/lib/processor.whisper-transcribe/info.js.map +1 -1
  90. package/lib/shared/drm/axinom.d.ts +2 -0
  91. package/lib/shared/drm/axinom.js +120 -0
  92. package/lib/shared/drm/axinom.js.map +1 -0
  93. package/lib/shared/drm/cpix.d.ts +24 -0
  94. package/lib/shared/drm/cpix.js +97 -0
  95. package/lib/shared/drm/cpix.js.map +1 -0
  96. package/lib/shared/drm/ezdrm.d.ts +2 -0
  97. package/lib/shared/drm/ezdrm.js +26 -0
  98. package/lib/shared/drm/ezdrm.js.map +1 -0
  99. package/lib/shared/srt-socket-options.js +6 -6
  100. package/lib/shared/srt-socket-options.js.map +1 -1
  101. package/lib/test/{dynamic-bug.js → onscreen-graphic.js} +79 -79
  102. package/lib/test/onscreen-graphic.js.map +1 -0
  103. package/lib/test/srt-input-caller.js +5 -5
  104. package/lib/test/srt-input-caller.js.map +1 -1
  105. package/lib/test/srt-input-listener.js +18 -18
  106. package/lib/test/srt-input-listener.js.map +1 -1
  107. package/lib/test/srt-output.js +2 -2
  108. package/lib/test/srt-output.js.map +1 -1
  109. package/lib/test/udp-output.js +2 -2
  110. package/lib/test/udp-output.js.map +1 -1
  111. package/lib/test/udp-ts-input.js +2 -2
  112. package/lib/test/udp-ts-input.js.map +1 -1
  113. package/lib/util.stats.latency/info.js +1 -0
  114. package/lib/util.stats.latency/info.js.map +1 -1
  115. package/lib/util.stats.ma35d/info.js +1 -0
  116. package/lib/util.stats.ma35d/info.js.map +1 -1
  117. package/lib/util.timestamps/info.js +1 -0
  118. package/lib/util.timestamps/info.js.map +1 -1
  119. package/package.json +10 -6
  120. package/Readme.adoc +0 -16
  121. package/lib/processor.dynamicBug/bug-selection.d.ts +0 -9
  122. package/lib/processor.dynamicBug/bug-selection.js.map +0 -1
  123. package/lib/processor.dynamicBug/info.d.ts +0 -3
  124. package/lib/processor.dynamicBug/info.js.map +0 -1
  125. package/lib/processor.dynamicBug/runtime.d.ts +0 -67
  126. package/lib/processor.dynamicBug/runtime.js.map +0 -1
  127. package/lib/processor.dynamicBug/summary-view.d.ts +0 -4
  128. package/lib/processor.dynamicBug/summary-view.js +0 -128
  129. package/lib/processor.dynamicBug/summary-view.js.map +0 -1
  130. package/lib/processor.dynamicBug/types.d.ts +0 -19
  131. package/lib/processor.dynamicBug/types.js.map +0 -1
  132. package/lib/processor.dynamicBug/types.yaml +0 -25
  133. package/lib/test/dynamic-bug.js.map +0 -1
  134. /package/lib/{processor.dynamicBug → processor.onscreenGraphic}/types.js +0 -0
  135. /package/lib/test/{dynamic-bug.d.ts → onscreen-graphic.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/processor.onscreenGraphic/info.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,4BA0EC;AA7ED,uEAA+E;AAC/E,kDAA0B;AAE1B,mBAAyB,EACvB,eAAe,EACf,KAAK,EACQ;IACb,MAAM,gBAAgB,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,mDAAQ,mBAAmB,GAAC,CAAC,CAAC;IAC7E,MAAM,WAAW,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,mDAAQ,gBAAgB,GAAC,CAAC,CAAC;IAErE,OAAO,eAAe,CAA4F;QAChH,UAAU,EAAE,2BAA2B;QACvC,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,+BAA+B;QAC5C,YAAY,EAAE;YAEZ,OAAO,EAAE;gBACP,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,KAAK;aACb;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,KAAK;aACb;SACF;QACD,eAAe,EAAE,UAAU,GAAG;YAC5B,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,OAAO;gBACL,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,MAAM;aAC9C,CAAA;QACH,CAAC;QACD,OAAO,EAAE;YACP,OAAO,EAAE,WAAW;YACpB,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,EACpB,CAAC;YACF,WAAW,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;gBACzB,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC;gBACvB,QAAQ,MAAM,EAAE,CAAC;oBACf,KAAK,iBAAiB;wBACpB,OAAO,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;oBAC/E;wBACE,iBAAiB,CAAC,MAAM,CAAC,CAAA;gBAC7B,CAAC;YACH,CAAC;SACF;QACD,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,QAAQ,EAAE,IAAA,0BAAiB,GAAE;aAC9B;YACD,IAAI,EAAE;gBACJ,cAAc,EAAE;oBACd,IAAI,EAAE,qDAAqD;oBAC3D,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,QAAQ,EAAE,IAAI;wBACd,SAAS,EAAE,gBAAgB;qBAC5B;iBACF;gBACD,eAAe,EAAE;oBACf,IAAI,EAAE,qDAAqD;oBAC3D,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,QAAQ,EAAE,IAAI;wBACd,OAAO,EAAE;4BACP,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE;4BACzC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE;4BAC3C,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE;4BAC/C,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE;yBAClD;qBACF;iBACF;aACF;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAQ;IACjC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,67 @@
1
+ import { ComposePart, FileImageInputNode, Norsk, VideoComposeNode, VideoStreamMetadata } from '@norskvideo/norsk-sdk';
2
+ import { CreatedMediaNode, InstanceRouteInfo, OnCreated, RelatedMediaNodes, RuntimeUpdates, ServerComponentDefinition, StaticRouteInfo, StudioNodeSubscriptionSource, StudioRuntime } from '@norskvideo/norsk-studio/lib/extension/runtime-types';
3
+ import { HardwareAccelerationType } from '@norskvideo/norsk-studio/lib/shared/config';
4
+ import { ContextPromiseControl } from '@norskvideo/norsk-studio/lib/runtime/util';
5
+ import { components } from './types';
6
+ export type OnscreenGraphicPosition = components['schemas']['position'];
7
+ export type OnscreenGraphicFile = components['schemas']['graphic'];
8
+ export type OnscreenGraphicApiConfig = components['schemas']['config'];
9
+ export type OnscreenGraphicConfig = {
10
+ __global: {
11
+ hardware?: HardwareAccelerationType;
12
+ dataDir?: string;
13
+ };
14
+ id: string;
15
+ displayName: string;
16
+ initialGraphic?: OnscreenGraphicFile;
17
+ initialPosition?: OnscreenGraphicPosition;
18
+ };
19
+ export type OnscreenGraphicState = {
20
+ activeGraphic?: {
21
+ file?: OnscreenGraphicFile;
22
+ position?: OnscreenGraphicPosition;
23
+ };
24
+ };
25
+ export type OnscreenGraphicCommand = {
26
+ type: 'change-graphic';
27
+ file?: OnscreenGraphicFile;
28
+ position?: OnscreenGraphicPosition;
29
+ };
30
+ export type OnscreenGraphicEvent = {
31
+ type: 'graphic-changed';
32
+ file?: OnscreenGraphicFile;
33
+ position?: OnscreenGraphicPosition;
34
+ };
35
+ export default class OnscreenGraphicDefinition implements ServerComponentDefinition<OnscreenGraphicConfig, OnscreenGraphic, OnscreenGraphicState, OnscreenGraphicCommand, OnscreenGraphicEvent> {
36
+ create(norsk: Norsk, cfg: OnscreenGraphicConfig, cb: OnCreated<OnscreenGraphic>, runtime: StudioRuntime<OnscreenGraphicState, OnscreenGraphicCommand, OnscreenGraphicEvent>): Promise<void>;
37
+ handleCommand(node: OnscreenGraphic, command: OnscreenGraphicCommand): Promise<void>;
38
+ staticRoutes(): Promise<StaticRouteInfo[]>;
39
+ instanceRoutes(): Promise<InstanceRouteInfo<OnscreenGraphicConfig, OnscreenGraphic, OnscreenGraphicState, OnscreenGraphicCommand, OnscreenGraphicEvent>[]>;
40
+ }
41
+ export declare class OnscreenGraphic implements CreatedMediaNode {
42
+ id: string;
43
+ relatedMediaNodes: RelatedMediaNodes;
44
+ contexts: ContextPromiseControl;
45
+ norsk: Norsk;
46
+ cfg: OnscreenGraphicConfig;
47
+ graphic?: string;
48
+ position?: OnscreenGraphicPosition;
49
+ videoSource?: StudioNodeSubscriptionSource;
50
+ composeNode?: VideoComposeNode<"video" | "graphic">;
51
+ imageSource?: FileImageInputNode;
52
+ oldImageSource?: FileImageInputNode;
53
+ activeImage: "a" | "b";
54
+ initialised: Promise<void>;
55
+ updates: RuntimeUpdates<OnscreenGraphicState, OnscreenGraphicCommand, OnscreenGraphicEvent>;
56
+ currentVideo?: VideoStreamMetadata;
57
+ static create(norsk: Norsk, cfg: OnscreenGraphicConfig, updates: RuntimeUpdates<OnscreenGraphicState, OnscreenGraphicCommand, OnscreenGraphicEvent>): Promise<OnscreenGraphic>;
58
+ constructor(norsk: Norsk, cfg: OnscreenGraphicConfig, updates: RuntimeUpdates<OnscreenGraphicState, OnscreenGraphicCommand, OnscreenGraphicEvent>);
59
+ handleContext(): Promise<void>;
60
+ doSubs(imageSource?: FileImageInputNode): void;
61
+ setupGraphic(graphic?: string, position?: OnscreenGraphicPosition): Promise<void>;
62
+ imagePart(position: OnscreenGraphicPosition): ComposePart<"graphic">;
63
+ videoPart(): ComposePart<"video">;
64
+ initialise(): Promise<void>;
65
+ subscribe(sources: StudioNodeSubscriptionSource[]): void;
66
+ setSources(): void;
67
+ }
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.DynamicBug = void 0;
6
+ exports.OnscreenGraphic = void 0;
7
7
  const norsk_sdk_1 = require("@norskvideo/norsk-sdk");
8
8
  const runtime_types_1 = require("@norskvideo/norsk-studio/lib/extension/runtime-types");
9
9
  const logging_1 = require("@norskvideo/norsk-studio/lib/server/logging");
@@ -16,27 +16,54 @@ const path_1 = __importDefault(require("path"));
16
16
  const multer_1 = __importDefault(require("multer"));
17
17
  const json_refs_1 = require("json-refs");
18
18
  const yaml_1 = __importDefault(require("yaml"));
19
- const dynamicBugPositions = ['topleft', 'topright', 'bottomleft', 'bottomright'];
20
- function bugDir() {
21
- return path_1.default.join(config_2.default.server.workingDir(), process.env.DYNAMICBUG_DIRECTORY ?? "bugs");
19
+ const onscreenGraphicPositions = ['topleft', 'topright', 'bottomleft', 'bottomright'];
20
+ function coreInfo(path, op) {
21
+ return {
22
+ url: path,
23
+ summary: op.summary,
24
+ description: op.description,
25
+ requestBody: op.requestBody,
26
+ responses: op.responses,
27
+ };
22
28
  }
23
- async function getBugs() {
24
- const files = await promises_1.default.readdir(bugDir());
29
+ function get(path, paths) {
30
+ return {
31
+ ...coreInfo(path, paths[path]['get']),
32
+ method: 'GET',
33
+ };
34
+ }
35
+ function post(path, paths) {
36
+ return {
37
+ ...coreInfo(path, paths[path]['post']),
38
+ method: 'POST',
39
+ };
40
+ }
41
+ function delete_(path, paths) {
42
+ return {
43
+ ...coreInfo(path, paths[path]['delete']),
44
+ method: 'DELETE',
45
+ };
46
+ }
47
+ function graphicsDir() {
48
+ return path_1.default.join(config_2.default.server.workingDir(), process.env.ONSCREENGRAPHIC_DIRECTORY ?? "graphics");
49
+ }
50
+ async function getGraphics() {
51
+ const files = await promises_1.default.readdir(graphicsDir());
25
52
  const images = files.filter((f) => {
26
53
  return f.endsWith(".png") || f.endsWith(".jpg");
27
54
  });
28
55
  return images;
29
56
  }
30
- class DynamicBugDefinition {
57
+ class OnscreenGraphicDefinition {
31
58
  async create(norsk, cfg, cb, runtime) {
32
- const node = await DynamicBug.create(norsk, cfg, runtime.updates);
59
+ const node = await OnscreenGraphic.create(norsk, cfg, runtime.updates);
33
60
  cb(node);
34
61
  }
35
62
  async handleCommand(node, command) {
36
63
  const commandType = command.type;
37
64
  switch (commandType) {
38
- case 'change-bug':
39
- await node.setupBug(command.file, command.position);
65
+ case 'change-graphic':
66
+ await node.setupGraphic(command.file, command.position);
40
67
  break;
41
68
  default:
42
69
  (0, util_1.assertUnreachable)(commandType);
@@ -44,16 +71,16 @@ class DynamicBugDefinition {
44
71
  }
45
72
  async staticRoutes() {
46
73
  const storage = multer_1.default.diskStorage({
47
- destination: bugDir(),
74
+ destination: graphicsDir(),
48
75
  filename: function (_req, file, cb) {
49
76
  cb(null, path_1.default.basename(file.originalname));
50
77
  }
51
78
  });
52
79
  const fileFilter = async function (req, file, cb) {
53
80
  try {
54
- const existingBugs = await getBugs();
55
- if (existingBugs.includes(file.originalname)) {
56
- return cb(new Error('A bug with this name already exists'));
81
+ const existingGraphics = await getGraphics();
82
+ if (existingGraphics.includes(file.originalname)) {
83
+ return cb(new Error('A graphic with this name already exists'));
57
84
  }
58
85
  else {
59
86
  cb(null, true);
@@ -64,15 +91,25 @@ class DynamicBugDefinition {
64
91
  }
65
92
  };
66
93
  const upload = (0, multer_1.default)({ storage, fileFilter });
94
+ const types = await promises_1.default.readFile(path_1.default.join(__dirname, 'types.yaml'));
95
+ const root = yaml_1.default.parse(types.toString());
96
+ const resolved = await (0, json_refs_1.resolveRefs)(root, {}).then((r) => r.resolved);
97
+ const paths = resolved.paths;
67
98
  return [
68
99
  {
69
- url: '/bugs',
70
- method: 'POST',
100
+ ...get('/graphics', paths),
101
+ handler: (_) => (async (_req, res) => {
102
+ const images = await getGraphics();
103
+ res.json(images);
104
+ })
105
+ },
106
+ {
107
+ ...post('/graphics', paths),
71
108
  handler: () => async (req, res) => {
72
109
  const uploader = upload.single('file');
73
110
  uploader(req, res, (err) => {
74
111
  if (err) {
75
- if (err.message === 'A bug with this name already exists') {
112
+ if (err.message === 'A graphic with this name already exists') {
76
113
  return res.status(409).json({ error: err.message });
77
114
  }
78
115
  (0, logging_1.warninglog)("An error occured during upload", err);
@@ -81,46 +118,12 @@ class DynamicBugDefinition {
81
118
  res.status(204).send();
82
119
  });
83
120
  },
84
- requestBody: {
85
- description: "A multipart form containing the file to upload)",
86
- content: {
87
- 'multipart/form-data': {
88
- schema: {
89
- type: "object",
90
- properties: {
91
- 'file': {
92
- type: "string",
93
- format: "binary",
94
- }
95
- },
96
- required: ['file'],
97
- }
98
- }
99
- }
100
- },
101
- responses: {
102
- '204': { description: "The file bug was uploaded successfully" },
103
- '400': { description: "No file was uploaded" },
104
- '404': { description: "Not Found" },
105
- '409': { description: "A bug with the same name already exists" },
106
- '500': { description: "File upload failed" },
107
- }
108
121
  },
109
122
  {
110
- url: '/bugs',
111
- method: 'GET',
112
- handler: (_) => (async (_req, res) => {
113
- const images = await getBugs();
114
- res.json(images);
115
- }),
116
- responses: {},
117
- },
118
- {
119
- url: '/bug',
120
- method: 'DELETE',
123
+ ...delete_('/graphic', paths),
121
124
  handler: () => (async (req, res) => {
122
125
  const filename = req.body.filename;
123
- const filePath = path_1.default.join(bugDir(), filename);
126
+ const filePath = path_1.default.join(graphicsDir(), filename);
124
127
  try {
125
128
  await promises_1.default.access(filePath);
126
129
  await promises_1.default.unlink(filePath);
@@ -128,35 +131,14 @@ class DynamicBugDefinition {
128
131
  }
129
132
  catch (error) {
130
133
  if (error.code === 'ENOENT') {
131
- res.status(404).json({ error: 'Bug not found' });
134
+ res.status(404).json({ error: 'Graphic not found' });
132
135
  }
133
136
  else {
134
- (0, logging_1.warninglog)("Error deleting bug", error);
135
- res.status(500).json({ error: 'Failed to delete bug' });
137
+ (0, logging_1.warninglog)("Error deleting graphic", error);
138
+ res.status(500).json({ error: 'Failed to delete graphic' });
136
139
  }
137
140
  }
138
141
  }),
139
- requestBody: {
140
- content: {
141
- 'application/json': {
142
- schema: {
143
- type: 'object',
144
- properties: {
145
- filename: {
146
- type: 'string',
147
- description: 'The name of the bug file to delete'
148
- }
149
- },
150
- required: ['filename']
151
- }
152
- }
153
- }
154
- },
155
- responses: {
156
- '204': { description: "The bug was successfully deleted" },
157
- '404': { description: "The specified bug was not found" },
158
- '500': { description: "Failed to delete the bug" }
159
- }
160
142
  }
161
143
  ];
162
144
  }
@@ -164,105 +146,71 @@ class DynamicBugDefinition {
164
146
  const types = await promises_1.default.readFile(path_1.default.join(__dirname, 'types.yaml'));
165
147
  const root = yaml_1.default.parse(types.toString());
166
148
  const resolved = await (0, json_refs_1.resolveRefs)(root, {}).then((r) => r.resolved);
149
+ const paths = resolved.paths;
167
150
  return [
168
151
  {
169
- url: '/active-bug',
170
- method: 'GET',
152
+ ...get('/active-graphic', paths),
171
153
  handler: ({ runtime }) => ((_req, res) => {
172
154
  const latest = runtime.updates.latest();
173
- const response = {
174
- bug: latest.activeBug?.file,
175
- position: latest.activeBug?.position
176
- };
177
- res.json(response);
178
- }),
179
- responses: {
180
- '200': {
181
- description: "Information about the currently overlaid bug (if any)",
182
- content: {
183
- "application/json": {
184
- schema: resolved.components.schemas['config']
185
- },
186
- }
155
+ if (latest.activeGraphic?.file && latest.activeGraphic?.position) {
156
+ res.json({
157
+ graphic: latest.activeGraphic.file,
158
+ position: latest.activeGraphic.position
159
+ });
187
160
  }
188
- }
161
+ else {
162
+ res.status(204).send();
163
+ }
164
+ }),
189
165
  },
190
166
  {
191
- url: '/active-bug',
192
- method: 'POST',
167
+ ...post('/active-graphic', paths),
193
168
  handler: ({ runtime }) => (async (req, res) => {
194
- if ((req.body.bug || req.body.position)) {
195
- if (!dynamicBugPositions.includes(req.body.position)) {
169
+ if ((req.body.graphic || req.body.position)) {
170
+ if (!onscreenGraphicPositions.includes(req.body.position)) {
196
171
  res.status(400).json({
197
- error: "bad position",
172
+ error: "Bad position",
198
173
  details: req.body.position
199
174
  });
200
175
  return;
201
176
  }
202
- const images = await getBugs();
203
- if (!images.includes(req.body.bug)) {
177
+ const images = await getGraphics();
178
+ if (!images.includes(req.body.graphic)) {
204
179
  res.status(400).json({
205
- error: "Unknown bug file",
206
- details: req.body.bug,
180
+ error: "Unknown graphic",
181
+ details: req.body.graphic,
207
182
  });
208
183
  return;
209
184
  }
210
185
  }
211
186
  runtime.updates.sendCommand({
212
- type: 'change-bug',
213
- file: req.body.bug,
187
+ type: 'change-graphic',
188
+ file: req.body.graphic,
214
189
  position: req.body.position
215
190
  });
216
191
  res.status(204).send();
217
192
  }),
218
- requestBody: {
219
- description: "The bug filename and location (sending an empty JSON object will delete the bug)",
220
- content: {
221
- 'application/json': {
222
- schema: resolved.components.schemas['config']
223
- }
224
- },
225
- },
226
- responses: {
227
- '204': { description: "The active bug was successfully updated" },
228
- '400': {
229
- description: "Unknown bug",
230
- content: {
231
- "application/json": {
232
- schema: {
233
- type: 'object',
234
- properties: {
235
- error: { type: 'string', description: "A description of the error" },
236
- details: { type: 'string', description: "The unacceptable data" }
237
- }
238
- },
239
- }
240
- }
241
- }
242
- }
243
193
  },
244
194
  {
245
- url: '/active-bug',
246
- method: 'DELETE',
195
+ ...delete_('/active-graphic', paths),
247
196
  handler: ({ runtime }) => (async (_req, res) => {
248
197
  runtime.updates.sendCommand({
249
- type: 'change-bug'
198
+ type: 'change-graphic'
250
199
  });
251
200
  res.status(204).send();
252
201
  }),
253
- responses: { '204': { description: "The active bug was successfully deleted" } }
254
202
  },
255
203
  ];
256
204
  }
257
205
  }
258
- exports.default = DynamicBugDefinition;
259
- class DynamicBug {
206
+ exports.default = OnscreenGraphicDefinition;
207
+ class OnscreenGraphic {
260
208
  id;
261
209
  relatedMediaNodes = new runtime_types_1.RelatedMediaNodes();
262
210
  contexts = new util_2.ContextPromiseControl(this.handleContext.bind(this));
263
211
  norsk;
264
212
  cfg;
265
- bug;
213
+ graphic;
266
214
  position;
267
215
  videoSource;
268
216
  composeNode;
@@ -273,7 +221,7 @@ class DynamicBug {
273
221
  updates;
274
222
  currentVideo;
275
223
  static async create(norsk, cfg, updates) {
276
- const node = new DynamicBug(norsk, cfg, updates);
224
+ const node = new OnscreenGraphic(norsk, cfg, updates);
277
225
  await node.initialised;
278
226
  return node;
279
227
  }
@@ -295,17 +243,17 @@ class DynamicBug {
295
243
  }
296
244
  else {
297
245
  const nextVideo = video.message.value;
298
- (0, logging_1.debuglog)("Creating compose for dynamic bug", { id: this.id, metadata: nextVideo });
246
+ (0, logging_1.debuglog)("Creating compose for onscreen graphic", { id: this.id, metadata: nextVideo });
299
247
  if (this.currentVideo) {
300
248
  if (nextVideo.height !== this.currentVideo.height || nextVideo.width !== this.currentVideo.width) {
301
- (0, logging_1.debuglog)("Closing compose node in dynamic bug because of metadata change", { id: this.id, old: this.currentVideo, new: nextVideo });
249
+ (0, logging_1.debuglog)("Closing compose node in onscreen graphic because of metadata change", { id: this.id, old: this.currentVideo, new: nextVideo });
302
250
  await this.composeNode?.close();
303
251
  this.currentVideo = undefined;
304
252
  }
305
253
  }
306
254
  this.currentVideo = nextVideo;
307
255
  if (!this.composeNode) {
308
- (0, logging_1.debuglog)("Creating compose node for dynamic bug", { id: this.id, width: nextVideo.width, height: nextVideo.height });
256
+ (0, logging_1.debuglog)("Creating compose node for onscreen graphic", { id: this.id, width: nextVideo.width, height: nextVideo.height });
309
257
  const thisCompose = this.composeNode = await this.norsk.processor.transform.videoCompose({
310
258
  onCreate: (n) => {
311
259
  this.relatedMediaNodes.addOutput(n);
@@ -338,7 +286,7 @@ class DynamicBug {
338
286
  this.videoPart(),
339
287
  ]
340
288
  });
341
- (0, logging_1.debuglog)("Closing old image source for bug", { id: this.id, oldNode: this.oldImageSource?.id, newNode: this.imageSource?.id });
289
+ (0, logging_1.debuglog)("Closing old image source for graphic", { id: this.id, oldNode: this.oldImageSource?.id, newNode: this.imageSource?.id });
342
290
  void this.oldImageSource?.close();
343
291
  this.oldImageSource = undefined;
344
292
  await this.handleContext();
@@ -372,51 +320,51 @@ class DynamicBug {
372
320
  }
373
321
  doSubs(imageSource) {
374
322
  if (!imageSource) {
375
- (0, logging_1.debuglog)("Doing subscriptions for dynamic bug without image source");
323
+ (0, logging_1.debuglog)("Doing subscriptions for onscreen graphic without image source");
376
324
  this.composeNode?.subscribeToPins(this.videoSource?.selectVideoToPin("video") || []);
377
325
  }
378
326
  else {
379
- (0, logging_1.debuglog)("Doing subscriptions for dynamic bug with image source", { id: this.id, image: imageSource.id });
327
+ (0, logging_1.debuglog)("Doing subscriptions for onscreen graphic with image source", { id: this.id, image: imageSource.id });
380
328
  this.composeNode?.subscribeToPins((this.videoSource?.selectVideoToPin("video") ?? []).concat([
381
- { source: imageSource, sourceSelector: (0, norsk_sdk_1.videoToPin)("bug") }
329
+ { source: imageSource, sourceSelector: (0, norsk_sdk_1.videoToPin)("graphic") }
382
330
  ]));
383
331
  }
384
332
  }
385
- async setupBug(bug, position) {
333
+ async setupGraphic(graphic, position) {
386
334
  this.position = position;
387
- if (!bug || bug === "") {
388
- (0, logging_1.debuglog)("Clearing bug", { id: this.id });
335
+ if (!graphic || graphic === "") {
336
+ (0, logging_1.debuglog)("Clearing graphic", { id: this.id });
389
337
  this.doSubs();
390
338
  await this.imageSource?.close();
391
339
  this.imageSource = undefined;
392
- this.bug = undefined;
340
+ this.graphic = undefined;
393
341
  this.position = undefined;
394
- this.updates.raiseEvent({ type: 'bug-changed' });
342
+ this.updates.raiseEvent({ type: 'graphic-changed' });
395
343
  await this.contexts.schedule();
396
344
  return;
397
345
  }
398
- else if (bug !== this.bug) {
399
- (0, logging_1.debuglog)("Changing bug", { id: this.id, bug, position });
400
- this.bug = bug;
346
+ else if (graphic !== this.graphic) {
347
+ (0, logging_1.debuglog)("Changing graphic", { id: this.id, graphic, position });
348
+ this.graphic = graphic;
401
349
  this.activeImage = this.activeImage == "a" ? "b" : "a";
402
350
  this.oldImageSource = this.imageSource;
403
351
  this.imageSource = await this.norsk.input.fileImage({
404
352
  id: `${this.id}-${this.activeImage}`,
405
- sourceName: `${this.id}-bug-${this.activeImage}`,
406
- fileName: path_1.default.join(bugDir(), bug)
353
+ sourceName: `${this.id}-graphic-${this.activeImage}`,
354
+ fileName: path_1.default.join(graphicsDir(), graphic)
407
355
  });
408
356
  this.setSources();
409
357
  }
410
358
  else {
411
- (0, logging_1.debuglog)("Changing bug position", { id: this.id, bug, position });
359
+ (0, logging_1.debuglog)("Changing graphic position", { id: this.id, graphic, position });
412
360
  this.position = position;
413
361
  await this.contexts.schedule();
414
362
  }
415
- this.updates.raiseEvent({ type: 'bug-changed', file: bug, position });
363
+ this.updates.raiseEvent({ type: 'graphic-changed', file: graphic, position });
416
364
  }
417
365
  imagePart(position) {
418
366
  const foo = {
419
- id: "bug",
367
+ id: "graphic",
420
368
  zIndex: 1,
421
369
  compose: (metadata, cfg) => {
422
370
  const videoWidth = cfg.outputResolution.width;
@@ -432,7 +380,7 @@ class DynamicBug {
432
380
  };
433
381
  },
434
382
  opacity: 1.0,
435
- pin: "bug"
383
+ pin: "graphic"
436
384
  };
437
385
  return foo;
438
386
  }
@@ -446,7 +394,7 @@ class DynamicBug {
446
394
  };
447
395
  }
448
396
  async initialise() {
449
- await this.setupBug(this.cfg.initialBug, this.cfg.initialPosition);
397
+ await this.setupGraphic(this.cfg.initialGraphic, this.cfg.initialPosition);
450
398
  }
451
399
  subscribe(sources) {
452
400
  this.videoSource = sources[0];
@@ -461,5 +409,5 @@ class DynamicBug {
461
409
  this.contexts.setSources(this.videoSource ? [this.videoSource] : [], imageSources);
462
410
  }
463
411
  }
464
- exports.DynamicBug = DynamicBug;
412
+ exports.OnscreenGraphic = OnscreenGraphic;
465
413
  //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/processor.onscreenGraphic/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { OnscreenGraphicState, OnscreenGraphicConfig, OnscreenGraphicCommand } from "./runtime";
2
+ import { ViewProps } from "@norskvideo/norsk-studio/lib/extension/client-types";
3
+ declare function SummaryView({ state, sendCommand, urls }: ViewProps<OnscreenGraphicConfig, OnscreenGraphicState, OnscreenGraphicCommand>): import("react/jsx-runtime").JSX.Element;
4
+ export default SummaryView;