@marko/run 0.4.4 → 0.4.6

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.
@@ -1,11 +1,15 @@
1
1
  // src/adapter/index.ts
2
- import path from "path";
2
+ import path2 from "path";
3
3
  import fs2 from "fs";
4
4
  import inspector from "inspector";
5
5
  import { fileURLToPath } from "url";
6
6
 
7
7
  // src/adapter/dev-server.ts
8
- import { createServer } from "vite";
8
+ import path from "path";
9
+ import {
10
+ createServer,
11
+ buildErrorMessage
12
+ } from "vite";
9
13
 
10
14
  // src/adapter/polyfill.ts
11
15
  import * as webStream from "stream/web";
@@ -43,11 +47,9 @@ function getSetCookie_platform(headers) {
43
47
  var inExpiresDateRgs = /Expires\s*=\s*(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s*$/i;
44
48
  function getSetCookie_fallback(headers) {
45
49
  const value = headers.get("set-cookie");
46
- if (!value)
47
- return void 0;
50
+ if (!value) return void 0;
48
51
  let sepIndex = value.indexOf(",") + 1;
49
- if (!sepIndex)
50
- return value;
52
+ if (!sepIndex) return value;
51
53
  let index = 0;
52
54
  let setCookie = void 0;
53
55
  let setCookies = void 0;
@@ -62,8 +64,7 @@ function getSetCookie_fallback(headers) {
62
64
  setCookie = valuePart;
63
65
  }
64
66
  index = sepIndex;
65
- while (value.charCodeAt(index) === 32)
66
- index++;
67
+ while (value.charCodeAt(index) === 32) index++;
67
68
  }
68
69
  sepIndex = value.indexOf(",", sepIndex) + 1;
69
70
  } while (sepIndex);
@@ -117,6 +118,13 @@ function copyResponseHeaders(response, headers) {
117
118
  appendHeader(response, "set-cookie", setCookies);
118
119
  }
119
120
  }
121
+ function normalizeError(error) {
122
+ if (error.cause && !error.message) {
123
+ error.message = error.cause.message;
124
+ error.stack || (error.stack = error.cause.stack);
125
+ }
126
+ return error;
127
+ }
120
128
  function createMiddleware(fetch2, options) {
121
129
  const {
122
130
  origin = process.env.ORIGIN,
@@ -144,13 +152,14 @@ function createMiddleware(fetch2, options) {
144
152
  }
145
153
  }
146
154
  function onSignalAborted() {
155
+ const error = normalizeError(signal.reason);
147
156
  if (next) {
148
- next(signal.reason);
157
+ next(error);
149
158
  } else {
150
159
  if (!res.destroyed && res.socket) {
151
160
  res.socket.destroySoon();
152
161
  }
153
- console.error(signal.reason);
162
+ console.error(error);
154
163
  }
155
164
  }
156
165
  if (process.env.NODE_ENV !== "production" && globalThis.__marko_run_dev__ && ((_a = req.headers.accept) == null ? void 0 : _a.includes("text/html"))) {
@@ -161,7 +170,7 @@ function createMiddleware(fetch2, options) {
161
170
  signal.addEventListener("abort", sendError);
162
171
  }
163
172
  function sendError() {
164
- const { message, stack = "" } = signal.reason;
173
+ const { message, stack = "" } = normalizeError(signal.reason);
165
174
  ws.send(
166
175
  JSON.stringify({
167
176
  type: "error",
@@ -195,6 +204,7 @@ function createMiddleware(fetch2, options) {
195
204
  try {
196
205
  response = await fetch2(request, platform);
197
206
  } catch (err) {
207
+ normalizeError(err);
198
208
  if (next) {
199
209
  next(err);
200
210
  } else {
@@ -241,7 +251,7 @@ async function writeResponse(reader, res, controller) {
241
251
  }
242
252
  }
243
253
  var bodyConsumedErrorStream = new ReadableStream({
244
- start(controller) {
254
+ pull(controller) {
245
255
  controller.error(
246
256
  new Error(
247
257
  "The request body stream was already consumed by something before Marko Run."
@@ -250,9 +260,6 @@ var bodyConsumedErrorStream = new ReadableStream({
250
260
  }
251
261
  });
252
262
 
253
- // src/adapter/dev-server.ts
254
- import { inspect } from "util";
255
-
256
263
  // src/adapter/logger.ts
257
264
  import kleur from "kleur";
258
265
  import DraftLog from "draftlog";
@@ -447,130 +454,35 @@ function createAnimationManager(options = {}) {
447
454
  };
448
455
  }
449
456
 
450
- // src/adapter/dev-server.ts
451
- async function createViteDevServer(config2) {
452
- const devServer = await createServer({
453
- ...config2,
454
- appType: "custom",
455
- server: { ...config2 == null ? void 0 : config2.server, middlewareMode: true }
456
- });
457
- getDevGlobal().addDevServer(devServer);
458
- devServer.middlewares.use(logger_default());
459
- return devServer;
460
- }
461
- async function createDevServer(config2) {
462
- const devServer = await createViteDevServer(config2);
463
- const routerMiddleware = createMiddleware(
464
- (request, platform) => globalThis.__marko_run__.fetch(request, platform)
457
+ // src/adapter/utils.ts
458
+ import supporsColor from "supports-color";
459
+ import kleur2 from "kleur";
460
+ function stripAnsi(string) {
461
+ return string.replace(
462
+ /([\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><])/g,
463
+ ""
465
464
  );
466
- devServer.middlewares.use(async (req, res, next) => {
467
- function handleNext(err) {
468
- var _a;
469
- if (err) {
470
- if (err instanceof Error) {
471
- devServer.ssrFixStacktrace(err);
472
- }
473
- console.error(err);
474
- if (res.headersSent) {
475
- if (!res.destroyed) {
476
- (_a = res.socket) == null ? void 0 : _a.destroySoon();
477
- }
478
- } else {
479
- res.statusCode = 500;
480
- res.end(
481
- inspect(err).replace(
482
- /([\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><])/g,
483
- ""
484
- )
485
- );
486
- }
487
- } else {
488
- next == null ? void 0 : next();
489
- }
490
- }
491
- try {
492
- await devServer.ssrLoadModule("@marko/run/router");
493
- } catch (err) {
494
- return handleNext(err);
495
- }
496
- routerMiddleware(req, res, handleNext);
497
- });
498
- return devServer;
499
465
  }
500
- var ClientIdCookieName = "marko-run-client-id";
501
- function getClientId(req) {
502
- if (req.headers.cookie) {
503
- const cookie = req.headers.cookie.split(/;\s+/).find((c) => c.startsWith(ClientIdCookieName));
504
- if (cookie) {
505
- return cookie.slice(ClientIdCookieName.length + 1);
506
- }
507
- }
466
+ function cleanStack(stack) {
467
+ return stack.split(/\n/).filter((l) => /^\s*at/.test(l)).join("\n");
508
468
  }
509
- var devGlobal;
510
- function getDevGlobal() {
511
- if (!devGlobal) {
512
- let handleConnection2 = function(ws, req) {
513
- if (callbacks == null ? void 0 : callbacks.length) {
514
- const id = getClientId(req);
515
- const now = Date.now();
516
- const nextCallbacks = [];
517
- for (const entry of callbacks) {
518
- if (entry.id === id) {
519
- entry.callback(ws);
520
- } else if (entry.expires > now) {
521
- nextCallbacks.push(entry);
522
- }
523
- }
524
- callbacks = nextCallbacks;
525
- }
526
- };
527
- var handleConnection = handleConnection2;
528
- const devServers = /* @__PURE__ */ new Set();
529
- let callbacks = [];
530
- globalThis.__marko_run_dev__ = devGlobal = {
531
- devServers,
532
- addDevServer(devServer) {
533
- const originalClose = devServer.close;
534
- devServer.close = () => {
535
- devServers.delete(devServer);
536
- return originalClose.call(devServer);
537
- };
538
- devServers.add(devServer);
539
- devServer.ws.on("connection", handleConnection2);
540
- },
541
- clear() {
542
- callbacks = [];
543
- for (const devServer of devServers) {
544
- devServer.ws.off("connection", handleConnection2);
545
- devServer.close();
546
- }
547
- },
548
- onClient(res, callback) {
549
- const expires = Date.now() + 1e3;
550
- const id = Math.floor(Math.random() * expires).toString(36);
551
- callbacks.push({
552
- id,
553
- expires,
554
- callback
555
- });
556
- res.setHeader(
557
- "set-cookie",
558
- `${ClientIdCookieName}=${id}; Path=/; Max-Age=100; HttpOnly`
559
- );
560
- }
561
- };
562
- }
563
- return devGlobal;
469
+ function prepareError(err) {
470
+ var _a;
471
+ return {
472
+ message: stripAnsi(err.message),
473
+ stack: stripAnsi(cleanStack(err.stack || "")),
474
+ id: err.id,
475
+ frame: stripAnsi(err.frame || ""),
476
+ plugin: err.plugin,
477
+ pluginCode: (_a = err.pluginCode) == null ? void 0 : _a.toString(),
478
+ loc: err.loc
479
+ };
564
480
  }
565
-
566
- // src/adapter/utils.ts
567
- import supporsColor from "supports-color";
568
- import kleur2 from "kleur";
569
481
  function logInfoBox(address, explorer) {
570
482
  const color = !!supporsColor.stdout;
571
483
  let message = kleur2.bold("Marko Run");
572
484
  if (true) {
573
- message += ` v${"0.4.4"}`;
485
+ message += ` v${"0.4.6"}`;
574
486
  }
575
487
  message += "\n\n";
576
488
  message += kleur2.dim("Server listening at");
@@ -678,8 +590,7 @@ B\u2572 \u2572 GG\u203E\u203E\u203E\u203E O\u2571 \u2571 P\u2571 \u2571
678
590
  lineWidth = 0;
679
591
  }
680
592
  } else if (/[A-Z]/.test(char)) {
681
- while (source[i + 1] === char)
682
- i++;
593
+ while (source[i + 1] === char) i++;
683
594
  if (color) {
684
595
  line += colorEscapeCodes[char];
685
596
  }
@@ -710,6 +621,137 @@ B\u2572 \u2572 GG\u203E\u203E\u203E\u203E O\u2571 \u2571 P\u2571 \u2571
710
621
  return { lines, width };
711
622
  }
712
623
 
624
+ // src/adapter/dev-server.ts
625
+ async function createViteDevServer(config2) {
626
+ const devServer = await createServer({
627
+ ...config2,
628
+ appType: "custom",
629
+ server: { ...config2 == null ? void 0 : config2.server, middlewareMode: true }
630
+ });
631
+ getDevGlobal().addDevServer(devServer);
632
+ devServer.middlewares.use(logger_default());
633
+ return devServer;
634
+ }
635
+ async function createDevServer(config2) {
636
+ const devServer = await createViteDevServer(config2);
637
+ const routerMiddleware = createMiddleware(
638
+ (request, platform) => globalThis.__marko_run__.fetch(request, platform)
639
+ );
640
+ devServer.middlewares.use(async (req, res, next) => {
641
+ try {
642
+ await devServer.ssrLoadModule("@marko/run/router");
643
+ } catch (err) {
644
+ return next(err);
645
+ }
646
+ routerMiddleware(req, res, next);
647
+ }).use(createErrorMiddleware(devServer));
648
+ return devServer;
649
+ }
650
+ var ClientIdCookieName = "marko-run-client-id";
651
+ function getClientId(req) {
652
+ if (req.headers.cookie) {
653
+ const cookie = req.headers.cookie.split(/;\s+/).find((c) => c.startsWith(ClientIdCookieName));
654
+ if (cookie) {
655
+ return cookie.slice(ClientIdCookieName.length + 1);
656
+ }
657
+ }
658
+ }
659
+ var devGlobal;
660
+ function getDevGlobal() {
661
+ if (!devGlobal) {
662
+ let handleConnection2 = function(ws, req) {
663
+ if (callbacks == null ? void 0 : callbacks.length) {
664
+ const id = getClientId(req);
665
+ const now = Date.now();
666
+ const nextCallbacks = [];
667
+ for (const entry of callbacks) {
668
+ if (entry.id === id) {
669
+ entry.callback(ws);
670
+ } else if (entry.expires > now) {
671
+ nextCallbacks.push(entry);
672
+ }
673
+ }
674
+ callbacks = nextCallbacks;
675
+ }
676
+ };
677
+ var handleConnection = handleConnection2;
678
+ const devServers = /* @__PURE__ */ new Set();
679
+ let callbacks = [];
680
+ globalThis.__marko_run_dev__ = devGlobal = {
681
+ devServers,
682
+ addDevServer(devServer) {
683
+ const originalClose = devServer.close;
684
+ devServer.close = () => {
685
+ devServers.delete(devServer);
686
+ return originalClose.call(devServer);
687
+ };
688
+ devServers.add(devServer);
689
+ devServer.ws.on("connection", handleConnection2);
690
+ },
691
+ clear() {
692
+ callbacks = [];
693
+ for (const devServer of devServers) {
694
+ devServer.ws.off("connection", handleConnection2);
695
+ devServer.close();
696
+ }
697
+ },
698
+ onClient(res, callback) {
699
+ const expires = Date.now() + 1e3;
700
+ const id = Math.floor(Math.random() * expires).toString(36);
701
+ callbacks.push({
702
+ id,
703
+ expires,
704
+ callback
705
+ });
706
+ res.setHeader(
707
+ "set-cookie",
708
+ `${ClientIdCookieName}=${id}; Path=/; Max-Age=100; HttpOnly`
709
+ );
710
+ }
711
+ };
712
+ }
713
+ return devGlobal;
714
+ }
715
+ function createErrorMiddleware(devServer) {
716
+ return function errorMiddleware(error, _req, res, _next) {
717
+ if (!error.id) {
718
+ devServer.config.logger.error(buildErrorMessage(error, [`\x1B[31;1mRequest failed with error: ${error.message}\x1B[0m`]));
719
+ }
720
+ res.statusCode = 500;
721
+ res.end(`
722
+ <!DOCTYPE html>
723
+ <html lang="en">
724
+ <head>
725
+ <meta charset="UTF-8" />
726
+ <title>Error</title>
727
+ <script type="module">
728
+ const error = ${JSON.stringify(prepareError(error)).replace(
729
+ /</g,
730
+ "\\u003c"
731
+ )}
732
+ try {
733
+ const { ErrorOverlay } = await import(${JSON.stringify(path.posix.join(devServer.config.base, "/@vite/client"))})
734
+ document.body.appendChild(new ErrorOverlay(error))
735
+ } catch {
736
+ const h = (tag, text) => {
737
+ const el = document.createElement(tag)
738
+ el.textContent = text
739
+ return el
740
+ }
741
+ document.body.appendChild(h('h1', 'Internal Server Error'))
742
+ document.body.appendChild(h('h2', error.message))
743
+ document.body.appendChild(h('pre', error.stack))
744
+ document.body.appendChild(h('p', '(Error overlay failed to load)'))
745
+ }
746
+ </script>
747
+ </head>
748
+ <body>
749
+ </body>
750
+ </html>
751
+ `);
752
+ };
753
+ }
754
+
713
755
  // src/vite/utils/server.ts
714
756
  import net from "net";
715
757
  import cp from "child_process";
@@ -882,9 +924,9 @@ var markoRunFilePrefix = "__marko-run__";
882
924
  var virtualFilePrefix = "virtual:marko-run";
883
925
 
884
926
  // src/adapter/index.ts
885
- var __dirname = path.dirname(fileURLToPath(import.meta.url));
886
- var defaultEntry = path.join(__dirname, "default-entry");
887
- var loadDevWorker = path.join(__dirname, "load-dev-worker.mjs");
927
+ var __dirname = path2.dirname(fileURLToPath(import.meta.url));
928
+ var defaultEntry = path2.join(__dirname, "default-entry");
929
+ var loadDevWorker = path2.join(__dirname, "load-dev-worker.mjs");
888
930
  function adapter() {
889
931
  return {
890
932
  name: "base-adapter",
@@ -935,9 +977,9 @@ function adapter() {
935
977
  }
936
978
  const devServer = await createDevServer(config2);
937
979
  envFile && await loadEnv(envFile);
938
- const inspect2 = getInspectOptions(options.args);
939
- if (inspect2) {
940
- inspector.open(inspect2.port, inspect2.host, inspect2.wait);
980
+ const inspect = getInspectOptions(options.args);
981
+ if (inspect) {
982
+ inspector.open(inspect.port, inspect.host, inspect.wait);
941
983
  }
942
984
  const listen = new Promise((resolve) => {
943
985
  const listener = devServer.middlewares.listen(port, () => {
@@ -982,8 +1024,8 @@ function adapter() {
982
1024
  return;
983
1025
  }
984
1026
  const promises = [];
985
- const cacheDir = path.resolve(__dirname, "../../.cache/explorer");
986
- const codeDir = path.join(cacheDir, "code");
1027
+ const cacheDir = path2.resolve(__dirname, "../../.cache/explorer");
1028
+ const codeDir = path2.join(cacheDir, "code");
987
1029
  if (fs2.existsSync(codeDir)) {
988
1030
  await fs2.promises.rm(codeDir, { recursive: true });
989
1031
  }
@@ -1005,7 +1047,7 @@ function adapter() {
1005
1047
  }
1006
1048
  if (fileName) {
1007
1049
  promises.push(
1008
- fs2.promises.writeFile(path.join(codeDir, fileName), code, {})
1050
+ fs2.promises.writeFile(path2.join(codeDir, fileName), code, {})
1009
1051
  );
1010
1052
  }
1011
1053
  }
@@ -1017,7 +1059,7 @@ function adapter() {
1017
1059
  }
1018
1060
  promises.push(
1019
1061
  fs2.promises.writeFile(
1020
- path.join(cacheDir, "data.json"),
1062
+ path2.join(cacheDir, "data.json"),
1021
1063
  JSON.stringify(data),
1022
1064
  {}
1023
1065
  )
@@ -1034,6 +1076,7 @@ async function startExplorer() {
1034
1076
  }
1035
1077
  export {
1036
1078
  createDevServer,
1079
+ createErrorMiddleware,
1037
1080
  createViteDevServer,
1038
1081
  adapter as default,
1039
1082
  getDevGlobal
@@ -76,11 +76,9 @@ function getSetCookie_platform(headers) {
76
76
  var inExpiresDateRgs = /Expires\s*=\s*(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s*$/i;
77
77
  function getSetCookie_fallback(headers) {
78
78
  const value = headers.get("set-cookie");
79
- if (!value)
80
- return void 0;
79
+ if (!value) return void 0;
81
80
  let sepIndex = value.indexOf(",") + 1;
82
- if (!sepIndex)
83
- return value;
81
+ if (!sepIndex) return value;
84
82
  let index = 0;
85
83
  let setCookie = void 0;
86
84
  let setCookies = void 0;
@@ -95,8 +93,7 @@ function getSetCookie_fallback(headers) {
95
93
  setCookie = valuePart;
96
94
  }
97
95
  index = sepIndex;
98
- while (value.charCodeAt(index) === 32)
99
- index++;
96
+ while (value.charCodeAt(index) === 32) index++;
100
97
  }
101
98
  sepIndex = value.indexOf(",", sepIndex) + 1;
102
99
  } while (sepIndex);
@@ -150,6 +147,13 @@ function copyResponseHeaders(response, headers) {
150
147
  appendHeader(response, "set-cookie", setCookies);
151
148
  }
152
149
  }
150
+ function normalizeError(error) {
151
+ if (error.cause && !error.message) {
152
+ error.message = error.cause.message;
153
+ error.stack || (error.stack = error.cause.stack);
154
+ }
155
+ return error;
156
+ }
153
157
  function createMiddleware(fetch2, options) {
154
158
  const {
155
159
  origin = process.env.ORIGIN,
@@ -177,13 +181,14 @@ function createMiddleware(fetch2, options) {
177
181
  }
178
182
  }
179
183
  function onSignalAborted() {
184
+ const error = normalizeError(signal.reason);
180
185
  if (next) {
181
- next(signal.reason);
186
+ next(error);
182
187
  } else {
183
188
  if (!res.destroyed && res.socket) {
184
189
  res.socket.destroySoon();
185
190
  }
186
- console.error(signal.reason);
191
+ console.error(error);
187
192
  }
188
193
  }
189
194
  if (process.env.NODE_ENV !== "production" && globalThis.__marko_run_dev__ && ((_a = req.headers.accept) == null ? void 0 : _a.includes("text/html"))) {
@@ -194,7 +199,7 @@ function createMiddleware(fetch2, options) {
194
199
  signal.addEventListener("abort", sendError);
195
200
  }
196
201
  function sendError() {
197
- const { message, stack = "" } = signal.reason;
202
+ const { message, stack = "" } = normalizeError(signal.reason);
198
203
  ws.send(
199
204
  JSON.stringify({
200
205
  type: "error",
@@ -228,6 +233,7 @@ function createMiddleware(fetch2, options) {
228
233
  try {
229
234
  response = await fetch2(request, platform);
230
235
  } catch (err) {
236
+ normalizeError(err);
231
237
  if (next) {
232
238
  next(err);
233
239
  } else {
@@ -274,7 +280,7 @@ async function writeResponse(reader, res, controller) {
274
280
  }
275
281
  }
276
282
  var bodyConsumedErrorStream = new ReadableStream({
277
- start(controller) {
283
+ pull(controller) {
278
284
  controller.error(
279
285
  new Error(
280
286
  "The request body stream was already consumed by something before Marko Run."
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import type { Fetch, Platform } from "../runtime";
3
2
  import { IncomingMessage, ServerResponse } from "http";
4
3
  export interface NodePlatformInfo {
@@ -34,11 +34,9 @@ function getSetCookie_platform(headers) {
34
34
  var inExpiresDateRgs = /Expires\s*=\s*(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s*$/i;
35
35
  function getSetCookie_fallback(headers) {
36
36
  const value = headers.get("set-cookie");
37
- if (!value)
38
- return void 0;
37
+ if (!value) return void 0;
39
38
  let sepIndex = value.indexOf(",") + 1;
40
- if (!sepIndex)
41
- return value;
39
+ if (!sepIndex) return value;
42
40
  let index = 0;
43
41
  let setCookie = void 0;
44
42
  let setCookies = void 0;
@@ -53,8 +51,7 @@ function getSetCookie_fallback(headers) {
53
51
  setCookie = valuePart;
54
52
  }
55
53
  index = sepIndex;
56
- while (value.charCodeAt(index) === 32)
57
- index++;
54
+ while (value.charCodeAt(index) === 32) index++;
58
55
  }
59
56
  sepIndex = value.indexOf(",", sepIndex) + 1;
60
57
  } while (sepIndex);
@@ -108,6 +105,13 @@ function copyResponseHeaders(response, headers) {
108
105
  appendHeader(response, "set-cookie", setCookies);
109
106
  }
110
107
  }
108
+ function normalizeError(error) {
109
+ if (error.cause && !error.message) {
110
+ error.message = error.cause.message;
111
+ error.stack || (error.stack = error.cause.stack);
112
+ }
113
+ return error;
114
+ }
111
115
  function createMiddleware(fetch2, options) {
112
116
  const {
113
117
  origin = process.env.ORIGIN,
@@ -135,13 +139,14 @@ function createMiddleware(fetch2, options) {
135
139
  }
136
140
  }
137
141
  function onSignalAborted() {
142
+ const error = normalizeError(signal.reason);
138
143
  if (next) {
139
- next(signal.reason);
144
+ next(error);
140
145
  } else {
141
146
  if (!res.destroyed && res.socket) {
142
147
  res.socket.destroySoon();
143
148
  }
144
- console.error(signal.reason);
149
+ console.error(error);
145
150
  }
146
151
  }
147
152
  if (process.env.NODE_ENV !== "production" && globalThis.__marko_run_dev__ && ((_a = req.headers.accept) == null ? void 0 : _a.includes("text/html"))) {
@@ -152,7 +157,7 @@ function createMiddleware(fetch2, options) {
152
157
  signal.addEventListener("abort", sendError);
153
158
  }
154
159
  function sendError() {
155
- const { message, stack = "" } = signal.reason;
160
+ const { message, stack = "" } = normalizeError(signal.reason);
156
161
  ws.send(
157
162
  JSON.stringify({
158
163
  type: "error",
@@ -186,6 +191,7 @@ function createMiddleware(fetch2, options) {
186
191
  try {
187
192
  response = await fetch2(request, platform);
188
193
  } catch (err) {
194
+ normalizeError(err);
189
195
  if (next) {
190
196
  next(err);
191
197
  } else {
@@ -232,7 +238,7 @@ async function writeResponse(reader, res, controller) {
232
238
  }
233
239
  }
234
240
  var bodyConsumedErrorStream = new ReadableStream({
235
- start(controller) {
241
+ pull(controller) {
236
242
  controller.error(
237
243
  new Error(
238
244
  "The request body stream was already consumed by something before Marko Run."
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import { ServerResponse } from 'http';
3
2
  declare global {
4
3
  interface Headers {
@@ -1,3 +1,18 @@
1
+ import type { Rollup } from "vite";
2
+ type RollupError = Rollup.RollupError;
3
+ export declare function prepareError(err: Error | RollupError): {
4
+ message: string;
5
+ stack: string;
6
+ id: string | undefined;
7
+ frame: string;
8
+ plugin: string | undefined;
9
+ pluginCode: string | undefined;
10
+ loc: {
11
+ column: number;
12
+ file?: string;
13
+ line: number;
14
+ } | undefined;
15
+ };
1
16
  export declare function logInfoBox(address: string, explorer?: string): void;
2
17
  export declare function drawMarkoBox(message: string, options?: LogoOptions): string[];
3
18
  export interface LogoOptions {
@@ -8,3 +23,4 @@ export declare function drawMarkoLogo(options?: LogoOptions): {
8
23
  lines: string[];
9
24
  width: number;
10
25
  };
26
+ export {};