@toolpad/utils
Version:
Shared utilities used by Toolpad packages.
1 lines • 2.54 kB
Source Map (JSON)
{"version":3,"sources":["../src/httpApiAdapters.ts"],"sourcesContent":["import type express from 'express';\n\nexport function encodeRequestBody(req: express.Request) {\n const contentType = req.headers['content-type'];\n\n if (typeof req.body === 'object' && contentType?.includes('application/x-www-form-urlencoded')) {\n return Object.entries(req.body as Record<string, string | number | boolean>).reduce(\n (acc, [key, value]) => {\n const encKey = encodeURIComponent(key);\n const encValue = encodeURIComponent(value);\n return `${acc ? `${acc}&` : ''}${encKey}=${encValue}`;\n },\n '',\n );\n }\n\n if (contentType?.includes('application/json')) {\n return JSON.stringify(req.body);\n }\n\n return req.body;\n}\n\nexport function adaptRequestFromExpressToFetch(req: express.Request) {\n // Converting Express req headers to Fetch API's Headers\n const headers = new Headers();\n for (const headerName of Object.keys(req.headers)) {\n const headerValue: string = req.headers[headerName]?.toString() ?? '';\n if (Array.isArray(headerValue)) {\n for (const value of headerValue) {\n headers.append(headerName, value);\n }\n } else {\n headers.append(headerName, headerValue);\n }\n }\n\n // Creating Fetch API's Request object from Express' req\n return new Request(`${req.protocol}://${req.get('host')}${req.originalUrl}`, {\n method: req.method,\n headers,\n body: /GET|HEAD/.test(req.method) ? undefined : encodeRequestBody(req),\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,SAAS,kBAAkB,KAAsB;AACtD,QAAM,cAAc,IAAI,QAAQ,cAAc;AAE9C,MAAI,OAAO,IAAI,SAAS,YAAY,aAAa,SAAS,mCAAmC,GAAG;AAC9F,WAAO,OAAO,QAAQ,IAAI,IAAiD,EAAE;AAAA,MAC3E,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM;AACrB,cAAM,SAAS,mBAAmB,GAAG;AACrC,cAAM,WAAW,mBAAmB,KAAK;AACzC,eAAO,GAAG,MAAM,GAAG,GAAG,MAAM,EAAE,GAAG,MAAM,IAAI,QAAQ;AAAA,MACrD;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,MAAI,aAAa,SAAS,kBAAkB,GAAG;AAC7C,WAAO,KAAK,UAAU,IAAI,IAAI;AAAA,EAChC;AAEA,SAAO,IAAI;AACb;AAEO,SAAS,+BAA+B,KAAsB;AAEnE,QAAM,UAAU,IAAI,QAAQ;AAC5B,aAAW,cAAc,OAAO,KAAK,IAAI,OAAO,GAAG;AACjD,UAAM,cAAsB,IAAI,QAAQ,UAAU,GAAG,SAAS,KAAK;AACnE,QAAI,MAAM,QAAQ,WAAW,GAAG;AAC9B,iBAAW,SAAS,aAAa;AAC/B,gBAAQ,OAAO,YAAY,KAAK;AAAA,MAClC;AAAA,IACF,OAAO;AACL,cAAQ,OAAO,YAAY,WAAW;AAAA,IACxC;AAAA,EACF;AAGA,SAAO,IAAI,QAAQ,GAAG,IAAI,QAAQ,MAAM,IAAI,IAAI,MAAM,CAAC,GAAG,IAAI,WAAW,IAAI;AAAA,IAC3E,QAAQ,IAAI;AAAA,IACZ;AAAA,IACA,MAAM,WAAW,KAAK,IAAI,MAAM,IAAI,SAAY,kBAAkB,GAAG;AAAA,EACvE,CAAC;AACH;","names":[]}