Skip to content

Commit

Permalink
add delay snippet
Browse files Browse the repository at this point in the history
  • Loading branch information
jackkav committed Jun 14, 2024
1 parent 66a7035 commit 509921f
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 4 deletions.
9 changes: 5 additions & 4 deletions packages/insomnia/src/network/request-timing.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ export interface TimingStep {
type TimingCallback = (steps: TimingStep[]) => void;
// this is intentially ephemeral state because we only use breifly while waiting for requests or checking the timings
export const executions = new Map<string, TimingStep[]>();
// only one observer is allowed for simplicity
const executionObservers = new Map<string, TimingCallback>();
// TODO: figure out how to avoid creating multiple callbacks
const executionObservers = new Map<string, TimingCallback[]>();
export const getExecution = (requestId?: string) => requestId ? executions.get(requestId) : [];
export const startRequestTimingExecution = (requestId: string) => executions.set(requestId, []);
export function addRequestTimingRecord(
Expand All @@ -23,16 +23,17 @@ export function addRequestTimingRecord(
// append to new step to execution
const execution = [...(executions.get(requestId) || []), record];
executions.set(requestId, execution);
executionObservers.get(requestId)?.(execution);
executionObservers.get(requestId)?.forEach(cb => cb(execution));
}

export function finishLastRequestTimingRecord(requestId: string) {
const latest = executions.get(requestId)?.at(-1);
if (latest) {
latest.duration = (Date.now() - latest.startedAt);
}
executionObservers.delete(requestId);
}

export function watchExecution(requestId: string, cb: TimingCallback) {
executionObservers.set(requestId, cb);
executionObservers.set(requestId, [...(executionObservers.get(requestId) || []), cb]);
}
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ const updateRequestAuth =
'bearer'
);`;
const requireAModule = "const atob = require('atob');";
const delay = 'new Promise((resolve)=>setTimeout(resolve, 1000));';

const getStatusCode = 'const statusCode = insomnia.response.code;';
const getStatusMsg = 'const status = insomnia.response.status;';
Expand Down Expand Up @@ -336,6 +337,11 @@ const miscMenu: SnippetMenuItem = {
'name': 'Require a module',
'snippet': requireAModule,
},
{
'id': 'delay',
'name': 'Delay',
'snippet': delay,
},
],
};

Expand Down

0 comments on commit 509921f

Please sign in to comment.