@rerun-io/web-viewer 0.17.0-alpha.7 → 0.17.0-alpha.9

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/README.md CHANGED
@@ -21,7 +21,7 @@ $ npm i @rerun-io/web-viewer
21
21
  ```
22
22
 
23
23
  ℹ️ Note:
24
- The package version is equal to the supported Rerun SDK version.
24
+ The package version is equal to the supported Rerun SDK version, and [RRD files are not yet stable across different versions](https://github.com/rerun-io/rerun/issues/6410).
25
25
  This means that `@rerun-io/web-viewer@0.10.0` can only connect to a data source (`.rrd` file, websocket connection, etc.) that originates from a Rerun SDK with version `0.10.0`!
26
26
 
27
27
  ## Usage
@@ -35,16 +35,20 @@ const rrd = "…";
35
35
  const parentElement = document.body;
36
36
 
37
37
  const viewer = new WebViewer();
38
- await viewer.start(rrd, parentElement);
38
+ await viewer.start(rrd, parentElement, { width: "800px", height: "600px" });
39
39
  // …
40
40
  viewer.stop();
41
41
  ```
42
42
 
43
43
  The `rrd` in the snippet above should be a URL pointing to either:
44
- - A hosted `.rrd` file, such as <https://app.rerun.io/version/0.17.0-alpha.7/examples/dna.rrd>
44
+ - A hosted `.rrd` file, such as <https://app.rerun.io/version/0.17.0-alpha.9/examples/dna.rrd>
45
45
  - A WebSocket connection to the SDK opened via the [`serve`](https://www.rerun.io/docs/reference/sdk-operating-modes#serve) API
46
46
 
47
47
  If `rrd` is not set, the Viewer will display the same welcome screen as <https://app.rerun.io>.
48
+ This can be disabled by setting `hide_welcome_screen` to `true` in the options object of `viewer.start`.
49
+
50
+ ⚠ It's important to set the viewer's width and height, as without it the viewer may not display correctly.
51
+ Setting the values to empty strings is valid, as long as you style the canvas through other means.
48
52
 
49
53
  For a full example, see https://github.com/rerun-io/web-viewer-example.
50
54
  You can open the example via CodeSandbox: https://codesandbox.io/s/github/rerun-io/web-viewer-example
package/index.d.ts CHANGED
@@ -1,11 +1,30 @@
1
1
  export type Panel = "top" | "blueprint" | "selection" | "time";
2
2
  export type PanelState = "hidden" | "collapsed" | "expanded";
3
3
  export type Backend = "webgpu" | "webgl";
4
- interface WebViewerOptions {
4
+ export interface WebViewerOptions {
5
5
  manifest_url?: string;
6
6
  render_backend?: Backend;
7
7
  hide_welcome_screen?: boolean;
8
8
  allow_fullscreen?: boolean;
9
+ enable_history?: boolean;
10
+ width?: string;
11
+ height?: string;
12
+ }
13
+ /** @private */
14
+ export interface AppOptions extends WebViewerOptions {
15
+ url?: string;
16
+ manifest_url?: string;
17
+ render_backend?: Backend;
18
+ hide_welcome_screen?: boolean;
19
+ panel_state_overrides?: Partial<{
20
+ [K in Panel]: PanelState;
21
+ }>;
22
+ fullscreen?: FullscreenOptions;
23
+ enable_history?: boolean;
24
+ }
25
+ interface FullscreenOptions {
26
+ get_state: () => boolean;
27
+ on_toggle: () => void;
9
28
  }
10
29
  interface WebViewerEvents {
11
30
  fullscreen: boolean;
package/index.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
package/index.js CHANGED
@@ -1,10 +1,31 @@
1
- let WebHandleConstructor = null;
1
+ let get_wasm_bindgen = null;
2
+ let _wasm_module = null;
3
+ /*<INLINE-MARKER>*/
4
+ async function fetch_viewer_js() {
5
+ return (await import("./re_viewer")).default;
6
+ }
7
+ async function fetch_viewer_wasm() {
8
+ return fetch(new URL("./re_viewer_bg.wasm", import.meta.url));
9
+ }
10
+ /*<INLINE-MARKER>*/
2
11
  async function load() {
3
- if (WebHandleConstructor) {
4
- return WebHandleConstructor;
12
+ // instantiate wbg globals+module for every invocation of `load`,
13
+ // but don't load the JS/Wasm source every time
14
+ if (!get_wasm_bindgen || !_wasm_module) {
15
+ [get_wasm_bindgen, _wasm_module] = await Promise.all([
16
+ fetch_viewer_js(),
17
+ WebAssembly.compileStreaming(fetch_viewer_wasm()),
18
+ ]);
5
19
  }
6
- WebHandleConstructor = (await import("./re_viewer.js")).WebHandle;
7
- return WebHandleConstructor;
20
+ let bindgen = get_wasm_bindgen();
21
+ await bindgen(_wasm_module);
22
+ return class extends bindgen.WebHandle {
23
+ free() {
24
+ super.free();
25
+ // @ts-expect-error
26
+ bindgen.deinit();
27
+ }
28
+ };
8
29
  }
9
30
  let _minimize_current_fullscreen_viewer = null;
10
31
  function randomId() {
@@ -14,8 +35,13 @@ function randomId() {
14
35
  .map((byte) => byte.toString(16).padStart(2, "0"))
15
36
  .join("");
16
37
  }
38
+ function delay(ms) {
39
+ return new Promise((resolve) => setTimeout(resolve, ms));
40
+ }
17
41
  export class WebViewer {
18
42
  #id = randomId();
43
+ // NOTE: Using the handle requires wrapping all calls to its methods in try/catch.
44
+ // On failure, call `this.stop` to prevent a memory leak, then re-throw the error.
19
45
  #handle = null;
20
46
  #canvas = null;
21
47
  #state = "stopped";
@@ -40,8 +66,14 @@ export class WebViewer {
40
66
  return;
41
67
  this.#state = "starting";
42
68
  this.#canvas = document.createElement("canvas");
69
+ this.#canvas.style.width = options.width ?? "640px";
70
+ this.#canvas.style.height = options.height ?? "360px";
43
71
  this.#canvas.id = this.#id;
44
72
  parent.append(this.#canvas);
73
+ // This yield appears to be necessary to ensure that the canvas is attached to the DOM
74
+ // and visible. Without it we get occasionally get a panic about a failure to find a canvas
75
+ // element with the given ID.
76
+ await delay(0);
45
77
  let WebHandle_class = await load();
46
78
  if (this.#state !== "starting")
47
79
  return;
@@ -52,12 +84,15 @@ export class WebViewer {
52
84
  }
53
85
  : undefined;
54
86
  this.#handle = new WebHandle_class({ ...options, fullscreen });
55
- await this.#handle.start(this.#canvas.id);
87
+ try {
88
+ await this.#handle.start(this.#canvas.id);
89
+ }
90
+ catch (e) {
91
+ this.stop();
92
+ throw e;
93
+ }
56
94
  if (this.#state !== "starting")
57
95
  return;
58
- if (this.#handle.has_panicked()) {
59
- throw new Error(`Web viewer crashed: ${this.#handle.panic_message()}`);
60
- }
61
96
  this.#state = "ready";
62
97
  this.#dispatch_event("ready");
63
98
  if (rrd) {
@@ -132,9 +167,12 @@ export class WebViewer {
132
167
  }
133
168
  const urls = Array.isArray(rrd) ? rrd : [rrd];
134
169
  for (const url of urls) {
135
- this.#handle.add_receiver(url, options.follow_if_http);
136
- if (this.#handle.has_panicked()) {
137
- throw new Error(`Web viewer crashed: ${this.#handle.panic_message()}`);
170
+ try {
171
+ this.#handle.add_receiver(url, options.follow_if_http);
172
+ }
173
+ catch (e) {
174
+ this.stop();
175
+ throw e;
138
176
  }
139
177
  }
140
178
  }
@@ -151,9 +189,12 @@ export class WebViewer {
151
189
  }
152
190
  const urls = Array.isArray(rrd) ? rrd : [rrd];
153
191
  for (const url of urls) {
154
- this.#handle.remove_receiver(url);
155
- if (this.#handle.has_panicked()) {
156
- throw new Error(`Web viewer crashed: ${this.#handle.panic_message()}`);
192
+ try {
193
+ this.#handle.remove_receiver(url);
194
+ }
195
+ catch (e) {
196
+ this.stop();
197
+ throw e;
157
198
  }
158
199
  }
159
200
  }
@@ -170,8 +211,14 @@ export class WebViewer {
170
211
  }
171
212
  this.#state = "stopped";
172
213
  this.#canvas?.remove();
173
- this.#handle?.destroy();
174
- this.#handle?.free();
214
+ try {
215
+ this.#handle?.destroy();
216
+ this.#handle?.free();
217
+ }
218
+ catch (e) {
219
+ this.#handle = null;
220
+ throw e;
221
+ }
175
222
  this.#canvas = null;
176
223
  this.#handle = null;
177
224
  this.#fullscreen = false;
@@ -189,18 +236,36 @@ export class WebViewer {
189
236
  throw new Error(`attempted to open channel \"${channel_name}\" in a stopped web viewer`);
190
237
  }
191
238
  const id = crypto.randomUUID();
192
- this.#handle.open_channel(id, channel_name);
239
+ try {
240
+ this.#handle.open_channel(id, channel_name);
241
+ }
242
+ catch (e) {
243
+ this.stop();
244
+ throw e;
245
+ }
193
246
  const on_send = (/** @type {Uint8Array} */ data) => {
194
247
  if (!this.#handle) {
195
248
  throw new Error(`attempted to send data through channel \"${channel_name}\" to a stopped web viewer`);
196
249
  }
197
- this.#handle.send_rrd_to_channel(id, data);
250
+ try {
251
+ this.#handle.send_rrd_to_channel(id, data);
252
+ }
253
+ catch (e) {
254
+ this.stop();
255
+ throw e;
256
+ }
198
257
  };
199
258
  const on_close = () => {
200
259
  if (!this.#handle) {
201
260
  throw new Error(`attempted to send data through channel \"${channel_name}\" to a stopped web viewer`);
202
261
  }
203
- this.#handle.close_channel(id);
262
+ try {
263
+ this.#handle.close_channel(id);
264
+ }
265
+ catch (e) {
266
+ this.stop();
267
+ throw e;
268
+ }
204
269
  };
205
270
  const get_state = () => this.#state;
206
271
  return new LogChannel(on_send, on_close, get_state);
@@ -215,7 +280,13 @@ export class WebViewer {
215
280
  if (!this.#handle) {
216
281
  throw new Error(`attempted to set ${panel} panel to ${state} in a stopped web viewer`);
217
282
  }
218
- this.#handle.override_panel_state(panel, state);
283
+ try {
284
+ this.#handle.override_panel_state(panel, state);
285
+ }
286
+ catch (e) {
287
+ this.stop();
288
+ throw e;
289
+ }
219
290
  }
220
291
  /**
221
292
  * Toggle panel overrides set via `override_panel_state`.
@@ -226,7 +297,13 @@ export class WebViewer {
226
297
  if (!this.#handle) {
227
298
  throw new Error(`attempted to toggle panel overrides in a stopped web viewer`);
228
299
  }
229
- this.#handle.toggle_panel_overrides(value);
300
+ try {
301
+ this.#handle.toggle_panel_overrides(value);
302
+ }
303
+ catch (e) {
304
+ this.stop();
305
+ throw e;
306
+ }
230
307
  }
231
308
  /**
232
309
  * Toggle fullscreen mode.
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
package/index.ts CHANGED
@@ -1,28 +1,36 @@
1
- import type { WebHandle } from "./re_viewer.js";
1
+ import type { WebHandle, wasm_bindgen } from "./re_viewer";
2
2
 
3
- interface AppOptions {
4
- url?: string;
5
- manifest_url?: string;
6
- render_backend?: Backend;
7
- hide_welcome_screen?: boolean;
8
- panel_state_overrides?: Partial<{
9
- [K in Panel]: PanelState;
10
- }>;
11
- fullscreen?: FullscreenOptions;
12
- }
13
-
14
- type WebHandleConstructor = {
15
- new (app_options?: AppOptions): WebHandle;
16
- };
3
+ let get_wasm_bindgen: (() => typeof wasm_bindgen) | null = null;
4
+ let _wasm_module: WebAssembly.Module | null = null;
17
5
 
18
- let WebHandleConstructor: WebHandleConstructor | null = null;
6
+ /*<INLINE-MARKER>*/
7
+ async function fetch_viewer_js() {
8
+ return (await import("./re_viewer")).default;
9
+ }
19
10
 
20
- async function load(): Promise<WebHandleConstructor> {
21
- if (WebHandleConstructor) {
22
- return WebHandleConstructor;
11
+ async function fetch_viewer_wasm() {
12
+ return fetch(new URL("./re_viewer_bg.wasm", import.meta.url));
13
+ }
14
+ /*<INLINE-MARKER>*/
15
+
16
+ async function load(): Promise<typeof wasm_bindgen.WebHandle> {
17
+ // instantiate wbg globals+module for every invocation of `load`,
18
+ // but don't load the JS/Wasm source every time
19
+ if (!get_wasm_bindgen || !_wasm_module) {
20
+ [get_wasm_bindgen, _wasm_module] = await Promise.all([
21
+ fetch_viewer_js(),
22
+ WebAssembly.compileStreaming(fetch_viewer_wasm()),
23
+ ]);
23
24
  }
24
- WebHandleConstructor = (await import("./re_viewer.js")).WebHandle;
25
- return WebHandleConstructor;
25
+ let bindgen = get_wasm_bindgen();
26
+ await bindgen(_wasm_module);
27
+ return class extends bindgen.WebHandle {
28
+ free() {
29
+ super.free();
30
+ // @ts-expect-error
31
+ bindgen.deinit();
32
+ }
33
+ };
26
34
  }
27
35
 
28
36
  let _minimize_current_fullscreen_viewer: (() => void) | null = null;
@@ -39,11 +47,31 @@ export type Panel = "top" | "blueprint" | "selection" | "time";
39
47
  export type PanelState = "hidden" | "collapsed" | "expanded";
40
48
  export type Backend = "webgpu" | "webgl";
41
49
 
42
- interface WebViewerOptions {
50
+ export interface WebViewerOptions {
43
51
  manifest_url?: string;
44
52
  render_backend?: Backend;
45
53
  hide_welcome_screen?: boolean;
46
54
  allow_fullscreen?: boolean;
55
+ enable_history?: boolean;
56
+
57
+ width?: string;
58
+ height?: string;
59
+ }
60
+
61
+ // `AppOptions` and `WebViewerOptions` must be compatible
62
+ // otherwise we need to restructure how we pass options to the viewer
63
+
64
+ /** @private */
65
+ export interface AppOptions extends WebViewerOptions {
66
+ url?: string;
67
+ manifest_url?: string;
68
+ render_backend?: Backend;
69
+ hide_welcome_screen?: boolean;
70
+ panel_state_overrides?: Partial<{
71
+ [K in Panel]: PanelState;
72
+ }>;
73
+ fullscreen?: FullscreenOptions;
74
+ enable_history?: boolean;
47
75
  }
48
76
 
49
77
  interface FullscreenOptions {
@@ -73,8 +101,14 @@ type EventsWithoutValue = {
73
101
 
74
102
  type Cancel = () => void;
75
103
 
104
+ function delay(ms: number) {
105
+ return new Promise((resolve) => setTimeout(resolve, ms));
106
+ }
107
+
76
108
  export class WebViewer {
77
109
  #id = randomId();
110
+ // NOTE: Using the handle requires wrapping all calls to its methods in try/catch.
111
+ // On failure, call `this.stop` to prevent a memory leak, then re-throw the error.
78
112
  #handle: WebHandle | null = null;
79
113
  #canvas: HTMLCanvasElement | null = null;
80
114
  #state: "ready" | "starting" | "stopped" = "stopped";
@@ -107,9 +141,16 @@ export class WebViewer {
107
141
  this.#state = "starting";
108
142
 
109
143
  this.#canvas = document.createElement("canvas");
144
+ this.#canvas.style.width = options.width ?? "640px";
145
+ this.#canvas.style.height = options.height ?? "360px";
110
146
  this.#canvas.id = this.#id;
111
147
  parent.append(this.#canvas);
112
148
 
149
+ // This yield appears to be necessary to ensure that the canvas is attached to the DOM
150
+ // and visible. Without it we get occasionally get a panic about a failure to find a canvas
151
+ // element with the given ID.
152
+ await delay(0);
153
+
113
154
  let WebHandle_class = await load();
114
155
  if (this.#state !== "starting") return;
115
156
 
@@ -121,12 +162,13 @@ export class WebViewer {
121
162
  : undefined;
122
163
 
123
164
  this.#handle = new WebHandle_class({ ...options, fullscreen });
124
- await this.#handle.start(this.#canvas.id);
125
- if (this.#state !== "starting") return;
126
-
127
- if (this.#handle.has_panicked()) {
128
- throw new Error(`Web viewer crashed: ${this.#handle.panic_message()}`);
165
+ try {
166
+ await this.#handle.start(this.#canvas.id);
167
+ } catch (e) {
168
+ this.stop();
169
+ throw e;
129
170
  }
171
+ if (this.#state !== "starting") return;
130
172
 
131
173
  this.#state = "ready";
132
174
  this.#dispatch_event("ready");
@@ -255,11 +297,14 @@ export class WebViewer {
255
297
  if (!this.#handle) {
256
298
  throw new Error(`attempted to open \`${rrd}\` in a stopped viewer`);
257
299
  }
300
+
258
301
  const urls = Array.isArray(rrd) ? rrd : [rrd];
259
302
  for (const url of urls) {
260
- this.#handle.add_receiver(url, options.follow_if_http);
261
- if (this.#handle.has_panicked()) {
262
- throw new Error(`Web viewer crashed: ${this.#handle.panic_message()}`);
303
+ try {
304
+ this.#handle.add_receiver(url, options.follow_if_http);
305
+ } catch (e) {
306
+ this.stop();
307
+ throw e;
263
308
  }
264
309
  }
265
310
  }
@@ -275,11 +320,14 @@ export class WebViewer {
275
320
  if (!this.#handle) {
276
321
  throw new Error(`attempted to close \`${rrd}\` in a stopped viewer`);
277
322
  }
323
+
278
324
  const urls = Array.isArray(rrd) ? rrd : [rrd];
279
325
  for (const url of urls) {
280
- this.#handle.remove_receiver(url);
281
- if (this.#handle.has_panicked()) {
282
- throw new Error(`Web viewer crashed: ${this.#handle.panic_message()}`);
326
+ try {
327
+ this.#handle.remove_receiver(url);
328
+ } catch (e) {
329
+ this.stop();
330
+ throw e;
283
331
  }
284
332
  }
285
333
  }
@@ -298,8 +346,14 @@ export class WebViewer {
298
346
  this.#state = "stopped";
299
347
 
300
348
  this.#canvas?.remove();
301
- this.#handle?.destroy();
302
- this.#handle?.free();
349
+
350
+ try {
351
+ this.#handle?.destroy();
352
+ this.#handle?.free();
353
+ } catch (e) {
354
+ this.#handle = null;
355
+ throw e;
356
+ }
303
357
 
304
358
  this.#canvas = null;
305
359
  this.#handle = null;
@@ -320,25 +374,48 @@ export class WebViewer {
320
374
  `attempted to open channel \"${channel_name}\" in a stopped web viewer`,
321
375
  );
322
376
  }
377
+
323
378
  const id = crypto.randomUUID();
324
- this.#handle.open_channel(id, channel_name);
379
+
380
+ try {
381
+ this.#handle.open_channel(id, channel_name);
382
+ } catch (e) {
383
+ this.stop();
384
+ throw e;
385
+ }
386
+
325
387
  const on_send = (/** @type {Uint8Array} */ data: Uint8Array) => {
326
388
  if (!this.#handle) {
327
389
  throw new Error(
328
390
  `attempted to send data through channel \"${channel_name}\" to a stopped web viewer`,
329
391
  );
330
392
  }
331
- this.#handle.send_rrd_to_channel(id, data);
393
+
394
+ try {
395
+ this.#handle.send_rrd_to_channel(id, data);
396
+ } catch (e) {
397
+ this.stop();
398
+ throw e;
399
+ }
332
400
  };
401
+
333
402
  const on_close = () => {
334
403
  if (!this.#handle) {
335
404
  throw new Error(
336
405
  `attempted to send data through channel \"${channel_name}\" to a stopped web viewer`,
337
406
  );
338
407
  }
339
- this.#handle.close_channel(id);
408
+
409
+ try {
410
+ this.#handle.close_channel(id);
411
+ } catch (e) {
412
+ this.stop();
413
+ throw e;
414
+ }
340
415
  };
416
+
341
417
  const get_state = () => this.#state;
418
+
342
419
  return new LogChannel(on_send, on_close, get_state);
343
420
  }
344
421
 
@@ -354,7 +431,13 @@ export class WebViewer {
354
431
  `attempted to set ${panel} panel to ${state} in a stopped web viewer`,
355
432
  );
356
433
  }
357
- this.#handle.override_panel_state(panel, state);
434
+
435
+ try {
436
+ this.#handle.override_panel_state(panel, state);
437
+ } catch (e) {
438
+ this.stop();
439
+ throw e;
440
+ }
358
441
  }
359
442
 
360
443
  /**
@@ -368,7 +451,13 @@ export class WebViewer {
368
451
  `attempted to toggle panel overrides in a stopped web viewer`,
369
452
  );
370
453
  }
371
- this.#handle.toggle_panel_overrides(value as boolean | undefined);
454
+
455
+ try {
456
+ this.#handle.toggle_panel_overrides(value as boolean | undefined);
457
+ } catch (e) {
458
+ this.stop();
459
+ throw e;
460
+ }
372
461
  }
373
462
 
374
463
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rerun-io/web-viewer",
3
- "version": "0.17.0-alpha.7",
3
+ "version": "0.17.0-alpha.9",
4
4
  "description": "Embed the Rerun web viewer in your app",
5
5
  "licenses": [
6
6
  {
@@ -11,10 +11,10 @@
11
11
  }
12
12
  ],
13
13
  "scripts": {
14
- "build:wasm": "cargo run -p re_dev_tools -- build-web-viewer --release -g --module -o rerun_js/web-viewer",
15
- "build:js": "tsc",
14
+ "build:wasm": "node build-wasm.mjs --mode release",
15
+ "build:js": "tsc && node bundle.mjs",
16
16
  "build": "npm run build:wasm && npm run build:js",
17
- "build:wasm:debug": "cargo run -p re_dev_tools -- build-web-viewer --debug --module -o rerun_js/web-viewer",
17
+ "build:wasm:debug": "node build-wasm.mjs --mode debug",
18
18
  "build:debug": "npm run build:wasm:debug && npm run build:js"
19
19
  },
20
20
  "repository": {
@@ -28,6 +28,8 @@
28
28
  },
29
29
  "homepage": "https://rerun.io",
30
30
  "type": "module",
31
+ "main": "index.js",
32
+ "types": "index.d.ts",
31
33
  "exports": {
32
34
  ".": {
33
35
  "types": "./index.d.ts",
@@ -36,16 +38,19 @@
36
38
  "./re_viewer.js": {
37
39
  "types": "./re_viewer.d.ts",
38
40
  "import": "./re_viewer.js"
41
+ },
42
+ "./inlined.js": {
43
+ "types": "./inlined.d.ts",
44
+ "import": "./inlined.js"
39
45
  }
40
46
  },
41
47
  "files": [
42
- "index.ts",
43
48
  "index.d.ts",
44
49
  "index.d.ts.map",
45
50
  "index.js",
46
51
  "index.js.map",
52
+ "index.ts",
47
53
  "package.json",
48
- "re_viewer_bg.js",
49
54
  "re_viewer_bg.wasm",
50
55
  "re_viewer_bg.wasm.d.ts",
51
56
  "re_viewer.d.ts",