@tetrascience-npm/ts-connectors-sdk 4.0.0-beta.183.1 → 4.0.0-beta.185.1
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/api-tests/aws-timeout.test.js +14 -3
- package/dist/api-tests/aws-timeout.test.js.map +1 -1
- package/dist/api-tests/create-aws-client.test.d.ts +2 -0
- package/dist/api-tests/create-aws-client.test.d.ts.map +1 -0
- package/dist/api-tests/create-aws-client.test.js +84 -0
- package/dist/api-tests/create-aws-client.test.js.map +1 -0
- package/dist/api-tests/fixture/test-proxy-server.d.ts +3 -3
- package/dist/api-tests/fixture/test-proxy-server.d.ts.map +1 -1
- package/dist/api-tests/fixture/test-proxy-server.js +32 -6
- package/dist/api-tests/fixture/test-proxy-server.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -60,7 +60,7 @@ const test_proxy_server_1 = require("./fixture/test-proxy-server");
|
|
|
60
60
|
* can connect to, allowing us to test actual timeout behavior with the real code path.
|
|
61
61
|
*/
|
|
62
62
|
(0, vitest_1.describe)('AWS Handler Timeout Tests', () => {
|
|
63
|
-
(0, fixture_1.connectorTest)('DAM-T186: HTTP handler for S3 client respects socket timeout configuration',
|
|
63
|
+
(0, fixture_1.connectorTest)('DAM-T186: HTTP handler for S3 client respects socket timeout configuration', (_a) => __awaiter(void 0, [_a], void 0, function* ({ standaloneConnector, expect }) {
|
|
64
64
|
console.log('[TEST] Starting DAM-T186');
|
|
65
65
|
// Set up test proxy server
|
|
66
66
|
const proxyServer = new test_proxy_server_1.TestProxyServer();
|
|
@@ -116,6 +116,11 @@ const test_proxy_server_1 = require("./fixture/test-proxy-server");
|
|
|
116
116
|
finally {
|
|
117
117
|
// Clean up: stop proxy server and restore environment
|
|
118
118
|
console.log('[TEST] Entering finally block');
|
|
119
|
+
// Shut down the connector BEFORE stopping the proxy. shutdown() clears the
|
|
120
|
+
// heartbeat interval and sets listeningForCommands=false so that when the
|
|
121
|
+
// proxy destroys active sockets, the SQS retry loop does not reconnect.
|
|
122
|
+
// Without this, proxyServer.stop() hangs waiting for background traffic.
|
|
123
|
+
yield standaloneConnector.shutdown();
|
|
119
124
|
console.log('[TEST] Stopping proxy server');
|
|
120
125
|
yield proxyServer.stop();
|
|
121
126
|
console.log('[TEST] Proxy server stopped');
|
|
@@ -135,7 +140,7 @@ const test_proxy_server_1 = require("./fixture/test-proxy-server");
|
|
|
135
140
|
console.log('[TEST] DAM-T186 cleanup complete');
|
|
136
141
|
}
|
|
137
142
|
}));
|
|
138
|
-
(0, fixture_1.connectorTest)('DAM-T187: HTTP handler for SQS client respects request timeout configuration',
|
|
143
|
+
(0, fixture_1.connectorTest)('DAM-T187: HTTP handler for SQS client respects request timeout configuration', (_a) => __awaiter(void 0, [_a], void 0, function* ({ standaloneConnector, expect }) {
|
|
139
144
|
// Set up test proxy server
|
|
140
145
|
const proxyServer = new test_proxy_server_1.TestProxyServer();
|
|
141
146
|
const proxyPort = yield proxyServer.start();
|
|
@@ -175,6 +180,9 @@ const test_proxy_server_1 = require("./fixture/test-proxy-server");
|
|
|
175
180
|
}))).rejects.toThrow(/timeout|timed out/i);
|
|
176
181
|
}
|
|
177
182
|
finally {
|
|
183
|
+
// Shut down the connector first so its background traffic (SQS poller,
|
|
184
|
+
// heartbeats) stops retrying before we close the proxy server.
|
|
185
|
+
yield standaloneConnector.shutdown();
|
|
178
186
|
// Clean up: stop proxy server and restore environment
|
|
179
187
|
yield proxyServer.stop();
|
|
180
188
|
if (originalHttpProxy !== undefined) {
|
|
@@ -191,7 +199,7 @@ const test_proxy_server_1 = require("./fixture/test-proxy-server");
|
|
|
191
199
|
}
|
|
192
200
|
}
|
|
193
201
|
}));
|
|
194
|
-
(0, fixture_1.connectorTest)('DAM-T188: HTTP handler for SSM and CloudWatch respects request timeout configuration',
|
|
202
|
+
(0, fixture_1.connectorTest)('DAM-T188: HTTP handler for SSM and CloudWatch respects request timeout configuration', (_a) => __awaiter(void 0, [_a], void 0, function* ({ standaloneConnector, expect }) {
|
|
195
203
|
// Set up test proxy server
|
|
196
204
|
const proxyServer = new test_proxy_server_1.TestProxyServer();
|
|
197
205
|
const proxyPort = yield proxyServer.start();
|
|
@@ -231,6 +239,9 @@ const test_proxy_server_1 = require("./fixture/test-proxy-server");
|
|
|
231
239
|
}))).rejects.toThrow(/timeout|timed out/i);
|
|
232
240
|
}
|
|
233
241
|
finally {
|
|
242
|
+
// Shut down the connector first so its background traffic (SQS poller,
|
|
243
|
+
// heartbeats) stops retrying before we close the proxy server.
|
|
244
|
+
yield standaloneConnector.shutdown();
|
|
234
245
|
// Clean up: stop proxy server and restore environment
|
|
235
246
|
yield proxyServer.stop();
|
|
236
247
|
if (originalHttpProxy !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aws-timeout.test.js","sourceRoot":"","sources":["../../api-tests/aws-timeout.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAAyC;AACzC,yDAA2C;AAC3C,yDAA2C;AAC3C,mCAAkC;AAElC,+CAAkD;AAClD,mEAA8D;AAE9D;;;;;;;;;;GAUG;AACH,IAAA,iBAAQ,EAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,IAAA,uBAAa,EACX,4EAA4E,EAC5E,
|
|
1
|
+
{"version":3,"file":"aws-timeout.test.js","sourceRoot":"","sources":["../../api-tests/aws-timeout.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-aws-client.test.d.ts","sourceRoot":"","sources":["../../api-tests/create-aws-client.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
36
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
37
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
38
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
39
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
40
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
41
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
const ssm = __importStar(require("@aws-sdk/client-ssm"));
|
|
46
|
+
const vitest_1 = require("vitest");
|
|
47
|
+
const auth_1 = require("../src/auth");
|
|
48
|
+
const fixture_1 = require("./fixture/fixture");
|
|
49
|
+
/**
|
|
50
|
+
* Integration tests for createAwsClient() (WA-1231 / PR #126).
|
|
51
|
+
*
|
|
52
|
+
* Unit tests in test/tdp-client.test.ts cover Priority 1 (authToken → AwsEnvClientProvider)
|
|
53
|
+
* and Priority 3 (cloud IAM → AwsEnvClientProvider) — both paths return undefined from
|
|
54
|
+
* getCredentialsProvider(), so no credentials are injected and the AWS SDK uses its ambient
|
|
55
|
+
* IAM chain. Those paths are also already exercised end-to-end by the existing api-tests.
|
|
56
|
+
*
|
|
57
|
+
* This file covers the gap: Priority 2 (CONNECTOR_TOKEN → AwsRefreshClientProvider), where
|
|
58
|
+
* getCredentialsProvider() returns a live function that must be injected by the factory and
|
|
59
|
+
* must successfully exchange the connector JWT for STS credentials via TDP's /credentials API.
|
|
60
|
+
* That exchange can only be validated against a real TDP environment, not in a unit test.
|
|
61
|
+
*/
|
|
62
|
+
(0, vitest_1.describe)('createAwsClient() Factory Tests', () => {
|
|
63
|
+
(0, fixture_1.connectorTest)('DAM-T192: createAwsClient() injects AwsRefreshClientProvider credentials when initialized via CONNECTOR_TOKEN', { timeout: 2 * 60 * 1000 }, (_a) => __awaiter(void 0, [_a], void 0, function* ({ standaloneConnector, expect }) {
|
|
64
|
+
// The fixture sets CONNECTOR_TOKEN before init(), so init() takes the Priority 2 branch
|
|
65
|
+
// and creates an AwsRefreshClientProvider (not the default AwsEnvClientProvider).
|
|
66
|
+
yield standaloneConnector.start();
|
|
67
|
+
const tdpClient = standaloneConnector.tdpClient;
|
|
68
|
+
// Guard: confirm we are on the CONNECTOR_TOKEN path as expected.
|
|
69
|
+
expect(tdpClient['awsClientProvider']).toBeInstanceOf(auth_1.AwsRefreshClientProvider);
|
|
70
|
+
// createAwsClient() calls getCredentialsProvider() and injects the result via
|
|
71
|
+
// ...(credentials && { credentials }). For AwsRefreshClientProvider this is a
|
|
72
|
+
// non-undefined async function, so it gets injected into the client config.
|
|
73
|
+
const ssmClient = tdpClient.createAwsClient(ssm.SSMClient);
|
|
74
|
+
expect(ssmClient).toBeInstanceOf(ssm.SSMClient);
|
|
75
|
+
// Invoking the injected function makes a real HTTP call to TDP's /credentials API,
|
|
76
|
+
// exchanging the connector JWT for short-lived STS credentials. Success here proves
|
|
77
|
+
// the full chain: credential function extracted → injected → called → credentials valid.
|
|
78
|
+
const credentials = yield ssmClient.config.credentials();
|
|
79
|
+
expect(credentials.accessKeyId).toBeTruthy();
|
|
80
|
+
expect(credentials.secretAccessKey).toBeTruthy();
|
|
81
|
+
expect(credentials.sessionToken).toBeTruthy(); // present for STS-issued temporary credentials
|
|
82
|
+
}));
|
|
83
|
+
});
|
|
84
|
+
//# sourceMappingURL=create-aws-client.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-aws-client.test.js","sourceRoot":"","sources":["../../api-tests/create-aws-client.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAA2C;AAC3C,mCAAkC;AAElC,sCAAuD;AACvD,+CAAkD;AAElD;;;;;;;;;;;;GAYG;AACH,IAAA,iBAAQ,EAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,IAAA,uBAAa,EACX,+GAA+G,EAC/G,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,EAC1B,KAAwC,EAAE,4CAAnC,EAAE,mBAAmB,EAAE,MAAM,EAAE;QACpC,wFAAwF;QACxF,kFAAkF;QAClF,MAAM,mBAAmB,CAAC,KAAK,EAAE,CAAC;QAElC,MAAM,SAAS,GAAI,mBAA2B,CAAC,SAAS,CAAC;QAEzD,iEAAiE;QACjE,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,cAAc,CAAC,+BAAwB,CAAC,CAAC;QAEhF,8EAA8E;QAC9E,8EAA8E;QAC9E,4EAA4E;QAC5E,MAAM,SAAS,GAAG,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3D,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEhD,mFAAmF;QACnF,oFAAoF;QACpF,yFAAyF;QACzF,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAEzD,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,CAAC;QAC7C,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,UAAU,EAAE,CAAC;QACjD,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,+CAA+C;IAChG,CAAC,CAAA,CACF,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -32,9 +32,9 @@ export declare class TestProxyServer {
|
|
|
32
32
|
addMockResponse(pattern: RegExp, statusCode: number, body: string, headers?: Record<string, string>, delayMs?: number): void;
|
|
33
33
|
/**
|
|
34
34
|
* Add a socket hang rule for HTTPS requests matching the given pattern.
|
|
35
|
-
* The connection will be established, but no data will be sent,
|
|
36
|
-
* causing a socket timeout.
|
|
37
|
-
*
|
|
35
|
+
* The connection will be established, but no data will be sent back,
|
|
36
|
+
* causing a socket timeout on the client. When the client timeout fires
|
|
37
|
+
* and half-closes the connection, the server side is destroyed immediately.
|
|
38
38
|
* This is useful for testing socket idle timeouts.
|
|
39
39
|
*
|
|
40
40
|
* @param pattern - Regex pattern to match URLs
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-proxy-server.d.ts","sourceRoot":"","sources":["../../../api-tests/fixture/test-proxy-server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"test-proxy-server.d.ts","sourceRoot":"","sources":["../../../api-tests/fixture/test-proxy-server.ts"],"names":[],"mappings":"AAyBA;;;;;;;;;;;GAWG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,eAAe,CAAwB;IAC/C,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,cAAc,CAAgB;;IAOtC;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAIpD;;;;OAIG;IACH,eAAe,CACb,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,OAAO,CAAC,EAAE,MAAM,GACf,IAAI;IAIP;;;;;;;;OAQG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIxC;;OAEG;IACH,UAAU,IAAI,IAAI;IAMlB;;;OAGG;IACH,iBAAiB,IAAI,MAAM,EAAE;IAI7B;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAI3B;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAc9B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA6C3B;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAyCzB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IA8E1B;;OAEG;IACH,OAAO,CAAC,cAAc;CAIvB"}
|
|
@@ -59,9 +59,9 @@ class TestProxyServer {
|
|
|
59
59
|
}
|
|
60
60
|
/**
|
|
61
61
|
* Add a socket hang rule for HTTPS requests matching the given pattern.
|
|
62
|
-
* The connection will be established, but no data will be sent,
|
|
63
|
-
* causing a socket timeout.
|
|
64
|
-
*
|
|
62
|
+
* The connection will be established, but no data will be sent back,
|
|
63
|
+
* causing a socket timeout on the client. When the client timeout fires
|
|
64
|
+
* and half-closes the connection, the server side is destroyed immediately.
|
|
65
65
|
* This is useful for testing socket idle timeouts.
|
|
66
66
|
*
|
|
67
67
|
* @param pattern - Regex pattern to match URLs
|
|
@@ -116,13 +116,31 @@ class TestProxyServer {
|
|
|
116
116
|
stop() {
|
|
117
117
|
return __awaiter(this, void 0, void 0, function* () {
|
|
118
118
|
logIfDebug(`[ProxyServer] Stopping server. Active sockets: ${this.activeSockets.size}`);
|
|
119
|
-
// Forcefully close all active sockets
|
|
119
|
+
// Forcefully close all active sockets we are tracking
|
|
120
120
|
for (const socket of this.activeSockets) {
|
|
121
121
|
logIfDebug('[ProxyServer] Destroying active socket');
|
|
122
122
|
socket.destroy();
|
|
123
123
|
}
|
|
124
124
|
this.activeSockets.clear();
|
|
125
125
|
return new Promise((resolve, reject) => {
|
|
126
|
+
// server.close() must be called FIRST: it closes the listening socket so no
|
|
127
|
+
// new connections are accepted, and schedules the callback to fire once all
|
|
128
|
+
// connections are gone.
|
|
129
|
+
//
|
|
130
|
+
// server.closeAllConnections() must be called SECOND: it kills plain HTTP
|
|
131
|
+
// connections in Node's internal connection map that were not tracked in
|
|
132
|
+
// activeSockets (e.g. background traffic from the connector's SQS long-poll
|
|
133
|
+
// that arrived during the race window between the destroy loop above and this
|
|
134
|
+
// point). Because the listening socket is already closed, no new connections
|
|
135
|
+
// can arrive after this call.
|
|
136
|
+
//
|
|
137
|
+
// Note: CONNECT-upgraded tunnel sockets are NOT in Node's internal map and
|
|
138
|
+
// are not reached by closeAllConnections(). They are handled by the destroy
|
|
139
|
+
// loop above (activeSockets) and the half-close fix on hang rule sockets.
|
|
140
|
+
//
|
|
141
|
+
// WARNING: Swapping this order (closeAllConnections before close) leaves a race
|
|
142
|
+
// window where a new connection can be accepted and added to Node's map between
|
|
143
|
+
// the two calls, causing server.close() to hang on that connection.
|
|
126
144
|
logIfDebug('[ProxyServer] Calling server.close()');
|
|
127
145
|
this.server.close((err) => {
|
|
128
146
|
if (err) {
|
|
@@ -134,6 +152,9 @@ class TestProxyServer {
|
|
|
134
152
|
resolve();
|
|
135
153
|
}
|
|
136
154
|
});
|
|
155
|
+
// Now drain the internal map. The listening socket is already closed above,
|
|
156
|
+
// so no new connections can be added after this point.
|
|
157
|
+
this.server.closeAllConnections();
|
|
137
158
|
});
|
|
138
159
|
});
|
|
139
160
|
}
|
|
@@ -220,6 +241,11 @@ class TestProxyServer {
|
|
|
220
241
|
// Intentionally do nothing - just discard the data
|
|
221
242
|
// The client will wait for a response that never comes, triggering a timeout
|
|
222
243
|
});
|
|
244
|
+
// When the client half-closes (sends FIN after its timeout fires), destroy the server
|
|
245
|
+
// side too. Without this, the socket stays half-open: client done sending, server still
|
|
246
|
+
// writable but silent. The OS keeps the connection alive indefinitely, and
|
|
247
|
+
// server.close() hangs because getConnections() still counts it.
|
|
248
|
+
clientSocket.on('end', () => clientSocket.destroy());
|
|
223
249
|
// DO NOT close the socket - let it hang indefinitely until the client times out
|
|
224
250
|
// This simulates a real-world scenario where a server accepts a connection but never responds
|
|
225
251
|
return;
|
|
@@ -239,8 +265,8 @@ class TestProxyServer {
|
|
|
239
265
|
serverSocket.on('end', () => this.activeSockets.delete(serverSocket));
|
|
240
266
|
serverSocket.on('close', () => this.activeSockets.delete(serverSocket));
|
|
241
267
|
serverSocket.on('error', () => {
|
|
242
|
-
//
|
|
243
|
-
if (!clientSocket.destroyed) {
|
|
268
|
+
// Only write if clientSocket is still open and writable
|
|
269
|
+
if (!clientSocket.destroyed && clientSocket.writable) {
|
|
244
270
|
clientSocket.end(`HTTP/1.1 502 Bad Gateway\r\n\r\n`);
|
|
245
271
|
}
|
|
246
272
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-proxy-server.js","sourceRoot":"","sources":["../../../api-tests/fixture/test-proxy-server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gDAAwB;AACxB,kDAA0B;AAC1B,8CAAsB;AACtB,6BAA0B;AAmB1B,sDAAsD;
|
|
1
|
+
{"version":3,"file":"test-proxy-server.js","sourceRoot":"","sources":["../../../api-tests/fixture/test-proxy-server.ts"],"names":[],"mappings":"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"}
|