{"version":3,"file":"path-item.mjs","sources":["../../../../../src/assemblers/document/path/path-item/path-item.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { type PartialContext, PathItemContextFactory } from '../../../../context';\n\nimport type { PathContext, PathItemContext, PathItemContextData } from '../../../../types';\n\nimport { createDebugger } from '../../../../utils';\n\nimport type { Assembler } from '../../..';\n\nconst debug = createDebugger('assembler:path-item');\n\nexport class PathItemAssembler implements Assembler.Path {\n  private readonly _assemblers: Assembler.PathItem[];\n\n  private readonly _contextFactory: PathItemContextFactory;\n\n  constructor(assemblers: Assembler.PathItem[], contextFactory: PathItemContextFactory) {\n    this._assemblers = assemblers;\n    this._contextFactory = contextFactory;\n  }\n\n  assemble(context: PathContext): void {\n    const { output, routes } = context;\n\n    const routesByPath = this._groupRoutesByPath(routes);\n\n    debug(\n      'grouping routes by path, found %O groups for %O routes',\n      Object.keys(routesByPath).length,\n      routes.length\n    );\n\n    for (const [path, routes] of Object.entries(routesByPath)) {\n      const openAPIPath = this._formatPath(path);\n\n      debug(\n        'assembling path item for %o (%o)...',\n        openAPIPath,\n        routes.map((route) => route.method).join(', ')\n      );\n\n      const pathItemContext = this._createPathItemContext(context);\n\n      for (const assembler of this._assemblers) {\n        debug('running assembler: %s...', assembler.constructor.name);\n\n        assembler.assemble(pathItemContext, path, routes);\n      }\n\n      output.data[openAPIPath] = pathItemContext.output.data;\n    }\n  }\n\n  private _createPathItemContext(context: PathContext): PathItemContext {\n    const initProps: PartialContext<PathItemContextData> = {\n      strapi: context.strapi,\n      registries: context.registries,\n      routes: context.routes,\n      timer: context.timer,\n    };\n\n    return this._contextFactory.create(initProps);\n  }\n\n  private _formatPath(path: string): string {\n    return path.replace(/:([^/]+)/g, '{$1}');\n  }\n\n  private _groupRoutesByPath(routes: Core.Route[]): Record<string, Core.Route[]> {\n    return routes.reduce<Record<string, Core.Route[]>>((acc, route) => {\n      const { path } = route;\n\n      if (!Array.isArray(acc[path])) {\n        acc[path] = [];\n      }\n\n      acc[path].push(route);\n\n      return acc;\n    }, {});\n  }\n}\n"],"names":["debug","createDebugger","PathItemAssembler","assemble","context","output","routes","routesByPath","_groupRoutesByPath","Object","keys","length","path","entries","openAPIPath","_formatPath","map","route","method","join","pathItemContext","_createPathItemContext","assembler","_assemblers","name","data","initProps","strapi","registries","timer","_contextFactory","create","replace","reduce","acc","Array","isArray","push","assemblers","contextFactory"],"mappings":";;;;AASA,MAAMA,QAAQC,cAAAA,CAAe,qBAAA,CAAA;AAEtB,MAAMC,iBAAAA,CAAAA;AAUXC,IAAAA,QAAAA,CAASC,OAAoB,EAAQ;AACnC,QAAA,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAE,GAAGF,OAAAA;AAE3B,QAAA,MAAMG,YAAAA,GAAe,IAAI,CAACC,kBAAkB,CAACF,MAAAA,CAAAA;QAE7CN,KAAAA,CACE,wDAAA,EACAS,OAAOC,IAAI,CAACH,cAAcI,MAAM,EAChCL,OAAOK,MAAM,CAAA;QAGf,KAAK,MAAM,CAACC,IAAAA,EAAMN,MAAAA,CAAO,IAAIG,MAAAA,CAAOI,OAAO,CAACN,YAAAA,CAAAA,CAAe;AACzD,YAAA,MAAMO,WAAAA,GAAc,IAAI,CAACC,WAAW,CAACH,IAAAA,CAAAA;YAErCZ,KAAAA,CACE,qCAAA,EACAc,WAAAA,EACAR,MAAAA,CAAOU,GAAG,CAAC,CAACC,KAAAA,GAAUA,KAAAA,CAAMC,MAAM,CAAA,CAAEC,IAAI,CAAC,IAAA,CAAA,CAAA;AAG3C,YAAA,MAAMC,eAAAA,GAAkB,IAAI,CAACC,sBAAsB,CAACjB,OAAAA,CAAAA;AAEpD,YAAA,KAAK,MAAMkB,SAAAA,IAAa,IAAI,CAACC,WAAW,CAAE;AACxCvB,gBAAAA,KAAAA,CAAM,0BAAA,EAA4BsB,SAAAA,CAAU,WAAW,CAACE,IAAI,CAAA;gBAE5DF,SAAAA,CAAUnB,QAAQ,CAACiB,eAAAA,EAAiBR,IAAAA,EAAMN,MAAAA,CAAAA;AAC5C,YAAA;AAEAD,YAAAA,MAAAA,CAAOoB,IAAI,CAACX,WAAAA,CAAY,GAAGM,eAAAA,CAAgBf,MAAM,CAACoB,IAAI;AACxD,QAAA;AACF,IAAA;AAEQJ,IAAAA,sBAAAA,CAAuBjB,OAAoB,EAAmB;AACpE,QAAA,MAAMsB,SAAAA,GAAiD;AACrDC,YAAAA,MAAAA,EAAQvB,QAAQuB,MAAM;AACtBC,YAAAA,UAAAA,EAAYxB,QAAQwB,UAAU;AAC9BtB,YAAAA,MAAAA,EAAQF,QAAQE,MAAM;AACtBuB,YAAAA,KAAAA,EAAOzB,QAAQyB;AACjB,SAAA;AAEA,QAAA,OAAO,IAAI,CAACC,eAAe,CAACC,MAAM,CAACL,SAAAA,CAAAA;AACrC,IAAA;AAEQX,IAAAA,WAAAA,CAAYH,IAAY,EAAU;QACxC,OAAOA,IAAAA,CAAKoB,OAAO,CAAC,WAAA,EAAa,MAAA,CAAA;AACnC,IAAA;AAEQxB,IAAAA,kBAAAA,CAAmBF,MAAoB,EAAgC;AAC7E,QAAA,OAAOA,MAAAA,CAAO2B,MAAM,CAA+B,CAACC,GAAAA,EAAKjB,KAAAA,GAAAA;YACvD,MAAM,EAAEL,IAAI,EAAE,GAAGK,KAAAA;AAEjB,YAAA,IAAI,CAACkB,KAAAA,CAAMC,OAAO,CAACF,GAAG,CAACtB,KAAK,CAAA,EAAG;gBAC7BsB,GAAG,CAACtB,IAAAA,CAAK,GAAG,EAAE;AAChB,YAAA;AAEAsB,YAAAA,GAAG,CAACtB,IAAAA,CAAK,CAACyB,IAAI,CAACpB,KAAAA,CAAAA;YAEf,OAAOiB,GAAAA;AACT,QAAA,CAAA,EAAG,EAAC,CAAA;AACN,IAAA;IAhEA,WAAA,CAAYI,UAAgC,EAAEC,cAAsC,CAAE;QACpF,IAAI,CAAChB,WAAW,GAAGe,UAAAA;QACnB,IAAI,CAACR,eAAe,GAAGS,cAAAA;AACzB,IAAA;AA8DF;;;;"}