@supraio/client-daemon-js 1.0.0-mzupdateexptouch.448 → 1.0.0-tsfixstreamgeometrypanic.474

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/screen.js CHANGED
@@ -10298,12 +10298,12 @@
10298
10298
  if (process2["initializeTTYs"]) {
10299
10299
  process2["initializeTTYs"]();
10300
10300
  }
10301
- function install2(obj) {
10301
+ function install(obj) {
10302
10302
  obj.Buffer = Buffer2;
10303
10303
  obj.process = process2;
10304
10304
  var oldRequire = obj.require ? obj.require : null;
10305
10305
  obj.require = function(arg) {
10306
- var rv = BFSRequire(arg);
10306
+ var rv = BFSRequire2(arg);
10307
10307
  if (!rv) {
10308
10308
  return oldRequire.apply(null, Array.prototype.slice.call(arguments, 0));
10309
10309
  } else {
@@ -10314,7 +10314,7 @@
10314
10314
  function registerFileSystem(name, fs2) {
10315
10315
  Backends[name] = fs2;
10316
10316
  }
10317
- function BFSRequire(module4) {
10317
+ function BFSRequire2(module4) {
10318
10318
  switch (module4) {
10319
10319
  case "fs":
10320
10320
  return _fsMock;
@@ -10429,9 +10429,9 @@
10429
10429
  };
10430
10430
  }
10431
10431
  }
10432
- exports2.install = install2;
10432
+ exports2.install = install;
10433
10433
  exports2.registerFileSystem = registerFileSystem;
10434
- exports2.BFSRequire = BFSRequire;
10434
+ exports2.BFSRequire = BFSRequire2;
10435
10435
  exports2.initialize = initialize;
10436
10436
  exports2.configure = configure2;
10437
10437
  exports2.getFileSystem = getFileSystem;
@@ -17214,6 +17214,37 @@
17214
17214
  }
17215
17215
  });
17216
17216
 
17217
+ // node_modules/@signageos/nacl-decoder/dist/NaClDecoder/geometry.js
17218
+ var require_geometry = __commonJS({
17219
+ "node_modules/@signageos/nacl-decoder/dist/NaClDecoder/geometry.js"(exports) {
17220
+ "use strict";
17221
+ var __assign = exports && exports.__assign || function() {
17222
+ __assign = Object.assign || function(t) {
17223
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
17224
+ s = arguments[i];
17225
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
17226
+ t[p] = s[p];
17227
+ }
17228
+ return t;
17229
+ };
17230
+ return __assign.apply(this, arguments);
17231
+ };
17232
+ Object.defineProperty(exports, "__esModule", { value: true });
17233
+ exports.normalizeGeometry = normalizeGeometry2;
17234
+ function normalizeGeometry2(geometry) {
17235
+ if (!Number.isFinite(geometry.x) || !Number.isFinite(geometry.y) || !Number.isFinite(geometry.width) || !Number.isFinite(geometry.height)) {
17236
+ throw new RangeError("NaCl module geometry values must be finite.");
17237
+ }
17238
+ var width = Math.floor(geometry.width);
17239
+ var height = Math.floor(geometry.height);
17240
+ if (width <= 0 || height <= 0) {
17241
+ throw new RangeError("NaCl module geometry width and height must be positive.");
17242
+ }
17243
+ return __assign(__assign({}, geometry), { width, height });
17244
+ }
17245
+ }
17246
+ });
17247
+
17217
17248
  // node_modules/@signageos/nacl-decoder/dist/NaClDecoder/module.js
17218
17249
  var require_module = __commonJS({
17219
17250
  "node_modules/@signageos/nacl-decoder/dist/NaClDecoder/module.js"(exports) {
@@ -17221,14 +17252,17 @@
17221
17252
  Object.defineProperty(exports, "__esModule", { value: true });
17222
17253
  exports.createNaClModule = createNaClModule;
17223
17254
  exports.removeNaClModule = removeNaClModule;
17255
+ var geometry_1 = require_geometry();
17224
17256
  function handleLoad(event) {
17225
17257
  console.log("nacl load", event);
17226
17258
  }
17227
17259
  function handleCrash(event) {
17228
17260
  console.log("nacl crash", event);
17229
17261
  }
17230
- function createNaClModule(handleMessage) {
17231
- var _a, _b;
17262
+ var messageListeners = /* @__PURE__ */ new WeakMap();
17263
+ function createNaClModule(handleMessage, geometry) {
17264
+ var _a, _b, _c, _d;
17265
+ var normalizedGeometry = geometry ? (0, geometry_1.normalizeGeometry)(geometry) : void 0;
17232
17266
  var listenerEl = document.createElement("div");
17233
17267
  listenerEl.setAttribute("id", "listener");
17234
17268
  listenerEl.addEventListener("message", handleMessage, true);
@@ -17238,22 +17272,34 @@
17238
17272
  var baseHref = (_b = (_a = document.getElementsByTagName("base")[0]) === null || _a === void 0 ? void 0 : _a.href) !== null && _b !== void 0 ? _b : location.href;
17239
17273
  var nmpPath = new URL("nacl-decoder.nmf", baseHref).href;
17240
17274
  var naclModuleEl = document.createElement("embed");
17241
- naclModuleEl.setAttribute("width", "".concat(window.screen.width));
17242
- naclModuleEl.setAttribute("height", "".concat(window.screen.height));
17275
+ var width = (_c = normalizedGeometry === null || normalizedGeometry === void 0 ? void 0 : normalizedGeometry.width) !== null && _c !== void 0 ? _c : window.screen.width;
17276
+ var height = (_d = normalizedGeometry === null || normalizedGeometry === void 0 ? void 0 : normalizedGeometry.height) !== null && _d !== void 0 ? _d : window.screen.height;
17277
+ naclModuleEl.setAttribute("width", "".concat(width));
17278
+ naclModuleEl.setAttribute("height", "".concat(height));
17279
+ if (normalizedGeometry) {
17280
+ naclModuleEl.style.position = "absolute";
17281
+ naclModuleEl.style.left = "".concat(normalizedGeometry.x, "px");
17282
+ naclModuleEl.style.top = "".concat(normalizedGeometry.y, "px");
17283
+ }
17243
17284
  naclModuleEl.setAttribute("src", nmpPath);
17244
17285
  naclModuleEl.setAttribute("type", "application/x-nacl");
17245
17286
  naclModuleEl.setAttribute("id", "nacl_module");
17246
17287
  listenerEl.appendChild(naclModuleEl);
17288
+ messageListeners.set(naclModuleEl, handleMessage);
17247
17289
  return naclModuleEl;
17248
17290
  }
17249
17291
  function removeNaClModule(naclModuleEl) {
17250
17292
  var listenerEl = naclModuleEl.parentElement;
17251
17293
  if (listenerEl) {
17252
- listenerEl.removeEventListener("message", handleLoad, true);
17294
+ var handleMessage = messageListeners.get(naclModuleEl);
17295
+ if (handleMessage) {
17296
+ listenerEl.removeEventListener("message", handleMessage, true);
17297
+ }
17253
17298
  listenerEl.removeEventListener("load", handleLoad, true);
17254
17299
  listenerEl.removeEventListener("crash", handleCrash, true);
17255
17300
  listenerEl.remove();
17256
17301
  }
17302
+ messageListeners.delete(naclModuleEl);
17257
17303
  naclModuleEl.remove();
17258
17304
  }
17259
17305
  }
@@ -17977,14 +18023,17 @@
17977
18023
  var NaClDecoder = (
17978
18024
  /** @class */
17979
18025
  function() {
17980
- function NaClDecoder2(messageSender, naclModuleEl) {
18026
+ function NaClDecoder2(messageSender, naclModuleEl, onDestroy) {
17981
18027
  this.messageSender = messageSender;
17982
18028
  this.naclModuleEl = naclModuleEl;
18029
+ this.onDestroy = onDestroy;
17983
18030
  }
17984
18031
  NaClDecoder2.prototype.destroy = function() {
17985
18032
  return __awaiter(this, void 0, void 0, function() {
17986
- return __generator(this, function(_a) {
18033
+ var _a;
18034
+ return __generator(this, function(_b) {
17987
18035
  (0, module_1.removeNaClModule)(this.naclModuleEl);
18036
+ (_a = this.onDestroy) === null || _a === void 0 ? void 0 : _a.call(this);
17988
18037
  return [
17989
18038
  2
17990
18039
  /*return*/
@@ -18273,6 +18322,25 @@
18273
18322
  var require_dist = __commonJS({
18274
18323
  "node_modules/@signageos/nacl-decoder/dist/index.js"(exports) {
18275
18324
  "use strict";
18325
+ var __extends = exports && exports.__extends || /* @__PURE__ */ function() {
18326
+ var extendStatics = function(d, b) {
18327
+ extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
18328
+ d2.__proto__ = b2;
18329
+ } || function(d2, b2) {
18330
+ for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p];
18331
+ };
18332
+ return extendStatics(d, b);
18333
+ };
18334
+ return function(d, b) {
18335
+ if (typeof b !== "function" && b !== null)
18336
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
18337
+ extendStatics(d, b);
18338
+ function __() {
18339
+ this.constructor = d;
18340
+ }
18341
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
18342
+ };
18343
+ }();
18276
18344
  var __assign = exports && exports.__assign || function() {
18277
18345
  __assign = Object.assign || function(t) {
18278
18346
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -18284,6 +18352,102 @@
18284
18352
  };
18285
18353
  return __assign.apply(this, arguments);
18286
18354
  };
18355
+ var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) {
18356
+ function adopt(value) {
18357
+ return value instanceof P ? value : new P(function(resolve) {
18358
+ resolve(value);
18359
+ });
18360
+ }
18361
+ return new (P || (P = Promise))(function(resolve, reject) {
18362
+ function fulfilled(value) {
18363
+ try {
18364
+ step(generator.next(value));
18365
+ } catch (e) {
18366
+ reject(e);
18367
+ }
18368
+ }
18369
+ function rejected(value) {
18370
+ try {
18371
+ step(generator["throw"](value));
18372
+ } catch (e) {
18373
+ reject(e);
18374
+ }
18375
+ }
18376
+ function step(result) {
18377
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
18378
+ }
18379
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
18380
+ });
18381
+ };
18382
+ var __generator = exports && exports.__generator || function(thisArg, body) {
18383
+ var _ = { label: 0, sent: function() {
18384
+ if (t[0] & 1) throw t[1];
18385
+ return t[1];
18386
+ }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
18387
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() {
18388
+ return this;
18389
+ }), g;
18390
+ function verb(n) {
18391
+ return function(v) {
18392
+ return step([n, v]);
18393
+ };
18394
+ }
18395
+ function step(op) {
18396
+ if (f) throw new TypeError("Generator is already executing.");
18397
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18398
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18399
+ if (y = 0, t) op = [op[0] & 2, t.value];
18400
+ switch (op[0]) {
18401
+ case 0:
18402
+ case 1:
18403
+ t = op;
18404
+ break;
18405
+ case 4:
18406
+ _.label++;
18407
+ return { value: op[1], done: false };
18408
+ case 5:
18409
+ _.label++;
18410
+ y = op[1];
18411
+ op = [0];
18412
+ continue;
18413
+ case 7:
18414
+ op = _.ops.pop();
18415
+ _.trys.pop();
18416
+ continue;
18417
+ default:
18418
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
18419
+ _ = 0;
18420
+ continue;
18421
+ }
18422
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
18423
+ _.label = op[1];
18424
+ break;
18425
+ }
18426
+ if (op[0] === 6 && _.label < t[1]) {
18427
+ _.label = t[1];
18428
+ t = op;
18429
+ break;
18430
+ }
18431
+ if (t && _.label < t[2]) {
18432
+ _.label = t[2];
18433
+ _.ops.push(op);
18434
+ break;
18435
+ }
18436
+ if (t[2]) _.ops.pop();
18437
+ _.trys.pop();
18438
+ continue;
18439
+ }
18440
+ op = body.call(thisArg, _);
18441
+ } catch (e) {
18442
+ op = [6, e];
18443
+ y = 0;
18444
+ } finally {
18445
+ f = t = 0;
18446
+ }
18447
+ if (op[0] & 5) throw op[1];
18448
+ return { value: op[0] ? op[1] : void 0, done: true };
18449
+ }
18450
+ };
18287
18451
  Object.defineProperty(exports, "__esModule", { value: true });
18288
18452
  exports.NaClTCPStreamConnection = exports.NaClTCPStream = exports.NaClTCPPacketConnection = exports.NaClTCPPacket = exports.NaClFrameCollector = exports.VideoProfile = exports.ResultStatus = exports.HWAcceleration = exports.NaClDecoder = void 0;
18289
18453
  exports.isNaClSupported = isNaClSupported3;
@@ -18326,6 +18490,29 @@
18326
18490
  var DEFAULT_OPTIONS = {
18327
18491
  timeoutMs: 1e3
18328
18492
  };
18493
+ var RuntimeOwnedNaClDecoder = (
18494
+ /** @class */
18495
+ function(_super) {
18496
+ __extends(RuntimeOwnedNaClDecoder2, _super);
18497
+ function RuntimeOwnedNaClDecoder2(messageSender, naclModuleEl, releaseRuntime) {
18498
+ var _this = _super.call(this, messageSender, naclModuleEl) || this;
18499
+ _this.releaseRuntime = releaseRuntime;
18500
+ return _this;
18501
+ }
18502
+ RuntimeOwnedNaClDecoder2.prototype.destroy = function() {
18503
+ return __awaiter(this, void 0, void 0, function() {
18504
+ return __generator(this, function(_a) {
18505
+ this.releaseRuntime();
18506
+ return [
18507
+ 2
18508
+ /*return*/
18509
+ ];
18510
+ });
18511
+ });
18512
+ };
18513
+ return RuntimeOwnedNaClDecoder2;
18514
+ }(naclDecoder_1.NaClDecoder)
18515
+ );
18329
18516
  var naclRuntime = null;
18330
18517
  function isNaClSupported3() {
18331
18518
  return (
@@ -18338,26 +18525,48 @@
18338
18525
  if (!isNaClSupported3()) {
18339
18526
  throw new Error("NaCl is not supported in this browser.");
18340
18527
  }
18341
- var runtime = getNaClRuntime(requiredOptions.timeoutMs);
18342
- return new naclDecoder_1.NaClDecoder(runtime.messageSender, runtime.naclModuleEl);
18528
+ var _a = acquireNaClRuntime(requiredOptions.timeoutMs, options === null || options === void 0 ? void 0 : options.geometry), runtime = _a.runtime, release = _a.release;
18529
+ return new RuntimeOwnedNaClDecoder(runtime.messageSender, runtime.naclModuleEl, release);
18343
18530
  }
18344
18531
  function createNaClTCP2(options) {
18345
18532
  var decoder = createNaClDecoder2(options);
18346
- return decoder.createTCP();
18533
+ return __assign(__assign({}, decoder.createTCP()), { destroy: function() {
18534
+ return decoder.destroy();
18535
+ } });
18347
18536
  }
18348
- function getNaClRuntime(timeoutMs) {
18349
- if (naclRuntime) {
18350
- return naclRuntime;
18537
+ function acquireNaClRuntime(timeoutMs, geometry) {
18538
+ var runtime = naclRuntime;
18539
+ if (!runtime) {
18540
+ var messageListeners = (0, messageListeners_1.createMessageListeners)();
18541
+ var messageReceiver = new messageReceiver_1.MessageReceiver(messageListeners);
18542
+ var naclModuleEl = (0, module_1.createNaClModule)(messageReceiver.handleMessage.bind(messageReceiver), geometry);
18543
+ var messageSender = new messageSender_1.MessageSender(naclModuleEl, messageListeners, timeoutMs);
18544
+ runtime = {
18545
+ messageSender,
18546
+ naclModuleEl,
18547
+ ownerCount: 0
18548
+ };
18549
+ naclRuntime = runtime;
18351
18550
  }
18352
- var messageListeners = (0, messageListeners_1.createMessageListeners)();
18353
- var messageReceiver = new messageReceiver_1.MessageReceiver(messageListeners);
18354
- var naclModuleEl = (0, module_1.createNaClModule)(messageReceiver.handleMessage.bind(messageReceiver));
18355
- var messageSender = new messageSender_1.MessageSender(naclModuleEl, messageListeners, timeoutMs);
18356
- naclRuntime = {
18357
- messageSender,
18358
- naclModuleEl
18551
+ runtime.ownerCount += 1;
18552
+ var released = false;
18553
+ return {
18554
+ runtime,
18555
+ release: function() {
18556
+ if (released) {
18557
+ return;
18558
+ }
18559
+ released = true;
18560
+ runtime.ownerCount -= 1;
18561
+ if (runtime.ownerCount > 0) {
18562
+ return;
18563
+ }
18564
+ (0, module_1.removeNaClModule)(runtime.naclModuleEl);
18565
+ if (naclRuntime === runtime) {
18566
+ naclRuntime = null;
18567
+ }
18568
+ }
18359
18569
  };
18360
- return naclRuntime;
18361
18570
  }
18362
18571
  }
18363
18572
  });
@@ -18384,6 +18593,36 @@
18384
18593
  }
18385
18594
  });
18386
18595
 
18596
+ // node_modules/@signageos/samsung-wasm-decoder/dist/WasmDecoder/videoElementGeometry.js
18597
+ var require_videoElementGeometry = __commonJS({
18598
+ "node_modules/@signageos/samsung-wasm-decoder/dist/WasmDecoder/videoElementGeometry.js"(exports) {
18599
+ "use strict";
18600
+ Object.defineProperty(exports, "__esModule", { value: true });
18601
+ exports.normalizeVideoElementGeometry = normalizeVideoElementGeometry;
18602
+ function normalizeDimension(name, value) {
18603
+ var normalizedValue = Math.floor(value);
18604
+ if (!Number.isFinite(value) || normalizedValue <= 0) {
18605
+ throw new RangeError("".concat(name, " must be a finite positive number."));
18606
+ }
18607
+ return normalizedValue;
18608
+ }
18609
+ function normalizeCoordinate(name, value) {
18610
+ if (!Number.isFinite(value)) {
18611
+ throw new RangeError("".concat(name, " must be a finite number."));
18612
+ }
18613
+ return value;
18614
+ }
18615
+ function normalizeVideoElementGeometry(geometry) {
18616
+ return {
18617
+ x: normalizeCoordinate("x", geometry.x),
18618
+ y: normalizeCoordinate("y", geometry.y),
18619
+ width: normalizeDimension("width", geometry.width),
18620
+ height: normalizeDimension("height", geometry.height)
18621
+ };
18622
+ }
18623
+ }
18624
+ });
18625
+
18387
18626
  // node_modules/@signageos/samsung-wasm-decoder/dist/dom/script.js
18388
18627
  var require_script = __commonJS({
18389
18628
  "node_modules/@signageos/samsung-wasm-decoder/dist/dom/script.js"(exports) {
@@ -19668,6 +19907,7 @@
19668
19907
  Object.defineProperty(exports, "__esModule", { value: true });
19669
19908
  exports.SamsungWasmDecoder = void 0;
19670
19909
  var videoDecoder_1 = require_videoDecoder2();
19910
+ var videoElementGeometry_1 = require_videoElementGeometry();
19671
19911
  var wasmLoader_1 = require_wasmLoader();
19672
19912
  var wasmTCP_1 = require_wasmTCP();
19673
19913
  function detectKeyFrameAnnexB(bytes) {
@@ -19698,19 +19938,25 @@
19698
19938
  }
19699
19939
  return false;
19700
19940
  }
19701
- function ensureVideoElement(videoElementId) {
19941
+ function ensureVideoElement(videoElementId, geometry) {
19942
+ var normalizedGeometry = (0, videoElementGeometry_1.normalizeVideoElementGeometry)(geometry !== null && geometry !== void 0 ? geometry : {
19943
+ x: 0,
19944
+ y: 0,
19945
+ width: screen.width,
19946
+ height: screen.height
19947
+ });
19702
19948
  var el = document.getElementById(videoElementId);
19703
19949
  if (!el) {
19704
19950
  el = document.createElement("video");
19705
19951
  el.id = videoElementId;
19706
- el.style.position = "absolute";
19707
- el.style.top = "0";
19708
- el.style.left = "0";
19709
- el.style.width = "1920px";
19710
- el.style.height = "1080px";
19711
19952
  el.style.backgroundColor = "#000";
19712
19953
  document.body.appendChild(el);
19713
19954
  }
19955
+ el.style.position = "absolute";
19956
+ el.style.top = "".concat(normalizedGeometry.y, "px");
19957
+ el.style.left = "".concat(normalizedGeometry.x, "px");
19958
+ el.style.width = "".concat(normalizedGeometry.width, "px");
19959
+ el.style.height = "".concat(normalizedGeometry.height, "px");
19714
19960
  el.autoplay = true;
19715
19961
  el.muted = true;
19716
19962
  el.playsInline = true;
@@ -19719,14 +19965,14 @@
19719
19965
  var SamsungWasmDecoder2 = (
19720
19966
  /** @class */
19721
19967
  function() {
19722
- function SamsungWasmDecoder3(videoElementId) {
19968
+ function SamsungWasmDecoder3(videoElementId, geometry) {
19723
19969
  this.videoElementId = videoElementId;
19724
19970
  this.initialized = false;
19725
19971
  this.destroyed = false;
19726
19972
  this.decoderHandle = 0;
19727
19973
  this.ptsSeconds = 0;
19728
19974
  this.frameDurationSeconds = 0;
19729
- this.videoElement = ensureVideoElement(videoElementId);
19975
+ this.videoElement = ensureVideoElement(videoElementId, geometry);
19730
19976
  }
19731
19977
  SamsungWasmDecoder3.prototype.destroy = function() {
19732
19978
  return __awaiter(this, void 0, void 0, function() {
@@ -20099,7 +20345,7 @@
20099
20345
  return [4, (0, wasmLoader_1.loadWasmModule)()];
20100
20346
  case 1:
20101
20347
  _a.sent();
20102
- return [2, new wasmDecoder_1.SamsungWasmDecoder(options.videoElementId)];
20348
+ return [2, new wasmDecoder_1.SamsungWasmDecoder(options.videoElementId, options.geometry)];
20103
20349
  }
20104
20350
  });
20105
20351
  });
@@ -20401,7 +20647,7 @@
20401
20647
  options: {}
20402
20648
  };
20403
20649
  async function initBrowserFS() {
20404
- BrowserFS.install(window);
20650
+ installBrowserFSGlobals();
20405
20651
  await new Promise((resolve, reject) => {
20406
20652
  BrowserFS.configure(config, (error) => {
20407
20653
  if (error) {
@@ -20415,6 +20661,73 @@
20415
20661
  shim(fs);
20416
20662
  return fs;
20417
20663
  }
20664
+ var installedBrowserFSRequire;
20665
+ function installBrowserFSGlobals() {
20666
+ const browserFSProcess = BrowserFS.BFSRequire("process");
20667
+ if (!window.process) {
20668
+ Object.defineProperty(window, "process", {
20669
+ configurable: true,
20670
+ enumerable: true,
20671
+ value: {},
20672
+ writable: true
20673
+ });
20674
+ }
20675
+ const processPolyfills = /* @__PURE__ */ new Map([
20676
+ ["browser", true],
20677
+ ["env", {}],
20678
+ ["getuid", browserFSProcess.getuid.bind(browserFSProcess)],
20679
+ ["getgid", browserFSProcess.getgid.bind(browserFSProcess)],
20680
+ ["geteuid", browserFSProcess.getuid.bind(browserFSProcess)],
20681
+ ["getegid", browserFSProcess.getgid.bind(browserFSProcess)],
20682
+ ["getgroups", () => {
20683
+ throw createNotImplementedError();
20684
+ }],
20685
+ ["pid", browserFSProcess.pid],
20686
+ ["ppid", -1],
20687
+ ["umask", browserFSProcess.umask.bind(browserFSProcess)],
20688
+ ["cwd", browserFSProcess.cwd.bind(browserFSProcess)],
20689
+ ["chdir", browserFSProcess.chdir.bind(browserFSProcess)]
20690
+ ]);
20691
+ for (const [property, value] of processPolyfills) {
20692
+ if (Reflect.get(window.process, property) === void 0) {
20693
+ Object.defineProperty(window.process, property, {
20694
+ configurable: true,
20695
+ value,
20696
+ writable: true
20697
+ });
20698
+ }
20699
+ }
20700
+ if (!installedBrowserFSRequire) {
20701
+ const previousRequire = window.require;
20702
+ installedBrowserFSRequire = (moduleName) => {
20703
+ const browserFSModule = BrowserFS.BFSRequire(moduleName);
20704
+ if (browserFSModule) {
20705
+ return browserFSModule;
20706
+ }
20707
+ if (previousRequire) {
20708
+ return previousRequire(moduleName);
20709
+ }
20710
+ throw new Error(`Cannot find module '${moduleName}'`);
20711
+ };
20712
+ }
20713
+ Object.defineProperty(window, "Buffer", {
20714
+ configurable: true,
20715
+ enumerable: true,
20716
+ value: BrowserFS.BFSRequire("buffer").Buffer,
20717
+ writable: true
20718
+ });
20719
+ Object.defineProperty(window, "require", {
20720
+ configurable: true,
20721
+ enumerable: true,
20722
+ value: installedBrowserFSRequire,
20723
+ writable: true
20724
+ });
20725
+ }
20726
+ function createNotImplementedError() {
20727
+ const error = new Error("not implemented");
20728
+ Object.defineProperty(error, "code", { value: "ENOSYS" });
20729
+ return error;
20730
+ }
20418
20731
  function getStringFlagsByNumber(fs, origFlags) {
20419
20732
  if ((origFlags & (fs.constants.O_APPEND | fs.constants.O_CREAT)) !== 0) {
20420
20733
  return "a";
@@ -20636,9 +20949,13 @@
20636
20949
 
20637
20950
  // screen/nacldecoder.ts
20638
20951
  var import_nacl_decoder2 = __toESM(require_dist());
20639
- function initNaCLDecoder() {
20952
+ function initNaCLDecoder(options) {
20640
20953
  if ((0, import_nacl_decoder2.isNaClSupported)()) {
20641
- window.createNaClDecoder = import_nacl_decoder2.createNaClDecoder;
20954
+ const geometry = options == null ? void 0 : options.geometry;
20955
+ window.createNaClDecoder = (decoderOptions) => {
20956
+ const optionsWithGeometry = { geometry, ...decoderOptions };
20957
+ return (0, import_nacl_decoder2.createNaClDecoder)(optionsWithGeometry);
20958
+ };
20642
20959
  }
20643
20960
  }
20644
20961
 
@@ -20803,6 +21120,10 @@ self.onmessage = function(event) {
20803
21120
  self.postMessage({ type: 'write', id: message.id, bytes: message.data.byteLength });
20804
21121
  } else if (message.type === 'close') {
20805
21122
  closed = true;
21123
+ if (pendingRead) {
21124
+ postError(pendingRead, 'WebSocket closed');
21125
+ pendingRead = null;
21126
+ }
20806
21127
  if (socket) {
20807
21128
  socket.close(1000, 'Closed by client');
20808
21129
  }
@@ -20869,8 +21190,13 @@ self.onmessage = function(event) {
20869
21190
  write: (data) => ready.then(() => request("write", { data }, [data])),
20870
21191
  close: async () => {
20871
21192
  await ready.catch(() => void 0);
20872
- await request("close");
20873
- worker.terminate();
21193
+ try {
21194
+ await request("close");
21195
+ } finally {
21196
+ pending.forEach(({ reject }) => reject(new Error("WebSocket worker closed")));
21197
+ pending.clear();
21198
+ worker.terminate();
21199
+ }
20874
21200
  }
20875
21201
  };
20876
21202
  };
@@ -20886,14 +21212,41 @@ self.onmessage = function(event) {
20886
21212
  var import_videoDecoder = __toESM(require_videoDecoder2());
20887
21213
  async function initSamsungWasmDecoder(options) {
20888
21214
  if ((0, import_samsung_wasm_decoder2.isSamsungWasmSupported)()) {
20889
- window.samsungWasmDecoder = await (0, import_samsung_wasm_decoder2.createSamsungWasmDecoder)({
20890
- videoElementId: "samsung-wasm-video"
20891
- });
21215
+ const decoderOptions = {
21216
+ videoElementId: "samsung-wasm-video",
21217
+ geometry: options.geometry
21218
+ };
21219
+ window.samsungWasmDecoder = await (0, import_samsung_wasm_decoder2.createSamsungWasmDecoder)(decoderOptions);
20892
21220
  const latencyMode = options.interactive ? import_videoDecoder.LatencyMode.UltraLow : import_videoDecoder.LatencyMode.Low;
20893
21221
  await window.samsungWasmDecoder.initialize({ latencyMode });
20894
21222
  }
20895
21223
  }
20896
21224
 
21225
+ // screen/options.ts
21226
+ var MIN_GEOMETRY_COORDINATE = -2147483648;
21227
+ var MAX_GEOMETRY_VALUE = 2147483647;
21228
+ function normalizeGeometry(geometry) {
21229
+ if (geometry === void 0) {
21230
+ return void 0;
21231
+ }
21232
+ if (!Number.isFinite(geometry.x) || !Number.isFinite(geometry.y)) {
21233
+ throw new RangeError("Geometry x and y must be finite CSS pixel coordinates");
21234
+ }
21235
+ const x = Math.floor(geometry.x);
21236
+ const y = Math.floor(geometry.y);
21237
+ const width = Math.floor(geometry.width);
21238
+ const height = Math.floor(geometry.height);
21239
+ if (x < MIN_GEOMETRY_COORDINATE || x > MAX_GEOMETRY_VALUE || y < MIN_GEOMETRY_COORDINATE || y > MAX_GEOMETRY_VALUE) {
21240
+ throw new RangeError("Geometry x and y must fit signed 32-bit CSS pixel coordinates");
21241
+ }
21242
+ if (!Number.isFinite(geometry.width) || !Number.isFinite(geometry.height) || width < 1 || height < 1 || width > MAX_GEOMETRY_VALUE || height > MAX_GEOMETRY_VALUE) {
21243
+ throw new RangeError(
21244
+ "Geometry width and height must floor to positive signed 32-bit CSS pixels"
21245
+ );
21246
+ }
21247
+ return { x, y, width, height };
21248
+ }
21249
+
20897
21250
  // screen/shared.ts
20898
21251
  var import_querystring = __toESM(require_querystring());
20899
21252
  function parseQueryOptions() {
@@ -20943,6 +21296,21 @@ self.onmessage = function(event) {
20943
21296
  }
20944
21297
  options.forceScreenSize = { width, height };
20945
21298
  }
21299
+ if (typeof params.geometry === "string" && params.geometry !== "") {
21300
+ const geometryParts = params.geometry.split(",");
21301
+ if (geometryParts.length !== 4) {
21302
+ throw new Error(`Invalid geometry query param, expected "x,y,width,height"`);
21303
+ }
21304
+ const [x, y, width, height] = geometryParts.map(Number);
21305
+ if (!Number.isFinite(x) || !Number.isFinite(y)) {
21306
+ throw new Error(`Invalid geometry query param`);
21307
+ }
21308
+ try {
21309
+ options.geometry = normalizeGeometry({ x, y, width, height });
21310
+ } catch {
21311
+ throw new Error(`Invalid geometry query param`);
21312
+ }
21313
+ }
20946
21314
  const encodingPreferences = {};
20947
21315
  if (params.preferredPreset) {
20948
21316
  encodingPreferences.preferredPreset = params.preferredPreset;
@@ -20977,15 +21345,18 @@ self.onmessage = function(event) {
20977
21345
  options.clientSecret,
20978
21346
  options.secure ? "1" : "0",
20979
21347
  options.forceScreenSize ? `${options.forceScreenSize.width}x${options.forceScreenSize.height}` : "",
20980
- encodingPrefsJson
21348
+ encodingPrefsJson,
21349
+ options.geometry ? JSON.stringify(normalizeGeometry(options.geometry)) : ""
20981
21350
  ];
20982
21351
  }
20983
21352
 
20984
21353
  // screen/plain.ts
20985
- var SCREEN_JS_URL = "supra-client-screen.js?v=1.0.0-mzupdateexptouch.448";
21354
+ var SCREEN_JS_URL = "supra-client-screen.js?v=1.0.0-tsfixstreamgeometrypanic.474";
20986
21355
  async function startPlainScreen(options) {
21356
+ console.log("[Supra screen plain] initialization begin");
20987
21357
  options = options != null ? options : parseQueryOptions();
20988
- initNaCLDecoder();
21358
+ options = { ...options, geometry: normalizeGeometry(options.geometry) };
21359
+ initNaCLDecoder(options);
20989
21360
  initWorkerFrameConnection(options.netInWorker === true);
20990
21361
  await initNaClTCP();
20991
21362
  await initSamsungWasmTCP();
@@ -20994,8 +21365,19 @@ self.onmessage = function(event) {
20994
21365
  window.fs = fs;
20995
21366
  process.argv = ["go", ...getGoArgv(SCREEN_JS_URL, options)];
20996
21367
  Object.assign(process.env, getGoEnv());
21368
+ console.log("[Supra screen plain] script injection begin");
20997
21369
  await injectScript(SCREEN_JS_URL);
20998
- await new Promise(() => void 0);
21370
+ console.log("[Supra screen plain] script injection complete; waiting for close");
21371
+ await new Promise((resolve) => {
21372
+ const interval = setInterval(() => {
21373
+ var _a;
21374
+ if (((_a = window.__supra) == null ? void 0 : _a.screenStopCompleted) === true) {
21375
+ clearInterval(interval);
21376
+ console.log("[Supra screen plain] lifecycle complete");
21377
+ resolve();
21378
+ }
21379
+ }, 500);
21380
+ });
20999
21381
  }
21000
21382
 
21001
21383
  // screen/h264decoder.ts
@@ -21012,23 +21394,57 @@ self.onmessage = function(event) {
21012
21394
  }
21013
21395
 
21014
21396
  // screen/wasm.ts
21015
- var SCREEN_WASM_URL = "supra-client-screen.wasm?v=1.0.0-mzupdateexptouch.448";
21397
+ var SCREEN_WASM_URL = "supra-client-screen.wasm?v=1.0.0-tsfixstreamgeometrypanic.474";
21398
+ async function initializePhase(name, initialize) {
21399
+ const startedAt = Date.now();
21400
+ console.log(`[Supra screen WASM] ${name} begin`);
21401
+ try {
21402
+ const result = await initialize();
21403
+ console.log(`[Supra screen WASM] ${name} complete`, {
21404
+ durationMs: Date.now() - startedAt
21405
+ });
21406
+ return result;
21407
+ } catch (error) {
21408
+ console.error(`[Supra screen WASM] ${name} failed`, {
21409
+ durationMs: Date.now() - startedAt,
21410
+ error
21411
+ });
21412
+ throw error;
21413
+ }
21414
+ }
21016
21415
  async function startWasmScreen(options) {
21017
- options = options != null ? options : parseQueryOptions();
21018
- initWorkerFrameConnection(options.netInWorker === true);
21019
- await initSamsungWasmTCP();
21020
- await initSamsungWasmDecoder(options);
21021
- await initH264Decoder();
21022
- await initGoEnvironment();
21023
- await startGoScreen(options);
21416
+ console.log("[Supra screen WASM] initialization begin");
21417
+ const initializedOptions = await initializePhase("options initialization", () => {
21418
+ const parsedOptions = options != null ? options : parseQueryOptions();
21419
+ return { ...parsedOptions, geometry: normalizeGeometry(parsedOptions.geometry) };
21420
+ });
21421
+ await initializePhase(
21422
+ "worker frame connection initialization",
21423
+ () => initWorkerFrameConnection(initializedOptions.netInWorker === true)
21424
+ );
21425
+ await initializePhase("Samsung WASM TCP initialization", initSamsungWasmTCP);
21426
+ await initializePhase("Samsung WASM decoder initialization", () => initSamsungWasmDecoder(initializedOptions));
21427
+ await initializePhase("H264 decoder initialization", initH264Decoder);
21428
+ await initializePhase("Go environment initialization", initGoEnvironment);
21429
+ console.log("[Supra screen WASM] initialization complete");
21430
+ await startGoScreen(initializedOptions);
21431
+ console.log("[Supra screen WASM] lifecycle complete");
21024
21432
  }
21025
21433
  async function startGoScreen(options) {
21434
+ console.log("[Supra screen WASM] instantiate begin");
21026
21435
  const go = new window.Go();
21027
21436
  go.h264 = window.h264Decoder.memory;
21028
21437
  const result = await WebAssembly.instantiateStreaming(fetch(SCREEN_WASM_URL), go.importObject);
21438
+ console.log("[Supra screen WASM] instantiate complete");
21029
21439
  go.env = getGoEnv();
21030
21440
  go.argv = getGoArgv(SCREEN_WASM_URL, options);
21441
+ if (window.__supra) {
21442
+ window.__supra.screenStopped = false;
21443
+ window.__supra.screenStopCompleted = false;
21444
+ }
21445
+ console.log("[Supra screen WASM] Go run begin");
21031
21446
  await go.run(result.instance);
21447
+ console.log("[Supra screen WASM] Go run complete");
21032
21448
  }
21033
21449
 
21034
21450
  // sdk.ts
@@ -21049,13 +21465,19 @@ self.onmessage = function(event) {
21049
21465
  ev.returnValue = "Are you sure you want to leave?";
21050
21466
  });
21051
21467
  window.addEventListener("load", async () => {
21468
+ var _a;
21052
21469
  try {
21053
21470
  await startScreen();
21471
+ if (window.__supra) {
21472
+ window.__supra.screenLifecycleExited = true;
21473
+ }
21054
21474
  } catch (error) {
21055
21475
  console.error("Error process", error);
21056
21476
  } finally {
21057
- console.log("Reloading window");
21058
- location.reload();
21477
+ if (((_a = window.__supra) == null ? void 0 : _a.screenStopped) !== true) {
21478
+ console.log("Reloading window");
21479
+ location.reload();
21480
+ }
21059
21481
  }
21060
21482
  });
21061
21483
  })();