{"version":3,"sources":["../src/decorator/private/templateMiddleware.ts"],"sourcesContent":["import { warnOnce } from 'botframework-webchat-core';\nimport { createChainOfResponsibility, type ComponentMiddleware } from 'react-chain-of-responsibility';\nimport { type EmptyObject } from 'type-fest';\nimport { any, array, custom, safeParse, type Output } from 'valibot';\n\nexport type MiddlewareWithInit<M extends ComponentMiddleware<any, any, any>, I> = (init: I) => ReturnType<M> | false;\n\nconst EMPTY_ARRAY = Object.freeze([]);\n\nexport default function templateMiddleware<Init, Request = any, Props extends {} = EmptyObject>(name: string) {\n  type Middleware = ComponentMiddleware<Request, Props>;\n\n  const middlewareSchema = array(\n    any([custom<Middleware>(input => typeof input === 'function', 'Middleware must be a function.')])\n  );\n\n  const isMiddleware = (middleware: unknown): middleware is Output<typeof middlewareSchema> =>\n    safeParse(middlewareSchema, middleware).success;\n\n  const warnInvalid = warnOnce(`\"${name}\" prop is invalid`);\n\n  const initMiddleware = (\n    middleware: readonly MiddlewareWithInit<Middleware, Init>[],\n    init?: Init\n  ): readonly Middleware[] => {\n    if (middleware) {\n      if (isMiddleware(middleware)) {\n        return Object.freeze(\n          middleware\n            ?.map(middleware => middleware(init))\n            .filter((enhancer): enhancer is ReturnType<Middleware> => !!enhancer)\n            .map(enhancer => () => enhancer)\n        );\n      }\n\n      warnInvalid();\n    }\n\n    return EMPTY_ARRAY;\n  };\n\n  const { Provider, Proxy } = createChainOfResponsibility<Request, Props>();\n\n  Provider.displayName = `${name}Provider`;\n  Proxy.displayName = `${name}Proxy`;\n\n  return {\n    initMiddleware,\n    Provider,\n    Proxy,\n    types: {\n      init: undefined as Init,\n      middleware: undefined as Middleware,\n      props: undefined as Props,\n      request: undefined as Request\n    }\n  };\n}\n"],"mappings":"AAAA,OAAS,YAAAA,MAAgB,4BACzB,OAAS,+BAAAC,MAA6D,gCAEtE,OAAS,OAAAC,EAAK,SAAAC,EAAO,UAAAC,EAAQ,aAAAC,MAA8B,UAI3D,IAAMC,EAAc,OAAO,OAAO,CAAC,CAAC,EAErB,SAARC,EAAyFC,EAAc,CAG5G,IAAMC,EAAmBN,EACvBD,EAAI,CAACE,EAAmBM,GAAS,OAAOA,GAAU,WAAY,gCAAgC,CAAC,CAAC,CAClG,EAEMC,EAAgBC,GACpBP,EAAUI,EAAkBG,CAAU,EAAE,QAEpCC,EAAcb,EAAS,IAAIQ,CAAI,mBAAmB,EAElDM,EAAiB,CACrBF,EACAG,IAC0B,CAC1B,GAAIH,EAAY,CACd,GAAID,EAAaC,CAAU,EACzB,OAAO,OAAO,OACZA,GACI,IAAIA,GAAcA,EAAWG,CAAI,CAAC,EACnC,OAAQC,GAAiD,CAAC,CAACA,CAAQ,EACnE,IAAIA,GAAY,IAAMA,CAAQ,CACnC,EAGFH,EAAY,CACd,CAEA,OAAOP,CACT,EAEM,CAAE,SAAAW,EAAU,MAAAC,CAAM,EAAIjB,EAA4C,EAExE,OAAAgB,EAAS,YAAc,GAAGT,CAAI,WAC9BU,EAAM,YAAc,GAAGV,CAAI,QAEpB,CACL,eAAAM,EACA,SAAAG,EACA,MAAAC,EACA,MAAO,CACL,KAAM,OACN,WAAY,OACZ,MAAO,OACP,QAAS,MACX,CACF,CACF","names":["warnOnce","createChainOfResponsibility","any","array","custom","safeParse","EMPTY_ARRAY","templateMiddleware","name","middlewareSchema","input","isMiddleware","middleware","warnInvalid","initMiddleware","init","enhancer","Provider","Proxy"]}