{"version":3,"file":"middleware-manager.mjs","sources":["../../../../src/services/document-service/middlewares/middleware-manager.ts"],"sourcesContent":["export type Middleware = (ctx: any, next: () => Promise<void>) => Promise<void> | void;\n\nexport type Options = {\n  exclude?: string[];\n};\n\nexport const createMiddlewareManager = () => {\n  const middlewares: Middleware[] = [];\n\n  const manager = {\n    use(middleware: Middleware) {\n      middlewares.push(middleware);\n\n      return () => middlewares.splice(middlewares.indexOf(middleware), 1);\n    },\n\n    async run(ctx: any, cb: () => void) {\n      let index = 0;\n      const next = async () => {\n        if (index < middlewares.length) {\n          // eslint-disable-next-line no-plusplus\n          return middlewares[index++](ctx, next);\n        }\n\n        return cb();\n      };\n\n      return next();\n    },\n\n    wrapObject<TSource>(source: TSource, ctxDefaults = {}, opts: Options = {}): TSource {\n      const facade: TSource = {} as TSource;\n      const { exclude = [] } = opts;\n\n      for (const key in source) {\n        if (Object.hasOwnProperty.call(source, key)) {\n          const prop = source[key];\n\n          if (exclude.includes(key)) {\n            facade[key] = prop;\n          } else if (typeof prop === 'function') {\n            const newMethod = async (params: any = {}) => {\n              const ctx = {\n                ...ctxDefaults,\n                action: key,\n                params,\n              };\n\n              return manager.run(ctx, () => prop(ctx.params));\n            };\n\n            facade[key] = newMethod as typeof prop;\n          } else {\n            facade[key] = prop;\n          }\n        }\n      }\n\n      return facade;\n    },\n  };\n\n  return manager;\n};\n"],"names":[],"mappings":"AAMO,MAAM,0BAA0B,MAAM;AAC3C,QAAM,cAA4B,CAAA;AAElC,QAAM,UAAU;AAAA,IACd,IAAI,YAAwB;AAC1B,kBAAY,KAAK,UAAU;AAE3B,aAAO,MAAM,YAAY,OAAO,YAAY,QAAQ,UAAU,GAAG,CAAC;AAAA,IACpE;AAAA,IAEA,MAAM,IAAI,KAAU,IAAgB;AAClC,UAAI,QAAQ;AACZ,YAAM,OAAO,YAAY;AACnB,YAAA,QAAQ,YAAY,QAAQ;AAE9B,iBAAO,YAAY,OAAO,EAAE,KAAK,IAAI;AAAA,QACvC;AAEA,eAAO,GAAG;AAAA,MAAA;AAGZ,aAAO,KAAK;AAAA,IACd;AAAA,IAEA,WAAoB,QAAiB,cAAc,CAAA,GAAI,OAAgB,CAAA,GAAa;AAClF,YAAM,SAAkB,CAAA;AACxB,YAAM,EAAE,UAAU,GAAO,IAAA;AAEzB,iBAAW,OAAO,QAAQ;AACxB,YAAI,OAAO,eAAe,KAAK,QAAQ,GAAG,GAAG;AACrC,gBAAA,OAAO,OAAO,GAAG;AAEnB,cAAA,QAAQ,SAAS,GAAG,GAAG;AACzB,mBAAO,GAAG,IAAI;AAAA,UAAA,WACL,OAAO,SAAS,YAAY;AACrC,kBAAM,YAAY,OAAO,SAAc,OAAO;AAC5C,oBAAM,MAAM;AAAA,gBACV,GAAG;AAAA,gBACH,QAAQ;AAAA,gBACR;AAAA,cAAA;AAGF,qBAAO,QAAQ,IAAI,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC;AAAA,YAAA;AAGhD,mBAAO,GAAG,IAAI;AAAA,UAAA,OACT;AACL,mBAAO,GAAG,IAAI;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAEO,aAAA;AAAA,IACT;AAAA,EAAA;AAGK,SAAA;AACT;"}