@testmuai/playwright-bindings 0.1.3-beta.9 → 0.1.4-beta.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/helpers/executeApi.d.ts +5 -1
- package/dist/helpers/executeApi.d.ts.map +1 -1
- package/dist/helpers/executeApi.js +31 -42
- package/dist/helpers/executeApi.js.map +1 -1
- package/dist/httpClient.d.ts +18 -0
- package/dist/httpClient.d.ts.map +1 -0
- package/dist/httpClient.js +140 -0
- package/dist/httpClient.js.map +1 -0
- package/package.json +2 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export declare function parseObject(v: unknown): Record<string, string>;
|
|
2
2
|
export declare function resolveDict(d: Record<string, string>): Promise<Record<string, string>>;
|
|
3
|
-
export declare function coerceTimeout(t: unknown,
|
|
3
|
+
export declare function coerceTimeout(t: unknown, defMs?: number): number;
|
|
4
4
|
export interface AuthBearer {
|
|
5
5
|
type: 'bearer';
|
|
6
6
|
data: {
|
|
@@ -35,6 +35,10 @@ export interface ApiRequest {
|
|
|
35
35
|
authorization?: Authorization;
|
|
36
36
|
timeout?: number | string;
|
|
37
37
|
verify?: boolean;
|
|
38
|
+
/** Python-parity settings dict; only automatically_follow_redirect is honored today. */
|
|
39
|
+
settings?: {
|
|
40
|
+
automatically_follow_redirect?: boolean;
|
|
41
|
+
};
|
|
38
42
|
}
|
|
39
43
|
export interface ApiResponse {
|
|
40
44
|
status: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executeApi.d.ts","sourceRoot":"","sources":["../../src/helpers/executeApi.ts"],"names":[],"mappings":"AAIA,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAc9D;AAED,wBAAsB,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAM5F;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"executeApi.d.ts","sourceRoot":"","sources":["../../src/helpers/executeApi.ts"],"names":[],"mappings":"AAIA,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAc9D;AAED,wBAAsB,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAM5F;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,SAAS,GAAG,MAAM,CAQhE;AAGD,MAAM,WAAW,UAAU;IAAG,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAAE;AACxE,MAAM,WAAW,SAAS;IAAI,IAAI,EAAE,OAAO,CAAC;IAAE,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAAE;AAC9F,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE;QACJ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;KAC/B,CAAC;CACH;AACD,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,gBAAgB,GAAG,MAAM,CAAC;AAE/E,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;IACzC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wFAAwF;IACxF,QAAQ,CAAC,EAAE;QAAE,6BAA6B,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACxD;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,aAAa,EAAE,OAAO,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAID,wBAAsB,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAyKtE"}
|
|
@@ -27,7 +27,8 @@ export async function resolveDict(d) {
|
|
|
27
27
|
}
|
|
28
28
|
return out;
|
|
29
29
|
}
|
|
30
|
-
export function coerceTimeout(t,
|
|
30
|
+
export function coerceTimeout(t, defMs = 30_000) {
|
|
31
|
+
// Returns ms. Code-gen always emits ms (no seconds-input path on the JS side).
|
|
31
32
|
if (typeof t === 'number' && Number.isFinite(t))
|
|
32
33
|
return t;
|
|
33
34
|
if (typeof t === 'string' && t.length > 0) {
|
|
@@ -35,7 +36,7 @@ export function coerceTimeout(t, def = 30_000) {
|
|
|
35
36
|
if (Number.isFinite(n))
|
|
36
37
|
return n;
|
|
37
38
|
}
|
|
38
|
-
return
|
|
39
|
+
return defMs;
|
|
39
40
|
}
|
|
40
41
|
function resolve(input) { return resolveVar(input); }
|
|
41
42
|
export async function executeApi(req) {
|
|
@@ -125,14 +126,17 @@ export async function executeApi(req) {
|
|
|
125
126
|
? await resolve(auth.data.session_token)
|
|
126
127
|
: undefined;
|
|
127
128
|
const signedBody = typeof body === 'string' ? body : undefined;
|
|
129
|
+
const isS3 = service.toLowerCase() === 's3';
|
|
128
130
|
const opts = {
|
|
129
131
|
host: url.host,
|
|
130
132
|
path: url.pathname + url.search,
|
|
131
133
|
method: req.method.toUpperCase(),
|
|
132
134
|
service,
|
|
133
135
|
region,
|
|
134
|
-
|
|
135
|
-
|
|
136
|
+
// S3 parity: skip payload signing (playwright-python execute_api.py:211-212).
|
|
137
|
+
// Pre-set UNSIGNED-PAYLOAD so aws4 echoes it back in signed headers.
|
|
138
|
+
body: isS3 ? undefined : signedBody,
|
|
139
|
+
headers: isS3 ? { ...headers, 'x-amz-content-sha256': 'UNSIGNED-PAYLOAD' } : { ...headers },
|
|
136
140
|
};
|
|
137
141
|
if (auth.data.add_to === 'params')
|
|
138
142
|
opts.signQuery = true;
|
|
@@ -157,51 +161,36 @@ export async function executeApi(req) {
|
|
|
157
161
|
}
|
|
158
162
|
}
|
|
159
163
|
log.helper(`[execute_api] ${req.method} ${preview(url.toString(), 80)}`);
|
|
160
|
-
const started = Date.now();
|
|
161
|
-
const ac = new AbortController();
|
|
162
|
-
const timer = setTimeout(() => ac.abort(), timeout);
|
|
163
|
-
// verify=false (default) installs an undici Agent / ProxyAgent.requestTls
|
|
164
|
-
// with rejectUnauthorized=false so self-signed certs in the chain don't
|
|
165
|
-
// fail the fetch.
|
|
166
164
|
const verify = req.verify ?? false;
|
|
167
|
-
let dispatcher;
|
|
168
165
|
const proxyUrl = getApiProxyUrl();
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
...(verify === false ? { requestTls: { rejectUnauthorized: false } } : {}),
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
else if (verify === false) {
|
|
177
|
-
const { Agent } = await import('undici');
|
|
178
|
-
dispatcher = new Agent({ connect: { rejectUnauthorized: false } });
|
|
179
|
-
}
|
|
180
|
-
const fetchOpts = {
|
|
166
|
+
const { httpRequest } = await import('../httpClient.js');
|
|
167
|
+
log.helper(`[execute_api] headers=${preview(JSON.stringify(headers), 200)}`);
|
|
168
|
+
const started = Date.now();
|
|
169
|
+
const resp = await httpRequest({
|
|
181
170
|
method: req.method,
|
|
171
|
+
url: url.toString(),
|
|
182
172
|
headers,
|
|
183
173
|
body,
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
try {
|
|
190
|
-
resp = await fetch(url.toString(), fetchOpts);
|
|
191
|
-
}
|
|
192
|
-
finally {
|
|
193
|
-
clearTimeout(timer);
|
|
194
|
-
}
|
|
174
|
+
proxyUrl,
|
|
175
|
+
verify,
|
|
176
|
+
timeoutMs: timeout,
|
|
177
|
+
followRedirects: req.settings?.automatically_follow_redirect !== false,
|
|
178
|
+
});
|
|
195
179
|
const elapsed = Date.now() - started;
|
|
196
180
|
log.helper(`[execute_api] status=${resp.status} time=${elapsed}ms`);
|
|
197
181
|
const respHeaders = {};
|
|
198
|
-
|
|
199
|
-
|
|
182
|
+
const setCookieList = [];
|
|
183
|
+
for (const [k, v] of Object.entries(resp.headers)) {
|
|
184
|
+
if (k.toLowerCase() === 'set-cookie') {
|
|
185
|
+
if (Array.isArray(v))
|
|
186
|
+
setCookieList.push(...v);
|
|
187
|
+
else if (typeof v === 'string')
|
|
188
|
+
setCookieList.push(v);
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
respHeaders[k] = Array.isArray(v) ? v.join(', ') : String(v);
|
|
192
|
+
}
|
|
200
193
|
const cookies = {};
|
|
201
|
-
const setCookieFn = resp.headers.getSetCookie;
|
|
202
|
-
const setCookieList = typeof setCookieFn === 'function'
|
|
203
|
-
? setCookieFn.call(resp.headers)
|
|
204
|
-
: (resp.headers.get('set-cookie') ? [resp.headers.get('set-cookie')] : []);
|
|
205
194
|
for (const setCookie of setCookieList) {
|
|
206
195
|
const first = setCookie.split(';')[0];
|
|
207
196
|
if (first && first.includes('=')) {
|
|
@@ -212,13 +201,13 @@ export async function executeApi(req) {
|
|
|
212
201
|
cookies[n] = val;
|
|
213
202
|
}
|
|
214
203
|
}
|
|
215
|
-
const text =
|
|
204
|
+
const text = resp.body.toString('utf8');
|
|
216
205
|
let responseBody = text;
|
|
217
206
|
if (respHeaders['content-type']?.includes('application/json')) {
|
|
218
207
|
try {
|
|
219
208
|
responseBody = JSON.parse(text);
|
|
220
209
|
}
|
|
221
|
-
catch { /*
|
|
210
|
+
catch { /* keep text */ }
|
|
222
211
|
}
|
|
223
212
|
return { status: resp.status, headers: respHeaders, cookies, response_body: responseBody, body: text, time: elapsed };
|
|
224
213
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executeApi.js","sourceRoot":"","sources":["../../src/helpers/executeApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,UAAU,WAAW,CAAC,CAAU;IACpC,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,EAAE,CAAC;IACzB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,OAAO,CAA2B,CAAC;IACrC,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,CAAC,GAAY,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjC,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACtD,CAAC,CAAE,CAA4B;gBAC/B,CAAC,CAAC,EAAE,CAAC;QACT,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,EAAE,CAAC;QAAC,CAAC;IACxB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,CAAyB;IACzD,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,UAAU,CAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,CAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"executeApi.js","sourceRoot":"","sources":["../../src/helpers/executeApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface HttpRequestOptions {
|
|
2
|
+
method: string;
|
|
3
|
+
url: string;
|
|
4
|
+
headers?: Record<string, string>;
|
|
5
|
+
body?: string | Buffer | null;
|
|
6
|
+
timeoutMs?: number;
|
|
7
|
+
proxyUrl?: string | null;
|
|
8
|
+
verify?: boolean;
|
|
9
|
+
followRedirects?: boolean;
|
|
10
|
+
maxRedirects?: number;
|
|
11
|
+
}
|
|
12
|
+
export interface HttpResponse {
|
|
13
|
+
status: number;
|
|
14
|
+
headers: Record<string, string | string[]>;
|
|
15
|
+
body: Buffer;
|
|
16
|
+
}
|
|
17
|
+
export declare function httpRequest(opts: HttpRequestOptions): Promise<HttpResponse>;
|
|
18
|
+
//# sourceMappingURL=httpClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpClient.d.ts","sourceRoot":"","sources":["../src/httpClient.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAC3C,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CA2BjF"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import * as http from 'node:http';
|
|
2
|
+
import * as https from 'node:https';
|
|
3
|
+
import * as zlib from 'node:zlib';
|
|
4
|
+
export async function httpRequest(opts) {
|
|
5
|
+
const followRedirects = opts.followRedirects ?? true;
|
|
6
|
+
const maxRedirects = opts.maxRedirects ?? 10;
|
|
7
|
+
let currentUrl = opts.url;
|
|
8
|
+
let method = opts.method;
|
|
9
|
+
let body = opts.body ?? null;
|
|
10
|
+
let headers = { ...(opts.headers ?? {}) };
|
|
11
|
+
let hops = 0;
|
|
12
|
+
while (true) {
|
|
13
|
+
const res = await singleRequest({ ...opts, url: currentUrl, method, body, headers });
|
|
14
|
+
if (!followRedirects || ![301, 302, 303, 307, 308].includes(res.status))
|
|
15
|
+
return res;
|
|
16
|
+
if (hops >= maxRedirects)
|
|
17
|
+
return res;
|
|
18
|
+
const loc = res.headers['location'];
|
|
19
|
+
if (!loc)
|
|
20
|
+
return res;
|
|
21
|
+
const locStr = Array.isArray(loc) ? loc[0] : loc;
|
|
22
|
+
if (!locStr)
|
|
23
|
+
return res;
|
|
24
|
+
const nextUrl = new URL(locStr, currentUrl).toString();
|
|
25
|
+
// RFC 9110 §15.4: strip Authorization on cross-origin redirect.
|
|
26
|
+
if (new URL(nextUrl).origin !== new URL(currentUrl).origin) {
|
|
27
|
+
delete headers['Authorization'];
|
|
28
|
+
delete headers['authorization'];
|
|
29
|
+
}
|
|
30
|
+
currentUrl = nextUrl;
|
|
31
|
+
if (res.status === 303) {
|
|
32
|
+
method = 'GET';
|
|
33
|
+
body = null;
|
|
34
|
+
}
|
|
35
|
+
hops++;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
async function singleRequest(opts) {
|
|
39
|
+
const target = new URL(opts.url);
|
|
40
|
+
const isHttps = target.protocol === 'https:';
|
|
41
|
+
const proxyTarget = opts.proxyUrl ? new URL(opts.proxyUrl) : null;
|
|
42
|
+
// HTTP via forward proxy: connect to proxy host, send absolute URL in request line.
|
|
43
|
+
if (!isHttps && proxyTarget) {
|
|
44
|
+
return rawRequest(http, {
|
|
45
|
+
method: opts.method,
|
|
46
|
+
host: proxyTarget.hostname,
|
|
47
|
+
port: Number(proxyTarget.port) || 80,
|
|
48
|
+
path: target.toString(),
|
|
49
|
+
headers: { Host: target.host, ...(opts.headers ?? {}) },
|
|
50
|
+
}, opts.body ?? null, opts.timeoutMs);
|
|
51
|
+
}
|
|
52
|
+
// HTTPS via CONNECT tunnel.
|
|
53
|
+
if (isHttps && proxyTarget) {
|
|
54
|
+
const port = Number(target.port) || 443;
|
|
55
|
+
return new Promise((resolve, reject) => {
|
|
56
|
+
const connectReq = http.request({
|
|
57
|
+
method: 'CONNECT',
|
|
58
|
+
host: proxyTarget.hostname,
|
|
59
|
+
port: Number(proxyTarget.port) || 80,
|
|
60
|
+
path: `${target.hostname}:${port}`,
|
|
61
|
+
headers: { Host: `${target.hostname}:${port}` },
|
|
62
|
+
});
|
|
63
|
+
if (opts.timeoutMs && opts.timeoutMs > 0) {
|
|
64
|
+
connectReq.setTimeout(opts.timeoutMs, () => connectReq.destroy(new Error(`request timeout after ${opts.timeoutMs}ms`)));
|
|
65
|
+
}
|
|
66
|
+
connectReq.on('connect', (res, rawSocket) => {
|
|
67
|
+
if (res.statusCode !== 200) {
|
|
68
|
+
rawSocket.destroy();
|
|
69
|
+
reject(new Error(`CONNECT ${target.hostname}:${port} → ${res.statusCode}`));
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const req = https.request({
|
|
73
|
+
method: opts.method,
|
|
74
|
+
host: target.hostname,
|
|
75
|
+
port,
|
|
76
|
+
path: target.pathname + target.search,
|
|
77
|
+
headers: opts.headers ?? {},
|
|
78
|
+
socket: rawSocket,
|
|
79
|
+
agent: false,
|
|
80
|
+
servername: target.hostname,
|
|
81
|
+
rejectUnauthorized: opts.verify !== false,
|
|
82
|
+
}, (resp) => collectResponse(resp, resolve, reject));
|
|
83
|
+
if (opts.timeoutMs && opts.timeoutMs > 0) {
|
|
84
|
+
req.setTimeout(opts.timeoutMs, () => req.destroy(new Error(`request timeout after ${opts.timeoutMs}ms`)));
|
|
85
|
+
}
|
|
86
|
+
// https.request with socket: option does not auto-destroy on error; do it ourselves.
|
|
87
|
+
req.on('error', (e) => { rawSocket.destroy(); reject(e); });
|
|
88
|
+
if (opts.body != null)
|
|
89
|
+
req.write(opts.body);
|
|
90
|
+
req.end();
|
|
91
|
+
});
|
|
92
|
+
connectReq.on('error', reject);
|
|
93
|
+
connectReq.end();
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
// Direct HTTP or HTTPS (no proxy).
|
|
97
|
+
const lib = isHttps ? https : http;
|
|
98
|
+
const reqOpts = {
|
|
99
|
+
method: opts.method,
|
|
100
|
+
host: target.hostname,
|
|
101
|
+
port: Number(target.port) || (isHttps ? 443 : 80),
|
|
102
|
+
path: target.pathname + target.search,
|
|
103
|
+
headers: opts.headers ?? {},
|
|
104
|
+
};
|
|
105
|
+
if (isHttps) {
|
|
106
|
+
reqOpts.rejectUnauthorized = opts.verify !== false;
|
|
107
|
+
reqOpts.servername = target.hostname;
|
|
108
|
+
}
|
|
109
|
+
return rawRequest(lib, reqOpts, opts.body ?? null, opts.timeoutMs);
|
|
110
|
+
}
|
|
111
|
+
function collectResponse(res, resolve, reject) {
|
|
112
|
+
const enc = String(res.headers['content-encoding'] ?? '').toLowerCase();
|
|
113
|
+
const decoder = enc === 'gzip' ? zlib.createGunzip()
|
|
114
|
+
: enc === 'deflate' ? zlib.createInflate()
|
|
115
|
+
: enc === 'br' ? zlib.createBrotliDecompress()
|
|
116
|
+
: null;
|
|
117
|
+
const stream = decoder ? res.pipe(decoder) : res;
|
|
118
|
+
const chunks = [];
|
|
119
|
+
stream.on('data', (c) => chunks.push(c));
|
|
120
|
+
stream.on('end', () => resolve({
|
|
121
|
+
status: res.statusCode ?? 0,
|
|
122
|
+
headers: res.headers,
|
|
123
|
+
body: Buffer.concat(chunks),
|
|
124
|
+
}));
|
|
125
|
+
stream.on('error', reject);
|
|
126
|
+
res.on('error', reject);
|
|
127
|
+
}
|
|
128
|
+
function rawRequest(lib, reqOpts, body, timeoutMs) {
|
|
129
|
+
return new Promise((resolve, reject) => {
|
|
130
|
+
const req = lib.request(reqOpts, (res) => collectResponse(res, resolve, reject));
|
|
131
|
+
if (timeoutMs && timeoutMs > 0) {
|
|
132
|
+
req.setTimeout(timeoutMs, () => req.destroy(new Error(`request timeout after ${timeoutMs}ms`)));
|
|
133
|
+
}
|
|
134
|
+
req.on('error', reject);
|
|
135
|
+
if (body != null)
|
|
136
|
+
req.write(body);
|
|
137
|
+
req.end();
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=httpClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpClient.js","sourceRoot":"","sources":["../src/httpClient.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@testmuai/playwright-bindings",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4-beta.1",
|
|
4
4
|
"description": "Testmu binding for Playwright — thin runtime for LambdaTest exports",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -54,6 +54,7 @@
|
|
|
54
54
|
"@types/node": "^18.0.0",
|
|
55
55
|
"@types/ws": "^8.18.1",
|
|
56
56
|
"playwright": "^1.57.0",
|
|
57
|
+
"selfsigned": "^2.4.1",
|
|
57
58
|
"typescript": "^5.4.0",
|
|
58
59
|
"vitest": "^1.6.0"
|
|
59
60
|
},
|