UNPKG

mappersmith

Version:

It is a lightweight rest client for node.js and the browser

1 lines 2.03 kB
{"version":3,"sources":["../../../src/middleware/encode-json.ts"],"sourcesContent":["import { REGEXP_CONTENT_TYPE_JSON } from '../response'\nimport type { Middleware } from './index'\n\nexport const CONTENT_TYPE_JSON = 'application/json;charset=utf-8'\n\nconst isJson = (contentType: string) => REGEXP_CONTENT_TYPE_JSON.test(contentType)\nconst alreadyEncoded = (body: unknown) => typeof body === 'string'\n\n/**\n * Automatically encode your objects into JSON\n *\n * Example:\n * client.User.all({ body: { name: 'bob' } })\n * // => body: {\"name\":\"bob\"}\n * // => header: \"Content-Type=application/json;charset=utf-8\"\n */\nexport const EncodeJsonMiddleware: Middleware = () => ({\n async prepareRequest(next) {\n const request = await next()\n try {\n const body = request.body()\n const contentType = request.header('content-type')\n\n if (body) {\n const shouldEncodeBody =\n contentType == null ||\n (typeof contentType === 'string' && isJson(contentType) && !alreadyEncoded(body))\n const encodedBody = shouldEncodeBody ? JSON.stringify(body) : body\n\n return request.enhance({\n headers: { 'content-type': contentType == null ? CONTENT_TYPE_JSON : contentType },\n body: encodedBody,\n })\n }\n } catch (e) {} // eslint-disable-line no-empty\n return request\n },\n})\n\nexport default EncodeJsonMiddleware\n"],"mappings":";AAAA,SAAS,gCAAgC;AAGlC,IAAM,oBAAoB;AAEjC,IAAM,SAAS,CAAC,gBAAwB,yBAAyB,KAAK,WAAW;AACjF,IAAM,iBAAiB,CAAC,SAAkB,OAAO,SAAS;AAUnD,IAAM,uBAAmC,OAAO;AAAA,EACrD,MAAM,eAAe,MAAM;AACzB,UAAM,UAAU,MAAM,KAAK;AAC3B,QAAI;AACF,YAAM,OAAO,QAAQ,KAAK;AAC1B,YAAM,cAAc,QAAQ,OAAO,cAAc;AAEjD,UAAI,MAAM;AACR,cAAM,mBACJ,eAAe,QACd,OAAO,gBAAgB,YAAY,OAAO,WAAW,KAAK,CAAC,eAAe,IAAI;AACjF,cAAM,cAAc,mBAAmB,KAAK,UAAU,IAAI,IAAI;AAE9D,eAAO,QAAQ,QAAQ;AAAA,UACrB,SAAS,EAAE,gBAAgB,eAAe,OAAO,oBAAoB,YAAY;AAAA,UACjF,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF,SAAS,GAAG;AAAA,IAAC;AACb,WAAO;AAAA,EACT;AACF;AAEA,IAAO,sBAAQ;","names":[]}