UNPKG

@amadeus-it-group/kassette

Version:

Development server, used mainly for testing, which proxies requests and is able to easily manage local mocks.

340 lines (339 loc) 9.1 kB
export interface HarFormat { log: HarFormatLog; } export interface HarFormatLog { version?: string; creator: HarFormatApp; browser?: HarFormatApp; pages?: any[]; entries: HarFormatEntry[]; comment?: string; } export interface HarFormatApp { name: string; version?: string; comment?: string; } /** * Detailed information about a request and its response, as stored in a har file. * * @public */ export interface HarFormatEntry { /** * Content used to create a checksum * * @remarks * * kassette only includes this field if {@link IMock.saveChecksumContent | saveChecksumContent} is true and * if the {@link IMock.checksum | checksum} method was called. */ _kassetteChecksumContent?: string; /** * Key used by kassette to select the correct mock to replay. * * @remarks * * This field contains the value passed to {@link IMock.setMockHarKey} when used with the default * {@link ConfigurationSpec.mocksHarKeyManager | mocksHarKeyManager}. */ _kassetteMockKey?: string; /** * Detailed information about the request forwarded to the remote server. * * @remarks * * kassette only includes this field if {@link IMock.saveForwardedRequestData | saveInputRequestData} is true. */ _kassetteForwardedRequest?: HarFormatRequest; /** * Reference to the parent page. This is not implemented in kassette. */ pageref?: string; /** * Date and time of the request start, as a string in ISO format (YYYY-MM-DDThh:mm:ss.sTZD). */ startedDateTime?: string; /** * Total time of the request, in milliseconds. This is the sum of all timings in the {@link HarFormatEntry.timings | timings object}. */ time?: number; /** * Detailed information about the input request. * * @remarks * * kassette only includes this field if {@link IMock.saveInputRequestData | saveInputRequestData} is true. */ request?: HarFormatRequest; /** * Detailed information about the response. */ response?: HarFormatResponse; /** * Information about the cache. This is not implemented in kassette. */ cache?: any; /** * Detailed timing information about request/response round trip. * * @remarks * * kassette only includes this field if {@link IMock.saveDetailedTimings | saveDetailedTimings} is true. */ timings?: HarFormatTimings; /** * Server IP address. This is not implemented in kassette. */ serverIPAddress?: string; /** * Unique ID of the TCP/IP connection. This is not implemented in kassette. */ connection?: string; /** * Any comment as a string. This is not used by kassette. */ comment?: string; } /** * Detailed information about a request, as stored in a har file. * * @public */ export interface HarFormatRequest { /** * Request method, such as "GET" or "POST". */ method?: string; /** * Request URL. */ url?: string; /** * Request HTTP version, such as "HTTP/1.1". */ httpVersion?: string; /** * Information about cookies. This is not implemented in kassette. */ cookies?: any[]; /** * List of request headers. */ headers?: HarFormatNameValuePair[]; /** * List of query parameters. */ queryString?: HarFormatNameValuePair[]; /** * Information about the request body. * * @remarks * * kassette only includes this field if {@link IMock.saveInputRequestBody | saveInputRequestBody} is true * (or, for the {@link HarFormatEntry._kassetteForwardedRequest | _kassetteForwardedRequest}.postData field, * if {@link IMock.saveForwardedRequestBody | saveForwardedRequestBody} is true). */ postData?: HarFormatPostData; /** * Total number of bytes from the start of the HTTP request message until (and including) the double CRLF before the body, * or -1 if it is unknown. kassette always sets -1 for this field. */ headersSize?: number; /** * Size of the request body in bytes or -1 if it is unknown. */ bodySize?: number; /** * Any comment as a string. This is not used by kassette. */ comment?: string; } /** * Detailed information about a response, as stored in a har file. * * @public */ export interface HarFormatResponse { /** * Response status. */ status?: number; /** * Response status text. */ statusText?: string; /** * Response HTTP version, such as "HTTP/1.1". */ httpVersion?: string; /** * Information about cookies. This is not implemented in kassette. */ cookies?: any[]; /** * List of response headers. */ headers?: HarFormatNameValuePair[]; /** * Information about the response body. */ content?: HarFormatContent; /** * Content of the `Location` response header if present. */ redirectURL?: string; /** * Total number of bytes from the start of the HTTP response message until (and including) the double CRLF before the body, * or -1 if it is unknown. kassette always sets -1 for this field. */ headersSize?: number; /** * Size of the response body in bytes, or -1 if it is unknown. */ bodySize?: number; /** * Any comment as a string. This is not used by kassette. */ comment?: string; } /** * Details about the time spent for each phase of a request-response round trip. All times are specified in milliseconds. * * @public */ export interface RequestTimings { /** * Time spent in a queue waiting for a network connection. * Can be -1 if the timing does not apply to the current request. */ blocked?: number; /** * The time required to resolve a host name. * Can be -1 if the timing does not apply to the current request. */ dns?: number; /** * Time required to create TCP connection. * Can be -1 if the timing does not apply to the current request. */ connect?: number; /** * Time required to send HTTP request to the server. */ send?: number; /** * Time waiting for a response from the server. */ wait?: number; /** * Time required to read entire response from the server. */ receive?: number; /** * Time required for SSL/TLS negotiation. * This time is also included in the {@link RequestTimings.connect|RequestTimings.connect} field. * Can be -1 if the timing does not apply to the current request. */ ssl?: number; } /** * Details about the time spent for each phase of a request-response round trip, as stored in a har file. * * @public */ export interface HarFormatTimings extends RequestTimings { /** * Any comment as a string. This is not used by kassette. */ comment?: string; } /** * Information about a request body, as stored in a har file. * * @public */ export interface HarFormatPostData { /** * Value of the `Content-Type` request header, if present. */ mimeType?: string; /** * List of posted parameters. This is not implemented in kassette. * * @remarks * * kassette always fills the {@link HarFormatPostData.text | text field} and never uses the params field. */ params?: any[]; /** * Posted data, as a (binary) string. */ text?: string; /** * Any comment as a string. This is not used by kassette. */ comment?: string; /** * Response body saved as an object. */ json?: any; } /** * Information about the response body, as stored in a har file. * * @public */ export interface HarFormatContent { /** * Size of the content in bytes. */ size?: number; /** * Number of bytes saved by compression. This is not implemented by kassette. */ compression?: number; /** * Value of the `Content-Type` response header. */ mimeType?: string; /** * Response body. * * @remarks * * The response body can be encoded in base64 if this is specified in the {@link HarFormatContent.encoding | encoding} field. */ text?: string; /** * Encoding used for the {@link HarFormatContent.text | text} field, such as "base64". */ encoding?: string; /** * Any comment as a string. This is not used by kassette. */ comment?: string; /** * Response body saved as an object. */ json?: any; } /** * Information about a header or a query parameter, as stored in a har file. * * @public */ export interface HarFormatNameValuePair { /** * Name of the header or query parameter. */ name: string; /** * Value of the header or the query parameter. */ value: string; /** * Any comment as a string. This is not used by kassette. */ comment?: string; }