@whatwg-node/server 0.8.12 → 0.9.0

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/cjs/utils.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.completeAssign = exports.isRequestInit = exports.sendNodeResponse = exports.splitSetCookieHeader = exports.isFetchEvent = exports.isReadableStream = exports.isServerResponse = exports.isNodeRequest = exports.isReadable = exports.normalizeNodeRequest = exports.isAsyncIterable = void 0;
3
+ exports.completeAssign = exports.isRequestInit = exports.sendNodeResponse = exports.isFetchEvent = exports.isReadableStream = exports.isServerResponse = exports.isNodeRequest = exports.isReadable = exports.normalizeNodeRequest = exports.isAsyncIterable = void 0;
4
4
  const fetch_1 = require("@whatwg-node/fetch");
5
5
  function isAsyncIterable(body) {
6
6
  return (body != null && typeof body === 'object' && typeof body[Symbol.asyncIterator] === 'function');
@@ -145,45 +145,17 @@ function endResponse(serverResponse) {
145
145
  // @ts-expect-error Avoid arguments adaptor trampoline https://v8.dev/blog/adaptor-frame
146
146
  serverResponse.end(null, null, null);
147
147
  }
148
- function splitSetCookieHeader(setCookieHeader) {
149
- const setCookieHeaders = [];
150
- let currentStr = '';
151
- let ignoreComma = false;
152
- for (const ch of setCookieHeader) {
153
- if (currentStr.endsWith('Expires=')) {
154
- ignoreComma = true;
155
- }
156
- if (ignoreComma) {
157
- if (ch === ';') {
158
- ignoreComma = false;
159
- }
160
- if (ch === ',' && currentStr.split('Expires=')[1].length > 3) {
161
- ignoreComma = false;
162
- }
163
- }
164
- if (ch === ',' && !ignoreComma) {
165
- setCookieHeaders.push(currentStr.trim());
166
- currentStr = '';
167
- }
168
- else {
169
- currentStr += ch;
170
- }
171
- }
172
- if (currentStr) {
173
- setCookieHeaders.push(currentStr.trim());
174
- }
175
- return setCookieHeaders;
176
- }
177
- exports.splitSetCookieHeader = splitSetCookieHeader;
178
148
  function getHeadersArray(headers) {
179
149
  const headersArray = [];
180
150
  headers.forEach((value, key) => {
181
151
  if (key === 'set-cookie') {
182
- const setCookieValues = splitSetCookieHeader(value);
183
- setCookieValues.forEach(setCookieValue => {
184
- headersArray.push('set-cookie', setCookieValue.trim());
185
- });
186
- return;
152
+ const setCookies = headers.getSetCookie?.();
153
+ if (setCookies) {
154
+ setCookies.forEach(setCookie => {
155
+ headersArray.push('set-cookie', setCookie);
156
+ });
157
+ return;
158
+ }
187
159
  }
188
160
  headersArray.push(key, value);
189
161
  });
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.sendResponseToUwsOpts = exports.getRequestFromUWSRequest = exports.isUWSResponse = void 0;
4
- const utils_js_1 = require("./utils.js");
5
4
  function isUWSResponse(res) {
6
5
  return !!res.onData;
7
6
  }
@@ -46,13 +45,15 @@ async function sendResponseToUwsOpts({ res, response }) {
46
45
  // content-length causes an error with Node.js's fetch
47
46
  if (key !== 'content-length') {
48
47
  if (key === 'set-cookie') {
49
- const setCookieHeaders = (0, utils_js_1.splitSetCookieHeader)(value);
50
- setCookieHeaders.forEach(setCookieHeader => {
51
- res.cork(() => {
52
- res.writeHeader(key, setCookieHeader);
48
+ const setCookies = response.headers.getSetCookie?.();
49
+ if (setCookies) {
50
+ setCookies.forEach(setCookie => {
51
+ res.cork(() => {
52
+ res.writeHeader(key, setCookie);
53
+ });
53
54
  });
54
- });
55
- return;
55
+ return;
56
+ }
56
57
  }
57
58
  res.cork(() => {
58
59
  res.writeHeader(key, value);
package/esm/utils.js CHANGED
@@ -135,44 +135,17 @@ function endResponse(serverResponse) {
135
135
  // @ts-expect-error Avoid arguments adaptor trampoline https://v8.dev/blog/adaptor-frame
136
136
  serverResponse.end(null, null, null);
137
137
  }
138
- export function splitSetCookieHeader(setCookieHeader) {
139
- const setCookieHeaders = [];
140
- let currentStr = '';
141
- let ignoreComma = false;
142
- for (const ch of setCookieHeader) {
143
- if (currentStr.endsWith('Expires=')) {
144
- ignoreComma = true;
145
- }
146
- if (ignoreComma) {
147
- if (ch === ';') {
148
- ignoreComma = false;
149
- }
150
- if (ch === ',' && currentStr.split('Expires=')[1].length > 3) {
151
- ignoreComma = false;
152
- }
153
- }
154
- if (ch === ',' && !ignoreComma) {
155
- setCookieHeaders.push(currentStr.trim());
156
- currentStr = '';
157
- }
158
- else {
159
- currentStr += ch;
160
- }
161
- }
162
- if (currentStr) {
163
- setCookieHeaders.push(currentStr.trim());
164
- }
165
- return setCookieHeaders;
166
- }
167
138
  function getHeadersArray(headers) {
168
139
  const headersArray = [];
169
140
  headers.forEach((value, key) => {
170
141
  if (key === 'set-cookie') {
171
- const setCookieValues = splitSetCookieHeader(value);
172
- setCookieValues.forEach(setCookieValue => {
173
- headersArray.push('set-cookie', setCookieValue.trim());
174
- });
175
- return;
142
+ const setCookies = headers.getSetCookie?.();
143
+ if (setCookies) {
144
+ setCookies.forEach(setCookie => {
145
+ headersArray.push('set-cookie', setCookie);
146
+ });
147
+ return;
148
+ }
176
149
  }
177
150
  headersArray.push(key, value);
178
151
  });
@@ -1,4 +1,3 @@
1
- import { splitSetCookieHeader } from './utils.js';
2
1
  export function isUWSResponse(res) {
3
2
  return !!res.onData;
4
3
  }
@@ -41,13 +40,15 @@ export async function sendResponseToUwsOpts({ res, response }) {
41
40
  // content-length causes an error with Node.js's fetch
42
41
  if (key !== 'content-length') {
43
42
  if (key === 'set-cookie') {
44
- const setCookieHeaders = splitSetCookieHeader(value);
45
- setCookieHeaders.forEach(setCookieHeader => {
46
- res.cork(() => {
47
- res.writeHeader(key, setCookieHeader);
43
+ const setCookies = response.headers.getSetCookie?.();
44
+ if (setCookies) {
45
+ setCookies.forEach(setCookie => {
46
+ res.cork(() => {
47
+ res.writeHeader(key, setCookie);
48
+ });
48
49
  });
49
- });
50
- return;
50
+ return;
51
+ }
51
52
  }
52
53
  res.cork(() => {
53
54
  res.writeHeader(key, value);
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@whatwg-node/server",
3
- "version": "0.8.12",
3
+ "version": "0.9.0",
4
4
  "description": "Fetch API compliant HTTP Server adapter",
5
5
  "sideEffects": false,
6
6
  "dependencies": {
7
- "@whatwg-node/fetch": "^0.9.6",
7
+ "@whatwg-node/fetch": "^0.9.7",
8
8
  "tslib": "^2.3.1"
9
9
  },
10
10
  "repository": {
@@ -28,7 +28,6 @@ export declare function isNodeRequest(request: any): request is NodeRequest;
28
28
  export declare function isServerResponse(stream: any): stream is NodeResponse;
29
29
  export declare function isReadableStream(stream: any): stream is ReadableStream;
30
30
  export declare function isFetchEvent(event: any): event is FetchEvent;
31
- export declare function splitSetCookieHeader(setCookieHeader: string): string[];
32
31
  export declare function sendNodeResponse(fetchResponse: Response, serverResponse: NodeResponse, nodeRequest: NodeRequest): Promise<void> | undefined;
33
32
  export declare function isRequestInit(val: unknown): val is RequestInit;
34
33
  export declare function completeAssign(...args: any[]): any;
@@ -28,7 +28,6 @@ export declare function isNodeRequest(request: any): request is NodeRequest;
28
28
  export declare function isServerResponse(stream: any): stream is NodeResponse;
29
29
  export declare function isReadableStream(stream: any): stream is ReadableStream;
30
30
  export declare function isFetchEvent(event: any): event is FetchEvent;
31
- export declare function splitSetCookieHeader(setCookieHeader: string): string[];
32
31
  export declare function sendNodeResponse(fetchResponse: Response, serverResponse: NodeResponse, nodeRequest: NodeRequest): Promise<void> | undefined;
33
32
  export declare function isRequestInit(val: unknown): val is RequestInit;
34
33
  export declare function completeAssign(...args: any[]): any;