@norskvideo/norsk-studio-built-ins 1.18.0 → 1.26.0-2025-02-19-33cde15d

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 (247) hide show
  1. package/client/info.js +5979 -695
  2. package/client/output.preview/styles.css +69 -69
  3. package/client/output.whep/styles.css +9 -0
  4. package/client/style.css +283 -856
  5. package/lib/info.js +14 -14
  6. package/lib/info.js.map +1 -1
  7. package/lib/input.rtmp/info.js +19 -5
  8. package/lib/input.rtmp/info.js.map +1 -1
  9. package/lib/input.rtmp/inline-view.js +3 -3
  10. package/lib/input.rtmp/runtime.d.ts +46 -7
  11. package/lib/input.rtmp/runtime.js +245 -59
  12. package/lib/input.rtmp/runtime.js.map +1 -1
  13. package/lib/input.rtmp/summary-view.d.ts +3 -5
  14. package/lib/input.rtmp/summary-view.js +51 -6
  15. package/lib/input.rtmp/summary-view.js.map +1 -1
  16. package/lib/input.rtmp/types.d.ts +193 -0
  17. package/lib/{processor.browserOverlay/openApi.js → input.rtmp/types.js} +1 -1
  18. package/lib/input.rtmp/types.js.map +1 -0
  19. package/lib/input.rtmp/types.yaml +147 -0
  20. package/lib/input.silence/info.js +9 -2
  21. package/lib/input.silence/info.js.map +1 -1
  22. package/lib/input.silence/runtime.d.ts +1 -0
  23. package/lib/input.silence/runtime.js.map +1 -1
  24. package/lib/input.srt-caller/info.js +8 -1
  25. package/lib/input.srt-caller/info.js.map +1 -1
  26. package/lib/input.srt-caller/runtime.d.ts +1 -0
  27. package/lib/input.srt-caller/runtime.js.map +1 -1
  28. package/lib/input.srt-listener/info.js +15 -2
  29. package/lib/input.srt-listener/info.js.map +1 -1
  30. package/lib/input.srt-listener/runtime.d.ts +41 -5
  31. package/lib/input.srt-listener/runtime.js +236 -57
  32. package/lib/input.srt-listener/runtime.js.map +1 -1
  33. package/lib/input.srt-listener/summary-view.d.ts +3 -5
  34. package/lib/input.srt-listener/summary-view.js +45 -6
  35. package/lib/input.srt-listener/summary-view.js.map +1 -1
  36. package/lib/input.srt-listener/types.d.ts +193 -0
  37. package/lib/input.srt-listener/types.js +3 -0
  38. package/lib/input.srt-listener/types.js.map +1 -0
  39. package/lib/input.srt-listener/types.yaml +145 -0
  40. package/lib/input.udp-ts/info.js +2 -1
  41. package/lib/input.udp-ts/info.js.map +1 -1
  42. package/lib/input.udp-ts/runtime.d.ts +1 -0
  43. package/lib/input.udp-ts/runtime.js.map +1 -1
  44. package/lib/input.videoTestCard/info.d.ts +1 -1
  45. package/lib/input.videoTestCard/info.js +17 -4
  46. package/lib/input.videoTestCard/info.js.map +1 -1
  47. package/lib/input.videoTestCard/runtime.d.ts +1 -0
  48. package/lib/output.autoCmaf/form-views.d.ts +2 -2
  49. package/lib/output.autoCmaf/form-views.js +13 -3
  50. package/lib/output.autoCmaf/form-views.js.map +1 -1
  51. package/lib/output.autoCmaf/info.d.ts +21 -2
  52. package/lib/output.autoCmaf/info.js +106 -32
  53. package/lib/output.autoCmaf/info.js.map +1 -1
  54. package/lib/output.autoCmaf/inline-view.d.ts +6 -0
  55. package/lib/output.autoCmaf/inline-view.js +8 -0
  56. package/lib/output.autoCmaf/inline-view.js.map +1 -0
  57. package/lib/output.autoCmaf/runtime.d.ts +31 -46
  58. package/lib/output.autoCmaf/runtime.js +334 -108
  59. package/lib/output.autoCmaf/runtime.js.map +1 -1
  60. package/lib/output.autoCmaf/summary-view.d.ts +4 -0
  61. package/lib/output.autoCmaf/summary-view.js +24 -0
  62. package/lib/output.autoCmaf/summary-view.js.map +1 -0
  63. package/lib/output.autoCmaf/summary.js +3 -0
  64. package/lib/output.autoCmaf/summary.js.map +1 -1
  65. package/lib/output.autoCmaf/types.d.ts +158 -0
  66. package/lib/output.autoCmaf/types.js +3 -0
  67. package/lib/output.autoCmaf/types.js.map +1 -0
  68. package/lib/output.autoCmaf/types.yaml +182 -0
  69. package/lib/output.autoHls/info.d.ts +3 -0
  70. package/lib/output.autoHls/info.js +22 -0
  71. package/lib/output.autoHls/info.js.map +1 -0
  72. package/lib/output.autoHls/runtime.d.ts +6 -0
  73. package/lib/output.autoHls/runtime.js +13 -0
  74. package/lib/output.autoHls/runtime.js.map +1 -0
  75. package/lib/output.preview/info.d.ts +5 -2
  76. package/lib/output.preview/info.js +23 -3
  77. package/lib/output.preview/info.js.map +1 -1
  78. package/lib/output.preview/inline-view.d.ts +2 -4
  79. package/lib/output.preview/inline-view.js +65 -7
  80. package/lib/output.preview/inline-view.js.map +1 -1
  81. package/lib/output.preview/runtime.d.ts +18 -12
  82. package/lib/output.preview/runtime.js +122 -33
  83. package/lib/output.preview/runtime.js.map +1 -1
  84. package/lib/output.preview/types.d.ts +56 -0
  85. package/lib/output.preview/types.js +3 -0
  86. package/lib/output.preview/types.js.map +1 -0
  87. package/lib/output.preview/types.yaml +37 -0
  88. package/lib/output.rtmp/info.js +14 -2
  89. package/lib/output.rtmp/info.js.map +1 -1
  90. package/lib/output.rtmp/inline-view.js +5 -2
  91. package/lib/output.rtmp/inline-view.js.map +1 -1
  92. package/lib/output.rtmp/runtime.d.ts +31 -5
  93. package/lib/output.rtmp/runtime.js +169 -34
  94. package/lib/output.rtmp/runtime.js.map +1 -1
  95. package/lib/output.rtmp/summary-view.d.ts +4 -0
  96. package/lib/output.rtmp/summary-view.js +24 -0
  97. package/lib/output.rtmp/summary-view.js.map +1 -0
  98. package/lib/output.rtmp/types.d.ts +101 -0
  99. package/lib/output.rtmp/types.js +3 -0
  100. package/lib/output.rtmp/types.js.map +1 -0
  101. package/lib/output.rtmp/types.yaml +30 -0
  102. package/lib/output.srt/info.d.ts +2 -2
  103. package/lib/output.srt/info.js +29 -1
  104. package/lib/output.srt/info.js.map +1 -1
  105. package/lib/output.srt/inline-view.d.ts +6 -0
  106. package/lib/output.srt/inline-view.js +8 -0
  107. package/lib/output.srt/inline-view.js.map +1 -0
  108. package/lib/output.srt/runtime.d.ts +35 -5
  109. package/lib/output.srt/runtime.js +174 -6
  110. package/lib/output.srt/runtime.js.map +1 -1
  111. package/lib/output.srt/summary-view.d.ts +4 -0
  112. package/lib/output.srt/summary-view.js +24 -0
  113. package/lib/output.srt/summary-view.js.map +1 -0
  114. package/lib/output.srt/types.d.ts +101 -0
  115. package/lib/output.srt/types.js +3 -0
  116. package/lib/output.srt/types.js.map +1 -0
  117. package/lib/output.srt/types.yaml +31 -0
  118. package/lib/output.statistics/info.js +3 -1
  119. package/lib/output.statistics/info.js.map +1 -1
  120. package/lib/output.statistics/inline-view.js +3 -2
  121. package/lib/output.statistics/inline-view.js.map +1 -1
  122. package/lib/output.statistics/runtime.d.ts +1 -0
  123. package/lib/output.statistics/runtime.js.map +1 -1
  124. package/lib/output.udpTs/info.js +4 -0
  125. package/lib/output.udpTs/info.js.map +1 -1
  126. package/lib/output.udpTs/runtime.d.ts +1 -0
  127. package/lib/output.udpTs/runtime.js.map +1 -1
  128. package/lib/output.whep/info.d.ts +2 -2
  129. package/lib/output.whep/info.js +61 -1
  130. package/lib/output.whep/info.js.map +1 -1
  131. package/lib/output.whep/inline-view.d.ts +4 -0
  132. package/lib/output.whep/inline-view.js +57 -0
  133. package/lib/output.whep/inline-view.js.map +1 -0
  134. package/lib/output.whep/runtime.d.ts +39 -5
  135. package/lib/output.whep/runtime.js +175 -13
  136. package/lib/output.whep/runtime.js.map +1 -1
  137. package/lib/output.whep/summary-view.d.ts +4 -0
  138. package/lib/output.whep/summary-view.js +24 -0
  139. package/lib/output.whep/summary-view.js.map +1 -0
  140. package/lib/output.whep/types.d.ts +101 -0
  141. package/lib/output.whep/types.js +3 -0
  142. package/lib/output.whep/types.js.map +1 -0
  143. package/lib/output.whep/types.yaml +30 -0
  144. package/lib/processor.audioEncoder/form-views.d.ts +8 -0
  145. package/lib/processor.audioEncoder/form-views.js +8 -0
  146. package/lib/processor.audioEncoder/form-views.js.map +1 -0
  147. package/lib/processor.audioEncoder/info.d.ts +3 -0
  148. package/lib/processor.audioEncoder/info.js +160 -0
  149. package/lib/processor.audioEncoder/info.js.map +1 -0
  150. package/lib/processor.audioEncoder/runtime.d.ts +21 -0
  151. package/lib/processor.audioEncoder/runtime.js +20 -0
  152. package/lib/processor.audioEncoder/runtime.js.map +1 -0
  153. package/lib/processor.browserOverlay/info.js +1 -0
  154. package/lib/processor.browserOverlay/info.js.map +1 -1
  155. package/lib/processor.browserOverlay/runtime.d.ts +1 -0
  156. package/lib/processor.browserOverlay/runtime.js +6 -26
  157. package/lib/processor.browserOverlay/runtime.js.map +1 -1
  158. package/lib/processor.browserOverlay/types.js +3 -0
  159. package/lib/processor.browserOverlay/types.js.map +1 -0
  160. package/lib/processor.cascadingSwitch/info.js +3 -2
  161. package/lib/processor.cascadingSwitch/info.js.map +1 -1
  162. package/lib/processor.cascadingSwitch/inline-view.js +3 -3
  163. package/lib/processor.cascadingSwitch/runtime.d.ts +1 -0
  164. package/lib/processor.cascadingSwitch/runtime.js +2 -2
  165. package/lib/processor.cascadingSwitch/runtime.js.map +1 -1
  166. package/lib/processor.fixedLadder/codec-editor.js +1 -1
  167. package/lib/processor.fixedLadder/codec-editor.js.map +1 -1
  168. package/lib/processor.fixedLadder/codec-view.d.ts +1 -1
  169. package/lib/processor.fixedLadder/codec-view.js +1 -1
  170. package/lib/processor.fixedLadder/codec-view.js.map +1 -1
  171. package/lib/processor.fixedLadder/info.d.ts +33 -7
  172. package/lib/processor.fixedLadder/info.js +19 -6
  173. package/lib/processor.fixedLadder/info.js.map +1 -1
  174. package/lib/processor.fixedLadder/runtime.d.ts +16 -29
  175. package/lib/processor.fixedLadder/runtime.js +16 -1
  176. package/lib/processor.fixedLadder/runtime.js.map +1 -1
  177. package/lib/processor.fixedLadder/types.d.ts +240 -0
  178. package/lib/processor.fixedLadder/types.js +3 -0
  179. package/lib/processor.fixedLadder/types.js.map +1 -0
  180. package/lib/processor.fixedLadder/types.yaml +541 -0
  181. package/lib/processor.onscreenGraphic/info.js +11 -5
  182. package/lib/processor.onscreenGraphic/info.js.map +1 -1
  183. package/lib/processor.onscreenGraphic/runtime.d.ts +27 -2
  184. package/lib/processor.onscreenGraphic/runtime.js +116 -52
  185. package/lib/processor.onscreenGraphic/runtime.js.map +1 -1
  186. package/lib/processor.onscreenGraphic/summary-view.d.ts +1 -1
  187. package/lib/processor.onscreenGraphic/summary-view.js +235 -11
  188. package/lib/processor.onscreenGraphic/summary-view.js.map +1 -1
  189. package/lib/processor.onscreenGraphic/types.d.ts +15 -1
  190. package/lib/processor.onscreenGraphic/types.yaml +63 -14
  191. package/lib/processor.streamKeyOverride/info.d.ts +3 -0
  192. package/lib/processor.streamKeyOverride/info.js +151 -0
  193. package/lib/processor.streamKeyOverride/info.js.map +1 -0
  194. package/lib/processor.streamKeyOverride/runtime.d.ts +55 -0
  195. package/lib/processor.streamKeyOverride/runtime.js +226 -0
  196. package/lib/processor.streamKeyOverride/runtime.js.map +1 -0
  197. package/lib/shared/api.d.ts +35 -0
  198. package/lib/shared/api.js +34 -0
  199. package/lib/shared/api.js.map +1 -0
  200. package/lib/test/auto-cmaf.js +219 -43
  201. package/lib/test/auto-cmaf.js.map +1 -1
  202. package/lib/test/onscreen-graphic.js +79 -42
  203. package/lib/test/onscreen-graphic.js.map +1 -1
  204. package/lib/test/preview.js +69 -64
  205. package/lib/test/preview.js.map +1 -1
  206. package/lib/test/rtmp-input.js +6 -3
  207. package/lib/test/rtmp-input.js.map +1 -1
  208. package/lib/test/rtmp-output.js +105 -1
  209. package/lib/test/rtmp-output.js.map +1 -1
  210. package/lib/test/srt-input-listener.js +331 -0
  211. package/lib/test/srt-input-listener.js.map +1 -1
  212. package/lib/test/srt-output.js +93 -4
  213. package/lib/test/srt-output.js.map +1 -1
  214. package/lib/test/whep-output.js +192 -5
  215. package/lib/test/whep-output.js.map +1 -1
  216. package/lib/util.stats.latency/info.js +1 -0
  217. package/lib/util.stats.latency/info.js.map +1 -1
  218. package/lib/util.stats.latency/runtime.d.ts +1 -0
  219. package/lib/util.stats.latency/runtime.js +2 -2
  220. package/lib/util.stats.latency/runtime.js.map +1 -1
  221. package/package.json +4 -4
  222. package/lib/processor.browserOverlay/openApi.js.map +0 -1
  223. package/lib/processor.whisper-transcribe/info.d.ts +0 -3
  224. package/lib/processor.whisper-transcribe/info.js +0 -44
  225. package/lib/processor.whisper-transcribe/info.js.map +0 -1
  226. package/lib/processor.whisper-transcribe/runtime.d.ts +0 -29
  227. package/lib/processor.whisper-transcribe/runtime.js +0 -83
  228. package/lib/processor.whisper-transcribe/runtime.js.map +0 -1
  229. package/lib/util.stats.ma35d/info.d.ts +0 -3
  230. package/lib/util.stats.ma35d/info.js +0 -79
  231. package/lib/util.stats.ma35d/info.js.map +0 -1
  232. package/lib/util.stats.ma35d/inline-view.d.ts +0 -6
  233. package/lib/util.stats.ma35d/inline-view.js +0 -76
  234. package/lib/util.stats.ma35d/inline-view.js.map +0 -1
  235. package/lib/util.stats.ma35d/runtime.d.ts +0 -21
  236. package/lib/util.stats.ma35d/runtime.js +0 -49
  237. package/lib/util.stats.ma35d/runtime.js.map +0 -1
  238. package/lib/util.timestamps/info.d.ts +0 -5
  239. package/lib/util.timestamps/info.js +0 -87
  240. package/lib/util.timestamps/info.js.map +0 -1
  241. package/lib/util.timestamps/inline-view.d.ts +0 -6
  242. package/lib/util.timestamps/inline-view.js +0 -94
  243. package/lib/util.timestamps/inline-view.js.map +0 -1
  244. package/lib/util.timestamps/runtime.d.ts +0 -29
  245. package/lib/util.timestamps/runtime.js +0 -40
  246. package/lib/util.timestamps/runtime.js.map +0 -1
  247. /package/lib/processor.browserOverlay/{openApi.d.ts → types.d.ts} +0 -0
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = default_1;
4
+ function default_1({ defineComponent, All, validation: { Z }, }) {
5
+ return defineComponent({
6
+ identifier: 'processor.streamKeyOverride',
7
+ category: 'processor',
8
+ name: "Stream Key Override",
9
+ description: "Override stream keys for several streams at once, setting some components of the keys and optionally incrementing stream ID.",
10
+ subscription: {
11
+ accepts: {
12
+ type: 'multi-stream',
13
+ media: All
14
+ },
15
+ produces: {
16
+ type: "fixed-list",
17
+ possibleMedia: All,
18
+ keys: (cfg, subs) => {
19
+ const outputs = subs.flatMap(sub => {
20
+ const sourceNode = sub.document.components[sub.source];
21
+ if (!sourceNode)
22
+ return [];
23
+ const produces = sourceNode.info.subscription.produces;
24
+ if (produces?.type === "fixed-list") {
25
+ return produces
26
+ .keys(sourceNode.config, sourceNode.subscriptions)
27
+ .map(sel => ({ ...sel, key: `${sourceNode.id}-${sel.key}`, display: `${sourceNode.config.displayName}: ${sel.display}` }));
28
+ }
29
+ else {
30
+ return [{ key: `${sourceNode.id}`, display: `${sourceNode.config.displayName}`, media: produces ? produces.media : All }];
31
+ }
32
+ });
33
+ if (cfg.output === 'merged') {
34
+ const media = Array.from(new Set(outputs.flatMap(x => x.media)));
35
+ return [{ key: `merged`, display: "Merged", media }];
36
+ }
37
+ return outputs;
38
+ },
39
+ selector: () => {
40
+ console.error("Use selectOutputs from process.streamKeyOverride/runtime.ts, not selector from info.ts");
41
+ return [];
42
+ },
43
+ }
44
+ },
45
+ display: ({ config }) => {
46
+ const disp = {};
47
+ disp.mode = config.mode || "simple";
48
+ disp.output = config.output || "individually-selectable";
49
+ if (config.sourceName) {
50
+ disp.sourceName = config.sourceName;
51
+ }
52
+ if (config.programNumber !== undefined) {
53
+ disp.programNumber = String(config.programNumber);
54
+ }
55
+ if (config.streamId !== undefined) {
56
+ disp.streamId = String(config.streamId);
57
+ }
58
+ if (config.renditionName) {
59
+ disp.renditionName = config.renditionName;
60
+ }
61
+ return disp;
62
+ },
63
+ extraValidation: (ctx) => {
64
+ const { config, subscriptions } = ctx;
65
+ if ((config.mode || "simple") == "simple" && config.sourceName && config.programNumber !== undefined && config.streamId !== undefined && config.renditionName) {
66
+ if (subscriptions.length > 1)
67
+ ctx.addError("A fully specified stream key override must only subscribe to one stream, or use a mode other than simple");
68
+ }
69
+ if (config.mode === "by-media-type" && config.streamId === undefined) {
70
+ ctx.addError("You must specify the starting streamId for a by-media-type stream key override");
71
+ }
72
+ if (config.output === "merged" && !config.sourceName) {
73
+ ctx.addError("You must specify a sourceName for a single merged output");
74
+ }
75
+ },
76
+ configForm: {
77
+ form: {
78
+ mode: {
79
+ help: "Multi-stream behavior",
80
+ hint: {
81
+ type: 'select',
82
+ defaultValue: "simple",
83
+ options: [
84
+ {
85
+ display: "Override values directly",
86
+ value: "simple",
87
+ },
88
+ {
89
+ display: "Increment stream ID by media type (video, audio, ...)",
90
+ value: "by-media-type",
91
+ },
92
+ {
93
+ display: "Increment stream ID per program in order of subscription",
94
+ value: "in-order",
95
+ },
96
+ ],
97
+ },
98
+ },
99
+ output: {
100
+ help: "Output individual streams or a single merged stream",
101
+ hint: {
102
+ type: 'select',
103
+ defaultValue: "individually-selectable",
104
+ options: [
105
+ {
106
+ display: "Individual inputs can be selected in the output",
107
+ value: "individually-selectable",
108
+ },
109
+ {
110
+ display: "The outputs are merged into a single stream",
111
+ value: "merged",
112
+ },
113
+ ],
114
+ },
115
+ },
116
+ sourceName: {
117
+ help: "Override source name",
118
+ hint: {
119
+ type: 'text',
120
+ optional: true,
121
+ }
122
+ },
123
+ programNumber: {
124
+ help: "Override program number",
125
+ hint: {
126
+ type: 'numeric',
127
+ optional: true,
128
+ validation: Z.number().min(0).int().optional(),
129
+ }
130
+ },
131
+ streamId: {
132
+ help: "Override stream ID",
133
+ hint: {
134
+ type: 'numeric',
135
+ optional: true,
136
+ validation: Z.number().min(0).int().optional(),
137
+ }
138
+ },
139
+ renditionName: {
140
+ help: "Override rendition name",
141
+ hint: {
142
+ type: 'text',
143
+ optional: true,
144
+ }
145
+ },
146
+ notes: { help: "Notes about this component", hint: { type: 'text', optional: true } },
147
+ }
148
+ }
149
+ });
150
+ }
151
+ //# sourceMappingURL=info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/processor.streamKeyOverride/info.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { Norsk, StreamKey, StreamKeyOverrideNode, StreamMetadataMessage, SubscribeDestination, SubscriptionError } from '@norskvideo/norsk-sdk';
2
+ import { ActiveStream, CreatedMediaNode, OnCreated, RelatedMediaNodes, ServerComponentDefinition, StudioNodeSubscriptionSource } from '@norskvideo/norsk-studio/lib/extension/runtime-types';
3
+ import { NodeDescriptionId } from '@norskvideo/norsk-studio/lib/shared/document';
4
+ export type StreamKeyOverrideConfig = {
5
+ id: string;
6
+ displayName: string;
7
+ mode: "simple" | "by-media-type" | "in-order";
8
+ output: "merged" | "individually-selectable";
9
+ sourceName?: string;
10
+ programNumber?: number;
11
+ streamId?: number;
12
+ renditionName?: string;
13
+ notes?: string;
14
+ };
15
+ export default class StreamKeyOverrideDefinition implements ServerComponentDefinition<StreamKeyOverrideConfig, StreamKeyOverride> {
16
+ create(norsk: Norsk, cfg: StreamKeyOverrideConfig, cb: OnCreated<StreamKeyOverride>): Promise<void>;
17
+ }
18
+ type Mapping = {
19
+ from: ActiveStream;
20
+ to: StreamKey;
21
+ node?: StreamKeyOverrideNode;
22
+ nodeDescriptionId: NodeDescriptionId;
23
+ };
24
+ type Diff = {
25
+ added: Mapping[];
26
+ removed: Mapping[];
27
+ unchanged: Mapping[];
28
+ };
29
+ type History = {
30
+ sourceName: string;
31
+ programNumber: number;
32
+ lastStreamId: number;
33
+ }[];
34
+ export declare class StreamKeyOverride implements CreatedMediaNode, SubscribeDestination {
35
+ static uid: number;
36
+ norsk: Norsk;
37
+ mapping: Mapping[];
38
+ history: History;
39
+ currentSources: StudioNodeSubscriptionSource[];
40
+ cfg: StreamKeyOverrideConfig;
41
+ initialised: Promise<void>;
42
+ id: string;
43
+ relatedMediaNodes: RelatedMediaNodes;
44
+ static create(norsk: Norsk, cfg: StreamKeyOverrideConfig): Promise<StreamKeyOverride>;
45
+ constructor(norsk: Norsk, cfg: StreamKeyOverrideConfig);
46
+ initialise(): Promise<void>;
47
+ chooseStreamKey(sourceKey: StreamKey, metadata: StreamMetadataMessage): StreamKey;
48
+ subscribe(sources: StudioNodeSubscriptionSource[]): void;
49
+ sourceContextChange(_responseCallback: (error?: SubscriptionError) => void): Promise<boolean>;
50
+ diff(currentMapping: Mapping[]): Diff;
51
+ updateNodes({ added, removed, unchanged }: Diff): Promise<void>;
52
+ close(): Promise<void>;
53
+ selectOutputs(selectionKeys: string[]): StreamKey[];
54
+ }
55
+ export {};
@@ -0,0 +1,226 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StreamKeyOverride = void 0;
4
+ const norsk_sdk_1 = require("@norskvideo/norsk-sdk");
5
+ const runtime_types_1 = require("@norskvideo/norsk-studio/lib/extension/runtime-types");
6
+ const logging_1 = require("@norskvideo/norsk-studio/lib/server/logging");
7
+ const util_1 = require("@norskvideo/norsk-studio/lib/shared/util");
8
+ class StreamKeyOverrideDefinition {
9
+ async create(norsk, cfg, cb) {
10
+ const node = await StreamKeyOverride.create(norsk, cfg);
11
+ cb(node);
12
+ }
13
+ }
14
+ exports.default = StreamKeyOverrideDefinition;
15
+ class StreamKeyOverride {
16
+ static uid = 0;
17
+ norsk;
18
+ mapping = [];
19
+ history = [];
20
+ currentSources = [];
21
+ cfg;
22
+ initialised;
23
+ id;
24
+ relatedMediaNodes = new runtime_types_1.RelatedMediaNodes();
25
+ static async create(norsk, cfg) {
26
+ const node = new StreamKeyOverride(norsk, cfg);
27
+ await node.initialised;
28
+ return node;
29
+ }
30
+ constructor(norsk, cfg) {
31
+ this.id = cfg.id;
32
+ this.cfg = cfg;
33
+ this.norsk = norsk;
34
+ this.initialised = this.initialise();
35
+ }
36
+ async initialise() {
37
+ }
38
+ chooseStreamKey(sourceKey, metadata) {
39
+ const cfg = this.cfg;
40
+ const destKey = {
41
+ sourceName: cfg.sourceName || sourceKey.sourceName,
42
+ programNumber: cfg.programNumber ?? sourceKey.programNumber,
43
+ streamId: cfg.streamId ?? sourceKey.streamId,
44
+ renditionName: cfg.renditionName || sourceKey.renditionName,
45
+ };
46
+ switch (cfg.mode) {
47
+ case "simple":
48
+ break;
49
+ case "by-media-type":
50
+ switch (metadata?.case) {
51
+ case "video":
52
+ destKey.streamId += 0;
53
+ break;
54
+ case "audio":
55
+ destKey.streamId += 1;
56
+ break;
57
+ case "subtitle":
58
+ destKey.streamId += 2;
59
+ break;
60
+ case "ancillary":
61
+ destKey.streamId += 3;
62
+ break;
63
+ case "playlist":
64
+ destKey.streamId += 4;
65
+ break;
66
+ case undefined:
67
+ destKey.streamId += 5;
68
+ break;
69
+ default:
70
+ (0, util_1.assertUnreachable)(metadata);
71
+ }
72
+ break;
73
+ case "in-order": {
74
+ for (const m of this.mapping) {
75
+ if ((0, norsk_sdk_1.streamKeysAreEqual)(sourceKey, m.from.metadata.streamKey)) {
76
+ return m.to;
77
+ }
78
+ }
79
+ let streamId = undefined;
80
+ for (const program of this.history) {
81
+ if (program.sourceName === destKey.sourceName && program.programNumber === destKey.programNumber) {
82
+ streamId = ++program.lastStreamId;
83
+ break;
84
+ }
85
+ }
86
+ if (streamId === undefined) {
87
+ streamId = cfg.streamId ?? 1;
88
+ this.history.push({
89
+ sourceName: destKey.sourceName,
90
+ programNumber: destKey.programNumber,
91
+ lastStreamId: streamId,
92
+ });
93
+ }
94
+ destKey.streamId = streamId;
95
+ break;
96
+ }
97
+ default:
98
+ if (cfg.mode !== undefined && cfg.mode !== "")
99
+ (0, util_1.assertUnreachable)(cfg.mode);
100
+ }
101
+ return destKey;
102
+ }
103
+ subscribe(sources) {
104
+ this.currentSources.forEach((source) => source.unregisterForContextChange(this));
105
+ this.currentSources = sources;
106
+ this.currentSources.forEach((source) => source.registerForContextChange(this));
107
+ void this.sourceContextChange(() => { });
108
+ }
109
+ async sourceContextChange(_responseCallback) {
110
+ const currentMapping = this.currentSources.flatMap(source => source.latestStreams().map(stream => {
111
+ const sourceKey = stream.metadata.streamKey;
112
+ const destKey = this.chooseStreamKey(sourceKey, stream.metadata.message);
113
+ return { from: stream, to: destKey, node: undefined, nodeDescriptionId: source.sourceDescription.id };
114
+ }));
115
+ await this.updateNodes(this.diff(currentMapping));
116
+ return false;
117
+ }
118
+ diff(currentMapping) {
119
+ const previousMapping = this.mapping.map(fromTo => ({ ...fromTo, used: false }));
120
+ const added = [];
121
+ const removed = [];
122
+ const unchanged = [];
123
+ for (const fromTo of currentMapping) {
124
+ let found = undefined;
125
+ for (const prev of previousMapping) {
126
+ if (prev.used)
127
+ continue;
128
+ if ((0, norsk_sdk_1.streamKeysAreEqual)(fromTo.from.metadata.streamKey, prev.from.metadata.streamKey)) {
129
+ found = prev;
130
+ prev.used = true;
131
+ break;
132
+ }
133
+ }
134
+ if (!found) {
135
+ added.push(fromTo);
136
+ }
137
+ else if (!(0, norsk_sdk_1.streamKeysAreEqual)(fromTo.to, found.to)) {
138
+ added.push(fromTo);
139
+ removed.push(found);
140
+ }
141
+ else {
142
+ unchanged.push(fromTo);
143
+ }
144
+ }
145
+ for (const prev of previousMapping) {
146
+ if (!prev.used) {
147
+ removed.push(prev);
148
+ }
149
+ }
150
+ return { added, removed, unchanged };
151
+ }
152
+ async updateNodes({ added, removed, unchanged }) {
153
+ (0, logging_1.debuglog)("SKO update (added/removed)", added.map(showMapping), removed.map(showMapping));
154
+ const promises = [];
155
+ for (const fromTo of added) {
156
+ const awaiting = this.norsk.processor.transform.streamKeyOverride({
157
+ id: `sko.${StreamKeyOverride.uid++}[${showStreamKey(fromTo.to)}]`,
158
+ onCreate: (node) => {
159
+ this.relatedMediaNodes.addInput(node);
160
+ this.relatedMediaNodes.addOutput(node);
161
+ fromTo.node = node;
162
+ node.subscribe([{ source: fromTo.from.mediaNode, sourceSelector: () => [fromTo.from.metadata.streamKey] }]);
163
+ },
164
+ streamKey: fromTo.to,
165
+ });
166
+ promises.push(awaiting.then());
167
+ }
168
+ for (const { node } of removed) {
169
+ if (!node)
170
+ continue;
171
+ this.relatedMediaNodes.removeInput(node);
172
+ this.relatedMediaNodes.removeOutput(node);
173
+ const awaiting = node.close();
174
+ promises.push(awaiting);
175
+ }
176
+ this.mapping = added.concat(unchanged);
177
+ await Promise.all(promises);
178
+ }
179
+ async close() {
180
+ await this.updateNodes({ added: [], removed: this.mapping, unchanged: [] });
181
+ }
182
+ selectOutputs(selectionKeys) {
183
+ if (this.cfg.output === 'merged') {
184
+ if (!selectionKeys.length)
185
+ return [];
186
+ return this.mapping.map(m => m.to);
187
+ }
188
+ return this.currentSources.flatMap(source => {
189
+ const sourceNode = source.sourceDescription;
190
+ const produces = sourceNode.info.subscription.produces;
191
+ if (produces?.type != "fixed-list") {
192
+ if (selectionKeys.includes(sourceNode.id)) {
193
+ return this.mapping
194
+ .filter(m => m.nodeDescriptionId === sourceNode.id)
195
+ .map(m => m.to);
196
+ }
197
+ else {
198
+ return [];
199
+ }
200
+ }
201
+ const prefix = `${sourceNode.id}-`;
202
+ const upstreamKeys = selectionKeys
203
+ .filter(k => k.startsWith(prefix))
204
+ .map(k => k.substring(prefix.length));
205
+ const upstream = source.latestStreams(upstreamKeys).map(x => x.metadata.streamKey);
206
+ const downstream = [];
207
+ for (const sourceKey of upstream) {
208
+ for (const m of this.mapping) {
209
+ if ((0, norsk_sdk_1.streamKeysAreEqual)(sourceKey, m.from.metadata.streamKey)) {
210
+ downstream.push(m.to);
211
+ break;
212
+ }
213
+ }
214
+ }
215
+ return downstream;
216
+ });
217
+ }
218
+ }
219
+ exports.StreamKeyOverride = StreamKeyOverride;
220
+ function showMapping({ from, to }) {
221
+ return `${showStreamKey(from.metadata.streamKey)} -> ${showStreamKey(to)}`;
222
+ }
223
+ function showStreamKey(key) {
224
+ return `${key.sourceName}-${key.programNumber}-${key.streamId}-${key.renditionName}`;
225
+ }
226
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/processor.streamKeyOverride/runtime.ts"],"names":[],"mappings":";;;AAAA,qDAAoK;AAEpK,wFAA6L;AAC7L,yEAAuE;AAEvE,mEAA6E;AAgB7E,MAAqB,2BAA2B;IAC9C,KAAK,CAAC,MAAM,CAAC,KAAY,EAAE,GAA4B,EAAE,EAAgC;QACvF,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACxD,EAAE,CAAC,IAAI,CAAC,CAAC;IACX,CAAC;CACF;AALD,8CAKC;AAOD,MAAa,iBAAiB;IAC5B,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;IACf,KAAK,CAAQ;IACb,OAAO,GAAc,EAAE,CAAC;IACxB,OAAO,GAAY,EAAE,CAAC;IAEtB,cAAc,GAAmC,EAAE,CAAC;IACpD,GAAG,CAA0B;IAC7B,WAAW,CAAgB;IAC3B,EAAE,CAAS;IACX,iBAAiB,GAAsB,IAAI,iCAAiB,EAAE,CAAC;IAE/D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAY,EAAE,GAA4B;QAC5D,MAAM,IAAI,GAAG,IAAI,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC/C,MAAM,IAAI,CAAC,WAAW,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,KAAY,EAAE,GAA4B;QACpD,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,UAAU;IAEhB,CAAC;IAGD,eAAe,CAAC,SAAoB,EAAE,QAA+B;QACnE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,MAAM,OAAO,GAAc;YACzB,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS,CAAC,UAAU;YAClD,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,SAAS,CAAC,aAAa;YAC3D,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ;YAC5C,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,SAAS,CAAC,aAAa;SAC5D,CAAC;QACF,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,QAAQ;gBAEX,MAAM;YACR,KAAK,eAAe;gBAElB,QAAQ,QAAQ,EAAE,IAAI,EAAE,CAAC;oBACvB,KAAK,OAAO;wBACV,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;wBACtB,MAAM;oBACR,KAAK,OAAO;wBACV,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;wBACtB,MAAM;oBACR,KAAK,UAAU;wBACb,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;wBACtB,MAAM;oBACR,KAAK,WAAW;wBACd,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;wBACtB,MAAM;oBACR,KAAK,UAAU;wBACb,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;wBACtB,MAAM;oBACR,KAAK,SAAS;wBACZ,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;wBACtB,MAAM;oBACR;wBACE,IAAA,wBAAiB,EAAC,QAAQ,CAAC,CAAC;gBAChC,CAAC;gBACD,MAAM;YAER,KAAK,UAAU,CAAC,CAAC,CAAC;gBAEhB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC7B,IAAI,IAAA,8BAAkB,EAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC7D,OAAO,CAAC,CAAC,EAAE,CAAC;oBACd,CAAC;gBACH,CAAC;gBAED,IAAI,QAAQ,GAAG,SAAS,CAAC;gBACzB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBACnC,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,aAAa,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC;wBACjG,QAAQ,GAAG,EAAE,OAAO,CAAC,YAAY,CAAC;wBAClC,MAAM;oBACR,CAAC;gBACH,CAAC;gBAED,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC3B,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC;oBAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;wBAChB,UAAU,EAAE,OAAO,CAAC,UAAU;wBAC9B,aAAa,EAAE,OAAO,CAAC,aAAa;wBACpC,YAAY,EAAE,QAAQ;qBACvB,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBAC5B,MAAM;YACR,CAAC;YACD;gBACE,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,EAAE;oBAC3C,IAAA,wBAAiB,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,SAAS,CAAC,OAAuC;QAC/C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC;QACjF,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAC9B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/E,KAAK,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAAC,iBAAsD;QACrF,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAC/F,MAAM,SAAS,GAAc,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;YACvD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAIzE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC;QACxG,CAAC,CAAC,CAAC,CAAC;QAEJ,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,cAAyB;QAE5B,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAEjF,MAAM,KAAK,GAAc,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAc,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAc,EAAE,CAAC;QAEhC,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;YACpC,IAAI,KAAK,GAAG,SAAS,CAAC;YACtB,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;gBACnC,IAAI,IAAI,CAAC,IAAI;oBAAE,SAAS;gBACxB,IAAI,IAAA,8BAAkB,EAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBACrF,KAAK,GAAG,IAAI,CAAC;oBACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;oBACjB,MAAM;gBACR,CAAC;YACH,CAAC;YACD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,CAAC;iBAAM,IAAI,CAAC,IAAA,8BAAkB,EAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;gBACpD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACnB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAQ;QACnD,IAAA,kBAAQ,EAAC,4BAA4B,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;QAEzF,MAAM,QAAQ,GAAoB,EAAE,CAAC;QACrC,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,iBAAiB,CAAC;gBAChE,EAAE,EAAE,OAAO,iBAAiB,CAAC,GAAG,EAAE,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;gBACjE,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;oBACjB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACtC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBACvC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;oBACnB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC9G,CAAC;gBACD,SAAS,EAAE,MAAM,CAAC,EAAE;aACrB,CAAC,CAAC;YACH,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACvC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9E,CAAC;IAKD,aAAa,CAAC,aAAuB;QACnC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACjC,IAAI,CAAC,aAAa,CAAC,MAAM;gBAAE,OAAO,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC;YAC5C,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;YACvD,IAAI,QAAQ,EAAE,IAAI,IAAI,YAAY,EAAE,CAAC;gBACnC,IAAI,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC1C,OAAO,IAAI,CAAC,OAAO;yBAChB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,KAAK,UAAU,CAAC,EAAE,CAAC;yBAClD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpB,CAAC;qBAAM,CAAC;oBACN,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GAAG,GAAG,UAAU,CAAC,EAAE,GAAG,CAAC;YACnC,MAAM,YAAY,GAAG,aAAa;iBAC/B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;iBACjC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAExC,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAEnF,MAAM,UAAU,GAAG,EAAE,CAAC;YACtB,KAAK,MAAM,SAAS,IAAI,QAAQ,EAAE,CAAC;gBACjC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC7B,IAAI,IAAA,8BAAkB,EAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC7D,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;wBACtB,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC;;AAtOH,8CAuOC;AAED,SAAS,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE,EAAW;IACxC,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC;AAC7E,CAAC;AACD,SAAS,aAAa,CAAC,GAAc;IACnC,OAAO,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;AACvF,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { OpenAPIV3 } from 'openapi-types';
2
+ export type Transmuted<T> = {
3
+ [Key in keyof T]: OpenAPIV3.PathItemObject;
4
+ };
5
+ export declare function coreInfo<T>(path: keyof T, op: OpenAPIV3.OperationObject): {
6
+ url: keyof T;
7
+ summary: string | undefined;
8
+ description: string | undefined;
9
+ requestBody: OpenAPIV3.ReferenceObject | OpenAPIV3.RequestBodyObject | undefined;
10
+ responses: OpenAPIV3.ResponsesObject;
11
+ };
12
+ export declare function get<T>(path: keyof T, paths: Transmuted<T>): {
13
+ method: "GET";
14
+ url: keyof T;
15
+ summary: string | undefined;
16
+ description: string | undefined;
17
+ requestBody: OpenAPIV3.ReferenceObject | OpenAPIV3.RequestBodyObject | undefined;
18
+ responses: OpenAPIV3.ResponsesObject;
19
+ };
20
+ export declare function post<T>(path: keyof T, paths: Transmuted<T>): {
21
+ method: "POST";
22
+ url: keyof T;
23
+ summary: string | undefined;
24
+ description: string | undefined;
25
+ requestBody: OpenAPIV3.ReferenceObject | OpenAPIV3.RequestBodyObject | undefined;
26
+ responses: OpenAPIV3.ResponsesObject;
27
+ };
28
+ export declare function delete_<T>(path: keyof T, paths: Transmuted<T>): {
29
+ method: "DELETE";
30
+ url: keyof T;
31
+ summary: string | undefined;
32
+ description: string | undefined;
33
+ requestBody: OpenAPIV3.ReferenceObject | OpenAPIV3.RequestBodyObject | undefined;
34
+ responses: OpenAPIV3.ResponsesObject;
35
+ };
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.coreInfo = coreInfo;
4
+ exports.get = get;
5
+ exports.post = post;
6
+ exports.delete_ = delete_;
7
+ function coreInfo(path, op) {
8
+ return {
9
+ url: path,
10
+ summary: op.summary,
11
+ description: op.description,
12
+ requestBody: op.requestBody,
13
+ responses: op.responses,
14
+ };
15
+ }
16
+ function get(path, paths) {
17
+ return {
18
+ ...coreInfo(path, paths[path]['get']),
19
+ method: 'GET',
20
+ };
21
+ }
22
+ function post(path, paths) {
23
+ return {
24
+ ...coreInfo(path, paths[path]['post']),
25
+ method: 'POST',
26
+ };
27
+ }
28
+ function delete_(path, paths) {
29
+ return {
30
+ ...coreInfo(path, paths[path]['delete']),
31
+ method: 'DELETE',
32
+ };
33
+ }
34
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/shared/api.ts"],"names":[],"mappings":";;AAMA,4BAQC;AAED,kBAKC;AAED,oBAKC;AAED,0BAKC;AA7BD,SAAgB,QAAQ,CAAI,IAAa,EAAE,EAA6B;IACtE,OAAO;QACL,GAAG,EAAE,IAAI;QACT,OAAO,EAAE,EAAE,CAAC,OAAO;QACnB,WAAW,EAAE,EAAE,CAAC,WAAW;QAC3B,WAAW,EAAE,EAAE,CAAC,WAAW;QAC3B,SAAS,EAAE,EAAE,CAAC,SAAS;KACxB,CAAA;AACH,CAAC;AAED,SAAgB,GAAG,CAAI,IAAa,EAAE,KAAoB;IACxD,OAAO;QACL,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAE,CAAC;QACtC,MAAM,EAAE,KAAc;KACvB,CAAA;AACH,CAAC;AAED,SAAgB,IAAI,CAAI,IAAa,EAAE,KAAoB;IACzD,OAAO;QACL,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAE,CAAC;QACvC,MAAM,EAAE,MAAe;KACxB,CAAA;AACH,CAAC;AAED,SAAgB,OAAO,CAAI,IAAa,EAAE,KAAoB;IAC5D,OAAO;QACL,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAE,CAAC;QACzC,MAAM,EAAE,QAAiB;KAC1B,CAAA;AACH,CAAC"}