@norskvideo/norsk-studio-built-ins 1.0.1 → 1.0.3

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.
package/client/info.js CHANGED
@@ -1498,26 +1498,51 @@ function SummaryView7({ state, config, sendCommand }) {
1498
1498
  const [bug, setBug] = (0, import_react34.useState)(state.activeBug?.file ?? config.defaultBug);
1499
1499
  const [orientation, setOrientation] = (0, import_react34.useState)(state.activeBug?.orientation ?? config.defaultOrientation);
1500
1500
  const [bugs, setBugs] = (0, import_react34.useState)([]);
1501
+ const [fileToUpload, setFileToUpload] = (0, import_react34.useState)(void 0);
1502
+ async function updateBugs() {
1503
+ const result2 = await fetch("components/processor.dynamicBug/bugs");
1504
+ if (result2.ok && result2.body) {
1505
+ const bugs2 = await result2.json();
1506
+ setBugs(bugs2);
1507
+ } else {
1508
+ const text = await result2.text();
1509
+ throw new Error(text);
1510
+ }
1511
+ }
1501
1512
  (0, import_react34.useEffect)(() => {
1502
1513
  const fn = async () => {
1503
- const result2 = await fetch("components/processor.dynamicBug/bugs");
1504
- if (result2.ok && result2.body) {
1505
- const bugs2 = await result2.json();
1506
- setBugs(bugs2);
1507
- } else {
1508
- const text = await result2.text();
1509
- throw new Error(text);
1510
- }
1514
+ await updateBugs();
1511
1515
  };
1512
1516
  fn().catch(console.error);
1513
1517
  }, []);
1518
+ function onFileChange(e) {
1519
+ if (e.target.files?.[0])
1520
+ setFileToUpload(e.target.files[0]);
1521
+ }
1514
1522
  return (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [(0, import_jsx_runtime32.jsx)("h2", { children: "Controls" }), (0, import_jsx_runtime32.jsx)("label", { htmlFor: "select-preview", className: "mt-2", children: "Source" }), (0, import_jsx_runtime32.jsxs)("select", { id: "select-bug", className: "mt-2 node-editor-select-input", onChange: (e) => {
1515
1523
  setBug(e.currentTarget.value);
1516
- }, children: [(0, import_jsx_runtime32.jsx)("option", { selected: bug === void 0, children: "---" }), bugs.map((s, i) => (0, import_jsx_runtime32.jsx)("option", { selected: bug == s, value: s, children: s }, i))] }), (0, import_jsx_runtime32.jsxs)("select", { id: "select-orientation", className: "mt-2 node-editor-select-input", onChange: (e) => {
1524
+ }, children: [(0, import_jsx_runtime32.jsx)("option", { selected: bug === void 0, children: "---" }), (0, import_jsx_runtime32.jsx)("option", { value: "new", selected: bug === "new", children: "New" }), bugs.map((s, i) => (0, import_jsx_runtime32.jsx)("option", { selected: bug == s, value: s, children: s }, i))] }), (0, import_jsx_runtime32.jsx)("form", { style: { display: bug === "new" ? "block" : "none" }, onSubmit: (e) => e.preventDefault(), children: (0, import_jsx_runtime32.jsx)("input", { type: "file", id: "file", name: "filename", onChange: onFileChange }) }), (0, import_jsx_runtime32.jsxs)("select", { id: "select-orientation", className: "mt-2 node-editor-select-input", onChange: (e) => {
1517
1525
  setOrientation(e.currentTarget.value);
1518
- }, children: [(0, import_jsx_runtime32.jsx)("option", { selected: orientation === void 0, children: "---" }), (0, import_jsx_runtime32.jsx)("option", { value: "topleft", selected: orientation === "topleft", children: "Top Left" }), (0, import_jsx_runtime32.jsx)("option", { value: "topright", selected: orientation === "topright", children: "Top Right" }), (0, import_jsx_runtime32.jsx)("option", { value: "bottomleft", selected: orientation === "bottomleft", children: "Bottom Left" }), (0, import_jsx_runtime32.jsx)("option", { value: "bottomright", selected: orientation === "bottomright", children: "Bottom Right" })] }), bug != state.activeBug?.file || orientation != state.activeBug?.orientation ? (0, import_jsx_runtime32.jsx)("button", { type: "button", className: "mt-2 mb-2 text-white w-full justify-center bg-primary-700 hover:bg-primary-800 focus:ring-4 focus:outline-none focus:ring-primary-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800", onClick: (e) => {
1526
+ }, children: [(0, import_jsx_runtime32.jsx)("option", { selected: orientation === void 0, children: "---" }), (0, import_jsx_runtime32.jsx)("option", { value: "topleft", selected: orientation === "topleft", children: "Top Left" }), (0, import_jsx_runtime32.jsx)("option", { value: "topright", selected: orientation === "topright", children: "Top Right" }), (0, import_jsx_runtime32.jsx)("option", { value: "bottomleft", selected: orientation === "bottomleft", children: "Bottom Left" }), (0, import_jsx_runtime32.jsx)("option", { value: "bottomright", selected: orientation === "bottomright", children: "Bottom Right" })] }), bug != state.activeBug?.file || orientation != state.activeBug?.orientation || fileToUpload ? (0, import_jsx_runtime32.jsx)("button", { type: "button", className: "mt-2 mb-2 text-white w-full justify-center bg-primary-700 hover:bg-primary-800 focus:ring-4 focus:outline-none focus:ring-primary-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800", onClick: async (e) => {
1519
1527
  e.preventDefault();
1520
- sendCommand({ type: "change-bug", file: bug, orientation });
1528
+ if (fileToUpload && bug === "new") {
1529
+ const form = new FormData();
1530
+ const url = `http://${document.location.hostname}:${config.apiPort}/bugs`;
1531
+ form.append("file", fileToUpload);
1532
+ await fetch(url, {
1533
+ method: "POST",
1534
+ body: form
1535
+ });
1536
+ setTimeout(async () => {
1537
+ await updateBugs();
1538
+ sendCommand({ type: "change-bug", file: fileToUpload.name, orientation });
1539
+ setBug(fileToUpload.name);
1540
+ setFileToUpload(void 0);
1541
+ return;
1542
+ }, 500);
1543
+ } else {
1544
+ sendCommand({ type: "change-bug", file: bug, orientation });
1545
+ }
1521
1546
  }, children: "Commit" }) : (0, import_jsx_runtime32.jsx)(import_jsx_runtime32.Fragment, {})] });
1522
1547
  }
1523
1548
  var import_jsx_runtime32, import_react34, summary_view_default5;
@@ -17637,7 +17662,7 @@ function assertUnreachable10(_) {
17637
17662
  // build/processor.dynamicBug/info.js
17638
17663
  var import_config5 = __toESM(require_config());
17639
17664
  var import_react35 = __toESM(require_react());
17640
- function info_default22({ defineComponent, Video }) {
17665
+ function info_default22({ defineComponent, Video, validation: { Port, unique } }) {
17641
17666
  const BugSelection2 = import_react35.default.lazy(async () => Promise.resolve().then(() => (init_bug_selection(), bug_selection_exports)));
17642
17667
  const SummaryView8 = import_react35.default.lazy(async () => Promise.resolve().then(() => (init_summary_view5(), summary_view_exports5)));
17643
17668
  return defineComponent({
@@ -17700,6 +17725,15 @@ function info_default22({ defineComponent, Video }) {
17700
17725
  { value: "bottomright", display: "Bottom Right" }
17701
17726
  ]
17702
17727
  }
17728
+ },
17729
+ apiPort: {
17730
+ help: "Port to open the API on",
17731
+ hint: {
17732
+ type: "numeric",
17733
+ defaultValue: 5e3,
17734
+ validation: Port,
17735
+ global: unique("port")
17736
+ }
17703
17737
  }
17704
17738
  }
17705
17739
  }
@@ -1,3 +1,3 @@
1
1
  import type Registration from "@norskvideo/norsk-studio/lib/extension/registration";
2
2
  import type { DynamicBugCommand, DynamicBugConfig, DynamicBugEvent, DynamicBugState } from "./runtime";
3
- export default function ({ defineComponent, Video }: Registration): import("@norskvideo/norsk-studio/lib/extension/client-types").NodeInfo<DynamicBugConfig, DynamicBugState, DynamicBugCommand, DynamicBugEvent>;
3
+ export default function ({ defineComponent, Video, validation: { Port, unique } }: Registration): import("@norskvideo/norsk-studio/lib/extension/client-types").NodeInfo<DynamicBugConfig, DynamicBugState, DynamicBugCommand, DynamicBugEvent>;
@@ -28,7 +28,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  const config_1 = require("@norskvideo/norsk-studio/lib/shared/config");
30
30
  const react_1 = __importDefault(require("react"));
31
- function default_1({ defineComponent, Video }) {
31
+ function default_1({ defineComponent, Video, validation: { Port, unique } }) {
32
32
  const BugSelection = react_1.default.lazy(async () => Promise.resolve().then(() => __importStar(require('./bug-selection'))));
33
33
  const SummaryView = react_1.default.lazy(async () => Promise.resolve().then(() => __importStar(require('./summary-view'))));
34
34
  return defineComponent({
@@ -90,6 +90,15 @@ function default_1({ defineComponent, Video }) {
90
90
  { value: 'bottomright', display: 'Bottom Right' }
91
91
  ]
92
92
  }
93
+ },
94
+ apiPort: {
95
+ help: "Port to open the API on",
96
+ hint: {
97
+ type: 'numeric',
98
+ defaultValue: 5000,
99
+ validation: Port,
100
+ global: unique('port')
101
+ }
93
102
  }
94
103
  }
95
104
  }
@@ -1 +1 @@
1
- {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/processor.dynamicBug/info.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,uEAA+E;AAC/E,kDAA0B;AAG1B,mBAAwB,EACtB,eAAe,EACf,KAAK,EACQ;IACb,MAAM,YAAY,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,mDAAQ,iBAAiB,GAAC,CAAC,CAAC;IACvE,MAAM,WAAW,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,mDAAQ,gBAAgB,GAAC,CAAC,CAAC;IAErE,OAAO,eAAe,CAAwE;QAC5F,UAAU,EAAE,sBAAsB;QAClC,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE,aAAa;QACnB,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,UAAS,GAAG;YAC3B,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,UAAU,IAAI,MAAM;aAC1C,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,aAAa;wBAChB,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;oBACjF;wBACE,iBAAiB,CAAC,MAAM,CAAC,CAAA;gBAE7B,CAAC;YACH,CAAC;SACF;QACD,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,QAAQ,EAAE,IAAA,0BAAiB,GAAE;aAC9B;YACD,IAAI,EAAE;gBACJ,UAAU,EAAE;oBACV,IAAI,EAAE,iDAAiD;oBACvD,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,SAAS,EAAE,YAAY;qBACxB;iBACF;gBACD,kBAAkB,EAAE;oBAClB,IAAI,EAAE,2CAA2C;oBACjD,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;AAzED,4BAyEC;AAED,SAAS,iBAAiB,CAAC,CAAQ;IACjC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/processor.dynamicBug/info.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,uEAA+E;AAC/E,kDAA0B;AAG1B,mBAAwB,EACtB,eAAe,EACf,KAAK,EACL,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EACf;IACb,MAAM,YAAY,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,mDAAQ,iBAAiB,GAAC,CAAC,CAAC;IACvE,MAAM,WAAW,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,mDAAQ,gBAAgB,GAAC,CAAC,CAAC;IAErE,OAAO,eAAe,CAAwE;QAC5F,UAAU,EAAE,sBAAsB;QAClC,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE,aAAa;QACnB,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,UAAS,GAAG;YAC3B,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,UAAU,IAAI,MAAM;aAC1C,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,aAAa;wBAChB,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;oBACjF;wBACE,iBAAiB,CAAC,MAAM,CAAC,CAAA;gBAE7B,CAAC;YACH,CAAC;SACF;QACD,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,QAAQ,EAAE,IAAA,0BAAiB,GAAE;aAC9B;YACD,IAAI,EAAE;gBACJ,UAAU,EAAE;oBACV,IAAI,EAAE,iDAAiD;oBACvD,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,SAAS,EAAE,YAAY;qBACxB;iBACF;gBACD,kBAAkB,EAAE;oBAClB,IAAI,EAAE,2CAA2C;oBACjD,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;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,yBAAyB;oBAC/B,IAAI,EAAE;wBACJ,IAAI,EAAE,SAAS;wBACf,YAAY,EAAE,IAAI;wBAClB,UAAU,EAAE,IAAI;wBAChB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;qBACvB;iBACF;aACF;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAnFD,4BAmFC;AAED,SAAS,iBAAiB,CAAC,CAAQ;IACjC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAC/C,CAAC"}
@@ -12,6 +12,7 @@ export type DynamicBugConfig = {
12
12
  displayName: string;
13
13
  defaultBug?: string;
14
14
  defaultOrientation?: DynamicBugOrientation;
15
+ apiPort: number;
15
16
  };
16
17
  export type DynamicBugState = {
17
18
  activeBug?: {
@@ -39,6 +40,8 @@ export declare class DynamicBug implements CreatedMediaNode, SubscribeDestinatio
39
40
  relatedMediaNodes: RelatedMediaNodes;
40
41
  norsk: Norsk;
41
42
  cfg: DynamicBugConfig;
43
+ bug?: string;
44
+ orientation?: DynamicBugOrientation;
42
45
  videoSource?: StudioNodeSubscriptionSource;
43
46
  composeNode?: VideoComposeNode<"video" | "bug">;
44
47
  imageSource?: FileImageInputNode;
@@ -47,9 +50,10 @@ export declare class DynamicBug implements CreatedMediaNode, SubscribeDestinatio
47
50
  static create(norsk: Norsk, cfg: DynamicBugConfig, updates: RuntimeUpdates<DynamicBugState, DynamicBugEvent>): Promise<DynamicBug>;
48
51
  constructor(norsk: Norsk, cfg: DynamicBugConfig, updates: RuntimeUpdates<DynamicBugState, DynamicBugEvent>);
49
52
  sourceContextChange(_responseCallback: (error?: SubscriptionError | undefined) => void): Promise<boolean>;
53
+ doSubs(): void;
50
54
  setupBug(bug?: string, orientation?: DynamicBugOrientation): Promise<void>;
51
- imagePart(orientation: DynamicBugOrientation): ComposePart<"bug">;
52
- videoPart(): ComposePart<"video">;
55
+ imagePart(orientation: DynamicBugOrientation, videoWidth: number, videoHeight: number, imageWidth: number, imageHeight: number): ComposePart<"bug">;
56
+ videoPart(videoWidth: number, videoHeight: number): ComposePart<"video">;
53
57
  initialise(): Promise<void>;
54
58
  subscribe(sources: StudioNodeSubscriptionSource[]): void;
55
59
  }
@@ -9,24 +9,77 @@ const runtime_types_1 = require("@norskvideo/norsk-studio/lib/extension/runtime-
9
9
  const logging_1 = require("@norskvideo/norsk-studio/lib/server/logging");
10
10
  const config_1 = require("@norskvideo/norsk-studio/lib/shared/config");
11
11
  const util_1 = require("@norskvideo/norsk-studio/lib/shared/util");
12
- const express_1 = __importDefault(require("express"));
13
12
  const promises_1 = __importDefault(require("fs/promises"));
14
13
  const path_1 = __importDefault(require("path"));
14
+ const cors_1 = __importDefault(require("cors"));
15
+ const body_parser_1 = __importDefault(require("body-parser"));
16
+ const express_1 = __importDefault(require("express"));
17
+ const multer_1 = __importDefault(require("multer"));
15
18
  function bugDir() {
16
- return path_1.default.resolve(process.env.NORSK_DATA_DIR || "data/bugs");
19
+ return path_1.default.resolve(process.env.norsk_data_dir || "data/bugs");
20
+ }
21
+ async function getBugs() {
22
+ const files = await promises_1.default.readdir(bugDir());
23
+ const images = files.filter((f) => {
24
+ return f.endsWith(".png") || f.endsWith(".jpg");
25
+ });
26
+ return images;
17
27
  }
18
28
  class DynamicBugDefinition {
19
29
  async create(norsk, cfg, cb, runtime) {
20
30
  const node = await DynamicBug.create(norsk, cfg, runtime.updates);
21
31
  cb(node);
32
+ const expressApp = (0, express_1.default)();
33
+ expressApp.use(express_1.default.json());
34
+ expressApp.use((0, cors_1.default)());
35
+ expressApp.get("/active-bug", async (_req, res) => {
36
+ res.writeHead(200);
37
+ res.end(JSON.stringify({
38
+ bug: node.bug,
39
+ orientation: node.orientation
40
+ }));
41
+ });
42
+ expressApp.post("/active-bug", async (req, res) => {
43
+ if (!["topleft", "topright", "bottomleft", "bottomright"].includes(req.body.orientation)) {
44
+ res.writeHead(400);
45
+ res.end("bad orientation");
46
+ return;
47
+ }
48
+ const images = await getBugs();
49
+ if (!images.includes(req.body.bug)) {
50
+ res.writeHead(400);
51
+ res.end("bad bug");
52
+ return;
53
+ }
54
+ await node.setupBug(req.body.bug, req.body.orientation);
55
+ res.writeHead(200);
56
+ res.end("ok");
57
+ });
58
+ const storage = multer_1.default.diskStorage({
59
+ destination: bugDir(),
60
+ filename: function (_req, file, cb) {
61
+ cb(null, path_1.default.basename(file.originalname));
62
+ }
63
+ });
64
+ const upload = (0, multer_1.default)({ storage });
65
+ expressApp.post('/bugs', upload.single('file'), (_req, res) => {
66
+ res.send('File uploaded successfully');
67
+ });
68
+ expressApp.get("/bugs", (0, cors_1.default)({
69
+ origin: '*',
70
+ optionsSuccessStatus: 200
71
+ }), async (_req, res) => {
72
+ const images = await getBugs();
73
+ res.writeHead(200);
74
+ res.end(JSON.stringify(images));
75
+ });
76
+ expressApp.listen(cfg.apiPort);
22
77
  }
23
78
  routes() {
24
79
  const router = express_1.default.Router();
80
+ router.use(body_parser_1.default.json());
25
81
  router.get("/bugs", async (_req, res) => {
26
- const files = await promises_1.default.readdir(bugDir());
27
- const images = files.filter((f) => {
28
- return f.endsWith(".png") || f.endsWith(".jpg");
29
- });
82
+ const images = await getBugs();
30
83
  res.writeHead(200);
31
84
  res.end(JSON.stringify(images));
32
85
  });
@@ -49,6 +102,8 @@ class DynamicBug {
49
102
  relatedMediaNodes = new runtime_types_1.RelatedMediaNodes();
50
103
  norsk;
51
104
  cfg;
105
+ bug;
106
+ orientation;
52
107
  videoSource;
53
108
  composeNode;
54
109
  imageSource;
@@ -61,16 +116,15 @@ class DynamicBug {
61
116
  }
62
117
  constructor(norsk, cfg, updates) {
63
118
  this.cfg = cfg;
119
+ this.bug = cfg.defaultBug;
120
+ this.orientation = cfg.defaultOrientation;
64
121
  this.id = cfg.id;
65
122
  this.norsk = norsk;
66
123
  this.initialised = this.initialise();
67
124
  this.updates = updates;
68
125
  }
69
126
  async sourceContextChange(_responseCallback) {
70
- if (this.composeNode)
71
- return false;
72
127
  if (!this.videoSource) {
73
- (0, logging_1.errorlog)("Context received by node, but no video source is presently active", { id: this.id });
74
128
  return false;
75
129
  }
76
130
  const videoStream = this.videoSource.latestStreams()[0];
@@ -81,71 +135,102 @@ class DynamicBug {
81
135
  (0, logging_1.errorlog)("Media other than video received in dynamicBug node??", { id: this.id, metadata: videoStream.metadata });
82
136
  return false;
83
137
  }
84
- this.composeNode = await this.norsk.processor.transform.videoCompose({
85
- id: `${this.id}-compose`,
86
- referenceStream: 'video',
87
- referenceResolution: { width: 100, height: 100 },
88
- hardwareAcceleration: (0, config_1.contractHardwareAcceleration)(this.cfg.__global.hardware, ["nvidia"]),
89
- outputResolution: {
90
- width: videoStream.metadata.message.value.width,
91
- height: videoStream.metadata.message.value.height
92
- },
93
- parts: [this.videoPart()]
94
- });
95
- this.composeNode.subscribeToPins(this.videoSource.selectVideoToPin("video"));
96
- this.relatedMediaNodes.addOutput(this.composeNode);
97
- this.relatedMediaNodes.addInput(this.composeNode);
98
- void this.setupBug(this.cfg.defaultBug, this.cfg.defaultOrientation);
138
+ if (!this.composeNode) {
139
+ this.composeNode = await this.norsk.processor.transform.videoCompose({
140
+ id: `${this.id}-compose`,
141
+ referenceStream: 'video',
142
+ hardwareAcceleration: (0, config_1.contractHardwareAcceleration)(this.cfg.__global.hardware, ["nvidia"]),
143
+ outputResolution: {
144
+ width: videoStream.metadata.message.value.width,
145
+ height: videoStream.metadata.message.value.height
146
+ },
147
+ parts: [
148
+ this.videoPart(videoStream.metadata.message.value.width, videoStream.metadata.message.value.height),
149
+ ]
150
+ });
151
+ this.composeNode.subscribeToPins(this.videoSource.selectVideoToPin("video"));
152
+ this.relatedMediaNodes.addOutput(this.composeNode);
153
+ this.relatedMediaNodes.addInput(this.composeNode);
154
+ }
155
+ if (this.imageSource) {
156
+ const imageStream = this.imageSource.outputStreams[0];
157
+ if (imageStream && imageStream.message.case == 'video') {
158
+ this.composeNode?.updateConfig({
159
+ parts: [
160
+ this.videoPart(videoStream.metadata.message.value.width, videoStream.metadata.message.value.height),
161
+ this.imagePart(this.orientation ?? 'topleft', videoStream.metadata.message.value.width, videoStream.metadata.message.value.height, imageStream.message.value.width, imageStream.message.value.height)
162
+ ]
163
+ });
164
+ }
165
+ else {
166
+ this.composeNode?.updateConfig({
167
+ parts: [
168
+ this.videoPart(videoStream.metadata.message.value.width, videoStream.metadata.message.value.height),
169
+ ]
170
+ });
171
+ }
172
+ }
173
+ this.doSubs();
99
174
  return false;
100
175
  }
101
- async setupBug(bug, orientation) {
102
- if (!bug) {
176
+ doSubs() {
177
+ if (!this.imageSource) {
103
178
  this.composeNode?.subscribeToPins(this.videoSource?.selectVideoToPin("video") || []);
104
- this.updates.raiseEvent({ type: 'bug-changed' });
105
- return;
106
179
  }
180
+ else {
181
+ this.composeNode?.subscribeToPins((this.videoSource?.selectVideoToPin("video") ?? []).concat([
182
+ { source: this.imageSource, sourceSelector: (0, norsk_sdk_1.videoToPin)("bug") }
183
+ ]));
184
+ }
185
+ }
186
+ async setupBug(bug, orientation) {
107
187
  if (this.imageSource) {
108
188
  await this.imageSource.close();
189
+ this.imageSource = undefined;
190
+ }
191
+ if (!bug) {
192
+ this.doSubs();
193
+ this.updates.raiseEvent({ type: 'bug-changed' });
194
+ return;
109
195
  }
110
196
  this.imageSource = await this.norsk.input.fileImage({
111
197
  sourceName: `${this.id}-bug`,
112
198
  fileName: path_1.default.join(bugDir(), bug)
113
199
  });
114
- this.composeNode?.updateConfig({
115
- parts: [
116
- this.videoPart(),
117
- this.imagePart(orientation ?? 'topleft')
118
- ]
119
- });
120
- this.composeNode?.subscribeToPins((this.videoSource?.selectVideoToPin("video") ?? []).concat([
121
- { source: this.imageSource, sourceSelector: (0, norsk_sdk_1.videoToPin)("bug") }
122
- ]));
200
+ this.imageSource.registerForContextChange(this);
201
+ this.bug = bug;
202
+ this.orientation = orientation;
123
203
  this.updates.raiseEvent({ type: 'bug-changed', file: bug, orientation });
124
204
  }
125
- imagePart(orientation) {
126
- return {
205
+ imagePart(orientation, videoWidth, videoHeight, imageWidth, imageHeight) {
206
+ imageWidth = Math.min(videoWidth - 100, imageWidth);
207
+ imageHeight = Math.min(videoHeight - 100, imageHeight);
208
+ const foo = {
127
209
  id: "bug",
128
210
  zIndex: 1,
129
- sourceRect: { x: 0, y: 0, width: 100, height: 100 },
130
- destRect: (orientation == 'topleft' ? { x: 0.1, y: 0.1, width: 5.0, height: 5.0 } :
131
- orientation == 'topright' ? { x: 94.9, y: 0.1, width: 5.0, height: 5.0 } :
132
- orientation == 'bottomleft' ? { x: 0.1, y: 94.9, width: 5.0, height: 5.0 } :
133
- { x: 94.9, y: 94.9, width: 5.0, height: 5.0 }),
211
+ sourceRect: { x: 0, y: 0, width: videoWidth, height: videoHeight },
212
+ referenceResolution: undefined,
213
+ destRect: (orientation == 'topleft' ? { x: 5, y: 5, width: imageWidth, height: imageHeight } :
214
+ orientation == 'topright' ? { x: videoWidth - imageWidth - 5, y: 5, width: imageWidth, height: imageHeight } :
215
+ orientation == 'bottomleft' ? { x: 5, y: videoHeight - imageHeight - 5, width: imageWidth, height: imageHeight } :
216
+ { x: videoWidth - imageWidth - 5, y: videoHeight - imageHeight - 5, width: imageWidth, height: imageHeight }),
134
217
  opacity: 1.0,
135
218
  pin: "bug"
136
219
  };
220
+ return foo;
137
221
  }
138
- videoPart() {
222
+ videoPart(videoWidth, videoHeight) {
139
223
  return {
140
224
  id: "video",
141
225
  zIndex: 0,
142
- sourceRect: { x: 0, y: 0, width: 100, height: 100 },
143
- destRect: { x: 0, y: 0, width: 100, height: 100 },
226
+ sourceRect: { x: 0, y: 0, width: videoWidth, height: videoHeight },
227
+ destRect: { x: 0, y: 0, width: videoWidth, height: videoHeight },
144
228
  opacity: 1.0,
145
229
  pin: "video"
146
230
  };
147
231
  }
148
232
  async initialise() {
233
+ await this.setupBug(this.cfg.defaultBug, this.cfg.defaultOrientation);
149
234
  }
150
235
  subscribe(sources) {
151
236
  this.videoSource = sources[0];
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/processor.dynamicBug/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/processor.dynamicBug/runtime.ts"],"names":[],"mappings":"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"}
@@ -6,28 +6,55 @@ function SummaryView({ state, config, sendCommand }) {
6
6
  const [bug, setBug] = (0, react_1.useState)(state.activeBug?.file ?? config.defaultBug);
7
7
  const [orientation, setOrientation] = (0, react_1.useState)(state.activeBug?.orientation ?? config.defaultOrientation);
8
8
  const [bugs, setBugs] = (0, react_1.useState)([]);
9
+ const [fileToUpload, setFileToUpload] = (0, react_1.useState)(undefined);
10
+ async function updateBugs() {
11
+ const result = await fetch('components/processor.dynamicBug/bugs');
12
+ if (result.ok && result.body) {
13
+ const bugs = await result.json();
14
+ setBugs(bugs);
15
+ }
16
+ else {
17
+ const text = await result.text();
18
+ throw new Error(text);
19
+ }
20
+ }
9
21
  (0, react_1.useEffect)(() => {
10
22
  const fn = async () => {
11
- const result = await fetch('components/processor.dynamicBug/bugs');
12
- if (result.ok && result.body) {
13
- const bugs = await result.json();
14
- setBugs(bugs);
15
- }
16
- else {
17
- const text = await result.text();
18
- throw new Error(text);
19
- }
23
+ await updateBugs();
20
24
  };
21
25
  fn().catch(console.error);
22
26
  }, []);
27
+ function onFileChange(e) {
28
+ if (e.target.files?.[0])
29
+ setFileToUpload(e.target.files[0]);
30
+ }
23
31
  return (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("h2", { children: "Controls" }), (0, jsx_runtime_1.jsx)("label", { htmlFor: "select-preview", className: "mt-2", children: "Source" }), (0, jsx_runtime_1.jsxs)("select", { id: "select-bug", className: "mt-2 node-editor-select-input", onChange: (e) => {
24
32
  setBug(e.currentTarget.value);
25
- }, children: [(0, jsx_runtime_1.jsx)("option", { selected: bug === undefined, children: "---" }), bugs.map((s, i) => (0, jsx_runtime_1.jsx)("option", { selected: bug == s, value: s, children: s }, i))] }), (0, jsx_runtime_1.jsxs)("select", { id: "select-orientation", className: "mt-2 node-editor-select-input", onChange: (e) => {
33
+ }, children: [(0, jsx_runtime_1.jsx)("option", { selected: bug === undefined, children: "---" }), (0, jsx_runtime_1.jsx)("option", { value: 'new', selected: bug === 'new', children: "New" }), bugs.map((s, i) => (0, jsx_runtime_1.jsx)("option", { selected: bug == s, value: s, children: s }, i))] }), (0, jsx_runtime_1.jsx)("form", { style: { display: bug === 'new' ? 'block' : 'none' }, onSubmit: (e) => e.preventDefault(), children: (0, jsx_runtime_1.jsx)("input", { type: "file", id: "file", name: "filename", onChange: onFileChange }) }), (0, jsx_runtime_1.jsxs)("select", { id: "select-orientation", className: "mt-2 node-editor-select-input", onChange: (e) => {
26
34
  setOrientation(e.currentTarget.value);
27
- }, children: [(0, jsx_runtime_1.jsx)("option", { selected: orientation === undefined, children: "---" }), (0, jsx_runtime_1.jsx)("option", { value: 'topleft', selected: orientation === 'topleft', children: "Top Left" }), (0, jsx_runtime_1.jsx)("option", { value: 'topright', selected: orientation === 'topright', children: "Top Right" }), (0, jsx_runtime_1.jsx)("option", { value: 'bottomleft', selected: orientation === 'bottomleft', children: "Bottom Left" }), (0, jsx_runtime_1.jsx)("option", { value: 'bottomright', selected: orientation === 'bottomright', children: "Bottom Right" })] }), (bug != state.activeBug?.file || orientation != state.activeBug?.orientation) ? (0, jsx_runtime_1.jsx)("button", { type: "button", className: "mt-2 mb-2 text-white w-full justify-center bg-primary-700 hover:bg-primary-800 focus:ring-4 focus:outline-none focus:ring-primary-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800", onClick: (e) => {
28
- e.preventDefault();
29
- sendCommand({ type: "change-bug", file: bug, orientation });
30
- }, children: "Commit" }) : (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {})] });
35
+ }, children: [(0, jsx_runtime_1.jsx)("option", { selected: orientation === undefined, children: "---" }), (0, jsx_runtime_1.jsx)("option", { value: 'topleft', selected: orientation === 'topleft', children: "Top Left" }), (0, jsx_runtime_1.jsx)("option", { value: 'topright', selected: orientation === 'topright', children: "Top Right" }), (0, jsx_runtime_1.jsx)("option", { value: 'bottomleft', selected: orientation === 'bottomleft', children: "Bottom Left" }), (0, jsx_runtime_1.jsx)("option", { value: 'bottomright', selected: orientation === 'bottomright', children: "Bottom Right" })] }), (bug != state.activeBug?.file || orientation != state.activeBug?.orientation || fileToUpload) ?
36
+ (0, jsx_runtime_1.jsx)("button", { type: "button", className: "mt-2 mb-2 text-white w-full justify-center bg-primary-700 hover:bg-primary-800 focus:ring-4 focus:outline-none focus:ring-primary-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800", onClick: async (e) => {
37
+ e.preventDefault();
38
+ if (fileToUpload && bug === 'new') {
39
+ const form = new FormData();
40
+ const url = `http://${document.location.hostname}:${config.apiPort}/bugs`;
41
+ form.append('file', fileToUpload);
42
+ await fetch(url, {
43
+ method: 'POST',
44
+ body: form
45
+ });
46
+ setTimeout(async () => {
47
+ await updateBugs();
48
+ sendCommand({ type: "change-bug", file: fileToUpload.name, orientation });
49
+ setBug(fileToUpload.name);
50
+ setFileToUpload(undefined);
51
+ return;
52
+ }, 500);
53
+ }
54
+ else {
55
+ sendCommand({ type: "change-bug", file: bug, orientation });
56
+ }
57
+ }, children: "Commit" }) : (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {})] });
31
58
  }
32
59
  exports.default = SummaryView;
33
60
  //# sourceMappingURL=summary-view.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"summary-view.js","sourceRoot":"","sources":["../../src/processor.dynamicBug/summary-view.tsx"],"names":[],"mappings":";;;AAAA,iCAA4C;AAG5C,SAAS,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAuG;IAEtJ,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,SAAS,EAAE,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;IAC3E,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,SAAS,EAAE,WAAW,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC1G,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAW,EAAE,CAAC,CAAC;IAE/C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,EAAE,GAAG,KAAK,IAAI,EAAE;YACpB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,sCAAsC,CAAC,CAAA;YAClE,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC7B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAc,CAAC;gBAC7C,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;QACH,CAAC,CAAA;QACD,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC,EAAE,EAAE,CAAC,CAAA;IAGN,OAAO,6DACL,sDAAiB,EACjB,kCAAO,OAAO,EAAC,gBAAgB,EAAC,SAAS,EAAC,MAAM,uBAAe,EAC/D,oCAAQ,EAAE,EAAC,YAAY,EAAC,SAAS,EAAC,+BAA+B,EAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;oBAChF,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;gBAC/B,CAAC,aACC,mCAAQ,QAAQ,EAAE,GAAG,KAAK,SAAS,oBAAc,EAChD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACjB,mCAAQ,QAAQ,EAAE,GAAG,IAAI,CAAC,EAAU,KAAK,EAAE,CAAC,YAAG,CAAC,IAAf,CAAC,CAAwB,CAC3D,IACM,EAET,oCAAQ,EAAE,EAAC,oBAAoB,EAAC,SAAS,EAAC,+BAA+B,EAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;oBACxF,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,KAA8B,CAAC,CAAA;gBAChE,CAAC,aACC,mCAAQ,QAAQ,EAAE,WAAW,KAAK,SAAS,oBAAc,EACzD,mCAAQ,KAAK,EAAC,SAAS,EAAC,QAAQ,EAAE,WAAW,KAAK,SAAS,yBAAmB,EAC9E,mCAAQ,KAAK,EAAC,UAAU,EAAC,QAAQ,EAAE,WAAW,KAAK,UAAU,0BAAoB,EACjF,mCAAQ,KAAK,EAAC,YAAY,EAAC,QAAQ,EAAE,WAAW,KAAK,YAAY,4BAAsB,EACvF,mCAAQ,KAAK,EAAC,aAAa,EAAC,QAAQ,EAAE,WAAW,KAAK,aAAa,6BAAuB,IACnF,EAGR,CAAC,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,IAAI,IAAI,WAAW,IAAI,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,mCAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,wQAAwQ,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;oBACvY,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,WAAW,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;gBAC9D,CAAC,uBAAiB,CAAC,CAAC,CAAC,kDAAK,IACzB,CAAA;AACL,CAAC;AAED,kBAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"summary-view.js","sourceRoot":"","sources":["../../src/processor.dynamicBug/summary-view.tsx"],"names":[],"mappings":";;;AAAA,iCAAyD;AAGzD,SAAS,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAuG;IAEtJ,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,SAAS,EAAE,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;IAC3E,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,SAAS,EAAE,WAAW,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC1G,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAW,EAAE,CAAC,CAAC;IAE/C,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,gBAAQ,EAAmB,SAAS,CAAC,CAAC;IAE9E,KAAK,UAAU,UAAU;QACvB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,sCAAsC,CAAC,CAAA;QAClE,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAc,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IAEH,CAAC;IAED,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,EAAE,GAAG,KAAK,IAAI,EAAE;YACpB,MAAM,UAAU,EAAE,CAAC;QACrB,CAAC,CAAA;QACD,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC,EAAE,EAAE,CAAC,CAAA;IAGN,SAAS,YAAY,CAAC,CAAgC;QACpD,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACrB,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,6DACL,sDAAiB,EACjB,kCAAO,OAAO,EAAC,gBAAgB,EAAC,SAAS,EAAC,MAAM,uBAAe,EAC/D,oCAAQ,EAAE,EAAC,YAAY,EAAC,SAAS,EAAC,+BAA+B,EAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;oBAChF,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;gBAC/B,CAAC,aACC,mCAAQ,QAAQ,EAAE,GAAG,KAAK,SAAS,oBAAc,EACjD,mCAAQ,KAAK,EAAC,KAAK,EAAC,QAAQ,EAAE,GAAG,KAAK,KAAK,oBAAc,EACxD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACjB,mCAAQ,QAAQ,EAAE,GAAG,IAAI,CAAC,EAAU,KAAK,EAAE,CAAC,YAAG,CAAC,IAAf,CAAC,CAAwB,CAC3D,IACM,EAET,iCAAM,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,YAC7F,kCAAO,IAAI,EAAC,MAAM,EAAC,EAAE,EAAC,MAAM,EAAC,IAAI,EAAC,UAAU,EAAC,QAAQ,EAAE,YAAY,GAAI,GACjE,EAER,oCAAQ,EAAE,EAAC,oBAAoB,EAAC,SAAS,EAAC,+BAA+B,EAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;oBACxF,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,KAA8B,CAAC,CAAA;gBAChE,CAAC,aACC,mCAAQ,QAAQ,EAAE,WAAW,KAAK,SAAS,oBAAc,EACzD,mCAAQ,KAAK,EAAC,SAAS,EAAC,QAAQ,EAAE,WAAW,KAAK,SAAS,yBAAmB,EAC9E,mCAAQ,KAAK,EAAC,UAAU,EAAC,QAAQ,EAAE,WAAW,KAAK,UAAU,0BAAoB,EACjF,mCAAQ,KAAK,EAAC,YAAY,EAAC,QAAQ,EAAE,WAAW,KAAK,YAAY,4BAAsB,EACvF,mCAAQ,KAAK,EAAC,aAAa,EAAC,QAAQ,EAAE,WAAW,KAAK,aAAa,6BAAuB,IACnF,EAEP,CAAC,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,IAAI,IAAI,WAAW,IAAI,KAAK,CAAC,SAAS,EAAE,WAAW,IAAI,YAAY,CAAC,CAAC,CAAC;gBAC7F,mCAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,wQAAwQ,EACtS,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;wBACnB,CAAC,CAAC,cAAc,EAAE,CAAC;wBAGnB,IAAI,YAAY,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;4BAClC,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAA;4BAC3B,MAAM,GAAG,GAAG,UAAU,QAAQ,CAAC,QAAQ,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,OAAO,CAAC;4BAC1E,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;4BACjC,MAAM,KAAK,CAAC,GAAG,EAAE;gCACf,MAAM,EAAE,MAAM;gCACd,IAAI,EAAE,IAAI;6BACX,CAAC,CAAA;4BAGF,UAAU,CAAC,KAAK,IAAI,EAAE;gCACpB,MAAM,UAAU,EAAE,CAAC;gCACnB,WAAW,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;gCAC1E,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gCAC1B,eAAe,CAAC,SAAS,CAAC,CAAC;gCAC3B,OAAO;4BACT,CAAC,EAAE,GAAG,CAAC,CAAA;wBAGT,CAAC;6BAAM,CAAC;4BACN,WAAW,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;wBAC9D,CAAC;oBAEH,CAAC,uBAAiB,CAAC,CAAC,CAAC,kDAAK,IAE/B,CAAA;AACL,CAAC;AAED,kBAAe,WAAW,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@norskvideo/norsk-studio-built-ins",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "clean": "rm -rf lib",
@@ -26,16 +26,21 @@
26
26
  "@norskvideo/norsk-sdk": "^1.0.360",
27
27
  "@norskvideo/norsk-studio": "^1.0.4",
28
28
  "@norskvideo/webrtc-client": "^0.1.2",
29
+ "body-parser": "^1.20.2",
30
+ "cors": "^2.8.5",
29
31
  "express": "^4.18.2",
30
- "express-ws": "^5.0.2"
32
+ "express-ws": "^5.0.2",
33
+ "multer": "^1.4.5-lts.1"
31
34
  },
32
35
  "main": "lib/index.js",
33
36
  "devDependencies": {
34
37
  "@types/chai": "^4.3.11",
38
+ "@types/cors": "^2.8.17",
35
39
  "@types/express": "^4.17.20",
36
40
  "@types/express-ws": "^3.0.3",
37
41
  "@types/hls-parser": "^0.8.7",
38
42
  "@types/mocha": "^10.0.6",
43
+ "@types/multer": "^1.4.11",
39
44
  "@types/node-fetch": "^2.6.9",
40
45
  "@types/react": "^18.2.33",
41
46
  "@types/react-dom": "^18.2.14",