{"version":3,"file":"useHeaders.cjs","sources":["../../src/useHeaders.ts"],"sourcesContent":["import { BadRequestError, NextFunc, Props } from '@exobase/core'\nimport { isArray, isFunction, tryit } from 'radash'\nimport zod, {\n  AnyZodObject,\n  ZodArray,\n  ZodError,\n  ZodObject,\n  ZodRawShape\n} from 'zod'\n\nconst isZodError = (e: any): e is ZodError => e && e.issues && isArray(e.issues)\n\nexport const withHeaders = async (\n  func: NextFunc,\n  model: AnyZodObject | ZodArray<any>,\n  props: Props\n) => {\n  const [zerr, args] = await tryit(model.parseAsync)(props.request.headers)\n  if (zerr) {\n    if (!isZodError(zerr)) {\n      throw new BadRequestError(\n        'Header validation failed: ' + zerr.message ?? 'Parse error',\n        {\n          key: 'err.headers.parsing',\n          cause: zerr\n        }\n      )\n    }\n    throw new BadRequestError(\n      'Header validation failed: ' +\n        zerr.issues\n          .map(e => `${e.path.join('.')}: ${e.message.toLowerCase()}`)\n          .join(', '),\n      {\n        key: 'err.headers.failed',\n        cause: zerr\n      }\n    )\n  }\n  return await func({\n    ...props,\n    args: {\n      ...props.args,\n      ...args\n    }\n  })\n}\n\nexport const useHeaders: <TRawShape extends ZodRawShape>(\n  shapeMaker: ZodObject<TRawShape> | ((z: typeof zod) => TRawShape)\n) => (\n  func: NextFunc<\n    Props<ZodObject<TRawShape>['_output']>\n  >\n) => NextFunc<Props> = shapeMaker => func => {\n  const model = isFunction(shapeMaker)\n    ? zod.object(shapeMaker(zod))\n    : shapeMaker\n  return props => withHeaders(func as NextFunc, model, props)\n}\n"],"names":["isArray","tryit","BadRequestError","isFunction"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAUA,MAAM,UAAA,GAAa,CAAC,CAA0B,KAAA,CAAA,IAAK,EAAE,MAAU,IAAAA,cAAA,CAAQ,EAAE,MAAM,CAAA,CAAA;AAExE,MAAM,WAAc,GAAA,OACzB,IACA,EAAA,KAAA,EACA,KACG,KAAA;AACH,EAAM,MAAA,CAAC,IAAM,EAAA,IAAI,CAAI,GAAA,MAAMC,YAAM,CAAA,KAAA,CAAM,UAAU,CAAA,CAAE,KAAM,CAAA,OAAA,CAAQ,OAAO,CAAA,CAAA;AACxE,EAAA,IAAI,IAAM,EAAA;AACR,IAAI,IAAA,CAAC,UAAW,CAAA,IAAI,CAAG,EAAA;AACrB,MAAA,MAAM,IAAIC,oBAAA;AAAA,QACR,+BAA+B,IAAK,CAAA,OAAA;AAAA,QACpC;AAAA,UACE,GAAK,EAAA,qBAAA;AAAA,UACL,KAAO,EAAA,IAAA;AAAA,SACT;AAAA,OACF,CAAA;AAAA,KACF;AACA,IAAA,MAAM,IAAIA,oBAAA;AAAA,MACR,+BACE,IAAK,CAAA,MAAA,CACF,GAAI,CAAA,CAAA,CAAA,KAAK,GAAG,CAAE,CAAA,IAAA,CAAK,IAAK,CAAA,GAAG,MAAM,CAAE,CAAA,OAAA,CAAQ,aAAe,CAAA,CAAA,CAAA,CAC1D,KAAK,IAAI,CAAA;AAAA,MACd;AAAA,QACE,GAAK,EAAA,oBAAA;AAAA,QACL,KAAO,EAAA,IAAA;AAAA,OACT;AAAA,KACF,CAAA;AAAA,GACF;AACA,EAAO,OAAA,MAAM,IAAK,CAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EACb,KADa,CAAA,EAAA;AAAA,IAEhB,IAAA,EAAM,cACD,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,CAAM,IACN,CAAA,EAAA,IAAA,CAAA;AAAA,GAEN,CAAA,CAAA,CAAA;AACH,EAAA;AAEa,MAAA,UAAA,GAMU,gBAAc,CAAQ,IAAA,KAAA;AAC3C,EAAM,MAAA,KAAA,GAAQC,kBAAW,UAAU,CAAA,GAC/B,IAAI,MAAO,CAAA,UAAA,CAAW,GAAG,CAAC,CAC1B,GAAA,UAAA,CAAA;AACJ,EAAA,OAAO,CAAS,KAAA,KAAA,WAAA,CAAY,IAAkB,EAAA,KAAA,EAAO,KAAK,CAAA,CAAA;AAC5D;;;;;"}