@dcl-regenesislabs/bevy-explorer-web 0.1.0-27790814263.commit-953ac0a → 0.1.0-27822344856.commit-d192aca

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/.env CHANGED
@@ -1 +1 @@
1
- PUBLIC_URL="https://cdn.decentraland.org/@dcl-regenesislabs/bevy-explorer-web/0.1.0-27790814263.commit-953ac0a"
1
+ PUBLIC_URL="https://cdn.decentraland.org/@dcl-regenesislabs/bevy-explorer-web/0.1.0-27822344856.commit-d192aca"
package/engine.js CHANGED
@@ -7,6 +7,24 @@ import { initGpuCache } from "./gpu_cache.js";
7
7
  // Re-export for main.js
8
8
  export { gpu_cache_hash, initGpuCache };
9
9
 
10
+ /**
11
+ * Records an uncaught worker error as context for the crash watchdog. A worker
12
+ * thread that traps (panic / OOM) while holding a lock can deadlock the other
13
+ * shared-memory threads with no exception on the main thread; the resulting
14
+ * heartbeat stall is what actually surfaces the overlay, with this as the reason.
15
+ * @param {string} name - worker name for logging
16
+ * @returns {(e: ErrorEvent) => void}
17
+ */
18
+ function workerCrashHandler(name) {
19
+ return (e) => {
20
+ if (window.reportEngineError) {
21
+ window.reportEngineError(e.message || `${name} worker crashed`, `${name} worker`);
22
+ } else {
23
+ console.error(`[Main JS] ${name} worker crashed`, e);
24
+ }
25
+ };
26
+ }
27
+
10
28
  /**
11
29
  * Fetches a URL with download progress tracking.
12
30
  * @param {string} url - URL to fetch
@@ -142,6 +160,7 @@ export async function initEngine() {
142
160
  const basePath = window.location.pathname.replace(/\/$/, ''); // removes trailing slash if present
143
161
  const sandboxWorkerPath = new URL(`${basePath}/sandbox_worker.js`, window.location.origin);
144
162
  var sandboxWorker = new Worker(sandboxWorkerPath, { type: "module" });
163
+ sandboxWorker.onerror = workerCrashHandler("sandbox");
145
164
 
146
165
  var timeoutCount = 0;
147
166
  let logTimeout = () => {
@@ -170,6 +189,7 @@ export async function initEngine() {
170
189
  if (workerEvent.data.type === "INIT_FAILED") {
171
190
  console.log("[Main JS] Sandbox init failed; retrying");
172
191
  sandboxWorker = new Worker(sandboxWorkerPath, { type: "module" });
192
+ sandboxWorker.onerror = workerCrashHandler("sandbox");
173
193
  }
174
194
  };
175
195
  }).finally(() => {
@@ -199,6 +219,7 @@ export async function initEngine() {
199
219
  const assetLoaderPath = new URL(`${basePath}/asset_loader.js`, window.location.origin);
200
220
 
201
221
  const assetLoader = new Worker(assetLoaderPath, { type: "module" });
222
+ assetLoader.onerror = workerCrashHandler("asset loader");
202
223
  assetLoader.onmessage = (workerEvent) => {
203
224
  if (workerEvent.data.type === "READY") {
204
225
  assetLoader.postMessage({
@@ -222,6 +243,7 @@ export async function initEngine() {
222
243
  const assetProcessorPath = new URL(`${basePath}/asset_processor.js`, window.location.origin);
223
244
 
224
245
  const assetProcessor = new Worker(assetProcessorPath, { type: "module" });
246
+ assetProcessor.onerror = workerCrashHandler("asset processor");
225
247
  assetProcessor.onmessage = (workerEvent) => {
226
248
  if (workerEvent.data.type === "READY") {
227
249
  assetProcessor.postMessage({
package/index.html CHANGED
@@ -111,6 +111,201 @@
111
111
  }
112
112
  })();
113
113
  </script>
114
+ <script>
115
+ // Runtime crash overlay, gated on the engine heartbeat.
116
+ //
117
+ // Uncaught exceptions (window 'error') and rejected promises
118
+ // ('unhandledrejection') are only *recorded as context* — many are non-fatal
119
+ // and the engine keeps running, so showing the overlay on every one would be a
120
+ // false positive. The real "is it actually dead" signal is the heartbeat: the
121
+ // Rust loop calls window.__engineHeartbeat() every frame (see web.rs). The
122
+ // watchdog shows the overlay only once frames have actually stopped — quickly
123
+ // if a recent error corroborates the stall, after a long timeout otherwise
124
+ // (which also catches silent deadlocks that throw nothing at all).
125
+ (function () {
126
+ var shown = false;
127
+ var lastError = null; // { err, source, at } — most recent recorded error
128
+ var lastBeat = 0; // timestamp of the last heartbeat
129
+ var beatsSeen = false; // engine has produced at least one frame
130
+ var HANG_MS = 15000; // silent stall (no corroborating error) before we show
131
+ var ERROR_CONFIRM_MS = 3000; // stall after a recent error before we show
132
+
133
+ function nowMs() {
134
+ return (window.performance && performance.now) ? performance.now() : Date.now();
135
+ }
136
+
137
+ function fmtBytes(n) {
138
+ if (!n && n !== 0) return '?';
139
+ var units = ['B', 'KB', 'MB', 'GB', 'TB'];
140
+ var i = 0;
141
+ while (n >= 1024 && i < units.length - 1) { n /= 1024; i++; }
142
+ return n.toFixed(i === 0 ? 0 : 1) + ' ' + units[i];
143
+ }
144
+
145
+ function errMessage(err) {
146
+ if (!err) return 'Unknown error';
147
+ if (typeof err === 'string') return err;
148
+ return err.message || err.stack || String(err);
149
+ }
150
+
151
+ // Best-effort guess at why we died: disk (storage quota) vs memory.
152
+ function describeCause(msg) {
153
+ var m = (msg || '').toLowerCase();
154
+ var diskHint = /quota|disk|storage|no space/.test(m);
155
+ var memHint = /memory|allocat|out of memory|\bgrow\b|oom|rust_oom/.test(m);
156
+ return Promise.resolve()
157
+ .then(function () {
158
+ if (navigator.storage && navigator.storage.estimate) {
159
+ return navigator.storage.estimate();
160
+ }
161
+ return null;
162
+ })
163
+ .then(function (est) {
164
+ if (est && est.quota) {
165
+ var ratio = est.usage / est.quota;
166
+ if (diskHint || ratio > 0.9) {
167
+ return 'You appear to be low on storage / disk space (' +
168
+ fmtBytes(est.usage) + ' of ' + fmtBytes(est.quota) +
169
+ ' used). Free up disk space, then reload.';
170
+ }
171
+ }
172
+ if (memHint) {
173
+ return 'This looks like an out-of-memory failure. Close other tabs or apps to free RAM, then reload.';
174
+ }
175
+ return 'This is often caused by running out of memory or disk space. Closing other tabs / apps and reloading may help.';
176
+ })
177
+ .catch(function () {
178
+ return 'Closing other tabs / apps and reloading may help.';
179
+ });
180
+ }
181
+
182
+ function showCrashOverlay(err, source) {
183
+ if (shown) return;
184
+ shown = true;
185
+ var msg = errMessage(err);
186
+ console.error('[crash overlay]', source || 'error', err);
187
+
188
+ function render() {
189
+ var overlay = document.createElement('div');
190
+ overlay.id = 'crash-overlay';
191
+ overlay.style.cssText = 'position:fixed;inset:0;z-index:9999;display:flex;' +
192
+ 'align-items:center;justify-content:center;background:rgba(24,20,26,0.92);' +
193
+ "font-family:'Inter',sans-serif;color:#fff;padding:1rem;";
194
+
195
+ var card = document.createElement('div');
196
+ card.style.cssText = 'max-width:560px;text-align:center;padding:2rem;' +
197
+ 'background:rgba(0,0,0,0.35);border:1px solid rgba(255,255,255,0.15);border-radius:12px;';
198
+ card.innerHTML =
199
+ '<h1 style="font-size:1.6rem;margin:0 0 0.75rem;">The world crashed</h1>' +
200
+ '<p id="crash-cause" style="color:rgba(255,255,255,0.75);margin:0 0 1.25rem;">' +
201
+ 'The 3D engine stopped unexpectedly.</p>' +
202
+ '<pre style="text-align:left;white-space:pre-wrap;word-break:break-word;' +
203
+ 'background:rgba(0,0,0,0.4);border-radius:6px;padding:0.75rem;' +
204
+ 'font-size:0.78rem;color:rgba(255,255,255,0.6);max-height:30vh;overflow:auto;margin:0 0 1.25rem;">' +
205
+ msg.replace(/&/g, '&amp;').replace(/</g, '&lt;') + '</pre>';
206
+
207
+ var buttons = document.createElement('div');
208
+ buttons.style.cssText = 'display:flex;gap:0.75rem;justify-content:center;';
209
+
210
+ var reloadBtn = document.createElement('button');
211
+ reloadBtn.textContent = 'Reload';
212
+ reloadBtn.style.cssText = 'background:#FF2D55;color:#fff;border:none;border-radius:6px;' +
213
+ 'padding:12px 28px;font-size:1rem;font-weight:600;cursor:pointer;' +
214
+ 'margin:0;width:auto;display:inline-block;';
215
+ reloadBtn.onclick = function () { window.location.reload(); };
216
+
217
+ // Not every uncaught error actually kills the engine, so allow
218
+ // dismissing. Re-arm detection so a later genuine crash still shows.
219
+ var dismissBtn = document.createElement('button');
220
+ dismissBtn.textContent = 'Dismiss';
221
+ dismissBtn.style.cssText = 'background:rgba(255,255,255,0.1);color:#fff;' +
222
+ 'border:1px solid rgba(255,255,255,0.3);border-radius:6px;' +
223
+ 'padding:12px 28px;font-size:1rem;font-weight:600;cursor:pointer;' +
224
+ 'margin:0;width:auto;display:inline-block;';
225
+ dismissBtn.onclick = function () {
226
+ overlay.remove();
227
+ shown = false;
228
+ // Re-arm: clear the stale error and pretend a fresh beat so we
229
+ // don't immediately re-trigger. If the engine is genuinely dead
230
+ // the heartbeat won't advance and the watchdog shows it again.
231
+ lastError = null;
232
+ lastBeat = nowMs();
233
+ };
234
+
235
+ buttons.appendChild(reloadBtn);
236
+ buttons.appendChild(dismissBtn);
237
+ card.appendChild(buttons);
238
+ overlay.appendChild(card);
239
+ document.body.appendChild(overlay);
240
+
241
+ describeCause(msg).then(function (text) {
242
+ var el = document.getElementById('crash-cause');
243
+ if (el) el.textContent = text;
244
+ });
245
+ }
246
+
247
+ if (document.body) {
248
+ render();
249
+ } else {
250
+ document.addEventListener('DOMContentLoaded', render);
251
+ }
252
+ }
253
+
254
+ // Record an error as context for the watchdog. Does NOT show the overlay —
255
+ // only a stalled heartbeat does that. Exposed so engine.js worker handlers
256
+ // can feed in worker crashes too.
257
+ function recordError(err, source) {
258
+ console.error('[engine error]', source || 'error', err);
259
+ lastError = { err: err, source: source || 'error', at: nowMs() };
260
+ }
261
+ window.reportEngineError = recordError;
262
+
263
+ // Heartbeat sink: the Rust loop calls this once per frame.
264
+ window.__engineHeartbeat = function () {
265
+ lastBeat = nowMs();
266
+ beatsSeen = true;
267
+ };
268
+
269
+ // Don't shadow the browser/mobile gate page.
270
+ if (!window.__browserGateBlocked) {
271
+ window.addEventListener('error', function (e) {
272
+ // Resource-load errors don't bubble to window via addEventListener
273
+ // (no capture), so anything we get here is a genuine uncaught exception.
274
+ recordError(e.error || e.message, 'error');
275
+ });
276
+ window.addEventListener('unhandledrejection', function (e) {
277
+ recordError(e.reason, 'unhandledrejection');
278
+ });
279
+ }
280
+
281
+ // Backgrounded tabs throttle rAF/timers, so the heartbeat legitimately
282
+ // stalls while hidden — reset on return to visible to avoid a false verdict.
283
+ document.addEventListener('visibilitychange', function () {
284
+ if (!document.hidden) lastBeat = nowMs();
285
+ });
286
+
287
+ // The watchdog: the only thing that actually shows the overlay.
288
+ setInterval(function () {
289
+ if (shown || !beatsSeen || document.hidden) return;
290
+ var stalled = nowMs() - lastBeat;
291
+ // A recent error (recorded around when frames stopped) corroborates a
292
+ // real crash, so we wait far less before showing it.
293
+ var corroborated = lastError && lastError.at >= lastBeat - 1000;
294
+ var threshold = corroborated ? ERROR_CONFIRM_MS : HANG_MS;
295
+ if (stalled <= threshold) return;
296
+
297
+ if (lastError) {
298
+ showCrashOverlay(lastError.err, lastError.source);
299
+ } else {
300
+ showCrashOverlay(
301
+ 'The engine stopped responding (no frames for ' +
302
+ Math.round(stalled / 1000) + 's). It may have run out of memory, ' +
303
+ 'or a worker thread crashed and deadlocked the main thread.',
304
+ 'watchdog');
305
+ }
306
+ }, 2000);
307
+ })();
308
+ </script>
114
309
  <link rel="icon" type="image/png" href="favicon/favicon-96x96.png" sizes="96x96" />
115
310
  <link rel="icon" type="image/svg+xml" href="favicon/favicon.svg" />
116
311
  <link rel="shortcut icon" href="favicon/favicon.ico" />
@@ -419,7 +614,7 @@
419
614
  }
420
615
  </style>
421
616
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap" rel="stylesheet">
422
- <script>window.PUBLIC_URL = "https://cdn.decentraland.org/@dcl-regenesislabs/bevy-explorer-web/0.1.0-27790814263.commit-953ac0a";</script>
617
+ <script>window.PUBLIC_URL = "https://cdn.decentraland.org/@dcl-regenesislabs/bevy-explorer-web/0.1.0-27822344856.commit-d192aca";</script>
423
618
  </head>
424
619
  <body>
425
620
  <div id="header" class="container">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dcl-regenesislabs/bevy-explorer-web",
3
- "version": "0.1.0-27790814263.commit-953ac0a",
3
+ "version": "0.1.0-27822344856.commit-d192aca",
4
4
  "scripts": {
5
5
  "postinstall": "node ./scripts/prebuild.js"
6
6
  },
@@ -8,6 +8,6 @@
8
8
  "type": "git",
9
9
  "url": "git+https://github.com/decentraland/bevy-explorer.git"
10
10
  },
11
- "homepage": "https://cdn.decentraland.org/@dcl-regenesislabs/bevy-explorer-web/0.1.0-27790814263.commit-953ac0a",
12
- "commit": "953ac0a65c86bc839c7fe1706a7a6d3ee6048f90"
11
+ "homepage": "https://cdn.decentraland.org/@dcl-regenesislabs/bevy-explorer-web/0.1.0-27822344856.commit-d192aca",
12
+ "commit": "d192acaf4832d7efee7ac4bb4708d6c5598c8e7e"
13
13
  }
package/pkg/manifest.json CHANGED
@@ -1 +1 @@
1
- {"wasmSize":110339367}
1
+ {"wasmSize":110321694}
@@ -1,5 +1,12 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
+ /**
4
+ * The `ReadableStreamType` enum.
5
+ *
6
+ * *This API requires the following crate features to be activated: `ReadableStreamType`*
7
+ */
8
+
9
+ type ReadableStreamType = "bytes";
3
10
 
4
11
  export class AudioCaptureOptions {
5
12
  private constructor();
@@ -40,6 +47,34 @@ export class DataPublishOptions {
40
47
  [Symbol.dispose](): void;
41
48
  }
42
49
 
50
+ export class IntoUnderlyingByteSource {
51
+ private constructor();
52
+ free(): void;
53
+ [Symbol.dispose](): void;
54
+ cancel(): void;
55
+ pull(controller: ReadableByteStreamController): Promise<any>;
56
+ start(controller: ReadableByteStreamController): void;
57
+ readonly autoAllocateChunkSize: number;
58
+ readonly type: ReadableStreamType;
59
+ }
60
+
61
+ export class IntoUnderlyingSink {
62
+ private constructor();
63
+ free(): void;
64
+ [Symbol.dispose](): void;
65
+ abort(reason: any): Promise<any>;
66
+ close(): Promise<any>;
67
+ write(chunk: any): Promise<any>;
68
+ }
69
+
70
+ export class IntoUnderlyingSource {
71
+ private constructor();
72
+ free(): void;
73
+ [Symbol.dispose](): void;
74
+ cancel(): void;
75
+ pull(controller: ReadableStreamDefaultController): Promise<any>;
76
+ }
77
+
43
78
  export class ParticipantSid {
44
79
  private constructor();
45
80
  free(): void;
@@ -483,44 +518,59 @@ export interface InitOutput {
483
518
  readonly __wbg_set_audiocaptureoptions_sampleRate: (a: number, b: number, c: bigint) => void;
484
519
  readonly __wbg_set_audiocaptureoptions_sampleSize: (a: number, b: number, c: bigint) => void;
485
520
  readonly __wbg_set_audiocaptureoptions_voiceIsolation: (a: number, b: number) => void;
486
- readonly wasm_bindgen_37b2aef40228fbc7___closure__destroy___dyn_core_b1d35abfa360d765___ops__function__FnMut__web_sys_dd19305f70232297___features__gen_CloseEvent__CloseEvent____Output_______: (a: number, b: number) => void;
487
- readonly wasm_bindgen_37b2aef40228fbc7___closure__destroy___dyn_core_b1d35abfa360d765___ops__function__FnMut__wasm_bindgen_37b2aef40228fbc7___JsValue____Output________1_: (a: number, b: number) => void;
521
+ readonly __wbg_intounderlyingbytesource_free: (a: number, b: number) => void;
522
+ readonly __wbg_intounderlyingsink_free: (a: number, b: number) => void;
523
+ readonly __wbg_intounderlyingsource_free: (a: number, b: number) => void;
524
+ readonly intounderlyingbytesource_autoAllocateChunkSize: (a: number) => number;
525
+ readonly intounderlyingbytesource_cancel: (a: number) => void;
526
+ readonly intounderlyingbytesource_pull: (a: number, b: any) => any;
527
+ readonly intounderlyingbytesource_start: (a: number, b: any) => void;
528
+ readonly intounderlyingbytesource_type: (a: number) => number;
529
+ readonly intounderlyingsink_abort: (a: number, b: any) => any;
530
+ readonly intounderlyingsink_close: (a: number) => any;
531
+ readonly intounderlyingsink_write: (a: number, b: any) => any;
532
+ readonly intounderlyingsource_cancel: (a: number) => void;
533
+ readonly intounderlyingsource_pull: (a: number, b: any) => any;
534
+ readonly wasm_bindgen_37b2aef40228fbc7___closure__destroy___dyn_core_b1d35abfa360d765___ops__function__FnMut__web_sys_773b58dd858ebbdd___features__gen_CloseEvent__CloseEvent____Output_______: (a: number, b: number) => void;
488
535
  readonly wasm_bindgen_37b2aef40228fbc7___closure__destroy___dyn_core_b1d35abfa360d765___ops__function__FnMut__wasm_bindgen_37b2aef40228fbc7___JsValue____Output________2_: (a: number, b: number) => void;
536
+ readonly wasm_bindgen_37b2aef40228fbc7___closure__destroy___dyn_core_b1d35abfa360d765___ops__function__FnMut__wasm_bindgen_37b2aef40228fbc7___JsValue____Output________3_: (a: number, b: number) => void;
489
537
  readonly wasm_bindgen_37b2aef40228fbc7___closure__destroy___dyn_core_b1d35abfa360d765___ops__function__FnMut_____Output________3_: (a: number, b: number) => void;
490
538
  readonly wasm_bindgen_37b2aef40228fbc7___closure__destroy___dyn_core_b1d35abfa360d765___ops__function__FnMut__wasm_bindgen_37b2aef40228fbc7___JsValue____Output___core_b1d35abfa360d765___result__Result_____wasm_bindgen_37b2aef40228fbc7___JsError___: (a: number, b: number) => void;
491
539
  readonly wasm_bindgen_37b2aef40228fbc7___closure__destroy___dyn_core_b1d35abfa360d765___ops__function__FnMut__f64__wasm_bindgen_37b2aef40228fbc7___JsValue___Output_______: (a: number, b: number) => void;
492
- readonly wasm_bindgen_37b2aef40228fbc7___closure__destroy___dyn_core_b1d35abfa360d765___ops__function__Fn__comms_6df6b7dc46a3fc13___livekit__web__room_event__RoomEvent____Output_______: (a: number, b: number) => void;
493
- readonly wasm_bindgen_37b2aef40228fbc7___closure__destroy___dyn_core_b1d35abfa360d765___ops__function__FnMut__web_sys_dd19305f70232297___features__gen_CloseEvent__CloseEvent____Output________1_: (a: number, b: number) => void;
540
+ readonly wasm_bindgen_37b2aef40228fbc7___closure__destroy___dyn_core_b1d35abfa360d765___ops__function__Fn__comms_913a2f036f4a5fac___livekit__web__room_event__RoomEvent____Output_______: (a: number, b: number) => void;
541
+ readonly wasm_bindgen_37b2aef40228fbc7___closure__destroy___dyn_core_b1d35abfa360d765___ops__function__FnMut__web_sys_773b58dd858ebbdd___features__gen_CloseEvent__CloseEvent____Output________1_: (a: number, b: number) => void;
494
542
  readonly wasm_bindgen_37b2aef40228fbc7___closure__destroy___dyn_core_b1d35abfa360d765___ops__function__FnMut_____Output_______: (a: number, b: number) => void;
495
543
  readonly wasm_bindgen_37b2aef40228fbc7___closure__destroy___dyn_core_b1d35abfa360d765___ops__function__FnMut_____Output________1_: (a: number, b: number) => void;
496
- readonly wasm_bindgen_37b2aef40228fbc7___closure__destroy___dyn_core_b1d35abfa360d765___ops__function__FnMut_____Output________2_: (a: number, b: number) => void;
497
544
  readonly wasm_bindgen_37b2aef40228fbc7___closure__destroy___dyn_core_b1d35abfa360d765___ops__function__FnMut__wasm_bindgen_37b2aef40228fbc7___JsValue____Output_______: (a: number, b: number) => void;
498
- readonly wasm_bindgen_37b2aef40228fbc7___closure__destroy___dyn_core_b1d35abfa360d765___ops__function__FnMut__web_sys_dd19305f70232297___features__gen_InputEvent__InputEvent____Output_______: (a: number, b: number) => void;
499
- readonly wasm_bindgen_37b2aef40228fbc7___closure__destroy___dyn_core_b1d35abfa360d765___ops__function__FnMut__core_b1d35abfa360d765___option__Option_web_sys_dd19305f70232297___features__gen_Blob__Blob_____Output_______: (a: number, b: number) => void;
545
+ readonly wasm_bindgen_37b2aef40228fbc7___closure__destroy___dyn_core_b1d35abfa360d765___ops__function__FnMut_____Output________2_: (a: number, b: number) => void;
546
+ readonly wasm_bindgen_37b2aef40228fbc7___closure__destroy___dyn_core_b1d35abfa360d765___ops__function__FnMut__wasm_bindgen_37b2aef40228fbc7___JsValue____Output________1_: (a: number, b: number) => void;
547
+ readonly wasm_bindgen_37b2aef40228fbc7___closure__destroy___dyn_core_b1d35abfa360d765___ops__function__FnMut__web_sys_773b58dd858ebbdd___features__gen_InputEvent__InputEvent____Output_______: (a: number, b: number) => void;
548
+ readonly wasm_bindgen_37b2aef40228fbc7___closure__destroy___dyn_core_b1d35abfa360d765___ops__function__FnMut__core_b1d35abfa360d765___option__Option_web_sys_773b58dd858ebbdd___features__gen_Blob__Blob_____Output_______: (a: number, b: number) => void;
500
549
  readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___f64__wasm_bindgen_37b2aef40228fbc7___JsValue______true_: (a: number, b: number, c: number, d: any) => void;
501
550
  readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___wasm_bindgen_37b2aef40228fbc7___JsValue__core_b1d35abfa360d765___result__Result_____wasm_bindgen_37b2aef40228fbc7___JsError___true_: (a: number, b: number, c: any) => [number, number];
502
- readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___comms_6df6b7dc46a3fc13___livekit__web__local_audio_track__LocalAudioTrack__core_b1d35abfa360d765___result__Result_____wasm_bindgen_37b2aef40228fbc7___JsError___true_: (a: number, b: number, c: any) => [number, number];
503
- readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___js_sys_342d9548e43f4e8___Array__web_sys_dd19305f70232297___features__gen_ResizeObserver__ResizeObserver______true_: (a: number, b: number, c: any, d: any) => void;
551
+ readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___comms_913a2f036f4a5fac___livekit__web__local_audio_track__LocalAudioTrack__core_b1d35abfa360d765___result__Result_____wasm_bindgen_37b2aef40228fbc7___JsError___true_: (a: number, b: number, c: any) => [number, number];
552
+ readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___js_sys_342d9548e43f4e8___Array__web_sys_773b58dd858ebbdd___features__gen_ResizeObserver__ResizeObserver______true_: (a: number, b: number, c: any, d: any) => void;
504
553
  readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___js_sys_342d9548e43f4e8___Function_fn_wasm_bindgen_37b2aef40228fbc7___JsValue_____wasm_bindgen_37b2aef40228fbc7___sys__Undefined___js_sys_342d9548e43f4e8___Function_fn_wasm_bindgen_37b2aef40228fbc7___JsValue_____wasm_bindgen_37b2aef40228fbc7___sys__Undefined_______true_: (a: number, b: number, c: any, d: any) => void;
505
- readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___web_sys_dd19305f70232297___features__gen_CloseEvent__CloseEvent______true_: (a: number, b: number, c: any) => void;
506
- readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___wasm_bindgen_37b2aef40228fbc7___JsValue______true__2_: (a: number, b: number, c: any) => void;
507
- readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___wasm_bindgen_37b2aef40228fbc7___JsValue______true__2__2: (a: number, b: number, c: any) => void;
554
+ readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___web_sys_773b58dd858ebbdd___features__gen_CloseEvent__CloseEvent______true_: (a: number, b: number, c: any) => void;
508
555
  readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___wasm_bindgen_37b2aef40228fbc7___JsValue______true__3_: (a: number, b: number, c: any) => void;
509
- readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___web_sys_dd19305f70232297___features__gen_MessageEvent__MessageEvent______true_: (a: number, b: number, c: any) => void;
510
- readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___comms_6df6b7dc46a3fc13___livekit__web__room_event__RoomEvent______true_: (a: number, b: number, c: any) => void;
511
- readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___web_sys_dd19305f70232297___features__gen_CloseEvent__CloseEvent______true__1_: (a: number, b: number, c: any) => void;
556
+ readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___wasm_bindgen_37b2aef40228fbc7___JsValue______true__3__2: (a: number, b: number, c: any) => void;
557
+ readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___wasm_bindgen_37b2aef40228fbc7___JsValue______true__4_: (a: number, b: number, c: any) => void;
558
+ readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___web_sys_773b58dd858ebbdd___features__gen_MessageEvent__MessageEvent______true_: (a: number, b: number, c: any) => void;
559
+ readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___comms_913a2f036f4a5fac___livekit__web__room_event__RoomEvent______true_: (a: number, b: number, c: any) => void;
560
+ readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___web_sys_773b58dd858ebbdd___features__gen_CloseEvent__CloseEvent______true__1_: (a: number, b: number, c: any) => void;
512
561
  readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___wasm_bindgen_37b2aef40228fbc7___JsValue______true_: (a: number, b: number, c: any) => void;
513
- readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___web_sys_dd19305f70232297___features__gen_InputEvent__InputEvent______true_: (a: number, b: number, c: any) => void;
514
- readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___web_sys_dd19305f70232297___features__gen_InputEvent__InputEvent______true__16: (a: number, b: number, c: any) => void;
515
- readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___web_sys_dd19305f70232297___features__gen_InputEvent__InputEvent______true__17: (a: number, b: number, c: any) => void;
516
562
  readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___wasm_bindgen_37b2aef40228fbc7___JsValue______true__1_: (a: number, b: number, c: any) => void;
517
- readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___wasm_bindgen_37b2aef40228fbc7___JsValue______true__1__20: (a: number, b: number, c: any) => void;
518
- readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___wasm_bindgen_37b2aef40228fbc7___JsValue______true__1__21: (a: number, b: number, c: any) => void;
519
- readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___wasm_bindgen_37b2aef40228fbc7___JsValue______true__1__22: (a: number, b: number, c: any) => void;
520
- readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___wasm_bindgen_37b2aef40228fbc7___JsValue______true__1__23: (a: number, b: number, c: any) => void;
521
- readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___wasm_bindgen_37b2aef40228fbc7___JsValue______true__1__24: (a: number, b: number, c: any) => void;
522
- readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___wasm_bindgen_37b2aef40228fbc7___JsValue______true__1__25: (a: number, b: number, c: any) => void;
523
- readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___wasm_bindgen_37b2aef40228fbc7___JsValue______true__1__26: (a: number, b: number, c: any) => void;
563
+ readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___web_sys_773b58dd858ebbdd___features__gen_InputEvent__InputEvent______true_: (a: number, b: number, c: any) => void;
564
+ readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___web_sys_773b58dd858ebbdd___features__gen_InputEvent__InputEvent______true__17: (a: number, b: number, c: any) => void;
565
+ readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___web_sys_773b58dd858ebbdd___features__gen_InputEvent__InputEvent______true__18: (a: number, b: number, c: any) => void;
566
+ readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___wasm_bindgen_37b2aef40228fbc7___JsValue______true__2_: (a: number, b: number, c: any) => void;
567
+ readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___wasm_bindgen_37b2aef40228fbc7___JsValue______true__2__21: (a: number, b: number, c: any) => void;
568
+ readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___wasm_bindgen_37b2aef40228fbc7___JsValue______true__2__22: (a: number, b: number, c: any) => void;
569
+ readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___wasm_bindgen_37b2aef40228fbc7___JsValue______true__2__23: (a: number, b: number, c: any) => void;
570
+ readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___wasm_bindgen_37b2aef40228fbc7___JsValue______true__2__24: (a: number, b: number, c: any) => void;
571
+ readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___wasm_bindgen_37b2aef40228fbc7___JsValue______true__2__25: (a: number, b: number, c: any) => void;
572
+ readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___wasm_bindgen_37b2aef40228fbc7___JsValue______true__2__26: (a: number, b: number, c: any) => void;
573
+ readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke___wasm_bindgen_37b2aef40228fbc7___JsValue______true__2__27: (a: number, b: number, c: any) => void;
524
574
  readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke_______true__4_: (a: number, b: number) => void;
525
575
  readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke_______true_: (a: number, b: number) => void;
526
576
  readonly wasm_bindgen_37b2aef40228fbc7___convert__closures_____invoke_______true__1_: (a: number, b: number) => void;