11import Adapter from '@pollyjs/adapter' ;
22import Persister from '@pollyjs/persister' ;
3- import { LogLevelDesc } from 'loglevel' ;
3+ import { Logger , LogLevelDesc } from 'loglevel' ;
44
55export type MODE = 'record' | 'replay' | 'passthrough' | 'stopped' ;
66export type ACTION = 'record' | 'replay' | 'intercept' | 'passthrough' ;
@@ -98,6 +98,8 @@ export interface HTTPBase {
9898 jsonBody ( ) : any ;
9999}
100100
101+ export type RequestEvent = 'identify' ;
102+
101103export interface Request extends HTTPBase {
102104 method : string ;
103105 url : string ;
@@ -109,29 +111,35 @@ export interface Request extends HTTPBase {
109111 hash : string ;
110112 query : { [ key : string ] : string | string [ ] } ;
111113 readonly params : { [ key : string ] : string } ;
114+ readonly log : Logger ;
115+ readonly requestArguments : any ;
112116 recordingName : string ;
117+ recordingId : string ;
113118 responseTime ?: number | undefined ;
114119 timestamp ?: string | undefined ;
115120 didRespond : boolean ;
116121 id ?: string | undefined ;
117122 order ?: number | undefined ;
118123 action : ACTION | null ;
124+ aborted : boolean ;
125+ promise : Promise < void > ;
126+ configure ( config : Partial < PollyConfig > ) : void ;
127+ overrideRecordingName ( recordingName : string ) : void ;
128+ on ( event : RequestEvent , listener : RequestEventListener ) : this;
129+ once ( event : RequestEvent , listener : RequestEventListener ) : this;
130+ off ( event : RequestEvent , listener ?: RequestEventListener ) : this;
119131}
120132export interface Response extends HTTPBase {
121133 statusCode : number ;
122- isBinary : boolean ;
134+ encoding : string | undefined ;
123135 readonly statusText : string ;
124136 readonly ok : boolean ;
125137
126138 status ( status : number ) : this;
127139 sendStatus ( status : number ) : this;
128140 end ( ) : Readonly < this> ;
129141}
130- export interface Interceptor {
131- abort ( ) : void ;
132- passthrough ( ) : void ;
133- stopPropagation ( ) : void ;
134- }
142+
135143export type RequestRouteEvent = 'request' ;
136144export type RecordingRouteEvent = 'beforeReplay' | 'beforePersist' ;
137145export type ResponseRouteEvent = 'beforeResponse' | 'response' ;
@@ -142,6 +150,10 @@ export interface ListenerEvent {
142150 readonly type : string ;
143151 stopPropagation : ( ) => void ;
144152}
153+ export interface Interceptor extends ListenerEvent {
154+ abort ( ) : void ;
155+ passthrough ( ) : void ;
156+ }
145157export type ErrorEventListener = (
146158 req : Request ,
147159 error : any ,
@@ -205,7 +217,7 @@ export class RouteHandler {
205217 passthrough ( value ?: boolean ) : RouteHandler ;
206218 intercept ( fn : InterceptHandler ) : RouteHandler ;
207219 recordingName ( recordingName ?: string ) : RouteHandler ;
208- configure ( config : PollyConfig ) : RouteHandler ;
220+ configure ( config : Partial < PollyConfig > ) : RouteHandler ;
209221 times ( n ?: number ) : RouteHandler ;
210222}
211223export class PollyServer {
@@ -222,6 +234,15 @@ export class PollyServer {
222234 host ( host : string , callback : ( ) => void ) : void ;
223235 namespace ( path : string , callback : ( ) => void ) : void ;
224236}
237+ export class PollyLogger {
238+ polly : Polly ;
239+ log : Logger ;
240+ connect : ( ) => void ;
241+ disconnect : ( ) => void ;
242+ logRequest : ( request : Request ) => void ;
243+ logRequestResponse : ( request : Request ) => void ;
244+ logRequestError : ( request : Request , error : Error ) => void ;
245+ }
225246export type PollyEvent = 'create' | 'stop' | 'register' ;
226247export type PollyEventListener = ( poll : Polly ) => void ;
227248export class Polly {
@@ -241,6 +262,9 @@ export class Polly {
241262 persister : Persister | null ;
242263 adapters : Map < string , Adapter > ;
243264 config : PollyConfig ;
265+ logger : PollyLogger ;
266+
267+ private _requests : Request [ ] ;
244268
245269 pause ( ) : void ;
246270 play ( ) : void ;
@@ -249,7 +273,7 @@ export class Polly {
249273 passthrough ( ) : void ;
250274 stop ( ) : Promise < void > ;
251275 flush ( ) : Promise < void > ;
252- configure ( config : PollyConfig ) : void ;
276+ configure ( config : Partial < PollyConfig > ) : void ;
253277 connectTo ( name : string | typeof Adapter ) : void ;
254278 disconnectFrom ( name : string | typeof Adapter ) : void ;
255279 disconnect ( ) : void ;
0 commit comments