keq 2.8.13 → 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (842) hide show
  1. package/.claude/settings.local.json +26 -0
  2. package/CHANGELOG.md +14 -0
  3. package/dist/esm/src/create-request.js +2 -0
  4. package/dist/esm/src/middlewares/mutex-flow-control-middleware.d.ts +2 -0
  5. package/dist/esm/src/middlewares/mutex-flow-control-middleware.js +22 -0
  6. package/dist/esm/src/types/keq-flow-control.d.ts +1 -1
  7. package/dist/esm/src/types/keq-global.d.ts +1 -0
  8. package/dist/esm/src/util/create-response-proxy.js +2 -2
  9. package/dist/esm/src/util/fork.js +3 -3
  10. package/dist/umd/src/create-request.js +3 -1
  11. package/dist/umd/src/middlewares/mutex-flow-control-middleware.d.ts +2 -0
  12. package/dist/umd/src/middlewares/mutex-flow-control-middleware.js +36 -0
  13. package/dist/umd/src/types/keq-flow-control.d.ts +1 -1
  14. package/dist/umd/src/types/keq-global.d.ts +1 -0
  15. package/dist/umd/src/util/create-response-proxy.js +2 -2
  16. package/dist/umd/src/util/fork.js +3 -3
  17. package/package.json +1 -1
  18. package/packages/cache/.turbo/turbo-build.log +26 -16
  19. package/packages/cache/dist/index.d.mts +354 -0
  20. package/packages/cache/dist/index.d.mts.map +1 -0
  21. package/packages/cache/dist/index.d.ts +352 -5
  22. package/packages/cache/dist/index.d.ts.map +1 -1
  23. package/packages/cache/dist/index.js +1211 -1256
  24. package/packages/cache/dist/index.js.map +1 -1
  25. package/packages/cache/dist/index.mjs +1183 -1231
  26. package/packages/cache/dist/index.mjs.map +1 -1
  27. package/packages/cli/.turbo/turbo-build.log +88 -24
  28. package/packages/cli/dist/cli.cjs +1333 -2891
  29. package/packages/cli/dist/cli.cjs.map +1 -1
  30. package/packages/cli/dist/cli.d.cts +1 -0
  31. package/packages/cli/dist/cli.d.mts +1 -0
  32. package/packages/cli/dist/cli.mjs +1359 -0
  33. package/packages/cli/dist/cli.mjs.map +1 -0
  34. package/packages/cli/dist/compiler-0Kli6UCr.cjs +738 -0
  35. package/packages/cli/dist/compiler-0Kli6UCr.cjs.map +1 -0
  36. package/packages/cli/dist/compiler-C3AE8j54.mjs +715 -0
  37. package/packages/cli/dist/compiler-C3AE8j54.mjs.map +1 -0
  38. package/packages/cli/dist/index.cjs +18 -2853
  39. package/packages/cli/dist/index.cjs.map +1 -1
  40. package/packages/cli/dist/index.d.cts +17 -0
  41. package/packages/cli/dist/index.d.cts.map +1 -0
  42. package/packages/cli/dist/index.d.mts +17 -0
  43. package/packages/cli/dist/index.d.mts.map +1 -0
  44. package/packages/cli/dist/index.mjs +10 -0
  45. package/packages/cli/dist/index.mjs.map +1 -0
  46. package/packages/cli/dist/init-BNhD2oCI.mjs +168 -0
  47. package/packages/cli/dist/init-BNhD2oCI.mjs.map +1 -0
  48. package/packages/cli/dist/init-DqxLcRSQ.cjs +170 -0
  49. package/packages/cli/dist/init-DqxLcRSQ.cjs.map +1 -0
  50. package/packages/cli/dist/logger-D7PyVZo3.cjs +46 -0
  51. package/packages/cli/dist/logger-D7PyVZo3.cjs.map +1 -0
  52. package/packages/cli/dist/logger-QLBHySQ3.mjs +12 -0
  53. package/packages/cli/dist/logger-QLBHySQ3.mjs.map +1 -0
  54. package/packages/cli/dist/micro-function.translator-BmJZzkKh.cjs +16 -0
  55. package/packages/cli/dist/micro-function.translator-BmJZzkKh.cjs.map +1 -0
  56. package/packages/cli/dist/micro-function.translator-CDfkj4Tt.mjs +11 -0
  57. package/packages/cli/dist/micro-function.translator-CDfkj4Tt.mjs.map +1 -0
  58. package/packages/cli/dist/mock-command-Bp1LxSls.mjs +350 -0
  59. package/packages/cli/dist/mock-command-Bp1LxSls.mjs.map +1 -0
  60. package/packages/cli/dist/mock-command-WZcfy5Iq.cjs +353 -0
  61. package/packages/cli/dist/mock-command-WZcfy5Iq.cjs.map +1 -0
  62. package/packages/cli/dist/plugins-CgMhaNZq.cjs +3558 -0
  63. package/packages/cli/dist/plugins-CgMhaNZq.cjs.map +1 -0
  64. package/packages/cli/dist/plugins-DCvJ8iHR.mjs +3280 -0
  65. package/packages/cli/dist/plugins-DCvJ8iHR.mjs.map +1 -0
  66. package/packages/cli/dist/plugins.cjs +36 -2425
  67. package/packages/cli/dist/plugins.d.cts +2 -0
  68. package/packages/cli/dist/plugins.d.mts +2 -0
  69. package/packages/cli/dist/plugins.mjs +2 -0
  70. package/packages/cli/dist/runtime-config-BWQlPhiB.d.cts +780 -0
  71. package/packages/cli/dist/runtime-config-BWQlPhiB.d.cts.map +1 -0
  72. package/packages/cli/dist/runtime-config-CrzK-Ucf.d.mts +780 -0
  73. package/packages/cli/dist/runtime-config-CrzK-Ucf.d.mts.map +1 -0
  74. package/packages/cli/dist/translators.cjs +14 -0
  75. package/packages/cli/dist/translators.cjs.map +1 -0
  76. package/packages/cli/dist/translators.d.cts +14 -0
  77. package/packages/cli/dist/translators.d.cts.map +1 -0
  78. package/packages/cli/dist/translators.d.mts +14 -0
  79. package/packages/cli/dist/translators.d.mts.map +1 -0
  80. package/packages/cli/dist/translators.mjs +12 -0
  81. package/packages/cli/dist/translators.mjs.map +1 -0
  82. package/packages/cli/node_modules/.bin/eslint +2 -2
  83. package/packages/cli/node_modules/.bin/jiti +2 -2
  84. package/packages/cli/node_modules/.bin/js-yaml +2 -2
  85. package/packages/cli/node_modules/.bin/jsf +21 -0
  86. package/packages/cli/node_modules/.bin/jsonpath +2 -2
  87. package/packages/cli/node_modules/.bin/jsonpath-plus +2 -2
  88. package/packages/cli/node_modules/.bin/semver +2 -2
  89. package/packages/cli/node_modules/.bin/tsc +4 -4
  90. package/packages/cli/node_modules/.bin/tsserver +4 -4
  91. package/packages/exception/.turbo/turbo-build.log +26 -31
  92. package/packages/exception/dist/index.d.mts +21 -0
  93. package/packages/exception/dist/index.d.mts.map +1 -0
  94. package/packages/exception/dist/index.d.ts +21 -0
  95. package/packages/exception/dist/index.d.ts.map +1 -0
  96. package/packages/exception/dist/index.js +97 -105
  97. package/packages/exception/dist/index.js.map +1 -1
  98. package/packages/exception/dist/index.mjs +92 -104
  99. package/packages/exception/dist/index.mjs.map +1 -1
  100. package/packages/headers/.turbo/turbo-build.log +26 -16
  101. package/packages/headers/dist/index.d.mts +46 -0
  102. package/packages/headers/dist/index.d.mts.map +1 -0
  103. package/packages/headers/dist/index.d.ts +46 -0
  104. package/packages/headers/dist/index.d.ts.map +1 -0
  105. package/packages/headers/dist/index.js +68 -64
  106. package/packages/headers/dist/index.js.map +1 -1
  107. package/packages/headers/dist/index.mjs +62 -43
  108. package/packages/headers/dist/index.mjs.map +1 -1
  109. package/packages/keq/.turbo/turbo-build.log +26 -16
  110. package/packages/keq/dist/index.d.mts +962 -0
  111. package/packages/keq/dist/index.d.mts.map +1 -0
  112. package/packages/keq/dist/index.d.ts +961 -7
  113. package/packages/keq/dist/index.d.ts.map +1 -1
  114. package/packages/keq/dist/index.js +1727 -1830
  115. package/packages/keq/dist/index.js.map +1 -1
  116. package/packages/keq/dist/index.mjs +1671 -1805
  117. package/packages/keq/dist/index.mjs.map +1 -1
  118. package/packages/nestjs/.turbo/turbo-build.log +26 -16
  119. package/packages/nestjs/dist/index.d.mts +52 -0
  120. package/packages/nestjs/dist/index.d.mts.map +1 -0
  121. package/packages/nestjs/dist/index.d.ts +51 -2
  122. package/packages/nestjs/dist/index.d.ts.map +1 -1
  123. package/packages/nestjs/dist/index.js +156 -60
  124. package/packages/nestjs/dist/index.js.map +1 -1
  125. package/packages/nestjs/dist/index.mjs +133 -42
  126. package/packages/nestjs/dist/index.mjs.map +1 -1
  127. package/packages/test/.turbo/turbo-build.log +1 -1
  128. package/packages/url/.turbo/turbo-build.log +26 -16
  129. package/packages/url/dist/index.d.mts +9 -0
  130. package/packages/url/dist/index.d.mts.map +1 -0
  131. package/packages/url/dist/index.d.ts +9 -0
  132. package/packages/url/dist/index.d.ts.map +1 -0
  133. package/packages/url/dist/index.js +36 -60
  134. package/packages/url/dist/index.js.map +1 -1
  135. package/packages/url/dist/index.mjs +33 -39
  136. package/packages/url/dist/index.mjs.map +1 -1
  137. package/packages/cache/dist/cache-entry/cache-entry.d.ts +0 -17
  138. package/packages/cache/dist/cache-entry/cache-entry.d.ts.map +0 -1
  139. package/packages/cache/dist/cache-entry/index.d.ts +0 -4
  140. package/packages/cache/dist/cache-entry/index.d.ts.map +0 -1
  141. package/packages/cache/dist/cache-entry/types/cache-entry-build-options.d.ts +0 -8
  142. package/packages/cache/dist/cache-entry/types/cache-entry-build-options.d.ts.map +0 -1
  143. package/packages/cache/dist/cache-entry/types/cache-entry-options.d.ts +0 -7
  144. package/packages/cache/dist/cache-entry/types/cache-entry-options.d.ts.map +0 -1
  145. package/packages/cache/dist/cache.d.ts +0 -38
  146. package/packages/cache/dist/cache.d.ts.map +0 -1
  147. package/packages/cache/dist/constants/eviction.enum.d.ts +0 -7
  148. package/packages/cache/dist/constants/eviction.enum.d.ts.map +0 -1
  149. package/packages/cache/dist/constants/index.d.ts +0 -5
  150. package/packages/cache/dist/constants/index.d.ts.map +0 -1
  151. package/packages/cache/dist/constants/max-expired-at.d.ts +0 -2
  152. package/packages/cache/dist/constants/max-expired-at.d.ts.map +0 -1
  153. package/packages/cache/dist/constants/size.enum.d.ts +0 -7
  154. package/packages/cache/dist/constants/size.enum.d.ts.map +0 -1
  155. package/packages/cache/dist/constants/strategy.enum.d.ts +0 -7
  156. package/packages/cache/dist/constants/strategy.enum.d.ts.map +0 -1
  157. package/packages/cache/dist/exceptions/cache-exception.d.ts +0 -5
  158. package/packages/cache/dist/exceptions/cache-exception.d.ts.map +0 -1
  159. package/packages/cache/dist/exceptions/index.d.ts +0 -2
  160. package/packages/cache/dist/exceptions/index.d.ts.map +0 -1
  161. package/packages/cache/dist/request-cache-handler/index.d.ts +0 -2
  162. package/packages/cache/dist/request-cache-handler/index.d.ts.map +0 -1
  163. package/packages/cache/dist/request-cache-handler/request-cache-handler.d.ts +0 -23
  164. package/packages/cache/dist/request-cache-handler/request-cache-handler.d.ts.map +0 -1
  165. package/packages/cache/dist/storage/index.d.ts +0 -6
  166. package/packages/cache/dist/storage/index.d.ts.map +0 -1
  167. package/packages/cache/dist/storage/indexed-db-storage/base-indexed-db-storage.d.ts +0 -22
  168. package/packages/cache/dist/storage/indexed-db-storage/base-indexed-db-storage.d.ts.map +0 -1
  169. package/packages/cache/dist/storage/indexed-db-storage/constants/default-table-name.d.ts +0 -2
  170. package/packages/cache/dist/storage/indexed-db-storage/constants/default-table-name.d.ts.map +0 -1
  171. package/packages/cache/dist/storage/indexed-db-storage/index.d.ts +0 -3
  172. package/packages/cache/dist/storage/indexed-db-storage/index.d.ts.map +0 -1
  173. package/packages/cache/dist/storage/indexed-db-storage/indexed-db-storage.d.ts +0 -12
  174. package/packages/cache/dist/storage/indexed-db-storage/indexed-db-storage.d.ts.map +0 -1
  175. package/packages/cache/dist/storage/indexed-db-storage/lfu-indexed-db-storage.d.ts +0 -11
  176. package/packages/cache/dist/storage/indexed-db-storage/lfu-indexed-db-storage.d.ts.map +0 -1
  177. package/packages/cache/dist/storage/indexed-db-storage/lru-indexed-db-storage.d.ts +0 -11
  178. package/packages/cache/dist/storage/indexed-db-storage/lru-indexed-db-storage.d.ts.map +0 -1
  179. package/packages/cache/dist/storage/indexed-db-storage/random-indexed-db-storage.d.ts +0 -11
  180. package/packages/cache/dist/storage/indexed-db-storage/random-indexed-db-storage.d.ts.map +0 -1
  181. package/packages/cache/dist/storage/indexed-db-storage/ttl-indexed-db-storage.d.ts +0 -11
  182. package/packages/cache/dist/storage/indexed-db-storage/ttl-indexed-db-storage.d.ts.map +0 -1
  183. package/packages/cache/dist/storage/indexed-db-storage/types/index.d.ts +0 -7
  184. package/packages/cache/dist/storage/indexed-db-storage/types/index.d.ts.map +0 -1
  185. package/packages/cache/dist/storage/indexed-db-storage/types/indexed-db-entry-metadata.d.ts +0 -12
  186. package/packages/cache/dist/storage/indexed-db-storage/types/indexed-db-entry-metadata.d.ts.map +0 -1
  187. package/packages/cache/dist/storage/indexed-db-storage/types/indexed-db-entry-response.d.ts +0 -8
  188. package/packages/cache/dist/storage/indexed-db-storage/types/indexed-db-entry-response.d.ts.map +0 -1
  189. package/packages/cache/dist/storage/indexed-db-storage/types/indexed-db-entry-visits.d.ts +0 -14
  190. package/packages/cache/dist/storage/indexed-db-storage/types/indexed-db-entry-visits.d.ts.map +0 -1
  191. package/packages/cache/dist/storage/indexed-db-storage/types/indexed-db-schema.d.ts +0 -29
  192. package/packages/cache/dist/storage/indexed-db-storage/types/indexed-db-schema.d.ts.map +0 -1
  193. package/packages/cache/dist/storage/indexed-db-storage/types/indexed-db-storage-options.d.ts +0 -14
  194. package/packages/cache/dist/storage/indexed-db-storage/types/indexed-db-storage-options.d.ts.map +0 -1
  195. package/packages/cache/dist/storage/indexed-db-storage/types/indexed-db-storage-size.d.ts +0 -13
  196. package/packages/cache/dist/storage/indexed-db-storage/types/indexed-db-storage-size.d.ts.map +0 -1
  197. package/packages/cache/dist/storage/internal-storage/internal-storage.d.ts +0 -16
  198. package/packages/cache/dist/storage/internal-storage/internal-storage.d.ts.map +0 -1
  199. package/packages/cache/dist/storage/internal-storage/types/events.d.ts +0 -16
  200. package/packages/cache/dist/storage/internal-storage/types/events.d.ts.map +0 -1
  201. package/packages/cache/dist/storage/internal-storage/types/storage-options.d.ts +0 -20
  202. package/packages/cache/dist/storage/internal-storage/types/storage-options.d.ts.map +0 -1
  203. package/packages/cache/dist/storage/keq-cache-storage.d.ts +0 -20
  204. package/packages/cache/dist/storage/keq-cache-storage.d.ts.map +0 -1
  205. package/packages/cache/dist/storage/memory-storage/base-memory-storage.d.ts +0 -31
  206. package/packages/cache/dist/storage/memory-storage/base-memory-storage.d.ts.map +0 -1
  207. package/packages/cache/dist/storage/memory-storage/index.d.ts +0 -3
  208. package/packages/cache/dist/storage/memory-storage/index.d.ts.map +0 -1
  209. package/packages/cache/dist/storage/memory-storage/lfu-memory-storage.d.ts +0 -11
  210. package/packages/cache/dist/storage/memory-storage/lfu-memory-storage.d.ts.map +0 -1
  211. package/packages/cache/dist/storage/memory-storage/lru-memory-storage.d.ts +0 -11
  212. package/packages/cache/dist/storage/memory-storage/lru-memory-storage.d.ts.map +0 -1
  213. package/packages/cache/dist/storage/memory-storage/memory-storage.d.ts +0 -13
  214. package/packages/cache/dist/storage/memory-storage/memory-storage.d.ts.map +0 -1
  215. package/packages/cache/dist/storage/memory-storage/random-memory-storage.d.ts +0 -11
  216. package/packages/cache/dist/storage/memory-storage/random-memory-storage.d.ts.map +0 -1
  217. package/packages/cache/dist/storage/memory-storage/ttl-memory-storage.d.ts +0 -11
  218. package/packages/cache/dist/storage/memory-storage/ttl-memory-storage.d.ts.map +0 -1
  219. package/packages/cache/dist/storage/memory-storage/types/index.d.ts +0 -3
  220. package/packages/cache/dist/storage/memory-storage/types/index.d.ts.map +0 -1
  221. package/packages/cache/dist/storage/memory-storage/types/memory-storage-options.d.ts +0 -9
  222. package/packages/cache/dist/storage/memory-storage/types/memory-storage-options.d.ts.map +0 -1
  223. package/packages/cache/dist/storage/memory-storage/types/memory-storage-size.d.ts +0 -13
  224. package/packages/cache/dist/storage/memory-storage/types/memory-storage-size.d.ts.map +0 -1
  225. package/packages/cache/dist/storage/memory-storage/utils/humanize-size.d.ts +0 -6
  226. package/packages/cache/dist/storage/memory-storage/utils/humanize-size.d.ts.map +0 -1
  227. package/packages/cache/dist/storage/memory-storage/utils/index.d.ts +0 -3
  228. package/packages/cache/dist/storage/memory-storage/utils/index.d.ts.map +0 -1
  229. package/packages/cache/dist/storage/memory-storage/utils/serialize-response-body.d.ts +0 -6
  230. package/packages/cache/dist/storage/memory-storage/utils/serialize-response-body.d.ts.map +0 -1
  231. package/packages/cache/dist/storage/multi-tier-storage/index.d.ts +0 -3
  232. package/packages/cache/dist/storage/multi-tier-storage/index.d.ts.map +0 -1
  233. package/packages/cache/dist/storage/multi-tier-storage/multi-tier-storage.d.ts +0 -36
  234. package/packages/cache/dist/storage/multi-tier-storage/multi-tier-storage.d.ts.map +0 -1
  235. package/packages/cache/dist/storage/multi-tier-storage/types/index.d.ts +0 -2
  236. package/packages/cache/dist/storage/multi-tier-storage/types/index.d.ts.map +0 -1
  237. package/packages/cache/dist/storage/multi-tier-storage/types/multi-tier-storage-options.d.ts +0 -5
  238. package/packages/cache/dist/storage/multi-tier-storage/types/multi-tier-storage-options.d.ts.map +0 -1
  239. package/packages/cache/dist/storage/tier-storage/index.d.ts +0 -3
  240. package/packages/cache/dist/storage/tier-storage/index.d.ts.map +0 -1
  241. package/packages/cache/dist/storage/tier-storage/tier-storage.d.ts +0 -15
  242. package/packages/cache/dist/storage/tier-storage/tier-storage.d.ts.map +0 -1
  243. package/packages/cache/dist/storage/tier-storage/types/index.d.ts +0 -2
  244. package/packages/cache/dist/storage/tier-storage/types/index.d.ts.map +0 -1
  245. package/packages/cache/dist/storage/tier-storage/types/tier-storage-options.d.ts +0 -21
  246. package/packages/cache/dist/storage/tier-storage/types/tier-storage-options.d.ts.map +0 -1
  247. package/packages/cache/dist/strategies/cache-first.d.ts +0 -3
  248. package/packages/cache/dist/strategies/cache-first.d.ts.map +0 -1
  249. package/packages/cache/dist/strategies/index.d.ts +0 -5
  250. package/packages/cache/dist/strategies/index.d.ts.map +0 -1
  251. package/packages/cache/dist/strategies/network-first.d.ts +0 -3
  252. package/packages/cache/dist/strategies/network-first.d.ts.map +0 -1
  253. package/packages/cache/dist/strategies/network-only.d.ts +0 -3
  254. package/packages/cache/dist/strategies/network-only.d.ts.map +0 -1
  255. package/packages/cache/dist/strategies/stale-while-revalidate.d.ts +0 -3
  256. package/packages/cache/dist/strategies/stale-while-revalidate.d.ts.map +0 -1
  257. package/packages/cache/dist/types/index.d.ts +0 -6
  258. package/packages/cache/dist/types/index.d.ts.map +0 -1
  259. package/packages/cache/dist/types/keq-cache-key.d.ts +0 -4
  260. package/packages/cache/dist/types/keq-cache-key.d.ts.map +0 -1
  261. package/packages/cache/dist/types/keq-cache-pattern.d.ts +0 -3
  262. package/packages/cache/dist/types/keq-cache-pattern.d.ts.map +0 -1
  263. package/packages/cache/dist/types/keq-cache-rule.d.ts +0 -6
  264. package/packages/cache/dist/types/keq-cache-rule.d.ts.map +0 -1
  265. package/packages/cache/dist/types/keq-cache-strategy.d.ts +0 -6
  266. package/packages/cache/dist/types/keq-cache-strategy.d.ts.map +0 -1
  267. package/packages/cache/dist/types/request-cache-options.d.ts +0 -34
  268. package/packages/cache/dist/types/request-cache-options.d.ts.map +0 -1
  269. package/packages/cache/dist/utils/get-response-bytes.d.ts +0 -2
  270. package/packages/cache/dist/utils/get-response-bytes.d.ts.map +0 -1
  271. package/packages/cache/dist/utils/index.d.ts +0 -4
  272. package/packages/cache/dist/utils/index.d.ts.map +0 -1
  273. package/packages/cache/dist/utils/logger.d.ts +0 -5
  274. package/packages/cache/dist/utils/logger.d.ts.map +0 -1
  275. package/packages/cache/dist/utils/random.d.ts +0 -2
  276. package/packages/cache/dist/utils/random.d.ts.map +0 -1
  277. package/packages/cli/dist/cli.d.ts +0 -3
  278. package/packages/cli/dist/cli.d.ts.map +0 -1
  279. package/packages/cli/dist/cli.js +0 -2899
  280. package/packages/cli/dist/cli.js.map +0 -1
  281. package/packages/cli/dist/compiler/compiler.d.ts +0 -17
  282. package/packages/cli/dist/compiler/compiler.d.ts.map +0 -1
  283. package/packages/cli/dist/compiler/index.d.ts +0 -4
  284. package/packages/cli/dist/compiler/index.d.ts.map +0 -1
  285. package/packages/cli/dist/compiler/intercepter/index.d.ts +0 -3
  286. package/packages/cli/dist/compiler/intercepter/index.d.ts.map +0 -1
  287. package/packages/cli/dist/compiler/intercepter/perfect-error-message.d.ts +0 -3
  288. package/packages/cli/dist/compiler/intercepter/perfect-error-message.d.ts.map +0 -1
  289. package/packages/cli/dist/compiler/intercepter/print-information.d.ts +0 -5
  290. package/packages/cli/dist/compiler/intercepter/print-information.d.ts.map +0 -1
  291. package/packages/cli/dist/compiler/tasks/compile/index.d.ts +0 -6
  292. package/packages/cli/dist/compiler/tasks/compile/index.d.ts.map +0 -1
  293. package/packages/cli/dist/compiler/tasks/download/index.d.ts +0 -10
  294. package/packages/cli/dist/compiler/tasks/download/index.d.ts.map +0 -1
  295. package/packages/cli/dist/compiler/tasks/index.d.ts +0 -6
  296. package/packages/cli/dist/compiler/tasks/index.d.ts.map +0 -1
  297. package/packages/cli/dist/compiler/tasks/persist/index.d.ts +0 -5
  298. package/packages/cli/dist/compiler/tasks/persist/index.d.ts.map +0 -1
  299. package/packages/cli/dist/compiler/tasks/setup/index.d.ts +0 -15
  300. package/packages/cli/dist/compiler/tasks/setup/index.d.ts.map +0 -1
  301. package/packages/cli/dist/compiler/tasks/setup/utils/find-nearest-package-json.d.ts +0 -6
  302. package/packages/cli/dist/compiler/tasks/setup/utils/find-nearest-package-json.d.ts.map +0 -1
  303. package/packages/cli/dist/compiler/tasks/setup/utils/get-project-module-system.d.ts +0 -5
  304. package/packages/cli/dist/compiler/tasks/setup/utils/get-project-module-system.d.ts.map +0 -1
  305. package/packages/cli/dist/compiler/tasks/setup/utils/index.d.ts +0 -4
  306. package/packages/cli/dist/compiler/tasks/setup/utils/index.d.ts.map +0 -1
  307. package/packages/cli/dist/compiler/tasks/setup/utils/validate-modules.d.ts +0 -2
  308. package/packages/cli/dist/compiler/tasks/setup/utils/validate-modules.d.ts.map +0 -1
  309. package/packages/cli/dist/compiler/tasks/types/base-task-options.d.ts +0 -6
  310. package/packages/cli/dist/compiler/tasks/types/base-task-options.d.ts.map +0 -1
  311. package/packages/cli/dist/compiler/tasks/types/index.d.ts +0 -3
  312. package/packages/cli/dist/compiler/tasks/types/index.d.ts.map +0 -1
  313. package/packages/cli/dist/compiler/tasks/types/task-wrapper.d.ts +0 -4
  314. package/packages/cli/dist/compiler/tasks/types/task-wrapper.d.ts.map +0 -1
  315. package/packages/cli/dist/compiler/types/compiler-context.d.ts +0 -11
  316. package/packages/cli/dist/compiler/types/compiler-context.d.ts.map +0 -1
  317. package/packages/cli/dist/compiler/types/compiler-hooks.d.ts +0 -18
  318. package/packages/cli/dist/compiler/types/compiler-hooks.d.ts.map +0 -1
  319. package/packages/cli/dist/compiler/types/index.d.ts +0 -3
  320. package/packages/cli/dist/compiler/types/index.d.ts.map +0 -1
  321. package/packages/cli/dist/constants/file-naming-style.d.ts +0 -14
  322. package/packages/cli/dist/constants/file-naming-style.d.ts.map +0 -1
  323. package/packages/cli/dist/constants/index.d.ts +0 -4
  324. package/packages/cli/dist/constants/index.d.ts.map +0 -1
  325. package/packages/cli/dist/constants/qs-array-format.d.ts +0 -9
  326. package/packages/cli/dist/constants/qs-array-format.d.ts.map +0 -1
  327. package/packages/cli/dist/constants/supported-methods.d.ts +0 -2
  328. package/packages/cli/dist/constants/supported-methods.d.ts.map +0 -1
  329. package/packages/cli/dist/define-keq-config.d.ts +0 -3
  330. package/packages/cli/dist/define-keq-config.d.ts.map +0 -1
  331. package/packages/cli/dist/exception.d.ts +0 -6
  332. package/packages/cli/dist/exception.d.ts.map +0 -1
  333. package/packages/cli/dist/generators/index.d.ts +0 -2
  334. package/packages/cli/dist/generators/index.d.ts.map +0 -1
  335. package/packages/cli/dist/index.d.ts +0 -6
  336. package/packages/cli/dist/index.d.ts.map +0 -1
  337. package/packages/cli/dist/index.js +0 -2808
  338. package/packages/cli/dist/index.js.map +0 -1
  339. package/packages/cli/dist/models/anchor.d.ts +0 -20
  340. package/packages/cli/dist/models/anchor.d.ts.map +0 -1
  341. package/packages/cli/dist/models/api-document_v3_1.d.ts +0 -16
  342. package/packages/cli/dist/models/api-document_v3_1.d.ts.map +0 -1
  343. package/packages/cli/dist/models/artifact.d.ts +0 -17
  344. package/packages/cli/dist/models/artifact.d.ts.map +0 -1
  345. package/packages/cli/dist/models/asset.d.ts +0 -5
  346. package/packages/cli/dist/models/asset.d.ts.map +0 -1
  347. package/packages/cli/dist/models/index.d.ts +0 -8
  348. package/packages/cli/dist/models/index.d.ts.map +0 -1
  349. package/packages/cli/dist/models/module-definition.d.ts +0 -7
  350. package/packages/cli/dist/models/module-definition.d.ts.map +0 -1
  351. package/packages/cli/dist/models/operation-definition.d.ts +0 -23
  352. package/packages/cli/dist/models/operation-definition.d.ts.map +0 -1
  353. package/packages/cli/dist/models/schema-definition.d.ts +0 -20
  354. package/packages/cli/dist/models/schema-definition.d.ts.map +0 -1
  355. package/packages/cli/dist/models/utils/to-comment.d.ts +0 -2
  356. package/packages/cli/dist/models/utils/to-comment.d.ts.map +0 -1
  357. package/packages/cli/dist/plugins/body-fallback/index.d.ts +0 -6
  358. package/packages/cli/dist/plugins/body-fallback/index.d.ts.map +0 -1
  359. package/packages/cli/dist/plugins/chinese-to-pinyin/chinese-to-pinyin.plugin.d.ts +0 -5
  360. package/packages/cli/dist/plugins/chinese-to-pinyin/chinese-to-pinyin.plugin.d.ts.map +0 -1
  361. package/packages/cli/dist/plugins/chinese-to-pinyin/index.d.ts +0 -2
  362. package/packages/cli/dist/plugins/chinese-to-pinyin/index.d.ts.map +0 -1
  363. package/packages/cli/dist/plugins/download-http-file/download-http-file.plugin.d.ts +0 -8
  364. package/packages/cli/dist/plugins/download-http-file/download-http-file.plugin.d.ts.map +0 -1
  365. package/packages/cli/dist/plugins/download-http-file/index.d.ts +0 -2
  366. package/packages/cli/dist/plugins/download-http-file/index.d.ts.map +0 -1
  367. package/packages/cli/dist/plugins/download-local-file/download-local-file.plugin.d.ts +0 -6
  368. package/packages/cli/dist/plugins/download-local-file/download-local-file.plugin.d.ts.map +0 -1
  369. package/packages/cli/dist/plugins/download-local-file/index.d.ts +0 -2
  370. package/packages/cli/dist/plugins/download-local-file/index.d.ts.map +0 -1
  371. package/packages/cli/dist/plugins/eslint/index.d.ts +0 -15
  372. package/packages/cli/dist/plugins/eslint/index.d.ts.map +0 -1
  373. package/packages/cli/dist/plugins/generate-declaration/constants/index.d.ts +0 -2
  374. package/packages/cli/dist/plugins/generate-declaration/constants/index.d.ts.map +0 -1
  375. package/packages/cli/dist/plugins/generate-declaration/constants/metadata-storage.d.ts +0 -12
  376. package/packages/cli/dist/plugins/generate-declaration/constants/metadata-storage.d.ts.map +0 -1
  377. package/packages/cli/dist/plugins/generate-declaration/generate-declaration.plugin.d.ts +0 -15
  378. package/packages/cli/dist/plugins/generate-declaration/generate-declaration.plugin.d.ts.map +0 -1
  379. package/packages/cli/dist/plugins/generate-declaration/generators/index.d.ts +0 -3
  380. package/packages/cli/dist/plugins/generate-declaration/generators/index.d.ts.map +0 -1
  381. package/packages/cli/dist/plugins/generate-declaration/generators/operation-declaration/index.d.ts +0 -2
  382. package/packages/cli/dist/plugins/generate-declaration/generators/operation-declaration/index.d.ts.map +0 -1
  383. package/packages/cli/dist/plugins/generate-declaration/generators/operation-declaration/operation.generator.d.ts +0 -15
  384. package/packages/cli/dist/plugins/generate-declaration/generators/operation-declaration/operation.generator.d.ts.map +0 -1
  385. package/packages/cli/dist/plugins/generate-declaration/generators/schema-declaration/index.d.ts +0 -2
  386. package/packages/cli/dist/plugins/generate-declaration/generators/schema-declaration/index.d.ts.map +0 -1
  387. package/packages/cli/dist/plugins/generate-declaration/generators/schema-declaration/schema.generator.d.ts +0 -15
  388. package/packages/cli/dist/plugins/generate-declaration/generators/schema-declaration/schema.generator.d.ts.map +0 -1
  389. package/packages/cli/dist/plugins/generate-declaration/index.d.ts +0 -3
  390. package/packages/cli/dist/plugins/generate-declaration/index.d.ts.map +0 -1
  391. package/packages/cli/dist/plugins/generate-micro-function/constants/index.d.ts +0 -2
  392. package/packages/cli/dist/plugins/generate-micro-function/constants/index.d.ts.map +0 -1
  393. package/packages/cli/dist/plugins/generate-micro-function/constants/metadata-storage.d.ts +0 -11
  394. package/packages/cli/dist/plugins/generate-micro-function/constants/metadata-storage.d.ts.map +0 -1
  395. package/packages/cli/dist/plugins/generate-micro-function/generate-micro-function.plugin.d.ts +0 -11
  396. package/packages/cli/dist/plugins/generate-micro-function/generate-micro-function.plugin.d.ts.map +0 -1
  397. package/packages/cli/dist/plugins/generate-micro-function/generators/index.d.ts +0 -3
  398. package/packages/cli/dist/plugins/generate-micro-function/generators/index.d.ts.map +0 -1
  399. package/packages/cli/dist/plugins/generate-micro-function/generators/micro_function/index.d.ts +0 -2
  400. package/packages/cli/dist/plugins/generate-micro-function/generators/micro_function/index.d.ts.map +0 -1
  401. package/packages/cli/dist/plugins/generate-micro-function/generators/micro_function/micro-function.generator.d.ts +0 -15
  402. package/packages/cli/dist/plugins/generate-micro-function/generators/micro_function/micro-function.generator.d.ts.map +0 -1
  403. package/packages/cli/dist/plugins/generate-micro-function/generators/request/index.d.ts +0 -2
  404. package/packages/cli/dist/plugins/generate-micro-function/generators/request/index.d.ts.map +0 -1
  405. package/packages/cli/dist/plugins/generate-micro-function/generators/request/request.generator.d.ts +0 -11
  406. package/packages/cli/dist/plugins/generate-micro-function/generators/request/request.generator.d.ts.map +0 -1
  407. package/packages/cli/dist/plugins/generate-micro-function/index.d.ts +0 -3
  408. package/packages/cli/dist/plugins/generate-micro-function/index.d.ts.map +0 -1
  409. package/packages/cli/dist/plugins/generate-nestjs-module/constants/index.d.ts +0 -2
  410. package/packages/cli/dist/plugins/generate-nestjs-module/constants/index.d.ts.map +0 -1
  411. package/packages/cli/dist/plugins/generate-nestjs-module/constants/metadata-storage.d.ts +0 -10
  412. package/packages/cli/dist/plugins/generate-nestjs-module/constants/metadata-storage.d.ts.map +0 -1
  413. package/packages/cli/dist/plugins/generate-nestjs-module/generate-nestjs-module.d.ts +0 -10
  414. package/packages/cli/dist/plugins/generate-nestjs-module/generate-nestjs-module.d.ts.map +0 -1
  415. package/packages/cli/dist/plugins/generate-nestjs-module/generators/index.d.ts +0 -2
  416. package/packages/cli/dist/plugins/generate-nestjs-module/generators/index.d.ts.map +0 -1
  417. package/packages/cli/dist/plugins/generate-nestjs-module/generators/nestjs-module.generator.d.ts +0 -14
  418. package/packages/cli/dist/plugins/generate-nestjs-module/generators/nestjs-module.generator.d.ts.map +0 -1
  419. package/packages/cli/dist/plugins/generate-nestjs-module/index.d.ts +0 -3
  420. package/packages/cli/dist/plugins/generate-nestjs-module/index.d.ts.map +0 -1
  421. package/packages/cli/dist/plugins/index.d.ts +0 -15
  422. package/packages/cli/dist/plugins/index.d.ts.map +0 -1
  423. package/packages/cli/dist/plugins/initialize/index.d.ts +0 -2
  424. package/packages/cli/dist/plugins/initialize/index.d.ts.map +0 -1
  425. package/packages/cli/dist/plugins/initialize/initialize.plugin.d.ts +0 -15
  426. package/packages/cli/dist/plugins/initialize/initialize.plugin.d.ts.map +0 -1
  427. package/packages/cli/dist/plugins/overwrite-operation-id/index.d.ts +0 -2
  428. package/packages/cli/dist/plugins/overwrite-operation-id/index.d.ts.map +0 -1
  429. package/packages/cli/dist/plugins/overwrite-operation-id/overwrite-operation-id.plugin.d.ts +0 -20
  430. package/packages/cli/dist/plugins/overwrite-operation-id/overwrite-operation-id.plugin.d.ts.map +0 -1
  431. package/packages/cli/dist/plugins/overwrite-query-options/index.d.ts +0 -2
  432. package/packages/cli/dist/plugins/overwrite-query-options/index.d.ts.map +0 -1
  433. package/packages/cli/dist/plugins/overwrite-query-options/overwrite-query-options.plugin.d.ts +0 -18
  434. package/packages/cli/dist/plugins/overwrite-query-options/overwrite-query-options.plugin.d.ts.map +0 -1
  435. package/packages/cli/dist/plugins/prettier/index.d.ts +0 -2
  436. package/packages/cli/dist/plugins/prettier/index.d.ts.map +0 -1
  437. package/packages/cli/dist/plugins/prettier/prettier.plugin.d.ts +0 -6
  438. package/packages/cli/dist/plugins/prettier/prettier.plugin.d.ts.map +0 -1
  439. package/packages/cli/dist/plugins/shaking/index.d.ts +0 -2
  440. package/packages/cli/dist/plugins/shaking/index.d.ts.map +0 -1
  441. package/packages/cli/dist/plugins/shaking/shaking.plugin.d.ts +0 -8
  442. package/packages/cli/dist/plugins/shaking/shaking.plugin.d.ts.map +0 -1
  443. package/packages/cli/dist/plugins/terminal-select/index.d.ts +0 -2
  444. package/packages/cli/dist/plugins/terminal-select/index.d.ts.map +0 -1
  445. package/packages/cli/dist/plugins/terminal-select/terminal-select.plugin.d.ts +0 -18
  446. package/packages/cli/dist/plugins/terminal-select/terminal-select.plugin.d.ts.map +0 -1
  447. package/packages/cli/dist/plugins/terminal-select/types/ignore-mode.d.ts +0 -2
  448. package/packages/cli/dist/plugins/terminal-select/types/ignore-mode.d.ts.map +0 -1
  449. package/packages/cli/dist/plugins/terminal-select/types/index.d.ts +0 -2
  450. package/packages/cli/dist/plugins/terminal-select/types/index.d.ts.map +0 -1
  451. package/packages/cli/dist/plugins/terminal-select/utils/index.d.ts +0 -2
  452. package/packages/cli/dist/plugins/terminal-select/utils/index.d.ts.map +0 -1
  453. package/packages/cli/dist/plugins/terminal-select/utils/select-operation-definitions.d.ts +0 -5
  454. package/packages/cli/dist/plugins/terminal-select/utils/select-operation-definitions.d.ts.map +0 -1
  455. package/packages/cli/dist/plugins.cjs.map +0 -1
  456. package/packages/cli/dist/plugins.js +0 -2365
  457. package/packages/cli/dist/plugins.js.map +0 -1
  458. package/packages/cli/dist/transformers/api-document/api-document.transformer.d.ts +0 -8
  459. package/packages/cli/dist/transformers/api-document/api-document.transformer.d.ts.map +0 -1
  460. package/packages/cli/dist/transformers/api-document/index.d.ts +0 -2
  461. package/packages/cli/dist/transformers/api-document/index.d.ts.map +0 -1
  462. package/packages/cli/dist/transformers/api-document/nestjs-client.renderer.d.ts +0 -14
  463. package/packages/cli/dist/transformers/api-document/nestjs-client.renderer.d.ts.map +0 -1
  464. package/packages/cli/dist/transformers/api-document/nestjs-module.renderer.d.ts +0 -12
  465. package/packages/cli/dist/transformers/api-document/nestjs-module.renderer.d.ts.map +0 -1
  466. package/packages/cli/dist/transformers/entrypoint/entrypoint.transformer.d.ts +0 -10
  467. package/packages/cli/dist/transformers/entrypoint/entrypoint.transformer.d.ts.map +0 -1
  468. package/packages/cli/dist/transformers/entrypoint/index.d.ts +0 -2
  469. package/packages/cli/dist/transformers/entrypoint/index.d.ts.map +0 -1
  470. package/packages/cli/dist/transformers/index.d.ts +0 -6
  471. package/packages/cli/dist/transformers/index.d.ts.map +0 -1
  472. package/packages/cli/dist/transformers/json-schema/comment.renderer.d.ts +0 -8
  473. package/packages/cli/dist/transformers/json-schema/comment.renderer.d.ts.map +0 -1
  474. package/packages/cli/dist/transformers/json-schema/declaration.renderer.d.ts +0 -26
  475. package/packages/cli/dist/transformers/json-schema/declaration.renderer.d.ts.map +0 -1
  476. package/packages/cli/dist/transformers/json-schema/index.d.ts +0 -4
  477. package/packages/cli/dist/transformers/json-schema/index.d.ts.map +0 -1
  478. package/packages/cli/dist/transformers/json-schema/json-schema.transformer.d.ts +0 -7
  479. package/packages/cli/dist/transformers/json-schema/json-schema.transformer.d.ts.map +0 -1
  480. package/packages/cli/dist/transformers/json-schema/reference.transformer.d.ts +0 -5
  481. package/packages/cli/dist/transformers/json-schema/reference.transformer.d.ts.map +0 -1
  482. package/packages/cli/dist/transformers/json-schema/types/any-other-attribute.d.ts +0 -5
  483. package/packages/cli/dist/transformers/json-schema/types/any-other-attribute.d.ts.map +0 -1
  484. package/packages/cli/dist/transformers/json-schema/types/index.d.ts +0 -3
  485. package/packages/cli/dist/transformers/json-schema/types/index.d.ts.map +0 -1
  486. package/packages/cli/dist/transformers/json-schema/types/mixed-schema-object.d.ts +0 -7
  487. package/packages/cli/dist/transformers/json-schema/types/mixed-schema-object.d.ts.map +0 -1
  488. package/packages/cli/dist/transformers/operation-definition/comment.renderer.d.ts +0 -8
  489. package/packages/cli/dist/transformers/operation-definition/comment.renderer.d.ts.map +0 -1
  490. package/packages/cli/dist/transformers/operation-definition/declaration.renderer.d.ts +0 -20
  491. package/packages/cli/dist/transformers/operation-definition/declaration.renderer.d.ts.map +0 -1
  492. package/packages/cli/dist/transformers/operation-definition/index.d.ts +0 -3
  493. package/packages/cli/dist/transformers/operation-definition/index.d.ts.map +0 -1
  494. package/packages/cli/dist/transformers/operation-definition/micro-function.renderer.d.ts +0 -19
  495. package/packages/cli/dist/transformers/operation-definition/micro-function.renderer.d.ts.map +0 -1
  496. package/packages/cli/dist/transformers/operation-definition/nestjs-method.renderer.d.ts +0 -15
  497. package/packages/cli/dist/transformers/operation-definition/nestjs-method.renderer.d.ts.map +0 -1
  498. package/packages/cli/dist/transformers/operation-definition/operation-definition.transformer.d.ts +0 -11
  499. package/packages/cli/dist/transformers/operation-definition/operation-definition.transformer.d.ts.map +0 -1
  500. package/packages/cli/dist/transformers/operation-definition/typescript-snippet.d.ts +0 -22
  501. package/packages/cli/dist/transformers/operation-definition/typescript-snippet.d.ts.map +0 -1
  502. package/packages/cli/dist/transformers/operation-definition/utils/index.d.ts +0 -2
  503. package/packages/cli/dist/transformers/operation-definition/utils/index.d.ts.map +0 -1
  504. package/packages/cli/dist/transformers/operation-definition/utils/type-name-factory.d.ts +0 -4
  505. package/packages/cli/dist/transformers/operation-definition/utils/type-name-factory.d.ts.map +0 -1
  506. package/packages/cli/dist/transformers/schema-definition/index.d.ts +0 -2
  507. package/packages/cli/dist/transformers/schema-definition/index.d.ts.map +0 -1
  508. package/packages/cli/dist/transformers/schema-definition/schema-definition.transformer.d.ts +0 -10
  509. package/packages/cli/dist/transformers/schema-definition/schema-definition.transformer.d.ts.map +0 -1
  510. package/packages/cli/dist/transformers/types/renderer.d.ts +0 -4
  511. package/packages/cli/dist/transformers/types/renderer.d.ts.map +0 -1
  512. package/packages/cli/dist/types/build-cli-options.d.ts +0 -19
  513. package/packages/cli/dist/types/build-cli-options.d.ts.map +0 -1
  514. package/packages/cli/dist/types/generator.d.ts +0 -7
  515. package/packages/cli/dist/types/generator.d.ts.map +0 -1
  516. package/packages/cli/dist/types/index.d.ts +0 -6
  517. package/packages/cli/dist/types/index.d.ts.map +0 -1
  518. package/packages/cli/dist/types/plugin.d.ts +0 -5
  519. package/packages/cli/dist/types/plugin.d.ts.map +0 -1
  520. package/packages/cli/dist/types/runtime-config.d.ts +0 -32
  521. package/packages/cli/dist/types/runtime-config.d.ts.map +0 -1
  522. package/packages/cli/dist/types/to-code-options.d.ts +0 -4
  523. package/packages/cli/dist/types/to-code-options.d.ts.map +0 -1
  524. package/packages/cli/dist/utils/debugger.d.ts +0 -7
  525. package/packages/cli/dist/utils/debugger.d.ts.map +0 -1
  526. package/packages/cli/dist/utils/ignore-matcher.d.ts +0 -18
  527. package/packages/cli/dist/utils/ignore-matcher.d.ts.map +0 -1
  528. package/packages/cli/dist/utils/indent.d.ts +0 -2
  529. package/packages/cli/dist/utils/indent.d.ts.map +0 -1
  530. package/packages/cli/dist/utils/is-keywords.d.ts +0 -2
  531. package/packages/cli/dist/utils/is-keywords.d.ts.map +0 -1
  532. package/packages/cli/dist/utils/is-reserved-word.d.ts +0 -2
  533. package/packages/cli/dist/utils/is-reserved-word.d.ts.map +0 -1
  534. package/packages/cli/dist/utils/json-schema-utils/index.d.ts +0 -11
  535. package/packages/cli/dist/utils/json-schema-utils/index.d.ts.map +0 -1
  536. package/packages/cli/dist/utils/json-schema-utils/is-array.d.ts +0 -3
  537. package/packages/cli/dist/utils/json-schema-utils/is-array.d.ts.map +0 -1
  538. package/packages/cli/dist/utils/json-schema-utils/is-mixed.d.ts +0 -4
  539. package/packages/cli/dist/utils/json-schema-utils/is-mixed.d.ts.map +0 -1
  540. package/packages/cli/dist/utils/json-schema-utils/is-non-array.d.ts +0 -3
  541. package/packages/cli/dist/utils/json-schema-utils/is-non-array.d.ts.map +0 -1
  542. package/packages/cli/dist/utils/json-schema-utils/is-ref.d.ts +0 -3
  543. package/packages/cli/dist/utils/json-schema-utils/is-ref.d.ts.map +0 -1
  544. package/packages/cli/dist/utils/json-schema-utils/types/any-other-attribute.d.ts +0 -5
  545. package/packages/cli/dist/utils/json-schema-utils/types/any-other-attribute.d.ts.map +0 -1
  546. package/packages/cli/dist/utils/json-schema-utils/types/mixed-schema-object.d.ts +0 -7
  547. package/packages/cli/dist/utils/json-schema-utils/types/mixed-schema-object.d.ts.map +0 -1
  548. package/packages/cli/dist/utils/logger.d.ts +0 -6
  549. package/packages/cli/dist/utils/logger.d.ts.map +0 -1
  550. package/packages/cli/dist/utils/openapi-utils/dereference-deep.d.ts +0 -3
  551. package/packages/cli/dist/utils/openapi-utils/dereference-deep.d.ts.map +0 -1
  552. package/packages/cli/dist/utils/openapi-utils/dereference-operation.d.ts +0 -4
  553. package/packages/cli/dist/utils/openapi-utils/dereference-operation.d.ts.map +0 -1
  554. package/packages/cli/dist/utils/openapi-utils/dereference.d.ts +0 -3
  555. package/packages/cli/dist/utils/openapi-utils/dereference.d.ts.map +0 -1
  556. package/packages/cli/dist/utils/openapi-utils/index.d.ts +0 -19
  557. package/packages/cli/dist/utils/openapi-utils/index.d.ts.map +0 -1
  558. package/packages/cli/dist/utils/openapi-utils/is-ref-defined.d.ts +0 -3
  559. package/packages/cli/dist/utils/openapi-utils/is-ref-defined.d.ts.map +0 -1
  560. package/packages/cli/dist/utils/openapi-utils/map-operation.d.ts +0 -4
  561. package/packages/cli/dist/utils/openapi-utils/map-operation.d.ts.map +0 -1
  562. package/packages/cli/dist/utils/openapi-utils/map-parameter.d.ts +0 -4
  563. package/packages/cli/dist/utils/openapi-utils/map-parameter.d.ts.map +0 -1
  564. package/packages/cli/dist/utils/openapi-utils/remove-undefined-ref.d.ts +0 -3
  565. package/packages/cli/dist/utils/openapi-utils/remove-undefined-ref.d.ts.map +0 -1
  566. package/packages/cli/dist/utils/openapi-utils/to-3_1.d.ts +0 -3
  567. package/packages/cli/dist/utils/openapi-utils/to-3_1.d.ts.map +0 -1
  568. package/packages/exception/dist/plugins/index.d.mts +0 -12
  569. package/packages/exception/dist/plugins/index.d.ts +0 -12
  570. package/packages/exception/dist/plugins/index.js +0 -95
  571. package/packages/exception/dist/plugins/index.mjs +0 -68
  572. package/packages/exception/node_modules/.bin/keq +0 -21
  573. package/packages/keq/dist/context/execution-context.d.ts +0 -26
  574. package/packages/keq/dist/context/execution-context.d.ts.map +0 -1
  575. package/packages/keq/dist/context/index.d.ts +0 -5
  576. package/packages/keq/dist/context/index.d.ts.map +0 -1
  577. package/packages/keq/dist/context/middleware-context.d.ts +0 -11
  578. package/packages/keq/dist/context/middleware-context.d.ts.map +0 -1
  579. package/packages/keq/dist/context/orchestrator-context.d.ts +0 -18
  580. package/packages/keq/dist/context/orchestrator-context.d.ts.map +0 -1
  581. package/packages/keq/dist/context/shared-context.d.ts +0 -43
  582. package/packages/keq/dist/context/shared-context.d.ts.map +0 -1
  583. package/packages/keq/dist/context/types/index.d.ts +0 -6
  584. package/packages/keq/dist/context/types/index.d.ts.map +0 -1
  585. package/packages/keq/dist/context/types/keq-context-data.d.ts +0 -7
  586. package/packages/keq/dist/context/types/keq-context-data.d.ts.map +0 -1
  587. package/packages/keq/dist/context/types/keq-context-emitter.d.ts +0 -35
  588. package/packages/keq/dist/context/types/keq-context-emitter.d.ts.map +0 -1
  589. package/packages/keq/dist/context/types/keq-context-options/index.d.ts +0 -6
  590. package/packages/keq/dist/context/types/keq-context-options/index.d.ts.map +0 -1
  591. package/packages/keq/dist/context/types/keq-context-options/keq-context-options.d.ts +0 -5
  592. package/packages/keq/dist/context/types/keq-context-options/keq-context-options.d.ts.map +0 -1
  593. package/packages/keq/dist/context/types/keq-context-options/keq-middleware-options.d.ts +0 -33
  594. package/packages/keq/dist/context/types/keq-context-options/keq-middleware-options.d.ts.map +0 -1
  595. package/packages/keq/dist/context/types/keq-context-options/keq-module-options.d.ts +0 -5
  596. package/packages/keq/dist/context/types/keq-context-options/keq-module-options.d.ts.map +0 -1
  597. package/packages/keq/dist/context/types/keq-context-options/keq-resolve-with-mode.d.ts +0 -2
  598. package/packages/keq/dist/context/types/keq-context-options/keq-resolve-with-mode.d.ts.map +0 -1
  599. package/packages/keq/dist/context/types/keq-context-options/keq-retry-options.d.ts +0 -9
  600. package/packages/keq/dist/context/types/keq-context-options/keq-retry-options.d.ts.map +0 -1
  601. package/packages/keq/dist/context/types/keq-context.d.ts +0 -17
  602. package/packages/keq/dist/context/types/keq-context.d.ts.map +0 -1
  603. package/packages/keq/dist/context/types/keq-global.d.ts +0 -7
  604. package/packages/keq/dist/context/types/keq-global.d.ts.map +0 -1
  605. package/packages/keq/dist/context/utils/assign-shared-context.d.ts +0 -3
  606. package/packages/keq/dist/context/utils/assign-shared-context.d.ts.map +0 -1
  607. package/packages/keq/dist/context/utils/clone-shared-context.d.ts +0 -3
  608. package/packages/keq/dist/context/utils/clone-shared-context.d.ts.map +0 -1
  609. package/packages/keq/dist/context/utils/create-proxy-response.d.ts +0 -2
  610. package/packages/keq/dist/context/utils/create-proxy-response.d.ts.map +0 -1
  611. package/packages/keq/dist/context/utils/fork.d.ts +0 -6
  612. package/packages/keq/dist/context/utils/fork.d.ts.map +0 -1
  613. package/packages/keq/dist/context/utils/index.d.ts +0 -5
  614. package/packages/keq/dist/context/utils/index.d.ts.map +0 -1
  615. package/packages/keq/dist/context/utils/watch-object.d.ts +0 -5
  616. package/packages/keq/dist/context/utils/watch-object.d.ts.map +0 -1
  617. package/packages/keq/dist/exception/abort.exception.d.ts +0 -4
  618. package/packages/keq/dist/exception/abort.exception.d.ts.map +0 -1
  619. package/packages/keq/dist/exception/exception.d.ts +0 -5
  620. package/packages/keq/dist/exception/exception.d.ts.map +0 -1
  621. package/packages/keq/dist/exception/http-exceptions/bad-gateway.exception.d.ts +0 -5
  622. package/packages/keq/dist/exception/http-exceptions/bad-gateway.exception.d.ts.map +0 -1
  623. package/packages/keq/dist/exception/http-exceptions/bad-request.exception.d.ts +0 -5
  624. package/packages/keq/dist/exception/http-exceptions/bad-request.exception.d.ts.map +0 -1
  625. package/packages/keq/dist/exception/http-exceptions/conflict.exception.d.ts +0 -5
  626. package/packages/keq/dist/exception/http-exceptions/conflict.exception.d.ts.map +0 -1
  627. package/packages/keq/dist/exception/http-exceptions/content-too-large.exception.d.ts +0 -5
  628. package/packages/keq/dist/exception/http-exceptions/content-too-large.exception.d.ts.map +0 -1
  629. package/packages/keq/dist/exception/http-exceptions/forbidden.exception.d.ts +0 -5
  630. package/packages/keq/dist/exception/http-exceptions/forbidden.exception.d.ts.map +0 -1
  631. package/packages/keq/dist/exception/http-exceptions/gateway-timeout.exception.d.ts +0 -5
  632. package/packages/keq/dist/exception/http-exceptions/gateway-timeout.exception.d.ts.map +0 -1
  633. package/packages/keq/dist/exception/http-exceptions/http-version-not-supported.exception.d.ts +0 -5
  634. package/packages/keq/dist/exception/http-exceptions/http-version-not-supported.exception.d.ts.map +0 -1
  635. package/packages/keq/dist/exception/http-exceptions/im-a-teapot.exception.d.ts +0 -5
  636. package/packages/keq/dist/exception/http-exceptions/im-a-teapot.exception.d.ts.map +0 -1
  637. package/packages/keq/dist/exception/http-exceptions/index.d.ts +0 -22
  638. package/packages/keq/dist/exception/http-exceptions/index.d.ts.map +0 -1
  639. package/packages/keq/dist/exception/http-exceptions/internal-server-error.exception.d.ts +0 -5
  640. package/packages/keq/dist/exception/http-exceptions/internal-server-error.exception.d.ts.map +0 -1
  641. package/packages/keq/dist/exception/http-exceptions/method-not-allowed.exception.d.ts +0 -5
  642. package/packages/keq/dist/exception/http-exceptions/method-not-allowed.exception.d.ts.map +0 -1
  643. package/packages/keq/dist/exception/http-exceptions/not-acceptable.exception.d.ts +0 -5
  644. package/packages/keq/dist/exception/http-exceptions/not-acceptable.exception.d.ts.map +0 -1
  645. package/packages/keq/dist/exception/http-exceptions/not-founded.exception.d.ts +0 -5
  646. package/packages/keq/dist/exception/http-exceptions/not-founded.exception.d.ts.map +0 -1
  647. package/packages/keq/dist/exception/http-exceptions/not-implemented.exception.d.ts +0 -5
  648. package/packages/keq/dist/exception/http-exceptions/not-implemented.exception.d.ts.map +0 -1
  649. package/packages/keq/dist/exception/http-exceptions/precondition-failed.exception.d.ts +0 -5
  650. package/packages/keq/dist/exception/http-exceptions/precondition-failed.exception.d.ts.map +0 -1
  651. package/packages/keq/dist/exception/http-exceptions/proxy-authentication-required.exception.d.ts +0 -5
  652. package/packages/keq/dist/exception/http-exceptions/proxy-authentication-required.exception.d.ts.map +0 -1
  653. package/packages/keq/dist/exception/http-exceptions/request-timeout.exception.d.ts +0 -5
  654. package/packages/keq/dist/exception/http-exceptions/request-timeout.exception.d.ts.map +0 -1
  655. package/packages/keq/dist/exception/http-exceptions/request.exception.d.ts +0 -12
  656. package/packages/keq/dist/exception/http-exceptions/request.exception.d.ts.map +0 -1
  657. package/packages/keq/dist/exception/http-exceptions/service-unavailable.exception.d.ts +0 -5
  658. package/packages/keq/dist/exception/http-exceptions/service-unavailable.exception.d.ts.map +0 -1
  659. package/packages/keq/dist/exception/http-exceptions/too-many-requests.exception.d.ts +0 -5
  660. package/packages/keq/dist/exception/http-exceptions/too-many-requests.exception.d.ts.map +0 -1
  661. package/packages/keq/dist/exception/http-exceptions/unauthorized.exception.d.ts +0 -5
  662. package/packages/keq/dist/exception/http-exceptions/unauthorized.exception.d.ts.map +0 -1
  663. package/packages/keq/dist/exception/http-exceptions/unsupported-media-type.exception.d.ts +0 -5
  664. package/packages/keq/dist/exception/http-exceptions/unsupported-media-type.exception.d.ts.map +0 -1
  665. package/packages/keq/dist/exception/http-exceptions/uri-too-long.exception.d.ts +0 -5
  666. package/packages/keq/dist/exception/http-exceptions/uri-too-long.exception.d.ts.map +0 -1
  667. package/packages/keq/dist/exception/index.d.ts +0 -6
  668. package/packages/keq/dist/exception/index.d.ts.map +0 -1
  669. package/packages/keq/dist/exception/timeout.exception.d.ts +0 -5
  670. package/packages/keq/dist/exception/timeout.exception.d.ts.map +0 -1
  671. package/packages/keq/dist/exception/type.exception.d.ts +0 -5
  672. package/packages/keq/dist/exception/type.exception.d.ts.map +0 -1
  673. package/packages/keq/dist/middleware/index.d.ts +0 -3
  674. package/packages/keq/dist/middleware/index.d.ts.map +0 -1
  675. package/packages/keq/dist/middleware/types/index.d.ts +0 -3
  676. package/packages/keq/dist/middleware/types/index.d.ts.map +0 -1
  677. package/packages/keq/dist/middleware/types/keq-middleware.d.ts +0 -8
  678. package/packages/keq/dist/middleware/types/keq-middleware.d.ts.map +0 -1
  679. package/packages/keq/dist/middleware/types/keq-next.d.ts +0 -2
  680. package/packages/keq/dist/middleware/types/keq-next.d.ts.map +0 -1
  681. package/packages/keq/dist/middleware/utils/compose-middleware.d.ts +0 -7
  682. package/packages/keq/dist/middleware/utils/compose-middleware.d.ts.map +0 -1
  683. package/packages/keq/dist/middleware/utils/get-middleware-name.d.ts +0 -3
  684. package/packages/keq/dist/middleware/utils/get-middleware-name.d.ts.map +0 -1
  685. package/packages/keq/dist/middleware/utils/index.d.ts +0 -3
  686. package/packages/keq/dist/middleware/utils/index.d.ts.map +0 -1
  687. package/packages/keq/dist/middlewares/fetch-middleware/index.d.ts +0 -6
  688. package/packages/keq/dist/middlewares/fetch-middleware/index.d.ts.map +0 -1
  689. package/packages/keq/dist/middlewares/flow-control-middleware/abort-flow-control-middleware.d.ts +0 -3
  690. package/packages/keq/dist/middlewares/flow-control-middleware/abort-flow-control-middleware.d.ts.map +0 -1
  691. package/packages/keq/dist/middlewares/flow-control-middleware/index.d.ts +0 -4
  692. package/packages/keq/dist/middlewares/flow-control-middleware/index.d.ts.map +0 -1
  693. package/packages/keq/dist/middlewares/flow-control-middleware/serial-flow-control-middleware.d.ts +0 -3
  694. package/packages/keq/dist/middlewares/flow-control-middleware/serial-flow-control-middleware.d.ts.map +0 -1
  695. package/packages/keq/dist/middlewares/flow-control-middleware/types/keq-flow-control.d.ts +0 -9
  696. package/packages/keq/dist/middlewares/flow-control-middleware/types/keq-flow-control.d.ts.map +0 -1
  697. package/packages/keq/dist/middlewares/index.d.ts +0 -4
  698. package/packages/keq/dist/middlewares/index.d.ts.map +0 -1
  699. package/packages/keq/dist/middlewares/timeout-middleware/index.d.ts +0 -6
  700. package/packages/keq/dist/middlewares/timeout-middleware/index.d.ts.map +0 -1
  701. package/packages/keq/dist/orchestrator/executor.d.ts +0 -13
  702. package/packages/keq/dist/orchestrator/executor.d.ts.map +0 -1
  703. package/packages/keq/dist/orchestrator/index.d.ts +0 -3
  704. package/packages/keq/dist/orchestrator/index.d.ts.map +0 -1
  705. package/packages/keq/dist/orchestrator/orchestrator.d.ts +0 -20
  706. package/packages/keq/dist/orchestrator/orchestrator.d.ts.map +0 -1
  707. package/packages/keq/dist/request/core.d.ts +0 -54
  708. package/packages/keq/dist/request/core.d.ts.map +0 -1
  709. package/packages/keq/dist/request/create-request.d.ts +0 -7
  710. package/packages/keq/dist/request/create-request.d.ts.map +0 -1
  711. package/packages/keq/dist/request/index.d.ts +0 -6
  712. package/packages/keq/dist/request/index.d.ts.map +0 -1
  713. package/packages/keq/dist/request/keq.d.ts +0 -120
  714. package/packages/keq/dist/request/keq.d.ts.map +0 -1
  715. package/packages/keq/dist/request/request.d.ts +0 -79
  716. package/packages/keq/dist/request/request.d.ts.map +0 -1
  717. package/packages/keq/dist/request/types/api-schema/api-schema-select.d.ts +0 -42
  718. package/packages/keq/dist/request/types/api-schema/api-schema-select.d.ts.map +0 -1
  719. package/packages/keq/dist/request/types/api-schema/api-schema.d.ts +0 -8
  720. package/packages/keq/dist/request/types/api-schema/api-schema.d.ts.map +0 -1
  721. package/packages/keq/dist/request/types/api-schema/default-operation.d.ts +0 -18
  722. package/packages/keq/dist/request/types/api-schema/default-operation.d.ts.map +0 -1
  723. package/packages/keq/dist/request/types/api-schema/extract-method-operations.d.ts +0 -31
  724. package/packages/keq/dist/request/types/api-schema/extract-method-operations.d.ts.map +0 -1
  725. package/packages/keq/dist/request/types/api-schema/index.d.ts +0 -6
  726. package/packages/keq/dist/request/types/api-schema/index.d.ts.map +0 -1
  727. package/packages/keq/dist/request/types/api-schema/operation.d.ts +0 -17
  728. package/packages/keq/dist/request/types/api-schema/operation.d.ts.map +0 -1
  729. package/packages/keq/dist/request/types/content-type.d.ts +0 -3
  730. package/packages/keq/dist/request/types/content-type.d.ts.map +0 -1
  731. package/packages/keq/dist/request/types/index.d.ts +0 -8
  732. package/packages/keq/dist/request/types/index.d.ts.map +0 -1
  733. package/packages/keq/dist/request/types/keq-attachable-file.d.ts +0 -2
  734. package/packages/keq/dist/request/types/keq-attachable-file.d.ts.map +0 -1
  735. package/packages/keq/dist/request/types/keq-param-value.d.ts +0 -3
  736. package/packages/keq/dist/request/types/keq-param-value.d.ts.map +0 -1
  737. package/packages/keq/dist/request/types/keq-query-options.d.ts +0 -7
  738. package/packages/keq/dist/request/types/keq-query-options.d.ts.map +0 -1
  739. package/packages/keq/dist/request/types/keq-query-value.d.ts +0 -8
  740. package/packages/keq/dist/request/types/keq-query-value.d.ts.map +0 -1
  741. package/packages/keq/dist/request/types/server-sent-event.d.ts +0 -3
  742. package/packages/keq/dist/request/types/server-sent-event.d.ts.map +0 -1
  743. package/packages/keq/dist/request/utils/fix-content-type.d.ts +0 -4
  744. package/packages/keq/dist/request/utils/fix-content-type.d.ts.map +0 -1
  745. package/packages/keq/dist/request/utils/get-location-id.d.ts +0 -2
  746. package/packages/keq/dist/request/utils/get-location-id.d.ts.map +0 -1
  747. package/packages/keq/dist/request/utils/index.d.ts +0 -7
  748. package/packages/keq/dist/request/utils/index.d.ts.map +0 -1
  749. package/packages/keq/dist/request/utils/intelligent-parse-response.d.ts +0 -2
  750. package/packages/keq/dist/request/utils/intelligent-parse-response.d.ts.map +0 -1
  751. package/packages/keq/dist/request/utils/merge-keq-request-body.d.ts +0 -3
  752. package/packages/keq/dist/request/utils/merge-keq-request-body.d.ts.map +0 -1
  753. package/packages/keq/dist/request/utils/query-stringify.d.ts +0 -3
  754. package/packages/keq/dist/request/utils/query-stringify.d.ts.map +0 -1
  755. package/packages/keq/dist/request/utils/resolve-with.d.ts +0 -3
  756. package/packages/keq/dist/request/utils/resolve-with.d.ts.map +0 -1
  757. package/packages/keq/dist/request-init/index.d.ts +0 -4
  758. package/packages/keq/dist/request-init/index.d.ts.map +0 -1
  759. package/packages/keq/dist/request-init/request-init.d.ts +0 -42
  760. package/packages/keq/dist/request-init/request-init.d.ts.map +0 -1
  761. package/packages/keq/dist/request-init/types/index.d.ts +0 -3
  762. package/packages/keq/dist/request-init/types/index.d.ts.map +0 -1
  763. package/packages/keq/dist/request-init/types/keq-body-init.d.ts +0 -2
  764. package/packages/keq/dist/request-init/types/keq-body-init.d.ts.map +0 -1
  765. package/packages/keq/dist/request-init/types/keq-request-method.d.ts +0 -2
  766. package/packages/keq/dist/request-init/types/keq-request-method.d.ts.map +0 -1
  767. package/packages/keq/dist/request-init/utils/assign-request-init.d.ts +0 -3
  768. package/packages/keq/dist/request-init/utils/assign-request-init.d.ts.map +0 -1
  769. package/packages/keq/dist/request-init/utils/clone-body.d.ts +0 -2
  770. package/packages/keq/dist/request-init/utils/clone-body.d.ts.map +0 -1
  771. package/packages/keq/dist/request-init/utils/clone-headers.d.ts +0 -2
  772. package/packages/keq/dist/request-init/utils/clone-headers.d.ts.map +0 -1
  773. package/packages/keq/dist/request-init/utils/clone-request-init.d.ts +0 -3
  774. package/packages/keq/dist/request-init/utils/clone-request-init.d.ts.map +0 -1
  775. package/packages/keq/dist/request-init/utils/compile-url.d.ts +0 -3
  776. package/packages/keq/dist/request-init/utils/compile-url.d.ts.map +0 -1
  777. package/packages/keq/dist/request-init/utils/index.d.ts +0 -7
  778. package/packages/keq/dist/request-init/utils/index.d.ts.map +0 -1
  779. package/packages/keq/dist/request-init/utils/to-form-data.d.ts +0 -2
  780. package/packages/keq/dist/request-init/utils/to-form-data.d.ts.map +0 -1
  781. package/packages/keq/dist/request-init/utils/to-url-search-params.d.ts +0 -2
  782. package/packages/keq/dist/request-init/utils/to-url-search-params.d.ts.map +0 -1
  783. package/packages/keq/dist/router/index.d.ts +0 -4
  784. package/packages/keq/dist/router/index.d.ts.map +0 -1
  785. package/packages/keq/dist/router/keq-host-route.d.ts +0 -3
  786. package/packages/keq/dist/router/keq-host-route.d.ts.map +0 -1
  787. package/packages/keq/dist/router/keq-location-route.d.ts +0 -3
  788. package/packages/keq/dist/router/keq-location-route.d.ts.map +0 -1
  789. package/packages/keq/dist/router/keq-method-route.d.ts +0 -3
  790. package/packages/keq/dist/router/keq-method-route.d.ts.map +0 -1
  791. package/packages/keq/dist/router/keq-module-route.d.ts +0 -3
  792. package/packages/keq/dist/router/keq-module-route.d.ts.map +0 -1
  793. package/packages/keq/dist/router/keq-pathname-route.d.ts +0 -3
  794. package/packages/keq/dist/router/keq-pathname-route.d.ts.map +0 -1
  795. package/packages/keq/dist/router/keq-router.d.ts +0 -32
  796. package/packages/keq/dist/router/keq-router.d.ts.map +0 -1
  797. package/packages/keq/dist/router/types/index.d.ts +0 -2
  798. package/packages/keq/dist/router/types/index.d.ts.map +0 -1
  799. package/packages/keq/dist/router/types/keq-route.d.ts +0 -7
  800. package/packages/keq/dist/router/types/keq-route.d.ts.map +0 -1
  801. package/packages/keq/dist/router/utils/compose-route.d.ts +0 -3
  802. package/packages/keq/dist/router/utils/compose-route.d.ts.map +0 -1
  803. package/packages/keq/dist/router/utils/index.d.ts +0 -2
  804. package/packages/keq/dist/router/utils/index.d.ts.map +0 -1
  805. package/packages/keq/dist/types/enabled-if-string-index.d.ts +0 -24
  806. package/packages/keq/dist/types/enabled-if-string-index.d.ts.map +0 -1
  807. package/packages/keq/dist/types/exclude-unknown-properties.d.ts +0 -19
  808. package/packages/keq/dist/types/exclude-unknown-properties.d.ts.map +0 -1
  809. package/packages/keq/dist/types/index-keys.d.ts +0 -18
  810. package/packages/keq/dist/types/index-keys.d.ts.map +0 -1
  811. package/packages/keq/dist/types/index.d.ts +0 -7
  812. package/packages/keq/dist/types/index.d.ts.map +0 -1
  813. package/packages/keq/dist/types/literal-keys.d.ts +0 -18
  814. package/packages/keq/dist/types/literal-keys.d.ts.map +0 -1
  815. package/packages/keq/dist/types/loose-nested-like.d.ts +0 -11
  816. package/packages/keq/dist/types/loose-nested-like.d.ts.map +0 -1
  817. package/packages/keq/dist/types/string-index-value-of.d.ts +0 -18
  818. package/packages/keq/dist/types/string-index-value-of.d.ts.map +0 -1
  819. package/packages/keq/dist/utils/base64.d.ts +0 -3
  820. package/packages/keq/dist/utils/base64.d.ts.map +0 -1
  821. package/packages/keq/dist/utils/index.d.ts +0 -4
  822. package/packages/keq/dist/utils/index.d.ts.map +0 -1
  823. package/packages/keq/dist/utils/shallow-clone.d.ts +0 -5
  824. package/packages/keq/dist/utils/shallow-clone.d.ts.map +0 -1
  825. package/packages/keq/dist/utils/sleep.d.ts +0 -2
  826. package/packages/keq/dist/utils/sleep.d.ts.map +0 -1
  827. package/packages/keq/dist/validator/index.d.ts +0 -2
  828. package/packages/keq/dist/validator/index.d.ts.map +0 -1
  829. package/packages/keq/dist/validator/validator.d.ts +0 -65
  830. package/packages/keq/dist/validator/validator.d.ts.map +0 -1
  831. package/packages/keq/node_modules/.bin/tsc +0 -21
  832. package/packages/keq/node_modules/.bin/tsserver +0 -21
  833. package/packages/nestjs/dist/keq.module-definition.d.ts +0 -3
  834. package/packages/nestjs/dist/keq.module-definition.d.ts.map +0 -1
  835. package/packages/nestjs/dist/keq.module.d.ts +0 -7
  836. package/packages/nestjs/dist/keq.module.d.ts.map +0 -1
  837. package/packages/nestjs/dist/types/index.d.ts +0 -2
  838. package/packages/nestjs/dist/types/index.d.ts.map +0 -1
  839. package/packages/nestjs/dist/types/keq-module-options.d.ts +0 -5
  840. package/packages/nestjs/dist/types/keq-module-options.d.ts.map +0 -1
  841. package/packages/nestjs/node_modules/.bin/tsc +0 -21
  842. package/packages/nestjs/node_modules/.bin/tsserver +0 -21
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli.ts","../src/constants/supported-methods.ts","../src/utils/logger.ts","../src/compiler/compiler.ts","../src/compiler/tasks/setup/index.ts","../src/utils/ignore-matcher.ts","../src/types/runtime-config.ts","../src/constants/file-naming-style.ts","../src/compiler/tasks/setup/utils/validate-modules.ts","../src/compiler/tasks/setup/utils/find-nearest-package-json.ts","../src/compiler/tasks/setup/utils/get-project-module-system.ts","../src/compiler/tasks/download/index.ts","../src/models/artifact.ts","../src/models/anchor.ts","../src/models/api-document_v3_1.ts","../src/models/module-definition.ts","../src/models/operation-definition.ts","../src/utils/is-keywords.ts","../src/utils/is-reserved-word.ts","../src/models/schema-definition.ts","../src/models/asset.ts","../src/exception.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/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/utils/openapi-utils/dereference-deep.ts","../src/utils/openapi-utils/to-3_1.ts","../src/utils/openapi-utils/map-operation.ts","../src/utils/openapi-utils/map-parameter.ts","../src/utils/openapi-utils/index.ts","../src/compiler/tasks/persist/index.ts","../src/compiler/tasks/compile/index.ts","../src/compiler/intercepter/print-information.ts","../src/compiler/intercepter/perfect-error-message.ts","../src/plugins/eslint/index.ts","../src/plugins/prettier/prettier.plugin.ts","../src/plugins/body-fallback/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/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/transformers/operation-definition/micro-function.renderer.ts","../src/transformers/operation-definition/typescript-snippet.ts","../src/constants/qs-array-format.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","../src/plugins/overwrite-query-options/overwrite-query-options.plugin.ts"],"sourcesContent":["#!/usr/bin/env node\nimport semver from 'semver'\nimport { Argument, Command, Option } from 'commander'\nimport { SupportedMethods } from './constants/supported-methods.js'\nimport { logger } from './utils/logger.js'\nimport { Compiler } from './compiler/compiler.js'\n\n\nif (semver.lt(process.version, '20.0.0')) {\n throw new Error('Node.js version must be greater than 20')\n}\n\nconst program = new Command()\n\n\nprogram\n .command('build')\n .option('-c --config <config>', 'The keq-cli config file')\n .option('--module <modules...>', 'Filter module(s) to generate')\n .option('--debug', 'Print debug information')\n .option('--tolerant', 'Tolerate wrong swagger/openapi structure')\n .option('-i --interactive', 'Interactive select the scope of generation')\n .action(async (options) => {\n const compiler = new Compiler({\n build: true,\n config: options.config,\n includes: options.module,\n debug: !!options.debug,\n tolerant: !!options.tolerant,\n interactive: !!options.interactive && {\n mode: 'except',\n clear: true,\n },\n })\n\n await compiler.run()\n })\n\n\nprogram\n .command('ignore')\n .addArgument(\n new Argument('<mode>', 'The ignore mode')\n .choices(['all', 'add', 'except'])\n .argRequired(),\n )\n .option('-c --config <config>', 'The keq-cli config file')\n .option('--debug', 'Print debug information')\n .option('--module <modules...>')\n .option('--build', 'Build after updating .keqignore file')\n .addOption(\n new Option('--method <method>', 'Only generate files of the specified operation method')\n .choices([\n ...SupportedMethods,\n ...SupportedMethods.map((method) => method.toUpperCase()),\n ]),\n )\n .option('--pathname <pathnames>', 'Only generate files of the specified operation pathname')\n .option('-i --interactive', 'Interactive select the scope of generation')\n .action(async (mode, options) => {\n let compiler: Compiler\n\n if (mode === 'all') {\n if (options.build) throw new Error(\"'--build' cannot be used with 'all' mode\")\n\n compiler = new Compiler({\n build: false,\n config: options.config,\n includes: options.module,\n debug: !!options.debug,\n interactive: false,\n ignore: {\n rules: [{\n persist: true,\n ignore: true,\n moduleName: '*',\n operationMethod: '*',\n operationPathname: '*',\n }],\n },\n })\n } else if (options.interactive) {\n if (options.interactive) {\n if (options.method) throw new Error(\"'--method' cannot be used with '--interactive'\")\n if (options.pathname) throw new Error(\"'--pathname' cannot be used with '--interactive'\")\n }\n\n compiler = new Compiler({\n build: !!options.build,\n config: options.config,\n includes: options.module,\n debug: !!options.debug,\n\n interactive: {\n mode,\n persist: true,\n },\n })\n } else {\n if (!options.method && !options.pathname) {\n throw new Error(\"at least one of '-i --interactive', '--method' or '--pathname' must be specified\")\n }\n\n const moduleNames = options.module || ['*']\n\n compiler = new Compiler({\n build: !!options.build,\n config: options.config,\n debug: !!options.debug,\n includes: options.module,\n ignore: {\n rules: moduleNames.map((moduleNames) => ({\n persist: true,\n ignore: mode === 'add',\n moduleName: moduleNames,\n operationMethod: options.method,\n operationPathname: options.pathname,\n })),\n },\n interactive: false,\n })\n }\n\n await compiler.run()\n })\n\nasync function main(): Promise<void> {\n program.on('command:*', function (operands) {\n throw new Error(`Unknown command '${String(operands[0])}'`)\n })\n\n try {\n await program.parseAsync(process.argv)\n } catch (err) {\n if (process.argv.includes('--debug')) {\n console.error(err)\n } else {\n logger.error(err instanceof Error ? err.message : String(err))\n }\n }\n}\n\nvoid main()\n","export const SupportedMethods = [\n 'get',\n 'post',\n 'put',\n 'delete',\n 'patch',\n 'head',\n 'options',\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","\n\nimport { Listr } from 'listr2'\nimport { AsyncParallelHook, AsyncSeriesBailHook, AsyncSeriesHook, AsyncSeriesWaterfallHook, SyncHook } from 'tapable'\nimport { CompilerHooks, CompilerContext } from './types/index.js'\nimport {\n ModuleDefinition,\n} from '~/models/index.js'\nimport {\n createCompileTask,\n createDownloadTask,\n createPersistTask,\n createSetupTask,\n SetupTaskOptions,\n TaskWrapper,\n} from './tasks/index.js'\nimport {\n perfectErrorMessage,\n printInformation,\n} from './intercepter/index.js'\nimport {\n InitializePlugin,\n TerminalSelectPluginOptions,\n} from '~/plugins/index.js'\n\n\ninterface Options extends SetupTaskOptions {\n includes: string[]\n build: boolean\n interactive?: boolean | TerminalSelectPluginOptions\n}\n\n\nexport class Compiler {\n context: CompilerContext = {}\n\n hooks: CompilerHooks = {\n setup: new AsyncParallelHook<[TaskWrapper]>(['task']),\n afterSetup: new AsyncSeriesHook<[TaskWrapper]>(['task']),\n\n beforeDownload: new AsyncSeriesHook<[TaskWrapper]>(['task']),\n download: new AsyncSeriesBailHook<[string, ModuleDefinition, TaskWrapper], string | undefined>(['address', 'moduleDefinition', 'task']),\n afterDownload: new AsyncSeriesHook<[TaskWrapper]>(['task']),\n\n beforeCompile: new AsyncSeriesHook<[TaskWrapper]>(['task']),\n compile: new AsyncParallelHook<[TaskWrapper]>(['task']),\n afterCompile: new AsyncSeriesHook<[TaskWrapper]>(['task']),\n\n beforePersist: new AsyncSeriesHook<[TaskWrapper]>(['task']),\n persist: new AsyncParallelHook<[TaskWrapper]>(['task']),\n afterPersist: new AsyncSeriesHook<[TaskWrapper]>(['task']),\n\n done: new SyncHook<[]>(),\n }\n\n constructor(\n public options: Options,\n ) {\n for (const hook of Object.values(this.hooks)) {\n hook.intercept(perfectErrorMessage())\n }\n\n this.hooks.afterSetup.intercept(printInformation(0))\n this.hooks.afterPersist.intercept(printInformation(0))\n\n new InitializePlugin({\n build: options.build,\n interactive: options.interactive,\n includes: options.includes,\n }).apply(this)\n }\n\n async run(): Promise<void> {\n const options = this.options\n\n const tasks = new Listr<CompilerContext>(\n [\n createSetupTask(this, options),\n createDownloadTask(this, { skipIgnoredModules: !options.interactive }),\n createCompileTask(this, { enabled: !!options.build }),\n createPersistTask(this),\n ],\n {\n concurrent: false,\n renderer: 'default',\n rendererOptions: {\n suffixSkips: true,\n collapseSubtasks: false,\n collapseErrors: false,\n },\n },\n )\n\n await tasks.run(this.context)\n\n await this.hooks.done.promise()\n }\n}\n","import fs from 'fs-extra'\nimport path from 'path'\nimport { CosmiconfigResult } from 'cosmiconfig'\nimport { Value } from '@sinclair/typebox/value'\nimport { cosmiconfig } from 'cosmiconfig'\nimport { ListrTask } from 'listr2'\nimport { IgnoreMatcher, IgnoreMatcherRule } from '~/utils/ignore-matcher.js'\nimport { RuntimeConfig } from '~/types/index.js'\nimport { validateModules, findNearestPackageJson, getProjectModuleSystem } from './utils/index.js'\nimport type { BaseTaskOptions } from '../types/base-task-options.js'\nimport type { Compiler } from '../../compiler.js'\nimport { CompilerContext } from '../../types/index.js'\n\n\nexport interface SetupTaskOptions {\n config?: string\n debug?: boolean\n tolerant?: boolean\n\n ignore?: false | {\n rules: IgnoreMatcherRule[]\n }\n}\n\nconst explore = cosmiconfig('keq')\n\nfunction main(compiler: Compiler, options: SetupTaskOptions): ListrTask<CompilerContext> {\n return {\n task: async (context, task) => {\n const result: CosmiconfigResult = options?.config\n ? await explore.load(options.config)\n : await explore.search()\n\n if (!result || ('isEmpty' in result && result.isEmpty)) {\n throw new Error('Cannot find config file.')\n }\n\n if (!Value.Check(RuntimeConfig, result.config)) {\n const errors = [...Value.Errors(RuntimeConfig, result.config)]\n const message = errors.map(({ path, message }) => `${path}: ${message}`).join('\\n')\n throw new Error(`Invalid Config: ${message}`)\n }\n\n const rc = Value.Default(RuntimeConfig, result.config) as RuntimeConfig\n\n validateModules(rc.modules)\n\n if (options?.debug) {\n await fs.ensureDir('.keq')\n rc.debug = true\n }\n\n rc.tolerant = Boolean(rc.tolerant)\n\n const packageJsonInfo = findNearestPackageJson()\n if (packageJsonInfo) {\n const moduleSystem = getProjectModuleSystem(packageJsonInfo)\n rc.esm = moduleSystem === 'esm'\n }\n\n context.rc = rc\n\n\n // Setup IgnoreMatcher\n\n let matcher: IgnoreMatcher = new IgnoreMatcher([])\n if (result.filepath) {\n const ignoreFilepath = path.resolve(path.dirname(result.filepath), '.keqignore')\n if (await fs.exists(ignoreFilepath)) {\n matcher = await IgnoreMatcher.read(ignoreFilepath)\n }\n }\n\n const ignoreRules = options.ignore === false ? [] : options.ignore?.rules || []\n for (const rule of ignoreRules) {\n matcher.append({\n persist: !!rule.persist,\n ignore: rule.ignore,\n moduleName: rule.moduleName,\n operationMethod: rule.operationMethod,\n operationPathname: rule.operationPathname,\n })\n }\n\n context.matcher = matcher\n\n await compiler.hooks.setup.promise(task)\n },\n }\n}\n\nexport function createSetupTask(compiler: Compiler, options: SetupTaskOptions & BaseTaskOptions): ListrTask<CompilerContext> {\n return {\n title: 'Setup',\n enabled: options?.enabled,\n skip: options?.skip,\n task: (context, task) => task.newListr(\n [\n main(compiler, options),\n {\n task: (context, task) => compiler.hooks.afterSetup\n .promise(task),\n },\n ],\n {\n concurrent: false,\n },\n ),\n }\n}\n","import * as R from 'ramda'\nimport fs from 'fs-extra'\nimport { OperationDefinition, ModuleDefinition } from '~/models/index.js'\n\n\nexport interface IgnoreMatcherRule {\n persist: boolean\n ignore: boolean\n moduleName: string\n operationMethod: string\n operationPathname: string\n}\n\n\nexport class IgnoreMatcher {\n private rules: IgnoreMatcherRule[]\n\n constructor(rules: IgnoreMatcherRule[]) {\n this.rules = rules\n }\n\n static async read(filepath: string): Promise<IgnoreMatcher> {\n let content = await fs.readFile(filepath, 'utf-8')\n\n content = content\n .replace(/\\r\\n/g, '\\n')\n .replace(/\\r/g, '\\n')\n .replace(/#.*$/gm, '')\n .replace(/\\n+/g, '\\n')\n .trim()\n\n let rules = content\n .split('\\n')\n .map((line) => line.trim())\n .filter((line) => line.length > 0)\n .map((line): IgnoreMatcherRule => {\n const matched = line.match(/^(!)?\\s*([^\\s/]+)\\s+([^\\s/]+)\\s+([^\\s]+)$/)\n if (!matched) throw new Error(`Invalid ignore rule: \"${line}\"`)\n\n const [, flag, moduleName, operationMethod, operationPathname] = matched\n\n return {\n persist: true,\n ignore: !flag,\n moduleName,\n operationMethod: operationMethod.toLowerCase(),\n operationPathname,\n }\n })\n rules = R.sortBy(\n R.prop('ignore'),\n rules,\n )\n\n rules = R.uniqWith(\n (a, b) => a.moduleName === b.moduleName && a.operationMethod === b.operationMethod && a.operationPathname === b.operationPathname,\n rules,\n )\n\n return new IgnoreMatcher(rules)\n }\n\n async write(filepath: string): Promise<void> {\n const ruleGroups = R.compose(\n R.groupBy((rule: IgnoreMatcherRule) => rule.moduleName),\n R.reverse,\n R.uniqWith<IgnoreMatcherRule>(\n (a, b) => a.moduleName === b.moduleName && a.operationMethod === b.operationMethod && a.operationPathname === b.operationPathname,\n ),\n R.filter((rule: IgnoreMatcherRule) => rule.persist),\n )(this.rules)\n\n const content = Object.entries(ruleGroups)\n .sort((a, b) => {\n const aModuleName = a[0]\n const bModuleName = b[0]\n\n if (aModuleName === '*') return -1\n if (bModuleName === '*') return 1\n\n return aModuleName.localeCompare(bModuleName)\n })\n .map(([, rules]) => (rules || [])\n .sort((a, b) => {\n if (a.ignore !== b.ignore) return a.ignore ? -1 : 1\n\n if (a.operationMethod === '*') return -1\n if (b.operationMethod === '*') return 1\n if (a.operationPathname === '*') return -1\n if (b.operationPathname === '*') return 1\n\n if (a.operationMethod !== b.operationMethod) return a.operationMethod.localeCompare(b.operationMethod)\n if (a.operationPathname !== b.operationPathname) return a.operationPathname.localeCompare(b.operationPathname)\n\n return 0\n })\n .map((rule) => `${rule.ignore ? '' : '! '}${rule.moduleName} ${rule.operationMethod.toUpperCase()} ${rule.operationPathname}`)\n .join('\\n'))\n .join('\\n\\n')\n\n await fs.writeFile(filepath, content, 'utf-8')\n }\n\n append(rule: IgnoreMatcherRule): void {\n this.rules.unshift(rule)\n }\n\n // if operation is ignored, return true\n isOperationIgnored(operationDefinition: OperationDefinition): boolean {\n const moduleName = operationDefinition.module.name\n const operationMethod = operationDefinition.method.toLowerCase()\n const operationPathname = operationDefinition.pathname\n\n for (const rule of this.rules) {\n if (rule.moduleName !== '*' && rule.moduleName !== moduleName) continue\n if (rule.operationMethod !== '*' && rule.operationMethod !== operationMethod) continue\n if (rule.operationPathname !== '*' && rule.operationPathname !== operationPathname) continue\n\n return rule.ignore\n }\n\n return false\n }\n\n isModuleIgnored(moduleDefinition: ModuleDefinition): boolean {\n const moduleName = moduleDefinition.name\n\n for (const rule of this.rules) {\n if (!rule.ignore) {\n if (rule.moduleName === '*' || rule.moduleName === moduleName) return false\n continue\n }\n\n if (rule.operationMethod !== '*') continue\n if (rule.operationPathname !== '*') continue\n\n if (rule.moduleName === '*' || rule.moduleName === moduleName) return true\n }\n\n return false\n }\n}\n","import { KeqQueryOptions } from 'keq'\nimport { Static, Type } from '@sinclair/typebox'\nimport { FileNamingStyle } from '../constants/file-naming-style.js'\nimport { Plugin } from './plugin.js'\n\n\nexport const RuntimeConfig = Type.Object({\n mode: Type.Optional(\n Type.Union([\n Type.Literal('micro-function'),\n Type.Literal('nestjs-module'),\n Type.Literal('none'),\n ], { default: 'micro-function' }),\n ),\n\n /**\n * Whether to generate ES Module code\n *\n * If not specified, the module system will be inferred from the nearest package.json \"type\" field\n * or defaults to \"cjs\" if no package.json is found.\n */\n esm: Type.Optional(Type.Boolean({ default: false })),\n\n /**\n * Output directory for generated files\n */\n outdir: Type.String({ default: `${process.cwd()}/api` }),\n\n /**\n * File naming style for generated files\n */\n fileNamingStyle: Type.Enum(FileNamingStyle, { default: FileNamingStyle.snakeCase }),\n\n modules: Type.Record(Type.String(), Type.String()),\n\n debug: Type.Optional(Type.Boolean({ default: false })),\n\n /**\n * Whether to tolerate wrong openapi/swagger structure\n */\n tolerant: Type.Optional(Type.Boolean({ default: false })),\n\n plugins: Type.Optional(Type.Array(Type.Any(), { default: [] })),\n})\n\n\nexport interface RuntimeConfig extends Omit<Static<typeof RuntimeConfig>, 'operationId' | 'plugins'> {\n plugins?: Plugin[]\n}\n","\nexport enum FileNamingStyle {\n camelCase = 'camelCase',\n capitalCase = 'capitalCase',\n constantCase = 'constantCase',\n dotCase = 'dotCase',\n headerCase = 'headerCase',\n noCase = 'noCase',\n paramCase = 'paramCase',\n pascalCase = 'pascalCase',\n pathCase = 'pathCase',\n sentenceCase = 'sentenceCase',\n snakeCase = 'snakeCase',\n}\n","import * as R from 'ramda'\nimport validator from 'validator'\n\n\nexport function validateModules(modules: Record<string, string>): void {\n const keys = Object.keys(modules)\n\n for (const key of keys) {\n if (!/^[A-Za-z_][A-Za-z0-9_$]*$/.test(key)) {\n throw new Error(`Module name \"${key}\" is not valid. It must start with a letter or underscore, and can only contain letters, numbers, and underscores.`)\n }\n }\n\n const keysGroupByLowerCase = R.groupBy(R.toLower, keys)\n\n for (const groupKey in keysGroupByLowerCase) {\n const keys = keysGroupByLowerCase[groupKey] || []\n if (keys.length > 1) {\n throw new Error(`Module names ${keys.map((name) => `\"${name}\"`).join(', ')} are case-insensitively duplicated.`)\n }\n }\n\n for (const key in modules) {\n const address = modules[key]\n\n if (validator.isURL(address, { require_host: true, require_protocol: true, protocols: ['http', 'https'] })) {\n continue\n }\n\n if (/^(\\/|\\.\\/|\\.\\.\\/)/.test(address)) {\n continue\n }\n\n throw new Error(`Module address \"${address}\" of module \"${key}\" is not valid. It must be a URL or a local path.`)\n }\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nexport interface PackageJsonInfo {\n json: any\n path: string\n}\n\n\nexport function findNearestPackageJson(startDir = process.cwd()): PackageJsonInfo | null {\n let dir = startDir\n // 向上遍历直到磁盘根目录\n while (true) {\n const pkgPath = path.join(dir, 'package.json')\n if (fs.existsSync(pkgPath)) {\n const json = JSON.parse(fs.readFileSync(pkgPath, 'utf8'))\n return { json, path: pkgPath }\n }\n const parent = path.dirname(dir)\n if (parent === dir) break\n dir = parent\n }\n return null\n}\n","import { PackageJsonInfo } from './find-nearest-package-json.js'\n\ntype ModuleSystem = 'esm' | 'cjs'\n\nexport function getProjectModuleSystem(pkgInfo: PackageJsonInfo): ModuleSystem {\n if (!pkgInfo?.json) return 'cjs'\n const { json } = pkgInfo\n\n if (json.type === 'module') return 'esm'\n return 'cjs'\n}\n","import { ListrTask, PRESET_TIMER } from 'listr2'\nimport { validate } from '@scalar/openapi-parser'\nimport { ModuleDefinition, ApiDocumentV3_1 } from '~/models/index.js'\nimport { BaseTaskOptions } from '../types/base-task-options.js'\nimport type { Compiler } from '~/compiler/compiler.js'\nimport { CompilerContext } from '~/compiler/index.js'\nimport { Exception } from '~/exception.js'\nimport { OpenapiUtils } from '~/utils/openapi-utils/index.js'\n\n\ninterface DownloadTaskOptions {\n skipIgnoredModules?: boolean\n}\n\nfunction main(compiler: Compiler, options?: DownloadTaskOptions): ListrTask<CompilerContext> {\n return {\n task: (context, task) => {\n if (!context.rc || !context.matcher) {\n throw new Error('Please run setup task first.')\n }\n\n const rc = context.rc\n const matcher = context.matcher\n\n context.documents = []\n\n return task.newListr(\n Object.entries(rc.modules)\n .map(([moduleName, address]) => new ModuleDefinition(moduleName, address))\n .map((moduleDefinition): ListrTask<CompilerContext> => ({\n title: moduleDefinition.name,\n task: async (ctx, task) => {\n if (options?.skipIgnoredModules && matcher.isModuleIgnored(moduleDefinition)) {\n task.skip(`(${moduleDefinition.name}) is ignored`)\n return\n }\n\n task.output = `Downloaded from ${moduleDefinition.address}`\n\n const content = await compiler.hooks.download.promise(moduleDefinition.address, moduleDefinition, task)\n\n if (!content) {\n throw new Exception(moduleDefinition, `Cannot download document from ${moduleDefinition.address}`)\n }\n\n const spec = JSON.parse(content)\n\n const { valid, errors } = await validate(spec)\n if (!valid) {\n const message = `${moduleDefinition.name} module openapi/swagger file does not conform to the openapi specifications or have grammatical errors, which may cause unexpected errors: \\n${errors?.map((e) => ` - ${e.message}`).join('\\n')}`\n task.output = message\n }\n\n OpenapiUtils.dereferenceOperation(spec)\n\n const document = new ApiDocumentV3_1(\n spec,\n moduleDefinition,\n )\n\n ctx.documents?.push(document)\n },\n })),\n {\n concurrent: true,\n exitOnError: false,\n collectErrors: 'minimal',\n rendererOptions: {\n collapseSubtasks: false,\n // collapseSkips: false,\n suffixSkips: true,\n timer: PRESET_TIMER,\n },\n },\n )\n },\n }\n}\n\nexport function createDownloadTask(compiler: Compiler, options?: DownloadTaskOptions & BaseTaskOptions): ListrTask<CompilerContext> {\n return {\n title: 'Download',\n enabled: options?.enabled,\n skip: options?.skip,\n task: (_, task) => task.newListr(\n [\n main(compiler, options),\n {\n task: (context, task) => compiler.hooks.afterDownload\n .promise(task),\n },\n ],\n {\n concurrent: false,\n },\n ),\n }\n}\n","import * as path from 'path'\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 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 renderer(): string {\n return `${HeaderComment}${this.content}`\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'\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 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","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","export class Asset {\n path: string\n\n constructor(path: string) {\n this.path = path\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 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 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 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 * as R from 'ramda'\nimport type { OpenAPIV3_1 } from '@scalar/openapi-types'\nimport { SupportedMethods } from '~/constants/supported-methods.js'\n\n\nexport type OpenapiOperationMapper = (method: string, pathname: string, operation: OpenAPIV3_1.OperationObject) => OpenAPIV3_1.OperationObject\n\n\nexport function mapOperation(specification: OpenAPIV3_1.Document, mapper: OpenapiOperationMapper): OpenAPIV3_1.Document {\n const shadow = R.clone(specification)\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 pathItem[m] = mapper(method, pathname, operation)\n }\n }\n\n return shadow\n}\n","import * as R from 'ramda'\nimport type { OpenAPIV3_1 } from '@scalar/openapi-types'\nimport { mapOperation } from './map-operation.js'\n\n\nexport type OpenapiParameterMapper = (method: string, pathname: string, operation: OpenAPIV3_1.OperationObject, parameter: OpenAPIV3_1.ParameterObject) => OpenAPIV3_1.ParameterObject\n\nexport function mapParameter(\n specification: OpenAPIV3_1.Document,\n mapper: OpenapiParameterMapper,\n): OpenAPIV3_1.Document {\n return mapOperation(specification, (method, pathname, operation) => {\n if (!operation.parameters) return operation\n\n operation.parameters = operation.parameters\n .map((parameter) => mapper(method, pathname, operation, parameter as OpenAPIV3_1.ParameterObject))\n\n return operation\n })\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 { dereferenceDeep } from './dereference-deep.js'\nimport { To3_1 } from './to-3_1.js'\nimport { mapOperation } from './map-operation.js'\nimport { mapParameter } from './map-parameter.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 mapOperation = mapOperation\n static mapParameter = mapParameter\n // static updateOperationId = updateOperationId\n static to3_1 = To3_1\n}\n","import * as path from 'path'\nimport fs from 'fs-extra'\nimport { ListrTask } from 'listr2'\nimport { BaseTaskOptions } from '../types/base-task-options.js'\nimport type { Compiler, CompilerContext } from '~/compiler/index.js'\nimport { Asset } from '~/models/index.js'\n\n\nfunction createPersistArtifactTask(): ListrTask<CompilerContext> {\n return {\n title: 'Write files',\n task: async (context, task) => {\n if (!context.rc) throw new Error('Please run setup task first.')\n if (!context.artifacts || context.artifacts.length === 0) {\n task.skip('No compiled artifacts to persist.')\n return\n }\n\n const rc = context.rc\n const artifacts = context.artifacts\n\n const total = artifacts.length\n let completed = 0\n\n const files = await Promise.all(artifacts.map(async (artifact): Promise<Asset> => {\n const realpath = `./${path.join(rc.outdir, artifact.filepath)}`\n await fs.ensureFile(realpath)\n await fs.writeFile(realpath, artifact.renderer())\n\n completed += 1\n task.output = `Persisted ${completed}/${total} files`\n\n return new Asset(path.resolve(realpath))\n }))\n\n context.assets = files\n },\n }\n}\n\nfunction createPersistIgnoreTask(): ListrTask<CompilerContext> {\n return {\n title: 'Update .keqignore',\n task: async (context, task) => {\n if (!context.matcher) throw new Error('Please run setup task first.')\n\n const matcher = context.matcher\n await matcher.write('.keqignore')\n },\n }\n}\n\n\nfunction main(): ListrTask<CompilerContext> {\n return {\n task: (context, task) => task.newListr(\n [\n createPersistArtifactTask(),\n createPersistIgnoreTask(),\n ],\n {\n concurrent: true,\n rendererOptions: {\n collapseSubtasks: true,\n },\n },\n ),\n }\n}\n\nexport function createPersistTask(compiler: Compiler, options?: BaseTaskOptions): ListrTask<CompilerContext> {\n return {\n title: 'Persist',\n enabled: options?.enabled,\n skip: options?.skip,\n task: (context, task) => task.newListr(\n [\n main(),\n {\n task: (context, task) => compiler.hooks.afterPersist\n .promise(task),\n },\n ],\n {\n concurrent: false,\n },\n ),\n }\n}\n","import { ListrTask } from 'listr2'\nimport { BaseTaskOptions } from '../types/base-task-options.js'\nimport type { Compiler } from '~/compiler/compiler.js'\nimport { CompilerContext } from '~/compiler/index.js'\n// import { RequestGenerator } from '~/generators/index.js'\n\n\nfunction main(compiler: Compiler): ListrTask<CompilerContext> {\n return {\n task: async (context, task) => {\n if (!context.rc) throw new Error('Please run setup task first.')\n if (!context.documents) throw new Error('Please run shaking task first.')\n\n context.artifacts = []\n\n await compiler.hooks.compile.promise(task)\n },\n }\n}\n\nexport function createCompileTask(compiler: Compiler, options?: BaseTaskOptions): ListrTask<CompilerContext> {\n return {\n title: 'Compile',\n enabled: options?.enabled,\n skip: options?.skip,\n task: (context, task) => task.newListr(\n [\n {\n task: (context, task) => compiler.hooks.beforeCompile\n .promise(task),\n },\n main(compiler),\n {\n task: (context, task) => compiler.hooks.afterCompile\n .promise(task),\n },\n ],\n {\n concurrent: false,\n },\n ),\n }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-return */\nimport { FullTap, HookInterceptor } from 'tapable'\nimport { TaskWrapper } from '../tasks/index.js'\n\n\nexport function proxyTaskWrapper(pluginName: string, task: TaskWrapper): TaskWrapper {\n return new Proxy(task, {\n set(target, prop, value) {\n if (prop !== 'output') {\n return Reflect.set(target, prop, value)\n }\n\n target.output = `[Plugin: ${pluginName}] ${value}`\n return true\n },\n })\n}\n\n\nexport function printInformation(taskIndex: number): HookInterceptor<unknown, unknown> {\n return {\n register: <T extends FullTap>(tap: T): T => {\n const fn = tap.fn\n\n if (tap.type === 'promise') {\n tap.fn = (...args: any[]) => {\n const task = args[taskIndex] as TaskWrapper\n const proxyTask = proxyTaskWrapper(tap.name, task)\n args[taskIndex] = proxyTask\n proxyTask.output = 'Processing...'\n return fn(...args)\n }\n }\n\n if (tap.type === 'sync') {\n tap.fn = (...args: any[]) => {\n const task = args[taskIndex] as TaskWrapper\n const proxyTask = proxyTaskWrapper(tap.name, task)\n args[taskIndex] = proxyTask\n proxyTask.output = 'Processing...'\n return fn(...args)\n }\n }\n\n if (tap.type === 'async') {\n tap.fn = (...args: any[]) => {\n const task = args[taskIndex] as TaskWrapper\n const proxyTask = proxyTaskWrapper(tap.name, task)\n args[taskIndex] = proxyTask\n proxyTask.output = 'Processing...'\n return fn(...args)\n }\n }\n\n return tap\n },\n }\n}\n\n","/* eslint-disable @typescript-eslint/no-unsafe-return */\nimport * as R from 'ramda'\nimport { FullTap, HookInterceptor, InnerCallback } from 'tapable'\n\nexport function perfectErrorMessage(): HookInterceptor<unknown, unknown> {\n return {\n register: <T extends FullTap>(tap: T): T => {\n const fn = tap.fn\n\n function prefix(err: unknown): void {\n if (err instanceof Error) {\n err.message = `[Plugin: ${tap.name}] ${err.message}`\n }\n }\n\n if (tap.type === 'promise') {\n tap.fn = async (...args: any[]) => {\n try {\n return await fn(...args)\n } catch (err) {\n prefix(err)\n throw err\n }\n }\n }\n\n if (tap.type === 'sync') {\n tap.fn = (...args: any[]) => {\n try {\n return fn(...args)\n } catch (err) {\n prefix(err)\n throw err\n }\n }\n }\n\n if (tap.type === 'async') {\n tap.fn = (...args: any[]) => {\n const callback = R.last(args) as InnerCallback<Error, any>\n\n return fn(...R.init(args), (err: Error | null, result: any) => {\n prefix(err)\n return callback(err, result)\n })\n }\n }\n\n return tap\n },\n }\n}\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 { 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 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 { 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.entries(response.content || {})\n .map(([mediaType, mediaTypeObject]) => <const>[mediaType, mediaTypeObject.schema])\n .map(([mediaType, schema]) => {\n if (mediaType.includes('text/event-stream')) return 'ReadableStream<ServerSentEvent>'\n if (mediaType.includes('multipart/form-data')) return 'FormData'\n if (!schema) return 'unknown'\n\n return JsonSchemaTransformer.toDeclaration(schema, options)\n })\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, ServerSentEvent } 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 * 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-snippet.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 ? indent(2, $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 * as R from 'ramda'\nimport { KeqQueryOptions } from 'keq'\nimport { OpenAPIV3_1 } from '@scalar/openapi-types'\nimport { OperationDefinition } from '~/models/index.js'\nimport { JsonSchemaUtils } from '~/utils/json-schema-utils/index.js'\nimport { OpenapiUtils } from '~/utils/openapi-utils/index.js'\nimport { QsArrayFormat } from '~/constants/index.js'\nimport { typeNameFactory, TypeNameFn } from './utils/index.js'\n\n\nexport interface OperationDefinitionSnippetOptions {\n esm?: boolean\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 let arrayFormat: QsArrayFormat | undefined\n let allowDots: boolean | undefined\n let indices: boolean | undefined\n\n const style = parameter.style || 'form'\n const explode = parameter.explode ?? true\n\n if ('x-qs-array-format' in parameter) {\n arrayFormat = parameter['x-qs-array-format'] as QsArrayFormat\n } else {\n if (style === 'deepObject') {\n arrayFormat = QsArrayFormat.brackets\n } else if (explode) {\n arrayFormat = QsArrayFormat.repeat\n } else {\n if (style === 'form') {\n arrayFormat = QsArrayFormat.comma\n } else if (style === 'spaceDelimited') {\n arrayFormat = QsArrayFormat.space\n } else if (style === 'pipeDelimited') {\n arrayFormat = QsArrayFormat.pipe\n }\n }\n }\n\n if ('x-qs-allow-dots' in parameter) {\n allowDots = Boolean(parameter['x-qs-allow-dots'])\n }\n\n if ('x-qs-indices' in parameter) {\n indices = Boolean(parameter['x-qs-indices'])\n }\n\n\n if (arrayFormat || allowDots !== undefined || indices !== undefined) {\n return {\n ...(arrayFormat ? { arrayFormat } : {}),\n ...(allowDots !== undefined ? { allowDots } : {}),\n ...(indices !== undefined ? { indices } : {}),\n }\n }\n\n return undefined\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","export enum QsArrayFormat {\n brackets = 'brackets',\n indices = 'indices',\n repeat = 'repeat',\n comma = 'comma',\n space = 'space',\n pipe = 'pipe',\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-snippet.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 { indent } from '~/utils/indent.js'\n\n\nexport interface ApiDocumentNestjsClientRendererOptions {\n esm?: boolean\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 }))\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 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 rc = compiler.context.rc!\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: rc.tolerant },\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 // Apply Custom Plugins\n if (rc.plugins && rc.plugins.length) {\n for (const plugin of rc.plugins) {\n plugin.apply(compiler)\n }\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","import { OpenAPIV3_1 } from '@scalar/openapi-types'\nimport { KeqQueryOptions } from 'keq'\nimport { Compiler } from '~/compiler/index.js'\nimport { QsArrayFormat } from '~/constants/qs-array-format.js'\nimport { Exception } from '~/exception.js'\nimport { ApiDocumentV3_1, ModuleDefinition } from '~/models/index.js'\nimport { Plugin } from '~/types/plugin.js'\nimport { OpenapiUtils } from '~/utils/openapi-utils/index.js'\n\n\nexport type OverwriteQueryOptionsFactory = (\n (options: {\n module: ModuleDefinition\n method: string\n pathname: string\n operation: OpenAPIV3_1.OperationObject\n parameter: OpenAPIV3_1.ParameterObject\n }) => KeqQueryOptions | undefined\n) | KeqQueryOptions\n\nconst QsArrayFormatUnion: string[] = Object.values(QsArrayFormat)\n\nexport class OverwriteQueryOptionsPlugin implements Plugin {\n constructor(private readonly factory: OverwriteQueryOptionsFactory) {}\n\n apply(compiler: Compiler): void {\n compiler.hooks.afterDownload.tap(OverwriteQueryOptionsPlugin.name, (task) => {\n const documents = compiler.context.documents!\n const factory = this.factory\n\n compiler.context.documents = documents.map((document) => {\n const specification = OpenapiUtils.mapParameter(\n document.specification,\n (method, pathname, operation, parameter) => {\n const qsOptions = typeof factory === 'function' ? factory({ parameter, operation, pathname, method, module: document.module }) : factory\n if (!qsOptions) return parameter\n\n if (qsOptions.arrayFormat) {\n if (!QsArrayFormatUnion.includes(qsOptions.arrayFormat)) {\n throw new Exception(document.module, `The 'arrayFormat' value '${qsOptions.arrayFormat}' for the query parameter '${parameter.name}' in [${method.toUpperCase()} ${pathname}] is invalid.`)\n }\n\n parameter['x-qs-array-format'] = qsOptions.arrayFormat\n }\n\n if (qsOptions.allowDots !== undefined) {\n if (typeof qsOptions.allowDots !== 'boolean') {\n throw new Exception(document.module, `The 'allowDots' value for the query parameter '${parameter.name}' in [${method.toUpperCase()} ${pathname}] must be a boolean.`)\n }\n\n parameter['x-qs-allow-dots'] = Boolean(qsOptions.allowDots)\n }\n\n if (qsOptions.indices !== undefined) {\n if (typeof qsOptions.indices !== 'boolean') {\n throw new Exception(document.module, `The 'indices' value for the query parameter '${parameter.name}' in [${method.toUpperCase()} ${pathname}] must be a boolean.`)\n }\n\n parameter['x-qs-indices'] = Boolean(qsOptions.indices)\n }\n\n return parameter\n },\n )\n\n return new ApiDocumentV3_1(\n specification,\n document.module,\n )\n })\n })\n }\n}\n"],"mappings":"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","names":["chalk","import_listr2","import_tapable","import_fs_extra","fs","FileNamingStyle","R","keys","validator","path","fs","path","message","fs","context","task","import_openapi_parser","path","R","R","import_jsonpath_plus","R","module","path","path","module","wrap","R","import_jsonpointer","import_jsonpath_plus","R","import_jsonpath_plus","R","path","jsonpointer","jsonpointer","last","R","main","task","path","import_fs_extra","fs","main","context","task","main","context","task","prop","R","R","import_tapable","R","path","changeCase","path","changeCase","R","R","alias","schema","R","R","CommentRenderer","R","DeclarationRenderer","R","R","QsArrayFormat","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","import_tapable","MetadataStorage","path","changeCase","dirname","document","MetadataStorage","changeCase","MetadataStorage","path","fs","keys","R","semver","moduleNames","main"]}
1
+ {"version":3,"file":"cli.cjs","names":["R","Option","SupportedMethods","Compiler","Argument","Option","SupportedMethods","Compiler","fs","Compiler","Option","SupportedMethods","Compiler","Option","Compiler","FileTracker","Matcher","Compiler","fs","fs","fs","yaml","McpServer","z","Compiler","fs","StdioServerTransport","Command"],"sources":["../src/utils/xprod-merge.ts","../src/commands/utils/xprod-filter-rules.ts","../src/commands/build.ts","../src/commands/filter.ts","../src/utils/scan-generated-files.ts","../src/commands/list.ts","../src/commands/apis.ts","../src/commands/mock.ts","../src/commands/init.ts","../src/search/embedder.ts","../src/search/search-engine.ts","../src/commands/search.ts","../src/mcp/compiler-provider.ts","../src/mcp/find-config-in-dir.ts","../src/mcp/compiler-provider-registry.ts","../src/mcp/discover-projects.ts","../src/commands/mcp.ts","../src/cli.ts"],"sourcesContent":["import * as R from 'ramda'\n\n// 定义一个能推断多个对象合并结果的类型工具\ntype MergeAll<T extends unknown[]> = T extends [infer F, ...infer R]\n ? F & MergeAll<R>\n : Record<string, never>\n\n/**\n * 对多个对象数组执行笛卡尔积合并\n * @example\n * xprodMerge([{ a: 1 }, { a: 2 }], [{b: 1}], [{ c: 1 }])\n * // => [{ a: 1, b: 1, c: 1}, { a: 2, b:1, c: 1 }]\n */\nexport function xprodMerge<T extends object[]>(\n ...lists: { [K in keyof T]: T[K][] }\n): MergeAll<T>[] {\n if (lists.length === 0) return [] as MergeAll<T>[]\n if (lists.length === 1) return lists[0] as MergeAll<T>[]\n\n // 使用 reduce 和 R.chain 对所有数组执行笛卡尔积操作,并合并每个组合的对象\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result = lists.reduce((acc: any[], curr: any[]) => R.chain((item1: Record<string, unknown>) => R.map((item2: Record<string, unknown>) => R.mergeAll([item1, item2]), curr), acc)) as MergeAll<T>[]\n\n return result\n}\n","import { xprodMerge } from '../../utils/xprod-merge.js'\nimport type { FilterRule } from '../../utils/matcher.js'\n\nexport function xprodFilterRules(options: { module?: string[]; method?: string; pathname?: string; persist?: boolean }): FilterRule[] {\n return xprodMerge(\n (options.module || ['*']).map((moduleName) => ({ deny: false, persist: options.persist, moduleName })),\n options.method ? [{ operationMethod: options.method.toLowerCase() }] : [{ operationMethod: '*' }],\n options.pathname ? [{ operationPathname: options.pathname }] : [{ operationPathname: '/**' }],\n ) as unknown as FilterRule[]\n}\n","import { Command, Option } from 'commander'\nimport { SupportedMethods } from '../constants/supported-methods.js'\nimport { Compiler } from '../compiler/compiler.js'\nimport type { FilterRule } from '../utils/matcher.js'\nimport { xprodFilterRules } from './utils/xprod-filter-rules.js'\n\nexport function registerBuildCommand(program: Command): void {\n program\n .command('build')\n .description('Build and generate API client code from OpenAPI/Swagger specifications')\n .option('-c --config <config>', 'The keq-cli config file')\n .option('--module <modules...>', 'Filter module(s) to generate')\n .option('--debug', 'Print debug information')\n .option('--tolerant', 'Tolerate wrong swagger/openapi structure')\n .option('--fresh', 'Clean the output directory before building')\n .option('-i --interactive', 'Interactive select the scope of generation')\n .addOption(\n new Option('--method <method>', 'Only generate files of the specified operation method')\n .choices([\n ...SupportedMethods,\n ...SupportedMethods.map((method) => method.toUpperCase()),\n ]),\n )\n .option('--pathname <pathname>', 'Only generate files of the specified operation pathname')\n .action(async (options) => {\n const filterRules: FilterRule[] = []\n\n if (options.module || options.method || options.pathname) {\n filterRules.push(\n {\n deny: true,\n persist: false,\n moduleName: '*',\n operationMethod: '*',\n operationPathname: '/**',\n },\n ...xprodFilterRules({\n module: options.module,\n method: options.method,\n pathname: options.pathname,\n persist: false,\n }),\n )\n } else if (options.interactive) {\n filterRules.push({\n deny: true,\n persist: false,\n moduleName: '*',\n operationMethod: '*',\n operationPathname: '/**',\n })\n }\n\n const compiler = new Compiler({\n build: true,\n persist: true,\n fresh: !!options.fresh,\n config: options.config,\n debug: !!options.debug,\n tolerant: !!options.tolerant,\n interactive: !!options.interactive && { mode: 'allow' },\n filter: filterRules.length > 0\n ? { rules: filterRules }\n : undefined,\n })\n\n await compiler.run()\n })\n}\n","import { Argument, Command, Option } from 'commander'\nimport { SupportedMethods } from '../constants/supported-methods.js'\nimport { Compiler } from '../compiler/compiler.js'\n\nexport function registerFilterCommand(program: Command): void {\n program\n .command('filter')\n .description('Manage filter rules for API generation using .keqfilter file')\n .addArgument(\n new Argument('<mode>', 'The filter mode')\n .choices(['all', 'deny', 'allow'])\n .argRequired(),\n )\n .option('-c --config <config>', 'The keq-cli config file')\n .option('--debug', 'Print debug information')\n .option('--tolerant', 'Tolerate wrong swagger/openapi structure')\n .option('--module <modules...>')\n .option('--build', 'Build after updating .keqfilter file')\n .addOption(\n new Option('--method <method>', 'Only generate files of the specified operation method')\n .choices([\n ...SupportedMethods,\n ...SupportedMethods.map((method) => method.toUpperCase()),\n ]),\n )\n .option('--pathname <pathnames>', 'Only generate files of the specified operation pathname')\n .option('-i --interactive', 'Interactive select the scope of generation')\n .action(async (mode, options) => {\n let compiler: Compiler\n\n if (mode === 'all') {\n if (options.build) throw new Error(\"'--build' cannot be used with 'all' mode\")\n if (options.interactive) throw new Error(\"'--interactive' cannot be used with 'all' mode\")\n if (options.module) throw new Error(\"'--module' cannot be used with 'all' mode\")\n if (options.method) throw new Error(\"'--method' cannot be used with 'all' mode\")\n if (options.pathname) throw new Error(\"'--pathname' cannot be used with 'all' mode\")\n\n compiler = new Compiler({\n build: false,\n persist: true,\n config: options.config,\n debug: !!options.debug,\n tolerant: !!options.tolerant,\n interactive: false,\n filter: {\n rules: [{\n persist: true,\n deny: true,\n moduleName: '*',\n operationMethod: '*',\n operationPathname: '/**',\n }],\n },\n })\n } else if (options.interactive) {\n if (options.interactive) {\n if (options.method) throw new Error(\"'--method' cannot be used with '--interactive'\")\n if (options.pathname) throw new Error(\"'--pathname' cannot be used with '--interactive'\")\n }\n\n compiler = new Compiler({\n build: !!options.build,\n persist: true,\n config: options.config,\n debug: !!options.debug,\n tolerant: !!options.tolerant,\n interactive: {\n mode,\n persist: true,\n },\n filter: {\n rules: [{\n persist: false,\n deny: true,\n moduleName: '*',\n operationMethod: '*',\n operationPathname: '/**',\n }],\n },\n })\n } else {\n if (!options.method && !options.pathname) {\n throw new Error(\"at least one of '-i --interactive', '--method' or '--pathname' must be specified\")\n }\n\n const moduleNames = options.module || ['*']\n\n compiler = new Compiler({\n build: !!options.build,\n persist: true,\n config: options.config,\n debug: !!options.debug,\n tolerant: !!options.tolerant,\n filter: {\n rules: moduleNames.map((moduleNames) => ({\n persist: true,\n deny: mode === 'deny',\n moduleName: moduleNames,\n operationMethod: options.method,\n operationPathname: options.pathname,\n })),\n },\n interactive: false,\n })\n }\n\n await compiler.run()\n })\n}\n","import * as path from 'path'\nimport fs from 'fs-extra'\n\nexport interface GeneratedFile {\n /** Absolute path to the file */\n absolutePath: string\n /** Relative path from outdir */\n relativePath: string\n}\n\n/**\n * Recursively find all files in a directory\n */\nasync function findAllFiles(dir: string, extensions?: string[]): Promise<string[]> {\n const results: string[] = []\n\n async function scan(currentDir: string): Promise<void> {\n let entries: string[]\n try {\n entries = await fs.readdir(currentDir)\n } catch (err) {\n // Skip directories that can't be read\n return\n }\n\n for (const entry of entries) {\n // Skip node_modules and .git directories\n if (entry === 'node_modules' || entry === '.git') {\n continue\n }\n\n const fullPath = path.join(currentDir, entry)\n let stat: fs.Stats\n try {\n stat = await fs.stat(fullPath)\n } catch (err) {\n // Skip entries that can't be stat'd\n continue\n }\n\n if (stat.isDirectory()) {\n await scan(fullPath)\n } else if (stat.isFile()) {\n if (!extensions) {\n // If no extensions specified, include all files\n results.push(fullPath)\n } else {\n const ext = path.extname(fullPath)\n if (extensions.includes(ext)) {\n results.push(fullPath)\n }\n }\n }\n }\n }\n\n await scan(dir)\n return results\n}\n\n/**\n * Scan all files in the output directory\n * @param outdir The output directory to scan\n * @returns List of all files with their paths\n */\nasync function scanAllFiles(outdir: string): Promise<GeneratedFile[]> {\n const absoluteOutdir = path.resolve(outdir)\n\n // Check if outdir exists\n if (!await fs.exists(absoluteOutdir)) {\n return []\n }\n\n // Find all files in outdir (no extension filter)\n const files = await findAllFiles(absoluteOutdir)\n\n return files.map((file) => ({\n absolutePath: file,\n relativePath: path.relative(absoluteOutdir, file),\n }))\n}\n\n/**\n * Find invalid files that are not in the current artifacts list\n * This includes both non-generated files and outdated generated files\n * @param outdir The output directory\n * @param validFilePaths List of valid file paths (relative to outdir)\n * @returns List of invalid files\n */\nexport async function findInvalidFiles(\n outdir: string,\n validFilePaths: string[],\n): Promise<GeneratedFile[]> {\n const allFiles = await scanAllFiles(outdir)\n const validPathsSet = new Set(validFilePaths.map((p) => path.normalize(p)))\n\n return allFiles.filter((file) => {\n const normalizedPath = path.normalize(file.relativePath)\n return !validPathsSet.has(normalizedPath)\n })\n}\n","import * as path from 'path'\nimport { Command } from 'commander'\nimport { Compiler } from '../compiler/compiler.js'\nimport { findInvalidFiles } from '../utils/scan-generated-files.js'\n\nexport function registerListCommand(program: Command): void {\n program\n .command('list')\n .description('List generated files based on current configuration')\n .option('-c --config <config>', 'The keq-cli config file')\n .option('--invalid', 'List only invalid generated files (files not in current build)')\n .option('--debug', 'Print debug information')\n .option('--tolerant', 'Tolerate wrong swagger/openapi structure')\n .action(async (options) => {\n const compiler = new Compiler({\n build: true,\n persist: false,\n silent: true,\n config: options.config,\n debug: !!options.debug,\n tolerant: !!options.tolerant,\n })\n\n await compiler.run()\n\n const context = compiler.context\n\n if (!context.rc) {\n throw new Error('Failed to load configuration')\n }\n\n if (options.invalid) {\n const validFilePaths = (context.artifacts || []).map((artifact) => artifact.filepath)\n const invalidFiles = await findInvalidFiles(context.rc.outdir, validFilePaths)\n\n for (const file of invalidFiles) {\n const fullPath = `./${path.join(context.rc.outdir, file.relativePath)}`\n console.log(fullPath)\n }\n } else {\n const artifacts = context.artifacts || []\n\n for (const artifact of artifacts) {\n const fullPath = `./${path.join(context.rc.outdir, artifact.filepath)}`\n console.log(fullPath)\n }\n }\n })\n}\n","import { Command, Option } from 'commander'\nimport { SupportedMethods } from '../constants/supported-methods.js'\nimport { Compiler } from '../compiler/compiler.js'\nimport type { FilterRule } from '../utils/matcher.js'\nimport { xprodFilterRules } from './utils/xprod-filter-rules.js'\n\nexport function registerApisCommand(program: Command): void {\n program\n .command('apis')\n .description('List API operations and components from OpenAPI/Swagger specifications')\n .option('-c --config <config>', 'The keq-cli config file')\n .option('--tolerant', 'Tolerate wrong swagger/openapi structure')\n .addOption(\n new Option('--includes <includes...>', 'Include specific parts')\n .choices(['operations', 'components']),\n )\n .option('--module <modules...>', 'Filter module(s) to list')\n .addOption(\n new Option('--method <method>', 'Only generate files of the specified operation method')\n .choices([\n ...SupportedMethods,\n ...SupportedMethods.map((method) => method.toUpperCase()),\n ]),\n )\n .option('--pathname <pathnames>', 'Only generate files of the specified operation pathname')\n .addOption(\n new Option('--format <format>', 'Output format')\n .choices(['compact', 'json']),\n )\n .option('--json', 'Output in JSON format (shortcut for --format json)')\n .option('--all', 'Ignore .keqfilter rules and show all modules/operations')\n .option('--debug', 'Print debug information')\n .action(async (options) => {\n if (options.all && (options.module || options.method || options.pathname)) {\n throw new Error(\"'--all' cannot be used with '--module', '--method', or '--pathname'\")\n }\n\n const filterRules: FilterRule[] = []\n\n if (options.module || options.method || options.pathname) {\n filterRules.push(\n {\n deny: true,\n persist: false,\n moduleName: '*',\n operationMethod: '*',\n operationPathname: '/**',\n },\n ...xprodFilterRules({\n module: options.module,\n method: options.method,\n pathname: options.pathname,\n persist: false,\n }),\n )\n }\n\n\n const compiler = new Compiler({\n build: true,\n persist: false,\n silent: true,\n config: options.config,\n debug: !!options.debug,\n tolerant: !!options.tolerant,\n filter: options.all\n ? false\n : filterRules.length > 0\n ? { rules: filterRules }\n : undefined,\n })\n\n await compiler.run()\n\n const context = compiler.context\n const documents = context.documents || []\n\n const includesList = options.includes || ['operations', 'components']\n const includeOperations = includesList.includes('operations')\n const includeComponents = includesList.includes('components')\n\n const result = documents.map((document) => {\n const item: {\n module: string\n operations?: Array<{ method: string; path: string; operationId: string; summary: string; description: string }>\n components?: { schemas: Array<{ name: string; description: string }> }\n } = {\n module: document.module.name,\n }\n\n if (includeOperations) {\n item.operations = document.operations.map((operation) => ({\n method: operation.method.toUpperCase(),\n path: operation.pathname,\n operationId: operation.operationId,\n summary: operation.operation.summary || '',\n description: operation.operation.description || '',\n }))\n }\n\n if (includeComponents) {\n item.components = {\n schemas: document.schemas.map((schema) => {\n const schemaObj = schema.schema as { description?: string }\n return {\n name: schema.name,\n description: schemaObj.description || '',\n }\n }),\n }\n }\n\n return item\n })\n\n const format = options.format || (options.json ? 'json' : undefined)\n\n if (format === 'json') {\n console.log(JSON.stringify(result, null, 2))\n } else if (format === 'compact') {\n for (const item of result) {\n console.log(`\\nModule: ${item.module}`)\n console.log('─'.repeat(70))\n\n if (includeOperations) {\n console.log('\\n APIs:')\n if (!item.operations || item.operations.length === 0) {\n console.log(' (No APIs)')\n } else {\n for (const operation of item.operations) {\n const method = operation.method.padEnd(7)\n const desc = operation.summary || operation.description\n const descText = desc ? ` ${desc}` : ''\n console.log(` ${method} ${operation.path}${descText}`)\n }\n }\n }\n\n if (includeComponents) {\n console.log('\\n Schemas:')\n if (!item.components || item.components.schemas.length === 0) {\n console.log(' (No Schemas)')\n } else {\n for (const schema of item.components.schemas) {\n const desc = schema.description ? ` ${schema.description}` : ''\n console.log(` ${schema.name}${desc}`)\n }\n }\n }\n }\n\n const totalApis = result.reduce((sum, item) => sum + (item.operations?.length || 0), 0)\n const totalSchemas = result.reduce((sum, item) => sum + (item.components?.schemas.length || 0), 0)\n console.log('\\n' + '─'.repeat(70))\n const parts = [`${result.length} modules`]\n if (includeOperations) parts.push(`${totalApis} APIs`)\n if (includeComponents) parts.push(`${totalSchemas} Schemas`)\n console.log(`Total: ${parts.join(', ')}`)\n } else {\n for (const item of result) {\n console.log(`\\nModule: ${item.module}`)\n console.log('─'.repeat(70))\n\n if (includeOperations) {\n console.log('\\n APIs:')\n if (!item.operations || item.operations.length === 0) {\n console.log(' (No APIs)')\n } else {\n for (const operation of item.operations) {\n const method = operation.method.padEnd(7)\n console.log(` ${method} ${operation.path}`)\n const desc = operation.summary || operation.description\n if (desc) {\n console.log(` ${desc}`)\n }\n }\n }\n }\n\n if (includeComponents) {\n console.log('\\n Schemas:')\n if (!item.components || item.components.schemas.length === 0) {\n console.log(' (No Schemas)')\n } else {\n for (const schema of item.components.schemas) {\n console.log(` ${schema.name}`)\n if (schema.description) {\n console.log(` ${schema.description}`)\n }\n }\n }\n }\n }\n\n const totalApis = result.reduce((sum, item) => sum + (item.operations?.length || 0), 0)\n const totalSchemas = result.reduce((sum, item) => sum + (item.components?.schemas.length || 0), 0)\n console.log('\\n' + '─'.repeat(70))\n const parts = [`${result.length} modules`]\n if (includeOperations) parts.push(`${totalApis} APIs`)\n if (includeComponents) parts.push(`${totalSchemas} Schemas`)\n console.log(`Total: ${parts.join(', ')}`)\n }\n })\n}\n","import { Command } from 'commander'\n\nexport function registerMockCommand(program: Command): void {\n program\n .command('mock')\n .description('Start a mock server based on OpenAPI specifications')\n .option('-c --config <config>', 'The keq-cli config file')\n .option('-p --port <port>', 'Port to listen on', '3939')\n .option('--host <host>', 'Host to bind to', 'localhost')\n .option('--module <modules...>', 'Filter module(s) to mock')\n .option('--cors', 'Enable CORS headers', true)\n .option('--delay <delay>', 'Response delay in ms (or min-max range like \"100-500\")')\n .option('--max-depth <depth>', 'Max schema depth for mock data generation', '10')\n .option('--ref-depth <depth>', 'Max $ref recursion depth for circular schemas', '5')\n .option('--debug', 'Print debug information')\n .option('--tolerant', 'Tolerate wrong swagger/openapi structure')\n .action(async (options) => {\n const { mockCommand } = await import('../mock/mock-command.js')\n await mockCommand(options)\n })\n}\n","import { Command } from 'commander'\n\nexport function registerInitCommand(program: Command): void {\n program\n .command('init')\n .description('Initialize keq configuration file')\n .option('-f --force', 'Force overwrite existing config file')\n .action(async (options) => {\n const { initConfig } = await import('../init.js')\n await initConfig(options)\n })\n}\n","import path from 'path'\nimport os from 'os'\nimport type { FeatureExtractionPipeline } from '@huggingface/transformers'\n\nconst MODEL_NAME = 'intfloat/multilingual-e5-small'\nconst CACHE_DIR = path.join(os.homedir(), '.cache', 'keq', 'models')\n\nlet transformers: typeof import('@huggingface/transformers') | null = null\nlet loadError: Error | null = null\nlet extractor: FeatureExtractionPipeline | null = null\n\nexport class EmbedderUnavailableError extends Error {\n constructor(cause?: Error) {\n super(\n '@huggingface/transformers is not installed. Semantic search is unavailable.\\n' +\n 'Run `pnpm add @huggingface/transformers` to enable this feature.',\n )\n this.name = 'EmbedderUnavailableError'\n if (cause) this.cause = cause\n }\n}\n\nasync function loadTransformers(): Promise<typeof import('@huggingface/transformers')> {\n if (transformers) return transformers\n if (loadError) throw new EmbedderUnavailableError(loadError)\n try {\n transformers = await import('@huggingface/transformers')\n return transformers\n } catch (e) {\n loadError = e instanceof Error ? e : new Error(String(e))\n throw new EmbedderUnavailableError(loadError)\n }\n}\n\nexport async function getEmbedder(): Promise<FeatureExtractionPipeline> {\n if (extractor) return extractor\n\n const { pipeline, env } = await loadTransformers()\n\n env.cacheDir = CACHE_DIR\n env.allowLocalModels = true\n\n extractor = await pipeline('feature-extraction', MODEL_NAME, {\n dtype: 'fp32',\n })\n\n return extractor\n}\n\nexport async function embed(texts: string[]): Promise<Float32Array[]> {\n const extractor = await getEmbedder()\n const prefixed = texts.map((t) => `query: ${t}`)\n const output = await extractor(prefixed, { pooling: 'mean', normalize: true })\n const data = output.tolist() as number[][]\n return data.map((vec) => new Float32Array(vec))\n}\n\nexport async function embedDocuments(texts: string[]): Promise<Float32Array[]> {\n const extractor = await getEmbedder()\n const prefixed = texts.map((t) => `passage: ${t}`)\n const output = await extractor(prefixed, { pooling: 'mean', normalize: true })\n const data = output.tolist() as number[][]\n return data.map((vec) => new Float32Array(vec))\n}\n\nexport function cosineSimilarity(a: Float32Array, b: Float32Array): number {\n let dot = 0\n for (let i = 0; i < a.length; i++) {\n dot += a[i] * b[i]\n }\n return dot\n}\n","import type { ApiDocumentV3_1 } from '~/models/api-document_v3_1.js'\nimport type { IndexedOperation, SearchResult, SearchResultDetail } from './types.js'\nimport { embed, embedDocuments, cosineSimilarity } from './embedder.js'\n\nexport class SearchEngine {\n private operations: IndexedOperation[] = []\n\n async buildIndex(documents: ApiDocumentV3_1[]): Promise<void> {\n this.operations = []\n\n for (const document of documents) {\n for (const op of document.operations) {\n const tags = op.operation.tags || []\n const summary = op.operation.summary || ''\n const description = op.operation.description || ''\n const text = [\n op.method.toUpperCase(),\n op.pathname,\n op.operationId,\n summary,\n description,\n ...tags,\n ].filter(Boolean).join(' ')\n\n this.operations.push({\n id: `${document.module.name}:${op.method}:${op.pathname}`,\n module: document.module.name,\n method: op.method.toUpperCase(),\n pathname: op.pathname,\n operationId: op.operationId,\n summary,\n description,\n tags,\n text,\n operation: op.operation,\n })\n }\n }\n\n const texts = this.operations.map((op) => op.text)\n const embeddings = await embedDocuments(texts)\n for (let i = 0; i < this.operations.length; i++) {\n this.operations[i].embedding = embeddings[i]\n }\n }\n\n async search(query: string, options?: { limit?: number; module?: string[] }): Promise<SearchResult[]> {\n const limit = options?.limit ?? 10\n const modules = options?.module\n\n let candidates = this.operations\n if (modules && modules.length > 0) {\n candidates = candidates.filter((op) => modules.includes(op.module))\n }\n\n if (candidates.length === 0) return []\n\n const [queryEmbedding] = await embed([query])\n\n const scored = candidates\n .filter((op) => op.embedding)\n .map((op) => ({\n op,\n score: cosineSimilarity(queryEmbedding, op.embedding!),\n }))\n .sort((a, b) => b.score - a.score)\n .slice(0, limit)\n\n return scored.map(({ op, score }) => ({\n score: Math.round(score * 1000) / 1000,\n module: op.module,\n method: op.method,\n pathname: op.pathname,\n operationId: op.operationId,\n summary: op.summary,\n description: op.description,\n tags: op.tags,\n }))\n }\n\n getDetail(module: string, method: string, pathname: string): SearchResultDetail | undefined {\n const op = this.operations.find(\n (o) => o.module === module && o.method === method.toUpperCase() && o.pathname === pathname,\n )\n if (!op) return undefined\n\n const operation = op.operation as Record<string, unknown>\n\n return {\n score: 1,\n module: op.module,\n method: op.method,\n pathname: op.pathname,\n operationId: op.operationId,\n summary: op.summary,\n description: op.description,\n tags: op.tags,\n parameters: (operation.parameters || []) as unknown[],\n requestBody: operation.requestBody || null,\n responses: operation.responses || null,\n }\n }\n\n listModules(): string[] {\n return [...new Set(this.operations.map((op) => op.module))]\n }\n}\n","import { Command, Option } from 'commander'\nimport { Compiler } from '../compiler/compiler.js'\nimport { SearchEngine } from '../search/search-engine.js'\nimport { EmbedderUnavailableError } from '../search/embedder.js'\nimport type { FilterRule } from '../utils/matcher.js'\nimport { xprodFilterRules } from './utils/xprod-filter-rules.js'\n\nexport function registerSearchCommand(program: Command): void {\n program\n .command('search')\n .description('Semantic search for API operations using natural language')\n .argument('<query>', 'Natural language search query')\n .option('-c --config <config>', 'The keq-cli config file')\n .option('--module <modules...>', 'Filter module(s) to search')\n .option('--limit <limit>', 'Maximum number of results', '10')\n .option('--detail', 'Include full request/response schema in results')\n .addOption(\n new Option('--format <format>', 'Output format')\n .choices(['json', 'compact'])\n .default('json'),\n )\n .option('--all', 'Ignore .keqfilter rules')\n .option('--tolerant', 'Tolerate wrong swagger/openapi structure')\n .option('--debug', 'Print debug information')\n .action(async (query, options) => {\n const filterRules: FilterRule[] = []\n\n if (options.module && !options.all) {\n filterRules.push(\n {\n deny: true,\n persist: false,\n moduleName: '*',\n operationMethod: '*',\n operationPathname: '/**',\n },\n ...xprodFilterRules({\n module: options.module,\n persist: false,\n }),\n )\n }\n\n const compiler = new Compiler({\n build: true,\n persist: false,\n silent: true,\n config: options.config,\n debug: !!options.debug,\n tolerant: !!options.tolerant,\n filter: options.all\n ? false\n : filterRules.length > 0\n ? { rules: filterRules }\n : undefined,\n })\n\n await compiler.run()\n\n const documents = compiler.context.documents || []\n const engine = new SearchEngine()\n\n try {\n await engine.buildIndex(documents)\n } catch (e) {\n if (e instanceof EmbedderUnavailableError) {\n console.error(e.message)\n process.exit(1)\n }\n throw e\n }\n\n const limit = parseInt(options.limit, 10)\n const results = await engine.search(query, { limit, module: options.module })\n\n if (options.detail) {\n const detailed = results.map((r) => {\n const detail = engine.getDetail(r.module, r.method, r.pathname)\n return detail || r\n })\n printResults(detailed, options.format)\n } else {\n printResults(results, options.format)\n }\n })\n}\n\nfunction printResults(results: unknown[], format: string): void {\n if (format === 'json') {\n console.log(JSON.stringify({ results, total: results.length }, null, 2))\n } else {\n for (const r of results as Array<Record<string, unknown>>) {\n const method = String(r.method).padEnd(7)\n const score = String(r.score)\n console.log(` [${score}] ${method} ${String(r.pathname)}`)\n if (typeof r.summary === 'string') console.log(` ${r.summary}`)\n console.log(` ${String(r.module)} | ${String(r.operationId)}`)\n console.log()\n }\n console.log(`Total: ${results.length} results`)\n }\n}\n","import path from 'path'\nimport fs from 'fs-extra'\nimport { cosmiconfig } from 'cosmiconfig'\nimport { Compiler } from '~/compiler/compiler.js'\nimport { SearchEngine } from '~/search/search-engine.js'\nimport { EmbedderUnavailableError } from '~/search/embedder.js'\nimport { FileTracker } from '~/models/file-tracker.js'\nimport { Matcher } from '~/utils/matcher.js'\nimport type { ApiDocumentV3_1 } from '~/models/api-document_v3_1.js'\nimport type { CompilerContext } from '~/compiler/types/compiler-context.js'\n\ninterface CompilerProviderOptions {\n config?: string\n debug: boolean\n tolerant: boolean\n}\n\n/**\n * Manages the Compiler lifecycle with automatic lazy reload.\n * Tracks .keqrc and .keqfilter for changes; getters transparently\n * re-compile when config files are modified, with built-in concurrency protection.\n */\nexport class CompilerProvider {\n private tracker = new FileTracker()\n private _engine = new SearchEngine()\n private _engineAvailable = false\n private _documents: ApiDocumentV3_1[] = []\n private _context: CompilerContext = {}\n private _matcher: Matcher = new Matcher([])\n private _keqfilterPath = ''\n private _configPath = ''\n private _loaded = false\n private _loadPromise: Promise<void> | null = null\n private options: CompilerProviderOptions\n\n private constructor(options: CompilerProviderOptions) {\n this.options = options\n }\n\n get configPath(): string {\n return this._configPath\n }\n\n static async init(options: CompilerProviderOptions): Promise<CompilerProvider> {\n const provider = new CompilerProvider(options)\n\n const explore = cosmiconfig('keq')\n const result = options.config\n ? await explore.load(options.config)\n : await explore.search()\n\n if (!result) {\n throw new Error('Cannot find config file.')\n }\n\n const configFilepath = result.filepath\n const keqfilterPath = path.resolve(path.dirname(configFilepath), '.keqfilter')\n\n provider._keqfilterPath = keqfilterPath\n provider._configPath = configFilepath\n await provider.tracker.track(configFilepath)\n await provider.tracker.track(keqfilterPath)\n\n return provider\n }\n\n async getDocuments(): Promise<ApiDocumentV3_1[]> {\n await this.ensureLoaded()\n return this._documents\n }\n\n async getEngine(): Promise<SearchEngine> {\n await this.ensureLoaded()\n if (!this._engineAvailable) {\n throw new EmbedderUnavailableError()\n }\n return this._engine\n }\n\n async getContext(): Promise<CompilerContext> {\n await this.ensureLoaded()\n return this._context\n }\n\n async getMatcher(): Promise<Matcher> {\n await this.ensureLoaded()\n return this._matcher\n }\n\n async invalidate(): Promise<void> {\n await this.tracker.forceReload(() => this.reload())\n }\n\n private async ensureLoaded(): Promise<void> {\n if (this._loaded) {\n await this.tracker.ensureFresh(() => this.reload())\n return\n }\n if (this._loadPromise) {\n await this._loadPromise\n return\n }\n this._loadPromise = this.reload().finally(() => {\n this._loadPromise = null\n })\n await this._loadPromise\n }\n\n private async reload(): Promise<void> {\n const { config, debug, tolerant } = this.options\n const compiler = new Compiler({\n build: true,\n persist: false,\n silent: true,\n config,\n debug,\n tolerant,\n filter: false,\n })\n await compiler.run()\n this._context = compiler.context\n this._documents = compiler.context.documents || []\n\n try {\n await this._engine.buildIndex(this._documents)\n this._engineAvailable = true\n } catch (e) {\n if (e instanceof EmbedderUnavailableError) {\n this._engineAvailable = false\n } else {\n throw e\n }\n }\n\n if (await fs.exists(this._keqfilterPath)) {\n this._matcher = await Matcher.read(this._keqfilterPath)\n } else {\n this._matcher = new Matcher([])\n }\n\n await this.tracker.snapshot()\n this._loaded = true\n }\n}\n","import path from 'path'\nimport fs from 'fs-extra'\n\nconst CONFIG_FILENAMES = [\n '.keqrc',\n '.keqrc.ts',\n '.keqrc.js',\n '.keqrc.mjs',\n '.keqrc.cjs',\n '.keqrc.json',\n '.keqrc.yml',\n '.keqrc.yaml',\n 'keq.config.ts',\n 'keq.config.js',\n 'keq.config.mjs',\n 'keq.config.cjs',\n 'keq.config.json',\n 'keq.config.yml',\n 'keq.config.yaml',\n]\n\nexport async function findConfigInDir(dir: string): Promise<string | null> {\n for (const filename of CONFIG_FILENAMES) {\n const filePath = path.resolve(dir, filename)\n if (await fs.pathExists(filePath)) {\n return filePath\n }\n }\n return null\n}\n","import path from 'path'\nimport { CompilerProvider } from './compiler-provider.js'\nimport { findConfigInDir } from './find-config-in-dir.js'\n\nexport interface ProjectEntry {\n configPath: string\n projectDir: string\n}\n\ninterface RegistryOptions {\n debug: boolean\n tolerant: boolean\n}\n\n/**\n * Manages multiple CompilerProvider instances for monorepo/multi-project support.\n * Lazily initializes providers on first access and dynamically registers new projects\n * when an unknown project directory is requested.\n */\nexport class CompilerProviderRegistry {\n private entries: Map<string, ProjectEntry> = new Map()\n private providers: Map<string, CompilerProvider> = new Map()\n private options: RegistryOptions\n\n constructor(options: RegistryOptions) {\n this.options = options\n }\n\n register(entry: ProjectEntry): void {\n this.entries.set(entry.projectDir, entry)\n }\n\n has(projectDir: string): boolean {\n return this.entries.has(projectDir)\n }\n\n list(): ProjectEntry[] {\n return [...this.entries.values()]\n }\n\n async resolve(projectDir?: string): Promise<CompilerProvider> {\n const entry = await this.resolveEntry(projectDir)\n const cached = this.providers.get(entry.projectDir)\n if (cached) return cached\n\n const provider = await CompilerProvider.init({\n config: entry.configPath,\n debug: this.options.debug,\n tolerant: this.options.tolerant,\n })\n this.providers.set(entry.projectDir, provider)\n return provider\n }\n\n getConfigPath(projectDir?: string): string {\n const resolved = this.resolveEntrySync(projectDir)\n return resolved.configPath\n }\n\n private async resolveEntry(projectDir?: string): Promise<ProjectEntry> {\n if (!projectDir) {\n return this.resolveDefault()\n }\n\n if (!path.isAbsolute(projectDir)) {\n throw new Error(`The 'project' parameter must be an absolute path. Received: ${projectDir}`)\n }\n\n const existing = this.entries.get(projectDir)\n if (existing) return existing\n\n const configPath = await findConfigInDir(projectDir)\n if (!configPath) {\n throw new Error(`No keqrc config file found in ${projectDir}`)\n }\n\n const entry: ProjectEntry = { configPath, projectDir }\n this.register(entry)\n return entry\n }\n\n private resolveEntrySync(projectDir?: string): ProjectEntry {\n if (!projectDir) {\n return this.resolveDefault()\n }\n\n if (!path.isAbsolute(projectDir)) {\n throw new Error(`The 'project' parameter must be an absolute path. Received: ${projectDir}`)\n }\n\n const existing = this.entries.get(projectDir)\n if (!existing) {\n throw new Error(`No keqrc config file found in ${projectDir}`)\n }\n return existing\n }\n\n private resolveDefault(): ProjectEntry {\n if (this.entries.size === 0) {\n throw new Error(\n 'No keq project found. Please specify \\'project\\' parameter with the absolute path to your project directory containing a keqrc config file.',\n )\n }\n\n if (this.entries.size === 1) {\n return this.entries.values().next().value!\n }\n\n const projects = [...this.entries.values()]\n .map((e) => `- ${e.projectDir} (${path.basename(e.configPath)})`)\n .join('\\n')\n\n throw new Error(\n `This is a monorepo with multiple keq projects. Please specify 'project' parameter with one of the following project directories:\\n${projects}`,\n )\n }\n}\n","import path from 'path'\nimport fs from 'fs-extra'\nimport * as yaml from 'js-yaml'\nimport picomatch from 'picomatch'\nimport { cosmiconfig } from 'cosmiconfig'\nimport { findConfigInDir } from './find-config-in-dir.js'\n\nexport interface ProjectEntry {\n configPath: string\n projectDir: string\n}\n\nexport async function discoverProjects(config?: string): Promise<ProjectEntry[]> {\n if (config) {\n const configPath = path.resolve(config)\n return [{ configPath, projectDir: path.dirname(configPath) }]\n }\n\n const cwd = process.cwd()\n const monorepoEntries = await discoverFromMonorepo(cwd)\n if (monorepoEntries.length > 0) {\n return monorepoEntries\n }\n\n const explore = cosmiconfig('keq')\n const result = await explore.search()\n if (result) {\n return [{ configPath: result.filepath, projectDir: path.dirname(result.filepath) }]\n }\n\n return []\n}\n\nasync function discoverFromMonorepo(root: string): Promise<ProjectEntry[]> {\n const workspaceGlobs = await getWorkspaceGlobs(root)\n if (workspaceGlobs.length === 0) return []\n\n const memberDirs = await expandWorkspaceGlobs(root, workspaceGlobs)\n\n const dirs = [root, ...memberDirs]\n const entries: ProjectEntry[] = []\n\n for (const dir of dirs) {\n const configPath = await findConfigInDir(dir)\n if (configPath) {\n entries.push({ configPath, projectDir: dir })\n }\n }\n\n return entries\n}\n\nasync function getWorkspaceGlobs(root: string): Promise<string[]> {\n const pnpmWorkspacePath = path.join(root, 'pnpm-workspace.yaml')\n if (await fs.pathExists(pnpmWorkspacePath)) {\n const content = await fs.readFile(pnpmWorkspacePath, 'utf-8')\n const parsed = yaml.load(content) as { packages?: string[] } | null\n if (parsed?.packages) {\n return parsed.packages\n }\n }\n\n const packageJsonPath = path.join(root, 'package.json')\n if (await fs.pathExists(packageJsonPath)) {\n const pkg = await fs.readJson(packageJsonPath) as { workspaces?: string[] | { packages?: string[] } }\n if (Array.isArray(pkg.workspaces)) {\n return pkg.workspaces\n }\n if (Array.isArray(pkg.workspaces?.packages)) {\n return pkg.workspaces.packages\n }\n }\n\n return []\n}\n\nasync function expandWorkspaceGlobs(root: string, globs: string[]): Promise<string[]> {\n const dirs: string[] = []\n\n for (const glob of globs) {\n const parts = glob.split('/')\n const baseParts: string[] = []\n let globPart = ''\n\n for (let i = 0; i < parts.length; i++) {\n if (parts[i].includes('*') || parts[i].includes('{') || parts[i].includes('?')) {\n globPart = parts.slice(i).join('/')\n break\n }\n baseParts.push(parts[i])\n }\n\n const baseDir = path.join(root, ...baseParts)\n if (!await fs.pathExists(baseDir)) continue\n\n if (!globPart) {\n const fullPath = path.resolve(root, glob)\n if (await fs.pathExists(fullPath)) {\n dirs.push(fullPath)\n }\n continue\n }\n\n const matcher = picomatch(globPart)\n const candidates = await fs.readdir(baseDir, { withFileTypes: true })\n\n for (const entry of candidates) {\n if (!entry.isDirectory()) continue\n if (matcher(entry.name)) {\n dirs.push(path.join(baseDir, entry.name))\n }\n }\n }\n\n return dirs\n}\n","import * as path from 'path'\nimport { Command } from 'commander'\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'\nimport { z } from 'zod'\nimport fs from 'fs-extra'\nimport picomatch from 'picomatch'\nimport { Compiler } from '../compiler/compiler.js'\nimport { findInvalidFiles } from '../utils/scan-generated-files.js'\nimport { xprodFilterRules } from './utils/xprod-filter-rules.js'\nimport { CompilerProviderRegistry } from '../mcp/compiler-provider-registry.js'\nimport { discoverProjects } from '../mcp/discover-projects.js'\nimport type { Matcher } from '../utils/matcher.js'\nimport type { FilterRule } from '../utils/matcher.js'\nimport type { OperationDefinition } from '../models/index.js'\n\nfunction getFilterAnnotation(matcher: Matcher, op: OperationDefinition | undefined): string {\n if (op && matcher.isOperationDenied(op)) {\n return 'This API is excluded from the code generation list by .keqfilter rules'\n }\n return 'This API is included in the code generation list'\n}\n\nexport function registerMcpCommand(program: Command): void {\n program\n .command('mcp')\n .description('Start keq MCP server')\n .option('-c --config <config>', 'The keq-cli config file')\n .option('--tolerant', 'Tolerate wrong swagger/openapi structure')\n .option('--debug', 'Print debug information')\n .action(async (options) => {\n const config: string | undefined = options.config\n const tolerant = !!options.tolerant\n const debug = !!options.debug\n\n const entries = await discoverProjects(config)\n const registry = new CompilerProviderRegistry({ debug, tolerant })\n for (const entry of entries) {\n registry.register(entry)\n }\n\n const server = new McpServer({\n name: 'keq',\n version: '1.0.0',\n description: '查询和搜索项目中对接的所有后端服务 API 接口。当用户想了解后端有哪些接口、查找某个功能的 API、查看接口的请求参数和响应格式时使用。支持自然语言语义搜索(中英文)。也可为接口生成 TypeScript 客户端代码。数据来源:项目配置的 Swagger/OpenAPI 规范文档。',\n })\n\n const projectParam = z.string().optional()\n .describe('项目目录绝对路径,用于 monorepo 中指定操作哪个子项目。非 monorepo 项目无需提供。')\n\n server.registerTool(\n 'search_apis',\n {\n description: '通过语义匹配搜索项目中的后端 API 接口。仅当用户描述了具体功能或业务场景(如\"用户登录\"、\"搜索商品\")来查找相关接口时使用。如果用户想查看所有接口或按模块/路径浏览接口列表,应使用 list_apis 而非此工具。支持中英文自然语言,返回按相关度排序的接口列表。',\n inputSchema: {\n project: projectParam,\n query: z.string().describe('自然语言搜索词,如\"用户登录\"、\"搜索商品\"、\"订单列表\"等'),\n module: z.array(z.string()).optional()\n .describe('按模块名筛选,限定在特定后端服务中搜索'),\n limit: z.number().optional()\n .default(10)\n .describe('返回结果数量上限'),\n },\n annotations: { readOnlyHint: true, destructiveHint: false },\n },\n async ({ project, query, module, limit }) => {\n try {\n const provider = await registry.resolve(project)\n const engine = await provider.getEngine()\n const matcher = await provider.getMatcher()\n const documents = await provider.getDocuments()\n const results = await engine.search(query, { limit, module })\n\n const annotated = results.map((result) => {\n const { score, ...rest } = result\n const doc = documents.find((d) => d.module.name === result.module)\n const op = doc?.operations.find(\n (o) => o.method.toLowerCase() === result.method.toLowerCase() && o.pathname === result.pathname,\n )\n return {\n ...rest,\n 'x-keq-score': score,\n 'x-keq-filter': getFilterAnnotation(matcher, op),\n }\n })\n\n return { content: [{ type: 'text', text: JSON.stringify(annotated, null, 2) }] }\n } catch (error) {\n return { content: [{ type: 'text', text: `Error: ${error instanceof Error ? error.message : String(error)}` }], isError: true }\n }\n },\n )\n\n server.registerTool(\n 'get_api_detail',\n {\n description: '获取某个 API 接口的完整详情,包含请求参数、请求体、响应体的结构定义。当用户想知道某个接口怎么调用、需要传什么参数、返回什么数据时使用。需要先通过 search_apis 或 list_apis 获取接口的 module、method、pathname。',\n inputSchema: {\n project: projectParam,\n module: z.string().describe('Module name'),\n method: z.string().describe('HTTP method (GET, POST, PUT, DELETE, etc.)'),\n pathname: z.string().describe('API pathname (e.g. /api/v1/users)'),\n },\n annotations: { readOnlyHint: true, destructiveHint: false },\n },\n async ({ project, module, method, pathname }) => {\n try {\n const provider = await registry.resolve(project)\n const engine = await provider.getEngine()\n const matcher = await provider.getMatcher()\n const documents = await provider.getDocuments()\n const detail = engine.getDetail(module, method, pathname)\n if (!detail) {\n return { content: [{ type: 'text', text: 'API not found' }], isError: true }\n }\n\n const doc = documents.find((d) => d.module.name === module)\n const op = doc?.operations.find(\n (o) => o.method.toLowerCase() === method.toLowerCase() && o.pathname === pathname,\n )\n\n return { content: [{ type: 'text', text: JSON.stringify({ ...detail, 'x-keq-filter': getFilterAnnotation(matcher, op) }, null, 2) }] }\n } catch (error) {\n return { content: [{ type: 'text', text: `Error: ${error instanceof Error ? error.message : String(error)}` }], isError: true }\n }\n },\n )\n\n server.registerTool(\n 'list_modules',\n {\n description: '列出项目对接的所有后端服务模块。当用户想知道项目接入了哪些后端系统、有哪些服务可用时使用。每个模块对应一个后端服务的 API 文档。',\n inputSchema: {\n project: projectParam,\n },\n annotations: { readOnlyHint: true, destructiveHint: false },\n },\n async ({ project }) => {\n try {\n const provider = await registry.resolve(project)\n const engine = await provider.getEngine()\n const modules = engine.listModules()\n return { content: [{ type: 'text', text: JSON.stringify(modules, null, 2) }] }\n } catch (error) {\n return { content: [{ type: 'text', text: `Error: ${error instanceof Error ? error.message : String(error)}` }], isError: true }\n }\n },\n )\n\n server.registerTool(\n 'list_apis',\n {\n description: '列出项目中所有可用的后端 API 接口。当用户想查看所有接口、浏览某个服务的全部接口、查询某个系统有哪些接口、或按条件筛选接口(如只看 GET 请求或某个路径下的接口)时使用。如果用户描述了具体功能来查找接口(如\"搜索商品的接口\"),应使用 search_apis。',\n inputSchema: {\n project: projectParam,\n module: z.array(z.string()).optional()\n .describe('Filter by module names'),\n method: z.string().optional()\n .describe('Filter by HTTP method (GET, POST, PUT, DELETE, etc.)'),\n pathname: z.string().optional()\n .describe('Filter by pathname pattern (glob supported)'),\n includes: z.array(z.enum(['operations', 'components'])).optional()\n .default(['operations'])\n .describe('What to include in results'),\n },\n annotations: { readOnlyHint: true, destructiveHint: false },\n },\n async ({ project, module, method, pathname, includes }) => {\n try {\n const provider = await registry.resolve(project)\n const documents = await provider.getDocuments()\n const matcher = await provider.getMatcher()\n const result = documents\n .filter((doc) => !module || module.includes(doc.module.name))\n .map((document) => {\n const item: {\n module: string\n operations?: Array<{ method: string; path: string; operationId: string; summary: string; description: string; 'x-keq-filter': string }>\n components?: { schemas: Array<{ name: string; description: string }> }\n } = { module: document.module.name }\n\n if (includes.includes('operations')) {\n let ops = document.operations\n if (method) {\n ops = ops.filter((op) => op.method.toLowerCase() === method.toLowerCase())\n }\n if (pathname) {\n const match = picomatch(pathname)\n ops = ops.filter((op) => match(op.pathname))\n }\n item.operations = ops.map((op) => ({\n method: op.method.toUpperCase(),\n path: op.pathname,\n operationId: op.operationId,\n summary: op.operation.summary || '',\n description: op.operation.description || '',\n 'x-keq-filter': getFilterAnnotation(matcher, op),\n }))\n }\n\n if (includes.includes('components')) {\n item.components = {\n schemas: document.schemas.map((schema) => {\n const schemaObj = schema.schema as { description?: string }\n return { name: schema.name, description: schemaObj.description || '' }\n }),\n }\n }\n\n return item\n })\n\n return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] }\n } catch (error) {\n return { content: [{ type: 'text', text: `Error: ${error instanceof Error ? error.message : String(error)}` }], isError: true }\n }\n },\n )\n\n server.registerTool(\n 'build_apis',\n {\n description: '为后端 API 接口生成类型安全的 TypeScript 请求函数代码。当用户想生成某个接口的调用代码、需要类型安全的 HTTP 客户端时使用。可按模块、方法、路径范围筛选要生成的接口。生成的文件写入项目配置的输出目录。',\n inputSchema: {\n project: projectParam,\n module: z.array(z.string()).optional()\n .describe('Module(s) to generate code for'),\n method: z.string().optional()\n .describe('HTTP method filter (e.g. GET, POST)'),\n pathname: z.string().optional()\n .describe('Pathname filter (glob pattern supported, e.g. /api/v1/users/**)'),\n fresh: z.boolean().optional()\n .default(false)\n .describe('Clean output directory before building'),\n },\n annotations: { readOnlyHint: false, destructiveHint: false },\n },\n async ({ project, module, method, pathname, fresh }) => {\n try {\n const provider = await registry.resolve(project)\n const configPath = registry.getConfigPath(project)\n const filterRules: FilterRule[] = []\n\n if (module || method || pathname) {\n filterRules.push(\n {\n deny: true,\n persist: false,\n moduleName: '*',\n operationMethod: '*',\n operationPathname: '/**',\n },\n ...xprodFilterRules({\n module,\n method,\n pathname,\n persist: false,\n }),\n )\n }\n\n const buildCompiler = new Compiler({\n build: true,\n persist: true,\n silent: true,\n fresh,\n config: configPath,\n debug,\n tolerant,\n filter: filterRules.length > 0 ? { rules: filterRules } : undefined,\n })\n\n await buildCompiler.run()\n\n const artifacts = buildCompiler.context.artifacts || []\n const rc = buildCompiler.context.rc\n const files = artifacts.map((a) => (rc ? `./${path.join(rc.outdir, a.filepath)}` : a.filepath))\n\n await provider.invalidate()\n\n return { content: [{ type: 'text', text: JSON.stringify({ generated: files.length, files }, null, 2) }] }\n } catch (error) {\n return { content: [{ type: 'text', text: `Error: ${error instanceof Error ? error.message : String(error)}` }], isError: true }\n }\n },\n )\n\n server.registerTool(\n 'list_generated_files',\n {\n description: '列出已生成的 API 客户端代码文件。当用户想查看哪些接口已经生成了代码、或想找出过期/无效的生成文件时使用。',\n inputSchema: {\n project: projectParam,\n invalid: z.boolean().optional()\n .default(false)\n .describe('If true, only list invalid/stale files not matching current build'),\n },\n annotations: { readOnlyHint: true, destructiveHint: false },\n },\n async ({ project, invalid }) => {\n try {\n const provider = await registry.resolve(project)\n const context = await provider.getContext()\n const rc = context.rc\n if (!rc) {\n return { content: [{ type: 'text', text: 'Error: Failed to load configuration' }], isError: true }\n }\n\n if (invalid) {\n const validFilePaths = (context.artifacts || []).map((a) => a.filepath)\n const invalidFiles = await findInvalidFiles(rc.outdir, validFilePaths)\n const files = invalidFiles.map((f) => `./${path.join(rc.outdir, f.relativePath)}`)\n return { content: [{ type: 'text', text: JSON.stringify({ count: files.length, files }, null, 2) }] }\n }\n\n const artifacts = context.artifacts || []\n const files = artifacts.map((a) => `./${path.join(rc.outdir, a.filepath)}`)\n return { content: [{ type: 'text', text: JSON.stringify({ count: files.length, files }, null, 2) }] }\n } catch (error) {\n return { content: [{ type: 'text', text: `Error: ${error instanceof Error ? error.message : String(error)}` }], isError: true }\n }\n },\n )\n\n server.registerTool(\n 'get_filter_rules',\n {\n description: '查看当前的接口过滤规则。过滤规则决定哪些 API 接口会被纳入代码生成范围。当用户想了解哪些接口被排除或包含在生成列表中时使用。',\n inputSchema: {\n project: projectParam,\n },\n annotations: { readOnlyHint: true, destructiveHint: false },\n },\n async ({ project }) => {\n try {\n await registry.resolve(project)\n const configPath = registry.getConfigPath(project)\n const filterPath = path.resolve(path.dirname(configPath), '.keqfilter')\n if (!await fs.exists(filterPath)) {\n return { content: [{ type: 'text', text: JSON.stringify({ exists: false, content: '' }, null, 2) }] }\n }\n const content = await fs.readFile(filterPath, 'utf-8')\n return { content: [{ type: 'text', text: JSON.stringify({ exists: true, content }, null, 2) }] }\n } catch (error) {\n return { content: [{ type: 'text', text: `Error: ${error instanceof Error ? error.message : String(error)}` }], isError: true }\n }\n },\n )\n\n server.registerTool(\n 'add_filter_rule',\n {\n description: '添加接口过滤规则,控制哪些 API 需要生成代码。当用户想排除某些不需要的接口、或只保留特定接口时使用。deny 模式排除接口,allow 模式包含接口。',\n inputSchema: {\n project: projectParam,\n mode: z.enum(['deny', 'allow']).describe('Rule mode: deny excludes APIs, allow includes them'),\n module: z.string().optional()\n .default('*')\n .describe('Module name pattern (glob supported)'),\n method: z.string().optional()\n .default('*')\n .describe('HTTP method pattern (e.g. GET, POST, or * for all)'),\n pathname: z.string().describe('Pathname pattern (glob supported, e.g. /api/v1/users/**)'),\n build: z.boolean().optional()\n .default(false)\n .describe('Whether to rebuild after adding the rule'),\n },\n annotations: { readOnlyHint: false, destructiveHint: false },\n },\n async ({ project, mode, module, method, pathname, build }) => {\n try {\n const provider = await registry.resolve(project)\n const configPath = registry.getConfigPath(project)\n\n const filterCompiler = new Compiler({\n build,\n persist: true,\n silent: true,\n config: configPath,\n debug,\n tolerant,\n filter: {\n rules: [{\n persist: true,\n deny: mode === 'deny',\n moduleName: module,\n operationMethod: method.toLowerCase(),\n operationPathname: pathname,\n }],\n },\n })\n\n await filterCompiler.run()\n\n if (build) {\n await provider.invalidate()\n }\n\n return { content: [{ type: 'text', text: JSON.stringify({ success: true, rule: { mode, module, method, pathname } }, null, 2) }] }\n } catch (error) {\n return { content: [{ type: 'text', text: `Error: ${error instanceof Error ? error.message : String(error)}` }], isError: true }\n }\n },\n )\n\n server.registerTool(\n 'remove_filter_rule',\n {\n description: '移除已有的接口过滤规则。当用户想恢复之前被排除的接口、或调整过滤策略时使用。',\n inputSchema: {\n project: projectParam,\n mode: z.enum(['deny', 'allow']).describe('Which section the rule is in'),\n module: z.string().describe('Exact module name pattern to match'),\n method: z.string().describe('Exact method pattern to match'),\n pathname: z.string().describe('Exact pathname pattern to match'),\n build: z.boolean().optional()\n .default(false)\n .describe('Whether to rebuild after removing the rule'),\n },\n annotations: { readOnlyHint: false, destructiveHint: false },\n },\n async ({ project, mode, module, method, pathname, build }) => {\n try {\n const provider = await registry.resolve(project)\n const configPath = registry.getConfigPath(project)\n const filterPath = path.resolve(path.dirname(configPath), '.keqfilter')\n\n if (!await fs.exists(filterPath)) {\n return { content: [{ type: 'text', text: 'Error: .keqfilter file not found' }], isError: true }\n }\n\n const content = await fs.readFile(filterPath, 'utf-8')\n const isDeny = mode === 'deny'\n const targetMethod = method.toLowerCase()\n\n const lines = content.split('\\n')\n const resultLines: string[] = []\n let currentSection: 'deny' | 'allow' | null = null\n let skipNext = false\n\n for (const line of lines) {\n const trimmed = line.replace(/#.*$/, '').trim()\n\n if (trimmed === '[deny]') {\n currentSection = 'deny'\n resultLines.push(line)\n continue\n }\n if (trimmed === '[allow]') {\n currentSection = 'allow'\n resultLines.push(line)\n continue\n }\n\n if (!trimmed) {\n if (!skipNext) resultLines.push(line)\n skipNext = false\n continue\n }\n\n const matched = trimmed.match(/^([^\\s]+)\\s+([^:\\s]+):(.*)$/)\n if (matched && currentSection === (isDeny ? 'deny' : 'allow')) {\n const [, ruleMethod, ruleModule, rulePathname] = matched\n if (\n ruleMethod.toLowerCase() === targetMethod\n && ruleModule === module\n && rulePathname === pathname\n ) {\n skipNext = false\n continue\n }\n }\n\n resultLines.push(line)\n skipNext = false\n }\n\n await fs.writeFile(filterPath, resultLines.join('\\n'), 'utf-8')\n\n if (build) {\n const buildCompiler = new Compiler({\n build: true,\n persist: true,\n silent: true,\n config: configPath,\n debug,\n tolerant,\n })\n await buildCompiler.run()\n await provider.invalidate()\n }\n\n return { content: [{ type: 'text', text: JSON.stringify({ success: true, removed: { mode, module, method, pathname } }, null, 2) }] }\n } catch (error) {\n return { content: [{ type: 'text', text: `Error: ${error instanceof Error ? error.message : String(error)}` }], isError: true }\n }\n },\n )\n\n const transport = new StdioServerTransport()\n await server.connect(transport)\n\n if (registry.list().length === 1) {\n const provider = await registry.resolve()\n provider.getEngine().catch(() => {})\n }\n })\n}\n","#!/usr/bin/env node\nimport semver from 'semver'\nimport { Command } from 'commander'\nimport { logger } from './utils/logger.js'\nimport { registerBuildCommand } from './commands/build.js'\nimport { registerFilterCommand } from './commands/filter.js'\nimport { registerListCommand } from './commands/list.js'\nimport { registerApisCommand } from './commands/apis.js'\nimport { registerMockCommand } from './commands/mock.js'\nimport { registerInitCommand } from './commands/init.js'\nimport { registerSearchCommand } from './commands/search.js'\nimport { registerMcpCommand } from './commands/mcp.js'\n\n\nif (semver.lt(process.version, '20.0.0')) {\n throw new Error('Node.js version must be greater than 20')\n}\n\nconst program = new Command()\n\nregisterBuildCommand(program)\nregisterFilterCommand(program)\nregisterListCommand(program)\nregisterApisCommand(program)\nregisterMockCommand(program)\nregisterInitCommand(program)\nregisterSearchCommand(program)\nregisterMcpCommand(program)\n\nasync function main(): Promise<void> {\n program.on('command:*', function (operands) {\n throw new Error(`Unknown command '${String(operands[0])}'`)\n })\n\n try {\n await program.parseAsync(process.argv)\n } catch (err) {\n if (process.argv.includes('--debug')) {\n console.error(err)\n } else {\n logger.error(err instanceof Error ? err.message : String(err))\n }\n process.exit(1)\n }\n}\n\nvoid main()\n"],"mappings":"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"}