mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2026-07-08 03:00:02 +00:00
* k6: Document fail * k6: Remove docs link Complete docs are included in the doc comment. * k6: Document group * k6: Document sleep * k6: Order signature docs before remarks Renders more usefully in Visual Studio Code. * k6: Document check * k6: Space documented declarations * k6: Space section headers * k6: Document method releases * k6: Simplify check documentation * k6: Simplify fail documentation * k6: Simplify group documentation * k6: Document package * k6: Compress documentation * k6: Document Checker * k6: Document Checkers * k6: Link to check docs * k6: Link to fail docs * k6: Link to group docs * k6: Link to sleep docs * k6: Correct returns tag * k6: Document check type param * k6: Document group return type * k6: Document byte * k6: Document bytes * k6: Document JSON types * k6: Configure API Extractor Enables validating docs with: mkdir -p etc; api-extractor run -c api-extractor.json -l * k6: Ignore docs build * k6: Document doc comment validation * k6: Disable API report generation * k6: Disable doc model generation * k6: Disable .d.ts rollup generation * k6: Disable TSDoc metadata generation * k6: Document typeParam tag warnings * k6/global: Document module * k6/global: Normalize section comments * k6/global: Document open * k6/global: Document __ENV * k6/global: Refine __ENV type * k6/global: Document __VU * k6/global: Document __ITER * k6/global: Document console * k6/global: Normalize VU logic references * k6: Improve section header visibility * k6/crypto: Document module * k6/crypto: Document randomBytes * k6/crypto: Document hmac * k6/crypto: Document md4 * k6/crypto: Document md5 * k6/crypto: Document sha1 * k6/crypto: Document sha256 * k6/crypto: Document sha384 * k6/crypto: Document sha512 * k6/crypto: Document sha512_224 * k6/crypto: Document sha512_256 * k6/crypto: Document ripemd160 * k6/crypto: Document createHash * k6/crypto: Document createHMAC * k6/crypto: Link to createHash docs * k6/crypto: Document Algorithm * k6/crypto: Document StringEncoding * k6/crypto: Document BinaryEncoding * k6/crypto: Document OutputEncoding * k6/crypto: Document Output * k6/crypto: Document Hasher * k6/crypto: Document Hasher#update * k6/crypto: Document Hasher#digest * k6/crypto: Update formatting Repo formatter really wants it this way. * k6/encoding: Document module * k6/encoding: Document b64encode * k6/encoding: Document b64decode * k6/encoding: Document Base64Variant * k6/html: Document module * k6/html: Document parseHTML * k6/html: Add section headers * k6/html: Document Selection * k6: Disable redundant JSDoc check Incorrectly applies to our TSDoc doc comments. * k6/global: Add missing semicolon * k6/global: Correct test * k6/html: Update tests * k6/html: Accept overloads for documentation The overloads in these cases produce more natural IntelliSense rendering of the documentation. * k6/html: Document FormValue * k6/html: Document Tester * k6/html: Document Handler * k6/html: Document Mapper * k6/html: Qualify FormValue description * k6/html: Normalize section header language * k6/html: Document Attribute * k6/html: Document NodeType * k6/html: Document Element * k6/html: Document AnchorElement * k6/html: Document AreaElement * k6/html: Link to Element docs * k6/html: Document AudioElement * k6/html: Document BaseElement * k6/html: Document ButtonElement * k6/html: Document CanvasElement * k6/html: Document DataElement * k6/html: Document DataListElement * k6/html: Document DelElement * k6/html: Document EmbedElement * k6/html: Document FieldSetElement * k6/html: Document FormElement * k6/html: Document FormFieldElement * k6/html: Document HrefElement * k6/html: Document IFrameElement * k6/html: Document ImageElement * k6/html: Document InputElement * k6/html: Document InsElement * k6/html: Document KeygenElement * k6/html: Document LabelElement * k6/html: Document LegendElement * k6/html: Document LiElement * k6/html: Document LinkElement * k6/html: Document MapElement * k6/html: Document MediaElement * k6/html: Document MetaElement * k6/html: Document MeterElement * k6/html: Document ModElement * k6/html: Document ObjectElement * k6/html: Document OListElement * k6/html: Document OptGroupElement * k6/html: Document OptionElement * k6/html: Document OutputElement * k6/html: Document ParamElement * k6/html: Document PreElement * k6/html: Document ProgressElement * k6/html: QuoteElement * k6/html: Document ScriptElement * k6/html: Document SelectElement * k6/html: Document SourceElement * k6/html: Document StyleElement * k6/html: Document TableBodyElement * k6/html: Document TableCellElement * k6/html: Document TableColElement * k6/html: Document TableDataCellElement * k6/html: Document TableElement * k6/html: Document TableFootElement * k6/html: Document TableHeadElement * k6/html: Document TableHeaderCellElement * k6/html: Document TableRowElement * k6/html: Document TableSectionElement * k6/html: Document TextAreaElement * k6/html: Document TimeElement * k6/html: Document TitleElement * k6/html: Document TrackElement * k6/html: Correct MediaElement#textTracks return type * k6/html: Document UListElement * k6/html: Document VideoElement * k6/html: Update HrefElement test * k6/http: Document module * k6/http: Add section headers * k6/http: Normalize refined params type name * k6/http: Normalize refined batch request type names * k6/http: Remove generics justification * k6/http: Document del * k6/http: Document get * k6/http: Document options * k6/http: Document patch * k6/http: Document post * k6/http: Document put * k6/http: Document request * k6/http: Document batch * k6/http: Document file * k6/http: Document cookieJar * k6/http: Include release tags * k6/http: Document Params * k6/http: Document RefinedParams * k6/http: Document AuthMethod * k6/http: Document ResponseType * k6/http: Document ParamsCookieValue * k6/http: Document RequestBody * k6/http: Document StructuredRequestBody * k6/http: Document batch request types * k6/http: Document refined batch request types * k6/http: Document BatchResponses * k6/http: Document Response properties * k6/http: Document Response.html * k6/http: Document Response.json * k6/http: Document Response.clickLink * k6/http: Document Response.submitForm * k6/http: Define SSL/TLS version constants * k6/http: Define OCSP status constants * k6/http: Document OCSP reason constants * k6/http: Define CipherSuite * k6/http: Document Protocol * k6/http: Document CipherSuite * k6/http: Document RefinedResponse * k6/http: Document ResponseBody * k6/http: Document RefinedResponseBody * k6/http: Document RequestCookie * k6/http: Document ResponseCookie * k6/http: Correct Unix time specifications * k6/http: Document FileData * k6/http: Accept formatter changes * k6/http: Link to FileData docs * k6/http: Accept formatter changes * k6/http: Document CookieJar * k6/http: Document CookieJarCookies * k6/http: CookieOptions * k6/metrics: Document module * k6/metrics: Document Metric * k6/metrics: Document Counter * k6/metrics: Document Gauge * k6/metrics: Document Rate * k6/metrics: Document Trend * k6/ws: Document module * k6/ws: Add section headers * k6/ws: Document connect * k6/ws: Document Params * k6/ws: Document Executor * k6/ws: Document Response * k6/ws: Document Socket * k6/ws: Document EventType * k6/ws: Document TimerHandler * k6/ws: Document event handlers * k6/ws: Document WebSocketError * k6/options: Document module * k6/options: Document Options * k6/options: Document CollectorOptions * k6/options: Document Stage * k6/options: Document threshold specifications * k6/options: Document Certificate * k6: Remove API Extractor config No obvious way to get the repo test to accept it. To be restored when an approach is discovered.
714 lines
17 KiB
TypeScript
714 lines
17 KiB
TypeScript
/*
|
|
* HTTP client.
|
|
* https://docs.k6.io/docs/k6http
|
|
*/
|
|
|
|
import { bytes, JSONValue } from '.';
|
|
import { Selection } from './html';
|
|
|
|
// === Main ===
|
|
// ------------
|
|
|
|
/**
|
|
* Make DELETE request.
|
|
* https://docs.k6.io/docs/del-url-body-params
|
|
* @param url - Request URL.
|
|
* @param body - Discouraged. Request body. Object form encoded.
|
|
* @param params - Request parameters.
|
|
* @returns Resulting response.
|
|
* @public
|
|
*/
|
|
export function del<RT extends ResponseType | undefined>(
|
|
url: string,
|
|
body?: RequestBody | null,
|
|
params?: RefinedParams<RT> | null
|
|
): RefinedResponse<RT>;
|
|
|
|
/**
|
|
* Make GET request.
|
|
* https://docs.k6.io/docs/get-url-body-params
|
|
* @param url - Request URL.
|
|
* @param params - Request parameters.
|
|
* @returns Resulting response.
|
|
* @public
|
|
*/
|
|
export function get<RT extends ResponseType | undefined>(
|
|
url: string,
|
|
params?: RefinedParams<RT> | null
|
|
): RefinedResponse<RT>;
|
|
|
|
/**
|
|
* Make OPTIONS request.
|
|
* https://docs.k6.io/docs/options-url-body-params
|
|
* @param url - Request URL.
|
|
* @param body - Request body. Object form encoded.
|
|
* @param params - Request parameters.
|
|
* @returns Resulting response.
|
|
* @public
|
|
*/
|
|
export function options<RT extends ResponseType | undefined>(
|
|
url: string,
|
|
body?: RequestBody | null,
|
|
params?: RefinedParams<RT> | null
|
|
): RefinedResponse<RT>;
|
|
|
|
/**
|
|
* Make PATCH request.
|
|
* https://docs.k6.io/docs/patch-url-body-params
|
|
* @param url - Request URL.
|
|
* @param body - Request body. Object form encoded.
|
|
* @param params - Request parameters.
|
|
* @returns Resulting response.
|
|
* @public
|
|
*/
|
|
export function patch<RT extends ResponseType | undefined>(
|
|
url: string,
|
|
body?: RequestBody | null,
|
|
params?: RefinedParams<RT> | null
|
|
): RefinedResponse<RT>;
|
|
|
|
/**
|
|
* Make POST request.
|
|
* https://docs.k6.io/docs/post-url-body-params
|
|
* @param url - Request URL.
|
|
* @param body - Request body. Object form encoded.
|
|
* @param params - Request parameters.
|
|
* @returns Resulting response.
|
|
* @public
|
|
*/
|
|
export function post<RT extends ResponseType | undefined>(
|
|
url: string,
|
|
body?: RequestBody | null,
|
|
params?: RefinedParams<RT> | null
|
|
): RefinedResponse<RT>;
|
|
|
|
/**
|
|
* Make PUT request.
|
|
* https://docs.k6.io/docs/put-url-body-params
|
|
* @param url - Request URL.
|
|
* @param body - Request body. Object form encoded.
|
|
* @param params - Request parameters.
|
|
* @returns Resulting response.
|
|
* @public
|
|
*/
|
|
export function put<RT extends ResponseType | undefined>(
|
|
url: string,
|
|
body?: RequestBody | null,
|
|
params?: RefinedParams<RT> | null
|
|
): RefinedResponse<RT>;
|
|
|
|
/**
|
|
* Make request.
|
|
* https://docs.k6.io/docs/request-method-url-body-params
|
|
* @param method - HTTP method.
|
|
* @param url - Request URL.
|
|
* @param body - Request body. Object form encoded.
|
|
* @param params - Request parameters.
|
|
* @returns Resulting response.
|
|
* @public
|
|
*/
|
|
export function request<RT extends ResponseType | undefined>(
|
|
method: string,
|
|
url: string,
|
|
body?: RequestBody | null,
|
|
params?: RefinedParams<RT> | null
|
|
): RefinedResponse<RT>;
|
|
|
|
/**
|
|
* Batch multiple HTTP requests together,
|
|
* to issue them in parallel over multiple TCP connections.
|
|
* https://docs.k6.io/docs/batch-requests
|
|
* @param requests - Request specifications.
|
|
* @returns Resulting responses.
|
|
* @public
|
|
*/
|
|
export function batch<Q extends BatchRequests>(requests: Q): BatchResponses<Q>;
|
|
|
|
/**
|
|
* Create a file object used for building multipart requests (file uploads).
|
|
* https://docs.k6.io/docs/file-data-filename-contenttype
|
|
* @param data - File data.
|
|
* @param filename - Filename. Included in MIME message.
|
|
* @param contentType - Content type. Included in MIME message.
|
|
* @returns File data object.
|
|
* @public
|
|
*/
|
|
export function file(data: string | bytes, filename?: string, contentType?: string): FileData;
|
|
|
|
/**
|
|
* Get active cookie jar.
|
|
* https://docs.k6.io/docs/cookiejar
|
|
* @returns Active cookie jar.
|
|
* @public
|
|
*/
|
|
export function cookieJar(): CookieJar;
|
|
|
|
// === SSL/TLS versions ===
|
|
// ------------------------
|
|
|
|
/** @public */
|
|
export const SSL_3_0 = 'ssl3.0';
|
|
|
|
/** @public */
|
|
export const TLS_1_0 = 'tls1.0';
|
|
|
|
/** @public */
|
|
export const TLS_1_1 = 'tls1.1';
|
|
|
|
/** @public */
|
|
export const TLS_1_2 = 'tls1.2';
|
|
|
|
// === OCSP statuses ===
|
|
// ---------------------
|
|
|
|
/** @public */
|
|
export const OCSP_STATUS_GOOD = 'good';
|
|
|
|
/** @public */
|
|
export const OCSP_STATUS_REVOKED = 'revoked';
|
|
|
|
/** @public */
|
|
export const OCSP_STATUS_SERVER_FAILED = 'server_failed';
|
|
|
|
/** @public */
|
|
export const OCSP_STATUS_UNKNOWN = 'unknown';
|
|
|
|
// === OCSP revocation reasons ===
|
|
// -------------------------------
|
|
|
|
/** @public */
|
|
export const OCSP_REASON_AA_COMPROMISE = 'aa_compromise';
|
|
|
|
/** @public */
|
|
export const OCSP_REASON_AFFILIATION_CHANGED = 'affiliation_changed';
|
|
|
|
/** @public */
|
|
export const OCSP_REASON_CA_COMPROMISE = 'ca_compromise';
|
|
|
|
/** @public */
|
|
export const OCSP_REASON_CERTIFICATE_HOLD = 'certificate_hold';
|
|
|
|
/** @public */
|
|
export const OCSP_REASON_CESSATION_OF_OPERATION = 'cessation_of_operation';
|
|
|
|
/** @public */
|
|
export const OCSP_REASON_KEY_COMPROMISE = 'key_compromise';
|
|
|
|
/** @public */
|
|
export const OCSP_REASON_PRIVILEGE_WITHDRAWN = 'privilege_withdrawn';
|
|
|
|
/** @public */
|
|
export const OCSP_REASON_REMOVE_FROM_CRL = 'remove_from_crl';
|
|
|
|
/** @public */
|
|
export const OCSP_REASON_SUPERSEDED = 'superseded';
|
|
|
|
/** @public */
|
|
export const OCSP_REASON_UNSPECIFIED = 'unspecified';
|
|
|
|
// === Params ===
|
|
// --------------
|
|
|
|
/**
|
|
* Request parameters.
|
|
* https://docs.k6.io/docs/params-k6http
|
|
* @public
|
|
*/
|
|
export interface Params {
|
|
/** Authentication method. */
|
|
auth?: AuthMethod;
|
|
|
|
/** Request scoped cookies. */
|
|
cookies?: { [name: string]: ParamsCookieValue };
|
|
|
|
/** Request headers. */
|
|
headers?: { [name: string]: string };
|
|
|
|
/** Cookie jar to override default VU cookie jar with. */
|
|
jar?: CookieJar;
|
|
|
|
/** Maximum redirects to follow. */
|
|
redirects?: number;
|
|
|
|
/** Response time metric tags. */
|
|
tags?: { [name: string]: string };
|
|
|
|
/** Request timeout. */
|
|
timeout?: number;
|
|
|
|
/** Response type. */
|
|
responseType?: ResponseType;
|
|
}
|
|
|
|
/**
|
|
* Request parameters with refined response type.
|
|
* Used to infer response body type.
|
|
* @public
|
|
*/
|
|
export interface RefinedParams<RT extends ResponseType | undefined> extends Params {
|
|
responseType?: RT;
|
|
}
|
|
|
|
/**
|
|
* Request authentication method.
|
|
* @public
|
|
*/
|
|
export type AuthMethod = 'basic' | 'digest' | 'ntlm';
|
|
|
|
/**
|
|
* Response type.
|
|
* @public
|
|
*/
|
|
export type ResponseType = 'binary' | 'none' | 'text';
|
|
|
|
/**
|
|
* Cookie value in request parameters.
|
|
* https://docs.k6.io/docs/params-k6http
|
|
* @public
|
|
*/
|
|
export type ParamsCookieValue = string | { value?: string; replace?: boolean };
|
|
|
|
// === Request body ===
|
|
// --------------------
|
|
|
|
/**
|
|
* Request body.
|
|
* @public
|
|
*/
|
|
export type RequestBody = string | StructuredRequestBody;
|
|
|
|
/**
|
|
* Structured request body. May include file uploads.
|
|
* @public
|
|
*/
|
|
export interface StructuredRequestBody {
|
|
[name: string]: string | FileData;
|
|
}
|
|
|
|
// === Batch request ===
|
|
// ---------------------
|
|
|
|
/**
|
|
* Batch request specification.
|
|
* https://docs.k6.io/docs/batch-requests
|
|
* @public
|
|
*/
|
|
export type BatchRequest = string | ArrayBatchRequest | ObjectBatchRequest;
|
|
|
|
/**
|
|
* Array form batch request specification.
|
|
* @public
|
|
*/
|
|
export type ArrayBatchRequest = [ string, string, (RequestBody | null)?, (Params | null)? ];
|
|
|
|
/**
|
|
* Object form batch request specification.
|
|
* @public
|
|
*/
|
|
export interface ObjectBatchRequest {
|
|
/** Request method. */
|
|
method: string;
|
|
|
|
/** Request URL. */
|
|
url: string;
|
|
|
|
/** Request body. */
|
|
body?: RequestBody | null;
|
|
|
|
/** Requset parameters. */
|
|
params?: Params | null;
|
|
}
|
|
|
|
/**
|
|
* Set of batch request specifications.
|
|
* @public
|
|
*/
|
|
export type BatchRequests = BatchRequest[] | { [name: string]: BatchRequest };
|
|
|
|
// === Refined batch request ===
|
|
// -----------------------------
|
|
|
|
/**
|
|
* Refined batch request specification.
|
|
* Used to infer response body type.
|
|
* @public
|
|
*/
|
|
export type RefinedBatchRequest<RT extends ResponseType | undefined> =
|
|
| string
|
|
| ArrayRefinedBatchRequest<RT>
|
|
| ObjectRefinedBatchRequest<RT>;
|
|
|
|
/**
|
|
* Array form refined batch request specification.
|
|
* @public
|
|
*/
|
|
export type ArrayRefinedBatchRequest<RT extends ResponseType | undefined> = [
|
|
string,
|
|
string,
|
|
(RequestBody | null)?,
|
|
(RefinedParams<RT> | null)?
|
|
];
|
|
|
|
/**
|
|
* Object form refined batch request specification.
|
|
* @public
|
|
*/
|
|
export interface ObjectRefinedBatchRequest<RT extends ResponseType | undefined> {
|
|
method: string;
|
|
url: string;
|
|
body?: RequestBody | null;
|
|
params?: RefinedParams<RT> | null;
|
|
}
|
|
|
|
// === Batch responses ===
|
|
// -----------------------
|
|
|
|
/**
|
|
* Set of batch responses. Array or object.
|
|
* @public
|
|
*/
|
|
export type BatchResponses<Q> = {
|
|
[K in keyof Q]: Q[K] extends RefinedBatchRequest<infer RT> ? RefinedResponse<RT> : never;
|
|
};
|
|
|
|
// === Response ===
|
|
// ----------------
|
|
|
|
/**
|
|
* Response.
|
|
* https://docs.k6.io/docs/response-k6http
|
|
* @public
|
|
*/
|
|
export interface Response {
|
|
/** Response body. */
|
|
body: ResponseBody;
|
|
|
|
/** Response cookies. */
|
|
cookies: { [name: string]: ResponseCookie[] };
|
|
|
|
/** Non-HTTP error message. */
|
|
error: string;
|
|
|
|
/** Error code. Present for 4xx 5xx responses and non-HTTP errors. */
|
|
error_code: number;
|
|
|
|
/** Response headers. */
|
|
headers: { [name: string]: string };
|
|
|
|
/** Online Certificate Status Protocol response. */
|
|
ocsp: {
|
|
/** When response signed by responder in millisecond Unix time. */
|
|
produced_at: number;
|
|
|
|
/** When indicated status was known correct in millisecond Unix time. */
|
|
this_update: number;
|
|
|
|
/** When response will be refreshed with the CA in millisecond Unix time. */
|
|
next_update: number;
|
|
|
|
/** Certificate revocation reason. One of `OCSP_REASON_*` constants. */
|
|
revocation_reason: string;
|
|
|
|
/** When certificate was revoked in millisecond Unix time. */
|
|
revoked_at: number;
|
|
|
|
/** Certificate status. One of `OCSP_STATUS_*` constants. */
|
|
status: string;
|
|
};
|
|
|
|
/** Protocol used to perform the transfer. */
|
|
proto: Protocol;
|
|
|
|
/** Server IP address. */
|
|
remote_ip: string;
|
|
|
|
/** Remote port connected to. */
|
|
remote_port: number;
|
|
|
|
/** Inciting request details. */
|
|
request: {
|
|
/** Request body. */
|
|
body: string;
|
|
|
|
/** Request cookies. */
|
|
cookies: { [name: string]: RequestCookie[] };
|
|
|
|
/** Request headers. */
|
|
headers: { [name: string]: string[] };
|
|
|
|
/** Request method. */
|
|
method: string;
|
|
|
|
/** Request URL. */
|
|
url: string;
|
|
};
|
|
|
|
/** HTTP status code. */
|
|
status: number;
|
|
|
|
/** Performance timing information. */
|
|
timings: {
|
|
/** Milliseconds spent blocked before initiating request. */
|
|
blocked: number;
|
|
|
|
/** Milliseconds spent setting up TCP connection to host. */
|
|
connecting: number;
|
|
|
|
/** Milliseconds spent handshaking TLS session with host. */
|
|
tls_handshaking: number;
|
|
|
|
/** Milliseconds spent sending request. */
|
|
sending: number;
|
|
|
|
/** Milliseconds spent waiting for server response (TTFB). */
|
|
waiting: number;
|
|
|
|
/** Milliseconds spent receiving response data. */
|
|
receiving: number;
|
|
|
|
/** Total time in milliseconds. `sending+waiting+receiving` */
|
|
duration: number;
|
|
};
|
|
|
|
/** TLS cipher suite used. */
|
|
tls_cipher_suite: CipherSuite;
|
|
|
|
/** TLS/SSL version used. One of `TLS_*` `SSL_*` constants. */
|
|
tls_version: string;
|
|
|
|
/** Fetched URL. May differ from request URL due to redirects. */
|
|
url: string;
|
|
|
|
/**
|
|
* Click link on page.
|
|
* https://docs.k6.io/docs/responseclicklink-params
|
|
* @param selector - Selector expression locating link to click.
|
|
* @param params - Parameters for link click request.
|
|
* @returns Link click response.
|
|
*/
|
|
clickLink<RT extends ResponseType | undefined>(args?: {
|
|
selector?: string;
|
|
params?: RefinedParams<RT> | null;
|
|
}): RefinedResponse<RT>;
|
|
|
|
/**
|
|
* Parse body as HTML. Optionally filter by selector.
|
|
* https://docs.k6.io/docs/response-k6http
|
|
* @param selector - Selector expression.
|
|
* @returns Document node or selected elements.
|
|
*/
|
|
html(selector?: string): Selection;
|
|
|
|
/**
|
|
* Parse body as JSON. Optionally filter by selector.
|
|
* https://docs.k6.io/docs/response-k6http
|
|
* @param selector - GJSON expression.
|
|
* @returns Parse result if successful, `undefined` if unsuccessful.
|
|
*/
|
|
json(selector?: string): JSONValue | undefined;
|
|
|
|
/**
|
|
* Submit form on page.
|
|
* https://docs.k6.io/docs/responsesubmitform-params
|
|
* @param formSelector - Selector expression locating form to submit.
|
|
* @param fields - Form field values.
|
|
* @param submitSelector - Selector expression locating submit button.
|
|
* @param params - Parameters for form submission request.
|
|
* @returns Form submission response.
|
|
*/
|
|
submitForm<RT extends ResponseType | undefined>(args?: {
|
|
formSelector?: string;
|
|
fields?: { [name: string]: string };
|
|
submitSelector?: string;
|
|
params?: RefinedParams<RT> | null;
|
|
}): RefinedResponse<RT>;
|
|
}
|
|
|
|
/**
|
|
* HTTP protocol.
|
|
* @public
|
|
*/
|
|
export type Protocol = 'HTTP/1.0' | 'HTTP/1.1' | 'HTTP/2.0';
|
|
|
|
/**
|
|
* TLS cipher suite.
|
|
* @public
|
|
*/
|
|
export type CipherSuite =
|
|
| 'TLS_RSA_WITH_RC4_128_SHA'
|
|
| 'TLS_RSA_WITH_3DES_EDE_CBC_SHA'
|
|
| 'TLS_RSA_WITH_AES_128_CBC_SHA'
|
|
| 'TLS_RSA_WITH_AES_256_CBC_SHA'
|
|
| 'TLS_RSA_WITH_AES_128_GCM_SHA256'
|
|
| 'TLS_RSA_WITH_AES_256_GCM_SHA384'
|
|
| 'TLS_ECDHE_ECDSA_WITH_RC4_128_SHA'
|
|
| 'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA'
|
|
| 'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA'
|
|
| 'TLS_ECDHE_RSA_WITH_RC4_128_SHA'
|
|
| 'TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA'
|
|
| 'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA'
|
|
| 'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA'
|
|
| 'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256'
|
|
| 'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256'
|
|
| 'TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384'
|
|
| 'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384';
|
|
|
|
/**
|
|
* Refined response.
|
|
* Exposes body with best possible type.
|
|
* @public
|
|
*/
|
|
export interface RefinedResponse<RT extends ResponseType | undefined> extends Response {
|
|
body: RefinedResponseBody<RT>;
|
|
}
|
|
|
|
/**
|
|
* Response body.
|
|
* @public
|
|
*/
|
|
export type ResponseBody = string | bytes | null;
|
|
|
|
/**
|
|
* Refined response body.
|
|
* Best possible type given `responseType` from request parameters.
|
|
* @typeParam RT - `Params.responseType` value.
|
|
* @privateRemarks Default type is a union due to depending on program options.
|
|
* @public
|
|
*/
|
|
export type RefinedResponseBody<RT extends ResponseType | undefined> = RT extends 'binary'
|
|
? bytes
|
|
: RT extends 'none'
|
|
? null
|
|
: RT extends 'text'
|
|
? string
|
|
: RT extends undefined
|
|
? string | null
|
|
: never;
|
|
|
|
/**
|
|
* Request cookie description in response.
|
|
* @public
|
|
*/
|
|
export interface RequestCookie {
|
|
/** Name. */
|
|
name: string;
|
|
|
|
/** Value. */
|
|
value: string;
|
|
|
|
/** Whether configured to override VU cookie jar. */
|
|
replace: boolean;
|
|
}
|
|
|
|
/**
|
|
* Response cookie.
|
|
* @public
|
|
*/
|
|
export interface ResponseCookie {
|
|
/** Name. */
|
|
name: string;
|
|
|
|
/** Value. */
|
|
value: string;
|
|
|
|
/** Domain allowed to receive. */
|
|
domain: string;
|
|
|
|
/** Scope path. */
|
|
path: string;
|
|
|
|
/** HTTP only. */
|
|
httpOnly: boolean;
|
|
|
|
/** Secure. */
|
|
secure: boolean;
|
|
|
|
/** Seconds until expiration. */
|
|
maxAge: number;
|
|
|
|
/** Expiry time in millisecond Unix time. */
|
|
expires: number;
|
|
}
|
|
|
|
// === File data ===
|
|
// -----------------
|
|
|
|
/**
|
|
* File data for constructing a multipart request with file uploads.
|
|
* https://docs.k6.io/docs/filedata-k6http
|
|
* @public
|
|
*/
|
|
export abstract class FileData {
|
|
protected __brand: never;
|
|
|
|
/** File data. */
|
|
data: string | bytes;
|
|
|
|
/** Filename to include in MIME message. */
|
|
filename?: string;
|
|
|
|
/** Content type to include in MIME message. */
|
|
content_type?: string;
|
|
}
|
|
|
|
// === Cookie jar ===
|
|
// ------------------
|
|
|
|
/**
|
|
* Object for storing cookies.
|
|
* https://docs.k6.io/docs/cookiejar-k6http
|
|
* @public
|
|
*/
|
|
export abstract class CookieJar {
|
|
protected __brand: never;
|
|
|
|
/**
|
|
* Get cookies set for a particular URL.
|
|
* https://docs.k6.io/docs/cookiejarcookiesforurlurl
|
|
* @param url - URL for which to get cookies.
|
|
* @returns Cookies for URL.
|
|
*/
|
|
cookiesForURL(url: string): CookieJarCookies;
|
|
|
|
/**
|
|
* Set cookie.
|
|
* https://docs.k6.io/docs/cookiejarsetname-value-options
|
|
* @param name - Cookie name.
|
|
* @param value - Cookie value.
|
|
* @param options - Optional settings.
|
|
*/
|
|
set(name: string, value: string, options?: CookieOptions | null): void;
|
|
}
|
|
|
|
/**
|
|
* Cookies retrieved from cookie jar.
|
|
* @public
|
|
*/
|
|
export interface CookieJarCookies {
|
|
[name: string]: string[];
|
|
}
|
|
|
|
/**
|
|
* Optional settings when adding a cookie to a cookie jar.
|
|
* @public
|
|
*/
|
|
export interface CookieOptions {
|
|
/** Domain allowed to receive. */
|
|
domain?: string;
|
|
|
|
/** Scope path. */
|
|
path?: string;
|
|
|
|
/** Expiry time in RFC1123 format. */
|
|
expires?: string;
|
|
|
|
/** Seconds until expiration. */
|
|
max_age?: number;
|
|
|
|
/** Secure. */
|
|
secure?: boolean;
|
|
|
|
/** HTTP only. */
|
|
http_only?: boolean;
|
|
}
|