@keq-request/cli 5.0.0-alpha.21 → 5.0.0-alpha.23

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 (299) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/cli.cjs +2015 -1498
  3. package/dist/cli.cjs.map +1 -1
  4. package/dist/cli.js +2007 -1490
  5. package/dist/cli.js.map +1 -1
  6. package/dist/compiler/compiler.d.ts +8 -20
  7. package/dist/compiler/compiler.d.ts.map +1 -1
  8. package/dist/compiler/index.d.ts +2 -0
  9. package/dist/compiler/index.d.ts.map +1 -1
  10. package/dist/compiler/intercepter/index.d.ts +3 -0
  11. package/dist/compiler/intercepter/index.d.ts.map +1 -0
  12. package/dist/compiler/intercepter/print-information.d.ts +1 -1
  13. package/dist/compiler/intercepter/print-information.d.ts.map +1 -1
  14. package/dist/compiler/tasks/compile/index.d.ts +6 -0
  15. package/dist/compiler/tasks/compile/index.d.ts.map +1 -0
  16. package/dist/{tasks → compiler/tasks}/download/index.d.ts +3 -3
  17. package/dist/compiler/tasks/download/index.d.ts.map +1 -0
  18. package/dist/compiler/tasks/index.d.ts +6 -0
  19. package/dist/compiler/tasks/index.d.ts.map +1 -0
  20. package/dist/compiler/tasks/persist/index.d.ts +5 -0
  21. package/dist/compiler/tasks/persist/index.d.ts.map +1 -0
  22. package/dist/{tasks → compiler/tasks}/setup/index.d.ts +4 -5
  23. package/dist/compiler/tasks/setup/index.d.ts.map +1 -0
  24. package/dist/compiler/tasks/setup/utils/find-nearest-package-json.d.ts.map +1 -0
  25. package/dist/compiler/tasks/setup/utils/get-project-module-system.d.ts.map +1 -0
  26. package/dist/compiler/tasks/setup/utils/index.d.ts.map +1 -0
  27. package/dist/compiler/tasks/setup/utils/validate-modules.d.ts.map +1 -0
  28. package/dist/compiler/tasks/types/base-task-options.d.ts +6 -0
  29. package/dist/compiler/tasks/types/base-task-options.d.ts.map +1 -0
  30. package/dist/compiler/tasks/types/index.d.ts +3 -0
  31. package/dist/compiler/tasks/types/index.d.ts.map +1 -0
  32. package/dist/compiler/tasks/types/task-wrapper.d.ts +4 -0
  33. package/dist/compiler/tasks/types/task-wrapper.d.ts.map +1 -0
  34. package/dist/compiler/types/compiler-context.d.ts +11 -0
  35. package/dist/compiler/types/compiler-context.d.ts.map +1 -0
  36. package/dist/compiler/types/compiler-hooks.d.ts +18 -0
  37. package/dist/compiler/types/compiler-hooks.d.ts.map +1 -0
  38. package/dist/compiler/types/index.d.ts +3 -0
  39. package/dist/compiler/types/index.d.ts.map +1 -0
  40. package/dist/constants/index.d.ts +4 -0
  41. package/dist/constants/index.d.ts.map +1 -0
  42. package/dist/exception.d.ts +1 -1
  43. package/dist/exception.d.ts.map +1 -1
  44. package/dist/generators/index.d.ts +2 -0
  45. package/dist/generators/index.d.ts.map +1 -0
  46. package/dist/index.cjs +1882 -1353
  47. package/dist/index.cjs.map +1 -1
  48. package/dist/index.d.ts +4 -11
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +1876 -1347
  51. package/dist/index.js.map +1 -1
  52. package/dist/models/anchor.d.ts.map +1 -0
  53. package/dist/{tasks/utils → models}/api-document_v3_1.d.ts +1 -0
  54. package/dist/models/api-document_v3_1.d.ts.map +1 -0
  55. package/dist/models/artifact.d.ts +19 -0
  56. package/dist/models/artifact.d.ts.map +1 -0
  57. package/dist/models/asset.d.ts +5 -0
  58. package/dist/models/asset.d.ts.map +1 -0
  59. package/dist/{tasks/utils → models}/index.d.ts +2 -5
  60. package/dist/models/index.d.ts.map +1 -0
  61. package/dist/{tasks/utils → models}/module-definition.d.ts +1 -0
  62. package/dist/models/module-definition.d.ts.map +1 -0
  63. package/dist/{tasks/utils → models}/operation-definition.d.ts +1 -0
  64. package/dist/models/operation-definition.d.ts.map +1 -0
  65. package/dist/{tasks/utils → models}/schema-definition.d.ts +3 -2
  66. package/dist/models/schema-definition.d.ts.map +1 -0
  67. package/dist/models/utils/to-comment.d.ts.map +1 -0
  68. package/dist/plugins/body-fallback/index.d.ts.map +1 -1
  69. package/dist/plugins/chinese-to-pinyin/chinese-to-pinyin.plugin.d.ts +5 -0
  70. package/dist/plugins/chinese-to-pinyin/chinese-to-pinyin.plugin.d.ts.map +1 -0
  71. package/dist/plugins/chinese-to-pinyin/index.d.ts +2 -0
  72. package/dist/plugins/chinese-to-pinyin/index.d.ts.map +1 -0
  73. package/dist/plugins/download-http-file/download-http-file.plugin.d.ts +8 -0
  74. package/dist/plugins/download-http-file/download-http-file.plugin.d.ts.map +1 -0
  75. package/dist/plugins/download-http-file/index.d.ts +2 -0
  76. package/dist/plugins/download-http-file/index.d.ts.map +1 -0
  77. package/dist/plugins/download-local-file/download-local-file.plugin.d.ts +6 -0
  78. package/dist/plugins/download-local-file/download-local-file.plugin.d.ts.map +1 -0
  79. package/dist/plugins/download-local-file/index.d.ts +2 -0
  80. package/dist/plugins/download-local-file/index.d.ts.map +1 -0
  81. package/dist/plugins/generate-declaration/constants/index.d.ts +2 -0
  82. package/dist/plugins/generate-declaration/constants/index.d.ts.map +1 -0
  83. package/dist/plugins/generate-declaration/constants/metadata-storage.d.ts +12 -0
  84. package/dist/plugins/generate-declaration/constants/metadata-storage.d.ts.map +1 -0
  85. package/dist/plugins/generate-declaration/generate-declaration.plugin.d.ts +15 -0
  86. package/dist/plugins/generate-declaration/generate-declaration.plugin.d.ts.map +1 -0
  87. package/dist/plugins/generate-declaration/generators/index.d.ts +3 -0
  88. package/dist/plugins/generate-declaration/generators/index.d.ts.map +1 -0
  89. package/dist/plugins/generate-declaration/generators/operation-declaration/index.d.ts +2 -0
  90. package/dist/plugins/generate-declaration/generators/operation-declaration/index.d.ts.map +1 -0
  91. package/dist/plugins/generate-declaration/generators/operation-declaration/operation.generator.d.ts +15 -0
  92. package/dist/plugins/generate-declaration/generators/operation-declaration/operation.generator.d.ts.map +1 -0
  93. package/dist/plugins/generate-declaration/generators/schema-declaration/index.d.ts +2 -0
  94. package/dist/plugins/generate-declaration/generators/schema-declaration/index.d.ts.map +1 -0
  95. package/dist/plugins/generate-declaration/generators/schema-declaration/schema.generator.d.ts +15 -0
  96. package/dist/plugins/generate-declaration/generators/schema-declaration/schema.generator.d.ts.map +1 -0
  97. package/dist/plugins/generate-declaration/index.d.ts +3 -0
  98. package/dist/plugins/generate-declaration/index.d.ts.map +1 -0
  99. package/dist/plugins/generate-micro-function/constants/index.d.ts +2 -0
  100. package/dist/plugins/generate-micro-function/constants/index.d.ts.map +1 -0
  101. package/dist/plugins/generate-micro-function/constants/metadata-storage.d.ts +11 -0
  102. package/dist/plugins/generate-micro-function/constants/metadata-storage.d.ts.map +1 -0
  103. package/dist/plugins/generate-micro-function/generate-micro-function.plugin.d.ts +11 -0
  104. package/dist/plugins/generate-micro-function/generate-micro-function.plugin.d.ts.map +1 -0
  105. package/dist/plugins/generate-micro-function/generators/index.d.ts +3 -0
  106. package/dist/plugins/generate-micro-function/generators/index.d.ts.map +1 -0
  107. package/dist/plugins/generate-micro-function/generators/micro_function/index.d.ts +2 -0
  108. package/dist/plugins/generate-micro-function/generators/micro_function/index.d.ts.map +1 -0
  109. package/dist/plugins/generate-micro-function/generators/micro_function/micro-function.generator.d.ts +15 -0
  110. package/dist/plugins/generate-micro-function/generators/micro_function/micro-function.generator.d.ts.map +1 -0
  111. package/dist/plugins/generate-micro-function/generators/request/index.d.ts +2 -0
  112. package/dist/plugins/generate-micro-function/generators/request/index.d.ts.map +1 -0
  113. package/dist/plugins/generate-micro-function/generators/request/request.generator.d.ts +11 -0
  114. package/dist/plugins/generate-micro-function/generators/request/request.generator.d.ts.map +1 -0
  115. package/dist/plugins/generate-micro-function/index.d.ts +3 -0
  116. package/dist/plugins/generate-micro-function/index.d.ts.map +1 -0
  117. package/dist/plugins/generate-nestjs-module/constants/index.d.ts +2 -0
  118. package/dist/plugins/generate-nestjs-module/constants/index.d.ts.map +1 -0
  119. package/dist/plugins/generate-nestjs-module/constants/metadata-storage.d.ts +10 -0
  120. package/dist/plugins/generate-nestjs-module/constants/metadata-storage.d.ts.map +1 -0
  121. package/dist/plugins/generate-nestjs-module/generate-nestjs-module.d.ts +10 -0
  122. package/dist/plugins/generate-nestjs-module/generate-nestjs-module.d.ts.map +1 -0
  123. package/dist/plugins/generate-nestjs-module/generators/index.d.ts +2 -0
  124. package/dist/plugins/generate-nestjs-module/generators/index.d.ts.map +1 -0
  125. package/dist/plugins/generate-nestjs-module/generators/nestjs-module.generator.d.ts +14 -0
  126. package/dist/plugins/generate-nestjs-module/generators/nestjs-module.generator.d.ts.map +1 -0
  127. package/dist/plugins/generate-nestjs-module/index.d.ts +3 -0
  128. package/dist/plugins/generate-nestjs-module/index.d.ts.map +1 -0
  129. package/dist/plugins/index.d.ts +9 -0
  130. package/dist/plugins/index.d.ts.map +1 -1
  131. package/dist/plugins/initialize/index.d.ts +2 -0
  132. package/dist/plugins/initialize/index.d.ts.map +1 -0
  133. package/dist/plugins/initialize/initialize.plugin.d.ts +15 -0
  134. package/dist/plugins/initialize/initialize.plugin.d.ts.map +1 -0
  135. package/dist/plugins/shaking/index.d.ts +2 -0
  136. package/dist/plugins/shaking/index.d.ts.map +1 -0
  137. package/dist/plugins/shaking/shaking.plugin.d.ts +8 -0
  138. package/dist/plugins/shaking/shaking.plugin.d.ts.map +1 -0
  139. package/dist/plugins/terminal-select/index.d.ts +2 -0
  140. package/dist/plugins/terminal-select/index.d.ts.map +1 -0
  141. package/dist/plugins/terminal-select/terminal-select.plugin.d.ts +18 -0
  142. package/dist/plugins/terminal-select/terminal-select.plugin.d.ts.map +1 -0
  143. package/dist/plugins/terminal-select/types/ignore-mode.d.ts.map +1 -0
  144. package/dist/plugins/terminal-select/types/index.d.ts +2 -0
  145. package/dist/plugins/terminal-select/types/index.d.ts.map +1 -0
  146. package/dist/plugins/terminal-select/utils/index.d.ts +2 -0
  147. package/dist/plugins/terminal-select/utils/index.d.ts.map +1 -0
  148. package/dist/plugins/terminal-select/utils/select-operation-definitions.d.ts +5 -0
  149. package/dist/plugins/terminal-select/utils/select-operation-definitions.d.ts.map +1 -0
  150. package/dist/plugins.cjs +2225 -30
  151. package/dist/plugins.cjs.map +1 -1
  152. package/dist/plugins.js +2205 -29
  153. package/dist/plugins.js.map +1 -1
  154. package/dist/transformers/api-document/api-document.transformer.d.ts +8 -0
  155. package/dist/transformers/api-document/api-document.transformer.d.ts.map +1 -0
  156. package/dist/transformers/api-document/index.d.ts +2 -0
  157. package/dist/transformers/api-document/index.d.ts.map +1 -0
  158. package/dist/transformers/api-document/nestjs-client.renderer.d.ts +17 -0
  159. package/dist/transformers/api-document/nestjs-client.renderer.d.ts.map +1 -0
  160. package/dist/transformers/api-document/nestjs-module.renderer.d.ts +12 -0
  161. package/dist/transformers/api-document/nestjs-module.renderer.d.ts.map +1 -0
  162. package/dist/transformers/entrypoint/entrypoint.transformer.d.ts +10 -0
  163. package/dist/transformers/entrypoint/entrypoint.transformer.d.ts.map +1 -0
  164. package/dist/transformers/entrypoint/index.d.ts +2 -0
  165. package/dist/transformers/entrypoint/index.d.ts.map +1 -0
  166. package/dist/transformers/index.d.ts +6 -0
  167. package/dist/transformers/index.d.ts.map +1 -0
  168. package/dist/transformers/json-schema/comment.renderer.d.ts +8 -0
  169. package/dist/transformers/json-schema/comment.renderer.d.ts.map +1 -0
  170. package/dist/transformers/json-schema/declaration.renderer.d.ts +26 -0
  171. package/dist/transformers/json-schema/declaration.renderer.d.ts.map +1 -0
  172. package/dist/transformers/json-schema/index.d.ts +4 -0
  173. package/dist/transformers/json-schema/index.d.ts.map +1 -0
  174. package/dist/transformers/json-schema/json-schema.transformer.d.ts +7 -0
  175. package/dist/transformers/json-schema/json-schema.transformer.d.ts.map +1 -0
  176. package/dist/transformers/json-schema/reference.transformer.d.ts +5 -0
  177. package/dist/transformers/json-schema/reference.transformer.d.ts.map +1 -0
  178. package/dist/transformers/json-schema/types/any-other-attribute.d.ts.map +1 -0
  179. package/dist/transformers/json-schema/types/index.d.ts +3 -0
  180. package/dist/transformers/json-schema/types/index.d.ts.map +1 -0
  181. package/dist/transformers/json-schema/types/mixed-schema-object.d.ts.map +1 -0
  182. package/dist/transformers/operation-definition/comment.renderer.d.ts +8 -0
  183. package/dist/transformers/operation-definition/comment.renderer.d.ts.map +1 -0
  184. package/dist/transformers/operation-definition/declaration.renderer.d.ts +20 -0
  185. package/dist/transformers/operation-definition/declaration.renderer.d.ts.map +1 -0
  186. package/dist/transformers/operation-definition/index.d.ts +3 -0
  187. package/dist/transformers/operation-definition/index.d.ts.map +1 -0
  188. package/dist/transformers/operation-definition/micro-function.renderer.d.ts +19 -0
  189. package/dist/transformers/operation-definition/micro-function.renderer.d.ts.map +1 -0
  190. package/dist/transformers/operation-definition/nestjs-method.renderer.d.ts +15 -0
  191. package/dist/transformers/operation-definition/nestjs-method.renderer.d.ts.map +1 -0
  192. package/dist/transformers/operation-definition/operation-definition.transformer.d.ts +11 -0
  193. package/dist/transformers/operation-definition/operation-definition.transformer.d.ts.map +1 -0
  194. package/dist/transformers/operation-definition/typescript-helper.d.ts +25 -0
  195. package/dist/transformers/operation-definition/typescript-helper.d.ts.map +1 -0
  196. package/dist/transformers/operation-definition/utils/index.d.ts +2 -0
  197. package/dist/transformers/operation-definition/utils/index.d.ts.map +1 -0
  198. package/dist/transformers/operation-definition/utils/type-name-factory.d.ts +4 -0
  199. package/dist/transformers/operation-definition/utils/type-name-factory.d.ts.map +1 -0
  200. package/dist/transformers/schema-definition/index.d.ts +2 -0
  201. package/dist/transformers/schema-definition/index.d.ts.map +1 -0
  202. package/dist/transformers/schema-definition/schema-definition.transformer.d.ts +10 -0
  203. package/dist/transformers/schema-definition/schema-definition.transformer.d.ts.map +1 -0
  204. package/dist/transformers/types/renderer.d.ts +4 -0
  205. package/dist/transformers/types/renderer.d.ts.map +1 -0
  206. package/dist/types/generator.d.ts +7 -0
  207. package/dist/types/generator.d.ts.map +1 -0
  208. package/dist/types/index.d.ts +1 -0
  209. package/dist/types/index.d.ts.map +1 -1
  210. package/dist/types/operation-id-factory.d.ts +1 -1
  211. package/dist/types/operation-id-factory.d.ts.map +1 -1
  212. package/dist/types/runtime-config.d.ts +1 -0
  213. package/dist/types/runtime-config.d.ts.map +1 -1
  214. package/dist/utils/ignore-matcher.d.ts +1 -2
  215. package/dist/utils/ignore-matcher.d.ts.map +1 -1
  216. package/dist/utils/indent.d.ts +2 -0
  217. package/dist/utils/indent.d.ts.map +1 -0
  218. package/dist/utils/openapi-utils/index.d.ts +2 -0
  219. package/dist/utils/openapi-utils/index.d.ts.map +1 -1
  220. package/dist/utils/openapi-utils/to-3_1.d.ts +3 -0
  221. package/dist/utils/openapi-utils/to-3_1.d.ts.map +1 -0
  222. package/package.json +3 -3
  223. package/dist/renderer/json-schema/index.d.ts +0 -3
  224. package/dist/renderer/json-schema/index.d.ts.map +0 -1
  225. package/dist/renderer/operation-request/error-to-comment.d.ts +0 -2
  226. package/dist/renderer/operation-request/error-to-comment.d.ts.map +0 -1
  227. package/dist/renderer/operation-request/index.d.ts +0 -8
  228. package/dist/renderer/operation-request/index.d.ts.map +0 -1
  229. package/dist/renderer/operation-request/request-body.d.ts +0 -4
  230. package/dist/renderer/operation-request/request-body.d.ts.map +0 -1
  231. package/dist/renderer/operation-type/index.d.ts +0 -6
  232. package/dist/renderer/operation-type/index.d.ts.map +0 -1
  233. package/dist/renderer/request/index.d.ts +0 -2
  234. package/dist/renderer/request/index.d.ts.map +0 -1
  235. package/dist/renderer/types/any-other-attribute.d.ts.map +0 -1
  236. package/dist/renderer/types/mixed-schema-object.d.ts.map +0 -1
  237. package/dist/renderer/utils/generate-schema.d.ts +0 -6
  238. package/dist/renderer/utils/generate-schema.d.ts.map +0 -1
  239. package/dist/tasks/compile/index.d.ts +0 -6
  240. package/dist/tasks/compile/index.d.ts.map +0 -1
  241. package/dist/tasks/compile/utils/compile-operation-definition.d.ts +0 -15
  242. package/dist/tasks/compile/utils/compile-operation-definition.d.ts.map +0 -1
  243. package/dist/tasks/compile/utils/compile-schema-definition.d.ts +0 -13
  244. package/dist/tasks/compile/utils/compile-schema-definition.d.ts.map +0 -1
  245. package/dist/tasks/download/index.d.ts.map +0 -1
  246. package/dist/tasks/index.d.ts +0 -10
  247. package/dist/tasks/index.d.ts.map +0 -1
  248. package/dist/tasks/interactive/index.d.ts +0 -15
  249. package/dist/tasks/interactive/index.d.ts.map +0 -1
  250. package/dist/tasks/interactive/utils/select-operation-definitions.d.ts +0 -5
  251. package/dist/tasks/interactive/utils/select-operation-definitions.d.ts.map +0 -1
  252. package/dist/tasks/persist/index.d.ts +0 -6
  253. package/dist/tasks/persist/index.d.ts.map +0 -1
  254. package/dist/tasks/setup/index.d.ts.map +0 -1
  255. package/dist/tasks/setup/utils/find-nearest-package-json.d.ts.map +0 -1
  256. package/dist/tasks/setup/utils/get-project-module-system.d.ts.map +0 -1
  257. package/dist/tasks/setup/utils/index.d.ts.map +0 -1
  258. package/dist/tasks/setup/utils/validate-modules.d.ts.map +0 -1
  259. package/dist/tasks/shaking/index.d.ts +0 -10
  260. package/dist/tasks/shaking/index.d.ts.map +0 -1
  261. package/dist/tasks/types/base-task-options.d.ts +0 -6
  262. package/dist/tasks/types/base-task-options.d.ts.map +0 -1
  263. package/dist/tasks/types/file.d.ts +0 -4
  264. package/dist/tasks/types/file.d.ts.map +0 -1
  265. package/dist/tasks/types/ignore-mode.d.ts.map +0 -1
  266. package/dist/tasks/types/index.d.ts +0 -6
  267. package/dist/tasks/types/index.d.ts.map +0 -1
  268. package/dist/tasks/types/task-context.d.ts +0 -28
  269. package/dist/tasks/types/task-context.d.ts.map +0 -1
  270. package/dist/tasks/types/task-wrapper.d.ts +0 -4
  271. package/dist/tasks/types/task-wrapper.d.ts.map +0 -1
  272. package/dist/tasks/utils/anchor.d.ts.map +0 -1
  273. package/dist/tasks/utils/api-document.d.ts +0 -18
  274. package/dist/tasks/utils/api-document.d.ts.map +0 -1
  275. package/dist/tasks/utils/api-document_v3_1.d.ts.map +0 -1
  276. package/dist/tasks/utils/artifact.d.ts +0 -27
  277. package/dist/tasks/utils/artifact.d.ts.map +0 -1
  278. package/dist/tasks/utils/dependency.d.ts +0 -24
  279. package/dist/tasks/utils/dependency.d.ts.map +0 -1
  280. package/dist/tasks/utils/index.d.ts.map +0 -1
  281. package/dist/tasks/utils/json-schema.d.ts +0 -8
  282. package/dist/tasks/utils/json-schema.d.ts.map +0 -1
  283. package/dist/tasks/utils/module-definition.d.ts.map +0 -1
  284. package/dist/tasks/utils/operation-definition.d.ts.map +0 -1
  285. package/dist/tasks/utils/proxy-task-wrapper.d.ts +0 -3
  286. package/dist/tasks/utils/proxy-task-wrapper.d.ts.map +0 -1
  287. package/dist/tasks/utils/schema-definition.d.ts.map +0 -1
  288. package/dist/tasks/utils/to-comment.d.ts.map +0 -1
  289. package/dist/tasks/validate/index.d.ts +0 -6
  290. package/dist/tasks/validate/index.d.ts.map +0 -1
  291. /package/dist/{tasks → compiler/tasks}/setup/utils/find-nearest-package-json.d.ts +0 -0
  292. /package/dist/{tasks → compiler/tasks}/setup/utils/get-project-module-system.d.ts +0 -0
  293. /package/dist/{tasks → compiler/tasks}/setup/utils/index.d.ts +0 -0
  294. /package/dist/{tasks → compiler/tasks}/setup/utils/validate-modules.d.ts +0 -0
  295. /package/dist/{tasks/utils → models}/anchor.d.ts +0 -0
  296. /package/dist/{tasks → models}/utils/to-comment.d.ts +0 -0
  297. /package/dist/{tasks → plugins/terminal-select}/types/ignore-mode.d.ts +0 -0
  298. /package/dist/{renderer → transformers/json-schema}/types/any-other-attribute.d.ts +0 -0
  299. /package/dist/{renderer → transformers/json-schema}/types/mixed-schema-object.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugins/index.ts","../src/plugins/eslint/index.ts","../src/plugins/prettier/index.ts","../src/plugins/body-fallback/index.ts","../src/utils/json-schema-utils/is-array.ts","../src/utils/json-schema-utils/is-mixed.ts","../src/utils/json-schema-utils/is-non-array.ts","../src/utils/json-schema-utils/is-ref.ts","../src/utils/json-schema-utils/index.ts"],"sourcesContent":["export * from './eslint/index.js'\nexport * from './prettier/index.js'\nexport * from './body-fallback/index.js'\n","import { Compiler } from '~/compiler/compiler.js'\nimport { Plugin } from '~/types/plugin.js'\nimport { ESLint } from 'eslint'\n\n\ninterface EslintPluginOptions {\n /**\n * List of ESLint rules to disable\n */\n disable?: string[]\n}\n\nexport class EslintPlugin implements Plugin {\n constructor(private options: EslintPluginOptions = {}) {}\n\n\n apply(compiler: Compiler): void {\n if (!compiler.options.build) return\n\n if (this.options.disable && this.options.disable.length > 0) {\n const $rules = [\n ...this.options.disable.map((rule) => `/* eslint-disable ${rule} */`),\n ].join('\\n')\n\n compiler.hooks.afterCompile.tap(EslintPlugin.name, () => {\n const artifacts = compiler.context.compiled?.artifacts || []\n\n for (const artifact of artifacts) {\n artifact.anchor.append('file:start', $rules)\n }\n })\n }\n\n compiler.hooks.afterPersist.tapPromise(EslintPlugin.name, async (task) => {\n const files = compiler.context.persisted?.files || []\n if (files.length === 0) return\n\n const eslint = new ESLint({ fix: true })\n const results = await eslint.lintFiles(files.map((file) => file.path))\n await ESLint.outputFixes(results)\n })\n }\n}\n","import { Compiler } from '~/compiler/compiler.js'\nimport { Plugin } from '~/types/plugin.js'\nimport { exec } from 'child_process'\nimport { promisify } from 'util'\n\nconst execAsync = promisify(exec)\n\n\nexport class PrettierPlugin implements Plugin {\n apply(compiler: Compiler): void {\n if (!compiler.options.build) return\n\n compiler.hooks.afterPersist.tapPromise(PrettierPlugin.name, async () => {\n const files = compiler.context.persisted?.files || []\n if (files.length === 0) return\n\n const filePaths = files.map((file) => file.path).join(' ')\n await execAsync(`prettier --write ${filePaths}`)\n })\n }\n}\n","import * as R from 'ramda'\nimport { Compiler } from '~/compiler/compiler.js'\nimport { Artifact } from '~/tasks/utils/artifact.js'\nimport { OperationDefinition } from '~/tasks/utils/operation-definition.js'\nimport { Plugin } from '~/types/plugin.js'\nimport { JsonSchemaUtils } from '~/utils/json-schema-utils/index.js'\nimport { OpenAPIV3_1 } from '@scalar/openapi-types'\n\n\nexport class BodyFallbackPlugin implements Plugin {\n apply(compiler: Compiler): void {\n compiler.hooks.afterCompileOperationRequest.tap(BodyFallbackPlugin.name, (artifact: Artifact, operationDefinition: OperationDefinition) => {\n const operation = operationDefinition.operation\n\n const parameters = operation.parameters?.filter((p): p is OpenAPIV3_1.ParameterObject => !JsonSchemaUtils.isRef(p)) || []\n const keys = parameters.map((p) => p.name).filter(R.isNotNil)\n\n const $acc = !keys.length\n ? ' acc[key] = args[key]'\n : [\n ` if (![${keys.map((k) => JSON.stringify(k)).join(', ')}].includes(key)) {`,\n ' acc[key] = args[key]',\n ' }',\n ].join('\\n')\n\n artifact.anchor.block.replace('body', [\n // $mediaType ? `${$mediaType}\\n` : undefined,\n ' if (typeof args === \"object\" && args !== null && !Array.isArray(args)) {',\n ' const requestBody = Object.keys(args)',\n ' .reduce((acc, key) => {',\n $acc,\n ' return acc',\n ' }, {} as Record<string, unknown>)',\n '',\n ' if (Object.keys(requestBody).length > 0) {',\n ' req.send(requestBody)',\n ' }',\n ' }',\n ].filter(R.isNotNil).join('\\n'))\n\n return artifact\n })\n }\n}\n","import type { OpenAPIV3_1 } from '@scalar/openapi-types'\n\nexport function isArray(schema: OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ReferenceObject): schema is OpenAPIV3_1.ArraySchemaObject {\n return schema.type === 'array'\n}\n","\nimport type { OpenAPIV3_1 } from '@scalar/openapi-types'\nimport { MixedSchemaObject } from './types/mixed-schema-object.js'\n\nexport function isMixed(schema: OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ReferenceObject): schema is MixedSchemaObject {\n return Array.isArray(schema.type)\n}\n","import type { OpenAPIV3_1 } from '@scalar/openapi-types'\n\nexport function isNonArray(schema: OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ReferenceObject): schema is OpenAPIV3_1.NonArraySchemaObject {\n return typeof schema.type === 'string' && schema.type !== 'array'\n}\n","import type { OpenAPIV3_1 } from '@scalar/openapi-types'\n\n\nexport function isRef(schema: OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ReferenceObject | OpenAPIV3_1.ResponseObject | OpenAPIV3_1.ParameterObject): schema is OpenAPIV3_1.ReferenceObject {\n return '$ref' in schema\n}\n","import { isArray } from './is-array.js'\nimport { isMixed } from './is-mixed.js'\nimport { isNonArray } from './is-non-array.js'\nimport { isRef } from './is-ref.js'\n\n\nexport class JsonSchemaUtils {\n static isRef = isRef\n static isArray = isArray\n static isNonArray = isNonArray\n static isMixed = isMixed\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEA,oBAAuB;AAUhB,IAAM,eAAN,MAAM,cAA+B;AAAA,EAC1C,YAAoB,UAA+B,CAAC,GAAG;AAAnC;AAAA,EAAoC;AAAA,EAGxD,MAAM,UAA0B;AAC9B,QAAI,CAAC,SAAS,QAAQ,MAAO;AAE7B,QAAI,KAAK,QAAQ,WAAW,KAAK,QAAQ,QAAQ,SAAS,GAAG;AAC3D,YAAM,SAAS;AAAA,QACb,GAAG,KAAK,QAAQ,QAAQ,IAAI,CAAC,SAAS,qBAAqB,IAAI,KAAK;AAAA,MACtE,EAAE,KAAK,IAAI;AAEX,eAAS,MAAM,aAAa,IAAI,cAAa,MAAM,MAAM;AACvD,cAAM,YAAY,SAAS,QAAQ,UAAU,aAAa,CAAC;AAE3D,mBAAW,YAAY,WAAW;AAChC,mBAAS,OAAO,OAAO,cAAc,MAAM;AAAA,QAC7C;AAAA,MACF,CAAC;AAAA,IACH;AAEA,aAAS,MAAM,aAAa,WAAW,cAAa,MAAM,OAAO,SAAS;AACxE,YAAM,QAAQ,SAAS,QAAQ,WAAW,SAAS,CAAC;AACpD,UAAI,MAAM,WAAW,EAAG;AAExB,YAAM,SAAS,IAAI,qBAAO,EAAE,KAAK,KAAK,CAAC;AACvC,YAAM,UAAU,MAAM,OAAO,UAAU,MAAM,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC;AACrE,YAAM,qBAAO,YAAY,OAAO;AAAA,IAClC,CAAC;AAAA,EACH;AACF;;;ACxCA,2BAAqB;AACrB,kBAA0B;AAE1B,IAAM,gBAAY,uBAAU,yBAAI;AAGzB,IAAM,iBAAN,MAAM,gBAAiC;AAAA,EAC5C,MAAM,UAA0B;AAC9B,QAAI,CAAC,SAAS,QAAQ,MAAO;AAE7B,aAAS,MAAM,aAAa,WAAW,gBAAe,MAAM,YAAY;AACtE,YAAM,QAAQ,SAAS,QAAQ,WAAW,SAAS,CAAC;AACpD,UAAI,MAAM,WAAW,EAAG;AAExB,YAAM,YAAY,MAAM,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,KAAK,GAAG;AACzD,YAAM,UAAU,oBAAoB,SAAS,EAAE;AAAA,IACjD,CAAC;AAAA,EACH;AACF;;;ACpBA,QAAmB;;;ACEZ,SAAS,QAAQ,QAAyG;AAC/H,SAAO,OAAO,SAAS;AACzB;;;ACAO,SAAS,QAAQ,QAA6F;AACnH,SAAO,MAAM,QAAQ,OAAO,IAAI;AAClC;;;ACJO,SAAS,WAAW,QAA4G;AACrI,SAAO,OAAO,OAAO,SAAS,YAAY,OAAO,SAAS;AAC5D;;;ACDO,SAAS,MAAM,QAAkK;AACtL,SAAO,UAAU;AACnB;;;ACCO,IAAM,kBAAN,MAAsB;AAAA,EAC3B,OAAO,QAAQ;AAAA,EACf,OAAO,UAAU;AAAA,EACjB,OAAO,aAAa;AAAA,EACpB,OAAO,UAAU;AACnB;;;ALFO,IAAM,qBAAN,MAAM,oBAAqC;AAAA,EAChD,MAAM,UAA0B;AAC9B,aAAS,MAAM,6BAA6B,IAAI,oBAAmB,MAAM,CAAC,UAAoB,wBAA6C;AACzI,YAAM,YAAY,oBAAoB;AAEtC,YAAM,aAAa,UAAU,YAAY,OAAO,CAAC,MAAwC,CAAC,gBAAgB,MAAM,CAAC,CAAC,KAAK,CAAC;AACxH,YAAM,OAAO,WAAW,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,OAAS,UAAQ;AAE5D,YAAM,OAAO,CAAC,KAAK,SACf,iCACA;AAAA,QACA,iBAAiB,KAAK,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC;AAAA,QAC9D;AAAA,QACA;AAAA,MACF,EAAE,KAAK,IAAI;AAEb,eAAS,OAAO,MAAM,QAAQ,QAAQ;AAAA;AAAA,QAEpC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,OAAS,UAAQ,EAAE,KAAK,IAAI,CAAC;AAE/B,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/plugins/index.ts","../src/plugins/eslint/index.ts","../src/plugins/prettier/index.ts","../src/plugins/body-fallback/index.ts","../src/utils/json-schema-utils/is-array.ts","../src/utils/json-schema-utils/is-mixed.ts","../src/utils/json-schema-utils/is-non-array.ts","../src/utils/json-schema-utils/is-ref.ts","../src/utils/json-schema-utils/index.ts","../src/plugins/generate-micro-function/generate-micro-function.plugin.ts","../src/plugins/generate-micro-function/constants/metadata-storage.ts","../src/plugins/generate-micro-function/generators/micro_function/micro-function.generator.ts","../src/models/artifact.ts","../src/models/utils/to-comment.ts","../src/models/anchor.ts","../src/models/api-document_v3_1.ts","../src/models/module-definition.ts","../src/constants/supported-methods.ts","../src/models/operation-definition.ts","../src/utils/is-keywords.ts","../src/utils/is-reserved-word.ts","../src/models/schema-definition.ts","../src/utils/logger.ts","../src/plugins/generate-declaration/generate-declaration.plugin.ts","../src/plugins/generate-declaration/generators/operation-declaration/operation.generator.ts","../src/transformers/json-schema/comment.renderer.ts","../src/transformers/json-schema/declaration.renderer.ts","../src/utils/indent.ts","../src/transformers/json-schema/reference.transformer.ts","../src/transformers/json-schema/json-schema.transformer.ts","../src/transformers/schema-definition/schema-definition.transformer.ts","../src/transformers/operation-definition/comment.renderer.ts","../src/transformers/operation-definition/declaration.renderer.ts","../src/transformers/operation-definition/utils/type-name-factory.ts","../src/utils/openapi-utils/dereference.ts","../src/utils/openapi-utils/dereference-operation.ts","../src/utils/openapi-utils/remove-undefined-ref.ts","../src/utils/openapi-utils/is-ref-defined.ts","../src/utils/openapi-utils/update-operation-id.ts","../src/utils/openapi-utils/dereference-deep.ts","../src/utils/openapi-utils/to-3_1.ts","../src/utils/openapi-utils/index.ts","../src/transformers/operation-definition/micro-function.renderer.ts","../src/exception.ts","../src/transformers/operation-definition/typescript-helper.ts","../src/transformers/operation-definition/nestjs-method.renderer.ts","../src/transformers/operation-definition/operation-definition.transformer.ts","../src/transformers/entrypoint/entrypoint.transformer.ts","../src/transformers/api-document/nestjs-client.renderer.ts","../src/transformers/api-document/nestjs-module.renderer.ts","../src/transformers/api-document/api-document.transformer.ts","../src/plugins/generate-declaration/generators/schema-declaration/schema.generator.ts","../src/plugins/generate-declaration/constants/metadata-storage.ts","../src/plugins/generate-micro-function/generators/request/request.generator.ts","../src/plugins/generate-nestjs-module/generate-nestjs-module.ts","../src/plugins/generate-nestjs-module/constants/metadata-storage.ts","../src/plugins/generate-nestjs-module/generators/nestjs-module.generator.ts","../src/plugins/chinese-to-pinyin/chinese-to-pinyin.plugin.ts","../src/plugins/download-http-file/download-http-file.plugin.ts","../src/plugins/download-local-file/download-local-file.plugin.ts","../src/plugins/shaking/shaking.plugin.ts","../src/plugins/terminal-select/utils/select-operation-definitions.ts","../src/plugins/terminal-select/terminal-select.plugin.ts","../src/plugins/initialize/initialize.plugin.ts"],"sourcesContent":["export * from './eslint/index.js'\nexport * from './prettier/index.js'\nexport * from './body-fallback/index.js'\nexport * from './generate-declaration/index.js'\nexport * from './generate-micro-function/index.js'\nexport * from './generate-nestjs-module/index.js'\nexport * from './chinese-to-pinyin/index.js'\nexport * from './download-http-file/index.js'\nexport * from './download-local-file/index.js'\nexport * from './shaking/index.js'\nexport * from './terminal-select/index.js'\nexport * from './initialize/index.js'\n","import { Compiler } from '~/compiler/compiler.js'\nimport { Plugin } from '~/types/plugin.js'\nimport { ESLint } from 'eslint'\n\n\ninterface EslintPluginOptions {\n /**\n * List of ESLint rules to disable\n */\n disable?: string[]\n}\n\nexport class EslintPlugin implements Plugin {\n constructor(private options: EslintPluginOptions = {}) {}\n\n\n apply(compiler: Compiler): void {\n if (!compiler.options.build) return\n\n if (this.options.disable && this.options.disable.length > 0) {\n const $rules = [\n ...this.options.disable.map((rule) => `/* eslint-disable ${rule} */`),\n ].join('\\n')\n\n compiler.hooks.afterCompile.tap(EslintPlugin.name, () => {\n const artifacts = compiler.context.artifacts || []\n\n for (const artifact of artifacts) {\n artifact.anchor.append('file:start', $rules)\n }\n })\n }\n\n compiler.hooks.afterPersist.tapPromise(EslintPlugin.name, async (task) => {\n const files = compiler.context.assets || []\n if (files.length === 0) return\n\n const eslint = new ESLint({ fix: true })\n const results = await eslint.lintFiles(files.map((file) => file.path))\n await ESLint.outputFixes(results)\n })\n }\n}\n","import { Compiler } from '~/compiler/compiler.js'\nimport { Plugin } from '~/types/plugin.js'\nimport { exec } from 'child_process'\nimport { promisify } from 'util'\n\nconst execAsync = promisify(exec)\n\n\nexport class PrettierPlugin implements Plugin {\n apply(compiler: Compiler): void {\n if (!compiler.options.build) return\n\n compiler.hooks.afterPersist.tapPromise(PrettierPlugin.name, async () => {\n const files = compiler.context.assets || []\n if (files.length === 0) return\n\n const filePaths = files.map((file) => file.path).join(' ')\n await execAsync(`prettier --write ${filePaths}`)\n })\n }\n}\n","import * as R from 'ramda'\nimport { Compiler } from '~/compiler/compiler.js'\nimport { Artifact, OperationDefinition } from '~/models/index.js'\nimport { Plugin } from '~/types/plugin.js'\nimport { JsonSchemaUtils } from '~/utils/json-schema-utils/index.js'\nimport { OpenAPIV3_1 } from '@scalar/openapi-types'\n\nimport { GenerateMicroFunctionPlugin } from '../generate-micro-function/index.js'\n\n\nexport class BodyFallbackPlugin implements Plugin {\n apply(compiler: Compiler): void {\n compiler.hooks.setup.tap(BodyFallbackPlugin.name, () => {\n const generateMicroFunctionPluginMetadata = GenerateMicroFunctionPlugin.of(compiler)\n\n if (!generateMicroFunctionPluginMetadata) {\n throw new Error('BodyFallbackPlugin requires GenerateMicroFunctionPlugin to be applied first.')\n }\n\n generateMicroFunctionPluginMetadata.hooks.afterMicroFunctionArtifactGenerated\n .tap(BodyFallbackPlugin.name, (artifact: Artifact, operationDefinition: OperationDefinition) => {\n const operation = operationDefinition.operation\n\n const parameters = operation.parameters?.filter((p): p is OpenAPIV3_1.ParameterObject => !JsonSchemaUtils.isRef(p)) || []\n const keys = parameters.map((p) => p.name).filter(R.isNotNil)\n\n const $acc = !keys.length\n ? ' acc[key] = args[key]'\n : [\n ` if (![${keys.map((k) => JSON.stringify(k)).join(', ')}].includes(key)) {`,\n ' acc[key] = args[key]',\n ' }',\n ].join('\\n')\n\n artifact.anchor.block.replace('body', [\n // $mediaType ? `${$mediaType}\\n` : undefined,\n ' if (typeof args === \"object\" && args !== null && !Array.isArray(args)) {',\n ' const requestBody = Object.keys(args)',\n ' .reduce((acc, key) => {',\n $acc,\n ' return acc',\n ' }, {} as Record<string, unknown>)',\n '',\n ' if (Object.keys(requestBody).length > 0) {',\n ' req.send(requestBody)',\n ' }',\n ' }',\n ].filter(R.isNotNil).join('\\n'))\n\n return artifact\n })\n })\n }\n}\n","import type { OpenAPIV3_1 } from '@scalar/openapi-types'\n\nexport function isArray(schema: OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ReferenceObject): schema is OpenAPIV3_1.ArraySchemaObject {\n return schema.type === 'array'\n}\n","\nimport type { OpenAPIV3_1 } from '@scalar/openapi-types'\nimport { MixedSchemaObject } from './types/mixed-schema-object.js'\n\nexport function isMixed(schema: OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ReferenceObject): schema is MixedSchemaObject {\n return Array.isArray(schema.type)\n}\n","import type { OpenAPIV3_1 } from '@scalar/openapi-types'\n\nexport function isNonArray(schema: OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ReferenceObject): schema is OpenAPIV3_1.NonArraySchemaObject {\n return typeof schema.type === 'string' && schema.type !== 'array'\n}\n","import type { OpenAPIV3_1 } from '@scalar/openapi-types'\n\n\nexport function isRef(schema: OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ReferenceObject | OpenAPIV3_1.ResponseObject | OpenAPIV3_1.ParameterObject): schema is OpenAPIV3_1.ReferenceObject {\n return '$ref' in schema\n}\n","import { isArray } from './is-array.js'\nimport { isMixed } from './is-mixed.js'\nimport { isNonArray } from './is-non-array.js'\nimport { isRef } from './is-ref.js'\n\n\nexport class JsonSchemaUtils {\n static isRef = isRef\n static isArray = isArray\n static isNonArray = isNonArray\n static isMixed = isMixed\n}\n","import { AsyncSeriesWaterfallHook } from 'tapable'\nimport { Plugin } from '~/types/index.js'\nimport { Compiler, TaskWrapper } from '~/compiler/index.js'\nimport { Artifact, OperationDefinition } from '~/models/index.js'\nimport { GenerateMicroFunctionPluginMetadata, MetadataStorage } from './constants/index.js'\nimport { MicroFunctionGenerator, RequestGenerator } from './generators/index.js'\n\n\nexport class GenerateMicroFunctionPlugin implements Plugin {\n private readonly microFunctionGenerator = new MicroFunctionGenerator()\n private readonly requestGenerator = new RequestGenerator()\n\n apply(compiler: Compiler): void {\n GenerateMicroFunctionPlugin.register(compiler)\n\n compiler.hooks.compile.tapPromise(GenerateMicroFunctionPlugin.name, async (task: TaskWrapper) => {\n const artifacts = [\n ...(await this.requestGenerator.compile(compiler, task)),\n ...(await this.microFunctionGenerator.compile(compiler, task)),\n ]\n\n compiler.context.artifacts!.push(...artifacts)\n })\n }\n\n static register(compiler: Compiler): GenerateMicroFunctionPluginMetadata {\n if (!MetadataStorage.has(compiler)) {\n MetadataStorage.set(compiler, {\n hooks: {\n afterEntrypointArtifactGenerated: new AsyncSeriesWaterfallHook<[Artifact, TaskWrapper]>(['artifact', 'task']),\n afterMicroFunctionArtifactGenerated: new AsyncSeriesWaterfallHook<[Artifact, OperationDefinition, TaskWrapper]>(['artifact', 'operationDefinition', 'task']),\n },\n })\n }\n\n return MetadataStorage.get(compiler)!\n }\n\n\n static of(compiler: Compiler): GenerateMicroFunctionPluginMetadata | undefined {\n return this.register(compiler)\n }\n}\n","import { AsyncSeriesWaterfallHook } from 'tapable'\nimport { Compiler, TaskWrapper } from '~/compiler/index.js'\nimport { Artifact, OperationDefinition } from '~/models/index.js'\n\nexport interface GenerateMicroFunctionPluginMetadata {\n hooks: {\n afterEntrypointArtifactGenerated: AsyncSeriesWaterfallHook<[Artifact, TaskWrapper]>\n afterMicroFunctionArtifactGenerated: AsyncSeriesWaterfallHook<[Artifact, OperationDefinition, TaskWrapper]>\n }\n}\n\nexport const MetadataStorage = new WeakMap<Compiler, GenerateMicroFunctionPluginMetadata>()\n","import * as R from 'ramda'\nimport * as path from 'path'\nimport * as changeCase from 'change-case'\nimport { Compiler, TaskWrapper } from '~/compiler/index.js'\nimport { Generator, RuntimeConfig } from '~/types/index.js'\nimport { Artifact, ModuleDefinition, OperationDefinition } from '~/models/index.js'\nimport { OperationDeclarationGenerator } from '~/plugins/generate-declaration/index.js'\nimport { OperationDefinitionTransformer } from '~/transformers/index.js'\nimport { EntrypointTransformer } from '~/transformers/index.js'\nimport { FileNamingStyle } from '~/constants/index.js'\nimport { MetadataStorage } from '../../constants/metadata-storage.js'\nimport { RequestGenerator } from '../request/index.js'\n\n\nexport const MICRO_FUNCTION_GENERATOR = 'microFunctionGenerator'\n\nexport class MicroFunctionGenerator implements Generator {\n async compile(compiler: Compiler, task: TaskWrapper): Promise<Artifact[]> {\n const metadata = MetadataStorage.get(compiler)!\n const context = compiler.context\n const rc = context.rc!\n const documents = context.documents!\n\n const operationDefinitions = documents.flatMap((document) => document.operations)\n\n const artifactMap = new Map<OperationDefinition, Artifact>(\n await Promise.all(\n operationDefinitions.map(async (operationDefinition) => (<const>[\n operationDefinition,\n await metadata.hooks.afterMicroFunctionArtifactGenerated.promise(\n this.generateOperationDefinitionArtifact(operationDefinition, rc),\n operationDefinition,\n task,\n ),\n ])),\n ),\n )\n\n\n const entrypoints = await Promise.all(\n R.collectBy(\n (operationDefinition: OperationDefinition) => operationDefinition.module.name,\n operationDefinitions,\n )\n .map((operationDefinitions) => (<const>[\n operationDefinitions[0].module,\n operationDefinitions\n .map((operationDefinition) => artifactMap.get(operationDefinition))\n .filter((artifact): artifact is Artifact => Boolean(artifact)),\n ]))\n .map(async ([moduleDefinition, artifacts]) => await metadata.hooks.afterEntrypointArtifactGenerated.promise(\n this.generateEntrypointArtifact(\n moduleDefinition,\n artifacts,\n rc,\n ),\n task,\n )),\n )\n\n return [...entrypoints, ...artifactMap.values()]\n }\n\n\n private generateOperationDefinitionArtifact(operationDefinition: OperationDefinition, rc: RuntimeConfig): Artifact {\n const filepath = MicroFunctionGenerator.getOperationDefinitionArtifactFilepath(operationDefinition, rc.fileNamingStyle)\n const dirpath = path.dirname(filepath)\n\n const artifact = new Artifact({\n id: MicroFunctionGenerator.getOperationDefinitionArtifactId(operationDefinition),\n filepath,\n content: OperationDefinitionTransformer.toMicroFunction(operationDefinition, {\n qs: rc.qs,\n esm: rc.esm,\n getOperationDefinitionDeclarationFilepath(operationDefinition: OperationDefinition): string {\n const relativePath = path.relative(\n dirpath,\n OperationDeclarationGenerator.getOperationDefinitionArtifactFilepath(operationDefinition, rc.fileNamingStyle),\n )\n\n return relativePath.startsWith('.') ? relativePath : `./${relativePath}`\n },\n getRequestFilepath(): string {\n const relativePath = path.relative(\n dirpath,\n RequestGenerator.getRequestArtifactFilepath(),\n )\n\n return relativePath.startsWith('.') ? relativePath : `./${relativePath}`\n },\n }),\n extensionName: '.type.ts',\n })\n\n return artifact\n }\n\n private generateEntrypointArtifact(moduleDefinition: ModuleDefinition, exports: Artifact[], rc: RuntimeConfig): Artifact {\n const filepath = MicroFunctionGenerator.getEntrypointArtifactFilepath(moduleDefinition, rc.fileNamingStyle)\n const dirpath = filepath.substring(0, filepath.lastIndexOf('/'))\n\n const artifact = new Artifact({\n id: MicroFunctionGenerator.getEntrypointArtifactId(moduleDefinition),\n filepath,\n content: EntrypointTransformer.toTypescript(exports, { dirpath }),\n })\n\n return artifact\n }\n\n\n static getOperationDefinitionArtifactFilepath(operationDefinition: OperationDefinition, fileNamingStyle: FileNamingStyle): string {\n const filename = `${changeCase[fileNamingStyle](operationDefinition.operationId)}.fn.ts`\n const filepath = [\n '.',\n changeCase[fileNamingStyle](operationDefinition.module.name),\n 'operations',\n filename,\n ].join('/')\n\n return filepath\n }\n\n static getOperationDefinitionArtifactId(operationDefinition: OperationDefinition): string {\n return `${operationDefinition.id}?generator=${MICRO_FUNCTION_GENERATOR}`\n }\n\n static getEntrypointArtifactFilepath(moduleDefinition: ModuleDefinition, fileNamingStyle: FileNamingStyle): string {\n return [\n '.',\n changeCase[fileNamingStyle](moduleDefinition.name),\n 'operations',\n 'index.ts',\n ].join('/')\n }\n\n static getEntrypointArtifactId(moduleDefinition: ModuleDefinition): string {\n return `${moduleDefinition.address}/paths/entrypoint?generator=${MICRO_FUNCTION_GENERATOR}`\n }\n}\n","import * as path from 'path'\nimport { toComment } from './utils/to-comment.js'\nimport { Anchor } from './anchor.js'\n\n\nconst HeaderComment = [\n '// Code generated by keq-cli. DO NOT EDIT.',\n '// Code generated by keq-cli. DO NOT EDIT.',\n '// Code generated by keq-cli. DO NOT EDIT.',\n '',\n '',\n].join('\\n')\n\nexport class Artifact {\n id: string\n filepath: string\n warns: string[] = []\n content: string\n extensionName\n anchor = new Anchor(this)\n\n constructor(options: {\n id: string\n filepath: string\n content: string\n extensionName?: string\n }) {\n this.id = options.id\n this.filepath = options.filepath\n this.extensionName = options.extensionName || path.extname(options.filepath)\n this.content = options.content\n }\n\n get dirname(): string {\n return path.dirname(this.filepath)\n }\n\n addWarn(message: string): void {\n this.warns.push(message)\n }\n\n renderer(): string {\n let $warns = ''\n\n if (this.warns.length) {\n $warns = toComment([\n '!!! Here is some Problems !!!',\n '',\n this.warns,\n ].join('\\n'))\n $warns += '\\n\\n'\n }\n\n return `${HeaderComment}${$warns}${this.content}`\n }\n}\n","export function toComment(msg?: string): string {\n if (!msg) return ''\n\n return msg.split('\\n')\n .map((str) => `// ${str}`)\n .join('\\n')\n}\n","import type { Artifact } from './artifact.js'\n\nclass AnchorBlock {\n constructor(\n private artifact: Artifact,\n ) {}\n\n /**\n * Append content to the end of the anchor block.\n */\n append(anchorName: string, content: string): void {\n const lines = this.artifact.content.split('\\n')\n\n const anchor = `@anchor:${anchorName}:end`\n const anchorIndex = lines.findIndex((line) => line.includes(`/* ${anchor} */`))\n\n if (anchorIndex === -1) {\n throw new Error(`\"${anchor}\" not found in artifact \"${this.artifact.filepath}\".`)\n }\n\n lines.splice(anchorIndex, 0, content)\n this.artifact.content = lines.join('\\n')\n }\n\n prepend(anchorName: string, content: string): void {\n const lines = this.artifact.content.split('\\n')\n\n const anchor = `@anchor:${anchorName}:start`\n const anchorIndex = lines.findIndex((line) => line.includes(`/* ${anchor} */`))\n\n if (anchorIndex === -1) {\n throw new Error(`\"${anchor}\" not found in artifact \"${this.artifact.filepath}\".`)\n }\n\n lines.splice(anchorIndex + 1, 0, content)\n this.artifact.content = lines.join('\\n')\n }\n\n replace(anchorName: string, content: string): void {\n const lines = this.artifact.content.split('\\n')\n const startIndex = lines.findIndex((line) => line.includes(`/* @anchor:${anchorName}:start */`))\n const endIndex = lines.findIndex((line) => line.includes(`/* @anchor:${anchorName}:end */`))\n\n if (startIndex === -1 || endIndex === -1 || endIndex <= startIndex) {\n throw new Error(`\"@anchor:${anchorName}:start\" or \"@anchor:${anchorName}:end\" not found in artifact \"${this.artifact.filepath}\".`)\n }\n\n lines.splice(startIndex + 1, endIndex - startIndex - 1, content)\n this.artifact.content = lines.join('\\n')\n }\n}\n\n\nexport class Anchor {\n block: AnchorBlock\n\n constructor(\n private artifact: Artifact,\n ) {\n this.block = new AnchorBlock(artifact)\n }\n\n append(anchorName: string, content: string): void {\n const lines = this.artifact.content.split('\\n')\n\n const anchor = `@anchor:${anchorName}`\n const anchorIndex = lines.findIndex((line) => line.includes(`/* ${anchor} */`))\n\n if (anchorIndex === -1) {\n throw new Error(`\"${anchor}\" not found in artifact \"${this.artifact.filepath}\".`)\n }\n\n lines.splice(anchorIndex + 1, 0, content)\n this.artifact.content = lines.join('\\n')\n }\n\n prepend(anchorName: string, content: string): void {\n const lines = this.artifact.content.split('\\n')\n\n const anchor = `@anchor:${anchorName}`\n const anchorIndex = lines.findIndex((line) => line.includes(`/* ${anchor} */`))\n\n if (anchorIndex === -1) {\n throw new Error(`\"${anchor}\" not found in artifact \"${this.artifact.filepath}\".`)\n }\n\n lines.splice(anchorIndex, 0, content)\n this.artifact.content = lines.join('\\n')\n }\n}\n","import * as R from 'ramda'\nimport type { OpenAPIV3_1 } from '@scalar/openapi-types'\nimport { ModuleDefinition } from './module-definition.js'\nimport { SupportedMethods } from '~/constants/supported-methods.js'\nimport { OperationDefinition } from './operation-definition.js'\nimport { SchemaDefinition } from './schema-definition.js'\nimport { logger } from '~/utils/logger.js'\nimport { openapiShakingSync } from '@opendoc/openapi-shaking'\n\n\nexport class ApiDocumentV3_1 {\n readonly module: ModuleDefinition\n readonly specification: OpenAPIV3_1.Document\n\n constructor(specification: OpenAPIV3_1.Document, module: ModuleDefinition) {\n this.module = module\n this.specification = specification\n }\n\n get schemas(): SchemaDefinition[] {\n const module = this.module\n\n return Object.entries(this.specification.components?.schemas || {})\n .map(([name, schema]) => new SchemaDefinition({\n name,\n schema,\n module,\n document: this,\n }))\n }\n\n get operations(): OperationDefinition[] {\n const module = this.module\n\n return Object.entries(this.specification.paths || {})\n .flatMap(([pathname, pathItem]) => Object.entries(pathItem || {})\n .filter(([method]) => SupportedMethods.includes(method.toLowerCase()))\n .map(([method, operation]) => new OperationDefinition({\n method,\n pathname,\n operation,\n module,\n document: this,\n })))\n }\n\n isEmpty(): boolean {\n return R.isEmpty(this.specification.paths)\n }\n\n dereference($ref: string): SchemaDefinition | undefined {\n if ($ref.startsWith('#/')) {\n return this.schemas.find((schema) => schema.id.endsWith($ref))\n }\n\n logger.warn(`The $ref(${$ref}) is not defined in ${this.module.name} openapi/swagger.`)\n }\n\n isRefDefined($ref: string): boolean {\n if ($ref.startsWith('#/')) {\n const path = $ref.replace('#/', '').split('/')\n return R.path(path, this.specification) !== undefined\n }\n\n return false\n }\n\n sharking(filter: (operationDefinition: OperationDefinition) => boolean): ApiDocumentV3_1 {\n const isAccepted = (pathname: string, method: string, operation: OpenAPIV3_1.Document): boolean => {\n if (!SupportedMethods.includes(method)) return false\n\n const operationDefinition = new OperationDefinition({\n method,\n pathname,\n operation,\n module: this.module,\n document: this,\n })\n\n return filter(operationDefinition)\n }\n\n\n const sharkedSwagger = openapiShakingSync(\n this.specification as any,\n isAccepted as any,\n { tolerant: true },\n ) as OpenAPIV3_1.Document\n\n return new ApiDocumentV3_1(\n sharkedSwagger,\n new ModuleDefinition(\n this.module.name,\n `file://${this.module.name}.v3_1.sharked.json`,\n ),\n )\n }\n\n static unknown(): ApiDocumentV3_1 {\n return new ApiDocumentV3_1({}, ModuleDefinition.unknown())\n }\n}\n","export class ModuleDefinition {\n name: string\n address: string\n\n constructor(name: string, address: string) {\n this.name = name\n this.address = address\n }\n\n static unknown(): ModuleDefinition {\n return new ModuleDefinition('', '')\n }\n}\n","export const SupportedMethods = [\n 'get',\n 'post',\n 'put',\n 'delete',\n 'patch',\n 'head',\n 'options',\n]\n","import * as R from 'ramda'\nimport type { OpenAPIV3_1 } from '@scalar/openapi-types'\nimport { ModuleDefinition } from './module-definition.js'\nimport { isKeywords } from '~/utils/is-keywords.js'\nimport { isReservedWord } from '~/utils/is-reserved-word.js'\nimport { ApiDocumentV3_1 } from './api-document_v3_1.js'\nimport { JSONPath } from 'jsonpath-plus'\nimport { SchemaDefinition } from './schema-definition.js'\n\n\nexport class OperationDefinition {\n readonly module: ModuleDefinition\n\n readonly operationId: string\n readonly method: string\n readonly pathname: string\n readonly operation: OpenAPIV3_1.OperationObject\n readonly document: ApiDocumentV3_1\n\n get id(): string {\n return `${this.module.address}#/paths/${this.pathname}/${this.method}`\n }\n\n constructor(args: {\n method: string\n pathname: string\n operation: OpenAPIV3_1.OperationObject\n module: ModuleDefinition\n document: ApiDocumentV3_1\n }) {\n this.module = args.module\n this.method = args.method.toLowerCase()\n this.pathname = args.pathname\n this.document = args.document\n this.operationId = this.formatOperationId(args.method, args.pathname, args.operation)\n\n this.operation = {\n ...args.operation,\n operationId: this.operationId,\n }\n }\n\n private formatOperationId(method: string, pathname: string, operation: OpenAPIV3_1.OperationObject): string {\n const operationId = operation.operationId\n\n if (\n operationId\n && operationId !== 'index'\n && !isKeywords(operationId)\n && !isReservedWord(operationId)\n ) {\n return operationId as string\n }\n\n return `${method}_${pathname}`\n .replace(/\\//g, '_')\n .replace(/-/g, '_')\n .replace(/:/g, '$$')\n .replace(/{(.+)}/, '$$$1')\n }\n\n getDependencies(): SchemaDefinition[] {\n const refs = R.uniq([\n ...JSONPath<string>({\n path: '$.requestBody.content..schema..$ref',\n json: this.operation,\n }),\n ...JSONPath<string>({\n path: '$.responses..content..schema..$ref',\n json: this.operation,\n }),\n ...JSONPath<string>({\n path: '$.parameters..schema..$ref',\n json: this.operation,\n }),\n ])\n\n const dependencies = refs\n .filter((ref) => typeof ref === 'string' && ref)\n .map((ref) => {\n const schemaDefinition = this.document.dereference(ref)\n if (schemaDefinition) return schemaDefinition\n\n return SchemaDefinition.unknown()\n })\n\n return dependencies\n }\n}\n","const keywords = [\n 'break',\n 'case',\n 'catch',\n 'continue',\n 'default',\n 'delete',\n 'do',\n 'else',\n 'finally',\n 'for',\n 'function',\n 'if',\n 'in',\n 'instanceof',\n 'new',\n 'return',\n 'switch',\n 'this',\n 'throw',\n 'try',\n 'typeof',\n 'var',\n 'void',\n 'while',\n 'with',\n]\n\nexport function isKeywords(str: string): boolean {\n return keywords.includes(str)\n}\n","\nconst reservedWords = [\n 'abstract',\n 'boolean',\n 'byte',\n 'char',\n 'class',\n 'const',\n 'debugger',\n 'double',\n 'enum',\n 'export',\n 'extends',\n 'final',\n 'float',\n 'goto',\n 'implements',\n 'import',\n 'int',\n 'interface',\n 'long',\n 'native',\n 'package',\n 'private',\n 'protected',\n 'public',\n 'short',\n 'static',\n 'super',\n 'synchronized',\n 'throws',\n 'transient',\n 'volatile',\n]\n\nexport function isReservedWord(str: string): boolean {\n return reservedWords.includes(str)\n}\n","import * as R from 'ramda'\nimport type { OpenAPIV3_1 } from '@scalar/openapi-types'\nimport { ModuleDefinition } from './module-definition.js'\nimport { JSONPath } from 'jsonpath-plus'\nimport { ApiDocumentV3_1 } from './api-document_v3_1.js'\n\n\nexport class SchemaDefinition {\n readonly name: string\n readonly schema: OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ReferenceObject\n readonly module: ModuleDefinition\n readonly document: ApiDocumentV3_1\n\n get id(): string {\n return `${this.module.address}#/components/schemas/${this.name}`\n }\n\n constructor(args: {\n name: string\n schema: OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ReferenceObject\n module: ModuleDefinition\n document: ApiDocumentV3_1\n }) {\n this.module = args.module\n this.name = args.name\n this.schema = args.schema\n this.document = args.document\n }\n\n getDependencies(): SchemaDefinition[] {\n const refs: string[] = R.uniq(JSONPath({\n path: \"$..*['$ref']\",\n json: this.schema,\n }))\n\n return refs\n .filter((ref) => typeof ref === 'string' && !!ref.trim())\n .map((ref) => {\n const definition = this.document.dereference(ref)\n if (definition) return definition\n\n return SchemaDefinition.unknown()\n })\n }\n\n static unknown(): SchemaDefinition {\n return new SchemaDefinition({\n name: '',\n schema: {},\n module: ModuleDefinition.unknown(),\n document: ApiDocumentV3_1.unknown(),\n })\n }\n\n static isUnknown(definition: SchemaDefinition): boolean {\n return definition.name === ''\n }\n}\n","import chalk from 'chalk'\n\n\nexport const logger = {\n log: (str: string) => console.log(chalk.green(str)),\n warn: (str: string) => console.warn(chalk.yellow(str)),\n error: (str: string) => console.error(chalk.red(str)),\n}\n","import { AsyncSeriesWaterfallHook } from 'tapable'\nimport { Plugin } from '~/types/plugin.js'\nimport { Compiler, TaskWrapper } from '~/compiler/index.js'\nimport { Artifact, OperationDefinition, SchemaDefinition } from '~/models/index.js'\nimport { OperationDeclarationGenerator, SchemaDeclarationGenerator } from './generators/index.js'\nimport { GenerateDeclarationPluginMetadata, MetadataStorage } from './constants/index.js'\n\n\nexport const DECLARATION_GENERATOR = 'declarationGenerator'\n\nexport class GenerateDeclarationPlugin implements Plugin {\n name = DECLARATION_GENERATOR\n\n operationGenerator = new OperationDeclarationGenerator()\n schemaGenerator = new SchemaDeclarationGenerator()\n\n constructor() {}\n\n apply(compiler: Compiler): void {\n GenerateDeclarationPlugin.register(compiler)\n\n compiler.hooks.compile.tapPromise(GenerateDeclarationPlugin.name, async (task: TaskWrapper) => {\n compiler.context.artifacts?.push(\n ...await this.schemaGenerator.compile(compiler, task),\n ...await this.operationGenerator.compile(compiler, task),\n )\n })\n }\n\n static register(compiler: Compiler): GenerateDeclarationPluginMetadata {\n if (!MetadataStorage.has(compiler)) {\n MetadataStorage.set(compiler, {\n hooks: {\n afterEntrypointArtifactGenerated: new AsyncSeriesWaterfallHook<[Artifact, TaskWrapper], Artifact>(['artifact', 'task']),\n afterSchemaDeclarationArtifactGenerated: new AsyncSeriesWaterfallHook<[Artifact, SchemaDefinition, TaskWrapper], Artifact>(['artifact', 'schemaDefinition', 'task']),\n afterOperationDeclarationArtifactGenerated: new AsyncSeriesWaterfallHook<[Artifact, OperationDefinition, TaskWrapper], Artifact>(['artifact', 'operationDefinition', 'task']),\n },\n })\n }\n return MetadataStorage.get(compiler)!\n }\n\n static of(compiler: Compiler): GenerateDeclarationPluginMetadata | undefined {\n return this.register(compiler)\n }\n}\n","import * as path from 'path'\nimport * as changeCase from 'change-case'\nimport { Artifact, ModuleDefinition, OperationDefinition } from '~/models/index.js'\nimport { Compiler, TaskWrapper } from '~/compiler/index.js'\nimport { OperationDefinitionTransformer, EntrypointTransformer } from '~/transformers/index.js'\nimport { FileNamingStyle } from '~/constants/index.js'\nimport type { Generator, RuntimeConfig } from '~/types/index.js'\nimport { SchemaDeclarationGenerator } from '../schema-declaration/index.js'\nimport { MetadataStorage } from '../../constants/metadata-storage.js'\n\n\nexport const OPERATION_GENERATOR = 'operationDeclarationGenerator'\n\nexport class OperationDeclarationGenerator implements Generator {\n async compile(compiler: Compiler, task: TaskWrapper): Promise<Artifact[]> {\n const context = compiler.context\n const metadata = MetadataStorage.get(compiler)!\n\n const rc = context.rc!\n // const matcher = context.matcher!\n const documents = context.documents!\n // .filter((document) => !matcher.isModuleIgnored(document.module))\n\n const operationDefinitions = documents.flatMap((document) => document.operations)\n\n const artifactMap = new Map<OperationDefinition, Artifact>(\n await Promise.all(\n operationDefinitions.map(async (operationDefinition) => (<const>[\n operationDefinition,\n await metadata.hooks.afterOperationDeclarationArtifactGenerated.promise(\n this.generateOperationDefinitionArtifact(operationDefinition, rc),\n operationDefinition,\n task,\n ),\n ])),\n ),\n )\n\n return Array.from(artifactMap.values())\n }\n\n\n private generateOperationDefinitionArtifact(operationDefinition: OperationDefinition, rc: RuntimeConfig): Artifact {\n const filepath = OperationDeclarationGenerator.getOperationDefinitionArtifactFilepath(operationDefinition, rc.fileNamingStyle)\n const dirpath = path.dirname(filepath)\n\n const artifact = new Artifact({\n id: OperationDeclarationGenerator.getOperationDefinitionArtifactId(operationDefinition),\n filepath,\n content: OperationDefinitionTransformer.toDeclaration(\n operationDefinition,\n {\n esm: rc.esm,\n getDependentSchemaDefinitionFilepath(dependentSchemaDefinition) {\n const relativePath = path.relative(\n dirpath,\n SchemaDeclarationGenerator.getSchemaDefinitionArtifactFilepath(dependentSchemaDefinition, rc.fileNamingStyle),\n )\n return relativePath.startsWith('.') ? relativePath : `./${relativePath}`\n },\n },\n ),\n extensionName: '.type.ts',\n })\n\n return artifact\n }\n\n private generateEntrypointArtifact(moduleDefinition: ModuleDefinition, exports: Artifact[], rc: RuntimeConfig): Artifact {\n const filepath = OperationDeclarationGenerator.getEntrypointArtifactFilepath(moduleDefinition, rc.fileNamingStyle)\n const dirpath = path.dirname(filepath)\n\n const artifact = new Artifact({\n id: OperationDeclarationGenerator.getEntrypointArtifactId(moduleDefinition),\n filepath,\n content: EntrypointTransformer.toTypescript(exports, { dirpath }),\n })\n\n return artifact\n }\n\n\n static getOperationDefinitionArtifactFilepath(operationDefinition: OperationDefinition, fileNamingStyle: FileNamingStyle): string {\n const filename = `${changeCase[fileNamingStyle](operationDefinition.operationId)}.type.ts`\n const filepath = [\n '.',\n changeCase[fileNamingStyle](operationDefinition.module.name),\n 'types',\n 'operations',\n filename,\n ].join('/')\n\n return filepath\n }\n\n static getOperationDefinitionArtifactId(operationDefinition: OperationDefinition): string {\n return `${operationDefinition.id}?generator=${OPERATION_GENERATOR}`\n }\n\n static getEntrypointArtifactFilepath(moduleDefinition: ModuleDefinition, fileNamingStyle: FileNamingStyle): string {\n return [\n '.',\n changeCase[fileNamingStyle](moduleDefinition.name),\n 'types',\n 'operations',\n 'index.ts',\n ].join('/')\n }\n\n static getEntrypointArtifactId(moduleDefinition: ModuleDefinition): string {\n return `${moduleDefinition.address}/paths/entrypoint?generator=${OPERATION_GENERATOR}`\n }\n}\n","import { OpenAPIV3_1 } from '@scalar/openapi-types'\nimport { Renderer } from '../types/renderer.js'\n\n\nexport class CommentRenderer implements Renderer {\n constructor(\n private readonly schema: OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ReferenceObject,\n ) {}\n\n render(): string {\n const schema = this.schema\n\n const lines = ['/**']\n\n if (schema.description) {\n const description = schema.description.replace('*/', '*\\\\/')\n lines.push(...description.split('\\n').map((line) => ` * ${line}`))\n }\n\n if (schema.deprecated) {\n lines.push(' * @deprecated')\n }\n\n if (schema.readOnly) {\n lines.push(' * @readonly')\n }\n\n if (schema.format) {\n lines.push(` * @format ${schema.format}`)\n }\n\n lines.push(' */')\n\n if (lines.length === 2) return ''\n return lines.join('\\n')\n }\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n\nimport * as R from 'ramda'\nimport type { OpenAPIV3_1 } from '@scalar/openapi-types'\nimport { MixedSchemaObject } from './types/mixed-schema-object.js'\nimport { JsonSchemaUtils } from '~/utils/json-schema-utils/index.js'\nimport { indent } from '~/utils/indent.js'\nimport { CommentRenderer } from './comment.renderer.js'\nimport { ReferenceTransformer } from './reference.transformer.js'\nimport { Renderer } from '../types/renderer.js'\n\n\nexport interface JsonSchemaDeclarationRendererOptions {\n referenceTransformer?: (schema: OpenAPIV3_1.ReferenceObject) => string\n}\n\nexport class DeclarationRenderer implements Renderer {\n constructor(\n private readonly schema: OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ReferenceObject,\n private readonly options: JsonSchemaDeclarationRendererOptions = {},\n ) {\n }\n\n render(): string {\n return this.renderSchema(this.schema)\n }\n\n private renderSchema(schema: OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ReferenceObject): string {\n if (typeof schema === 'boolean') return 'unknown'\n\n if (JsonSchemaUtils.isRef(schema)) return this.renderReference(schema)\n if (JsonSchemaUtils.isMixed(schema)) return this.renderMixed(schema)\n if (JsonSchemaUtils.isArray(schema)) return this.renderArray(schema)\n\n if (schema.type === 'object') return this.renderObject(schema)\n if (schema.enum) return this.renderEnum(schema)\n if (schema.oneOf) return this.renderOneOf(schema)\n if (schema.anyOf) return this.renderAnyOf(schema)\n if (schema.allOf) return this.renderAllOf(schema)\n if (schema.type === 'string') return this.renderString(schema)\n if (schema.type === 'number') return this.renderNumber(schema)\n if (schema.type === 'boolean') return this.renderBoolean(schema)\n if (schema.type === 'null') return this.renderNull(schema)\n if (schema.type === 'integer') return this.renderInteger(schema)\n\n return 'unknown'\n }\n\n\n private renderMixed(schema: MixedSchemaObject): string {\n if (Array.isArray(schema.type)) {\n schema.type\n .map((type): (OpenAPIV3_1.ArraySchemaObject | OpenAPIV3_1.NonArraySchemaObject) => ({ ...schema, type }))\n .map((schema) => this.renderSchema(schema))\n .join(' | ')\n }\n\n return 'unknown'\n }\n\n private renderReference(schema: OpenAPIV3_1.ReferenceObject): string {\n if (!this.options.referenceTransformer) {\n return ReferenceTransformer.toDeclaration(schema)\n }\n\n return this.options.referenceTransformer(schema)\n }\n\n private renderArray(schema: OpenAPIV3_1.ArraySchemaObject): string {\n if (schema.items && Array.isArray(schema.items)) {\n const items = schema.items.map((s) => this.renderSchema(s)).join(', ')\n return `[${items}]`\n }\n\n if (schema.items && typeof schema.items === 'object') {\n return `${this.renderSchema(schema.items)}[]`\n }\n\n return 'any[]'\n }\n\n\n private renderObject(schema: OpenAPIV3_1.NonArraySchemaObject): string {\n if (\n (!schema.properties || R.isEmpty(schema.properties))\n && (!schema.additionalProperties || R.isEmpty(schema.additionalProperties))\n ) {\n return 'object'\n }\n\n\n const $properties = Object.entries(schema.properties || {})\n .map(([propertyName, propertySchema]) => {\n let $comment = new CommentRenderer(propertySchema).render()\n if ($comment) $comment += '\\n'\n\n const $key = `\"${propertyName}\"${schema.required?.includes(propertyName) ? '' : '?'}`\n const $value = this.renderSchema(propertySchema)\n\n return indent(2, `${$comment}${$key}: ${$value}`)\n })\n\n if (schema.additionalProperties) {\n const $value = schema.additionalProperties === true\n ? 'any'\n : this.renderSchema(schema.additionalProperties)\n $properties.push(indent(2, `[key: string]: ${$value}`))\n }\n\n return [\n '{',\n ...$properties,\n '}',\n ].join('\\n')\n }\n\n private renderOneOf(schema: OpenAPIV3_1.NonArraySchemaObject): string {\n if (!schema.oneOf) return 'unknown'\n\n return schema.oneOf.map((s) => this.renderSchema(s)).join(' | ')\n }\n\n private renderAnyOf(schema: OpenAPIV3_1.NonArraySchemaObject): string {\n if (!schema.anyOf) return 'unknown'\n\n return schema.anyOf.map((s) => this.renderSchema(s)).join(' | ')\n }\n\n private renderAllOf(schema: OpenAPIV3_1.NonArraySchemaObject): string {\n if (!schema.allOf) return 'unknown'\n\n return schema.allOf.map((s) => this.renderSchema(s)).join(' & ')\n }\n\n private renderEnum(schema: OpenAPIV3_1.NonArraySchemaObject): string {\n if (!schema.enum) return 'unknown'\n return schema.enum.map((v) => JSON.stringify(v)).join(' | ')\n }\n\n private renderString(schema: OpenAPIV3_1.NonArraySchemaObject): string {\n if (schema.contentMediaType === 'application/octet-stream') return 'Blob | Buffer'\n if (schema.format === 'binary') return 'Blob | Buffer'\n return 'string'\n }\n\n private renderNumber(schema: OpenAPIV3_1.NonArraySchemaObject): string {\n return 'number'\n }\n\n private renderBoolean(schema: OpenAPIV3_1.NonArraySchemaObject): string {\n return 'boolean'\n }\n\n private renderNull(schema: OpenAPIV3_1.NonArraySchemaObject): string {\n return 'null'\n }\n\n private renderInteger(schema: OpenAPIV3_1.NonArraySchemaObject): string {\n return 'number'\n }\n}\n","export function indent(space: number, text: string): string {\n if (text === '') return ''\n\n const indentation = ' '.repeat(space)\n return text.split('\\n')\n .map((line) => (line ? `${indentation}${line}` : line))\n .join('\\n')\n}\n","import * as R from 'ramda'\nimport { OpenAPIV3_1 } from '@scalar/openapi-types'\n\n\nexport class ReferenceTransformer {\n static toDeclaration(schema: OpenAPIV3_1.ReferenceObject, alias: (name: string) => string = R.identity): string {\n if (!schema.$ref || !schema.$ref.startsWith('#')) return `unknown /* ${schema.$ref.replace('*/', '*\\\\/')} */`\n\n const parts: string[] = schema.$ref.split('/')\n // return parts[parts.length - 1] || 'unknown'\n\n return alias(parts[parts.length - 1]) || 'unknown'\n }\n}\n","import { OpenAPIV3_1 } from '@scalar/openapi-types'\nimport { CommentRenderer } from './comment.renderer.js'\nimport { DeclarationRenderer, JsonSchemaDeclarationRendererOptions } from './declaration.renderer.js'\n\n\nexport class JsonSchemaTransformer {\n static toComment(schema: OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ReferenceObject): string {\n return new CommentRenderer(schema).render()\n }\n\n static toDeclaration(schema: OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ReferenceObject, options?: JsonSchemaDeclarationRendererOptions): string {\n return new DeclarationRenderer(schema, options).render()\n }\n}\n","import * as R from 'ramda'\nimport { SchemaDefinition } from '~/models/index.js'\nimport { JsonSchemaUtils } from '~/utils/json-schema-utils/index.js'\nimport { JsonSchemaTransformer } from '../json-schema/index.js'\n\n\ninterface SchemaDefinitionDeclarationRendererOptions {\n esm?: boolean\n\n getDependentSchemaDefinitionFilepath: (schemaDefinition: SchemaDefinition) => string\n}\n\nexport class SchemaDefinitionTransformer {\n static toDeclaration(schemaDefinition: SchemaDefinition, options: SchemaDefinitionDeclarationRendererOptions): string {\n const dependencies = schemaDefinition.getDependencies()\n let $dependencies = dependencies\n .filter((dep) => !SchemaDefinition.isUnknown(dep))\n .map((dep) => {\n const filepath = options.getDependentSchemaDefinitionFilepath(dep)\n return `import type { ${dep.name} } from \"${filepath}\"`\n })\n .map((str) => str.replace(/ from \"(\\.\\.?\\/.+?)(\\.ts|\\.mts|\\.cts|\\.js|\\.cjs|\\.mjs)?\"/, options.esm ? ' from \"$1.js\"' : ' from \"$1\"'))\n .join('\\n')\n\n if ($dependencies) $dependencies += '\\n'\n\n let $comment = JsonSchemaTransformer.toComment(schemaDefinition.schema)\n if ($comment) $comment += '\\n'\n\n if (typeof schemaDefinition.schema === 'boolean') {\n return [\n '/* @anchor:file:start */',\n '',\n $dependencies,\n $comment || undefined,\n `type ${schemaDefinition.name} = unknown`,\n '',\n '/* @anchor:file:end */',\n ].filter(R.isNotNil).join('\\n')\n }\n\n if (JsonSchemaUtils.isNonArray(schemaDefinition.schema) && schemaDefinition.schema.type === 'object') {\n const $schema = JsonSchemaTransformer.toDeclaration(schemaDefinition.schema)\n\n const $declaration = $schema.startsWith('{')\n ? `export interface ${schemaDefinition.name} ${$schema}`\n : `export type ${schemaDefinition.name} = ${$schema}`\n\n return [\n '/* @anchor:file:start */',\n '',\n $dependencies,\n $comment || undefined,\n $declaration,\n '',\n '/* @anchor:file:end */',\n ].filter(R.isNotNil).join('\\n')\n }\n\n return [\n '/* @anchor:file:start */',\n '',\n $dependencies,\n $comment || undefined,\n `export type ${schemaDefinition.name} = ${JsonSchemaTransformer.toDeclaration(schemaDefinition.schema)}`,\n '',\n '/* @anchor:file:end */',\n ].filter(R.isNotNil).join('\\n')\n }\n}\n","import * as R from 'ramda'\nimport { OperationDefinition } from '~/models/index.js'\nimport { Renderer } from '../types/renderer.js'\n\n\nexport class CommentRenderer implements Renderer {\n constructor(\n private readonly operationDefinition: OperationDefinition,\n ) {}\n\n render(): string {\n const operation = this.operationDefinition.operation\n if (!operation.summary && !operation.description) return ''\n\n const lines = ['/**']\n\n if (operation.summary && typeof operation.summary === 'string') {\n lines.push(` * ${R.trim(operation.summary)}`)\n lines.push(' *')\n }\n\n if (operation.description && typeof operation.description === 'string') {\n lines.push(` * @description ${R.trim(operation.description)}`)\n }\n\n lines.push(' */')\n\n return lines.join('\\n')\n }\n}\n","import * as R from 'ramda'\nimport { OpenAPIV3_1 } from '@scalar/openapi-types'\nimport { OperationDefinition, SchemaDefinition } from '~/models/index.js'\nimport { typeNameFactory, TypeNameFn } from './utils/index.js'\nimport { JsonSchemaUtils } from '~/utils/json-schema-utils/index.js'\nimport { indent } from '~/utils/indent.js'\nimport { OpenapiUtils } from '~/utils/openapi-utils/index.js'\nimport { JsonSchemaTransformer, JsonSchemaDeclarationRendererOptions, ReferenceTransformer } from '../json-schema/index.js'\nimport { Renderer } from '../types/renderer.js'\n\n\nexport interface OperationDefinitionDeclarationRendererOptions {\n esm?: boolean\n\n getDependentSchemaDefinitionFilepath(dependentSchemaDefinition: SchemaDefinition): string\n}\n\nconst alias = (name: string): string => `${name}Schema`\n\nexport class DeclarationRenderer implements Renderer {\n private typeName: TypeNameFn\n\n constructor(\n private readonly operationDefinition: OperationDefinition,\n private readonly options: OperationDefinitionDeclarationRendererOptions,\n ) {\n this.typeName = typeNameFactory(operationDefinition)\n }\n\n private renderResponseBodies(operation: OpenAPIV3_1.OperationObject, options: JsonSchemaDeclarationRendererOptions): string {\n if (!operation.responses || R.isEmpty(operation.responses)) {\n return `export interface ${this.typeName('ResponseBodies')} {}`\n }\n\n const $responses = Object.entries(operation.responses)\n .map(([statusCode, response]) => {\n if (!JsonSchemaUtils.isRef(response)) {\n const $value = Object.values(response.content || {})\n .map((mediaTypeObject) => mediaTypeObject.schema)\n .filter((schema) => !!schema)\n .map((schema) => JsonSchemaTransformer.toDeclaration(schema, options))\n .join(' | ')\n\n return indent(2, `${statusCode}: ${$value || 'void'}`)\n }\n })\n .join('\\n')\n\n return [\n `export interface ${this.typeName('ResponseBodies')} {`,\n $responses,\n '}',\n ].join('\\n')\n }\n\n private renderRequestBodies(operation: OpenAPIV3_1.OperationObject, options: JsonSchemaDeclarationRendererOptions): string {\n let $requestBodies = `export interface ${this.typeName('RequestBodies')} {}`\n\n if (operation.requestBody && !JsonSchemaUtils.isRef(operation.requestBody)) {\n const $mediaTypes = Object.entries(operation.requestBody.content || {})\n .map(([mediaType, mediaTypeObject]) => <const>[mediaType, mediaTypeObject.schema])\n .map(([mediaType, schema]) => {\n if (!schema) return `${JSON.stringify(mediaType)}: unknown`\n\n // if (mediaType === 'multipart/form-data') {\n // return `${JSON.stringify(mediaType)}: FormData | ${generateSchema(schema, alias)}`\n // } else if (mediaType === 'application/x-www-form-urlencoded') {\n // return `${JSON.stringify(mediaType)}: URLSearchParams | ${generateSchema(schema, alias)}`\n // }\n\n return `${JSON.stringify(mediaType)}: ${JsonSchemaTransformer.toDeclaration(schema, options)}`\n })\n .map((pair) => indent(2, pair))\n\n $requestBodies = [\n `export interface ${this.typeName('RequestBodies')} {`,\n ...$mediaTypes,\n '}',\n ].join('\\n')\n }\n\n return $requestBodies\n }\n\n private renderParameterBodies(operationDefinition: OperationDefinition, options: JsonSchemaDeclarationRendererOptions): string {\n const { operation } = operationDefinition\n let parameterBodies = ''\n // let parameterBodies = `interface ${typeName('ParameterBodies')} {}`\n\n if (operation.requestBody && !JsonSchemaUtils.isRef(operation.requestBody)) {\n const $mediaTypes = Object.entries(operation.requestBody.content || {})\n .map(([mediaType, mediaTypeObject]) => <const>[mediaType, mediaTypeObject.schema])\n // .filter((pair): pair is [string, OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ReferenceObject] => !!pair[1])\n .map(([mediaType, schemaOrRef]) => {\n if (!schemaOrRef) return `${JSON.stringify(mediaType)}: unknown`\n\n const schema = JsonSchemaUtils.isRef(schemaOrRef)\n ? OpenapiUtils.dereferenceDeep<OpenAPIV3_1.SchemaObject>(schemaOrRef.$ref, operationDefinition.document.specification)\n : schemaOrRef\n\n if (schema.type === 'object' || schema.properties) {\n return `${JSON.stringify(mediaType)}: ${JsonSchemaTransformer.toDeclaration(schemaOrRef, options)} & { [key: string]: any }`\n }\n\n return `${JSON.stringify(mediaType)}: { [key: string]: any }`\n })\n .map((pair) => indent(2, pair))\n\n // $requestBodies = `export type ${typeName('RequestBody')} = ${$value || 'unknown'}`\n parameterBodies = [\n `interface ${this.typeName('ParameterBodies')} {`,\n ...$mediaTypes,\n '}',\n '',\n ].join('\\n')\n }\n\n return parameterBodies\n }\n\n private renderRequestParameters(operation: OpenAPIV3_1.OperationObject, options: JsonSchemaDeclarationRendererOptions): string {\n const mediaTypes = operation.requestBody && !JsonSchemaUtils.isRef(operation.requestBody)\n ? Object.keys(operation.requestBody.content || {})\n : []\n\n const base = `${this.typeName('RequestQuery')} & ${this.typeName('RouteParameters')} & ${this.typeName('RequestHeaders')}`\n\n if (mediaTypes.length === 1) {\n return `export type ${this.typeName('RequestParameters')} = ${base} & ${this.typeName('RequestBodies')}[${JSON.stringify(mediaTypes[0])}]`\n }\n\n if (mediaTypes.length > 1) {\n const unions = mediaTypes\n .map((mediaType) => `(${base} & ${this.typeName('RequestBodies')}[${JSON.stringify(mediaType)}] & { \"content-type\": ${JSON.stringify(mediaType)} })`)\n .join('\\n| ')\n\n return `export type ${this.typeName('RequestParameters')} = ${unions}`\n }\n\n return `export type ${this.typeName('RequestParameters')} = ${base}`\n }\n\n private rendererParameters(name: string, parameters: OpenAPIV3_1.ParameterObject[], options: JsonSchemaDeclarationRendererOptions): string {\n if (parameters.length === 0) {\n return `export type ${name} = {}`\n }\n\n const $parameters = parameters.map((parameter) => {\n const parameterName = `\"${parameter.name}\"`\n const $key = parameter.required ? parameterName : `${parameterName}?`\n const $value = JsonSchemaTransformer.toDeclaration(parameter.schema || { type: 'any' }, options)\n\n return indent(2, `${$key}: ${$value}`)\n })\n .join('\\n')\n\n\n return [\n `export type ${name} = {`,\n $parameters,\n '}',\n ].filter(Boolean).join('\\n')\n }\n\n private renderDependencies(): string {\n const schemaDefinitions = this.operationDefinition.getDependencies()\n .filter((schemaDefinition) => !SchemaDefinition.isUnknown(schemaDefinition))\n\n const $schemaDefinitions = schemaDefinitions\n .map((schemaDefinition) => {\n const filepath = this.options.getDependentSchemaDefinitionFilepath(schemaDefinition)\n const schemaName = schemaDefinition.name\n\n return `import type { ${schemaName} as ${alias(schemaName)} } from \"${filepath}\"`\n })\n .map((str) => (str.replace(/ from \"(\\.\\.?\\/.+?)(\\.ts|\\.mts|\\.cts|\\.js|\\.cjs|\\.mjs)?\"/, this.options.esm ? ' from \"$1.js\"' : ' from \"$1\"')))\n\n return [\n 'import type { KeqOperation, KeqPathParameterInit, KeqQueryInit } from \"keq\"',\n ...$schemaDefinitions,\n ].join('\\n')\n }\n\n render(): string {\n const { operation } = this.operationDefinition\n\n if (!operation.responses) return ''\n\n const jsonSchemaDeclarationRendererOptions: JsonSchemaDeclarationRendererOptions = {\n referenceTransformer: (schema: OpenAPIV3_1.ReferenceObject) => {\n return ReferenceTransformer.toDeclaration(schema, alias)\n },\n }\n\n const $dependencies = this.renderDependencies()\n\n const $responseBodies = this.renderResponseBodies(operation, jsonSchemaDeclarationRendererOptions)\n const $requestBodies = this.renderRequestBodies(operation, jsonSchemaDeclarationRendererOptions)\n const $parameterBodies = this.renderParameterBodies(this.operationDefinition, jsonSchemaDeclarationRendererOptions)\n const $requestParameters = this.renderRequestParameters(operation, jsonSchemaDeclarationRendererOptions)\n const $requestQuery = this.rendererParameters(\n `${this.typeName('RequestQuery')}`,\n operation.parameters?.filter((p) => !JsonSchemaUtils.isRef(p) && p.in === 'query') || [],\n jsonSchemaDeclarationRendererOptions,\n )\n const $routeParameters = this.rendererParameters(\n `${this.typeName('RouteParameters')}`,\n operation.parameters?.filter((p) => !JsonSchemaUtils.isRef(p) && p.in === 'path') || [],\n jsonSchemaDeclarationRendererOptions,\n )\n const $requestHeaders = this.rendererParameters(\n `${this.typeName('RequestHeaders')}`,\n operation.parameters?.filter((p) => !JsonSchemaUtils.isRef(p) && p.in === 'header') || [],\n jsonSchemaDeclarationRendererOptions,\n )\n\n return [\n '/* @anchor:file:start */',\n '',\n $dependencies,\n '',\n $responseBodies,\n '',\n $requestBodies,\n '',\n $requestQuery,\n '',\n $routeParameters,\n '',\n $requestHeaders,\n '',\n $parameterBodies || undefined,\n $requestParameters,\n '',\n `export interface ${this.typeName('Operation')}<STATUS extends keyof ${this.typeName('ResponseBodies')}, CONTENT_TYPE extends ${$parameterBodies ? `keyof ${this.typeName('ParameterBodies')}` : 'string'} > extends KeqOperation {`,\n ` requestParams: ${this.typeName('RouteParameters')} & { [key: string]: KeqPathParameterInit }`,\n ` requestQuery: ${this.typeName('RequestQuery')} & { [key: string]: KeqQueryInit }`,\n ` requestHeaders: ${this.typeName('RequestHeaders')} & { [key: string]: string | number }`,\n ` requestBody: ${$parameterBodies ? `${this.typeName('ParameterBodies')}[CONTENT_TYPE] | ` : 'object | '}BodyInit`,\n ` responseBody: ${this.typeName('ResponseBodies')}[STATUS]`,\n '}',\n '',\n '/* @anchor:file:end */',\n ].filter(R.isNotNil).join('\\n')\n }\n}\n","import * as changeCase from 'change-case'\nimport { OperationDefinition } from '~/models/index.js'\n\nexport type TypeNameFn = (name: string) => string\n\nexport function typeNameFactory(operationDefinition: OperationDefinition): TypeNameFn {\n const pascalCaseOperationId = changeCase.pascalCase(operationDefinition.operationId)\n return (name: string) => `${pascalCaseOperationId}${name}`\n}\n","import type { OpenAPIV3_1 } from '@scalar/openapi-types'\n\n\nexport function dereference<T extends OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ResponseObject | OpenAPIV3_1.ParameterObject | OpenAPIV3_1.RequestBodyObject | OpenAPIV3_1.ReferenceObject>($ref: string, swagger: OpenAPIV3_1.Document): T {\n let value\n\n for (const key of $ref.split('/')) {\n if (key === '#') {\n value = swagger\n } else {\n value = value[key]\n }\n\n if (!value) break\n }\n\n return value as T\n}\n","import * as R from 'ramda'\nimport jsonpointer from 'jsonpointer'\nimport type { OpenAPIV3_1 } from '@scalar/openapi-types'\nimport { JSONPath } from 'jsonpath-plus'\nimport { removeUndefinedRef } from './remove-undefined-ref.js'\nimport { dereference } from './dereference.js'\n\n\nfunction dereferencePathObject(swagger: OpenAPIV3_1.Document): void {\n const matches = JSONPath({\n path: '$.paths.*.$ref^',\n json: swagger,\n resultType: 'all',\n })\n\n for (const match of matches) {\n const value = dereference(match.value.$ref, swagger)\n jsonpointer.set(swagger, match.pointer, value)\n }\n}\n\nfunction dereferenceRequestBody(swagger: OpenAPIV3_1.Document): void {\n const matches = JSONPath({\n path: '$.paths.*.*.requestBody.$ref^',\n json: swagger,\n resultType: 'all',\n })\n\n for (const match of matches) {\n const value = dereference(match.value.$ref, swagger)\n jsonpointer.set(swagger, match.pointer, value)\n }\n}\n\nexport function dereferenceResponses(swagger: OpenAPIV3_1.Document): void {\n const matches = [\n ...JSONPath({\n path: '$.paths.*.*.responses.*.$ref^',\n json: swagger,\n resultType: 'all',\n }),\n ...JSONPath({\n path: '$.paths.*.*.responses.*.headers.*.$ref^',\n json: swagger,\n resultType: 'all',\n }),\n ]\n\n for (const match of matches) {\n const value = dereference(match.value.$ref, swagger)\n jsonpointer.set(swagger, match.pointer, value)\n }\n}\n\nfunction dereferenceParameters(swagger: OpenAPIV3_1.Document): void {\n const matches = JSONPath({\n path: '$.paths.*.*.parameters.*.$ref^',\n json: swagger,\n resultType: 'all',\n })\n\n for (const match of matches) {\n const value = dereference(match.value.$ref, swagger)\n jsonpointer.set(swagger, match.pointer, value)\n }\n}\n\nexport function dereferenceOperation(swagger: OpenAPIV3_1.Document): OpenAPIV3_1.Document {\n const shadow = R.clone(swagger)\n\n dereferencePathObject(shadow)\n dereferenceRequestBody(shadow)\n dereferenceResponses(shadow)\n dereferenceParameters(shadow)\n\n return removeUndefinedRef(shadow)\n}\n","import * as R from 'ramda'\nimport jsonpointer from 'jsonpointer'\nimport type { OpenAPIV3_1 } from '@scalar/openapi-types'\nimport { JSONPath } from 'jsonpath-plus'\nimport { isRefDefined } from './is-ref-defined.js'\n\n\n// remove schema $ref if the reference is not founded\nexport function removeUndefinedRef(swagger: OpenAPIV3_1.Document): OpenAPIV3_1.Document {\n const shadow = R.clone(swagger)\n\n const matches = JSONPath({\n path: \"$..*['$ref']^\",\n json: swagger,\n resultType: 'all',\n })\n\n for (const match of matches) {\n if (match.value.$ref && !isRefDefined(match.value.$ref, swagger)) {\n jsonpointer.set(shadow, match.pointer, R.omit(['$ref'], match.value))\n }\n }\n\n return shadow\n}\n","import * as R from 'ramda'\nimport type { OpenAPIV3_1 } from '@scalar/openapi-types'\n\n\nexport function isRefDefined($ref: string, swagger: OpenAPIV3_1.Document): boolean {\n if ($ref.startsWith('#/')) {\n const path = $ref.replace('#/', '').split('/')\n return R.path(path, swagger) !== undefined\n }\n\n return false\n}\n\n","import * as R from 'ramda'\nimport type { OpenAPIV3_1 } from '@scalar/openapi-types'\nimport { SupportedMethods } from '~/constants/supported-methods.js'\n\n\ntype OperationUpdater = (method: string, pathname: string, operation: OpenAPIV3_1.OperationObject) => string | undefined\n\n\nexport function updateOperationId(swagger: OpenAPIV3_1.Document, fn: OperationUpdater): OpenAPIV3_1.Document {\n const shadow = R.clone(swagger)\n\n for (const [pathname, pathItem] of Object.entries(shadow.paths || {})) {\n for (const m in pathItem) {\n const method = m.toLowerCase()\n if (!SupportedMethods.includes(method)) continue\n if (typeof pathItem[m] !== 'object' || Array.isArray(pathItem[m]) || pathItem[m] === null) continue\n\n const operation: OpenAPIV3_1.OperationObject = pathItem[m]\n const operationId = fn(method, pathname, operation)\n\n if (typeof operationId === 'string' && operationId.length > 0) {\n operation.operationId = operationId\n }\n }\n }\n\n return shadow\n}\n","import type { OpenAPIV3_1 } from '@scalar/openapi-types'\nimport { dereference } from './dereference.js'\nimport { JsonSchemaUtils } from '../json-schema-utils/index.js'\n\n\nexport function dereferenceDeep<T extends OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ResponseObject | OpenAPIV3_1.ParameterObject | OpenAPIV3_1.RequestBodyObject>($ref: string, swagger: OpenAPIV3_1.Document): T {\n const stack = [$ref]\n let value\n\n while (true) {\n const last = stack[stack.length - 1]\n value = dereference(last, swagger)\n\n if (JsonSchemaUtils.isRef(value)) {\n if (!stack.includes(value.$ref)) {\n stack.push(value.$ref)\n continue\n } else {\n // Circular reference detected\n throw new Error(`Circular reference detected: ${stack.join(' -> ')} -> ${value.$ref}`)\n }\n }\n\n break\n }\n\n return value as T\n}\n","import { upgrade } from '@scalar/openapi-parser'\nimport { OpenAPIV3_1 } from '@scalar/openapi-types'\n\nexport function To3_1(openapi: object): OpenAPIV3_1.Document {\n const { specification } = upgrade(openapi)\n return specification\n}\n","import { dereference } from './dereference.js'\nimport { dereferenceOperation } from './dereference-operation.js'\nimport { isRefDefined } from './is-ref-defined.js'\nimport { removeUndefinedRef } from './remove-undefined-ref.js'\nimport { updateOperationId } from './update-operation-id.js'\nimport { dereferenceDeep } from './dereference-deep.js'\nimport { To3_1 } from './to-3_1.js'\n\n\nexport class OpenapiUtils {\n static isRefDefined = isRefDefined\n static dereference = dereference\n static dereferenceDeep = dereferenceDeep\n static removeUndefinedRef = removeUndefinedRef\n static dereferenceOperation = dereferenceOperation\n static updateOperationId = updateOperationId\n static to3_1 = To3_1\n}\n","import * as R from 'ramda'\nimport { OperationDefinition } from '~/models/index.js'\nimport { Renderer } from '../types/renderer.js'\nimport { typeNameFactory, TypeNameFn } from './utils/index.js'\nimport { indent } from '~/utils/indent.js'\nimport { Exception } from '~/exception.js'\nimport { CommentRenderer } from './comment.renderer.js'\nimport { OperationDefinitionSnippet, OperationDefinitionSnippetOptions } from './typescript-helper.js'\n\n\nexport interface OperationDefinitionMicroFunctionRendererOptions extends OperationDefinitionSnippetOptions {\n getOperationDefinitionDeclarationFilepath(operationDefinition: OperationDefinition): string\n getRequestFilepath(): string\n}\n\nexport class OperationDefinitionMicroFunctionRenderer implements Renderer {\n helper: OperationDefinitionSnippet\n typeName: TypeNameFn\n\n constructor(\n private readonly operationDefinition: OperationDefinition,\n private readonly options: OperationDefinitionMicroFunctionRendererOptions,\n ) {\n this.typeName = typeNameFactory(operationDefinition)\n this.helper = new OperationDefinitionSnippet(operationDefinition, options)\n }\n\n render(): string {\n const { operation, operationId, method, pathname } = this.operationDefinition\n if (!operation.responses) return ''\n\n const $dependencies = this.renderDependencies()\n const $comment = new CommentRenderer(this.operationDefinition).render()\n\n const moduleName = this.operationDefinition.module.name\n\n const $method = method.toLowerCase()\n const $queryParameters = this.helper.renderRequestQuery()\n const $headerParameters = this.helper.renderRequestHeaders()\n const $pathParameters = this.helper.renderRequestPathParameters()\n\n const $mediaType = this.helper.renderMediaType()\n\n const $requestBody = this.helper.renderRequestBody()\n\n const $operationDeclaration = this.renderOperationDeclaration()\n\n return [\n '/* @anchor:file:start */',\n '',\n $dependencies,\n '',\n `const moduleName = \"${moduleName}\"`,\n `const method = \"${method}\"`,\n `const pathname = \"${pathname}\"`,\n '',\n $comment || undefined,\n `export ${$operationDeclaration} {`,\n ` const req = request.${$method}<${this.typeName('ResponseBodies')}[STATUS]>(\"${pathname}\")`,\n ' .option(\\'module\\', { name: moduleName, pathname, method })',\n '',\n $mediaType || undefined,\n ' /* @anchor:query:start */',\n $queryParameters ? indent(2, $queryParameters) : undefined,\n ' /* @anchor:query:end */',\n '',\n ' /* @anchor:headers:start */',\n $headerParameters ? indent(2, $headerParameters) : undefined,\n ' /* @anchor:headers:end */',\n '',\n ' /* @anchor:path-parameters:start */',\n $pathParameters ? indent(2, $pathParameters) : undefined,\n ' /* @anchor:path-parameters:end */',\n '',\n ' /* @anchor:body:start */',\n $requestBody ? indent(2, $requestBody) : undefined,\n ' /* @anchor:body:end */',\n '',\n ' /* @anchor:operation-return */',\n ` return req as ReturnType<typeof ${operationId}<STATUS${$operationDeclaration.includes('CONTENT_TYPE') ? ', CONTENT_TYPE' : ''}>>`,\n '}',\n '',\n `${operationId}.pathname = pathname`,\n `${operationId}.method = method`,\n '/* @anchor:file:end */',\n ].filter(R.isNotNil).join('\\n')\n }\n\n private renderDependencies(): string {\n const declarationFilepath = this.options.getOperationDefinitionDeclarationFilepath(this.operationDefinition)\n const requestFilepath = this.options.getRequestFilepath()\n\n return [\n 'import { Keq } from \"keq\"',\n `import { request } from \"${requestFilepath}\"`,\n `import type { ${this.typeName('Operation')}, ${this.typeName('ResponseBodies')}, ${this.typeName('RequestParameters')} } from \"${declarationFilepath}\"`,\n `export type { ${this.typeName('RequestQuery')}, ${this.typeName('RequestHeaders')}, ${this.typeName('RequestBodies')} } from \"${declarationFilepath}\"`,\n ]\n .map((str) => (str.replace(/ from \"(\\.\\.?\\/.+?)(\\.ts|\\.mts|\\.cts|\\.js|\\.cjs|\\.mjs)?\"/, this.options.esm ? ' from \"$1.js\"' : ' from \"$1\"')))\n .join('\\n')\n }\n\n private renderOperationDeclaration(): string {\n const { operationId } = this.operationDefinition\n\n const mediaTypes = this.helper.getRequestMediaTypes()\n\n if (mediaTypes.length === 0) {\n return `function ${operationId}<STATUS extends keyof ${this.typeName('ResponseBodies')}, CONTENT_TYPE extends never = never>(args?: ${this.typeName('RequestParameters')}): Keq<${this.typeName('Operation')}<STATUS, CONTENT_TYPE>>`\n } else if (mediaTypes.length === 1) {\n return `function ${operationId}<STATUS extends keyof ${this.typeName('ResponseBodies')}, CONTENT_TYPE extends ${JSON.stringify(mediaTypes[0])} = ${JSON.stringify(mediaTypes[0])}>(args?: ${this.typeName('RequestParameters')}): Keq<${this.typeName('Operation')}<STATUS, CONTENT_TYPE>>`\n } else if (mediaTypes.length > 1) {\n return `function ${operationId}<STATUS extends keyof ${this.typeName('ResponseBodies')}, CONTENT_TYPE extends ${this.typeName('RequestParameters')}[\"content-type\"]>(args?: Extract<${this.typeName('RequestParameters')}, { \"content-type\": CONTENT_TYPE }>): Keq<${this.typeName('Operation')}<STATUS, CONTENT_TYPE>>`\n }\n\n throw new Exception(this.operationDefinition.module, '[operationDeclarationRenderer] Unreachable')\n }\n}\n","import { CustomError } from 'ts-custom-error'\nimport wrap from 'word-wrap'\nimport { ModuleDefinition } from '~/models/index.js'\n\n\nexport class Exception extends CustomError {\n constructor(module: ModuleDefinition | string, message: string) {\n const moduleName = typeof module === 'string' ? module : module.name\n\n const msg = wrap(message, { width: 60, indent: ' ' })\n super(`${moduleName} module failed to compile:\\n${msg}`)\n\n Object.defineProperty(this, 'name', { value: 'KeqCLI_Exception' })\n }\n}\n","import * as R from 'ramda'\nimport { KeqQueryOptions } from 'keq'\nimport { OperationDefinition } from '~/models/index.js'\nimport { KeqQueryOptionsFactory } from '~/types/index.js'\nimport { typeNameFactory, TypeNameFn } from './utils/index.js'\nimport { OpenAPIV3_1 } from '@scalar/openapi-types'\nimport { JsonSchemaUtils } from '~/utils/json-schema-utils/index.js'\nimport { OpenapiUtils } from '~/utils/openapi-utils/index.js'\n\n\nexport interface OperationDefinitionSnippetOptions {\n esm?: boolean\n qs?: KeqQueryOptions | KeqQueryOptionsFactory\n}\n\nexport class OperationDefinitionSnippet {\n typeName: TypeNameFn\n\n constructor(\n private readonly operationDefinition: OperationDefinition,\n private readonly options: OperationDefinitionSnippetOptions,\n ) {\n this.typeName = typeNameFactory(operationDefinition)\n }\n\n\n private getQsParameters(parameter: OpenAPIV3_1.ParameterObject): KeqQueryOptions | undefined {\n if (typeof this.options.qs === 'function') {\n return this.options.qs(parameter)\n } else if (typeof this.options.qs === 'object') {\n return this.options.qs\n }\n\n const style = parameter.style || 'form'\n const explode = parameter.explode ?? true\n\n if (style === 'deepObject') {\n return { arrayFormat: 'brackets' }\n } else if (explode) {\n return { arrayFormat: 'repeat' }\n } else {\n if (style === 'form') {\n return { arrayFormat: 'comma' }\n } else if (style === 'spaceDelimited') {\n return { arrayFormat: 'space' }\n } else if (style === 'pipeDelimited') {\n return { arrayFormat: 'pipe' }\n }\n }\n\n return {}\n }\n\n\n // render: \"if (args && 'Authorization' in args) req.header('Authorization', args['Authorization'])\"\n renderRequestHeaders(): string {\n const { operation } = this.operationDefinition\n\n const $headers = (operation.parameters || [])\n .filter((p): p is OpenAPIV3_1.ParameterObject => !JsonSchemaUtils.isRef(p))\n .filter((p) => p.in === 'header')\n .map((p) => `if (args && ${JSON.stringify(p.name)} in args) req.header(${JSON.stringify(p.name)}, args[${JSON.stringify(p.name)}])`)\n .join('\\n')\n\n return $headers\n }\n\n // render: \"if (args && 'id' in args) req.query('id', args['id'], options)\"\n renderRequestQuery(): string {\n const { operation } = this.operationDefinition\n\n const $query = (operation.parameters || [])\n .filter((p): p is OpenAPIV3_1.ParameterObject => !JsonSchemaUtils.isRef(p))\n .filter((p) => p.in === 'query')\n .map((p) => {\n const option = this.getQsParameters(p)\n const $option = (!option || R.isEmpty(option)) ? '' : `, ${JSON.stringify(option)}`\n\n return `if (args && ${JSON.stringify(p.name)} in args) req.query(${JSON.stringify(p.name)}, args[${JSON.stringify(p.name)}]${$option})`\n })\n .join('\\n')\n\n return $query\n }\n\n // render: \"if (args && 'id' in args) req.params('id', args['id'])\"\n renderRequestPathParameters(): string {\n const { operation } = this.operationDefinition\n\n const $pathParameters = (operation.parameters || [])\n .filter((p): p is OpenAPIV3_1.ParameterObject => !JsonSchemaUtils.isRef(p))\n .filter((p) => p.in === 'path')\n .map((p) => `if (args && ${JSON.stringify(p.name)} in args) req.params(${JSON.stringify(p.name)}, args[${JSON.stringify(p.name)}])`)\n .join('\\n')\n\n return $pathParameters\n }\n\n getRequestMediaTypes(): string[] {\n const { operation } = this.operationDefinition\n const requestBodyContent = (operation.requestBody?.content || {}) as Record<string, OpenAPIV3_1.MediaTypeObject>\n return Object.keys(requestBodyContent)\n }\n\n // render \"req.type(\"application/json\")\"\n renderMediaType(): string {\n const mediaTypes = this.getRequestMediaTypes()\n\n if (mediaTypes.length === 1 && !mediaTypes[0].endsWith('/*')) {\n return `req.type(\"${mediaTypes[0]}\")\\n`\n } else if (mediaTypes.some((mediaType) => mediaType === '*/*')) {\n // no-op\n } else if (mediaTypes.some((mediaType) => mediaType.endsWith('/*'))) {\n return 'if(args?.[\"content-type\"]) req.type(args[\"content-type\"])\\n'\n } else if (mediaTypes.length > 1) {\n return 'if(args?.[\"content-type\"]) req.type(args[\"content-type\"])\\n'\n }\n\n return ''\n }\n\n\n // render body\n\n private requestBodyFormDataPropertyRenderer(\n propertyName: string,\n propertySchema: OpenAPIV3_1.ReferenceObject | OpenAPIV3_1.SchemaObject,\n mediaType: string,\n ): string {\n try {\n const $propertyName = JSON.stringify(propertyName)\n\n const schema = JsonSchemaUtils.isRef(propertySchema)\n ? OpenapiUtils.dereferenceDeep<OpenAPIV3_1.SchemaObject>(propertySchema.$ref, this.operationDefinition.document.specification)\n : propertySchema\n\n if (\n (schema.type === 'string' && schema.format === 'binary')\n || schema.contentMediaType === 'application/octet-stream') {\n return `if (args && ${$propertyName} in args && args[${$propertyName}]) req.attach(${$propertyName}, args[${$propertyName}])`\n } else if (\n schema.type === 'string'\n || (schema.type === 'array' && schema.items && schema.items.type === 'string')\n ) {\n return `if (args && ${$propertyName} in args && args[${$propertyName}] !== undefined) req.field(${$propertyName}, args[${$propertyName}])`\n } else if (schema.type === 'number' || schema.type === 'integer') {\n return `if (args && ${$propertyName} in args && args[${$propertyName}] !== undefined) req.field(${$propertyName}, String(args[${$propertyName}]))`\n }\n\n return `if (args && ${$propertyName} in args && args[${$propertyName}] !== undefined) req.field(${$propertyName}, String(args[${$propertyName}]) /* type is non-string in schema; triggers type coercion here */)`\n } catch (err) {\n return this.renderErrorComment(err, mediaType)\n }\n }\n\n private requestBodyPropertyRenderer(\n propertyName: string,\n propertySchema: OpenAPIV3_1.ReferenceObject | OpenAPIV3_1.SchemaObject,\n mediaType: string,\n ): string {\n if (mediaType === 'application/json') {\n const $propertyName = JSON.stringify(propertyName)\n return `if (args && ${$propertyName} in args) req.send({ ${$propertyName}: args[${$propertyName}] })`\n } else if (mediaType === 'multipart/form-data') {\n return this.requestBodyFormDataPropertyRenderer(propertyName, propertySchema, mediaType)\n } else {\n throw new Error(`Unsupported media type: ${mediaType}`)\n }\n }\n\n renderRequestBody(): string {\n const { operation } = this.operationDefinition\n const requestBodyContent = (operation.requestBody?.content || {}) as Record<string, OpenAPIV3_1.MediaTypeObject>\n\n const $requestBody = Object.entries(requestBodyContent)\n .map(([mediaType, mediaTypeObject]): string | undefined => {\n if (!mediaTypeObject.schema) return\n\n try {\n const schema = JsonSchemaUtils.isRef(mediaTypeObject.schema)\n ? OpenapiUtils.dereferenceDeep<OpenAPIV3_1.SchemaObject>(mediaTypeObject.schema.$ref, this.operationDefinition.document.specification)\n : mediaTypeObject.schema\n\n if (schema.type !== 'object') return\n\n const properties = (schema.properties || {}) as OpenAPIV3_1.ReferenceObject | OpenAPIV3_1.SchemaObject\n\n return Object.entries(properties)\n .map(([propertyName, propertySchema]) => this.requestBodyPropertyRenderer(propertyName, propertySchema, mediaType))\n .join('\\n')\n } catch (err) {\n return this.renderErrorComment(err, mediaType)\n }\n })\n .filter(R.isNotNil)\n .join('\\n')\n\n return $requestBody\n }\n\n private renderErrorComment(err: unknown, mediaType: string): string {\n const $err = String(err)\n .split('\\n')\n .map(((line) => ` * ${line}`))\n .join('\\n')\n\n return [\n '/**',\n ` * Unable to dereference schema for media type ${mediaType}`,\n $err,\n ' */',\n ].join('\\n')\n }\n}\n","import * as R from 'ramda'\nimport { TypeNameFn, typeNameFactory } from './utils/index.js'\nimport { OperationDefinition } from '~/models/index.js'\nimport { OperationDefinitionSnippet, OperationDefinitionSnippetOptions } from './typescript-helper.js'\nimport { CommentRenderer } from './comment.renderer.js'\nimport { indent } from '~/utils/indent.js'\nimport { Renderer } from '../types/renderer.js'\nimport { Exception } from '~/exception.js'\n\n\nexport type OperationDefinitionNestjsMethodRendererOptions = OperationDefinitionSnippetOptions\n\nexport class OperationDefinitionNestjsMethodRenderer implements Renderer {\n helper: OperationDefinitionSnippet\n typeName: TypeNameFn\n\n constructor(\n private readonly operationDefinition: OperationDefinition,\n private readonly options: OperationDefinitionNestjsMethodRendererOptions,\n ) {\n this.typeName = typeNameFactory(operationDefinition)\n this.helper = new OperationDefinitionSnippet(operationDefinition, options)\n }\n\n\n render(): string {\n // const operationId = changeCase.camelCase(this.operationDefinition.operationId)\n const pathname = this.operationDefinition.pathname\n\n const $comment = new CommentRenderer(this.operationDefinition).render()\n const $method = this.operationDefinition.method.toLowerCase()\n const $mediaType = this.helper.renderMediaType()\n const $operationDeclaration = this.renderOperationDeclaration(this.operationDefinition)\n const $queryParameters = this.helper.renderRequestQuery()\n const $headerParameters = this.helper.renderRequestHeaders()\n const $pathParameters = this.helper.renderRequestPathParameters()\n const $requestBody = this.helper.renderRequestBody()\n\n return [\n $comment,\n `${$operationDeclaration} {`,\n ` const req = this.request.${$method}<${this.typeName('ResponseBodies')}[STATUS]>(${JSON.stringify(pathname)})`,\n ' .option(',\n ' \"module\",',\n ' {',\n ` name: ${JSON.stringify(this.operationDefinition.module.name)},`,\n ` pathname: ${JSON.stringify(pathname)},`,\n ` method: ${JSON.stringify($method)},`,\n ' },',\n ' )',\n '',\n $mediaType ? indent(2, $mediaType) : undefined,\n '',\n ' /* @anchor:query:start */',\n $queryParameters ? indent(2, $queryParameters) : undefined,\n ' /* @anchor:query:end */',\n '',\n ' /* @anchor:headers:start */',\n $headerParameters ? indent(2, $headerParameters) : undefined,\n ' /* @anchor:headers:end */',\n '',\n ' /* @anchor:path-parameters:start */',\n $pathParameters ? indent(2, $pathParameters) : undefined,\n ' /* @anchor:path-parameters:end */',\n '',\n ' /* @anchor:body:start */',\n $requestBody ? indent(2, $requestBody) : undefined,\n ' /* @anchor:body:end */',\n '',\n ' return req',\n '}',\n ].filter(R.isNotNil).join('\\n')\n }\n\n private renderOperationDeclaration(operationDefinition: OperationDefinition): string {\n const { operationId } = operationDefinition\n const typeName = typeNameFactory(operationDefinition)\n\n const mediaTypes = this.helper.getRequestMediaTypes()\n\n if (mediaTypes.length === 0) {\n return `${operationId}<STATUS extends keyof ${typeName('ResponseBodies')}, CONTENT_TYPE extends never = never>(args?: ${typeName('RequestParameters')}): Keq<${typeName('Operation')}<STATUS, CONTENT_TYPE>>`\n } else if (mediaTypes.length === 1) {\n return `${operationId}<STATUS extends keyof ${typeName('ResponseBodies')}, CONTENT_TYPE extends ${JSON.stringify(mediaTypes[0])} = ${JSON.stringify(mediaTypes[0])}>(args?: ${typeName('RequestParameters')}): Keq<${typeName('Operation')}<STATUS, CONTENT_TYPE>>`\n } else if (mediaTypes.length > 1) {\n return `${operationId}<STATUS extends keyof ${typeName('ResponseBodies')}, CONTENT_TYPE extends ${typeName('RequestParameters')}[\"content-type\"]>(args?: Extract<${typeName('RequestParameters')}, { \"content-type\": CONTENT_TYPE }>): Keq<${typeName('Operation')}<STATUS, CONTENT_TYPE>>`\n }\n\n throw new Exception(operationDefinition.module, '[operationDeclarationRenderer] Unreachable')\n }\n}\n","import * as R from 'ramda'\nimport { OperationDefinition } from '~/models/index.js'\nimport { CommentRenderer } from './comment.renderer.js'\nimport { DeclarationRenderer, OperationDefinitionDeclarationRendererOptions } from './declaration.renderer.js'\nimport { OperationDefinitionMicroFunctionRendererOptions, OperationDefinitionMicroFunctionRenderer } from './micro-function.renderer.js'\nimport { OperationDefinitionNestjsMethodRenderer, OperationDefinitionNestjsMethodRendererOptions } from './nestjs-method.renderer.js'\n\n\nexport class OperationDefinitionTransformer {\n static toDeclaration(operationDefinition: OperationDefinition, options: OperationDefinitionDeclarationRendererOptions): string {\n return new DeclarationRenderer(operationDefinition, options).render()\n }\n\n static toMicroFunction(operationDefinition: OperationDefinition, options: OperationDefinitionMicroFunctionRendererOptions): string {\n return new OperationDefinitionMicroFunctionRenderer(operationDefinition, options).render()\n }\n\n static toNestjsMethod(operationDefinition: OperationDefinition, options: OperationDefinitionNestjsMethodRendererOptions): string {\n return new OperationDefinitionNestjsMethodRenderer(operationDefinition, options).render()\n }\n\n static toComment(operationDefinition: OperationDefinition): string {\n return new CommentRenderer(operationDefinition).render()\n }\n}\n","import * as path from 'path'\nimport { Artifact } from '~/models/index.js'\n\n\ninterface EntrypointTypescriptRendererOptions {\n esm?: boolean\n\n // The directory path of the entrypoint file being generated\n dirpath: string\n}\n\nexport class EntrypointTransformer {\n static toTypescript(exports: Artifact[], options: EntrypointTypescriptRendererOptions): string {\n const $exports = exports.map((exportArtifact) => {\n const relativePath = path.relative(\n options.dirpath,\n exportArtifact.filepath,\n )\n .replace(/(\\.ts|\\.mts|\\.cts|\\.js|\\.cjs|\\.mjs)?$/, options.esm ? '.js' : '')\n\n return relativePath.startsWith('.')\n ? `export * from '${relativePath}'`\n : `export * from './${relativePath}'`\n })\n\n return [\n '/* @anchor:file:start */',\n '',\n ...$exports,\n '',\n '/* @anchor:file:end */',\n ].join('\\n')\n }\n}\n","import * as R from 'ramda'\nimport * as changeCase from 'change-case'\nimport { ApiDocumentV3_1, OperationDefinition } from '~/models/index.js'\nimport { Renderer } from '../types/renderer.js'\nimport { OperationDefinitionTransformer, typeNameFactory } from '../operation-definition/index.js'\nimport { KeqQueryOptionsFactory } from '~/types/index.js'\nimport { KeqQueryOptions } from 'keq'\nimport { indent } from '~/utils/indent.js'\n\n\nexport interface ApiDocumentNestjsClientRendererOptions {\n esm?: boolean\n qs?: KeqQueryOptions | KeqQueryOptionsFactory\n\n getOperationDefinitionDeclarationFilepath(this: void, operationDefinition: OperationDefinition): string\n}\n\n\nexport class NestjsClientRenderer implements Renderer {\n constructor(\n private readonly document: ApiDocumentV3_1,\n private readonly options: ApiDocumentNestjsClientRendererOptions,\n ) {\n\n }\n\n private renderDependencies(): string {\n const $operations = this.document.operations\n .map((operationDefinition) => {\n const filepath = this.options.getOperationDefinitionDeclarationFilepath(operationDefinition)\n const typeName = typeNameFactory(operationDefinition)\n\n return `import type { ${typeName('Operation')}, ${typeName('ResponseBodies')}, ${typeName('RequestParameters')} } from \"${filepath}\"`\n })\n .map((str) => (str.replace(/ from \"(\\.\\.?\\/.+?)(\\.ts|\\.mts|\\.cts|\\.js|\\.cjs|\\.mjs)?\"/, this.options.esm ? ' from \"$1.js\"' : ' from \"$1\"')))\n\n return [\n 'import { Injectable, Logger } from \"@nestjs/common\"',\n 'import { Keq, KeqRequest } from \"keq\"',\n ...$operations,\n ]\n .join('\\n')\n }\n\n render(): string {\n const moduleName = changeCase.pascalCase(this.document.module.name)\n\n const $dependencies = this.renderDependencies()\n const $operations = this.document.operations\n .map((operation) => OperationDefinitionTransformer.toNestjsMethod(operation, {\n esm: this.options.esm,\n qs: this.options.qs,\n }))\n .join('\\n\\n')\n\n return [\n '/* @anchor:file:start */',\n '',\n $dependencies,\n '',\n '@Injectable()',\n `export class ${moduleName}Client {`,\n ` private readonly logger = new Logger(${moduleName}Client.name)`,\n '',\n ' constructor(',\n ' // @anchor:client-constructor-parameters:start',\n ' private readonly request: KeqRequest,',\n ' // @anchor:client-constructor-parameters:end',\n ' ) {}',\n '',\n indent(2, $operations),\n '}',\n '',\n '/* @anchor:file:end */',\n ].filter(R.isNotNil).join('\\n')\n }\n}\n","import * as changeCase from 'change-case'\nimport { ApiDocumentV3_1 } from '~/models/api-document_v3_1.js'\n\nexport interface ApiDocumentNestjsModuleRendererOptions {\n esm?: boolean\n\n getNestjsClientFilepath(document: ApiDocumentV3_1): string\n}\n\nexport class NestjsModuleRenderer {\n constructor(\n private readonly document: ApiDocumentV3_1,\n private readonly options: ApiDocumentNestjsModuleRendererOptions,\n ) {\n }\n\n render(): string {\n const moduleName = changeCase.pascalCase(this.document.module.name)\n const clientFilepath = this.options.getNestjsClientFilepath(this.document)\n .replace(/(\\.ts|\\.mts|\\.cts|\\.js|\\.cjs|\\.mjs)?$/, this.options.esm ? '.js' : '')\n\n return [\n '/* @anchor:file:start */',\n 'import { Module, Inject, ConfigurableModuleBuilder, Global } from \"@nestjs/common\"',\n 'import { KeqRequest } from \"keq\"',\n 'import { KeqModuleOptions } from \"@keq-request/nestjs\"',\n `import { ${moduleName}Client } from \"${clientFilepath}\"`,\n '',\n '',\n 'const { ConfigurableModuleClass, MODULE_OPTIONS_TOKEN, OPTIONS_TYPE, ASYNC_OPTIONS_TYPE } = new ConfigurableModuleBuilder<KeqModuleOptions>().build()',\n '',\n '@Global()',\n '@Module({',\n ' imports: [],',\n ' controllers: [],',\n ` providers: [${moduleName}Client],`,\n ` exports: [${moduleName}Client],`,\n '})',\n `export class ${moduleName}Module extends ConfigurableModuleClass {`,\n '',\n ' constructor(',\n ' @Inject(MODULE_OPTIONS_TOKEN) private readonly options: KeqModuleOptions,',\n ' private readonly request: KeqRequest,',\n ' ) {',\n ' super()',\n ' }',\n '',\n ' onModuleInit() {',\n ' if (this.options.middlewares) {',\n ' for (const middleware of this.options.middlewares) {',\n ' this.request.use(middleware)',\n ' }',\n ' }',\n ' }',\n '}',\n '',\n '/* @anchor:file:end */',\n ].join('\\n')\n }\n}\n","import { ApiDocumentV3_1 } from '~/models/index.js'\nimport { ApiDocumentNestjsClientRendererOptions, NestjsClientRenderer } from './nestjs-client.renderer.js'\nimport { ApiDocumentNestjsModuleRendererOptions, NestjsModuleRenderer } from './nestjs-module.renderer.js'\n\n\nexport class ApiDocumentTransformer {\n static toNestjsModule(document: ApiDocumentV3_1, options: ApiDocumentNestjsModuleRendererOptions): string {\n return new NestjsModuleRenderer(document, options).render()\n }\n\n static toNestjsClient(document: ApiDocumentV3_1, options: ApiDocumentNestjsClientRendererOptions): string {\n return new NestjsClientRenderer(document, options).render()\n }\n}\n","import * as R from 'ramda'\nimport * as path from 'path'\nimport { Artifact, ModuleDefinition, SchemaDefinition } from '~/models/index.js'\nimport { Compiler, TaskWrapper } from '~/compiler/index.js'\nimport { SchemaDefinitionTransformer } from '~/transformers/index.js'\nimport { EntrypointTransformer } from '~/transformers/entrypoint/entrypoint.transformer.js'\nimport { FileNamingStyle } from '~/constants/file-naming-style.js'\nimport * as changeCase from 'change-case'\nimport type { Generator, RuntimeConfig } from '~/types/index.js'\nimport { MetadataStorage } from '../../constants/metadata-storage.js'\n\n\nexport const SCHEMA_GENERATOR = 'schemaGenerator'\n\nexport class SchemaDeclarationGenerator implements Generator {\n async compile(compiler: Compiler, task: TaskWrapper): Promise<Artifact[]> {\n const context = compiler.context\n const metadata = MetadataStorage.get(compiler)!\n\n const rc = context.rc!\n // const matcher = context.matcher!\n const documents = context.documents!\n // .filter((document) => !matcher.isModuleIgnored(document.module))\n\n const schemaDefinitions = documents.flatMap((document) => document.schemas)\n\n const artifactMap = new Map<SchemaDefinition, Artifact>(\n await Promise.all(\n schemaDefinitions.map(async (schemaDefinition) => (<const>[\n schemaDefinition,\n await metadata.hooks.afterSchemaDeclarationArtifactGenerated.promise(\n this.generateSchemaDefinitionsArtifact(schemaDefinition, rc),\n schemaDefinition,\n task,\n ),\n ])),\n ),\n )\n\n\n const entrypoints = R.collectBy(\n (schemaDefinition) => schemaDefinition.module.name,\n schemaDefinitions,\n )\n .map((schemaDefinitions) => <const>[\n schemaDefinitions[0].module,\n schemaDefinitions\n .map((schemaDefinition) => artifactMap.get(schemaDefinition))\n .filter((artifact): artifact is Artifact => Boolean(artifact)),\n ])\n\n .map(([moduleDefinition, artifacts]) => this.generateEntrypointArtifact(\n moduleDefinition,\n artifacts,\n rc,\n ))\n\n return [...artifactMap.values(), ...entrypoints]\n }\n\n private generateSchemaDefinitionsArtifact(schemaDefinition: SchemaDefinition, rc: RuntimeConfig): Artifact {\n const filepath = SchemaDeclarationGenerator.getSchemaDefinitionArtifactFilepath(schemaDefinition, rc.fileNamingStyle)\n const dirpath = path.dirname(filepath)\n\n const artifact = new Artifact({\n id: SchemaDeclarationGenerator.getSchemaDefinitionArtifactId(schemaDefinition),\n filepath,\n content: SchemaDefinitionTransformer.toDeclaration(\n schemaDefinition,\n {\n esm: rc.esm,\n getDependentSchemaDefinitionFilepath(dependentSchemaDefinition: SchemaDefinition): string {\n const relativePath = path.relative(\n dirpath,\n SchemaDeclarationGenerator.getSchemaDefinitionArtifactFilepath(dependentSchemaDefinition, rc.fileNamingStyle),\n )\n\n return relativePath.startsWith('.') ? relativePath : `./${relativePath}`\n },\n },\n ),\n extensionName: '.schema.ts',\n })\n\n return artifact\n }\n\n private generateEntrypointArtifact(moduleDefinition: ModuleDefinition, exports: Artifact[], rc: RuntimeConfig): Artifact {\n const filepath = SchemaDeclarationGenerator.getEntrypointArtifactFilepath(moduleDefinition, rc.fileNamingStyle)\n const dirpath = path.dirname(filepath)\n\n const artifact = new Artifact({\n id: SchemaDeclarationGenerator.getEntrypointArtifactId(moduleDefinition),\n filepath,\n content: EntrypointTransformer.toTypescript(exports, { dirpath }),\n })\n\n return artifact\n }\n\n static getEntrypointArtifactFilepath(moduleDefinition: ModuleDefinition, fileNamingStyle: FileNamingStyle): string {\n return [\n '.',\n changeCase[fileNamingStyle](moduleDefinition.name),\n 'types',\n 'components',\n 'schemas',\n 'index.ts',\n ].join('/')\n }\n\n static getEntrypointArtifactId(moduleDefinition: ModuleDefinition): string {\n return `${moduleDefinition.address}/components/schemas/entrypoint?generator=${SCHEMA_GENERATOR}`\n }\n\n static getSchemaDefinitionArtifactFilepath(schemaDefinition: SchemaDefinition, fileNamingStyle: FileNamingStyle): string {\n const filename = `${changeCase[fileNamingStyle](schemaDefinition.name)}.schema.ts`\n return [\n '.',\n changeCase[fileNamingStyle](schemaDefinition.module.name),\n 'types',\n 'components',\n 'schemas',\n filename,\n ].join('/')\n }\n\n static getSchemaDefinitionArtifactId(schemaDefinition: SchemaDefinition): string {\n return `${schemaDefinition.id}?generator=${SCHEMA_GENERATOR}`\n }\n}\n","import { AsyncSeriesWaterfallHook } from 'tapable'\nimport { Compiler, TaskWrapper } from '~/compiler/index.js'\nimport { Artifact, OperationDefinition, SchemaDefinition } from '~/models/index.js'\n\n\nexport interface GenerateDeclarationPluginMetadata {\n hooks: {\n afterEntrypointArtifactGenerated: AsyncSeriesWaterfallHook<[Artifact, TaskWrapper]>\n afterSchemaDeclarationArtifactGenerated: AsyncSeriesWaterfallHook<[Artifact, SchemaDefinition, TaskWrapper]>\n afterOperationDeclarationArtifactGenerated: AsyncSeriesWaterfallHook<[Artifact, OperationDefinition, TaskWrapper]>\n }\n}\n\nexport const MetadataStorage = new WeakMap<Compiler, GenerateDeclarationPluginMetadata>()\n","import { Compiler, TaskWrapper } from '~/compiler/index.js'\nimport { Artifact } from '~/models/index.js'\nimport { Generator } from '~/types/index.js'\n\n\nexport const MICRO_FUNCTION_REQUEST_GENERATOR = 'microFunctionRequestGenerator'\n\nexport class RequestGenerator implements Generator {\n private generateRequestArtifact(): Artifact {\n const content = [\n '/* @anchor:file:start */',\n '',\n 'import { KeqRequest } from \"keq\"',\n '',\n '/* @anchor:request-declaration */',\n 'export const request = new KeqRequest()',\n '',\n '/* @anchor:file:end */',\n ].join('\\n')\n\n return new Artifact({\n id: RequestGenerator.getRequestArtifactId(),\n filepath: RequestGenerator.getRequestArtifactFilepath(),\n content,\n })\n }\n\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async compile(compiler: Compiler, task: TaskWrapper): Promise<Artifact[]> {\n return [\n this.generateRequestArtifact(),\n ]\n }\n\n static getRequestArtifactFilepath(): string {\n return './request.ts'\n }\n\n static getRequestArtifactId(): string {\n return `request?generator=${MICRO_FUNCTION_REQUEST_GENERATOR}`\n }\n}\n","import { AsyncSeriesWaterfallHook } from 'tapable'\nimport { Plugin } from '~/types/index.js'\nimport { Compiler, TaskWrapper } from '~/compiler/index.js'\nimport { ApiDocumentV3_1, Artifact } from '~/models/index.js'\nimport { GenerateNestjsModulePluginMetadata, MetadataStorage } from './constants/index.js'\nimport { NestjsModuleGenerator } from './generators/nestjs-module.generator.js'\n\n\nexport class GenerateNestjsModulePlugin implements Plugin {\n private readonly nestjsModuleGenerator = new NestjsModuleGenerator()\n\n apply(compiler: Compiler): void {\n GenerateNestjsModulePlugin.register(compiler)\n\n compiler.hooks.compile.tapPromise(GenerateNestjsModulePlugin.name, async (task) => {\n const artifacts = await this.nestjsModuleGenerator.compile(compiler, task)\n compiler.context.artifacts!.push(...artifacts)\n })\n }\n\n static register(compiler: Compiler): GenerateNestjsModulePluginMetadata {\n if (!MetadataStorage.has(compiler)) {\n MetadataStorage.set(compiler, {\n hooks: {\n afterNestjsModuleArtifactGenerated: new AsyncSeriesWaterfallHook<[Artifact, ApiDocumentV3_1, TaskWrapper]>(['artifact', 'document', 'task']),\n },\n })\n }\n\n return MetadataStorage.get(compiler)!\n }\n\n static of(compiler: Compiler): GenerateNestjsModulePluginMetadata | undefined {\n return MetadataStorage.get(compiler)\n }\n}\n","import { AsyncSeriesWaterfallHook } from 'tapable'\nimport { Compiler, TaskWrapper } from '~/compiler/index.js'\nimport { ApiDocumentV3_1, Artifact } from '~/models/index.js'\n\nexport interface GenerateNestjsModulePluginMetadata {\n hooks: {\n afterNestjsModuleArtifactGenerated: AsyncSeriesWaterfallHook<[Artifact, ApiDocumentV3_1, TaskWrapper]>\n }\n}\n\nexport const MetadataStorage = new WeakMap<Compiler, GenerateNestjsModulePluginMetadata>()\n","import * as path from 'path'\nimport * as changeCase from 'change-case'\nimport { Compiler, TaskWrapper } from '~/compiler/index.js'\nimport { ApiDocumentV3_1, Artifact } from '~/models/index.js'\nimport { MetadataStorage } from '../constants/metadata-storage.js'\nimport { FileNamingStyle } from '~/constants/index.js'\nimport { Generator, RuntimeConfig } from '~/types/index.js'\nimport { ApiDocumentTransformer } from '~/transformers/index.js'\nimport { OperationDeclarationGenerator } from '~/plugins/generate-declaration/index.js'\n\n\nconst NESTJS_MODULE_GENERATOR = 'nestjs-module-generator'\n\nexport class NestjsModuleGenerator implements Generator {\n private generateNestjsModuleArtifact(document: ApiDocumentV3_1, rc: RuntimeConfig): Artifact {\n const filepath = NestjsModuleGenerator.getNestjsModuleArtifactFilepath(document, rc.fileNamingStyle)\n const dirname = path.dirname(filepath)\n\n const artifact = new Artifact({\n id: NestjsModuleGenerator.getNestjsModuleArtifactId(document),\n filepath,\n content: ApiDocumentTransformer.toNestjsModule(document, {\n esm: rc.esm,\n getNestjsClientFilepath(document) {\n const relativePath = path.relative(\n dirname,\n NestjsModuleGenerator.getNestjsClientArtifactFilepath(document, rc.fileNamingStyle),\n )\n\n return relativePath.startsWith('.') ? relativePath : `./${relativePath}`\n },\n }),\n })\n\n return artifact\n }\n\n private generateNestjsClientArtifact(document: ApiDocumentV3_1, rc: RuntimeConfig): Artifact {\n const filepath = NestjsModuleGenerator.getNestjsClientArtifactFilepath(document, rc.fileNamingStyle)\n const dirpath = path.dirname(filepath)\n\n const artifact = new Artifact({\n id: NestjsModuleGenerator.getNestjsClientArtifactId(document),\n filepath,\n content: ApiDocumentTransformer.toNestjsClient(document, {\n esm: rc.esm,\n qs: rc.qs,\n getOperationDefinitionDeclarationFilepath(operationDefinition) {\n const relativePath = path.relative(\n dirpath,\n OperationDeclarationGenerator.getOperationDefinitionArtifactFilepath(operationDefinition, rc.fileNamingStyle),\n )\n\n return relativePath.startsWith('.') ? relativePath : `./${relativePath}`\n },\n }),\n })\n\n return artifact\n }\n\n async compile(compiler: Compiler, task: TaskWrapper): Promise<Artifact[]> {\n const metadata = MetadataStorage.get(compiler)!\n const rc = compiler.context.rc!\n const documents = compiler.context.documents!\n\n const nestjsModuleArtifacts = await Promise.all(\n documents.map((document) => metadata.hooks.afterNestjsModuleArtifactGenerated.promise(\n this.generateNestjsModuleArtifact(document, rc),\n document,\n task,\n )),\n )\n\n const nestjsClientArtifacts = await Promise.all(\n documents.map((document) => metadata.hooks.afterNestjsModuleArtifactGenerated.promise(\n this.generateNestjsClientArtifact(document, rc),\n document,\n task,\n )),\n )\n\n return [...nestjsModuleArtifacts, ...nestjsClientArtifacts]\n }\n\n static getNestjsModuleArtifactFilepath(document: ApiDocumentV3_1, fileNamingStyle: FileNamingStyle): string {\n const filename = `${changeCase[fileNamingStyle](document.module.name)}.module.ts`\n\n const filepath = [\n '.',\n changeCase[fileNamingStyle](document.module.name),\n filename,\n ]\n\n return filepath.join('/')\n }\n\n static getNestjsModuleArtifactId(document: ApiDocumentV3_1): string {\n return `${document.module.address}?generate=${NESTJS_MODULE_GENERATOR}`\n }\n\n static getNestjsClientArtifactFilepath(document: ApiDocumentV3_1, fileNamingStyle: FileNamingStyle): string {\n const filename = `${changeCase[fileNamingStyle](document.module.name)}.client.ts`\n\n const filepath = [\n '.',\n changeCase[fileNamingStyle](document.module.name),\n filename,\n ]\n\n return filepath.join('/')\n }\n\n static getNestjsClientArtifactId(document: ApiDocumentV3_1): string {\n return `${document.module.address}?generate=${NESTJS_MODULE_GENERATOR}-client`\n }\n}\n","\nimport { fixSwagger } from 'swagger-fix'\nimport { Compiler } from '~/compiler/index.js'\nimport { ApiDocumentV3_1 } from '~/models/index.js'\n\n\nexport class ChineseToPinyinPlugin {\n apply(compiler: Compiler): void {\n compiler.hooks.afterDownload.tap(ChineseToPinyinPlugin.name, (task) => {\n const documents = compiler.context.documents!\n\n compiler.context.documents = documents.map((doc) => {\n return new ApiDocumentV3_1(\n fixSwagger(doc.specification as any),\n doc.module,\n )\n })\n })\n }\n}\n","import * as validUrl from 'valid-url'\nimport { Compiler } from '~/compiler/index.js'\nimport { Plugin } from '~/types/plugin.js'\nimport { OpenapiUtils } from '~/utils/openapi-utils/index.js'\n\n\nexport class DownloadHttpFilePlugin implements Plugin {\n apply(compiler: Compiler): void {\n compiler.hooks.download.tapPromise(DownloadHttpFilePlugin.name, async (address, task) => {\n if (!validUrl.isUri(address)) return undefined\n const content = await this.download(address)\n const spec = this.deserialize(content)\n return JSON.stringify(spec)\n })\n }\n\n async download(address): Promise<string> {\n try {\n const res = await fetch(address)\n if (res.status >= 400) throw new Error(`failed with status code ${res.status}`)\n\n return await res.text()\n } catch (e) {\n if (e instanceof Error) {\n e.message = `Unable get the openapi/swagger file from ${address}: ${e.message}`\n }\n\n throw e\n }\n }\n\n deserialize(content: string): object {\n const json = JSON.parse(content)\n const spec = OpenapiUtils.to3_1(json)\n return spec\n }\n}\n","import * as path from 'path'\nimport * as fs from 'fs/promises'\nimport * as yaml from 'js-yaml'\nimport { Compiler } from '~/compiler/index.js'\nimport { Plugin } from '~/types/index.js'\nimport { OpenapiUtils } from '~/utils/openapi-utils/index.js'\n\n\nexport class DownloadLocalFilePlugin implements Plugin {\n apply(compiler: Compiler): void {\n compiler.hooks.download.tapPromise(DownloadLocalFilePlugin.name, async (address, task) => {\n if (!address.startsWith('./') && !address.startsWith('/') && !address.startsWith('../')) return undefined\n\n const fileExt = path.extname(address)\n const content = await fs.readFile(address, 'utf8')\n\n if (['.yml', '.yaml'].includes(fileExt)) {\n const value = yaml.load(content)\n return JSON.stringify(OpenapiUtils.to3_1(value))\n } else if (fileExt === '.json') {\n return JSON.stringify(OpenapiUtils.to3_1(JSON.parse(content)))\n }\n })\n }\n}\n","import { Plugin } from '~/types/index.js'\nimport { Compiler } from '~/compiler/index.js'\nimport { ApiDocumentV3_1, ModuleDefinition, OperationDefinition } from '~/models/index.js'\nimport { OpenAPIV3_1 } from '@scalar/openapi-types'\nimport { SupportedMethods } from '~/constants/index.js'\nimport { openapiShakingSync } from '@opendoc/openapi-shaking'\n\nexport class ShakingPlugin implements Plugin {\n apply(compiler: Compiler): void {\n compiler.hooks.beforeCompile.tap(ShakingPlugin.name, (task) => {\n const matcher = compiler.context.matcher!\n const documents = compiler.context.documents!\n\n compiler.context.documents = documents\n .map((document) => this.shaking(compiler, document))\n .filter((document) => !document.isEmpty())\n .filter((document) => !matcher.isModuleIgnored(document.module))\n })\n }\n\n shaking(compiler: Compiler, document: ApiDocumentV3_1): ApiDocumentV3_1 {\n const matcher = compiler.context.matcher!\n\n const isAccepted = (pathname: string, method: string, operation: OpenAPIV3_1.Document): boolean => {\n if (!SupportedMethods.includes(method)) return false\n\n return !matcher.isOperationIgnored(new OperationDefinition({\n method,\n pathname,\n operation,\n module: document.module,\n document: document,\n }))\n }\n\n\n const sharkedSwagger = openapiShakingSync(\n document.specification as any,\n isAccepted as any,\n { tolerant: true },\n ) as OpenAPIV3_1.Document\n\n return new ApiDocumentV3_1(\n sharkedSwagger,\n new ModuleDefinition(\n document.module.name,\n `file://${document.module.name}.v3_1.sharked.json`,\n ),\n )\n }\n}\n","import { ListrTaskWrapper } from 'listr2'\nimport { OperationDefinition } from '~/models/index.js'\nimport { select } from 'inquirer-select-pro'\nimport { ListrInquirerPromptAdapter } from '@listr2/prompt-adapter-inquirer'\nimport { CompilerContext } from '~/compiler/index.js'\n\nexport async function selectOperationDefinitions(\n task: ListrTaskWrapper<CompilerContext, any, any>,\n operationDefinitions: OperationDefinition[],\n): Promise<OperationDefinition[]> {\n const selectedOperationDefinitions = await task.prompt(ListrInquirerPromptAdapter).run(\n select<OperationDefinition>,\n {\n message: 'Select Pathname',\n defaultValue: [],\n options: (input) => {\n const items = operationDefinitions.map((op) => ({ name: `${op.module.name} ${op.method.toUpperCase()} ${op.pathname}`, value: op }))\n\n if (!input) return items\n const keys = input\n .trim()\n .toLowerCase()\n .split(/\\s+/)\n\n return items.filter((i) => {\n const name = i.name.toLowerCase()\n return keys.every((q) => name.includes(q))\n })\n },\n },\n )\n\n return selectedOperationDefinitions\n}\n","import { Compiler } from '~/compiler/index.js'\nimport { Plugin } from '~/types/plugin.js'\nimport { selectOperationDefinitions } from './utils/select-operation-definitions.js'\nimport { IgnoreMode } from './types/index.js'\n\nexport interface TerminalSelectPluginOptions {\n mode: IgnoreMode\n\n persist?: boolean\n\n /**\n * Remove all previously matcher rules.\n * This means that all rules form `.keqignore` file will be removed.\n */\n clear?: boolean\n}\n\n\nexport class TerminalSelectPlugin implements Plugin {\n constructor(private options: TerminalSelectPluginOptions) {}\n\n apply(compiler: Compiler): void {\n compiler.hooks.afterDownload.tapPromise(TerminalSelectPlugin.name, async (task) => {\n const context = compiler.context\n\n const matcher = context.matcher!\n const documents = context.documents!\n const operationDefinitions = documents.flatMap((document) => document.operations)\n const selectedOperationDefinitions = await selectOperationDefinitions(task, operationDefinitions)\n\n if (this.options.clear) {\n matcher.append({\n persist: false,\n ignore: true,\n moduleName: '*',\n operationMethod: '*',\n operationPathname: '*',\n })\n }\n\n for (const op of selectedOperationDefinitions) {\n matcher.append({\n persist: !!this.options.persist,\n ignore: this.options.mode === 'add',\n moduleName: op.module.name,\n operationMethod: op.method,\n operationPathname: op.pathname,\n })\n }\n })\n }\n}\n","import * as R from 'ramda'\nimport { Compiler } from '~/compiler/index.js'\nimport { Plugin } from '~/types/plugin.js'\nimport { DownloadHttpFilePlugin } from '../download-http-file/index.js'\nimport { DownloadLocalFilePlugin } from '../download-local-file/index.js'\nimport { GenerateDeclarationPlugin } from '../generate-declaration/index.js'\nimport { ShakingPlugin } from '../shaking/index.js'\nimport { TerminalSelectPlugin, TerminalSelectPluginOptions } from '../terminal-select/index.js'\nimport { GenerateMicroFunctionPlugin } from '../generate-micro-function/index.js'\nimport { GenerateNestjsModulePlugin } from '../generate-nestjs-module/index.js'\n\n\ninterface InitializePluginOptions {\n build?: boolean\n interactive?: boolean | TerminalSelectPluginOptions\n\n includes?: string[]\n}\n\nexport class InitializePlugin implements Plugin {\n constructor(private options: InitializePluginOptions) {\n }\n\n apply(compiler: Compiler): void {\n compiler.hooks.setup.tap(InitializePlugin.name, (task) => {\n new DownloadHttpFilePlugin().apply(compiler)\n new DownloadLocalFilePlugin().apply(compiler)\n\n new GenerateDeclarationPlugin().apply(compiler)\n\n if (this.options.build) {\n new ShakingPlugin().apply(compiler)\n }\n\n if (this.options.interactive) {\n new TerminalSelectPlugin(\n typeof this.options.interactive === 'object'\n ? this.options.interactive\n : { mode: 'except' },\n ).apply(compiler)\n }\n\n const rc = compiler.context.rc!\n\n if (rc.mode === 'micro-function') {\n new GenerateMicroFunctionPlugin().apply(compiler)\n } else if (rc.mode === 'nestjs-module') {\n new GenerateNestjsModulePlugin().apply(compiler)\n }\n })\n\n if (this.options.includes && this.options.includes.length) {\n const modulesIncludes = this.options.includes\n\n compiler.hooks.afterSetup.tap(InitializePlugin.name, (task) => {\n const rc = compiler.context.rc!\n const matcher = compiler.context.matcher!\n\n const notExistModules = modulesIncludes.filter((moduleName) => !(moduleName in rc.modules))\n if (notExistModules.length) {\n throw new Error(`Cannot find module(s) ${notExistModules.join(', ')} in config file.`)\n }\n\n const ignoredModules = R.difference(R.keys(rc.modules), modulesIncludes)\n for (const moduleName of ignoredModules) {\n matcher.append({\n persist: false,\n ignore: true,\n moduleName,\n operationMethod: '*',\n operationPathname: '*',\n })\n }\n })\n }\n }\n}\n"],"mappings":"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","names":["R","import_tapable","R","path","changeCase","R","R","import_jsonpath_plus","chalk","module","path","path","changeCase","R","R","alias","schema","R","R","CommentRenderer","R","R","import_jsonpointer","import_jsonpath_plus","R","import_jsonpath_plus","R","path","jsonpointer","jsonpointer","R","DeclarationRenderer","R","module","wrap","R","CommentRenderer","R","CommentRenderer","DeclarationRenderer","CommentRenderer","path","exports","R","changeCase","changeCase","R","path","changeCase","MetadataStorage","MetadataStorage","schemaDefinitions","exports","changeCase","MetadataStorage","exports","changeCase","MetadataStorage","operationDefinitions","operationDefinition","exports","changeCase","keys","import_tapable","MetadataStorage","path","changeCase","dirname","document","MetadataStorage","changeCase","MetadataStorage","path","import_openapi_shaking","keys","R"]}