mappersmith
Version:
It is a lightweight rest client for node.js and the browser
1 lines • 1.4 kB
Source Map (JSON)
{"version":3,"sources":["../../../src/middleware/duration.ts"],"sourcesContent":["import type { Middleware } from './index'\n\n/**\n * Adds started_at, ended_at and duration headers to the response\n */\nexport const DurationMiddleware: Middleware = ({ mockRequest }) => ({\n async prepareRequest(next) {\n if (mockRequest) {\n return next()\n }\n\n const request = await next()\n return request.enhance({\n headers: { 'X-Started-At': Date.now() },\n })\n },\n\n async response(next) {\n const response = await next()\n const endedAt = Date.now()\n const startedAt = response.request().header<number>('x-started-at') as number\n return response.enhance({\n headers: {\n 'X-Started-At': startedAt,\n 'X-Ended-At': endedAt,\n 'X-Duration': endedAt - startedAt,\n },\n })\n },\n})\n\nexport default DurationMiddleware\n"],"mappings":";AAKO,IAAM,qBAAiC,CAAC,EAAE,YAAY,OAAO;AAAA,EAClE,MAAM,eAAe,MAAM;AACzB,QAAI,aAAa;AACf,aAAO,KAAK;AAAA,IACd;AAEA,UAAM,UAAU,MAAM,KAAK;AAC3B,WAAO,QAAQ,QAAQ;AAAA,MACrB,SAAS,EAAE,gBAAgB,KAAK,IAAI,EAAE;AAAA,IACxC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,SAAS,MAAM;AACnB,UAAM,WAAW,MAAM,KAAK;AAC5B,UAAM,UAAU,KAAK,IAAI;AACzB,UAAM,YAAY,SAAS,QAAQ,EAAE,OAAe,cAAc;AAClE,WAAO,SAAS,QAAQ;AAAA,MACtB,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,cAAc,UAAU;AAAA,MAC1B;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEA,IAAO,mBAAQ;","names":[]}