@r-universe/webr 2023.6.21 → 2023.8.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/dist/R.bin.data +3920 -2189
  2. package/dist/R.bin.js +1 -6
  3. package/dist/repl/App.d.ts +15 -0
  4. package/dist/repl/components/Editor.d.ts +26 -0
  5. package/dist/repl/components/Files.d.ts +19 -0
  6. package/dist/repl/components/Plot.d.ts +7 -0
  7. package/dist/repl/components/Terminal.d.ts +9 -0
  8. package/dist/repl/components/utils.d.ts +11 -0
  9. package/dist/tests/webR/error.test.d.ts +1 -0
  10. package/dist/vfs/usr/lib/R/library/grDevices/afm/ArialMT-Bold.afm.gz +0 -0
  11. package/dist/vfs/usr/lib/R/library/grDevices/afm/ArialMT-BoldItalic.afm.gz +0 -0
  12. package/dist/vfs/usr/lib/R/library/grDevices/afm/ArialMT-Italic.afm.gz +0 -0
  13. package/dist/vfs/usr/lib/R/library/grDevices/afm/ArialMT.afm.gz +0 -0
  14. package/dist/vfs/usr/lib/R/library/grDevices/afm/CM_boldx_10.afm.gz +0 -0
  15. package/dist/vfs/usr/lib/R/library/grDevices/afm/CM_boldx_italic_10.afm.gz +0 -0
  16. package/dist/vfs/usr/lib/R/library/grDevices/afm/CM_italic_10.afm.gz +0 -0
  17. package/dist/vfs/usr/lib/R/library/grDevices/afm/CM_regular_10.afm.gz +0 -0
  18. package/dist/vfs/usr/lib/R/library/grDevices/afm/CM_symbol_10.afm.gz +0 -0
  19. package/dist/vfs/usr/lib/R/library/grDevices/afm/Courier-Bold.afm.gz +0 -0
  20. package/dist/vfs/usr/lib/R/library/grDevices/afm/Courier-BoldOblique.afm.gz +0 -0
  21. package/dist/vfs/usr/lib/R/library/grDevices/afm/Courier-Oblique.afm.gz +0 -0
  22. package/dist/vfs/usr/lib/R/library/grDevices/afm/Courier.afm.gz +0 -0
  23. package/dist/vfs/usr/lib/R/library/grDevices/afm/Helvetica-Bold.afm.gz +0 -0
  24. package/dist/vfs/usr/lib/R/library/grDevices/afm/Helvetica-BoldOblique.afm.gz +0 -0
  25. package/dist/vfs/usr/lib/R/library/grDevices/afm/Helvetica-Oblique.afm.gz +0 -0
  26. package/dist/vfs/usr/lib/R/library/grDevices/afm/Helvetica.afm.gz +0 -0
  27. package/dist/vfs/usr/lib/R/library/grDevices/afm/Symbol.afm.gz +0 -0
  28. package/dist/vfs/usr/lib/R/library/grDevices/afm/Times-Bold.afm.gz +0 -0
  29. package/dist/vfs/usr/lib/R/library/grDevices/afm/Times-BoldItalic.afm.gz +0 -0
  30. package/dist/vfs/usr/lib/R/library/grDevices/afm/Times-Italic.afm.gz +0 -0
  31. package/dist/vfs/usr/lib/R/library/grDevices/afm/Times-Roman.afm.gz +0 -0
  32. package/dist/vfs/usr/lib/R/library/grDevices/afm/ZapfDingbats.afm.gz +0 -0
  33. package/dist/vfs/usr/lib/R/library/grDevices/afm/a010013l.afm.gz +0 -0
  34. package/dist/vfs/usr/lib/R/library/grDevices/afm/a010015l.afm.gz +0 -0
  35. package/dist/vfs/usr/lib/R/library/grDevices/afm/a010033l.afm.gz +0 -0
  36. package/dist/vfs/usr/lib/R/library/grDevices/afm/a010035l.afm.gz +0 -0
  37. package/dist/vfs/usr/lib/R/library/grDevices/afm/agd_____.afm.gz +0 -0
  38. package/dist/vfs/usr/lib/R/library/grDevices/afm/agdo____.afm.gz +0 -0
  39. package/dist/vfs/usr/lib/R/library/grDevices/afm/agw_____.afm.gz +0 -0
  40. package/dist/vfs/usr/lib/R/library/grDevices/afm/agwo____.afm.gz +0 -0
  41. package/dist/vfs/usr/lib/R/library/grDevices/afm/b018012l.afm.gz +0 -0
  42. package/dist/vfs/usr/lib/R/library/grDevices/afm/b018015l.afm.gz +0 -0
  43. package/dist/vfs/usr/lib/R/library/grDevices/afm/b018032l.afm.gz +0 -0
  44. package/dist/vfs/usr/lib/R/library/grDevices/afm/b018035l.afm.gz +0 -0
  45. package/dist/vfs/usr/lib/R/library/grDevices/afm/bkd_____.afm.gz +0 -0
  46. package/dist/vfs/usr/lib/R/library/grDevices/afm/bkdi____.afm.gz +0 -0
  47. package/dist/vfs/usr/lib/R/library/grDevices/afm/bkl_____.afm.gz +0 -0
  48. package/dist/vfs/usr/lib/R/library/grDevices/afm/bkli____.afm.gz +0 -0
  49. package/dist/vfs/usr/lib/R/library/grDevices/afm/c059013l.afm.gz +0 -0
  50. package/dist/vfs/usr/lib/R/library/grDevices/afm/c059016l.afm.gz +0 -0
  51. package/dist/vfs/usr/lib/R/library/grDevices/afm/c059033l.afm.gz +0 -0
  52. package/dist/vfs/usr/lib/R/library/grDevices/afm/c059036l.afm.gz +0 -0
  53. package/dist/vfs/usr/lib/R/library/grDevices/afm/cmbxti10.afm.gz +0 -0
  54. package/dist/vfs/usr/lib/R/library/grDevices/afm/cmti10.afm.gz +0 -0
  55. package/dist/vfs/usr/lib/R/library/grDevices/afm/cob_____.afm.gz +0 -0
  56. package/dist/vfs/usr/lib/R/library/grDevices/afm/cobo____.afm.gz +0 -0
  57. package/dist/vfs/usr/lib/R/library/grDevices/afm/com_____.afm.gz +0 -0
  58. package/dist/vfs/usr/lib/R/library/grDevices/afm/coo_____.afm.gz +0 -0
  59. package/dist/vfs/usr/lib/R/library/grDevices/afm/hv______.afm.gz +0 -0
  60. package/dist/vfs/usr/lib/R/library/grDevices/afm/hvb_____.afm.gz +0 -0
  61. package/dist/vfs/usr/lib/R/library/grDevices/afm/hvbo____.afm.gz +0 -0
  62. package/dist/vfs/usr/lib/R/library/grDevices/afm/hvn_____.afm.gz +0 -0
  63. package/dist/vfs/usr/lib/R/library/grDevices/afm/hvnb____.afm.gz +0 -0
  64. package/dist/vfs/usr/lib/R/library/grDevices/afm/hvnbo___.afm.gz +0 -0
  65. package/dist/vfs/usr/lib/R/library/grDevices/afm/hvno____.afm.gz +0 -0
  66. package/dist/vfs/usr/lib/R/library/grDevices/afm/hvo_____.afm.gz +0 -0
  67. package/dist/vfs/usr/lib/R/library/grDevices/afm/n019003l.afm.gz +0 -0
  68. package/dist/vfs/usr/lib/R/library/grDevices/afm/n019004l.afm.gz +0 -0
  69. package/dist/vfs/usr/lib/R/library/grDevices/afm/n019023l.afm.gz +0 -0
  70. package/dist/vfs/usr/lib/R/library/grDevices/afm/n019024l.afm.gz +0 -0
  71. package/dist/vfs/usr/lib/R/library/grDevices/afm/n019043l.afm.gz +0 -0
  72. package/dist/vfs/usr/lib/R/library/grDevices/afm/n019044l.afm.gz +0 -0
  73. package/dist/vfs/usr/lib/R/library/grDevices/afm/n019063l.afm.gz +0 -0
  74. package/dist/vfs/usr/lib/R/library/grDevices/afm/n019064l.afm.gz +0 -0
  75. package/dist/vfs/usr/lib/R/library/grDevices/afm/n021003l.afm.gz +0 -0
  76. package/dist/vfs/usr/lib/R/library/grDevices/afm/n021004l.afm.gz +0 -0
  77. package/dist/vfs/usr/lib/R/library/grDevices/afm/n021023l.afm.gz +0 -0
  78. package/dist/vfs/usr/lib/R/library/grDevices/afm/n021024l.afm.gz +0 -0
  79. package/dist/vfs/usr/lib/R/library/grDevices/afm/n022003l.afm.gz +0 -0
  80. package/dist/vfs/usr/lib/R/library/grDevices/afm/n022004l.afm.gz +0 -0
  81. package/dist/vfs/usr/lib/R/library/grDevices/afm/n022023l.afm.gz +0 -0
  82. package/dist/vfs/usr/lib/R/library/grDevices/afm/n022024l.afm.gz +0 -0
  83. package/dist/vfs/usr/lib/R/library/grDevices/afm/ncb_____.afm.gz +0 -0
  84. package/dist/vfs/usr/lib/R/library/grDevices/afm/ncbi____.afm.gz +0 -0
  85. package/dist/vfs/usr/lib/R/library/grDevices/afm/nci_____.afm.gz +0 -0
  86. package/dist/vfs/usr/lib/R/library/grDevices/afm/ncr_____.afm.gz +0 -0
  87. package/dist/vfs/usr/lib/R/library/grDevices/afm/p052003l.afm.gz +0 -0
  88. package/dist/vfs/usr/lib/R/library/grDevices/afm/p052004l.afm.gz +0 -0
  89. package/dist/vfs/usr/lib/R/library/grDevices/afm/p052023l.afm.gz +0 -0
  90. package/dist/vfs/usr/lib/R/library/grDevices/afm/p052024l.afm.gz +0 -0
  91. package/dist/vfs/usr/lib/R/library/grDevices/afm/pob_____.afm.gz +0 -0
  92. package/dist/vfs/usr/lib/R/library/grDevices/afm/pobi____.afm.gz +0 -0
  93. package/dist/vfs/usr/lib/R/library/grDevices/afm/poi_____.afm.gz +0 -0
  94. package/dist/vfs/usr/lib/R/library/grDevices/afm/por_____.afm.gz +0 -0
  95. package/dist/vfs/usr/lib/R/library/grDevices/afm/s050000l.afm.gz +0 -0
  96. package/dist/vfs/usr/lib/R/library/grDevices/afm/sy______.afm.gz +0 -0
  97. package/dist/vfs/usr/lib/R/library/grDevices/afm/tib_____.afm.gz +0 -0
  98. package/dist/vfs/usr/lib/R/library/grDevices/afm/tibi____.afm.gz +0 -0
  99. package/dist/vfs/usr/lib/R/library/grDevices/afm/tii_____.afm.gz +0 -0
  100. package/dist/vfs/usr/lib/R/library/grDevices/afm/tir_____.afm.gz +0 -0
  101. package/dist/vfs/usr/lib/R/library/parallel/DESCRIPTION +1 -1
  102. package/dist/vfs/usr/lib/R/library/parallel/Meta/package.rds +0 -0
  103. package/dist/vfs/usr/lib/R/library/tcltk/DESCRIPTION +1 -1
  104. package/dist/vfs/usr/lib/R/library/tcltk/Meta/package.rds +0 -0
  105. package/dist/vfs/usr/lib/R/library/tools/help/tools.rdb +0 -0
  106. package/dist/vfs/usr/lib/R/library/translations/Meta/package.rds +0 -0
  107. package/dist/webR/console.d.ts +2 -2
  108. package/dist/webR/error.d.ts +26 -0
  109. package/dist/webR/payload.d.ts +1 -1
  110. package/dist/webR/webr-chan.d.ts +18 -0
  111. package/dist/webR/webr-main.d.ts +6 -0
  112. package/dist/webr-serviceworker.js +14 -3
  113. package/dist/webr-serviceworker.js.map +3 -3
  114. package/dist/webr-serviceworker.mjs +14 -3
  115. package/dist/webr-serviceworker.mjs.map +3 -3
  116. package/dist/webr-worker.js +43 -24
  117. package/dist/webr-worker.js.map +3 -3
  118. package/dist/webr.cjs +3 -3
  119. package/dist/webr.cjs.map +4 -4
  120. package/dist/webr.mjs +3 -3
  121. package/dist/webr.mjs.map +4 -4
  122. package/package.json +19 -9
  123. package/templates/repl.html +9 -127
  124. package/dist/repl/fstree.d.ts +0 -57
  125. package/dist/repl/repl.d.ts +0 -1
  126. package/dist/vfs/usr/lib/R/library/grDevices/libs/grDevices.so +0 -0
  127. package/dist/vfs/usr/lib/R/modules/internet.so +0 -0
  128. package/dist/vfs/usr/lib/R/modules/lapack.so +0 -0
@@ -1936,6 +1936,19 @@ var require_XMLHttpRequest = __commonJS({
1936
1936
  }
1937
1937
  });
1938
1938
 
1939
+ // webR/error.ts
1940
+ var WebRError = class extends Error {
1941
+ constructor(msg) {
1942
+ super(msg);
1943
+ this.name = this.constructor.name;
1944
+ Object.setPrototypeOf(this, new.target.prototype);
1945
+ }
1946
+ };
1947
+ var WebRWorkerError = class extends WebRError {
1948
+ };
1949
+ var WebRChannelError = class extends WebRError {
1950
+ };
1951
+
1939
1952
  // webR/compat.ts
1940
1953
  var IN_NODE = typeof process !== "undefined" && process.release && process.release.name === "node";
1941
1954
  var loadScript;
@@ -1965,7 +1978,7 @@ if (globalThis.document) {
1965
1978
  await Promise.resolve().then(() => __toESM(require(nodePathMod.resolve(url))));
1966
1979
  };
1967
1980
  } else {
1968
- throw new Error("Cannot determine runtime environment");
1981
+ throw new WebRError("Cannot determine runtime environment");
1969
1982
  }
1970
1983
 
1971
1984
  // webR/utils.ts
@@ -2025,7 +2038,7 @@ function isCrossOrigin(urlString) {
2025
2038
  function throwUnreachable(context) {
2026
2039
  let msg = "Reached the unreachable";
2027
2040
  msg = msg + (context ? ": " + context : ".");
2028
- throw new Error(msg);
2041
+ throw new WebRError(msg);
2029
2042
  }
2030
2043
 
2031
2044
  // webR/chan/task-common.ts
@@ -2208,9 +2221,11 @@ function newSyncRequest(msg, data) {
2208
2221
  }
2209
2222
 
2210
2223
  // webR/payload.ts
2211
- function webRPayloadError(payload) {
2212
- const e = new Error(payload.obj.message);
2213
- e.name = payload.obj.name;
2224
+ function webRPayloadAsError(payload) {
2225
+ const e = new WebRWorkerError(payload.obj.message);
2226
+ if (payload.obj.name !== "Error") {
2227
+ e.name = payload.obj.name;
2228
+ }
2214
2229
  e.stack = payload.obj.stack;
2215
2230
  return e;
2216
2231
  }
@@ -2263,7 +2278,7 @@ var ChannelMain = class {
2263
2278
  const payload = msg.data.resp;
2264
2279
  __privateGet(this, _parked).delete(uuid);
2265
2280
  if (payload.payloadType === "err") {
2266
- handles.reject(webRPayloadError(payload));
2281
+ handles.reject(webRPayloadAsError(payload));
2267
2282
  } else {
2268
2283
  handles.resolve(payload);
2269
2284
  }
@@ -2500,12 +2515,12 @@ var SharedBufferChannelMain = class extends ChannelMain {
2500
2515
  break;
2501
2516
  }
2502
2517
  default:
2503
- throw new TypeError(`Unsupported request type '${payload.type}'.`);
2518
+ throw new WebRChannelError(`Unsupported request type '${payload.type}'.`);
2504
2519
  }
2505
2520
  return;
2506
2521
  }
2507
2522
  case "request":
2508
- throw new TypeError(
2523
+ throw new WebRChannelError(
2509
2524
  "Can't send messages of type 'request' from a worker. Please Use 'sync-request' instead."
2510
2525
  );
2511
2526
  }
@@ -2535,7 +2550,7 @@ var SharedBufferChannelMain = class extends ChannelMain {
2535
2550
  }
2536
2551
  interrupt() {
2537
2552
  if (!__privateGet(this, _interruptBuffer)) {
2538
- throw new Error("Failed attempt to interrupt before initialising interruptBuffer");
2553
+ throw new WebRChannelError("Failed attempt to interrupt before initialising interruptBuffer");
2539
2554
  }
2540
2555
  this.inputQueue.reset();
2541
2556
  __privateGet(this, _interruptBuffer)[0] = 1;
@@ -2649,7 +2664,7 @@ var ServiceWorkerChannelMain = class extends ChannelMain {
2649
2664
  return;
2650
2665
  }
2651
2666
  case "request":
2652
- throw new TypeError(
2667
+ throw new WebRChannelError(
2653
2668
  "Can't send messages of type 'request' from a worker.Use service worker fetch request instead."
2654
2669
  );
2655
2670
  }
@@ -2689,7 +2704,7 @@ var ServiceWorkerChannelMain = class extends ChannelMain {
2689
2704
  activeRegistration() {
2690
2705
  var _a;
2691
2706
  if (!((_a = __privateGet(this, _registration)) == null ? void 0 : _a.active)) {
2692
- throw new Error("Attempted to obtain a non-existent active registration.");
2707
+ throw new WebRChannelError("Attempted to obtain a non-existent active registration.");
2693
2708
  }
2694
2709
  return __privateGet(this, _registration).active;
2695
2710
  }
@@ -2731,7 +2746,7 @@ onMessageFromServiceWorker_fn = async function(event) {
2731
2746
  const uuid = event.data.data;
2732
2747
  const message = __privateGet(this, _syncMessageCache).get(uuid);
2733
2748
  if (!message) {
2734
- throw new Error("Request not found during service worker XHR request");
2749
+ throw new WebRChannelError("Request not found during service worker XHR request");
2735
2750
  }
2736
2751
  __privateGet(this, _syncMessageCache).delete(uuid);
2737
2752
  switch (message.type) {
@@ -2756,7 +2771,7 @@ onMessageFromServiceWorker_fn = async function(event) {
2756
2771
  break;
2757
2772
  }
2758
2773
  default:
2759
- throw new TypeError(`Unsupported request type '${message.type}'.`);
2774
+ throw new WebRChannelError(`Unsupported request type '${message.type}'.`);
2760
2775
  }
2761
2776
  return;
2762
2777
  }
@@ -2772,19 +2787,20 @@ handleEventsFromWorker_fn2 = function(worker) {
2772
2787
  }
2773
2788
  };
2774
2789
  _onMessageFromWorker2 = new WeakMap();
2775
- var _ep2, _mainThreadId, _location, _dispatch2, _interrupt2;
2790
+ var _ep2, _mainThreadId, _location, _lastInterruptReq, _dispatch2, _interrupt2;
2776
2791
  var ServiceWorkerChannelWorker = class {
2777
2792
  constructor(data) {
2778
2793
  __privateAdd(this, _ep2, void 0);
2779
2794
  __privateAdd(this, _mainThreadId, void 0);
2780
2795
  __privateAdd(this, _location, void 0);
2796
+ __privateAdd(this, _lastInterruptReq, Date.now());
2781
2797
  __privateAdd(this, _dispatch2, () => 0);
2782
2798
  __privateAdd(this, _interrupt2, () => {
2783
2799
  });
2784
2800
  this.onMessageFromMainThread = () => {
2785
2801
  };
2786
2802
  if (!data.clientId || !data.location) {
2787
- throw Error("Can't start service worker channel");
2803
+ throw new WebRChannelError("Can't start service worker channel");
2788
2804
  }
2789
2805
  __privateSet(this, _mainThreadId, data.clientId);
2790
2806
  __privateSet(this, _location, data.location);
@@ -2845,10 +2861,13 @@ var ServiceWorkerChannelWorker = class {
2845
2861
  __privateSet(this, _interrupt2, interrupt);
2846
2862
  }
2847
2863
  handleInterrupt() {
2848
- const response = this.syncRequest({ type: "interrupt" });
2849
- const interrupted = response.data.resp;
2850
- if (interrupted) {
2851
- __privateGet(this, _interrupt2).call(this);
2864
+ if (Date.now() > __privateGet(this, _lastInterruptReq) + 1e3) {
2865
+ __privateSet(this, _lastInterruptReq, Date.now());
2866
+ const response = this.syncRequest({ type: "interrupt" });
2867
+ const interrupted = response.data.resp;
2868
+ if (interrupted) {
2869
+ __privateGet(this, _interrupt2).call(this);
2870
+ }
2852
2871
  }
2853
2872
  }
2854
2873
  setDispatchHandler(dispatch2) {
@@ -2858,6 +2877,7 @@ var ServiceWorkerChannelWorker = class {
2858
2877
  _ep2 = new WeakMap();
2859
2878
  _mainThreadId = new WeakMap();
2860
2879
  _location = new WeakMap();
2880
+ _lastInterruptReq = new WeakMap();
2861
2881
  _dispatch2 = new WeakMap();
2862
2882
  _interrupt2 = new WeakMap();
2863
2883
 
@@ -2874,7 +2894,7 @@ function newChannelWorker(msg) {
2874
2894
  case ChannelType.ServiceWorker:
2875
2895
  return new ServiceWorkerChannelWorker(msg.data);
2876
2896
  default:
2877
- throw new Error("Unknown worker channel type recieved");
2897
+ throw new WebRChannelError("Unknown worker channel type recieved");
2878
2898
  }
2879
2899
  }
2880
2900
 
@@ -4456,7 +4476,9 @@ function init(config) {
4456
4476
  if (IN_NODE) {
4457
4477
  globalThis.FS = Module.FS;
4458
4478
  }
4459
- Module.createLazyFilesystem();
4479
+ if (_config.createLazyFilesystem) {
4480
+ Module.createLazyFilesystem();
4481
+ }
4460
4482
  Module.FS.mkdirTree(_config.homedir);
4461
4483
  Module.ENV.HOME = _config.homedir;
4462
4484
  Module.FS.chdir(_config.homedir);
@@ -4518,9 +4540,6 @@ function init(config) {
4518
4540
  Module.setPrompt = (prompt) => {
4519
4541
  chan == null ? void 0 : chan.write({ type: "prompt", data: prompt });
4520
4542
  };
4521
- Module.canvasExec = (op) => {
4522
- chan == null ? void 0 : chan.write({ type: "canvasExec", data: op });
4523
- };
4524
4543
  globalThis.Module = Module;
4525
4544
  setTimeout(() => {
4526
4545
  const scriptSrc = `${_config.baseUrl}R.bin.js`;