@jaypie/express 1.2.4-rc4 → 1.2.4-rc6
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/dist/cjs/adapter/LambdaResponseBuffered.d.ts +2 -0
- package/dist/cjs/adapter/LambdaResponseStreaming.d.ts +2 -0
- package/dist/cjs/index.cjs +75 -8
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/adapter/LambdaResponseBuffered.d.ts +2 -0
- package/dist/esm/adapter/LambdaResponseStreaming.d.ts +2 -0
- package/dist/esm/index.js +75 -8
- package/dist/esm/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -33,11 +33,13 @@ export declare class LambdaResponseBuffered extends Writable {
|
|
|
33
33
|
/**
|
|
34
34
|
* Express-style alias for getHeader().
|
|
35
35
|
* Used by middleware like decorateResponse that use res.get().
|
|
36
|
+
* Note: Directly accesses _headers to avoid prototype chain issues with bundled code.
|
|
36
37
|
*/
|
|
37
38
|
get(name: string): number | string | string[] | undefined;
|
|
38
39
|
/**
|
|
39
40
|
* Express-style alias for setHeader().
|
|
40
41
|
* Used by middleware like decorateResponse that use res.set().
|
|
42
|
+
* Note: Directly accesses _headers to avoid prototype chain issues with bundled code.
|
|
41
43
|
*/
|
|
42
44
|
set(name: string, value: number | string | string[]): this;
|
|
43
45
|
status(code: number): this;
|
|
@@ -34,11 +34,13 @@ export declare class LambdaResponseStreaming extends Writable {
|
|
|
34
34
|
/**
|
|
35
35
|
* Express-style alias for getHeader().
|
|
36
36
|
* Used by middleware like decorateResponse that use res.get().
|
|
37
|
+
* Note: Directly accesses _headers to avoid prototype chain issues with bundled code.
|
|
37
38
|
*/
|
|
38
39
|
get(name: string): number | string | string[] | undefined;
|
|
39
40
|
/**
|
|
40
41
|
* Express-style alias for setHeader().
|
|
41
42
|
* Used by middleware like decorateResponse that use res.set().
|
|
43
|
+
* Note: Directly accesses _headers to avoid prototype chain issues with bundled code.
|
|
42
44
|
*/
|
|
43
45
|
set(name: string, value: number | string | string[]): this;
|
|
44
46
|
status(code: number): this;
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var node_stream = require('node:stream');
|
|
4
|
+
var node_http = require('node:http');
|
|
4
5
|
var errors = require('@jaypie/errors');
|
|
5
6
|
var kit = require('@jaypie/kit');
|
|
6
7
|
var expressCors = require('cors');
|
|
@@ -161,6 +162,10 @@ function createLambdaRequest(event, context) {
|
|
|
161
162
|
//
|
|
162
163
|
// Constants
|
|
163
164
|
//
|
|
165
|
+
// Get Node's internal kOutHeaders symbol from ServerResponse prototype.
|
|
166
|
+
// This is needed for compatibility with Datadog dd-trace instrumentation,
|
|
167
|
+
// which patches HTTP methods and expects this internal state to exist.
|
|
168
|
+
const kOutHeaders$1 = Object.getOwnPropertySymbols(node_http.ServerResponse.prototype).find((s) => s.toString() === "Symbol(kOutHeaders)");
|
|
164
169
|
const BINARY_CONTENT_TYPE_PATTERNS = [
|
|
165
170
|
/^application\/octet-stream$/,
|
|
166
171
|
/^application\/pdf$/,
|
|
@@ -191,6 +196,11 @@ class LambdaResponseBuffered extends node_stream.Writable {
|
|
|
191
196
|
this._headers = new Map();
|
|
192
197
|
this._headersSent = false;
|
|
193
198
|
this._resolve = null;
|
|
199
|
+
// Initialize Node's internal kOutHeaders for dd-trace compatibility.
|
|
200
|
+
// dd-trace patches HTTP methods and expects this internal state.
|
|
201
|
+
if (kOutHeaders$1) {
|
|
202
|
+
this[kOutHeaders$1] = Object.create(null);
|
|
203
|
+
}
|
|
194
204
|
}
|
|
195
205
|
//
|
|
196
206
|
// Promise-based API for getting final result
|
|
@@ -213,14 +223,31 @@ class LambdaResponseBuffered extends node_stream.Writable {
|
|
|
213
223
|
// In production, log warning but don't throw to match Express behavior
|
|
214
224
|
return this;
|
|
215
225
|
}
|
|
216
|
-
|
|
226
|
+
const lowerName = name.toLowerCase();
|
|
227
|
+
this._headers.set(lowerName, String(value));
|
|
228
|
+
// Sync with kOutHeaders for dd-trace compatibility
|
|
229
|
+
// Node stores as { 'header-name': ['Header-Name', value] }
|
|
230
|
+
if (kOutHeaders$1) {
|
|
231
|
+
const outHeaders = this[kOutHeaders$1];
|
|
232
|
+
if (outHeaders) {
|
|
233
|
+
outHeaders[lowerName] = [name, String(value)];
|
|
234
|
+
}
|
|
235
|
+
}
|
|
217
236
|
return this;
|
|
218
237
|
}
|
|
219
238
|
getHeader(name) {
|
|
220
239
|
return this._headers.get(name.toLowerCase());
|
|
221
240
|
}
|
|
222
241
|
removeHeader(name) {
|
|
223
|
-
|
|
242
|
+
const lowerName = name.toLowerCase();
|
|
243
|
+
this._headers.delete(lowerName);
|
|
244
|
+
// Sync with kOutHeaders for dd-trace compatibility
|
|
245
|
+
if (kOutHeaders$1) {
|
|
246
|
+
const outHeaders = this[kOutHeaders$1];
|
|
247
|
+
if (outHeaders) {
|
|
248
|
+
delete outHeaders[lowerName];
|
|
249
|
+
}
|
|
250
|
+
}
|
|
224
251
|
}
|
|
225
252
|
getHeaders() {
|
|
226
253
|
const headers = {};
|
|
@@ -302,16 +329,21 @@ class LambdaResponseBuffered extends node_stream.Writable {
|
|
|
302
329
|
/**
|
|
303
330
|
* Express-style alias for getHeader().
|
|
304
331
|
* Used by middleware like decorateResponse that use res.get().
|
|
332
|
+
* Note: Directly accesses _headers to avoid prototype chain issues with bundled code.
|
|
305
333
|
*/
|
|
306
334
|
get(name) {
|
|
307
|
-
return this.
|
|
335
|
+
return this._headers.get(name.toLowerCase());
|
|
308
336
|
}
|
|
309
337
|
/**
|
|
310
338
|
* Express-style alias for setHeader().
|
|
311
339
|
* Used by middleware like decorateResponse that use res.set().
|
|
340
|
+
* Note: Directly accesses _headers to avoid prototype chain issues with bundled code.
|
|
312
341
|
*/
|
|
313
342
|
set(name, value) {
|
|
314
|
-
|
|
343
|
+
if (!this._headersSent) {
|
|
344
|
+
this._headers.set(name.toLowerCase(), String(value));
|
|
345
|
+
}
|
|
346
|
+
return this;
|
|
315
347
|
}
|
|
316
348
|
status(code) {
|
|
317
349
|
this.statusCode = code;
|
|
@@ -409,6 +441,14 @@ class LambdaResponseBuffered extends node_stream.Writable {
|
|
|
409
441
|
}
|
|
410
442
|
}
|
|
411
443
|
|
|
444
|
+
//
|
|
445
|
+
//
|
|
446
|
+
// Constants
|
|
447
|
+
//
|
|
448
|
+
// Get Node's internal kOutHeaders symbol from ServerResponse prototype.
|
|
449
|
+
// This is needed for compatibility with Datadog dd-trace instrumentation,
|
|
450
|
+
// which patches HTTP methods and expects this internal state to exist.
|
|
451
|
+
const kOutHeaders = Object.getOwnPropertySymbols(node_http.ServerResponse.prototype).find((s) => s.toString() === "Symbol(kOutHeaders)");
|
|
412
452
|
//
|
|
413
453
|
//
|
|
414
454
|
// LambdaResponseStreaming Class
|
|
@@ -431,6 +471,11 @@ class LambdaResponseStreaming extends node_stream.Writable {
|
|
|
431
471
|
this._pendingWrites = [];
|
|
432
472
|
this._wrappedStream = null;
|
|
433
473
|
this._responseStream = responseStream;
|
|
474
|
+
// Initialize Node's internal kOutHeaders for dd-trace compatibility.
|
|
475
|
+
// dd-trace patches HTTP methods and expects this internal state.
|
|
476
|
+
if (kOutHeaders) {
|
|
477
|
+
this[kOutHeaders] = Object.create(null);
|
|
478
|
+
}
|
|
434
479
|
}
|
|
435
480
|
//
|
|
436
481
|
// Header management
|
|
@@ -441,7 +486,16 @@ class LambdaResponseStreaming extends node_stream.Writable {
|
|
|
441
486
|
// Headers cannot be changed after body starts
|
|
442
487
|
return this;
|
|
443
488
|
}
|
|
444
|
-
|
|
489
|
+
const lowerName = name.toLowerCase();
|
|
490
|
+
this._headers.set(lowerName, String(value));
|
|
491
|
+
// Sync with kOutHeaders for dd-trace compatibility
|
|
492
|
+
// Node stores as { 'header-name': ['Header-Name', value] }
|
|
493
|
+
if (kOutHeaders) {
|
|
494
|
+
const outHeaders = this[kOutHeaders];
|
|
495
|
+
if (outHeaders) {
|
|
496
|
+
outHeaders[lowerName] = [name, String(value)];
|
|
497
|
+
}
|
|
498
|
+
}
|
|
445
499
|
return this;
|
|
446
500
|
}
|
|
447
501
|
getHeader(name) {
|
|
@@ -449,7 +503,15 @@ class LambdaResponseStreaming extends node_stream.Writable {
|
|
|
449
503
|
}
|
|
450
504
|
removeHeader(name) {
|
|
451
505
|
if (!this._headersSent) {
|
|
452
|
-
|
|
506
|
+
const lowerName = name.toLowerCase();
|
|
507
|
+
this._headers.delete(lowerName);
|
|
508
|
+
// Sync with kOutHeaders for dd-trace compatibility
|
|
509
|
+
if (kOutHeaders) {
|
|
510
|
+
const outHeaders = this[kOutHeaders];
|
|
511
|
+
if (outHeaders) {
|
|
512
|
+
delete outHeaders[lowerName];
|
|
513
|
+
}
|
|
514
|
+
}
|
|
453
515
|
}
|
|
454
516
|
}
|
|
455
517
|
getHeaders() {
|
|
@@ -556,16 +618,21 @@ class LambdaResponseStreaming extends node_stream.Writable {
|
|
|
556
618
|
/**
|
|
557
619
|
* Express-style alias for getHeader().
|
|
558
620
|
* Used by middleware like decorateResponse that use res.get().
|
|
621
|
+
* Note: Directly accesses _headers to avoid prototype chain issues with bundled code.
|
|
559
622
|
*/
|
|
560
623
|
get(name) {
|
|
561
|
-
return this.
|
|
624
|
+
return this._headers.get(name.toLowerCase());
|
|
562
625
|
}
|
|
563
626
|
/**
|
|
564
627
|
* Express-style alias for setHeader().
|
|
565
628
|
* Used by middleware like decorateResponse that use res.set().
|
|
629
|
+
* Note: Directly accesses _headers to avoid prototype chain issues with bundled code.
|
|
566
630
|
*/
|
|
567
631
|
set(name, value) {
|
|
568
|
-
|
|
632
|
+
if (!this._headersSent) {
|
|
633
|
+
this._headers.set(name.toLowerCase(), String(value));
|
|
634
|
+
}
|
|
635
|
+
return this;
|
|
569
636
|
}
|
|
570
637
|
status(code) {
|
|
571
638
|
this.statusCode = code;
|