Map inspector requests by id so single requests can be reset at a time (#26770)

This commit is contained in:
Nathan Reese 2018-12-07 08:16:47 -07:00 committed by GitHub
parent 9d1e4389d5
commit bba451a5cb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 4 deletions

View file

@ -18,6 +18,8 @@
*/ */
import { EventEmitter } from 'events'; import { EventEmitter } from 'events';
import _ from 'lodash';
import uuid from 'uuid/v4';
import { RequestResponder } from './request_responder'; import { RequestResponder } from './request_responder';
import { Request, RequestParams, RequestStatus } from './types'; import { Request, RequestParams, RequestStatus } from './types';
@ -29,7 +31,12 @@ import { Request, RequestParams, RequestStatus } from './types';
* @extends EventEmitter * @extends EventEmitter
*/ */
class RequestAdapter extends EventEmitter { class RequestAdapter extends EventEmitter {
private requests: Request[] = []; private requests: Map<string, Request>;
constructor() {
super();
this.requests = new Map();
}
/** /**
* Start logging a new request into this request adapter. The new request will * Start logging a new request into this request adapter. The new request will
@ -47,19 +54,25 @@ class RequestAdapter extends EventEmitter {
name, name,
startTime: Date.now(), startTime: Date.now(),
status: RequestStatus.PENDING, status: RequestStatus.PENDING,
id: _.get(params, 'id', uuid()),
}; };
this.requests.push(req); this.requests.set(req.id, req);
this._onChange(); this._onChange();
return new RequestResponder(req, () => this._onChange()); return new RequestResponder(req, () => this._onChange());
} }
public reset(): void { public reset(): void {
this.requests = []; this.requests = new Map();
this._onChange();
}
public resetRequest(id: string): void {
this.requests.delete(id);
this._onChange(); this._onChange();
} }
public getRequests(): Request[] { public getRequests(): Request[] {
return this.requests; return Array.from(this.requests.values());
} }
private _onChange(): void { private _onChange(): void {

View file

@ -36,6 +36,7 @@ export enum RequestStatus {
} }
export interface Request extends RequestParams { export interface Request extends RequestParams {
id: string;
name: string; name: string;
json?: object; json?: object;
response?: Response; response?: Response;
@ -46,6 +47,7 @@ export interface Request extends RequestParams {
} }
export interface RequestParams { export interface RequestParams {
id?: string;
description?: string; description?: string;
} }