@strapi/openapi 5.30.0 → 5.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/assemblers/document/info.js.map +1 -1
  2. package/dist/assemblers/document/info.mjs.map +1 -1
  3. package/dist/assemblers/document/path/path-item/operation/operation-id.js.map +1 -1
  4. package/dist/assemblers/document/path/path-item/operation/operation-id.mjs.map +1 -1
  5. package/dist/assemblers/document/path/path-item/operation/operation.js.map +1 -1
  6. package/dist/assemblers/document/path/path-item/operation/operation.mjs.map +1 -1
  7. package/dist/assemblers/document/path/path-item/path-item.js.map +1 -1
  8. package/dist/assemblers/document/path/path-item/path-item.mjs.map +1 -1
  9. package/dist/assemblers/document/path/path.js.map +1 -1
  10. package/dist/assemblers/document/path/path.mjs.map +1 -1
  11. package/dist/context/factories/document.js.map +1 -1
  12. package/dist/context/factories/document.mjs.map +1 -1
  13. package/dist/context/factories/operation.js.map +1 -1
  14. package/dist/context/factories/operation.mjs.map +1 -1
  15. package/dist/context/factories/path-item.js.map +1 -1
  16. package/dist/context/factories/path-item.mjs.map +1 -1
  17. package/dist/context/factories/path.js.map +1 -1
  18. package/dist/context/factories/path.mjs.map +1 -1
  19. package/dist/generator/generator.js.map +1 -1
  20. package/dist/generator/generator.mjs.map +1 -1
  21. package/dist/routes/collector.js.map +1 -1
  22. package/dist/routes/collector.mjs.map +1 -1
  23. package/dist/routes/matcher.js.map +1 -1
  24. package/dist/routes/matcher.mjs.map +1 -1
  25. package/dist/utils/debug.js.map +1 -1
  26. package/dist/utils/debug.mjs.map +1 -1
  27. package/dist/utils/timer/timer.js.map +1 -1
  28. package/dist/utils/timer/timer.mjs.map +1 -1
  29. package/dist/utils/zod.js.map +1 -1
  30. package/dist/utils/zod.mjs.map +1 -1
  31. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"info.js","sources":["../../../src/assemblers/document/info.ts"],"sourcesContent":["import type { OpenAPIV3_1 } from 'openapi-types';\n\nimport type { DocumentContext } from '../../types';\n\nimport { createDebugger } from '../../utils';\n\nimport type { Assembler } from '..';\n\ninterface StrapiInfoConfig {\n name: string;\n version: string;\n}\n\nconst debug = createDebugger('assembler:info');\n\nexport class DocumentInfoAssembler implements Assembler.Document {\n assemble(context: DocumentContext): void {\n const { name, version } = context.strapi.config.get<StrapiInfoConfig>('info');\n\n debug(`assembling document's info for %O...`, { name, version });\n\n const info: OpenAPIV3_1.InfoObject = {\n title: this._title(name),\n description: this._description(name, version),\n version,\n };\n\n debug(`document's info assembled: %O`, info);\n\n context.output.data.info = info;\n }\n\n private _title(name: string) {\n return `${name}`;\n }\n\n private _description(name: string, version: string) {\n return `API documentation for ${name} v${version}`;\n }\n}\n"],"names":["debug","createDebugger","DocumentInfoAssembler","assemble","context","name","version","strapi","config","get","info","title","_title","description","_description","output","data"],"mappings":";;;;;;AAaA,MAAMA,QAAQC,sBAAe,CAAA,gBAAA,CAAA;AAEtB,MAAMC,qBAAAA,CAAAA;AACXC,IAAAA,QAAAA,CAASC,OAAwB,EAAQ;AACvC,QAAA,MAAM,EAAEC,IAAI,EAAEC,OAAO,EAAE,GAAGF,OAAQG,CAAAA,MAAM,CAACC,MAAM,CAACC,GAAG,CAAmB,MAAA,CAAA;QAEtET,KAAM,CAAA,CAAC,oCAAoC,CAAC,EAAE;AAAEK,YAAAA,IAAAA;AAAMC,YAAAA;AAAQ,SAAA,CAAA;AAE9D,QAAA,MAAMI,IAA+B,GAAA;YACnCC,KAAO,EAAA,IAAI,CAACC,MAAM,CAACP,IAAAA,CAAAA;AACnBQ,YAAAA,WAAAA,EAAa,IAAI,CAACC,YAAY,CAACT,IAAMC,EAAAA,OAAAA,CAAAA;AACrCA,YAAAA;AACF,SAAA;QAEAN,KAAM,CAAA,CAAC,6BAA6B,CAAC,EAAEU,IAAAA,CAAAA;AAEvCN,QAAAA,OAAAA,CAAQW,MAAM,CAACC,IAAI,CAACN,IAAI,GAAGA,IAAAA;AAC7B;AAEQE,IAAAA,MAAAA,CAAOP,IAAY,EAAE;QAC3B,OAAO,CAAC,EAAEA,IAAAA,CAAK,CAAC;AAClB;IAEQS,YAAaT,CAAAA,IAAY,EAAEC,OAAe,EAAE;AAClD,QAAA,OAAO,CAAC,sBAAsB,EAAED,KAAK,EAAE,EAAEC,QAAQ,CAAC;AACpD;AACF;;;;"}
1
+ {"version":3,"file":"info.js","sources":["../../../src/assemblers/document/info.ts"],"sourcesContent":["import type { OpenAPIV3_1 } from 'openapi-types';\n\nimport type { DocumentContext } from '../../types';\n\nimport { createDebugger } from '../../utils';\n\nimport type { Assembler } from '..';\n\ninterface StrapiInfoConfig {\n name: string;\n version: string;\n}\n\nconst debug = createDebugger('assembler:info');\n\nexport class DocumentInfoAssembler implements Assembler.Document {\n assemble(context: DocumentContext): void {\n const { name, version } = context.strapi.config.get<StrapiInfoConfig>('info');\n\n debug(`assembling document's info for %O...`, { name, version });\n\n const info: OpenAPIV3_1.InfoObject = {\n title: this._title(name),\n description: this._description(name, version),\n version,\n };\n\n debug(`document's info assembled: %O`, info);\n\n context.output.data.info = info;\n }\n\n private _title(name: string) {\n return `${name}`;\n }\n\n private _description(name: string, version: string) {\n return `API documentation for ${name} v${version}`;\n }\n}\n"],"names":["debug","createDebugger","DocumentInfoAssembler","assemble","context","name","version","strapi","config","get","info","title","_title","description","_description","output","data"],"mappings":";;;;;;AAaA,MAAMA,QAAQC,sBAAe,CAAA,gBAAA,CAAA;AAEtB,MAAMC,qBAAAA,CAAAA;AACXC,IAAAA,QAAAA,CAASC,OAAwB,EAAQ;AACvC,QAAA,MAAM,EAAEC,IAAI,EAAEC,OAAO,EAAE,GAAGF,OAAQG,CAAAA,MAAM,CAACC,MAAM,CAACC,GAAG,CAAmB,MAAA,CAAA;QAEtET,KAAM,CAAA,CAAC,oCAAoC,CAAC,EAAE;AAAEK,YAAAA,IAAAA;AAAMC,YAAAA;AAAQ,SAAA,CAAA;AAE9D,QAAA,MAAMI,IAA+B,GAAA;YACnCC,KAAO,EAAA,IAAI,CAACC,MAAM,CAACP,IAAAA,CAAAA;AACnBQ,YAAAA,WAAAA,EAAa,IAAI,CAACC,YAAY,CAACT,IAAMC,EAAAA,OAAAA,CAAAA;AACrCA,YAAAA;AACF,SAAA;QAEAN,KAAM,CAAA,CAAC,6BAA6B,CAAC,EAAEU,IAAAA,CAAAA;AAEvCN,QAAAA,OAAAA,CAAQW,MAAM,CAACC,IAAI,CAACN,IAAI,GAAGA,IAAAA;AAC7B;AAEQE,IAAAA,MAAAA,CAAOP,IAAY,EAAE;AAC3B,QAAA,OAAO,GAAGA,IAAM,CAAA,CAAA;AAClB;IAEQS,YAAaT,CAAAA,IAAY,EAAEC,OAAe,EAAE;AAClD,QAAA,OAAO,CAAC,sBAAsB,EAAED,IAAK,CAAA,EAAE,EAAEC,OAAS,CAAA,CAAA;AACpD;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"info.mjs","sources":["../../../src/assemblers/document/info.ts"],"sourcesContent":["import type { OpenAPIV3_1 } from 'openapi-types';\n\nimport type { DocumentContext } from '../../types';\n\nimport { createDebugger } from '../../utils';\n\nimport type { Assembler } from '..';\n\ninterface StrapiInfoConfig {\n name: string;\n version: string;\n}\n\nconst debug = createDebugger('assembler:info');\n\nexport class DocumentInfoAssembler implements Assembler.Document {\n assemble(context: DocumentContext): void {\n const { name, version } = context.strapi.config.get<StrapiInfoConfig>('info');\n\n debug(`assembling document's info for %O...`, { name, version });\n\n const info: OpenAPIV3_1.InfoObject = {\n title: this._title(name),\n description: this._description(name, version),\n version,\n };\n\n debug(`document's info assembled: %O`, info);\n\n context.output.data.info = info;\n }\n\n private _title(name: string) {\n return `${name}`;\n }\n\n private _description(name: string, version: string) {\n return `API documentation for ${name} v${version}`;\n }\n}\n"],"names":["debug","createDebugger","DocumentInfoAssembler","assemble","context","name","version","strapi","config","get","info","title","_title","description","_description","output","data"],"mappings":";;;;AAaA,MAAMA,QAAQC,cAAe,CAAA,gBAAA,CAAA;AAEtB,MAAMC,qBAAAA,CAAAA;AACXC,IAAAA,QAAAA,CAASC,OAAwB,EAAQ;AACvC,QAAA,MAAM,EAAEC,IAAI,EAAEC,OAAO,EAAE,GAAGF,OAAQG,CAAAA,MAAM,CAACC,MAAM,CAACC,GAAG,CAAmB,MAAA,CAAA;QAEtET,KAAM,CAAA,CAAC,oCAAoC,CAAC,EAAE;AAAEK,YAAAA,IAAAA;AAAMC,YAAAA;AAAQ,SAAA,CAAA;AAE9D,QAAA,MAAMI,IAA+B,GAAA;YACnCC,KAAO,EAAA,IAAI,CAACC,MAAM,CAACP,IAAAA,CAAAA;AACnBQ,YAAAA,WAAAA,EAAa,IAAI,CAACC,YAAY,CAACT,IAAMC,EAAAA,OAAAA,CAAAA;AACrCA,YAAAA;AACF,SAAA;QAEAN,KAAM,CAAA,CAAC,6BAA6B,CAAC,EAAEU,IAAAA,CAAAA;AAEvCN,QAAAA,OAAAA,CAAQW,MAAM,CAACC,IAAI,CAACN,IAAI,GAAGA,IAAAA;AAC7B;AAEQE,IAAAA,MAAAA,CAAOP,IAAY,EAAE;QAC3B,OAAO,CAAC,EAAEA,IAAAA,CAAK,CAAC;AAClB;IAEQS,YAAaT,CAAAA,IAAY,EAAEC,OAAe,EAAE;AAClD,QAAA,OAAO,CAAC,sBAAsB,EAAED,KAAK,EAAE,EAAEC,QAAQ,CAAC;AACpD;AACF;;;;"}
1
+ {"version":3,"file":"info.mjs","sources":["../../../src/assemblers/document/info.ts"],"sourcesContent":["import type { OpenAPIV3_1 } from 'openapi-types';\n\nimport type { DocumentContext } from '../../types';\n\nimport { createDebugger } from '../../utils';\n\nimport type { Assembler } from '..';\n\ninterface StrapiInfoConfig {\n name: string;\n version: string;\n}\n\nconst debug = createDebugger('assembler:info');\n\nexport class DocumentInfoAssembler implements Assembler.Document {\n assemble(context: DocumentContext): void {\n const { name, version } = context.strapi.config.get<StrapiInfoConfig>('info');\n\n debug(`assembling document's info for %O...`, { name, version });\n\n const info: OpenAPIV3_1.InfoObject = {\n title: this._title(name),\n description: this._description(name, version),\n version,\n };\n\n debug(`document's info assembled: %O`, info);\n\n context.output.data.info = info;\n }\n\n private _title(name: string) {\n return `${name}`;\n }\n\n private _description(name: string, version: string) {\n return `API documentation for ${name} v${version}`;\n }\n}\n"],"names":["debug","createDebugger","DocumentInfoAssembler","assemble","context","name","version","strapi","config","get","info","title","_title","description","_description","output","data"],"mappings":";;;;AAaA,MAAMA,QAAQC,cAAe,CAAA,gBAAA,CAAA;AAEtB,MAAMC,qBAAAA,CAAAA;AACXC,IAAAA,QAAAA,CAASC,OAAwB,EAAQ;AACvC,QAAA,MAAM,EAAEC,IAAI,EAAEC,OAAO,EAAE,GAAGF,OAAQG,CAAAA,MAAM,CAACC,MAAM,CAACC,GAAG,CAAmB,MAAA,CAAA;QAEtET,KAAM,CAAA,CAAC,oCAAoC,CAAC,EAAE;AAAEK,YAAAA,IAAAA;AAAMC,YAAAA;AAAQ,SAAA,CAAA;AAE9D,QAAA,MAAMI,IAA+B,GAAA;YACnCC,KAAO,EAAA,IAAI,CAACC,MAAM,CAACP,IAAAA,CAAAA;AACnBQ,YAAAA,WAAAA,EAAa,IAAI,CAACC,YAAY,CAACT,IAAMC,EAAAA,OAAAA,CAAAA;AACrCA,YAAAA;AACF,SAAA;QAEAN,KAAM,CAAA,CAAC,6BAA6B,CAAC,EAAEU,IAAAA,CAAAA;AAEvCN,QAAAA,OAAAA,CAAQW,MAAM,CAACC,IAAI,CAACN,IAAI,GAAGA,IAAAA;AAC7B;AAEQE,IAAAA,MAAAA,CAAOP,IAAY,EAAE;AAC3B,QAAA,OAAO,GAAGA,IAAM,CAAA,CAAA;AAClB;IAEQS,YAAaT,CAAAA,IAAY,EAAEC,OAAe,EAAE;AAClD,QAAA,OAAO,CAAC,sBAAsB,EAAED,IAAK,CAAA,EAAE,EAAEC,OAAS,CAAA,CAAA;AACpD;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"operation-id.js","sources":["../../../../../../src/assemblers/document/path/path-item/operation/operation-id.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { REGEX_STRAPI_PATH_PARAMS } from '../../../../../constants';\n\nimport type { OperationContext } from '../../../../../types';\nimport { createDebugger } from '../../../../../utils';\nimport type { Assembler } from '../../../..';\n\nconst debug = createDebugger('assembler:operation-id');\n\nexport class OperationIDAssembler implements Assembler.Operation {\n assemble(context: OperationContext, route: Core.Route): void {\n const { path, method, info } = route;\n\n const origin = info.apiName ?? info.pluginName;\n\n const [operationId] = ['']\n // 'origin/' or ''\n .map(this._maybeAppendOrigin(origin))\n // 'origin/get' or 'get'\n .map(this._appendMethod(method))\n // 'origin/get/entity_by_id' or 'get/entity_by_id'\n .map(this._maybeAppendPath(path));\n\n debug('assembled an operation ID for %o %o: %o', method, path, operationId);\n\n context.output.data.operationId = operationId;\n }\n\n private _maybeAppendOrigin(origin?: string) {\n return () => (origin ? `${origin}/` : '');\n }\n\n private _appendMethod(method: string) {\n return (operationId: string) => `${operationId}${method.toLowerCase()}`;\n }\n\n private _maybeAppendPath(path: string) {\n const pathParts = path.split('/').filter(Boolean);\n\n return (operationId: string) => {\n if (!pathParts.length) {\n return operationId;\n }\n\n // Make sure to add a trailing slash after the method name\n let appendix = '/';\n\n const formatPart = (str: string) => (/[_/]$/.test(appendix) ? str : `_${str}`);\n\n pathParts.forEach((part) => {\n const match = REGEX_STRAPI_PATH_PARAMS.exec(part);\n\n appendix += match\n ? // Parameter\n formatPart(`by_${match[1]}`)\n : // Regular path segment\n formatPart(part.replaceAll(/\\W/g, '_'));\n });\n\n return `${operationId}${appendix}`;\n };\n }\n}\n"],"names":["debug","createDebugger","OperationIDAssembler","assemble","context","route","path","method","info","origin","apiName","pluginName","operationId","map","_maybeAppendOrigin","_appendMethod","_maybeAppendPath","output","data","toLowerCase","pathParts","split","filter","Boolean","length","appendix","formatPart","str","test","forEach","part","match","REGEX_STRAPI_PATH_PARAMS","exec","replaceAll"],"mappings":";;;;;;;AAQA,MAAMA,QAAQC,sBAAe,CAAA,wBAAA,CAAA;AAEtB,MAAMC,oBAAAA,CAAAA;IACXC,QAASC,CAAAA,OAAyB,EAAEC,KAAiB,EAAQ;AAC3D,QAAA,MAAM,EAAEC,IAAI,EAAEC,MAAM,EAAEC,IAAI,EAAE,GAAGH,KAAAA;AAE/B,QAAA,MAAMI,MAASD,GAAAA,IAAAA,CAAKE,OAAO,IAAIF,KAAKG,UAAU;QAE9C,MAAM,CAACC,YAAY,GAAG;AAAC,YAAA;AAAG,SACxB;AACCC,SAAAA,GAAG,CAAC,IAAI,CAACC,kBAAkB,CAACL,QAC7B;AACCI,SAAAA,GAAG,CAAC,IAAI,CAACE,aAAa,CAACR,QACxB;AACCM,SAAAA,GAAG,CAAC,IAAI,CAACG,gBAAgB,CAACV,IAAAA,CAAAA,CAAAA;QAE7BN,KAAM,CAAA,yCAAA,EAA2CO,QAAQD,IAAMM,EAAAA,WAAAA,CAAAA;AAE/DR,QAAAA,OAAAA,CAAQa,MAAM,CAACC,IAAI,CAACN,WAAW,GAAGA,WAAAA;AACpC;AAEQE,IAAAA,kBAAAA,CAAmBL,MAAe,EAAE;AAC1C,QAAA,OAAO,IAAOA,MAAS,GAAA,CAAC,EAAEA,MAAO,CAAA,CAAC,CAAC,GAAG,EAAA;AACxC;AAEQM,IAAAA,aAAAA,CAAcR,MAAc,EAAE;QACpC,OAAO,CAACK,cAAwB,CAAC,EAAEA,YAAY,EAAEL,MAAAA,CAAOY,WAAW,EAAA,CAAG,CAAC;AACzE;AAEQH,IAAAA,gBAAAA,CAAiBV,IAAY,EAAE;AACrC,QAAA,MAAMc,YAAYd,IAAKe,CAAAA,KAAK,CAAC,GAAA,CAAA,CAAKC,MAAM,CAACC,OAAAA,CAAAA;AAEzC,QAAA,OAAO,CAACX,WAAAA,GAAAA;YACN,IAAI,CAACQ,SAAUI,CAAAA,MAAM,EAAE;gBACrB,OAAOZ,WAAAA;AACT;;AAGA,YAAA,IAAIa,QAAW,GAAA,GAAA;AAEf,YAAA,MAAMC,UAAa,GAAA,CAACC,GAAiB,GAAA,OAAA,CAAQC,IAAI,CAACH,QAAYE,CAAAA,GAAAA,GAAAA,GAAM,CAAC,CAAC,EAAEA,GAAAA,CAAI,CAAC;YAE7EP,SAAUS,CAAAA,OAAO,CAAC,CAACC,IAAAA,GAAAA;gBACjB,MAAMC,KAAAA,GAAQC,kCAAyBC,CAAAA,IAAI,CAACH,IAAAA,CAAAA;AAE5CL,gBAAAA,QAAAA,IAAYM,KAERL,GAAAA,UAAAA,CAAW,CAAC,GAAG,EAAEK,KAAK,CAAC,CAAE,CAAA,CAAC,CAAC,CAE3BL,GAAAA,UAAAA,CAAWI,IAAKI,CAAAA,UAAU,CAAC,KAAO,EAAA,GAAA,CAAA,CAAA;AACxC,aAAA,CAAA;AAEA,YAAA,OAAO,CAAC,EAAEtB,WAAY,CAAA,EAAEa,SAAS,CAAC;AACpC,SAAA;AACF;AACF;;;;"}
1
+ {"version":3,"file":"operation-id.js","sources":["../../../../../../src/assemblers/document/path/path-item/operation/operation-id.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { REGEX_STRAPI_PATH_PARAMS } from '../../../../../constants';\n\nimport type { OperationContext } from '../../../../../types';\nimport { createDebugger } from '../../../../../utils';\nimport type { Assembler } from '../../../..';\n\nconst debug = createDebugger('assembler:operation-id');\n\nexport class OperationIDAssembler implements Assembler.Operation {\n assemble(context: OperationContext, route: Core.Route): void {\n const { path, method, info } = route;\n\n const origin = info.apiName ?? info.pluginName;\n\n const [operationId] = ['']\n // 'origin/' or ''\n .map(this._maybeAppendOrigin(origin))\n // 'origin/get' or 'get'\n .map(this._appendMethod(method))\n // 'origin/get/entity_by_id' or 'get/entity_by_id'\n .map(this._maybeAppendPath(path));\n\n debug('assembled an operation ID for %o %o: %o', method, path, operationId);\n\n context.output.data.operationId = operationId;\n }\n\n private _maybeAppendOrigin(origin?: string) {\n return () => (origin ? `${origin}/` : '');\n }\n\n private _appendMethod(method: string) {\n return (operationId: string) => `${operationId}${method.toLowerCase()}`;\n }\n\n private _maybeAppendPath(path: string) {\n const pathParts = path.split('/').filter(Boolean);\n\n return (operationId: string) => {\n if (!pathParts.length) {\n return operationId;\n }\n\n // Make sure to add a trailing slash after the method name\n let appendix = '/';\n\n const formatPart = (str: string) => (/[_/]$/.test(appendix) ? str : `_${str}`);\n\n pathParts.forEach((part) => {\n const match = REGEX_STRAPI_PATH_PARAMS.exec(part);\n\n appendix += match\n ? // Parameter\n formatPart(`by_${match[1]}`)\n : // Regular path segment\n formatPart(part.replaceAll(/\\W/g, '_'));\n });\n\n return `${operationId}${appendix}`;\n };\n }\n}\n"],"names":["debug","createDebugger","OperationIDAssembler","assemble","context","route","path","method","info","origin","apiName","pluginName","operationId","map","_maybeAppendOrigin","_appendMethod","_maybeAppendPath","output","data","toLowerCase","pathParts","split","filter","Boolean","length","appendix","formatPart","str","test","forEach","part","match","REGEX_STRAPI_PATH_PARAMS","exec","replaceAll"],"mappings":";;;;;;;AAQA,MAAMA,QAAQC,sBAAe,CAAA,wBAAA,CAAA;AAEtB,MAAMC,oBAAAA,CAAAA;IACXC,QAASC,CAAAA,OAAyB,EAAEC,KAAiB,EAAQ;AAC3D,QAAA,MAAM,EAAEC,IAAI,EAAEC,MAAM,EAAEC,IAAI,EAAE,GAAGH,KAAAA;AAE/B,QAAA,MAAMI,MAASD,GAAAA,IAAAA,CAAKE,OAAO,IAAIF,KAAKG,UAAU;QAE9C,MAAM,CAACC,YAAY,GAAG;AAAC,YAAA;AAAG,SACxB;AACCC,SAAAA,GAAG,CAAC,IAAI,CAACC,kBAAkB,CAACL,QAC7B;AACCI,SAAAA,GAAG,CAAC,IAAI,CAACE,aAAa,CAACR,QACxB;AACCM,SAAAA,GAAG,CAAC,IAAI,CAACG,gBAAgB,CAACV,IAAAA,CAAAA,CAAAA;QAE7BN,KAAM,CAAA,yCAAA,EAA2CO,QAAQD,IAAMM,EAAAA,WAAAA,CAAAA;AAE/DR,QAAAA,OAAAA,CAAQa,MAAM,CAACC,IAAI,CAACN,WAAW,GAAGA,WAAAA;AACpC;AAEQE,IAAAA,kBAAAA,CAAmBL,MAAe,EAAE;AAC1C,QAAA,OAAO,IAAOA,MAAS,GAAA,CAAA,EAAGA,MAAO,CAAA,CAAC,CAAC,GAAG,EAAA;AACxC;AAEQM,IAAAA,aAAAA,CAAcR,MAAc,EAAE;AACpC,QAAA,OAAO,CAACK,WAAwB,GAAA,CAAA,EAAGA,WAAcL,CAAAA,EAAAA,MAAAA,CAAOY,WAAW,EAAI,CAAA,CAAA;AACzE;AAEQH,IAAAA,gBAAAA,CAAiBV,IAAY,EAAE;AACrC,QAAA,MAAMc,YAAYd,IAAKe,CAAAA,KAAK,CAAC,GAAA,CAAA,CAAKC,MAAM,CAACC,OAAAA,CAAAA;AAEzC,QAAA,OAAO,CAACX,WAAAA,GAAAA;YACN,IAAI,CAACQ,SAAUI,CAAAA,MAAM,EAAE;gBACrB,OAAOZ,WAAAA;AACT;;AAGA,YAAA,IAAIa,QAAW,GAAA,GAAA;YAEf,MAAMC,UAAAA,GAAa,CAACC,GAAAA,GAAiB,OAAQC,CAAAA,IAAI,CAACH,QAAAA,CAAAA,GAAYE,GAAM,GAAA,CAAC,CAAC,EAAEA,GAAK,CAAA,CAAA;YAE7EP,SAAUS,CAAAA,OAAO,CAAC,CAACC,IAAAA,GAAAA;gBACjB,MAAMC,KAAAA,GAAQC,kCAAyBC,CAAAA,IAAI,CAACH,IAAAA,CAAAA;AAE5CL,gBAAAA,QAAAA,IAAYM,KAERL,GAAAA,UAAAA,CAAW,CAAC,GAAG,EAAEK,KAAK,CAAC,CAAE,CAAA,CAAA,CAAE,CAE3BL,GAAAA,UAAAA,CAAWI,IAAKI,CAAAA,UAAU,CAAC,KAAO,EAAA,GAAA,CAAA,CAAA;AACxC,aAAA,CAAA;YAEA,OAAO,CAAA,EAAGtB,cAAca,QAAU,CAAA,CAAA;AACpC,SAAA;AACF;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"operation-id.mjs","sources":["../../../../../../src/assemblers/document/path/path-item/operation/operation-id.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { REGEX_STRAPI_PATH_PARAMS } from '../../../../../constants';\n\nimport type { OperationContext } from '../../../../../types';\nimport { createDebugger } from '../../../../../utils';\nimport type { Assembler } from '../../../..';\n\nconst debug = createDebugger('assembler:operation-id');\n\nexport class OperationIDAssembler implements Assembler.Operation {\n assemble(context: OperationContext, route: Core.Route): void {\n const { path, method, info } = route;\n\n const origin = info.apiName ?? info.pluginName;\n\n const [operationId] = ['']\n // 'origin/' or ''\n .map(this._maybeAppendOrigin(origin))\n // 'origin/get' or 'get'\n .map(this._appendMethod(method))\n // 'origin/get/entity_by_id' or 'get/entity_by_id'\n .map(this._maybeAppendPath(path));\n\n debug('assembled an operation ID for %o %o: %o', method, path, operationId);\n\n context.output.data.operationId = operationId;\n }\n\n private _maybeAppendOrigin(origin?: string) {\n return () => (origin ? `${origin}/` : '');\n }\n\n private _appendMethod(method: string) {\n return (operationId: string) => `${operationId}${method.toLowerCase()}`;\n }\n\n private _maybeAppendPath(path: string) {\n const pathParts = path.split('/').filter(Boolean);\n\n return (operationId: string) => {\n if (!pathParts.length) {\n return operationId;\n }\n\n // Make sure to add a trailing slash after the method name\n let appendix = '/';\n\n const formatPart = (str: string) => (/[_/]$/.test(appendix) ? str : `_${str}`);\n\n pathParts.forEach((part) => {\n const match = REGEX_STRAPI_PATH_PARAMS.exec(part);\n\n appendix += match\n ? // Parameter\n formatPart(`by_${match[1]}`)\n : // Regular path segment\n formatPart(part.replaceAll(/\\W/g, '_'));\n });\n\n return `${operationId}${appendix}`;\n };\n }\n}\n"],"names":["debug","createDebugger","OperationIDAssembler","assemble","context","route","path","method","info","origin","apiName","pluginName","operationId","map","_maybeAppendOrigin","_appendMethod","_maybeAppendPath","output","data","toLowerCase","pathParts","split","filter","Boolean","length","appendix","formatPart","str","test","forEach","part","match","REGEX_STRAPI_PATH_PARAMS","exec","replaceAll"],"mappings":";;;;;AAQA,MAAMA,QAAQC,cAAe,CAAA,wBAAA,CAAA;AAEtB,MAAMC,oBAAAA,CAAAA;IACXC,QAASC,CAAAA,OAAyB,EAAEC,KAAiB,EAAQ;AAC3D,QAAA,MAAM,EAAEC,IAAI,EAAEC,MAAM,EAAEC,IAAI,EAAE,GAAGH,KAAAA;AAE/B,QAAA,MAAMI,MAASD,GAAAA,IAAAA,CAAKE,OAAO,IAAIF,KAAKG,UAAU;QAE9C,MAAM,CAACC,YAAY,GAAG;AAAC,YAAA;AAAG,SACxB;AACCC,SAAAA,GAAG,CAAC,IAAI,CAACC,kBAAkB,CAACL,QAC7B;AACCI,SAAAA,GAAG,CAAC,IAAI,CAACE,aAAa,CAACR,QACxB;AACCM,SAAAA,GAAG,CAAC,IAAI,CAACG,gBAAgB,CAACV,IAAAA,CAAAA,CAAAA;QAE7BN,KAAM,CAAA,yCAAA,EAA2CO,QAAQD,IAAMM,EAAAA,WAAAA,CAAAA;AAE/DR,QAAAA,OAAAA,CAAQa,MAAM,CAACC,IAAI,CAACN,WAAW,GAAGA,WAAAA;AACpC;AAEQE,IAAAA,kBAAAA,CAAmBL,MAAe,EAAE;AAC1C,QAAA,OAAO,IAAOA,MAAS,GAAA,CAAC,EAAEA,MAAO,CAAA,CAAC,CAAC,GAAG,EAAA;AACxC;AAEQM,IAAAA,aAAAA,CAAcR,MAAc,EAAE;QACpC,OAAO,CAACK,cAAwB,CAAC,EAAEA,YAAY,EAAEL,MAAAA,CAAOY,WAAW,EAAA,CAAG,CAAC;AACzE;AAEQH,IAAAA,gBAAAA,CAAiBV,IAAY,EAAE;AACrC,QAAA,MAAMc,YAAYd,IAAKe,CAAAA,KAAK,CAAC,GAAA,CAAA,CAAKC,MAAM,CAACC,OAAAA,CAAAA;AAEzC,QAAA,OAAO,CAACX,WAAAA,GAAAA;YACN,IAAI,CAACQ,SAAUI,CAAAA,MAAM,EAAE;gBACrB,OAAOZ,WAAAA;AACT;;AAGA,YAAA,IAAIa,QAAW,GAAA,GAAA;AAEf,YAAA,MAAMC,UAAa,GAAA,CAACC,GAAiB,GAAA,OAAA,CAAQC,IAAI,CAACH,QAAYE,CAAAA,GAAAA,GAAAA,GAAM,CAAC,CAAC,EAAEA,GAAAA,CAAI,CAAC;YAE7EP,SAAUS,CAAAA,OAAO,CAAC,CAACC,IAAAA,GAAAA;gBACjB,MAAMC,KAAAA,GAAQC,wBAAyBC,CAAAA,IAAI,CAACH,IAAAA,CAAAA;AAE5CL,gBAAAA,QAAAA,IAAYM,KAERL,GAAAA,UAAAA,CAAW,CAAC,GAAG,EAAEK,KAAK,CAAC,CAAE,CAAA,CAAC,CAAC,CAE3BL,GAAAA,UAAAA,CAAWI,IAAKI,CAAAA,UAAU,CAAC,KAAO,EAAA,GAAA,CAAA,CAAA;AACxC,aAAA,CAAA;AAEA,YAAA,OAAO,CAAC,EAAEtB,WAAY,CAAA,EAAEa,SAAS,CAAC;AACpC,SAAA;AACF;AACF;;;;"}
1
+ {"version":3,"file":"operation-id.mjs","sources":["../../../../../../src/assemblers/document/path/path-item/operation/operation-id.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { REGEX_STRAPI_PATH_PARAMS } from '../../../../../constants';\n\nimport type { OperationContext } from '../../../../../types';\nimport { createDebugger } from '../../../../../utils';\nimport type { Assembler } from '../../../..';\n\nconst debug = createDebugger('assembler:operation-id');\n\nexport class OperationIDAssembler implements Assembler.Operation {\n assemble(context: OperationContext, route: Core.Route): void {\n const { path, method, info } = route;\n\n const origin = info.apiName ?? info.pluginName;\n\n const [operationId] = ['']\n // 'origin/' or ''\n .map(this._maybeAppendOrigin(origin))\n // 'origin/get' or 'get'\n .map(this._appendMethod(method))\n // 'origin/get/entity_by_id' or 'get/entity_by_id'\n .map(this._maybeAppendPath(path));\n\n debug('assembled an operation ID for %o %o: %o', method, path, operationId);\n\n context.output.data.operationId = operationId;\n }\n\n private _maybeAppendOrigin(origin?: string) {\n return () => (origin ? `${origin}/` : '');\n }\n\n private _appendMethod(method: string) {\n return (operationId: string) => `${operationId}${method.toLowerCase()}`;\n }\n\n private _maybeAppendPath(path: string) {\n const pathParts = path.split('/').filter(Boolean);\n\n return (operationId: string) => {\n if (!pathParts.length) {\n return operationId;\n }\n\n // Make sure to add a trailing slash after the method name\n let appendix = '/';\n\n const formatPart = (str: string) => (/[_/]$/.test(appendix) ? str : `_${str}`);\n\n pathParts.forEach((part) => {\n const match = REGEX_STRAPI_PATH_PARAMS.exec(part);\n\n appendix += match\n ? // Parameter\n formatPart(`by_${match[1]}`)\n : // Regular path segment\n formatPart(part.replaceAll(/\\W/g, '_'));\n });\n\n return `${operationId}${appendix}`;\n };\n }\n}\n"],"names":["debug","createDebugger","OperationIDAssembler","assemble","context","route","path","method","info","origin","apiName","pluginName","operationId","map","_maybeAppendOrigin","_appendMethod","_maybeAppendPath","output","data","toLowerCase","pathParts","split","filter","Boolean","length","appendix","formatPart","str","test","forEach","part","match","REGEX_STRAPI_PATH_PARAMS","exec","replaceAll"],"mappings":";;;;;AAQA,MAAMA,QAAQC,cAAe,CAAA,wBAAA,CAAA;AAEtB,MAAMC,oBAAAA,CAAAA;IACXC,QAASC,CAAAA,OAAyB,EAAEC,KAAiB,EAAQ;AAC3D,QAAA,MAAM,EAAEC,IAAI,EAAEC,MAAM,EAAEC,IAAI,EAAE,GAAGH,KAAAA;AAE/B,QAAA,MAAMI,MAASD,GAAAA,IAAAA,CAAKE,OAAO,IAAIF,KAAKG,UAAU;QAE9C,MAAM,CAACC,YAAY,GAAG;AAAC,YAAA;AAAG,SACxB;AACCC,SAAAA,GAAG,CAAC,IAAI,CAACC,kBAAkB,CAACL,QAC7B;AACCI,SAAAA,GAAG,CAAC,IAAI,CAACE,aAAa,CAACR,QACxB;AACCM,SAAAA,GAAG,CAAC,IAAI,CAACG,gBAAgB,CAACV,IAAAA,CAAAA,CAAAA;QAE7BN,KAAM,CAAA,yCAAA,EAA2CO,QAAQD,IAAMM,EAAAA,WAAAA,CAAAA;AAE/DR,QAAAA,OAAAA,CAAQa,MAAM,CAACC,IAAI,CAACN,WAAW,GAAGA,WAAAA;AACpC;AAEQE,IAAAA,kBAAAA,CAAmBL,MAAe,EAAE;AAC1C,QAAA,OAAO,IAAOA,MAAS,GAAA,CAAA,EAAGA,MAAO,CAAA,CAAC,CAAC,GAAG,EAAA;AACxC;AAEQM,IAAAA,aAAAA,CAAcR,MAAc,EAAE;AACpC,QAAA,OAAO,CAACK,WAAwB,GAAA,CAAA,EAAGA,WAAcL,CAAAA,EAAAA,MAAAA,CAAOY,WAAW,EAAI,CAAA,CAAA;AACzE;AAEQH,IAAAA,gBAAAA,CAAiBV,IAAY,EAAE;AACrC,QAAA,MAAMc,YAAYd,IAAKe,CAAAA,KAAK,CAAC,GAAA,CAAA,CAAKC,MAAM,CAACC,OAAAA,CAAAA;AAEzC,QAAA,OAAO,CAACX,WAAAA,GAAAA;YACN,IAAI,CAACQ,SAAUI,CAAAA,MAAM,EAAE;gBACrB,OAAOZ,WAAAA;AACT;;AAGA,YAAA,IAAIa,QAAW,GAAA,GAAA;YAEf,MAAMC,UAAAA,GAAa,CAACC,GAAAA,GAAiB,OAAQC,CAAAA,IAAI,CAACH,QAAAA,CAAAA,GAAYE,GAAM,GAAA,CAAC,CAAC,EAAEA,GAAK,CAAA,CAAA;YAE7EP,SAAUS,CAAAA,OAAO,CAAC,CAACC,IAAAA,GAAAA;gBACjB,MAAMC,KAAAA,GAAQC,wBAAyBC,CAAAA,IAAI,CAACH,IAAAA,CAAAA;AAE5CL,gBAAAA,QAAAA,IAAYM,KAERL,GAAAA,UAAAA,CAAW,CAAC,GAAG,EAAEK,KAAK,CAAC,CAAE,CAAA,CAAA,CAAE,CAE3BL,GAAAA,UAAAA,CAAWI,IAAKI,CAAAA,UAAU,CAAC,KAAO,EAAA,GAAA,CAAA,CAAA;AACxC,aAAA,CAAA;YAEA,OAAO,CAAA,EAAGtB,cAAca,QAAU,CAAA,CAAA;AACpC,SAAA;AACF;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"operation.js","sources":["../../../../../../src/assemblers/document/path/path-item/operation/operation.ts"],"sourcesContent":["import { OpenAPIV3_1, OpenAPIV3 } from 'openapi-types';\n\nimport type { Core } from '@strapi/types';\n\nimport { OperationContextFactory } from '../../../../../context';\nimport { createDebugger } from '../../../../../utils';\n\nimport type { PathItemContext } from '../../../../../types';\n\nimport type { Assembler } from '../../../..';\n\nconst debug = createDebugger('assembler:operation');\n\nexport class OperationAssembler implements Assembler.PathItem {\n private readonly _assemblers: Assembler.Operation[];\n\n private readonly _contextFactory: OperationContextFactory;\n\n constructor(\n assemblers: Assembler.Operation[],\n contextFactory: OperationContextFactory = new OperationContextFactory()\n ) {\n this._assemblers = assemblers;\n this._contextFactory = contextFactory;\n }\n\n assemble(context: PathItemContext, path: string, routes: Core.Route[]): void {\n const { output, ...defaultContextProps } = context;\n\n for (const route of routes) {\n const { method } = route;\n\n const methodIndex = method.toLowerCase();\n const operationContext = this._contextFactory.create(defaultContextProps);\n\n this._validateHTTPIndex(methodIndex);\n\n debug('assembling operation object for %o %o...', method, path);\n\n for (const assembler of this._assemblers) {\n debug('running assembler: %s...', assembler.constructor.name);\n\n assembler.assemble(operationContext, route);\n }\n\n const { data: operationObject } = operationContext.output;\n\n this._validateOperationObject(operationObject);\n\n debug('assembled operation object for %o %o', method, path);\n\n Object.assign(output.data, { [methodIndex]: operationObject });\n }\n }\n\n private _validateOperationObject(\n operation: Partial<OpenAPIV3_1.OperationObject>\n ): asserts operation is OpenAPIV3_1.OperationObject {\n if (!('responses' in operation)) {\n throw new Error('Invalid operation object: missing \"responses\" property');\n }\n }\n\n private _validateHTTPIndex(method: string): asserts method is OpenAPIV3_1.HttpMethods {\n // HttpMethods is exported as an enum in OpenAPIV3 and as a type only in OpenAPIV3_1\n const allowedMethods = Object.values<string>(OpenAPIV3.HttpMethods);\n const isAllowedMethod = allowedMethods.includes(method);\n\n if (!isAllowedMethod) {\n throw new Error(`Invalid HTTP method object: ${method}. Expected one of ${allowedMethods}`);\n }\n }\n}\n"],"names":["debug","createDebugger","OperationAssembler","assemble","context","path","routes","output","defaultContextProps","route","method","methodIndex","toLowerCase","operationContext","_contextFactory","create","_validateHTTPIndex","assembler","_assemblers","constructor","name","data","operationObject","_validateOperationObject","Object","assign","operation","Error","allowedMethods","values","OpenAPIV3","HttpMethods","isAllowedMethod","includes","assemblers","contextFactory","OperationContextFactory"],"mappings":";;;;;;;;AAWA,MAAMA,QAAQC,sBAAe,CAAA,qBAAA,CAAA;AAEtB,MAAMC,kBAAAA,CAAAA;AAaXC,IAAAA,QAAAA,CAASC,OAAwB,EAAEC,IAAY,EAAEC,MAAoB,EAAQ;AAC3E,QAAA,MAAM,EAAEC,MAAM,EAAE,GAAGC,qBAAqB,GAAGJ,OAAAA;QAE3C,KAAK,MAAMK,SAASH,MAAQ,CAAA;YAC1B,MAAM,EAAEI,MAAM,EAAE,GAAGD,KAAAA;YAEnB,MAAME,WAAAA,GAAcD,OAAOE,WAAW,EAAA;AACtC,YAAA,MAAMC,mBAAmB,IAAI,CAACC,eAAe,CAACC,MAAM,CAACP,mBAAAA,CAAAA;YAErD,IAAI,CAACQ,kBAAkB,CAACL,WAAAA,CAAAA;AAExBX,YAAAA,KAAAA,CAAM,4CAA4CU,MAAQL,EAAAA,IAAAA,CAAAA;AAE1D,YAAA,KAAK,MAAMY,SAAAA,IAAa,IAAI,CAACC,WAAW,CAAE;AACxClB,gBAAAA,KAAAA,CAAM,0BAA4BiB,EAAAA,SAAAA,CAAUE,WAAW,CAACC,IAAI,CAAA;gBAE5DH,SAAUd,CAAAA,QAAQ,CAACU,gBAAkBJ,EAAAA,KAAAA,CAAAA;AACvC;AAEA,YAAA,MAAM,EAAEY,IAAMC,EAAAA,eAAe,EAAE,GAAGT,iBAAiBN,MAAM;YAEzD,IAAI,CAACgB,wBAAwB,CAACD,eAAAA,CAAAA;AAE9BtB,YAAAA,KAAAA,CAAM,wCAAwCU,MAAQL,EAAAA,IAAAA,CAAAA;AAEtDmB,YAAAA,MAAAA,CAAOC,MAAM,CAAClB,MAAOc,CAAAA,IAAI,EAAE;AAAE,gBAAA,CAACV,cAAcW;AAAgB,aAAA,CAAA;AAC9D;AACF;AAEQC,IAAAA,wBAAAA,CACNG,SAA+C,EACG;AAClD,QAAA,IAAI,EAAE,WAAeA,IAAAA,SAAQ,CAAI,EAAA;AAC/B,YAAA,MAAM,IAAIC,KAAM,CAAA,wDAAA,CAAA;AAClB;AACF;AAEQX,IAAAA,kBAAAA,CAAmBN,MAAc,EAA6C;;AAEpF,QAAA,MAAMkB,cAAiBJ,GAAAA,MAAAA,CAAOK,MAAM,CAASC,uBAAUC,WAAW,CAAA;QAClE,MAAMC,eAAAA,GAAkBJ,cAAeK,CAAAA,QAAQ,CAACvB,MAAAA,CAAAA;AAEhD,QAAA,IAAI,CAACsB,eAAiB,EAAA;YACpB,MAAM,IAAIL,MAAM,CAAC,4BAA4B,EAAEjB,MAAO,CAAA,kBAAkB,EAAEkB,cAAAA,CAAe,CAAC,CAAA;AAC5F;AACF;AArDAT,IAAAA,WAAAA,CACEe,UAAiC,EACjCC,cAA0C,GAAA,IAAIC,mCAAyB,CACvE;QACA,IAAI,CAAClB,WAAW,GAAGgB,UAAAA;QACnB,IAAI,CAACpB,eAAe,GAAGqB,cAAAA;AACzB;AAgDF;;;;"}
1
+ {"version":3,"file":"operation.js","sources":["../../../../../../src/assemblers/document/path/path-item/operation/operation.ts"],"sourcesContent":["import { OpenAPIV3_1, OpenAPIV3 } from 'openapi-types';\n\nimport type { Core } from '@strapi/types';\n\nimport { OperationContextFactory } from '../../../../../context';\nimport { createDebugger } from '../../../../../utils';\n\nimport type { PathItemContext } from '../../../../../types';\n\nimport type { Assembler } from '../../../..';\n\nconst debug = createDebugger('assembler:operation');\n\nexport class OperationAssembler implements Assembler.PathItem {\n private readonly _assemblers: Assembler.Operation[];\n\n private readonly _contextFactory: OperationContextFactory;\n\n constructor(\n assemblers: Assembler.Operation[],\n contextFactory: OperationContextFactory = new OperationContextFactory()\n ) {\n this._assemblers = assemblers;\n this._contextFactory = contextFactory;\n }\n\n assemble(context: PathItemContext, path: string, routes: Core.Route[]): void {\n const { output, ...defaultContextProps } = context;\n\n for (const route of routes) {\n const { method } = route;\n\n const methodIndex = method.toLowerCase();\n const operationContext = this._contextFactory.create(defaultContextProps);\n\n this._validateHTTPIndex(methodIndex);\n\n debug('assembling operation object for %o %o...', method, path);\n\n for (const assembler of this._assemblers) {\n debug('running assembler: %s...', assembler.constructor.name);\n\n assembler.assemble(operationContext, route);\n }\n\n const { data: operationObject } = operationContext.output;\n\n this._validateOperationObject(operationObject);\n\n debug('assembled operation object for %o %o', method, path);\n\n Object.assign(output.data, { [methodIndex]: operationObject });\n }\n }\n\n private _validateOperationObject(\n operation: Partial<OpenAPIV3_1.OperationObject>\n ): asserts operation is OpenAPIV3_1.OperationObject {\n if (!('responses' in operation)) {\n throw new Error('Invalid operation object: missing \"responses\" property');\n }\n }\n\n private _validateHTTPIndex(method: string): asserts method is OpenAPIV3_1.HttpMethods {\n // HttpMethods is exported as an enum in OpenAPIV3 and as a type only in OpenAPIV3_1\n const allowedMethods = Object.values<string>(OpenAPIV3.HttpMethods);\n const isAllowedMethod = allowedMethods.includes(method);\n\n if (!isAllowedMethod) {\n throw new Error(`Invalid HTTP method object: ${method}. Expected one of ${allowedMethods}`);\n }\n }\n}\n"],"names":["debug","createDebugger","OperationAssembler","assemble","context","path","routes","output","defaultContextProps","route","method","methodIndex","toLowerCase","operationContext","_contextFactory","create","_validateHTTPIndex","assembler","_assemblers","name","data","operationObject","_validateOperationObject","Object","assign","operation","Error","allowedMethods","values","OpenAPIV3","HttpMethods","isAllowedMethod","includes","assemblers","contextFactory","OperationContextFactory"],"mappings":";;;;;;;;AAWA,MAAMA,QAAQC,sBAAe,CAAA,qBAAA,CAAA;AAEtB,MAAMC,kBAAAA,CAAAA;AAaXC,IAAAA,QAAAA,CAASC,OAAwB,EAAEC,IAAY,EAAEC,MAAoB,EAAQ;AAC3E,QAAA,MAAM,EAAEC,MAAM,EAAE,GAAGC,qBAAqB,GAAGJ,OAAAA;QAE3C,KAAK,MAAMK,SAASH,MAAQ,CAAA;YAC1B,MAAM,EAAEI,MAAM,EAAE,GAAGD,KAAAA;YAEnB,MAAME,WAAAA,GAAcD,OAAOE,WAAW,EAAA;AACtC,YAAA,MAAMC,mBAAmB,IAAI,CAACC,eAAe,CAACC,MAAM,CAACP,mBAAAA,CAAAA;YAErD,IAAI,CAACQ,kBAAkB,CAACL,WAAAA,CAAAA;AAExBX,YAAAA,KAAAA,CAAM,4CAA4CU,MAAQL,EAAAA,IAAAA,CAAAA;AAE1D,YAAA,KAAK,MAAMY,SAAAA,IAAa,IAAI,CAACC,WAAW,CAAE;AACxClB,gBAAAA,KAAAA,CAAM,0BAA4BiB,EAAAA,SAAAA,CAAU,WAAW,CAACE,IAAI,CAAA;gBAE5DF,SAAUd,CAAAA,QAAQ,CAACU,gBAAkBJ,EAAAA,KAAAA,CAAAA;AACvC;AAEA,YAAA,MAAM,EAAEW,IAAMC,EAAAA,eAAe,EAAE,GAAGR,iBAAiBN,MAAM;YAEzD,IAAI,CAACe,wBAAwB,CAACD,eAAAA,CAAAA;AAE9BrB,YAAAA,KAAAA,CAAM,wCAAwCU,MAAQL,EAAAA,IAAAA,CAAAA;AAEtDkB,YAAAA,MAAAA,CAAOC,MAAM,CAACjB,MAAOa,CAAAA,IAAI,EAAE;AAAE,gBAAA,CAACT,cAAcU;AAAgB,aAAA,CAAA;AAC9D;AACF;AAEQC,IAAAA,wBAAAA,CACNG,SAA+C,EACG;AAClD,QAAA,IAAI,EAAE,WAAeA,IAAAA,SAAQ,CAAI,EAAA;AAC/B,YAAA,MAAM,IAAIC,KAAM,CAAA,wDAAA,CAAA;AAClB;AACF;AAEQV,IAAAA,kBAAAA,CAAmBN,MAAc,EAA6C;;AAEpF,QAAA,MAAMiB,cAAiBJ,GAAAA,MAAAA,CAAOK,MAAM,CAASC,uBAAUC,WAAW,CAAA;QAClE,MAAMC,eAAAA,GAAkBJ,cAAeK,CAAAA,QAAQ,CAACtB,MAAAA,CAAAA;AAEhD,QAAA,IAAI,CAACqB,eAAiB,EAAA;YACpB,MAAM,IAAIL,MAAM,CAAC,4BAA4B,EAAEhB,MAAO,CAAA,kBAAkB,EAAEiB,cAAgB,CAAA,CAAA,CAAA;AAC5F;AACF;AArDA,IAAA,WAAA,CACEM,UAAiC,EACjCC,cAA0C,GAAA,IAAIC,mCAAyB,CACvE;QACA,IAAI,CAACjB,WAAW,GAAGe,UAAAA;QACnB,IAAI,CAACnB,eAAe,GAAGoB,cAAAA;AACzB;AAgDF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"operation.mjs","sources":["../../../../../../src/assemblers/document/path/path-item/operation/operation.ts"],"sourcesContent":["import { OpenAPIV3_1, OpenAPIV3 } from 'openapi-types';\n\nimport type { Core } from '@strapi/types';\n\nimport { OperationContextFactory } from '../../../../../context';\nimport { createDebugger } from '../../../../../utils';\n\nimport type { PathItemContext } from '../../../../../types';\n\nimport type { Assembler } from '../../../..';\n\nconst debug = createDebugger('assembler:operation');\n\nexport class OperationAssembler implements Assembler.PathItem {\n private readonly _assemblers: Assembler.Operation[];\n\n private readonly _contextFactory: OperationContextFactory;\n\n constructor(\n assemblers: Assembler.Operation[],\n contextFactory: OperationContextFactory = new OperationContextFactory()\n ) {\n this._assemblers = assemblers;\n this._contextFactory = contextFactory;\n }\n\n assemble(context: PathItemContext, path: string, routes: Core.Route[]): void {\n const { output, ...defaultContextProps } = context;\n\n for (const route of routes) {\n const { method } = route;\n\n const methodIndex = method.toLowerCase();\n const operationContext = this._contextFactory.create(defaultContextProps);\n\n this._validateHTTPIndex(methodIndex);\n\n debug('assembling operation object for %o %o...', method, path);\n\n for (const assembler of this._assemblers) {\n debug('running assembler: %s...', assembler.constructor.name);\n\n assembler.assemble(operationContext, route);\n }\n\n const { data: operationObject } = operationContext.output;\n\n this._validateOperationObject(operationObject);\n\n debug('assembled operation object for %o %o', method, path);\n\n Object.assign(output.data, { [methodIndex]: operationObject });\n }\n }\n\n private _validateOperationObject(\n operation: Partial<OpenAPIV3_1.OperationObject>\n ): asserts operation is OpenAPIV3_1.OperationObject {\n if (!('responses' in operation)) {\n throw new Error('Invalid operation object: missing \"responses\" property');\n }\n }\n\n private _validateHTTPIndex(method: string): asserts method is OpenAPIV3_1.HttpMethods {\n // HttpMethods is exported as an enum in OpenAPIV3 and as a type only in OpenAPIV3_1\n const allowedMethods = Object.values<string>(OpenAPIV3.HttpMethods);\n const isAllowedMethod = allowedMethods.includes(method);\n\n if (!isAllowedMethod) {\n throw new Error(`Invalid HTTP method object: ${method}. Expected one of ${allowedMethods}`);\n }\n }\n}\n"],"names":["debug","createDebugger","OperationAssembler","assemble","context","path","routes","output","defaultContextProps","route","method","methodIndex","toLowerCase","operationContext","_contextFactory","create","_validateHTTPIndex","assembler","_assemblers","constructor","name","data","operationObject","_validateOperationObject","Object","assign","operation","Error","allowedMethods","values","OpenAPIV3","HttpMethods","isAllowedMethod","includes","assemblers","contextFactory","OperationContextFactory"],"mappings":";;;;;;AAWA,MAAMA,QAAQC,cAAe,CAAA,qBAAA,CAAA;AAEtB,MAAMC,kBAAAA,CAAAA;AAaXC,IAAAA,QAAAA,CAASC,OAAwB,EAAEC,IAAY,EAAEC,MAAoB,EAAQ;AAC3E,QAAA,MAAM,EAAEC,MAAM,EAAE,GAAGC,qBAAqB,GAAGJ,OAAAA;QAE3C,KAAK,MAAMK,SAASH,MAAQ,CAAA;YAC1B,MAAM,EAAEI,MAAM,EAAE,GAAGD,KAAAA;YAEnB,MAAME,WAAAA,GAAcD,OAAOE,WAAW,EAAA;AACtC,YAAA,MAAMC,mBAAmB,IAAI,CAACC,eAAe,CAACC,MAAM,CAACP,mBAAAA,CAAAA;YAErD,IAAI,CAACQ,kBAAkB,CAACL,WAAAA,CAAAA;AAExBX,YAAAA,KAAAA,CAAM,4CAA4CU,MAAQL,EAAAA,IAAAA,CAAAA;AAE1D,YAAA,KAAK,MAAMY,SAAAA,IAAa,IAAI,CAACC,WAAW,CAAE;AACxClB,gBAAAA,KAAAA,CAAM,0BAA4BiB,EAAAA,SAAAA,CAAUE,WAAW,CAACC,IAAI,CAAA;gBAE5DH,SAAUd,CAAAA,QAAQ,CAACU,gBAAkBJ,EAAAA,KAAAA,CAAAA;AACvC;AAEA,YAAA,MAAM,EAAEY,IAAMC,EAAAA,eAAe,EAAE,GAAGT,iBAAiBN,MAAM;YAEzD,IAAI,CAACgB,wBAAwB,CAACD,eAAAA,CAAAA;AAE9BtB,YAAAA,KAAAA,CAAM,wCAAwCU,MAAQL,EAAAA,IAAAA,CAAAA;AAEtDmB,YAAAA,MAAAA,CAAOC,MAAM,CAAClB,MAAOc,CAAAA,IAAI,EAAE;AAAE,gBAAA,CAACV,cAAcW;AAAgB,aAAA,CAAA;AAC9D;AACF;AAEQC,IAAAA,wBAAAA,CACNG,SAA+C,EACG;AAClD,QAAA,IAAI,EAAE,WAAeA,IAAAA,SAAQ,CAAI,EAAA;AAC/B,YAAA,MAAM,IAAIC,KAAM,CAAA,wDAAA,CAAA;AAClB;AACF;AAEQX,IAAAA,kBAAAA,CAAmBN,MAAc,EAA6C;;AAEpF,QAAA,MAAMkB,cAAiBJ,GAAAA,MAAAA,CAAOK,MAAM,CAASC,UAAUC,WAAW,CAAA;QAClE,MAAMC,eAAAA,GAAkBJ,cAAeK,CAAAA,QAAQ,CAACvB,MAAAA,CAAAA;AAEhD,QAAA,IAAI,CAACsB,eAAiB,EAAA;YACpB,MAAM,IAAIL,MAAM,CAAC,4BAA4B,EAAEjB,MAAO,CAAA,kBAAkB,EAAEkB,cAAAA,CAAe,CAAC,CAAA;AAC5F;AACF;AArDAT,IAAAA,WAAAA,CACEe,UAAiC,EACjCC,cAA0C,GAAA,IAAIC,yBAAyB,CACvE;QACA,IAAI,CAAClB,WAAW,GAAGgB,UAAAA;QACnB,IAAI,CAACpB,eAAe,GAAGqB,cAAAA;AACzB;AAgDF;;;;"}
1
+ {"version":3,"file":"operation.mjs","sources":["../../../../../../src/assemblers/document/path/path-item/operation/operation.ts"],"sourcesContent":["import { OpenAPIV3_1, OpenAPIV3 } from 'openapi-types';\n\nimport type { Core } from '@strapi/types';\n\nimport { OperationContextFactory } from '../../../../../context';\nimport { createDebugger } from '../../../../../utils';\n\nimport type { PathItemContext } from '../../../../../types';\n\nimport type { Assembler } from '../../../..';\n\nconst debug = createDebugger('assembler:operation');\n\nexport class OperationAssembler implements Assembler.PathItem {\n private readonly _assemblers: Assembler.Operation[];\n\n private readonly _contextFactory: OperationContextFactory;\n\n constructor(\n assemblers: Assembler.Operation[],\n contextFactory: OperationContextFactory = new OperationContextFactory()\n ) {\n this._assemblers = assemblers;\n this._contextFactory = contextFactory;\n }\n\n assemble(context: PathItemContext, path: string, routes: Core.Route[]): void {\n const { output, ...defaultContextProps } = context;\n\n for (const route of routes) {\n const { method } = route;\n\n const methodIndex = method.toLowerCase();\n const operationContext = this._contextFactory.create(defaultContextProps);\n\n this._validateHTTPIndex(methodIndex);\n\n debug('assembling operation object for %o %o...', method, path);\n\n for (const assembler of this._assemblers) {\n debug('running assembler: %s...', assembler.constructor.name);\n\n assembler.assemble(operationContext, route);\n }\n\n const { data: operationObject } = operationContext.output;\n\n this._validateOperationObject(operationObject);\n\n debug('assembled operation object for %o %o', method, path);\n\n Object.assign(output.data, { [methodIndex]: operationObject });\n }\n }\n\n private _validateOperationObject(\n operation: Partial<OpenAPIV3_1.OperationObject>\n ): asserts operation is OpenAPIV3_1.OperationObject {\n if (!('responses' in operation)) {\n throw new Error('Invalid operation object: missing \"responses\" property');\n }\n }\n\n private _validateHTTPIndex(method: string): asserts method is OpenAPIV3_1.HttpMethods {\n // HttpMethods is exported as an enum in OpenAPIV3 and as a type only in OpenAPIV3_1\n const allowedMethods = Object.values<string>(OpenAPIV3.HttpMethods);\n const isAllowedMethod = allowedMethods.includes(method);\n\n if (!isAllowedMethod) {\n throw new Error(`Invalid HTTP method object: ${method}. Expected one of ${allowedMethods}`);\n }\n }\n}\n"],"names":["debug","createDebugger","OperationAssembler","assemble","context","path","routes","output","defaultContextProps","route","method","methodIndex","toLowerCase","operationContext","_contextFactory","create","_validateHTTPIndex","assembler","_assemblers","name","data","operationObject","_validateOperationObject","Object","assign","operation","Error","allowedMethods","values","OpenAPIV3","HttpMethods","isAllowedMethod","includes","assemblers","contextFactory","OperationContextFactory"],"mappings":";;;;;;AAWA,MAAMA,QAAQC,cAAe,CAAA,qBAAA,CAAA;AAEtB,MAAMC,kBAAAA,CAAAA;AAaXC,IAAAA,QAAAA,CAASC,OAAwB,EAAEC,IAAY,EAAEC,MAAoB,EAAQ;AAC3E,QAAA,MAAM,EAAEC,MAAM,EAAE,GAAGC,qBAAqB,GAAGJ,OAAAA;QAE3C,KAAK,MAAMK,SAASH,MAAQ,CAAA;YAC1B,MAAM,EAAEI,MAAM,EAAE,GAAGD,KAAAA;YAEnB,MAAME,WAAAA,GAAcD,OAAOE,WAAW,EAAA;AACtC,YAAA,MAAMC,mBAAmB,IAAI,CAACC,eAAe,CAACC,MAAM,CAACP,mBAAAA,CAAAA;YAErD,IAAI,CAACQ,kBAAkB,CAACL,WAAAA,CAAAA;AAExBX,YAAAA,KAAAA,CAAM,4CAA4CU,MAAQL,EAAAA,IAAAA,CAAAA;AAE1D,YAAA,KAAK,MAAMY,SAAAA,IAAa,IAAI,CAACC,WAAW,CAAE;AACxClB,gBAAAA,KAAAA,CAAM,0BAA4BiB,EAAAA,SAAAA,CAAU,WAAW,CAACE,IAAI,CAAA;gBAE5DF,SAAUd,CAAAA,QAAQ,CAACU,gBAAkBJ,EAAAA,KAAAA,CAAAA;AACvC;AAEA,YAAA,MAAM,EAAEW,IAAMC,EAAAA,eAAe,EAAE,GAAGR,iBAAiBN,MAAM;YAEzD,IAAI,CAACe,wBAAwB,CAACD,eAAAA,CAAAA;AAE9BrB,YAAAA,KAAAA,CAAM,wCAAwCU,MAAQL,EAAAA,IAAAA,CAAAA;AAEtDkB,YAAAA,MAAAA,CAAOC,MAAM,CAACjB,MAAOa,CAAAA,IAAI,EAAE;AAAE,gBAAA,CAACT,cAAcU;AAAgB,aAAA,CAAA;AAC9D;AACF;AAEQC,IAAAA,wBAAAA,CACNG,SAA+C,EACG;AAClD,QAAA,IAAI,EAAE,WAAeA,IAAAA,SAAQ,CAAI,EAAA;AAC/B,YAAA,MAAM,IAAIC,KAAM,CAAA,wDAAA,CAAA;AAClB;AACF;AAEQV,IAAAA,kBAAAA,CAAmBN,MAAc,EAA6C;;AAEpF,QAAA,MAAMiB,cAAiBJ,GAAAA,MAAAA,CAAOK,MAAM,CAASC,UAAUC,WAAW,CAAA;QAClE,MAAMC,eAAAA,GAAkBJ,cAAeK,CAAAA,QAAQ,CAACtB,MAAAA,CAAAA;AAEhD,QAAA,IAAI,CAACqB,eAAiB,EAAA;YACpB,MAAM,IAAIL,MAAM,CAAC,4BAA4B,EAAEhB,MAAO,CAAA,kBAAkB,EAAEiB,cAAgB,CAAA,CAAA,CAAA;AAC5F;AACF;AArDA,IAAA,WAAA,CACEM,UAAiC,EACjCC,cAA0C,GAAA,IAAIC,yBAAyB,CACvE;QACA,IAAI,CAACjB,WAAW,GAAGe,UAAAA;QACnB,IAAI,CAACnB,eAAe,GAAGoB,cAAAA;AACzB;AAgDF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"path-item.js","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","constructor","name","data","initProps","strapi","registries","timer","_contextFactory","create","replace","reduce","acc","Array","isArray","push","assemblers","contextFactory"],"mappings":";;;;;;AASA,MAAMA,QAAQC,sBAAe,CAAA,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,YAAe,GAAA,IAAI,CAACC,kBAAkB,CAACF,MAAAA,CAAAA;QAE7CN,KACE,CAAA,wDAAA,EACAS,OAAOC,IAAI,CAACH,cAAcI,MAAM,EAChCL,OAAOK,MAAM,CAAA;QAGf,KAAK,MAAM,CAACC,IAAMN,EAAAA,MAAAA,CAAO,IAAIG,MAAOI,CAAAA,OAAO,CAACN,YAAe,CAAA,CAAA;AACzD,YAAA,MAAMO,WAAc,GAAA,IAAI,CAACC,WAAW,CAACH,IAAAA,CAAAA;YAErCZ,KACE,CAAA,qCAAA,EACAc,WACAR,EAAAA,MAAAA,CAAOU,GAAG,CAAC,CAACC,KAAAA,GAAUA,KAAMC,CAAAA,MAAM,CAAEC,CAAAA,IAAI,CAAC,IAAA,CAAA,CAAA;AAG3C,YAAA,MAAMC,eAAkB,GAAA,IAAI,CAACC,sBAAsB,CAACjB,OAAAA,CAAAA;AAEpD,YAAA,KAAK,MAAMkB,SAAAA,IAAa,IAAI,CAACC,WAAW,CAAE;AACxCvB,gBAAAA,KAAAA,CAAM,0BAA4BsB,EAAAA,SAAAA,CAAUE,WAAW,CAACC,IAAI,CAAA;gBAE5DH,SAAUnB,CAAAA,QAAQ,CAACiB,eAAAA,EAAiBR,IAAMN,EAAAA,MAAAA,CAAAA;AAC5C;AAEAD,YAAAA,MAAAA,CAAOqB,IAAI,CAACZ,WAAAA,CAAY,GAAGM,eAAgBf,CAAAA,MAAM,CAACqB,IAAI;AACxD;AACF;AAEQL,IAAAA,sBAAAA,CAAuBjB,OAAoB,EAAmB;AACpE,QAAA,MAAMuB,SAAiD,GAAA;AACrDC,YAAAA,MAAAA,EAAQxB,QAAQwB,MAAM;AACtBC,YAAAA,UAAAA,EAAYzB,QAAQyB,UAAU;AAC9BvB,YAAAA,MAAAA,EAAQF,QAAQE,MAAM;AACtBwB,YAAAA,KAAAA,EAAO1B,QAAQ0B;AACjB,SAAA;AAEA,QAAA,OAAO,IAAI,CAACC,eAAe,CAACC,MAAM,CAACL,SAAAA,CAAAA;AACrC;AAEQZ,IAAAA,WAAAA,CAAYH,IAAY,EAAU;QACxC,OAAOA,IAAAA,CAAKqB,OAAO,CAAC,WAAa,EAAA,MAAA,CAAA;AACnC;AAEQzB,IAAAA,kBAAAA,CAAmBF,MAAoB,EAAgC;AAC7E,QAAA,OAAOA,MAAO4B,CAAAA,MAAM,CAA+B,CAACC,GAAKlB,EAAAA,KAAAA,GAAAA;YACvD,MAAM,EAAEL,IAAI,EAAE,GAAGK,KAAAA;AAEjB,YAAA,IAAI,CAACmB,KAAMC,CAAAA,OAAO,CAACF,GAAG,CAACvB,KAAK,CAAG,EAAA;gBAC7BuB,GAAG,CAACvB,IAAK,CAAA,GAAG,EAAE;AAChB;AAEAuB,YAAAA,GAAG,CAACvB,IAAAA,CAAK,CAAC0B,IAAI,CAACrB,KAAAA,CAAAA;YAEf,OAAOkB,GAAAA;AACT,SAAA,EAAG,EAAC,CAAA;AACN;IAhEAX,WAAYe,CAAAA,UAAgC,EAAEC,cAAsC,CAAE;QACpF,IAAI,CAACjB,WAAW,GAAGgB,UAAAA;QACnB,IAAI,CAACR,eAAe,GAAGS,cAAAA;AACzB;AA8DF;;;;"}
1
+ {"version":3,"file":"path-item.js","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,sBAAe,CAAA,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,YAAe,GAAA,IAAI,CAACC,kBAAkB,CAACF,MAAAA,CAAAA;QAE7CN,KACE,CAAA,wDAAA,EACAS,OAAOC,IAAI,CAACH,cAAcI,MAAM,EAChCL,OAAOK,MAAM,CAAA;QAGf,KAAK,MAAM,CAACC,IAAMN,EAAAA,MAAAA,CAAO,IAAIG,MAAOI,CAAAA,OAAO,CAACN,YAAe,CAAA,CAAA;AACzD,YAAA,MAAMO,WAAc,GAAA,IAAI,CAACC,WAAW,CAACH,IAAAA,CAAAA;YAErCZ,KACE,CAAA,qCAAA,EACAc,WACAR,EAAAA,MAAAA,CAAOU,GAAG,CAAC,CAACC,KAAAA,GAAUA,KAAMC,CAAAA,MAAM,CAAEC,CAAAA,IAAI,CAAC,IAAA,CAAA,CAAA;AAG3C,YAAA,MAAMC,eAAkB,GAAA,IAAI,CAACC,sBAAsB,CAACjB,OAAAA,CAAAA;AAEpD,YAAA,KAAK,MAAMkB,SAAAA,IAAa,IAAI,CAACC,WAAW,CAAE;AACxCvB,gBAAAA,KAAAA,CAAM,0BAA4BsB,EAAAA,SAAAA,CAAU,WAAW,CAACE,IAAI,CAAA;gBAE5DF,SAAUnB,CAAAA,QAAQ,CAACiB,eAAAA,EAAiBR,IAAMN,EAAAA,MAAAA,CAAAA;AAC5C;AAEAD,YAAAA,MAAAA,CAAOoB,IAAI,CAACX,WAAAA,CAAY,GAAGM,eAAgBf,CAAAA,MAAM,CAACoB,IAAI;AACxD;AACF;AAEQJ,IAAAA,sBAAAA,CAAuBjB,OAAoB,EAAmB;AACpE,QAAA,MAAMsB,SAAiD,GAAA;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;AAEQX,IAAAA,WAAAA,CAAYH,IAAY,EAAU;QACxC,OAAOA,IAAAA,CAAKoB,OAAO,CAAC,WAAa,EAAA,MAAA,CAAA;AACnC;AAEQxB,IAAAA,kBAAAA,CAAmBF,MAAoB,EAAgC;AAC7E,QAAA,OAAOA,MAAO2B,CAAAA,MAAM,CAA+B,CAACC,GAAKjB,EAAAA,KAAAA,GAAAA;YACvD,MAAM,EAAEL,IAAI,EAAE,GAAGK,KAAAA;AAEjB,YAAA,IAAI,CAACkB,KAAMC,CAAAA,OAAO,CAACF,GAAG,CAACtB,KAAK,CAAG,EAAA;gBAC7BsB,GAAG,CAACtB,IAAK,CAAA,GAAG,EAAE;AAChB;AAEAsB,YAAAA,GAAG,CAACtB,IAAAA,CAAK,CAACyB,IAAI,CAACpB,KAAAA,CAAAA;YAEf,OAAOiB,GAAAA;AACT,SAAA,EAAG,EAAC,CAAA;AACN;IAhEA,WAAYI,CAAAA,UAAgC,EAAEC,cAAsC,CAAE;QACpF,IAAI,CAAChB,WAAW,GAAGe,UAAAA;QACnB,IAAI,CAACR,eAAe,GAAGS,cAAAA;AACzB;AA8DF;;;;"}
@@ -1 +1 @@
1
- {"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","constructor","name","data","initProps","strapi","registries","timer","_contextFactory","create","replace","reduce","acc","Array","isArray","push","assemblers","contextFactory"],"mappings":";;;;AASA,MAAMA,QAAQC,cAAe,CAAA,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,YAAe,GAAA,IAAI,CAACC,kBAAkB,CAACF,MAAAA,CAAAA;QAE7CN,KACE,CAAA,wDAAA,EACAS,OAAOC,IAAI,CAACH,cAAcI,MAAM,EAChCL,OAAOK,MAAM,CAAA;QAGf,KAAK,MAAM,CAACC,IAAMN,EAAAA,MAAAA,CAAO,IAAIG,MAAOI,CAAAA,OAAO,CAACN,YAAe,CAAA,CAAA;AACzD,YAAA,MAAMO,WAAc,GAAA,IAAI,CAACC,WAAW,CAACH,IAAAA,CAAAA;YAErCZ,KACE,CAAA,qCAAA,EACAc,WACAR,EAAAA,MAAAA,CAAOU,GAAG,CAAC,CAACC,KAAAA,GAAUA,KAAMC,CAAAA,MAAM,CAAEC,CAAAA,IAAI,CAAC,IAAA,CAAA,CAAA;AAG3C,YAAA,MAAMC,eAAkB,GAAA,IAAI,CAACC,sBAAsB,CAACjB,OAAAA,CAAAA;AAEpD,YAAA,KAAK,MAAMkB,SAAAA,IAAa,IAAI,CAACC,WAAW,CAAE;AACxCvB,gBAAAA,KAAAA,CAAM,0BAA4BsB,EAAAA,SAAAA,CAAUE,WAAW,CAACC,IAAI,CAAA;gBAE5DH,SAAUnB,CAAAA,QAAQ,CAACiB,eAAAA,EAAiBR,IAAMN,EAAAA,MAAAA,CAAAA;AAC5C;AAEAD,YAAAA,MAAAA,CAAOqB,IAAI,CAACZ,WAAAA,CAAY,GAAGM,eAAgBf,CAAAA,MAAM,CAACqB,IAAI;AACxD;AACF;AAEQL,IAAAA,sBAAAA,CAAuBjB,OAAoB,EAAmB;AACpE,QAAA,MAAMuB,SAAiD,GAAA;AACrDC,YAAAA,MAAAA,EAAQxB,QAAQwB,MAAM;AACtBC,YAAAA,UAAAA,EAAYzB,QAAQyB,UAAU;AAC9BvB,YAAAA,MAAAA,EAAQF,QAAQE,MAAM;AACtBwB,YAAAA,KAAAA,EAAO1B,QAAQ0B;AACjB,SAAA;AAEA,QAAA,OAAO,IAAI,CAACC,eAAe,CAACC,MAAM,CAACL,SAAAA,CAAAA;AACrC;AAEQZ,IAAAA,WAAAA,CAAYH,IAAY,EAAU;QACxC,OAAOA,IAAAA,CAAKqB,OAAO,CAAC,WAAa,EAAA,MAAA,CAAA;AACnC;AAEQzB,IAAAA,kBAAAA,CAAmBF,MAAoB,EAAgC;AAC7E,QAAA,OAAOA,MAAO4B,CAAAA,MAAM,CAA+B,CAACC,GAAKlB,EAAAA,KAAAA,GAAAA;YACvD,MAAM,EAAEL,IAAI,EAAE,GAAGK,KAAAA;AAEjB,YAAA,IAAI,CAACmB,KAAMC,CAAAA,OAAO,CAACF,GAAG,CAACvB,KAAK,CAAG,EAAA;gBAC7BuB,GAAG,CAACvB,IAAK,CAAA,GAAG,EAAE;AAChB;AAEAuB,YAAAA,GAAG,CAACvB,IAAAA,CAAK,CAAC0B,IAAI,CAACrB,KAAAA,CAAAA;YAEf,OAAOkB,GAAAA;AACT,SAAA,EAAG,EAAC,CAAA;AACN;IAhEAX,WAAYe,CAAAA,UAAgC,EAAEC,cAAsC,CAAE;QACpF,IAAI,CAACjB,WAAW,GAAGgB,UAAAA;QACnB,IAAI,CAACR,eAAe,GAAGS,cAAAA;AACzB;AA8DF;;;;"}
1
+ {"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,cAAe,CAAA,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,YAAe,GAAA,IAAI,CAACC,kBAAkB,CAACF,MAAAA,CAAAA;QAE7CN,KACE,CAAA,wDAAA,EACAS,OAAOC,IAAI,CAACH,cAAcI,MAAM,EAChCL,OAAOK,MAAM,CAAA;QAGf,KAAK,MAAM,CAACC,IAAMN,EAAAA,MAAAA,CAAO,IAAIG,MAAOI,CAAAA,OAAO,CAACN,YAAe,CAAA,CAAA;AACzD,YAAA,MAAMO,WAAc,GAAA,IAAI,CAACC,WAAW,CAACH,IAAAA,CAAAA;YAErCZ,KACE,CAAA,qCAAA,EACAc,WACAR,EAAAA,MAAAA,CAAOU,GAAG,CAAC,CAACC,KAAAA,GAAUA,KAAMC,CAAAA,MAAM,CAAEC,CAAAA,IAAI,CAAC,IAAA,CAAA,CAAA;AAG3C,YAAA,MAAMC,eAAkB,GAAA,IAAI,CAACC,sBAAsB,CAACjB,OAAAA,CAAAA;AAEpD,YAAA,KAAK,MAAMkB,SAAAA,IAAa,IAAI,CAACC,WAAW,CAAE;AACxCvB,gBAAAA,KAAAA,CAAM,0BAA4BsB,EAAAA,SAAAA,CAAU,WAAW,CAACE,IAAI,CAAA;gBAE5DF,SAAUnB,CAAAA,QAAQ,CAACiB,eAAAA,EAAiBR,IAAMN,EAAAA,MAAAA,CAAAA;AAC5C;AAEAD,YAAAA,MAAAA,CAAOoB,IAAI,CAACX,WAAAA,CAAY,GAAGM,eAAgBf,CAAAA,MAAM,CAACoB,IAAI;AACxD;AACF;AAEQJ,IAAAA,sBAAAA,CAAuBjB,OAAoB,EAAmB;AACpE,QAAA,MAAMsB,SAAiD,GAAA;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;AAEQX,IAAAA,WAAAA,CAAYH,IAAY,EAAU;QACxC,OAAOA,IAAAA,CAAKoB,OAAO,CAAC,WAAa,EAAA,MAAA,CAAA;AACnC;AAEQxB,IAAAA,kBAAAA,CAAmBF,MAAoB,EAAgC;AAC7E,QAAA,OAAOA,MAAO2B,CAAAA,MAAM,CAA+B,CAACC,GAAKjB,EAAAA,KAAAA,GAAAA;YACvD,MAAM,EAAEL,IAAI,EAAE,GAAGK,KAAAA;AAEjB,YAAA,IAAI,CAACkB,KAAMC,CAAAA,OAAO,CAACF,GAAG,CAACtB,KAAK,CAAG,EAAA;gBAC7BsB,GAAG,CAACtB,IAAK,CAAA,GAAG,EAAE;AAChB;AAEAsB,YAAAA,GAAG,CAACtB,IAAAA,CAAK,CAACyB,IAAI,CAACpB,KAAAA,CAAAA;YAEf,OAAOiB,GAAAA;AACT,SAAA,EAAG,EAAC,CAAA;AACN;IAhEA,WAAYI,CAAAA,UAAgC,EAAEC,cAAsC,CAAE;QACpF,IAAI,CAAChB,WAAW,GAAGe,UAAAA;QACnB,IAAI,CAACR,eAAe,GAAGS,cAAAA;AACzB;AA8DF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"path.js","sources":["../../../../src/assemblers/document/path/path.ts"],"sourcesContent":["import { PathContextFactory } from '../../../context';\n\nimport type { DocumentContext } from '../../../types';\n\nimport { createDebugger } from '../../../utils';\n\nimport type { Assembler } from '../..';\n\nconst debug = createDebugger('assembler:paths');\n\nexport class DocumentPathsAssembler implements Assembler.Assembler {\n private readonly _assemblers: Assembler.Path[];\n\n private readonly _contextFactory: PathContextFactory;\n\n constructor(assemblers: Assembler.Path[], _contextFactory: PathContextFactory) {\n this._assemblers = assemblers;\n this._contextFactory = _contextFactory;\n }\n\n assemble(context: DocumentContext): void {\n const { output, ...defaultContextProps } = context;\n\n debug(`assembling document's paths for %O routes...`, defaultContextProps.routes.length);\n\n const pathContext = this._contextFactory.create(defaultContextProps);\n\n for (const assembler of this._assemblers) {\n assembler.assemble(pathContext);\n }\n\n const { data: pathsObject } = pathContext.output;\n const nbUniquePaths = Object.keys(pathsObject).length;\n\n debug(`document's paths assembled, added %O unique paths`, nbUniquePaths);\n\n output.data.paths = pathsObject;\n }\n}\n"],"names":["debug","createDebugger","DocumentPathsAssembler","assemble","context","output","defaultContextProps","routes","length","pathContext","_contextFactory","create","assembler","_assemblers","data","pathsObject","nbUniquePaths","Object","keys","paths","constructor","assemblers"],"mappings":";;;;;;AAQA,MAAMA,QAAQC,sBAAe,CAAA,iBAAA,CAAA;AAEtB,MAAMC,sBAAAA,CAAAA;AAUXC,IAAAA,QAAAA,CAASC,OAAwB,EAAQ;AACvC,QAAA,MAAM,EAAEC,MAAM,EAAE,GAAGC,qBAAqB,GAAGF,OAAAA;AAE3CJ,QAAAA,KAAAA,CAAM,CAAC,4CAA4C,CAAC,EAAEM,mBAAoBC,CAAAA,MAAM,CAACC,MAAM,CAAA;AAEvF,QAAA,MAAMC,cAAc,IAAI,CAACC,eAAe,CAACC,MAAM,CAACL,mBAAAA,CAAAA;AAEhD,QAAA,KAAK,MAAMM,SAAAA,IAAa,IAAI,CAACC,WAAW,CAAE;AACxCD,YAAAA,SAAAA,CAAUT,QAAQ,CAACM,WAAAA,CAAAA;AACrB;AAEA,QAAA,MAAM,EAAEK,IAAMC,EAAAA,WAAW,EAAE,GAAGN,YAAYJ,MAAM;AAChD,QAAA,MAAMW,aAAgBC,GAAAA,MAAAA,CAAOC,IAAI,CAACH,aAAaP,MAAM;QAErDR,KAAM,CAAA,CAAC,iDAAiD,CAAC,EAAEgB,aAAAA,CAAAA;QAE3DX,MAAOS,CAAAA,IAAI,CAACK,KAAK,GAAGJ,WAAAA;AACtB;IAtBAK,WAAYC,CAAAA,UAA4B,EAAEX,eAAmC,CAAE;QAC7E,IAAI,CAACG,WAAW,GAAGQ,UAAAA;QACnB,IAAI,CAACX,eAAe,GAAGA,eAAAA;AACzB;AAoBF;;;;"}
1
+ {"version":3,"file":"path.js","sources":["../../../../src/assemblers/document/path/path.ts"],"sourcesContent":["import { PathContextFactory } from '../../../context';\n\nimport type { DocumentContext } from '../../../types';\n\nimport { createDebugger } from '../../../utils';\n\nimport type { Assembler } from '../..';\n\nconst debug = createDebugger('assembler:paths');\n\nexport class DocumentPathsAssembler implements Assembler.Assembler {\n private readonly _assemblers: Assembler.Path[];\n\n private readonly _contextFactory: PathContextFactory;\n\n constructor(assemblers: Assembler.Path[], _contextFactory: PathContextFactory) {\n this._assemblers = assemblers;\n this._contextFactory = _contextFactory;\n }\n\n assemble(context: DocumentContext): void {\n const { output, ...defaultContextProps } = context;\n\n debug(`assembling document's paths for %O routes...`, defaultContextProps.routes.length);\n\n const pathContext = this._contextFactory.create(defaultContextProps);\n\n for (const assembler of this._assemblers) {\n assembler.assemble(pathContext);\n }\n\n const { data: pathsObject } = pathContext.output;\n const nbUniquePaths = Object.keys(pathsObject).length;\n\n debug(`document's paths assembled, added %O unique paths`, nbUniquePaths);\n\n output.data.paths = pathsObject;\n }\n}\n"],"names":["debug","createDebugger","DocumentPathsAssembler","assemble","context","output","defaultContextProps","routes","length","pathContext","_contextFactory","create","assembler","_assemblers","data","pathsObject","nbUniquePaths","Object","keys","paths","assemblers"],"mappings":";;;;;;AAQA,MAAMA,QAAQC,sBAAe,CAAA,iBAAA,CAAA;AAEtB,MAAMC,sBAAAA,CAAAA;AAUXC,IAAAA,QAAAA,CAASC,OAAwB,EAAQ;AACvC,QAAA,MAAM,EAAEC,MAAM,EAAE,GAAGC,qBAAqB,GAAGF,OAAAA;AAE3CJ,QAAAA,KAAAA,CAAM,CAAC,4CAA4C,CAAC,EAAEM,mBAAoBC,CAAAA,MAAM,CAACC,MAAM,CAAA;AAEvF,QAAA,MAAMC,cAAc,IAAI,CAACC,eAAe,CAACC,MAAM,CAACL,mBAAAA,CAAAA;AAEhD,QAAA,KAAK,MAAMM,SAAAA,IAAa,IAAI,CAACC,WAAW,CAAE;AACxCD,YAAAA,SAAAA,CAAUT,QAAQ,CAACM,WAAAA,CAAAA;AACrB;AAEA,QAAA,MAAM,EAAEK,IAAMC,EAAAA,WAAW,EAAE,GAAGN,YAAYJ,MAAM;AAChD,QAAA,MAAMW,aAAgBC,GAAAA,MAAAA,CAAOC,IAAI,CAACH,aAAaP,MAAM;QAErDR,KAAM,CAAA,CAAC,iDAAiD,CAAC,EAAEgB,aAAAA,CAAAA;QAE3DX,MAAOS,CAAAA,IAAI,CAACK,KAAK,GAAGJ,WAAAA;AACtB;IAtBA,WAAYK,CAAAA,UAA4B,EAAEV,eAAmC,CAAE;QAC7E,IAAI,CAACG,WAAW,GAAGO,UAAAA;QACnB,IAAI,CAACV,eAAe,GAAGA,eAAAA;AACzB;AAoBF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"path.mjs","sources":["../../../../src/assemblers/document/path/path.ts"],"sourcesContent":["import { PathContextFactory } from '../../../context';\n\nimport type { DocumentContext } from '../../../types';\n\nimport { createDebugger } from '../../../utils';\n\nimport type { Assembler } from '../..';\n\nconst debug = createDebugger('assembler:paths');\n\nexport class DocumentPathsAssembler implements Assembler.Assembler {\n private readonly _assemblers: Assembler.Path[];\n\n private readonly _contextFactory: PathContextFactory;\n\n constructor(assemblers: Assembler.Path[], _contextFactory: PathContextFactory) {\n this._assemblers = assemblers;\n this._contextFactory = _contextFactory;\n }\n\n assemble(context: DocumentContext): void {\n const { output, ...defaultContextProps } = context;\n\n debug(`assembling document's paths for %O routes...`, defaultContextProps.routes.length);\n\n const pathContext = this._contextFactory.create(defaultContextProps);\n\n for (const assembler of this._assemblers) {\n assembler.assemble(pathContext);\n }\n\n const { data: pathsObject } = pathContext.output;\n const nbUniquePaths = Object.keys(pathsObject).length;\n\n debug(`document's paths assembled, added %O unique paths`, nbUniquePaths);\n\n output.data.paths = pathsObject;\n }\n}\n"],"names":["debug","createDebugger","DocumentPathsAssembler","assemble","context","output","defaultContextProps","routes","length","pathContext","_contextFactory","create","assembler","_assemblers","data","pathsObject","nbUniquePaths","Object","keys","paths","constructor","assemblers"],"mappings":";;;;AAQA,MAAMA,QAAQC,cAAe,CAAA,iBAAA,CAAA;AAEtB,MAAMC,sBAAAA,CAAAA;AAUXC,IAAAA,QAAAA,CAASC,OAAwB,EAAQ;AACvC,QAAA,MAAM,EAAEC,MAAM,EAAE,GAAGC,qBAAqB,GAAGF,OAAAA;AAE3CJ,QAAAA,KAAAA,CAAM,CAAC,4CAA4C,CAAC,EAAEM,mBAAoBC,CAAAA,MAAM,CAACC,MAAM,CAAA;AAEvF,QAAA,MAAMC,cAAc,IAAI,CAACC,eAAe,CAACC,MAAM,CAACL,mBAAAA,CAAAA;AAEhD,QAAA,KAAK,MAAMM,SAAAA,IAAa,IAAI,CAACC,WAAW,CAAE;AACxCD,YAAAA,SAAAA,CAAUT,QAAQ,CAACM,WAAAA,CAAAA;AACrB;AAEA,QAAA,MAAM,EAAEK,IAAMC,EAAAA,WAAW,EAAE,GAAGN,YAAYJ,MAAM;AAChD,QAAA,MAAMW,aAAgBC,GAAAA,MAAAA,CAAOC,IAAI,CAACH,aAAaP,MAAM;QAErDR,KAAM,CAAA,CAAC,iDAAiD,CAAC,EAAEgB,aAAAA,CAAAA;QAE3DX,MAAOS,CAAAA,IAAI,CAACK,KAAK,GAAGJ,WAAAA;AACtB;IAtBAK,WAAYC,CAAAA,UAA4B,EAAEX,eAAmC,CAAE;QAC7E,IAAI,CAACG,WAAW,GAAGQ,UAAAA;QACnB,IAAI,CAACX,eAAe,GAAGA,eAAAA;AACzB;AAoBF;;;;"}
1
+ {"version":3,"file":"path.mjs","sources":["../../../../src/assemblers/document/path/path.ts"],"sourcesContent":["import { PathContextFactory } from '../../../context';\n\nimport type { DocumentContext } from '../../../types';\n\nimport { createDebugger } from '../../../utils';\n\nimport type { Assembler } from '../..';\n\nconst debug = createDebugger('assembler:paths');\n\nexport class DocumentPathsAssembler implements Assembler.Assembler {\n private readonly _assemblers: Assembler.Path[];\n\n private readonly _contextFactory: PathContextFactory;\n\n constructor(assemblers: Assembler.Path[], _contextFactory: PathContextFactory) {\n this._assemblers = assemblers;\n this._contextFactory = _contextFactory;\n }\n\n assemble(context: DocumentContext): void {\n const { output, ...defaultContextProps } = context;\n\n debug(`assembling document's paths for %O routes...`, defaultContextProps.routes.length);\n\n const pathContext = this._contextFactory.create(defaultContextProps);\n\n for (const assembler of this._assemblers) {\n assembler.assemble(pathContext);\n }\n\n const { data: pathsObject } = pathContext.output;\n const nbUniquePaths = Object.keys(pathsObject).length;\n\n debug(`document's paths assembled, added %O unique paths`, nbUniquePaths);\n\n output.data.paths = pathsObject;\n }\n}\n"],"names":["debug","createDebugger","DocumentPathsAssembler","assemble","context","output","defaultContextProps","routes","length","pathContext","_contextFactory","create","assembler","_assemblers","data","pathsObject","nbUniquePaths","Object","keys","paths","assemblers"],"mappings":";;;;AAQA,MAAMA,QAAQC,cAAe,CAAA,iBAAA,CAAA;AAEtB,MAAMC,sBAAAA,CAAAA;AAUXC,IAAAA,QAAAA,CAASC,OAAwB,EAAQ;AACvC,QAAA,MAAM,EAAEC,MAAM,EAAE,GAAGC,qBAAqB,GAAGF,OAAAA;AAE3CJ,QAAAA,KAAAA,CAAM,CAAC,4CAA4C,CAAC,EAAEM,mBAAoBC,CAAAA,MAAM,CAACC,MAAM,CAAA;AAEvF,QAAA,MAAMC,cAAc,IAAI,CAACC,eAAe,CAACC,MAAM,CAACL,mBAAAA,CAAAA;AAEhD,QAAA,KAAK,MAAMM,SAAAA,IAAa,IAAI,CAACC,WAAW,CAAE;AACxCD,YAAAA,SAAAA,CAAUT,QAAQ,CAACM,WAAAA,CAAAA;AACrB;AAEA,QAAA,MAAM,EAAEK,IAAMC,EAAAA,WAAW,EAAE,GAAGN,YAAYJ,MAAM;AAChD,QAAA,MAAMW,aAAgBC,GAAAA,MAAAA,CAAOC,IAAI,CAACH,aAAaP,MAAM;QAErDR,KAAM,CAAA,CAAC,iDAAiD,CAAC,EAAEgB,aAAAA,CAAAA;QAE3DX,MAAOS,CAAAA,IAAI,CAACK,KAAK,GAAGJ,WAAAA;AACtB;IAtBA,WAAYK,CAAAA,UAA4B,EAAEV,eAAmC,CAAE;QAC7E,IAAI,CAACG,WAAW,GAAGO,UAAAA;QACnB,IAAI,CAACV,eAAe,GAAGA,eAAAA;AACzB;AAoBF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"document.js","sources":["../../../src/context/factories/document.ts"],"sourcesContent":["import type { OpenAPIV3_1 } from 'openapi-types';\nimport { RegistriesFactory } from '../../registries';\n\nimport type { DocumentContext, DocumentContextData } from '../../types';\nimport { TimerFactory } from '../../utils';\nimport type { PartialContext } from '../types';\n\nimport { AbstractContextFactory } from './abstract';\n\nexport class DocumentContextFactory extends AbstractContextFactory<Partial<OpenAPIV3_1.Document>> {\n constructor(\n registriesFactory: RegistriesFactory = new RegistriesFactory(),\n timerFactory: TimerFactory = new TimerFactory()\n ) {\n super(registriesFactory, timerFactory);\n }\n\n create(context: PartialContext<DocumentContextData>): DocumentContext {\n return super.create(context, {});\n }\n}\n"],"names":["DocumentContextFactory","AbstractContextFactory","create","context","constructor","registriesFactory","RegistriesFactory","timerFactory","TimerFactory"],"mappings":";;;;;;;;;AASO,MAAMA,sBAA+BC,SAAAA,+BAAAA,CAAAA;AAQ1CC,IAAAA,MAAAA,CAAOC,OAA4C,EAAmB;AACpE,QAAA,OAAO,KAAK,CAACD,MAAOC,CAAAA,OAAAA,EAAS,EAAC,CAAA;AAChC;AATAC,IAAAA,WAAAA,CACEC,oBAAuC,IAAIC,yBAAAA,EAAmB,EAC9DC,YAA6B,GAAA,IAAIC,wBAAc,CAC/C;AACA,QAAA,KAAK,CAACH,iBAAmBE,EAAAA,YAAAA,CAAAA;AAC3B;AAKF;;;;"}
1
+ {"version":3,"file":"document.js","sources":["../../../src/context/factories/document.ts"],"sourcesContent":["import type { OpenAPIV3_1 } from 'openapi-types';\nimport { RegistriesFactory } from '../../registries';\n\nimport type { DocumentContext, DocumentContextData } from '../../types';\nimport { TimerFactory } from '../../utils';\nimport type { PartialContext } from '../types';\n\nimport { AbstractContextFactory } from './abstract';\n\nexport class DocumentContextFactory extends AbstractContextFactory<Partial<OpenAPIV3_1.Document>> {\n constructor(\n registriesFactory: RegistriesFactory = new RegistriesFactory(),\n timerFactory: TimerFactory = new TimerFactory()\n ) {\n super(registriesFactory, timerFactory);\n }\n\n create(context: PartialContext<DocumentContextData>): DocumentContext {\n return super.create(context, {});\n }\n}\n"],"names":["DocumentContextFactory","AbstractContextFactory","create","context","registriesFactory","RegistriesFactory","timerFactory","TimerFactory"],"mappings":";;;;;;;;;AASO,MAAMA,sBAA+BC,SAAAA,+BAAAA,CAAAA;AAQ1CC,IAAAA,MAAAA,CAAOC,OAA4C,EAAmB;AACpE,QAAA,OAAO,KAAK,CAACD,MAAOC,CAAAA,OAAAA,EAAS,EAAC,CAAA;AAChC;AATA,IAAA,WAAA,CACEC,oBAAuC,IAAIC,yBAAAA,EAAmB,EAC9DC,YAA6B,GAAA,IAAIC,wBAAc,CAC/C;AACA,QAAA,KAAK,CAACH,iBAAmBE,EAAAA,YAAAA,CAAAA;AAC3B;AAKF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"document.mjs","sources":["../../../src/context/factories/document.ts"],"sourcesContent":["import type { OpenAPIV3_1 } from 'openapi-types';\nimport { RegistriesFactory } from '../../registries';\n\nimport type { DocumentContext, DocumentContextData } from '../../types';\nimport { TimerFactory } from '../../utils';\nimport type { PartialContext } from '../types';\n\nimport { AbstractContextFactory } from './abstract';\n\nexport class DocumentContextFactory extends AbstractContextFactory<Partial<OpenAPIV3_1.Document>> {\n constructor(\n registriesFactory: RegistriesFactory = new RegistriesFactory(),\n timerFactory: TimerFactory = new TimerFactory()\n ) {\n super(registriesFactory, timerFactory);\n }\n\n create(context: PartialContext<DocumentContextData>): DocumentContext {\n return super.create(context, {});\n }\n}\n"],"names":["DocumentContextFactory","AbstractContextFactory","create","context","constructor","registriesFactory","RegistriesFactory","timerFactory","TimerFactory"],"mappings":";;;;;;;AASO,MAAMA,sBAA+BC,SAAAA,sBAAAA,CAAAA;AAQ1CC,IAAAA,MAAAA,CAAOC,OAA4C,EAAmB;AACpE,QAAA,OAAO,KAAK,CAACD,MAAOC,CAAAA,OAAAA,EAAS,EAAC,CAAA;AAChC;AATAC,IAAAA,WAAAA,CACEC,oBAAuC,IAAIC,iBAAAA,EAAmB,EAC9DC,YAA6B,GAAA,IAAIC,cAAc,CAC/C;AACA,QAAA,KAAK,CAACH,iBAAmBE,EAAAA,YAAAA,CAAAA;AAC3B;AAKF;;;;"}
1
+ {"version":3,"file":"document.mjs","sources":["../../../src/context/factories/document.ts"],"sourcesContent":["import type { OpenAPIV3_1 } from 'openapi-types';\nimport { RegistriesFactory } from '../../registries';\n\nimport type { DocumentContext, DocumentContextData } from '../../types';\nimport { TimerFactory } from '../../utils';\nimport type { PartialContext } from '../types';\n\nimport { AbstractContextFactory } from './abstract';\n\nexport class DocumentContextFactory extends AbstractContextFactory<Partial<OpenAPIV3_1.Document>> {\n constructor(\n registriesFactory: RegistriesFactory = new RegistriesFactory(),\n timerFactory: TimerFactory = new TimerFactory()\n ) {\n super(registriesFactory, timerFactory);\n }\n\n create(context: PartialContext<DocumentContextData>): DocumentContext {\n return super.create(context, {});\n }\n}\n"],"names":["DocumentContextFactory","AbstractContextFactory","create","context","registriesFactory","RegistriesFactory","timerFactory","TimerFactory"],"mappings":";;;;;;;AASO,MAAMA,sBAA+BC,SAAAA,sBAAAA,CAAAA;AAQ1CC,IAAAA,MAAAA,CAAOC,OAA4C,EAAmB;AACpE,QAAA,OAAO,KAAK,CAACD,MAAOC,CAAAA,OAAAA,EAAS,EAAC,CAAA;AAChC;AATA,IAAA,WAAA,CACEC,oBAAuC,IAAIC,iBAAAA,EAAmB,EAC9DC,YAA6B,GAAA,IAAIC,cAAc,CAC/C;AACA,QAAA,KAAK,CAACH,iBAAmBE,EAAAA,YAAAA,CAAAA;AAC3B;AAKF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"operation.js","sources":["../../../src/context/factories/operation.ts"],"sourcesContent":["import type { OpenAPIV3_1 } from 'openapi-types';\n\nimport { RegistriesFactory } from '../../registries';\n\nimport type { OperationContext, OperationContextData } from '../../types';\nimport { TimerFactory } from '../../utils';\n\nimport type { PartialContext } from '../types';\n\nimport { AbstractContextFactory } from './abstract';\n\nexport class OperationContextFactory extends AbstractContextFactory<\n Partial<OpenAPIV3_1.OperationObject>\n> {\n constructor(\n registriesFactory: RegistriesFactory = new RegistriesFactory(),\n timerFactory: TimerFactory = new TimerFactory()\n ) {\n super(registriesFactory, timerFactory);\n }\n\n create(context: PartialContext<OperationContextData>): OperationContext {\n return super.create(context, {});\n }\n}\n"],"names":["OperationContextFactory","AbstractContextFactory","create","context","constructor","registriesFactory","RegistriesFactory","timerFactory","TimerFactory"],"mappings":";;;;;;;;;AAWO,MAAMA,uBAAgCC,SAAAA,+BAAAA,CAAAA;AAU3CC,IAAAA,MAAAA,CAAOC,OAA6C,EAAoB;AACtE,QAAA,OAAO,KAAK,CAACD,MAAOC,CAAAA,OAAAA,EAAS,EAAC,CAAA;AAChC;AATAC,IAAAA,WAAAA,CACEC,oBAAuC,IAAIC,yBAAAA,EAAmB,EAC9DC,YAA6B,GAAA,IAAIC,wBAAc,CAC/C;AACA,QAAA,KAAK,CAACH,iBAAmBE,EAAAA,YAAAA,CAAAA;AAC3B;AAKF;;;;"}
1
+ {"version":3,"file":"operation.js","sources":["../../../src/context/factories/operation.ts"],"sourcesContent":["import type { OpenAPIV3_1 } from 'openapi-types';\n\nimport { RegistriesFactory } from '../../registries';\n\nimport type { OperationContext, OperationContextData } from '../../types';\nimport { TimerFactory } from '../../utils';\n\nimport type { PartialContext } from '../types';\n\nimport { AbstractContextFactory } from './abstract';\n\nexport class OperationContextFactory extends AbstractContextFactory<\n Partial<OpenAPIV3_1.OperationObject>\n> {\n constructor(\n registriesFactory: RegistriesFactory = new RegistriesFactory(),\n timerFactory: TimerFactory = new TimerFactory()\n ) {\n super(registriesFactory, timerFactory);\n }\n\n create(context: PartialContext<OperationContextData>): OperationContext {\n return super.create(context, {});\n }\n}\n"],"names":["OperationContextFactory","AbstractContextFactory","create","context","registriesFactory","RegistriesFactory","timerFactory","TimerFactory"],"mappings":";;;;;;;;;AAWO,MAAMA,uBAAgCC,SAAAA,+BAAAA,CAAAA;AAU3CC,IAAAA,MAAAA,CAAOC,OAA6C,EAAoB;AACtE,QAAA,OAAO,KAAK,CAACD,MAAOC,CAAAA,OAAAA,EAAS,EAAC,CAAA;AAChC;AATA,IAAA,WAAA,CACEC,oBAAuC,IAAIC,yBAAAA,EAAmB,EAC9DC,YAA6B,GAAA,IAAIC,wBAAc,CAC/C;AACA,QAAA,KAAK,CAACH,iBAAmBE,EAAAA,YAAAA,CAAAA;AAC3B;AAKF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"operation.mjs","sources":["../../../src/context/factories/operation.ts"],"sourcesContent":["import type { OpenAPIV3_1 } from 'openapi-types';\n\nimport { RegistriesFactory } from '../../registries';\n\nimport type { OperationContext, OperationContextData } from '../../types';\nimport { TimerFactory } from '../../utils';\n\nimport type { PartialContext } from '../types';\n\nimport { AbstractContextFactory } from './abstract';\n\nexport class OperationContextFactory extends AbstractContextFactory<\n Partial<OpenAPIV3_1.OperationObject>\n> {\n constructor(\n registriesFactory: RegistriesFactory = new RegistriesFactory(),\n timerFactory: TimerFactory = new TimerFactory()\n ) {\n super(registriesFactory, timerFactory);\n }\n\n create(context: PartialContext<OperationContextData>): OperationContext {\n return super.create(context, {});\n }\n}\n"],"names":["OperationContextFactory","AbstractContextFactory","create","context","constructor","registriesFactory","RegistriesFactory","timerFactory","TimerFactory"],"mappings":";;;;;;;AAWO,MAAMA,uBAAgCC,SAAAA,sBAAAA,CAAAA;AAU3CC,IAAAA,MAAAA,CAAOC,OAA6C,EAAoB;AACtE,QAAA,OAAO,KAAK,CAACD,MAAOC,CAAAA,OAAAA,EAAS,EAAC,CAAA;AAChC;AATAC,IAAAA,WAAAA,CACEC,oBAAuC,IAAIC,iBAAAA,EAAmB,EAC9DC,YAA6B,GAAA,IAAIC,cAAc,CAC/C;AACA,QAAA,KAAK,CAACH,iBAAmBE,EAAAA,YAAAA,CAAAA;AAC3B;AAKF;;;;"}
1
+ {"version":3,"file":"operation.mjs","sources":["../../../src/context/factories/operation.ts"],"sourcesContent":["import type { OpenAPIV3_1 } from 'openapi-types';\n\nimport { RegistriesFactory } from '../../registries';\n\nimport type { OperationContext, OperationContextData } from '../../types';\nimport { TimerFactory } from '../../utils';\n\nimport type { PartialContext } from '../types';\n\nimport { AbstractContextFactory } from './abstract';\n\nexport class OperationContextFactory extends AbstractContextFactory<\n Partial<OpenAPIV3_1.OperationObject>\n> {\n constructor(\n registriesFactory: RegistriesFactory = new RegistriesFactory(),\n timerFactory: TimerFactory = new TimerFactory()\n ) {\n super(registriesFactory, timerFactory);\n }\n\n create(context: PartialContext<OperationContextData>): OperationContext {\n return super.create(context, {});\n }\n}\n"],"names":["OperationContextFactory","AbstractContextFactory","create","context","registriesFactory","RegistriesFactory","timerFactory","TimerFactory"],"mappings":";;;;;;;AAWO,MAAMA,uBAAgCC,SAAAA,sBAAAA,CAAAA;AAU3CC,IAAAA,MAAAA,CAAOC,OAA6C,EAAoB;AACtE,QAAA,OAAO,KAAK,CAACD,MAAOC,CAAAA,OAAAA,EAAS,EAAC,CAAA;AAChC;AATA,IAAA,WAAA,CACEC,oBAAuC,IAAIC,iBAAAA,EAAmB,EAC9DC,YAA6B,GAAA,IAAIC,cAAc,CAC/C;AACA,QAAA,KAAK,CAACH,iBAAmBE,EAAAA,YAAAA,CAAAA;AAC3B;AAKF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"path-item.js","sources":["../../../src/context/factories/path-item.ts"],"sourcesContent":["import { RegistriesFactory } from '../../registries';\n\nimport type { PathItemContext, PathItemContextData } from '../../types';\nimport { TimerFactory } from '../../utils';\n\nimport type { PartialContext } from '../types';\n\nimport { AbstractContextFactory } from './abstract';\n\nexport class PathItemContextFactory extends AbstractContextFactory<PathItemContextData> {\n constructor(\n registriesFactory: RegistriesFactory = new RegistriesFactory(),\n timerFactory: TimerFactory = new TimerFactory()\n ) {\n super(registriesFactory, timerFactory);\n }\n\n create(context: PartialContext<PathItemContextData>): PathItemContext {\n return super.create(context, {});\n }\n}\n"],"names":["PathItemContextFactory","AbstractContextFactory","create","context","constructor","registriesFactory","RegistriesFactory","timerFactory","TimerFactory"],"mappings":";;;;;;;;;AASO,MAAMA,sBAA+BC,SAAAA,+BAAAA,CAAAA;AAQ1CC,IAAAA,MAAAA,CAAOC,OAA4C,EAAmB;AACpE,QAAA,OAAO,KAAK,CAACD,MAAOC,CAAAA,OAAAA,EAAS,EAAC,CAAA;AAChC;AATAC,IAAAA,WAAAA,CACEC,oBAAuC,IAAIC,yBAAAA,EAAmB,EAC9DC,YAA6B,GAAA,IAAIC,wBAAc,CAC/C;AACA,QAAA,KAAK,CAACH,iBAAmBE,EAAAA,YAAAA,CAAAA;AAC3B;AAKF;;;;"}
1
+ {"version":3,"file":"path-item.js","sources":["../../../src/context/factories/path-item.ts"],"sourcesContent":["import { RegistriesFactory } from '../../registries';\n\nimport type { PathItemContext, PathItemContextData } from '../../types';\nimport { TimerFactory } from '../../utils';\n\nimport type { PartialContext } from '../types';\n\nimport { AbstractContextFactory } from './abstract';\n\nexport class PathItemContextFactory extends AbstractContextFactory<PathItemContextData> {\n constructor(\n registriesFactory: RegistriesFactory = new RegistriesFactory(),\n timerFactory: TimerFactory = new TimerFactory()\n ) {\n super(registriesFactory, timerFactory);\n }\n\n create(context: PartialContext<PathItemContextData>): PathItemContext {\n return super.create(context, {});\n }\n}\n"],"names":["PathItemContextFactory","AbstractContextFactory","create","context","registriesFactory","RegistriesFactory","timerFactory","TimerFactory"],"mappings":";;;;;;;;;AASO,MAAMA,sBAA+BC,SAAAA,+BAAAA,CAAAA;AAQ1CC,IAAAA,MAAAA,CAAOC,OAA4C,EAAmB;AACpE,QAAA,OAAO,KAAK,CAACD,MAAOC,CAAAA,OAAAA,EAAS,EAAC,CAAA;AAChC;AATA,IAAA,WAAA,CACEC,oBAAuC,IAAIC,yBAAAA,EAAmB,EAC9DC,YAA6B,GAAA,IAAIC,wBAAc,CAC/C;AACA,QAAA,KAAK,CAACH,iBAAmBE,EAAAA,YAAAA,CAAAA;AAC3B;AAKF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"path-item.mjs","sources":["../../../src/context/factories/path-item.ts"],"sourcesContent":["import { RegistriesFactory } from '../../registries';\n\nimport type { PathItemContext, PathItemContextData } from '../../types';\nimport { TimerFactory } from '../../utils';\n\nimport type { PartialContext } from '../types';\n\nimport { AbstractContextFactory } from './abstract';\n\nexport class PathItemContextFactory extends AbstractContextFactory<PathItemContextData> {\n constructor(\n registriesFactory: RegistriesFactory = new RegistriesFactory(),\n timerFactory: TimerFactory = new TimerFactory()\n ) {\n super(registriesFactory, timerFactory);\n }\n\n create(context: PartialContext<PathItemContextData>): PathItemContext {\n return super.create(context, {});\n }\n}\n"],"names":["PathItemContextFactory","AbstractContextFactory","create","context","constructor","registriesFactory","RegistriesFactory","timerFactory","TimerFactory"],"mappings":";;;;;;;AASO,MAAMA,sBAA+BC,SAAAA,sBAAAA,CAAAA;AAQ1CC,IAAAA,MAAAA,CAAOC,OAA4C,EAAmB;AACpE,QAAA,OAAO,KAAK,CAACD,MAAOC,CAAAA,OAAAA,EAAS,EAAC,CAAA;AAChC;AATAC,IAAAA,WAAAA,CACEC,oBAAuC,IAAIC,iBAAAA,EAAmB,EAC9DC,YAA6B,GAAA,IAAIC,cAAc,CAC/C;AACA,QAAA,KAAK,CAACH,iBAAmBE,EAAAA,YAAAA,CAAAA;AAC3B;AAKF;;;;"}
1
+ {"version":3,"file":"path-item.mjs","sources":["../../../src/context/factories/path-item.ts"],"sourcesContent":["import { RegistriesFactory } from '../../registries';\n\nimport type { PathItemContext, PathItemContextData } from '../../types';\nimport { TimerFactory } from '../../utils';\n\nimport type { PartialContext } from '../types';\n\nimport { AbstractContextFactory } from './abstract';\n\nexport class PathItemContextFactory extends AbstractContextFactory<PathItemContextData> {\n constructor(\n registriesFactory: RegistriesFactory = new RegistriesFactory(),\n timerFactory: TimerFactory = new TimerFactory()\n ) {\n super(registriesFactory, timerFactory);\n }\n\n create(context: PartialContext<PathItemContextData>): PathItemContext {\n return super.create(context, {});\n }\n}\n"],"names":["PathItemContextFactory","AbstractContextFactory","create","context","registriesFactory","RegistriesFactory","timerFactory","TimerFactory"],"mappings":";;;;;;;AASO,MAAMA,sBAA+BC,SAAAA,sBAAAA,CAAAA;AAQ1CC,IAAAA,MAAAA,CAAOC,OAA4C,EAAmB;AACpE,QAAA,OAAO,KAAK,CAACD,MAAOC,CAAAA,OAAAA,EAAS,EAAC,CAAA;AAChC;AATA,IAAA,WAAA,CACEC,oBAAuC,IAAIC,iBAAAA,EAAmB,EAC9DC,YAA6B,GAAA,IAAIC,cAAc,CAC/C;AACA,QAAA,KAAK,CAACH,iBAAmBE,EAAAA,YAAAA,CAAAA;AAC3B;AAKF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"path.js","sources":["../../../src/context/factories/path.ts"],"sourcesContent":["import { RegistriesFactory } from '../../registries';\n\nimport type { PathContext, PathContextData } from '../../types';\nimport { TimerFactory } from '../../utils';\n\nimport type { PartialContext } from '../types';\n\nimport { AbstractContextFactory } from './abstract';\n\nexport class PathContextFactory extends AbstractContextFactory<PathContextData> {\n constructor(\n registriesFactory: RegistriesFactory = new RegistriesFactory(),\n timerFactory: TimerFactory = new TimerFactory()\n ) {\n super(registriesFactory, timerFactory);\n }\n\n create(context: PartialContext<PathContextData>): PathContext {\n return super.create(context, {});\n }\n}\n"],"names":["PathContextFactory","AbstractContextFactory","create","context","constructor","registriesFactory","RegistriesFactory","timerFactory","TimerFactory"],"mappings":";;;;;;;;;AASO,MAAMA,kBAA2BC,SAAAA,+BAAAA,CAAAA;AAQtCC,IAAAA,MAAAA,CAAOC,OAAwC,EAAe;AAC5D,QAAA,OAAO,KAAK,CAACD,MAAOC,CAAAA,OAAAA,EAAS,EAAC,CAAA;AAChC;AATAC,IAAAA,WAAAA,CACEC,oBAAuC,IAAIC,yBAAAA,EAAmB,EAC9DC,YAA6B,GAAA,IAAIC,wBAAc,CAC/C;AACA,QAAA,KAAK,CAACH,iBAAmBE,EAAAA,YAAAA,CAAAA;AAC3B;AAKF;;;;"}
1
+ {"version":3,"file":"path.js","sources":["../../../src/context/factories/path.ts"],"sourcesContent":["import { RegistriesFactory } from '../../registries';\n\nimport type { PathContext, PathContextData } from '../../types';\nimport { TimerFactory } from '../../utils';\n\nimport type { PartialContext } from '../types';\n\nimport { AbstractContextFactory } from './abstract';\n\nexport class PathContextFactory extends AbstractContextFactory<PathContextData> {\n constructor(\n registriesFactory: RegistriesFactory = new RegistriesFactory(),\n timerFactory: TimerFactory = new TimerFactory()\n ) {\n super(registriesFactory, timerFactory);\n }\n\n create(context: PartialContext<PathContextData>): PathContext {\n return super.create(context, {});\n }\n}\n"],"names":["PathContextFactory","AbstractContextFactory","create","context","registriesFactory","RegistriesFactory","timerFactory","TimerFactory"],"mappings":";;;;;;;;;AASO,MAAMA,kBAA2BC,SAAAA,+BAAAA,CAAAA;AAQtCC,IAAAA,MAAAA,CAAOC,OAAwC,EAAe;AAC5D,QAAA,OAAO,KAAK,CAACD,MAAOC,CAAAA,OAAAA,EAAS,EAAC,CAAA;AAChC;AATA,IAAA,WAAA,CACEC,oBAAuC,IAAIC,yBAAAA,EAAmB,EAC9DC,YAA6B,GAAA,IAAIC,wBAAc,CAC/C;AACA,QAAA,KAAK,CAACH,iBAAmBE,EAAAA,YAAAA,CAAAA;AAC3B;AAKF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"path.mjs","sources":["../../../src/context/factories/path.ts"],"sourcesContent":["import { RegistriesFactory } from '../../registries';\n\nimport type { PathContext, PathContextData } from '../../types';\nimport { TimerFactory } from '../../utils';\n\nimport type { PartialContext } from '../types';\n\nimport { AbstractContextFactory } from './abstract';\n\nexport class PathContextFactory extends AbstractContextFactory<PathContextData> {\n constructor(\n registriesFactory: RegistriesFactory = new RegistriesFactory(),\n timerFactory: TimerFactory = new TimerFactory()\n ) {\n super(registriesFactory, timerFactory);\n }\n\n create(context: PartialContext<PathContextData>): PathContext {\n return super.create(context, {});\n }\n}\n"],"names":["PathContextFactory","AbstractContextFactory","create","context","constructor","registriesFactory","RegistriesFactory","timerFactory","TimerFactory"],"mappings":";;;;;;;AASO,MAAMA,kBAA2BC,SAAAA,sBAAAA,CAAAA;AAQtCC,IAAAA,MAAAA,CAAOC,OAAwC,EAAe;AAC5D,QAAA,OAAO,KAAK,CAACD,MAAOC,CAAAA,OAAAA,EAAS,EAAC,CAAA;AAChC;AATAC,IAAAA,WAAAA,CACEC,oBAAuC,IAAIC,iBAAAA,EAAmB,EAC9DC,YAA6B,GAAA,IAAIC,cAAc,CAC/C;AACA,QAAA,KAAK,CAACH,iBAAmBE,EAAAA,YAAAA,CAAAA;AAC3B;AAKF;;;;"}
1
+ {"version":3,"file":"path.mjs","sources":["../../../src/context/factories/path.ts"],"sourcesContent":["import { RegistriesFactory } from '../../registries';\n\nimport type { PathContext, PathContextData } from '../../types';\nimport { TimerFactory } from '../../utils';\n\nimport type { PartialContext } from '../types';\n\nimport { AbstractContextFactory } from './abstract';\n\nexport class PathContextFactory extends AbstractContextFactory<PathContextData> {\n constructor(\n registriesFactory: RegistriesFactory = new RegistriesFactory(),\n timerFactory: TimerFactory = new TimerFactory()\n ) {\n super(registriesFactory, timerFactory);\n }\n\n create(context: PartialContext<PathContextData>): PathContext {\n return super.create(context, {});\n }\n}\n"],"names":["PathContextFactory","AbstractContextFactory","create","context","registriesFactory","RegistriesFactory","timerFactory","TimerFactory"],"mappings":";;;;;;;AASO,MAAMA,kBAA2BC,SAAAA,sBAAAA,CAAAA;AAQtCC,IAAAA,MAAAA,CAAOC,OAAwC,EAAe;AAC5D,QAAA,OAAO,KAAK,CAACD,MAAOC,CAAAA,OAAAA,EAAS,EAAC,CAAA;AAChC;AATA,IAAA,WAAA,CACEC,oBAAuC,IAAIC,iBAAAA,EAAmB,EAC9DC,YAA6B,GAAA,IAAIC,cAAc,CAC/C;AACA,QAAA,KAAK,CAACH,iBAAmBE,EAAAA,YAAAA,CAAAA;AAC3B;AAKF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sources":["../../src/generator/generator.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport type { OpenAPIV3_1 } from 'openapi-types';\n\nimport type { Assembler } from '../assemblers';\nimport type { DocumentContextFactory } from '../context';\nimport type { PostProcessor } from '../post-processor';\nimport type { PreProcessor } from '../pre-processor';\nimport type { RouteCollector } from '../routes';\nimport type { DocumentContext } from '../types';\n\nimport type { GeneratorOptions, GeneratorOutput } from './types';\n\nimport { createDebugger } from '../utils';\n\nconst debug = createDebugger('generator');\n\nexport interface OpenAPIGeneratorConfig {\n preProcessors?: PreProcessor[];\n assemblers?: Assembler.Document[];\n postProcessors?: PostProcessor[];\n}\n\nexport class OpenAPIGenerator {\n // Config\n private readonly _assemblers: Assembler.Document[];\n\n private readonly _preProcessors: PreProcessor[];\n\n private readonly _postProcessors: PostProcessor[];\n\n // Dependencies\n private readonly _strapi: Core.Strapi;\n\n private readonly _routeCollector: RouteCollector;\n\n // Factories\n private readonly _contextFactory: DocumentContextFactory;\n\n constructor(\n // Config\n config: OpenAPIGeneratorConfig,\n\n // Dependencies\n strapi: Core.Strapi,\n routeCollector: RouteCollector,\n\n // Factories\n contextFactory: DocumentContextFactory\n ) {\n // Config\n this._assemblers = config.assemblers ?? [];\n this._preProcessors = config.preProcessors ?? [];\n this._postProcessors = config.postProcessors ?? [];\n\n // Dependencies\n this._strapi = strapi;\n this._routeCollector = routeCollector;\n\n // Factories\n this._contextFactory = contextFactory;\n }\n\n generate(_options?: GeneratorOptions): GeneratorOutput {\n debug('generating a new OpenAPI document with the following options: %O', _options);\n\n const context = this._initContext(this._strapi);\n\n this\n // Init timers\n ._bootstrap(context)\n // Run registered pre-processors\n ._preProcess(context)\n // Run registered section assemblers\n ._assemble(context)\n // Run registered post-processors\n ._postProcess(context)\n // Clean up and set necessary properties\n ._finalize(context);\n\n const { data, stats } = context.output;\n\n return { document: data as OpenAPIV3_1.Document, durationMs: stats.time.elapsedTime };\n }\n\n private _initContext(strapi: Core.Strapi): DocumentContext {\n debug('collecting registered routes...');\n const routes = this._routeCollector.collect();\n\n debug('creating the initial document generation context...');\n return this._contextFactory.create({ strapi, routes });\n }\n\n private _bootstrap(context: DocumentContext) {\n const { timer } = context;\n\n timer.reset();\n\n const startedAt = timer.start();\n\n debug('started generation: %o', new Date(startedAt).toISOString());\n\n return this;\n }\n\n private _finalize(context: DocumentContext) {\n const { timer, output } = context;\n\n output.stats.time = timer.stop();\n\n const { endTime, elapsedTime } = output.stats.time;\n\n debug('completed generation: %O (elapsed: %Oms)', new Date(endTime).toISOString(), elapsedTime);\n\n return this;\n }\n\n private _preProcess(context: DocumentContext) {\n for (const preProcessor of this._preProcessors) {\n debug('running pre-processor: %s...', preProcessor.constructor.name);\n\n preProcessor.preProcess(context);\n }\n\n return this;\n }\n\n private _assemble(context: DocumentContext) {\n for (const assembler of this._assemblers) {\n debug('running assembler: %s...', assembler.constructor.name);\n\n assembler.assemble(context);\n }\n\n return this;\n }\n\n private _postProcess(context: DocumentContext) {\n for (const postProcessor of this._postProcessors) {\n debug('running post-processor: %s...', postProcessor.constructor.name);\n\n postProcessor.postProcess(context);\n }\n\n return this;\n }\n}\n"],"names":["debug","createDebugger","OpenAPIGenerator","generate","_options","context","_initContext","_strapi","_bootstrap","_preProcess","_assemble","_postProcess","_finalize","data","stats","output","document","durationMs","time","elapsedTime","strapi","routes","_routeCollector","collect","_contextFactory","create","timer","reset","startedAt","start","Date","toISOString","stop","endTime","preProcessor","_preProcessors","constructor","name","preProcess","assembler","_assemblers","assemble","postProcessor","_postProcessors","postProcess","config","routeCollector","contextFactory","assemblers","preProcessors","postProcessors"],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sources":["../../src/generator/generator.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport type { OpenAPIV3_1 } from 'openapi-types';\n\nimport type { Assembler } from '../assemblers';\nimport type { DocumentContextFactory } from '../context';\nimport type { PostProcessor } from '../post-processor';\nimport type { PreProcessor } from '../pre-processor';\nimport type { RouteCollector } from '../routes';\nimport type { DocumentContext } from '../types';\n\nimport type { GeneratorOptions, GeneratorOutput } from './types';\n\nimport { createDebugger } from '../utils';\n\nconst debug = createDebugger('generator');\n\nexport interface OpenAPIGeneratorConfig {\n preProcessors?: PreProcessor[];\n assemblers?: Assembler.Document[];\n postProcessors?: PostProcessor[];\n}\n\nexport class OpenAPIGenerator {\n // Config\n private readonly _assemblers: Assembler.Document[];\n\n private readonly _preProcessors: PreProcessor[];\n\n private readonly _postProcessors: PostProcessor[];\n\n // Dependencies\n private readonly _strapi: Core.Strapi;\n\n private readonly _routeCollector: RouteCollector;\n\n // Factories\n private readonly _contextFactory: DocumentContextFactory;\n\n constructor(\n // Config\n config: OpenAPIGeneratorConfig,\n\n // Dependencies\n strapi: Core.Strapi,\n routeCollector: RouteCollector,\n\n // Factories\n contextFactory: DocumentContextFactory\n ) {\n // Config\n this._assemblers = config.assemblers ?? [];\n this._preProcessors = config.preProcessors ?? [];\n this._postProcessors = config.postProcessors ?? [];\n\n // Dependencies\n this._strapi = strapi;\n this._routeCollector = routeCollector;\n\n // Factories\n this._contextFactory = contextFactory;\n }\n\n generate(_options?: GeneratorOptions): GeneratorOutput {\n debug('generating a new OpenAPI document with the following options: %O', _options);\n\n const context = this._initContext(this._strapi);\n\n this\n // Init timers\n ._bootstrap(context)\n // Run registered pre-processors\n ._preProcess(context)\n // Run registered section assemblers\n ._assemble(context)\n // Run registered post-processors\n ._postProcess(context)\n // Clean up and set necessary properties\n ._finalize(context);\n\n const { data, stats } = context.output;\n\n return { document: data as OpenAPIV3_1.Document, durationMs: stats.time.elapsedTime };\n }\n\n private _initContext(strapi: Core.Strapi): DocumentContext {\n debug('collecting registered routes...');\n const routes = this._routeCollector.collect();\n\n debug('creating the initial document generation context...');\n return this._contextFactory.create({ strapi, routes });\n }\n\n private _bootstrap(context: DocumentContext) {\n const { timer } = context;\n\n timer.reset();\n\n const startedAt = timer.start();\n\n debug('started generation: %o', new Date(startedAt).toISOString());\n\n return this;\n }\n\n private _finalize(context: DocumentContext) {\n const { timer, output } = context;\n\n output.stats.time = timer.stop();\n\n const { endTime, elapsedTime } = output.stats.time;\n\n debug('completed generation: %O (elapsed: %Oms)', new Date(endTime).toISOString(), elapsedTime);\n\n return this;\n }\n\n private _preProcess(context: DocumentContext) {\n for (const preProcessor of this._preProcessors) {\n debug('running pre-processor: %s...', preProcessor.constructor.name);\n\n preProcessor.preProcess(context);\n }\n\n return this;\n }\n\n private _assemble(context: DocumentContext) {\n for (const assembler of this._assemblers) {\n debug('running assembler: %s...', assembler.constructor.name);\n\n assembler.assemble(context);\n }\n\n return this;\n }\n\n private _postProcess(context: DocumentContext) {\n for (const postProcessor of this._postProcessors) {\n debug('running post-processor: %s...', postProcessor.constructor.name);\n\n postProcessor.postProcess(context);\n }\n\n return this;\n }\n}\n"],"names":["debug","createDebugger","OpenAPIGenerator","generate","_options","context","_initContext","_strapi","_bootstrap","_preProcess","_assemble","_postProcess","_finalize","data","stats","output","document","durationMs","time","elapsedTime","strapi","routes","_routeCollector","collect","_contextFactory","create","timer","reset","startedAt","start","Date","toISOString","stop","endTime","preProcessor","_preProcessors","name","preProcess","assembler","_assemblers","assemble","postProcessor","_postProcessors","postProcess","config","routeCollector","contextFactory","assemblers","preProcessors","postProcessors"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generator.mjs","sources":["../../src/generator/generator.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport type { OpenAPIV3_1 } from 'openapi-types';\n\nimport type { Assembler } from '../assemblers';\nimport type { DocumentContextFactory } from '../context';\nimport type { PostProcessor } from '../post-processor';\nimport type { PreProcessor } from '../pre-processor';\nimport type { RouteCollector } from '../routes';\nimport type { DocumentContext } from '../types';\n\nimport type { GeneratorOptions, GeneratorOutput } from './types';\n\nimport { createDebugger } from '../utils';\n\nconst debug = createDebugger('generator');\n\nexport interface OpenAPIGeneratorConfig {\n preProcessors?: PreProcessor[];\n assemblers?: Assembler.Document[];\n postProcessors?: PostProcessor[];\n}\n\nexport class OpenAPIGenerator {\n // Config\n private readonly _assemblers: Assembler.Document[];\n\n private readonly _preProcessors: PreProcessor[];\n\n private readonly _postProcessors: PostProcessor[];\n\n // Dependencies\n private readonly _strapi: Core.Strapi;\n\n private readonly _routeCollector: RouteCollector;\n\n // Factories\n private readonly _contextFactory: DocumentContextFactory;\n\n constructor(\n // Config\n config: OpenAPIGeneratorConfig,\n\n // Dependencies\n strapi: Core.Strapi,\n routeCollector: RouteCollector,\n\n // Factories\n contextFactory: DocumentContextFactory\n ) {\n // Config\n this._assemblers = config.assemblers ?? [];\n this._preProcessors = config.preProcessors ?? [];\n this._postProcessors = config.postProcessors ?? [];\n\n // Dependencies\n this._strapi = strapi;\n this._routeCollector = routeCollector;\n\n // Factories\n this._contextFactory = contextFactory;\n }\n\n generate(_options?: GeneratorOptions): GeneratorOutput {\n debug('generating a new OpenAPI document with the following options: %O', _options);\n\n const context = this._initContext(this._strapi);\n\n this\n // Init timers\n ._bootstrap(context)\n // Run registered pre-processors\n ._preProcess(context)\n // Run registered section assemblers\n ._assemble(context)\n // Run registered post-processors\n ._postProcess(context)\n // Clean up and set necessary properties\n ._finalize(context);\n\n const { data, stats } = context.output;\n\n return { document: data as OpenAPIV3_1.Document, durationMs: stats.time.elapsedTime };\n }\n\n private _initContext(strapi: Core.Strapi): DocumentContext {\n debug('collecting registered routes...');\n const routes = this._routeCollector.collect();\n\n debug('creating the initial document generation context...');\n return this._contextFactory.create({ strapi, routes });\n }\n\n private _bootstrap(context: DocumentContext) {\n const { timer } = context;\n\n timer.reset();\n\n const startedAt = timer.start();\n\n debug('started generation: %o', new Date(startedAt).toISOString());\n\n return this;\n }\n\n private _finalize(context: DocumentContext) {\n const { timer, output } = context;\n\n output.stats.time = timer.stop();\n\n const { endTime, elapsedTime } = output.stats.time;\n\n debug('completed generation: %O (elapsed: %Oms)', new Date(endTime).toISOString(), elapsedTime);\n\n return this;\n }\n\n private _preProcess(context: DocumentContext) {\n for (const preProcessor of this._preProcessors) {\n debug('running pre-processor: %s...', preProcessor.constructor.name);\n\n preProcessor.preProcess(context);\n }\n\n return this;\n }\n\n private _assemble(context: DocumentContext) {\n for (const assembler of this._assemblers) {\n debug('running assembler: %s...', assembler.constructor.name);\n\n assembler.assemble(context);\n }\n\n return this;\n }\n\n private _postProcess(context: DocumentContext) {\n for (const postProcessor of this._postProcessors) {\n debug('running post-processor: %s...', postProcessor.constructor.name);\n\n postProcessor.postProcess(context);\n }\n\n return this;\n }\n}\n"],"names":["debug","createDebugger","OpenAPIGenerator","generate","_options","context","_initContext","_strapi","_bootstrap","_preProcess","_assemble","_postProcess","_finalize","data","stats","output","document","durationMs","time","elapsedTime","strapi","routes","_routeCollector","collect","_contextFactory","create","timer","reset","startedAt","start","Date","toISOString","stop","endTime","preProcessor","_preProcessors","constructor","name","preProcess","assembler","_assemblers","assemble","postProcessor","_postProcessors","postProcess","config","routeCollector","contextFactory","assemblers","preProcessors","postProcessors"],"mappings":";;;;AAcA,MAAMA,QAAQC,cAAe,CAAA,WAAA,CAAA;AAQtB,MAAMC,gBAAAA,CAAAA;AAwCXC,IAAAA,QAAAA,CAASC,QAA2B,EAAmB;AACrDJ,QAAAA,KAAAA,CAAM,kEAAoEI,EAAAA,QAAAA,CAAAA;AAE1E,QAAA,MAAMC,UAAU,IAAI,CAACC,YAAY,CAAC,IAAI,CAACC,OAAO,CAAA;AAE9C,QAAA,IAAI;SAEDC,UAAU,CAACH,QACZ;SACCI,WAAW,CAACJ,QACb;SACCK,SAAS,CAACL,QACX;SACCM,YAAY,CAACN,QACd;AACCO,SAAAA,SAAS,CAACP,OAAAA,CAAAA;AAEb,QAAA,MAAM,EAAEQ,IAAI,EAAEC,KAAK,EAAE,GAAGT,QAAQU,MAAM;QAEtC,OAAO;YAAEC,QAAUH,EAAAA,IAAAA;YAA8BI,UAAYH,EAAAA,KAAAA,CAAMI,IAAI,CAACC;AAAY,SAAA;AACtF;AAEQb,IAAAA,YAAAA,CAAac,MAAmB,EAAmB;QACzDpB,KAAM,CAAA,iCAAA,CAAA;AACN,QAAA,MAAMqB,MAAS,GAAA,IAAI,CAACC,eAAe,CAACC,OAAO,EAAA;QAE3CvB,KAAM,CAAA,qDAAA,CAAA;AACN,QAAA,OAAO,IAAI,CAACwB,eAAe,CAACC,MAAM,CAAC;AAAEL,YAAAA,MAAAA;AAAQC,YAAAA;AAAO,SAAA,CAAA;AACtD;AAEQb,IAAAA,UAAAA,CAAWH,OAAwB,EAAE;QAC3C,MAAM,EAAEqB,KAAK,EAAE,GAAGrB,OAAAA;AAElBqB,QAAAA,KAAAA,CAAMC,KAAK,EAAA;QAEX,MAAMC,SAAAA,GAAYF,MAAMG,KAAK,EAAA;AAE7B7B,QAAAA,KAAAA,CAAM,wBAA0B,EAAA,IAAI8B,IAAKF,CAAAA,SAAAA,CAAAA,CAAWG,WAAW,EAAA,CAAA;AAE/D,QAAA,OAAO,IAAI;AACb;AAEQnB,IAAAA,SAAAA,CAAUP,OAAwB,EAAE;AAC1C,QAAA,MAAM,EAAEqB,KAAK,EAAEX,MAAM,EAAE,GAAGV,OAAAA;AAE1BU,QAAAA,MAAAA,CAAOD,KAAK,CAACI,IAAI,GAAGQ,MAAMM,IAAI,EAAA;QAE9B,MAAM,EAAEC,OAAO,EAAEd,WAAW,EAAE,GAAGJ,MAAAA,CAAOD,KAAK,CAACI,IAAI;AAElDlB,QAAAA,KAAAA,CAAM,0CAA4C,EAAA,IAAI8B,IAAKG,CAAAA,OAAAA,CAAAA,CAASF,WAAW,EAAIZ,EAAAA,WAAAA,CAAAA;AAEnF,QAAA,OAAO,IAAI;AACb;AAEQV,IAAAA,WAAAA,CAAYJ,OAAwB,EAAE;AAC5C,QAAA,KAAK,MAAM6B,YAAAA,IAAgB,IAAI,CAACC,cAAc,CAAE;AAC9CnC,YAAAA,KAAAA,CAAM,8BAAgCkC,EAAAA,YAAAA,CAAaE,WAAW,CAACC,IAAI,CAAA;AAEnEH,YAAAA,YAAAA,CAAaI,UAAU,CAACjC,OAAAA,CAAAA;AAC1B;AAEA,QAAA,OAAO,IAAI;AACb;AAEQK,IAAAA,SAAAA,CAAUL,OAAwB,EAAE;AAC1C,QAAA,KAAK,MAAMkC,SAAAA,IAAa,IAAI,CAACC,WAAW,CAAE;AACxCxC,YAAAA,KAAAA,CAAM,0BAA4BuC,EAAAA,SAAAA,CAAUH,WAAW,CAACC,IAAI,CAAA;AAE5DE,YAAAA,SAAAA,CAAUE,QAAQ,CAACpC,OAAAA,CAAAA;AACrB;AAEA,QAAA,OAAO,IAAI;AACb;AAEQM,IAAAA,YAAAA,CAAaN,OAAwB,EAAE;AAC7C,QAAA,KAAK,MAAMqC,aAAAA,IAAiB,IAAI,CAACC,eAAe,CAAE;AAChD3C,YAAAA,KAAAA,CAAM,+BAAiC0C,EAAAA,aAAAA,CAAcN,WAAW,CAACC,IAAI,CAAA;AAErEK,YAAAA,aAAAA,CAAcE,WAAW,CAACvC,OAAAA,CAAAA;AAC5B;AAEA,QAAA,OAAO,IAAI;AACb;AA1GA+B,IAAAA,WAAAA;AAEES,IAAAA,MAA8B;IAG9BzB,MAAmB,EACnB0B,cAA8B;AAG9BC,IAAAA,cAAsC,CACtC;;AAEA,QAAA,IAAI,CAACP,WAAW,GAAGK,MAAOG,CAAAA,UAAU,IAAI,EAAE;AAC1C,QAAA,IAAI,CAACb,cAAc,GAAGU,MAAOI,CAAAA,aAAa,IAAI,EAAE;AAChD,QAAA,IAAI,CAACN,eAAe,GAAGE,MAAOK,CAAAA,cAAc,IAAI,EAAE;;QAGlD,IAAI,CAAC3C,OAAO,GAAGa,MAAAA;QACf,IAAI,CAACE,eAAe,GAAGwB,cAAAA;;QAGvB,IAAI,CAACtB,eAAe,GAAGuB,cAAAA;AACzB;AAqFF;;;;"}
1
+ {"version":3,"file":"generator.mjs","sources":["../../src/generator/generator.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport type { OpenAPIV3_1 } from 'openapi-types';\n\nimport type { Assembler } from '../assemblers';\nimport type { DocumentContextFactory } from '../context';\nimport type { PostProcessor } from '../post-processor';\nimport type { PreProcessor } from '../pre-processor';\nimport type { RouteCollector } from '../routes';\nimport type { DocumentContext } from '../types';\n\nimport type { GeneratorOptions, GeneratorOutput } from './types';\n\nimport { createDebugger } from '../utils';\n\nconst debug = createDebugger('generator');\n\nexport interface OpenAPIGeneratorConfig {\n preProcessors?: PreProcessor[];\n assemblers?: Assembler.Document[];\n postProcessors?: PostProcessor[];\n}\n\nexport class OpenAPIGenerator {\n // Config\n private readonly _assemblers: Assembler.Document[];\n\n private readonly _preProcessors: PreProcessor[];\n\n private readonly _postProcessors: PostProcessor[];\n\n // Dependencies\n private readonly _strapi: Core.Strapi;\n\n private readonly _routeCollector: RouteCollector;\n\n // Factories\n private readonly _contextFactory: DocumentContextFactory;\n\n constructor(\n // Config\n config: OpenAPIGeneratorConfig,\n\n // Dependencies\n strapi: Core.Strapi,\n routeCollector: RouteCollector,\n\n // Factories\n contextFactory: DocumentContextFactory\n ) {\n // Config\n this._assemblers = config.assemblers ?? [];\n this._preProcessors = config.preProcessors ?? [];\n this._postProcessors = config.postProcessors ?? [];\n\n // Dependencies\n this._strapi = strapi;\n this._routeCollector = routeCollector;\n\n // Factories\n this._contextFactory = contextFactory;\n }\n\n generate(_options?: GeneratorOptions): GeneratorOutput {\n debug('generating a new OpenAPI document with the following options: %O', _options);\n\n const context = this._initContext(this._strapi);\n\n this\n // Init timers\n ._bootstrap(context)\n // Run registered pre-processors\n ._preProcess(context)\n // Run registered section assemblers\n ._assemble(context)\n // Run registered post-processors\n ._postProcess(context)\n // Clean up and set necessary properties\n ._finalize(context);\n\n const { data, stats } = context.output;\n\n return { document: data as OpenAPIV3_1.Document, durationMs: stats.time.elapsedTime };\n }\n\n private _initContext(strapi: Core.Strapi): DocumentContext {\n debug('collecting registered routes...');\n const routes = this._routeCollector.collect();\n\n debug('creating the initial document generation context...');\n return this._contextFactory.create({ strapi, routes });\n }\n\n private _bootstrap(context: DocumentContext) {\n const { timer } = context;\n\n timer.reset();\n\n const startedAt = timer.start();\n\n debug('started generation: %o', new Date(startedAt).toISOString());\n\n return this;\n }\n\n private _finalize(context: DocumentContext) {\n const { timer, output } = context;\n\n output.stats.time = timer.stop();\n\n const { endTime, elapsedTime } = output.stats.time;\n\n debug('completed generation: %O (elapsed: %Oms)', new Date(endTime).toISOString(), elapsedTime);\n\n return this;\n }\n\n private _preProcess(context: DocumentContext) {\n for (const preProcessor of this._preProcessors) {\n debug('running pre-processor: %s...', preProcessor.constructor.name);\n\n preProcessor.preProcess(context);\n }\n\n return this;\n }\n\n private _assemble(context: DocumentContext) {\n for (const assembler of this._assemblers) {\n debug('running assembler: %s...', assembler.constructor.name);\n\n assembler.assemble(context);\n }\n\n return this;\n }\n\n private _postProcess(context: DocumentContext) {\n for (const postProcessor of this._postProcessors) {\n debug('running post-processor: %s...', postProcessor.constructor.name);\n\n postProcessor.postProcess(context);\n }\n\n return this;\n }\n}\n"],"names":["debug","createDebugger","OpenAPIGenerator","generate","_options","context","_initContext","_strapi","_bootstrap","_preProcess","_assemble","_postProcess","_finalize","data","stats","output","document","durationMs","time","elapsedTime","strapi","routes","_routeCollector","collect","_contextFactory","create","timer","reset","startedAt","start","Date","toISOString","stop","endTime","preProcessor","_preProcessors","name","preProcess","assembler","_assemblers","assemble","postProcessor","_postProcessors","postProcess","config","routeCollector","contextFactory","assemblers","preProcessors","postProcessors"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"collector.js","sources":["../../src/routes/collector.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { createDebugger } from '../utils';\nimport { RouteMatcher } from './matcher';\n\nimport type { RoutesProvider } from './providers';\n\nconst debug = createDebugger('routes:collector');\n\n/**\n * Class responsible for collecting and filtering routes from multiple providers.\n */\nexport class RouteCollector {\n private readonly _providers: RoutesProvider[];\n\n private readonly _matcher: RouteMatcher;\n\n /**\n * @param providers - An array of route providers to collect routes from. Defaults to an empty array.\n * @param matcher - An instance of RouteMatcher to filter routes. Defaults to a new {@link RouteMatcher} with no rules.\n */\n constructor(providers: RoutesProvider[] = [], matcher: RouteMatcher = new RouteMatcher()) {\n this._providers = providers;\n this._matcher = matcher;\n }\n\n /**\n * Collects routes from all providers and filters them based on the matcher rules.\n *\n * @returns An array of {@link Core.Route} that pass the filter rules.\n */\n public collect(): Core.Route[] {\n const routes = this._providers.flatMap((provider) => Array.from(provider));\n const sanitizedRoutes = this.filter(routes);\n\n debug(\n 'collected %o/%o routes from %o providers %o',\n sanitizedRoutes.length,\n routes.length,\n this._providers.length,\n this._providers.map((provider) => provider.constructor.name)\n );\n\n return sanitizedRoutes;\n }\n\n /**\n * Filters the given array of routes based on the matcher rules.\n *\n * @param routes - The list of routes to filter.\n * @returns An array of routes that match the rules.\n */\n private filter(routes: Core.Route[]): Core.Route[] {\n return routes.filter((route) => this._matcher.match(route));\n }\n}\n"],"names":["debug","createDebugger","RouteCollector","routes","_providers","flatMap","provider","Array","from","sanitizedRoutes","filter","length","map","constructor","name","route","_matcher","match","providers","matcher","RouteMatcher"],"mappings":";;;;;;;AAOA,MAAMA,QAAQC,sBAAe,CAAA,kBAAA,CAAA;AAE7B;;AAEC,IACM,MAAMC,cAAAA,CAAAA;AAcX;;;;AAIC,MACD,OAA+B,GAAA;QAC7B,MAAMC,MAAAA,GAAS,IAAI,CAACC,UAAU,CAACC,OAAO,CAAC,CAACC,QAAAA,GAAaC,KAAMC,CAAAA,IAAI,CAACF,QAAAA,CAAAA,CAAAA;AAChE,QAAA,MAAMG,eAAkB,GAAA,IAAI,CAACC,MAAM,CAACP,MAAAA,CAAAA;QAEpCH,KACE,CAAA,6CAAA,EACAS,eAAgBE,CAAAA,MAAM,EACtBR,MAAAA,CAAOQ,MAAM,EACb,IAAI,CAACP,UAAU,CAACO,MAAM,EACtB,IAAI,CAACP,UAAU,CAACQ,GAAG,CAAC,CAACN,QAAaA,GAAAA,QAAAA,CAASO,WAAW,CAACC,IAAI,CAAA,CAAA;QAG7D,OAAOL,eAAAA;AACT;AAEA;;;;;MAMQC,MAAOP,CAAAA,MAAoB,EAAgB;QACjD,OAAOA,MAAAA,CAAOO,MAAM,CAAC,CAACK,KAAAA,GAAU,IAAI,CAACC,QAAQ,CAACC,KAAK,CAACF,KAAAA,CAAAA,CAAAA;AACtD;AArCA;;;AAGC,MACDF,YAAYK,SAA8B,GAAA,EAAE,EAAEC,SAAwB,GAAA,IAAIC,sBAAc,CAAE;QACxF,IAAI,CAAChB,UAAU,GAAGc,SAAAA;QAClB,IAAI,CAACF,QAAQ,GAAGG,SAAAA;AAClB;AA+BF;;;;"}
1
+ {"version":3,"file":"collector.js","sources":["../../src/routes/collector.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { createDebugger } from '../utils';\nimport { RouteMatcher } from './matcher';\n\nimport type { RoutesProvider } from './providers';\n\nconst debug = createDebugger('routes:collector');\n\n/**\n * Class responsible for collecting and filtering routes from multiple providers.\n */\nexport class RouteCollector {\n private readonly _providers: RoutesProvider[];\n\n private readonly _matcher: RouteMatcher;\n\n /**\n * @param providers - An array of route providers to collect routes from. Defaults to an empty array.\n * @param matcher - An instance of RouteMatcher to filter routes. Defaults to a new {@link RouteMatcher} with no rules.\n */\n constructor(providers: RoutesProvider[] = [], matcher: RouteMatcher = new RouteMatcher()) {\n this._providers = providers;\n this._matcher = matcher;\n }\n\n /**\n * Collects routes from all providers and filters them based on the matcher rules.\n *\n * @returns An array of {@link Core.Route} that pass the filter rules.\n */\n public collect(): Core.Route[] {\n const routes = this._providers.flatMap((provider) => Array.from(provider));\n const sanitizedRoutes = this.filter(routes);\n\n debug(\n 'collected %o/%o routes from %o providers %o',\n sanitizedRoutes.length,\n routes.length,\n this._providers.length,\n this._providers.map((provider) => provider.constructor.name)\n );\n\n return sanitizedRoutes;\n }\n\n /**\n * Filters the given array of routes based on the matcher rules.\n *\n * @param routes - The list of routes to filter.\n * @returns An array of routes that match the rules.\n */\n private filter(routes: Core.Route[]): Core.Route[] {\n return routes.filter((route) => this._matcher.match(route));\n }\n}\n"],"names":["debug","createDebugger","RouteCollector","routes","_providers","flatMap","provider","Array","from","sanitizedRoutes","filter","length","map","name","route","_matcher","match","providers","matcher","RouteMatcher"],"mappings":";;;;;;;AAOA,MAAMA,QAAQC,sBAAe,CAAA,kBAAA,CAAA;AAE7B;;AAEC,IACM,MAAMC,cAAAA,CAAAA;AAcX;;;;AAIC,MACD,OAA+B,GAAA;QAC7B,MAAMC,MAAAA,GAAS,IAAI,CAACC,UAAU,CAACC,OAAO,CAAC,CAACC,QAAAA,GAAaC,KAAMC,CAAAA,IAAI,CAACF,QAAAA,CAAAA,CAAAA;AAChE,QAAA,MAAMG,eAAkB,GAAA,IAAI,CAACC,MAAM,CAACP,MAAAA,CAAAA;QAEpCH,KACE,CAAA,6CAAA,EACAS,eAAgBE,CAAAA,MAAM,EACtBR,MAAAA,CAAOQ,MAAM,EACb,IAAI,CAACP,UAAU,CAACO,MAAM,EACtB,IAAI,CAACP,UAAU,CAACQ,GAAG,CAAC,CAACN,QAAaA,GAAAA,QAAAA,CAAS,WAAW,CAACO,IAAI,CAAA,CAAA;QAG7D,OAAOJ,eAAAA;AACT;AAEA;;;;;MAMQC,MAAOP,CAAAA,MAAoB,EAAgB;QACjD,OAAOA,MAAAA,CAAOO,MAAM,CAAC,CAACI,KAAAA,GAAU,IAAI,CAACC,QAAQ,CAACC,KAAK,CAACF,KAAAA,CAAAA,CAAAA;AACtD;AArCA;;;AAGC,MACD,YAAYG,SAA8B,GAAA,EAAE,EAAEC,SAAwB,GAAA,IAAIC,sBAAc,CAAE;QACxF,IAAI,CAACf,UAAU,GAAGa,SAAAA;QAClB,IAAI,CAACF,QAAQ,GAAGG,SAAAA;AAClB;AA+BF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"collector.mjs","sources":["../../src/routes/collector.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { createDebugger } from '../utils';\nimport { RouteMatcher } from './matcher';\n\nimport type { RoutesProvider } from './providers';\n\nconst debug = createDebugger('routes:collector');\n\n/**\n * Class responsible for collecting and filtering routes from multiple providers.\n */\nexport class RouteCollector {\n private readonly _providers: RoutesProvider[];\n\n private readonly _matcher: RouteMatcher;\n\n /**\n * @param providers - An array of route providers to collect routes from. Defaults to an empty array.\n * @param matcher - An instance of RouteMatcher to filter routes. Defaults to a new {@link RouteMatcher} with no rules.\n */\n constructor(providers: RoutesProvider[] = [], matcher: RouteMatcher = new RouteMatcher()) {\n this._providers = providers;\n this._matcher = matcher;\n }\n\n /**\n * Collects routes from all providers and filters them based on the matcher rules.\n *\n * @returns An array of {@link Core.Route} that pass the filter rules.\n */\n public collect(): Core.Route[] {\n const routes = this._providers.flatMap((provider) => Array.from(provider));\n const sanitizedRoutes = this.filter(routes);\n\n debug(\n 'collected %o/%o routes from %o providers %o',\n sanitizedRoutes.length,\n routes.length,\n this._providers.length,\n this._providers.map((provider) => provider.constructor.name)\n );\n\n return sanitizedRoutes;\n }\n\n /**\n * Filters the given array of routes based on the matcher rules.\n *\n * @param routes - The list of routes to filter.\n * @returns An array of routes that match the rules.\n */\n private filter(routes: Core.Route[]): Core.Route[] {\n return routes.filter((route) => this._matcher.match(route));\n }\n}\n"],"names":["debug","createDebugger","RouteCollector","routes","_providers","flatMap","provider","Array","from","sanitizedRoutes","filter","length","map","constructor","name","route","_matcher","match","providers","matcher","RouteMatcher"],"mappings":";;;;;AAOA,MAAMA,QAAQC,cAAe,CAAA,kBAAA,CAAA;AAE7B;;AAEC,IACM,MAAMC,cAAAA,CAAAA;AAcX;;;;AAIC,MACD,OAA+B,GAAA;QAC7B,MAAMC,MAAAA,GAAS,IAAI,CAACC,UAAU,CAACC,OAAO,CAAC,CAACC,QAAAA,GAAaC,KAAMC,CAAAA,IAAI,CAACF,QAAAA,CAAAA,CAAAA;AAChE,QAAA,MAAMG,eAAkB,GAAA,IAAI,CAACC,MAAM,CAACP,MAAAA,CAAAA;QAEpCH,KACE,CAAA,6CAAA,EACAS,eAAgBE,CAAAA,MAAM,EACtBR,MAAAA,CAAOQ,MAAM,EACb,IAAI,CAACP,UAAU,CAACO,MAAM,EACtB,IAAI,CAACP,UAAU,CAACQ,GAAG,CAAC,CAACN,QAAaA,GAAAA,QAAAA,CAASO,WAAW,CAACC,IAAI,CAAA,CAAA;QAG7D,OAAOL,eAAAA;AACT;AAEA;;;;;MAMQC,MAAOP,CAAAA,MAAoB,EAAgB;QACjD,OAAOA,MAAAA,CAAOO,MAAM,CAAC,CAACK,KAAAA,GAAU,IAAI,CAACC,QAAQ,CAACC,KAAK,CAACF,KAAAA,CAAAA,CAAAA;AACtD;AArCA;;;AAGC,MACDF,YAAYK,SAA8B,GAAA,EAAE,EAAEC,OAAwB,GAAA,IAAIC,cAAc,CAAE;QACxF,IAAI,CAAChB,UAAU,GAAGc,SAAAA;QAClB,IAAI,CAACF,QAAQ,GAAGG,OAAAA;AAClB;AA+BF;;;;"}
1
+ {"version":3,"file":"collector.mjs","sources":["../../src/routes/collector.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { createDebugger } from '../utils';\nimport { RouteMatcher } from './matcher';\n\nimport type { RoutesProvider } from './providers';\n\nconst debug = createDebugger('routes:collector');\n\n/**\n * Class responsible for collecting and filtering routes from multiple providers.\n */\nexport class RouteCollector {\n private readonly _providers: RoutesProvider[];\n\n private readonly _matcher: RouteMatcher;\n\n /**\n * @param providers - An array of route providers to collect routes from. Defaults to an empty array.\n * @param matcher - An instance of RouteMatcher to filter routes. Defaults to a new {@link RouteMatcher} with no rules.\n */\n constructor(providers: RoutesProvider[] = [], matcher: RouteMatcher = new RouteMatcher()) {\n this._providers = providers;\n this._matcher = matcher;\n }\n\n /**\n * Collects routes from all providers and filters them based on the matcher rules.\n *\n * @returns An array of {@link Core.Route} that pass the filter rules.\n */\n public collect(): Core.Route[] {\n const routes = this._providers.flatMap((provider) => Array.from(provider));\n const sanitizedRoutes = this.filter(routes);\n\n debug(\n 'collected %o/%o routes from %o providers %o',\n sanitizedRoutes.length,\n routes.length,\n this._providers.length,\n this._providers.map((provider) => provider.constructor.name)\n );\n\n return sanitizedRoutes;\n }\n\n /**\n * Filters the given array of routes based on the matcher rules.\n *\n * @param routes - The list of routes to filter.\n * @returns An array of routes that match the rules.\n */\n private filter(routes: Core.Route[]): Core.Route[] {\n return routes.filter((route) => this._matcher.match(route));\n }\n}\n"],"names":["debug","createDebugger","RouteCollector","routes","_providers","flatMap","provider","Array","from","sanitizedRoutes","filter","length","map","name","route","_matcher","match","providers","matcher","RouteMatcher"],"mappings":";;;;;AAOA,MAAMA,QAAQC,cAAe,CAAA,kBAAA,CAAA;AAE7B;;AAEC,IACM,MAAMC,cAAAA,CAAAA;AAcX;;;;AAIC,MACD,OAA+B,GAAA;QAC7B,MAAMC,MAAAA,GAAS,IAAI,CAACC,UAAU,CAACC,OAAO,CAAC,CAACC,QAAAA,GAAaC,KAAMC,CAAAA,IAAI,CAACF,QAAAA,CAAAA,CAAAA;AAChE,QAAA,MAAMG,eAAkB,GAAA,IAAI,CAACC,MAAM,CAACP,MAAAA,CAAAA;QAEpCH,KACE,CAAA,6CAAA,EACAS,eAAgBE,CAAAA,MAAM,EACtBR,MAAAA,CAAOQ,MAAM,EACb,IAAI,CAACP,UAAU,CAACO,MAAM,EACtB,IAAI,CAACP,UAAU,CAACQ,GAAG,CAAC,CAACN,QAAaA,GAAAA,QAAAA,CAAS,WAAW,CAACO,IAAI,CAAA,CAAA;QAG7D,OAAOJ,eAAAA;AACT;AAEA;;;;;MAMQC,MAAOP,CAAAA,MAAoB,EAAgB;QACjD,OAAOA,MAAAA,CAAOO,MAAM,CAAC,CAACI,KAAAA,GAAU,IAAI,CAACC,QAAQ,CAACC,KAAK,CAACF,KAAAA,CAAAA,CAAAA;AACtD;AArCA;;;AAGC,MACD,YAAYG,SAA8B,GAAA,EAAE,EAAEC,OAAwB,GAAA,IAAIC,cAAc,CAAE;QACxF,IAAI,CAACf,UAAU,GAAGa,SAAAA;QAClB,IAAI,CAACF,QAAQ,GAAGG,OAAAA;AAClB;AA+BF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"matcher.js","sources":["../../src/routes/matcher.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport type { MatcherRule } from './types';\n\n/**\n * Class responsible for matching routes based on provided rules.\n */\nexport class RouteMatcher {\n /**\n * Array of rules to match routes against.\n */\n private readonly _rules: MatcherRule[];\n\n /**\n * @param rules - A list of matcher rules to apply. Defaults to an empty array.\n */\n constructor(rules: MatcherRule[] = []) {\n this._rules = rules;\n }\n\n /**\n * Checks if a given route matches all provided rules.\n *\n * Exits early if any rule fails.\n *\n * @param route - The route to check.\n * @returns `true` if the route satisfies all rules, otherwise `false`.\n */\n match(route: Core.Route): boolean {\n return this._rules.every((rule) => rule(route));\n }\n}\n"],"names":["RouteMatcher","match","route","_rules","every","rule","constructor","rules"],"mappings":";;AAIA;;AAEC,IACM,MAAMA,YAAAA,CAAAA;AAaX;;;;;;;MAQAC,KAAAA,CAAMC,KAAiB,EAAW;QAChC,OAAO,IAAI,CAACC,MAAM,CAACC,KAAK,CAAC,CAACC,OAASA,IAAKH,CAAAA,KAAAA,CAAAA,CAAAA;AAC1C;AAjBA;;MAGAI,WAAAA,CAAYC,KAAuB,GAAA,EAAE,CAAE;QACrC,IAAI,CAACJ,MAAM,GAAGI,KAAAA;AAChB;AAaF;;;;"}
1
+ {"version":3,"file":"matcher.js","sources":["../../src/routes/matcher.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport type { MatcherRule } from './types';\n\n/**\n * Class responsible for matching routes based on provided rules.\n */\nexport class RouteMatcher {\n /**\n * Array of rules to match routes against.\n */\n private readonly _rules: MatcherRule[];\n\n /**\n * @param rules - A list of matcher rules to apply. Defaults to an empty array.\n */\n constructor(rules: MatcherRule[] = []) {\n this._rules = rules;\n }\n\n /**\n * Checks if a given route matches all provided rules.\n *\n * Exits early if any rule fails.\n *\n * @param route - The route to check.\n * @returns `true` if the route satisfies all rules, otherwise `false`.\n */\n match(route: Core.Route): boolean {\n return this._rules.every((rule) => rule(route));\n }\n}\n"],"names":["RouteMatcher","match","route","_rules","every","rule","rules"],"mappings":";;AAIA;;AAEC,IACM,MAAMA,YAAAA,CAAAA;AAaX;;;;;;;MAQAC,KAAAA,CAAMC,KAAiB,EAAW;QAChC,OAAO,IAAI,CAACC,MAAM,CAACC,KAAK,CAAC,CAACC,OAASA,IAAKH,CAAAA,KAAAA,CAAAA,CAAAA;AAC1C;AAjBA;;MAGA,WAAA,CAAYI,KAAuB,GAAA,EAAE,CAAE;QACrC,IAAI,CAACH,MAAM,GAAGG,KAAAA;AAChB;AAaF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"matcher.mjs","sources":["../../src/routes/matcher.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport type { MatcherRule } from './types';\n\n/**\n * Class responsible for matching routes based on provided rules.\n */\nexport class RouteMatcher {\n /**\n * Array of rules to match routes against.\n */\n private readonly _rules: MatcherRule[];\n\n /**\n * @param rules - A list of matcher rules to apply. Defaults to an empty array.\n */\n constructor(rules: MatcherRule[] = []) {\n this._rules = rules;\n }\n\n /**\n * Checks if a given route matches all provided rules.\n *\n * Exits early if any rule fails.\n *\n * @param route - The route to check.\n * @returns `true` if the route satisfies all rules, otherwise `false`.\n */\n match(route: Core.Route): boolean {\n return this._rules.every((rule) => rule(route));\n }\n}\n"],"names":["RouteMatcher","match","route","_rules","every","rule","constructor","rules"],"mappings":"AAIA;;AAEC,IACM,MAAMA,YAAAA,CAAAA;AAaX;;;;;;;MAQAC,KAAAA,CAAMC,KAAiB,EAAW;QAChC,OAAO,IAAI,CAACC,MAAM,CAACC,KAAK,CAAC,CAACC,OAASA,IAAKH,CAAAA,KAAAA,CAAAA,CAAAA;AAC1C;AAjBA;;MAGAI,WAAAA,CAAYC,KAAuB,GAAA,EAAE,CAAE;QACrC,IAAI,CAACJ,MAAM,GAAGI,KAAAA;AAChB;AAaF;;;;"}
1
+ {"version":3,"file":"matcher.mjs","sources":["../../src/routes/matcher.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport type { MatcherRule } from './types';\n\n/**\n * Class responsible for matching routes based on provided rules.\n */\nexport class RouteMatcher {\n /**\n * Array of rules to match routes against.\n */\n private readonly _rules: MatcherRule[];\n\n /**\n * @param rules - A list of matcher rules to apply. Defaults to an empty array.\n */\n constructor(rules: MatcherRule[] = []) {\n this._rules = rules;\n }\n\n /**\n * Checks if a given route matches all provided rules.\n *\n * Exits early if any rule fails.\n *\n * @param route - The route to check.\n * @returns `true` if the route satisfies all rules, otherwise `false`.\n */\n match(route: Core.Route): boolean {\n return this._rules.every((rule) => rule(route));\n }\n}\n"],"names":["RouteMatcher","match","route","_rules","every","rule","rules"],"mappings":"AAIA;;AAEC,IACM,MAAMA,YAAAA,CAAAA;AAaX;;;;;;;MAQAC,KAAAA,CAAMC,KAAiB,EAAW;QAChC,OAAO,IAAI,CAACC,MAAM,CAACC,KAAK,CAAC,CAACC,OAASA,IAAKH,CAAAA,KAAAA,CAAAA,CAAAA;AAC1C;AAjBA;;MAGA,WAAA,CAAYI,KAAuB,GAAA,EAAE,CAAE;QACrC,IAAI,CAACH,MAAM,GAAGG,KAAAA;AAChB;AAaF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"debug.js","sources":["../../src/utils/debug.ts"],"sourcesContent":["import createDebug from 'debug';\n\nimport { DEBUG_NAMESPACE } from '../constants';\n\nexport const createDebugger = (\n section: string | null = null,\n namespace: string = DEBUG_NAMESPACE\n) => {\n return section !== null ? createDebug(`${namespace}:${section}`) : createDebug(namespace);\n};\n"],"names":["createDebugger","section","namespace","DEBUG_NAMESPACE","createDebug"],"mappings":";;;;;MAIaA,cAAiB,GAAA,CAC5BC,UAAyB,IAAI,EAC7BC,YAAoBC,yBAAe,GAAA;IAEnC,OAAOF,OAAAA,KAAY,IAAOG,GAAAA,WAAAA,CAAY,CAAC,EAAEF,SAAU,CAAA,CAAC,EAAED,OAAAA,CAAQ,CAAC,CAAA,GAAIG,WAAYF,CAAAA,SAAAA,CAAAA;AACjF;;;;"}
1
+ {"version":3,"file":"debug.js","sources":["../../src/utils/debug.ts"],"sourcesContent":["import createDebug from 'debug';\n\nimport { DEBUG_NAMESPACE } from '../constants';\n\nexport const createDebugger = (\n section: string | null = null,\n namespace: string = DEBUG_NAMESPACE\n) => {\n return section !== null ? createDebug(`${namespace}:${section}`) : createDebug(namespace);\n};\n"],"names":["createDebugger","section","namespace","DEBUG_NAMESPACE","createDebug"],"mappings":";;;;;MAIaA,cAAiB,GAAA,CAC5BC,UAAyB,IAAI,EAC7BC,YAAoBC,yBAAe,GAAA;IAEnC,OAAOF,OAAAA,KAAY,OAAOG,WAAY,CAAA,CAAA,EAAGF,UAAU,CAAC,EAAED,OAAS,CAAA,CAAA,CAAA,GAAIG,WAAYF,CAAAA,SAAAA,CAAAA;AACjF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"debug.mjs","sources":["../../src/utils/debug.ts"],"sourcesContent":["import createDebug from 'debug';\n\nimport { DEBUG_NAMESPACE } from '../constants';\n\nexport const createDebugger = (\n section: string | null = null,\n namespace: string = DEBUG_NAMESPACE\n) => {\n return section !== null ? createDebug(`${namespace}:${section}`) : createDebug(namespace);\n};\n"],"names":["createDebugger","section","namespace","DEBUG_NAMESPACE","createDebug"],"mappings":";;;MAIaA,cAAiB,GAAA,CAC5BC,UAAyB,IAAI,EAC7BC,YAAoBC,eAAe,GAAA;IAEnC,OAAOF,OAAAA,KAAY,IAAOG,GAAAA,WAAAA,CAAY,CAAC,EAAEF,SAAU,CAAA,CAAC,EAAED,OAAAA,CAAQ,CAAC,CAAA,GAAIG,WAAYF,CAAAA,SAAAA,CAAAA;AACjF;;;;"}
1
+ {"version":3,"file":"debug.mjs","sources":["../../src/utils/debug.ts"],"sourcesContent":["import createDebug from 'debug';\n\nimport { DEBUG_NAMESPACE } from '../constants';\n\nexport const createDebugger = (\n section: string | null = null,\n namespace: string = DEBUG_NAMESPACE\n) => {\n return section !== null ? createDebug(`${namespace}:${section}`) : createDebug(namespace);\n};\n"],"names":["createDebugger","section","namespace","DEBUG_NAMESPACE","createDebug"],"mappings":";;;MAIaA,cAAiB,GAAA,CAC5BC,UAAyB,IAAI,EAC7BC,YAAoBC,eAAe,GAAA;IAEnC,OAAOF,OAAAA,KAAY,OAAOG,WAAY,CAAA,CAAA,EAAGF,UAAU,CAAC,EAAED,OAAS,CAAA,CAAA,CAAA,GAAIG,WAAYF,CAAAA,SAAAA,CAAAA;AACjF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"timer.js","sources":["../../../src/utils/timer/timer.ts"],"sourcesContent":["export class Timer {\n private _startTime: number | null;\n\n private _endTime: number | null;\n\n private _elapsedTime: number | null;\n\n constructor() {\n this._startTime = null;\n this._endTime = null;\n this._elapsedTime = null;\n }\n\n start(): number {\n if (this._startTime !== null) {\n throw new Error(\n 'Timer is already started. Use `reset()` to reset the timer before starting it again.'\n );\n }\n\n this._startTime = Date.now();\n\n this._endTime = null;\n this._elapsedTime = null;\n\n return this._startTime;\n }\n\n stop() {\n if (this._startTime === null) {\n throw new Error('Timer is not started. Use `start()` to start the timer before stopping it.');\n }\n\n this._endTime = Date.now();\n this._elapsedTime = this._endTime - this._startTime;\n\n return { startTime: this._startTime, endTime: this._endTime, elapsedTime: this._elapsedTime };\n }\n\n reset(): void {\n this._startTime = null;\n this._endTime = null;\n this._elapsedTime = null;\n }\n}\n"],"names":["Timer","start","_startTime","Error","Date","now","_endTime","_elapsedTime","stop","startTime","endTime","elapsedTime","reset","constructor"],"mappings":";;AAAO,MAAMA,KAAAA,CAAAA;IAaXC,KAAgB,GAAA;AACd,QAAA,IAAI,IAAI,CAACC,UAAU,KAAK,IAAM,EAAA;AAC5B,YAAA,MAAM,IAAIC,KACR,CAAA,sFAAA,CAAA;AAEJ;AAEA,QAAA,IAAI,CAACD,UAAU,GAAGE,IAAAA,CAAKC,GAAG,EAAA;QAE1B,IAAI,CAACC,QAAQ,GAAG,IAAA;QAChB,IAAI,CAACC,YAAY,GAAG,IAAA;QAEpB,OAAO,IAAI,CAACL,UAAU;AACxB;IAEAM,IAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAACN,UAAU,KAAK,IAAM,EAAA;AAC5B,YAAA,MAAM,IAAIC,KAAM,CAAA,4EAAA,CAAA;AAClB;AAEA,QAAA,IAAI,CAACG,QAAQ,GAAGF,IAAAA,CAAKC,GAAG,EAAA;QACxB,IAAI,CAACE,YAAY,GAAG,IAAI,CAACD,QAAQ,GAAG,IAAI,CAACJ,UAAU;QAEnD,OAAO;YAAEO,SAAW,EAAA,IAAI,CAACP,UAAU;YAAEQ,OAAS,EAAA,IAAI,CAACJ,QAAQ;YAAEK,WAAa,EAAA,IAAI,CAACJ;AAAa,SAAA;AAC9F;IAEAK,KAAc,GAAA;QACZ,IAAI,CAACV,UAAU,GAAG,IAAA;QAClB,IAAI,CAACI,QAAQ,GAAG,IAAA;QAChB,IAAI,CAACC,YAAY,GAAG,IAAA;AACtB;IApCAM,WAAc,EAAA;QACZ,IAAI,CAACX,UAAU,GAAG,IAAA;QAClB,IAAI,CAACI,QAAQ,GAAG,IAAA;QAChB,IAAI,CAACC,YAAY,GAAG,IAAA;AACtB;AAiCF;;;;"}
1
+ {"version":3,"file":"timer.js","sources":["../../../src/utils/timer/timer.ts"],"sourcesContent":["export class Timer {\n private _startTime: number | null;\n\n private _endTime: number | null;\n\n private _elapsedTime: number | null;\n\n constructor() {\n this._startTime = null;\n this._endTime = null;\n this._elapsedTime = null;\n }\n\n start(): number {\n if (this._startTime !== null) {\n throw new Error(\n 'Timer is already started. Use `reset()` to reset the timer before starting it again.'\n );\n }\n\n this._startTime = Date.now();\n\n this._endTime = null;\n this._elapsedTime = null;\n\n return this._startTime;\n }\n\n stop() {\n if (this._startTime === null) {\n throw new Error('Timer is not started. Use `start()` to start the timer before stopping it.');\n }\n\n this._endTime = Date.now();\n this._elapsedTime = this._endTime - this._startTime;\n\n return { startTime: this._startTime, endTime: this._endTime, elapsedTime: this._elapsedTime };\n }\n\n reset(): void {\n this._startTime = null;\n this._endTime = null;\n this._elapsedTime = null;\n }\n}\n"],"names":["Timer","start","_startTime","Error","Date","now","_endTime","_elapsedTime","stop","startTime","endTime","elapsedTime","reset"],"mappings":";;AAAO,MAAMA,KAAAA,CAAAA;IAaXC,KAAgB,GAAA;AACd,QAAA,IAAI,IAAI,CAACC,UAAU,KAAK,IAAM,EAAA;AAC5B,YAAA,MAAM,IAAIC,KACR,CAAA,sFAAA,CAAA;AAEJ;AAEA,QAAA,IAAI,CAACD,UAAU,GAAGE,IAAAA,CAAKC,GAAG,EAAA;QAE1B,IAAI,CAACC,QAAQ,GAAG,IAAA;QAChB,IAAI,CAACC,YAAY,GAAG,IAAA;QAEpB,OAAO,IAAI,CAACL,UAAU;AACxB;IAEAM,IAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAACN,UAAU,KAAK,IAAM,EAAA;AAC5B,YAAA,MAAM,IAAIC,KAAM,CAAA,4EAAA,CAAA;AAClB;AAEA,QAAA,IAAI,CAACG,QAAQ,GAAGF,IAAAA,CAAKC,GAAG,EAAA;QACxB,IAAI,CAACE,YAAY,GAAG,IAAI,CAACD,QAAQ,GAAG,IAAI,CAACJ,UAAU;QAEnD,OAAO;YAAEO,SAAW,EAAA,IAAI,CAACP,UAAU;YAAEQ,OAAS,EAAA,IAAI,CAACJ,QAAQ;YAAEK,WAAa,EAAA,IAAI,CAACJ;AAAa,SAAA;AAC9F;IAEAK,KAAc,GAAA;QACZ,IAAI,CAACV,UAAU,GAAG,IAAA;QAClB,IAAI,CAACI,QAAQ,GAAG,IAAA;QAChB,IAAI,CAACC,YAAY,GAAG,IAAA;AACtB;IApCA,WAAc,EAAA;QACZ,IAAI,CAACL,UAAU,GAAG,IAAA;QAClB,IAAI,CAACI,QAAQ,GAAG,IAAA;QAChB,IAAI,CAACC,YAAY,GAAG,IAAA;AACtB;AAiCF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"timer.mjs","sources":["../../../src/utils/timer/timer.ts"],"sourcesContent":["export class Timer {\n private _startTime: number | null;\n\n private _endTime: number | null;\n\n private _elapsedTime: number | null;\n\n constructor() {\n this._startTime = null;\n this._endTime = null;\n this._elapsedTime = null;\n }\n\n start(): number {\n if (this._startTime !== null) {\n throw new Error(\n 'Timer is already started. Use `reset()` to reset the timer before starting it again.'\n );\n }\n\n this._startTime = Date.now();\n\n this._endTime = null;\n this._elapsedTime = null;\n\n return this._startTime;\n }\n\n stop() {\n if (this._startTime === null) {\n throw new Error('Timer is not started. Use `start()` to start the timer before stopping it.');\n }\n\n this._endTime = Date.now();\n this._elapsedTime = this._endTime - this._startTime;\n\n return { startTime: this._startTime, endTime: this._endTime, elapsedTime: this._elapsedTime };\n }\n\n reset(): void {\n this._startTime = null;\n this._endTime = null;\n this._elapsedTime = null;\n }\n}\n"],"names":["Timer","start","_startTime","Error","Date","now","_endTime","_elapsedTime","stop","startTime","endTime","elapsedTime","reset","constructor"],"mappings":"AAAO,MAAMA,KAAAA,CAAAA;IAaXC,KAAgB,GAAA;AACd,QAAA,IAAI,IAAI,CAACC,UAAU,KAAK,IAAM,EAAA;AAC5B,YAAA,MAAM,IAAIC,KACR,CAAA,sFAAA,CAAA;AAEJ;AAEA,QAAA,IAAI,CAACD,UAAU,GAAGE,IAAAA,CAAKC,GAAG,EAAA;QAE1B,IAAI,CAACC,QAAQ,GAAG,IAAA;QAChB,IAAI,CAACC,YAAY,GAAG,IAAA;QAEpB,OAAO,IAAI,CAACL,UAAU;AACxB;IAEAM,IAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAACN,UAAU,KAAK,IAAM,EAAA;AAC5B,YAAA,MAAM,IAAIC,KAAM,CAAA,4EAAA,CAAA;AAClB;AAEA,QAAA,IAAI,CAACG,QAAQ,GAAGF,IAAAA,CAAKC,GAAG,EAAA;QACxB,IAAI,CAACE,YAAY,GAAG,IAAI,CAACD,QAAQ,GAAG,IAAI,CAACJ,UAAU;QAEnD,OAAO;YAAEO,SAAW,EAAA,IAAI,CAACP,UAAU;YAAEQ,OAAS,EAAA,IAAI,CAACJ,QAAQ;YAAEK,WAAa,EAAA,IAAI,CAACJ;AAAa,SAAA;AAC9F;IAEAK,KAAc,GAAA;QACZ,IAAI,CAACV,UAAU,GAAG,IAAA;QAClB,IAAI,CAACI,QAAQ,GAAG,IAAA;QAChB,IAAI,CAACC,YAAY,GAAG,IAAA;AACtB;IApCAM,WAAc,EAAA;QACZ,IAAI,CAACX,UAAU,GAAG,IAAA;QAClB,IAAI,CAACI,QAAQ,GAAG,IAAA;QAChB,IAAI,CAACC,YAAY,GAAG,IAAA;AACtB;AAiCF;;;;"}
1
+ {"version":3,"file":"timer.mjs","sources":["../../../src/utils/timer/timer.ts"],"sourcesContent":["export class Timer {\n private _startTime: number | null;\n\n private _endTime: number | null;\n\n private _elapsedTime: number | null;\n\n constructor() {\n this._startTime = null;\n this._endTime = null;\n this._elapsedTime = null;\n }\n\n start(): number {\n if (this._startTime !== null) {\n throw new Error(\n 'Timer is already started. Use `reset()` to reset the timer before starting it again.'\n );\n }\n\n this._startTime = Date.now();\n\n this._endTime = null;\n this._elapsedTime = null;\n\n return this._startTime;\n }\n\n stop() {\n if (this._startTime === null) {\n throw new Error('Timer is not started. Use `start()` to start the timer before stopping it.');\n }\n\n this._endTime = Date.now();\n this._elapsedTime = this._endTime - this._startTime;\n\n return { startTime: this._startTime, endTime: this._endTime, elapsedTime: this._elapsedTime };\n }\n\n reset(): void {\n this._startTime = null;\n this._endTime = null;\n this._elapsedTime = null;\n }\n}\n"],"names":["Timer","start","_startTime","Error","Date","now","_endTime","_elapsedTime","stop","startTime","endTime","elapsedTime","reset"],"mappings":"AAAO,MAAMA,KAAAA,CAAAA;IAaXC,KAAgB,GAAA;AACd,QAAA,IAAI,IAAI,CAACC,UAAU,KAAK,IAAM,EAAA;AAC5B,YAAA,MAAM,IAAIC,KACR,CAAA,sFAAA,CAAA;AAEJ;AAEA,QAAA,IAAI,CAACD,UAAU,GAAGE,IAAAA,CAAKC,GAAG,EAAA;QAE1B,IAAI,CAACC,QAAQ,GAAG,IAAA;QAChB,IAAI,CAACC,YAAY,GAAG,IAAA;QAEpB,OAAO,IAAI,CAACL,UAAU;AACxB;IAEAM,IAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAACN,UAAU,KAAK,IAAM,EAAA;AAC5B,YAAA,MAAM,IAAIC,KAAM,CAAA,4EAAA,CAAA;AAClB;AAEA,QAAA,IAAI,CAACG,QAAQ,GAAGF,IAAAA,CAAKC,GAAG,EAAA;QACxB,IAAI,CAACE,YAAY,GAAG,IAAI,CAACD,QAAQ,GAAG,IAAI,CAACJ,UAAU;QAEnD,OAAO;YAAEO,SAAW,EAAA,IAAI,CAACP,UAAU;YAAEQ,OAAS,EAAA,IAAI,CAACJ,QAAQ;YAAEK,WAAa,EAAA,IAAI,CAACJ;AAAa,SAAA;AAC9F;IAEAK,KAAc,GAAA;QACZ,IAAI,CAACV,UAAU,GAAG,IAAA;QAClB,IAAI,CAACI,QAAQ,GAAG,IAAA;QAChB,IAAI,CAACC,YAAY,GAAG,IAAA;AACtB;IApCA,WAAc,EAAA;QACZ,IAAI,CAACL,UAAU,GAAG,IAAA;QAClB,IAAI,CAACI,QAAQ,GAAG,IAAA;QAChB,IAAI,CAACC,YAAY,GAAG,IAAA;AACtB;AAiCF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"zod.js","sources":["../../src/utils/zod.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport * as z from 'zod/v4';\n\nimport type { OpenAPIV3_1 } from 'openapi-types';\n\n/**\n * Converts a Zod schema to an OpenAPI Schema Object.\n *\n * @description\n * Takes a Zod schema and converts it into an OpenAPI Schema Object (v3.1).\n * It uses a local registry to handle the conversion process and generates the appropriate\n * OpenAPI components.\n *\n * @param zodSchema - The Zod schema to convert to OpenAPI format. Can be any valid Zod schema.\n *\n * @returns An OpenAPI Schema Object representing the input Zod schema structure.\n * If the conversion cannot be completed, returns undefined.\n *\n * @example\n * ```typescript\n * import * as z from 'zod/v4';\n *\n * // Create a Zod schema\n * const userSchema = z.object({\n * id: z.number(),\n * name: z.string(),\n * email: z.string().email()\n * });\n *\n * // Convert to OpenAPI schema\n * const openAPISchema = zodToOpenAPI(userSchema);\n * ```\n */\n\nexport const zodToOpenAPI = (\n zodSchema: z.ZodType\n): OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ReferenceObject => {\n try {\n const id = randomUUID();\n const registry = z.registry<{ id: string }>();\n\n // Add the schema to the local registry with a custom, unique ID\n registry.add(zodSchema, { id });\n\n // Copy the global registry definitions into the local registry to make sure references are resolved\n // This prevent \"__shared\" definitions from being created\n for (const [key, value] of z.globalRegistry._idmap) {\n registry.add(value, { id: key });\n }\n\n // Generate the schemas and only return the one we want, transform the URI path to be OpenAPI compliant\n const { schemas } = z.toJSONSchema(registry, { uri: toComponentsPath });\n\n // TODO: make sure it's compliant\n return schemas[id] as OpenAPIV3_1.SchemaObject;\n } catch (e) {\n throw new Error(\"Couldn't transform the zod schema into an OpenAPI schema\");\n }\n};\n\n/**\n * Generates a path string for referencing a component schema by its identifier.\n *\n * @param id - The identifier of the component schema.\n * @returns The constructed path string for the specified component schema.\n */\nexport const toComponentsPath = (id: string) => `#/components/schemas/${id}`;\n"],"names":["zodToOpenAPI","zodSchema","id","randomUUID","registry","z","add","key","value","globalRegistry","_idmap","schemas","toJSONSchema","uri","toComponentsPath","e","Error"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6BaA,MAAAA,YAAAA,GAAe,CAC1BC,SAAAA,GAAAA;IAEA,IAAI;AACF,QAAA,MAAMC,EAAKC,GAAAA,sBAAAA,EAAAA;QACX,MAAMC,QAAAA,GAAWC,aAAED,QAAQ,EAAA;;QAG3BA,QAASE,CAAAA,GAAG,CAACL,SAAW,EAAA;AAAEC,YAAAA;AAAG,SAAA,CAAA;;;QAI7B,KAAK,MAAM,CAACK,GAAKC,EAAAA,KAAAA,CAAM,IAAIH,YAAEI,CAAAA,cAAc,CAACC,MAAM,CAAE;YAClDN,QAASE,CAAAA,GAAG,CAACE,KAAO,EAAA;gBAAEN,EAAIK,EAAAA;AAAI,aAAA,CAAA;AAChC;;AAGA,QAAA,MAAM,EAAEI,OAAO,EAAE,GAAGN,YAAEO,CAAAA,YAAY,CAACR,QAAU,EAAA;YAAES,GAAKC,EAAAA;AAAiB,SAAA,CAAA;;QAGrE,OAAOH,OAAO,CAACT,EAAG,CAAA;AACpB,KAAA,CAAE,OAAOa,CAAG,EAAA;AACV,QAAA,MAAM,IAAIC,KAAM,CAAA,0DAAA,CAAA;AAClB;AACF;AAEA;;;;;IAMaF,MAAAA,gBAAAA,GAAmB,CAACZ,EAAAA,GAAe,CAAC,qBAAqB,EAAEA,EAAG,CAAA;;;;;"}
1
+ {"version":3,"file":"zod.js","sources":["../../src/utils/zod.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport * as z from 'zod/v4';\n\nimport type { OpenAPIV3_1 } from 'openapi-types';\n\n/**\n * Converts a Zod schema to an OpenAPI Schema Object.\n *\n * @description\n * Takes a Zod schema and converts it into an OpenAPI Schema Object (v3.1).\n * It uses a local registry to handle the conversion process and generates the appropriate\n * OpenAPI components.\n *\n * @param zodSchema - The Zod schema to convert to OpenAPI format. Can be any valid Zod schema.\n *\n * @returns An OpenAPI Schema Object representing the input Zod schema structure.\n * If the conversion cannot be completed, returns undefined.\n *\n * @example\n * ```typescript\n * import * as z from 'zod/v4';\n *\n * // Create a Zod schema\n * const userSchema = z.object({\n * id: z.number(),\n * name: z.string(),\n * email: z.string().email()\n * });\n *\n * // Convert to OpenAPI schema\n * const openAPISchema = zodToOpenAPI(userSchema);\n * ```\n */\n\nexport const zodToOpenAPI = (\n zodSchema: z.ZodType\n): OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ReferenceObject => {\n try {\n const id = randomUUID();\n const registry = z.registry<{ id: string }>();\n\n // Add the schema to the local registry with a custom, unique ID\n registry.add(zodSchema, { id });\n\n // Copy the global registry definitions into the local registry to make sure references are resolved\n // This prevent \"__shared\" definitions from being created\n for (const [key, value] of z.globalRegistry._idmap) {\n registry.add(value, { id: key });\n }\n\n // Generate the schemas and only return the one we want, transform the URI path to be OpenAPI compliant\n const { schemas } = z.toJSONSchema(registry, { uri: toComponentsPath });\n\n // TODO: make sure it's compliant\n return schemas[id] as OpenAPIV3_1.SchemaObject;\n } catch (e) {\n throw new Error(\"Couldn't transform the zod schema into an OpenAPI schema\");\n }\n};\n\n/**\n * Generates a path string for referencing a component schema by its identifier.\n *\n * @param id - The identifier of the component schema.\n * @returns The constructed path string for the specified component schema.\n */\nexport const toComponentsPath = (id: string) => `#/components/schemas/${id}`;\n"],"names":["zodToOpenAPI","zodSchema","id","randomUUID","registry","z","add","key","value","globalRegistry","_idmap","schemas","toJSONSchema","uri","toComponentsPath","e","Error"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6BaA,MAAAA,YAAAA,GAAe,CAC1BC,SAAAA,GAAAA;IAEA,IAAI;AACF,QAAA,MAAMC,EAAKC,GAAAA,sBAAAA,EAAAA;QACX,MAAMC,QAAAA,GAAWC,aAAED,QAAQ,EAAA;;QAG3BA,QAASE,CAAAA,GAAG,CAACL,SAAW,EAAA;AAAEC,YAAAA;AAAG,SAAA,CAAA;;;QAI7B,KAAK,MAAM,CAACK,GAAKC,EAAAA,KAAAA,CAAM,IAAIH,YAAEI,CAAAA,cAAc,CAACC,MAAM,CAAE;YAClDN,QAASE,CAAAA,GAAG,CAACE,KAAO,EAAA;gBAAEN,EAAIK,EAAAA;AAAI,aAAA,CAAA;AAChC;;AAGA,QAAA,MAAM,EAAEI,OAAO,EAAE,GAAGN,YAAEO,CAAAA,YAAY,CAACR,QAAU,EAAA;YAAES,GAAKC,EAAAA;AAAiB,SAAA,CAAA;;QAGrE,OAAOH,OAAO,CAACT,EAAG,CAAA;AACpB,KAAA,CAAE,OAAOa,CAAG,EAAA;AACV,QAAA,MAAM,IAAIC,KAAM,CAAA,0DAAA,CAAA;AAClB;AACF;AAEA;;;;;UAMaF,gBAAmB,GAAA,CAACZ,KAAe,CAAC,qBAAqB,EAAEA,EAAAA,CAAAA;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"zod.mjs","sources":["../../src/utils/zod.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport * as z from 'zod/v4';\n\nimport type { OpenAPIV3_1 } from 'openapi-types';\n\n/**\n * Converts a Zod schema to an OpenAPI Schema Object.\n *\n * @description\n * Takes a Zod schema and converts it into an OpenAPI Schema Object (v3.1).\n * It uses a local registry to handle the conversion process and generates the appropriate\n * OpenAPI components.\n *\n * @param zodSchema - The Zod schema to convert to OpenAPI format. Can be any valid Zod schema.\n *\n * @returns An OpenAPI Schema Object representing the input Zod schema structure.\n * If the conversion cannot be completed, returns undefined.\n *\n * @example\n * ```typescript\n * import * as z from 'zod/v4';\n *\n * // Create a Zod schema\n * const userSchema = z.object({\n * id: z.number(),\n * name: z.string(),\n * email: z.string().email()\n * });\n *\n * // Convert to OpenAPI schema\n * const openAPISchema = zodToOpenAPI(userSchema);\n * ```\n */\n\nexport const zodToOpenAPI = (\n zodSchema: z.ZodType\n): OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ReferenceObject => {\n try {\n const id = randomUUID();\n const registry = z.registry<{ id: string }>();\n\n // Add the schema to the local registry with a custom, unique ID\n registry.add(zodSchema, { id });\n\n // Copy the global registry definitions into the local registry to make sure references are resolved\n // This prevent \"__shared\" definitions from being created\n for (const [key, value] of z.globalRegistry._idmap) {\n registry.add(value, { id: key });\n }\n\n // Generate the schemas and only return the one we want, transform the URI path to be OpenAPI compliant\n const { schemas } = z.toJSONSchema(registry, { uri: toComponentsPath });\n\n // TODO: make sure it's compliant\n return schemas[id] as OpenAPIV3_1.SchemaObject;\n } catch (e) {\n throw new Error(\"Couldn't transform the zod schema into an OpenAPI schema\");\n }\n};\n\n/**\n * Generates a path string for referencing a component schema by its identifier.\n *\n * @param id - The identifier of the component schema.\n * @returns The constructed path string for the specified component schema.\n */\nexport const toComponentsPath = (id: string) => `#/components/schemas/${id}`;\n"],"names":["zodToOpenAPI","zodSchema","id","randomUUID","registry","z","add","key","value","globalRegistry","_idmap","schemas","toJSONSchema","uri","toComponentsPath","e","Error"],"mappings":";;;AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6BaA,MAAAA,YAAAA,GAAe,CAC1BC,SAAAA,GAAAA;IAEA,IAAI;AACF,QAAA,MAAMC,EAAKC,GAAAA,UAAAA,EAAAA;QACX,MAAMC,QAAAA,GAAWC,EAAED,QAAQ,EAAA;;QAG3BA,QAASE,CAAAA,GAAG,CAACL,SAAW,EAAA;AAAEC,YAAAA;AAAG,SAAA,CAAA;;;QAI7B,KAAK,MAAM,CAACK,GAAKC,EAAAA,KAAAA,CAAM,IAAIH,CAAEI,CAAAA,cAAc,CAACC,MAAM,CAAE;YAClDN,QAASE,CAAAA,GAAG,CAACE,KAAO,EAAA;gBAAEN,EAAIK,EAAAA;AAAI,aAAA,CAAA;AAChC;;AAGA,QAAA,MAAM,EAAEI,OAAO,EAAE,GAAGN,CAAEO,CAAAA,YAAY,CAACR,QAAU,EAAA;YAAES,GAAKC,EAAAA;AAAiB,SAAA,CAAA;;QAGrE,OAAOH,OAAO,CAACT,EAAG,CAAA;AACpB,KAAA,CAAE,OAAOa,CAAG,EAAA;AACV,QAAA,MAAM,IAAIC,KAAM,CAAA,0DAAA,CAAA;AAClB;AACF;AAEA;;;;;IAMaF,MAAAA,gBAAAA,GAAmB,CAACZ,EAAAA,GAAe,CAAC,qBAAqB,EAAEA,EAAG,CAAA;;;;"}
1
+ {"version":3,"file":"zod.mjs","sources":["../../src/utils/zod.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport * as z from 'zod/v4';\n\nimport type { OpenAPIV3_1 } from 'openapi-types';\n\n/**\n * Converts a Zod schema to an OpenAPI Schema Object.\n *\n * @description\n * Takes a Zod schema and converts it into an OpenAPI Schema Object (v3.1).\n * It uses a local registry to handle the conversion process and generates the appropriate\n * OpenAPI components.\n *\n * @param zodSchema - The Zod schema to convert to OpenAPI format. Can be any valid Zod schema.\n *\n * @returns An OpenAPI Schema Object representing the input Zod schema structure.\n * If the conversion cannot be completed, returns undefined.\n *\n * @example\n * ```typescript\n * import * as z from 'zod/v4';\n *\n * // Create a Zod schema\n * const userSchema = z.object({\n * id: z.number(),\n * name: z.string(),\n * email: z.string().email()\n * });\n *\n * // Convert to OpenAPI schema\n * const openAPISchema = zodToOpenAPI(userSchema);\n * ```\n */\n\nexport const zodToOpenAPI = (\n zodSchema: z.ZodType\n): OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ReferenceObject => {\n try {\n const id = randomUUID();\n const registry = z.registry<{ id: string }>();\n\n // Add the schema to the local registry with a custom, unique ID\n registry.add(zodSchema, { id });\n\n // Copy the global registry definitions into the local registry to make sure references are resolved\n // This prevent \"__shared\" definitions from being created\n for (const [key, value] of z.globalRegistry._idmap) {\n registry.add(value, { id: key });\n }\n\n // Generate the schemas and only return the one we want, transform the URI path to be OpenAPI compliant\n const { schemas } = z.toJSONSchema(registry, { uri: toComponentsPath });\n\n // TODO: make sure it's compliant\n return schemas[id] as OpenAPIV3_1.SchemaObject;\n } catch (e) {\n throw new Error(\"Couldn't transform the zod schema into an OpenAPI schema\");\n }\n};\n\n/**\n * Generates a path string for referencing a component schema by its identifier.\n *\n * @param id - The identifier of the component schema.\n * @returns The constructed path string for the specified component schema.\n */\nexport const toComponentsPath = (id: string) => `#/components/schemas/${id}`;\n"],"names":["zodToOpenAPI","zodSchema","id","randomUUID","registry","z","add","key","value","globalRegistry","_idmap","schemas","toJSONSchema","uri","toComponentsPath","e","Error"],"mappings":";;;AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6BaA,MAAAA,YAAAA,GAAe,CAC1BC,SAAAA,GAAAA;IAEA,IAAI;AACF,QAAA,MAAMC,EAAKC,GAAAA,UAAAA,EAAAA;QACX,MAAMC,QAAAA,GAAWC,EAAED,QAAQ,EAAA;;QAG3BA,QAASE,CAAAA,GAAG,CAACL,SAAW,EAAA;AAAEC,YAAAA;AAAG,SAAA,CAAA;;;QAI7B,KAAK,MAAM,CAACK,GAAKC,EAAAA,KAAAA,CAAM,IAAIH,CAAEI,CAAAA,cAAc,CAACC,MAAM,CAAE;YAClDN,QAASE,CAAAA,GAAG,CAACE,KAAO,EAAA;gBAAEN,EAAIK,EAAAA;AAAI,aAAA,CAAA;AAChC;;AAGA,QAAA,MAAM,EAAEI,OAAO,EAAE,GAAGN,CAAEO,CAAAA,YAAY,CAACR,QAAU,EAAA;YAAES,GAAKC,EAAAA;AAAiB,SAAA,CAAA;;QAGrE,OAAOH,OAAO,CAACT,EAAG,CAAA;AACpB,KAAA,CAAE,OAAOa,CAAG,EAAA;AACV,QAAA,MAAM,IAAIC,KAAM,CAAA,0DAAA,CAAA;AAClB;AACF;AAEA;;;;;UAMaF,gBAAmB,GAAA,CAACZ,KAAe,CAAC,qBAAqB,EAAEA,EAAAA,CAAAA;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/openapi",
3
- "version": "5.30.0",
3
+ "version": "5.31.0",
4
4
  "description": "A tool set to help generate and validate API documentation for Strapi projects",
5
5
  "homepage": "https://strapi.io",
6
6
  "bugs": {
@@ -52,7 +52,7 @@
52
52
  "test:unit:watch": "run -T jest --watch"
53
53
  },
54
54
  "engines": {
55
- "node": ">=18.0.0 <=22.x.x",
55
+ "node": ">=20.0.0 <=24.x.x",
56
56
  "npm": ">=6.0.0"
57
57
  },
58
58
  "dependencies": {
@@ -61,7 +61,7 @@
61
61
  "zod": "3.25.67"
62
62
  },
63
63
  "devDependencies": {
64
- "@strapi/types": "5.30.0",
64
+ "@strapi/types": "5.31.0",
65
65
  "@types/debug": "^4"
66
66
  }
67
67
  }