@web-widget/node 1.72.1 → 1.72.3

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 (2) hide show
  1. package/dist/node.js +49 -10
  2. package/package.json +1 -1
package/dist/node.js CHANGED
@@ -63,12 +63,33 @@ function toMiddleware(webHandler, options) {
63
63
  const toRequest = buildToRequest(dependencies);
64
64
  const toFetchEvent = buildToFetchEvent(dependencies);
65
65
  return async function middleware(incomingMessage, serverResponse, next) {
66
- const request = toRequest(incomingMessage, options);
67
- const env = process.env;
68
- const event = toFetchEvent(request);
69
- const webResponse = await webHandler(request, env, event);
70
- await toServerResponse(webResponse, serverResponse);
71
- await next();
66
+ try {
67
+ const request = toRequest(incomingMessage, options);
68
+ const env = process.env;
69
+ const event = toFetchEvent(request);
70
+ const webResponse = await webHandler(request, env, event);
71
+ await toServerResponse(webResponse, serverResponse);
72
+ await next();
73
+ } catch (error) {
74
+ let responded = false;
75
+ if (checkWritable(serverResponse) && !serverResponse.headersSent) {
76
+ try {
77
+ serverResponse.statusCode = 500;
78
+ serverResponse.statusMessage = "Internal Server Error";
79
+ serverResponse.setHeader("content-type", "text/plain; charset=utf-8");
80
+ serverResponse.end(
81
+ error instanceof Error ? error.message : "Internal Server Error"
82
+ );
83
+ responded = true;
84
+ } catch {
85
+ }
86
+ }
87
+ if (responded) {
88
+ next();
89
+ } else {
90
+ next(error);
91
+ }
92
+ }
72
93
  };
73
94
  }
74
95
  async function toServerResponse(webResponse, serverResponse) {
@@ -129,11 +150,29 @@ function buildToNodeHandler(dependencies2, options) {
129
150
  const event = toFetchEvent(request);
130
151
  const maybePromise = webHandler(request, env, event);
131
152
  if (maybePromise instanceof Promise) {
132
- maybePromise.then(
133
- (response) => toServerResponse(response, serverResponse)
134
- );
153
+ maybePromise.then((response) => toServerResponse(response, serverResponse)).catch(() => {
154
+ if (checkWritable(serverResponse) && !serverResponse.headersSent) {
155
+ serverResponse.statusCode = 500;
156
+ serverResponse.statusMessage = "Internal Server Error";
157
+ serverResponse.setHeader(
158
+ "content-type",
159
+ "text/plain; charset=utf-8"
160
+ );
161
+ serverResponse.end("Internal Server Error");
162
+ }
163
+ });
135
164
  } else {
136
- toServerResponse(maybePromise, serverResponse);
165
+ toServerResponse(maybePromise, serverResponse).catch(() => {
166
+ if (checkWritable(serverResponse) && !serverResponse.headersSent) {
167
+ serverResponse.statusCode = 500;
168
+ serverResponse.statusMessage = "Internal Server Error";
169
+ serverResponse.setHeader(
170
+ "content-type",
171
+ "text/plain; charset=utf-8"
172
+ );
173
+ serverResponse.end("Internal Server Error");
174
+ }
175
+ });
137
176
  }
138
177
  };
139
178
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@web-widget/node",
3
3
  "description": "Node.js adapter",
4
- "version": "1.72.1",
4
+ "version": "1.72.3",
5
5
  "homepage": "https://github.com/web-widget/web-widget#readme",
6
6
  "repository": {
7
7
  "type": "git",