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 _ from 'lodash';
import uuid from 'uuid/v4';
import { RequestResponder } from './request_responder';
import { Request, RequestParams, RequestStatus } from './types';
@ -29,7 +31,12 @@ import { Request, RequestParams, RequestStatus } from './types';
* @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
@ -47,19 +54,25 @@ class RequestAdapter extends EventEmitter {
name,
startTime: Date.now(),
status: RequestStatus.PENDING,
id: _.get(params, 'id', uuid()),
};
this.requests.push(req);
this.requests.set(req.id, req);
this._onChange();
return new RequestResponder(req, () => this._onChange());
}
public reset(): void {
this.requests = [];
this.requests = new Map();
this._onChange();
}
public resetRequest(id: string): void {
this.requests.delete(id);
this._onChange();
}
public getRequests(): Request[] {
return this.requests;
return Array.from(this.requests.values());
}
private _onChange(): void {

View file

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