mappersmith
Version:
It is a lightweight rest client for node.js and the browser
1 lines • 1.61 kB
Source Map (JSON)
{"version":3,"sources":["../../../src/middleware/csrf.ts"],"sourcesContent":["import type { Middleware } from './index'\n\n/**\n * Sets a request header with the value of a cookie from document.cookie, if it exists\n */\nexport const CsrfMiddleware = (cookieName = 'csrfToken', headerName = 'x-csrf-token'): Middleware =>\n function CsrfMiddleware() {\n const REGEXP_COOKIE_NAME = new RegExp(cookieName + '[^;]+')\n const getCookie = () => {\n const cookieString = REGEXP_COOKIE_NAME.exec((document || {}).cookie || '')\n return cookieString\n ? decodeURIComponent(cookieString.toString().replace(/^[^=]+./, ''))\n : undefined\n }\n\n return {\n async prepareRequest(next) {\n const request = await next()\n if (typeof document === 'undefined') {\n return request\n }\n const csrf = getCookie()\n return !csrf\n ? request\n : request.enhance({\n headers: { [headerName]: csrf },\n })\n },\n }\n }\nexport default CsrfMiddleware\n"],"mappings":";AAKO,IAAM,iBAAiB,CAAC,aAAa,aAAa,aAAa,mBACpE,SAASA,kBAAiB;AACxB,QAAM,qBAAqB,IAAI,OAAO,aAAa,OAAO;AAC1D,QAAM,YAAY,MAAM;AACtB,UAAM,eAAe,mBAAmB,MAAM,YAAY,CAAC,GAAG,UAAU,EAAE;AAC1E,WAAO,eACH,mBAAmB,aAAa,SAAS,EAAE,QAAQ,WAAW,EAAE,CAAC,IACjE;AAAA,EACN;AAEA,SAAO;AAAA,IACL,MAAM,eAAe,MAAM;AACzB,YAAM,UAAU,MAAM,KAAK;AAC3B,UAAI,OAAO,aAAa,aAAa;AACnC,eAAO;AAAA,MACT;AACA,YAAM,OAAO,UAAU;AACvB,aAAO,CAAC,OACJ,UACA,QAAQ,QAAQ;AAAA,QACd,SAAS,EAAE,CAAC,UAAU,GAAG,KAAK;AAAA,MAChC,CAAC;AAAA,IACP;AAAA,EACF;AACF;AACF,IAAO,eAAQ;","names":["CsrfMiddleware"]}