openapi-typesafe 0.0.0 → 1.0.0-rc.1

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 (863) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +71 -1
  3. package/bin/cli.js +4 -0
  4. package/dist/adapters/node-file-system/node-file-system.cjs +46 -0
  5. package/dist/adapters/node-file-system/node-file-system.cjs.map +1 -0
  6. package/dist/adapters/node-file-system/node-file-system.mjs +40 -0
  7. package/dist/adapters/node-file-system/node-file-system.mjs.map +1 -0
  8. package/dist/adapters/redocly-loader/alias-limit.cjs +16 -0
  9. package/dist/adapters/redocly-loader/alias-limit.cjs.map +1 -0
  10. package/dist/adapters/redocly-loader/alias-limit.mjs +14 -0
  11. package/dist/adapters/redocly-loader/alias-limit.mjs.map +1 -0
  12. package/dist/adapters/redocly-loader/allowed-hosts.cjs +42 -0
  13. package/dist/adapters/redocly-loader/allowed-hosts.cjs.map +1 -0
  14. package/dist/adapters/redocly-loader/allowed-hosts.mjs +40 -0
  15. package/dist/adapters/redocly-loader/allowed-hosts.mjs.map +1 -0
  16. package/dist/adapters/redocly-loader/bundled-ref-repair.cjs +53 -0
  17. package/dist/adapters/redocly-loader/bundled-ref-repair.cjs.map +1 -0
  18. package/dist/adapters/redocly-loader/bundled-ref-repair.mjs +51 -0
  19. package/dist/adapters/redocly-loader/bundled-ref-repair.mjs.map +1 -0
  20. package/dist/adapters/redocly-loader/malformed-refs.cjs +41 -0
  21. package/dist/adapters/redocly-loader/malformed-refs.cjs.map +1 -0
  22. package/dist/adapters/redocly-loader/malformed-refs.mjs +38 -0
  23. package/dist/adapters/redocly-loader/malformed-refs.mjs.map +1 -0
  24. package/dist/adapters/redocly-loader/redocly-config-source.cjs +61 -0
  25. package/dist/adapters/redocly-loader/redocly-config-source.cjs.map +1 -0
  26. package/dist/adapters/redocly-loader/redocly-config-source.mjs +54 -0
  27. package/dist/adapters/redocly-loader/redocly-config-source.mjs.map +1 -0
  28. package/dist/adapters/redocly-loader/redocly-schema-loader.cjs +179 -0
  29. package/dist/adapters/redocly-loader/redocly-schema-loader.cjs.map +1 -0
  30. package/dist/adapters/redocly-loader/redocly-schema-loader.mjs +177 -0
  31. package/dist/adapters/redocly-loader/redocly-schema-loader.mjs.map +1 -0
  32. package/dist/adapters/redocly-loader/ref-access.cjs +107 -0
  33. package/dist/adapters/redocly-loader/ref-access.cjs.map +1 -0
  34. package/dist/adapters/redocly-loader/ref-access.mjs +99 -0
  35. package/dist/adapters/redocly-loader/ref-access.mjs.map +1 -0
  36. package/dist/adapters/redocly-loader/ref-holders.cjs +31 -0
  37. package/dist/adapters/redocly-loader/ref-holders.cjs.map +1 -0
  38. package/dist/adapters/redocly-loader/ref-holders.mjs +29 -0
  39. package/dist/adapters/redocly-loader/ref-holders.mjs.map +1 -0
  40. package/dist/adapters/redocly-loader/remote-fetch.cjs +60 -0
  41. package/dist/adapters/redocly-loader/remote-fetch.cjs.map +1 -0
  42. package/dist/adapters/redocly-loader/remote-fetch.mjs +56 -0
  43. package/dist/adapters/redocly-loader/remote-fetch.mjs.map +1 -0
  44. package/dist/adapters/redocly-loader/schema-load-errors.cjs +87 -0
  45. package/dist/adapters/redocly-loader/schema-load-errors.cjs.map +1 -0
  46. package/dist/adapters/redocly-loader/schema-load-errors.mjs +77 -0
  47. package/dist/adapters/redocly-loader/schema-load-errors.mjs.map +1 -0
  48. package/dist/adapters/redocly-loader/schema-source.cjs +104 -0
  49. package/dist/adapters/redocly-loader/schema-source.cjs.map +1 -0
  50. package/dist/adapters/redocly-loader/schema-source.mjs +98 -0
  51. package/dist/adapters/redocly-loader/schema-source.mjs.map +1 -0
  52. package/dist/adapters/redocly-loader/unsupported-keys.cjs +62 -0
  53. package/dist/adapters/redocly-loader/unsupported-keys.cjs.map +1 -0
  54. package/dist/adapters/redocly-loader/unsupported-keys.mjs +58 -0
  55. package/dist/adapters/redocly-loader/unsupported-keys.mjs.map +1 -0
  56. package/dist/adapters/terminal-logger/terminal-logger.cjs +67 -0
  57. package/dist/adapters/terminal-logger/terminal-logger.cjs.map +1 -0
  58. package/dist/adapters/terminal-logger/terminal-logger.mjs +59 -0
  59. package/dist/adapters/terminal-logger/terminal-logger.mjs.map +1 -0
  60. package/dist/adapters/type-ast-bridge/footer-nodes.cjs +21 -0
  61. package/dist/adapters/type-ast-bridge/footer-nodes.cjs.map +1 -0
  62. package/dist/adapters/type-ast-bridge/footer-nodes.mjs +17 -0
  63. package/dist/adapters/type-ast-bridge/footer-nodes.mjs.map +1 -0
  64. package/dist/adapters/type-ast-bridge/ir-declarations-to-typescript.cjs +75 -0
  65. package/dist/adapters/type-ast-bridge/ir-declarations-to-typescript.cjs.map +1 -0
  66. package/dist/adapters/type-ast-bridge/ir-declarations-to-typescript.mjs +71 -0
  67. package/dist/adapters/type-ast-bridge/ir-declarations-to-typescript.mjs.map +1 -0
  68. package/dist/adapters/type-ast-bridge/ir-to-typescript.cjs +148 -0
  69. package/dist/adapters/type-ast-bridge/ir-to-typescript.cjs.map +1 -0
  70. package/dist/adapters/type-ast-bridge/ir-to-typescript.mjs +142 -0
  71. package/dist/adapters/type-ast-bridge/ir-to-typescript.mjs.map +1 -0
  72. package/dist/adapters/type-ast-bridge/lazy-node.cjs +23 -0
  73. package/dist/adapters/type-ast-bridge/lazy-node.cjs.map +1 -0
  74. package/dist/adapters/type-ast-bridge/lazy-node.mjs +21 -0
  75. package/dist/adapters/type-ast-bridge/lazy-node.mjs.map +1 -0
  76. package/dist/adapters/type-ast-bridge/load-typescript.cjs +57 -0
  77. package/dist/adapters/type-ast-bridge/load-typescript.cjs.map +1 -0
  78. package/dist/adapters/type-ast-bridge/load-typescript.mjs +51 -0
  79. package/dist/adapters/type-ast-bridge/load-typescript.mjs.map +1 -0
  80. package/dist/adapters/type-ast-bridge/print-typescript.cjs +21 -0
  81. package/dist/adapters/type-ast-bridge/print-typescript.cjs.map +1 -0
  82. package/dist/adapters/type-ast-bridge/print-typescript.mjs +19 -0
  83. package/dist/adapters/type-ast-bridge/print-typescript.mjs.map +1 -0
  84. package/dist/adapters/type-ast-bridge/typescript-raw-text.cjs +33 -0
  85. package/dist/adapters/type-ast-bridge/typescript-raw-text.cjs.map +1 -0
  86. package/dist/adapters/type-ast-bridge/typescript-raw-text.mjs +29 -0
  87. package/dist/adapters/type-ast-bridge/typescript-raw-text.mjs.map +1 -0
  88. package/dist/adapters/type-ast-bridge/typescript-to-ir.cjs +210 -0
  89. package/dist/adapters/type-ast-bridge/typescript-to-ir.cjs.map +1 -0
  90. package/dist/adapters/type-ast-bridge/typescript-to-ir.mjs +207 -0
  91. package/dist/adapters/type-ast-bridge/typescript-to-ir.mjs.map +1 -0
  92. package/dist/api/ast-to-string.cjs +39 -0
  93. package/dist/api/ast-to-string.cjs.map +1 -0
  94. package/dist/api/ast-to-string.mjs +37 -0
  95. package/dist/api/ast-to-string.mjs.map +1 -0
  96. package/dist/api/comment-header.cjs +11 -0
  97. package/dist/api/comment-header.cjs.map +1 -0
  98. package/dist/api/comment-header.mjs +9 -0
  99. package/dist/api/comment-header.mjs.map +1 -0
  100. package/dist/api/default-ports.cjs +38 -0
  101. package/dist/api/default-ports.cjs.map +1 -0
  102. package/dist/api/default-ports.mjs +28 -0
  103. package/dist/api/default-ports.mjs.map +1 -0
  104. package/dist/api/discriminator-conflict-warnings.cjs +25 -0
  105. package/dist/api/discriminator-conflict-warnings.cjs.map +1 -0
  106. package/dist/api/discriminator-conflict-warnings.mjs +23 -0
  107. package/dist/api/discriminator-conflict-warnings.mjs.map +1 -0
  108. package/dist/api/discriminator-enum-names.cjs +19 -0
  109. package/dist/api/discriminator-enum-names.cjs.map +1 -0
  110. package/dist/api/discriminator-enum-names.mjs +17 -0
  111. package/dist/api/discriminator-enum-names.mjs.map +1 -0
  112. package/dist/api/discriminator-enum-parent.cjs +59 -0
  113. package/dist/api/discriminator-enum-parent.cjs.map +1 -0
  114. package/dist/api/discriminator-enum-parent.mjs +57 -0
  115. package/dist/api/discriminator-enum-parent.mjs.map +1 -0
  116. package/dist/api/discriminator-enum.cjs +69 -0
  117. package/dist/api/discriminator-enum.cjs.map +1 -0
  118. package/dist/api/discriminator-enum.mjs +66 -0
  119. package/dist/api/discriminator-enum.mjs.map +1 -0
  120. package/dist/api/discriminator-other-owners.cjs +67 -0
  121. package/dist/api/discriminator-other-owners.cjs.map +1 -0
  122. package/dist/api/discriminator-other-owners.mjs +64 -0
  123. package/dist/api/discriminator-other-owners.mjs.map +1 -0
  124. package/dist/api/discriminator-patch.cjs +88 -0
  125. package/dist/api/discriminator-patch.cjs.map +1 -0
  126. package/dist/api/discriminator-patch.mjs +82 -0
  127. package/dist/api/discriminator-patch.mjs.map +1 -0
  128. package/dist/api/discriminator-scan.cjs +153 -0
  129. package/dist/api/discriminator-scan.cjs.map +1 -0
  130. package/dist/api/discriminator-scan.mjs +150 -0
  131. package/dist/api/discriminator-scan.mjs.map +1 -0
  132. package/dist/api/document-declarations.cjs +28 -0
  133. package/dist/api/document-declarations.cjs.map +1 -0
  134. package/dist/api/document-declarations.mjs +26 -0
  135. package/dist/api/document-declarations.mjs.map +1 -0
  136. package/dist/api/document-refs.cjs +53 -0
  137. package/dist/api/document-refs.cjs.map +1 -0
  138. package/dist/api/document-refs.mjs +50 -0
  139. package/dist/api/document-refs.mjs.map +1 -0
  140. package/dist/api/document-run.cjs +122 -0
  141. package/dist/api/document-run.cjs.map +1 -0
  142. package/dist/api/document-run.mjs +116 -0
  143. package/dist/api/document-run.mjs.map +1 -0
  144. package/dist/api/enum-values-warnings.cjs +16 -0
  145. package/dist/api/enum-values-warnings.cjs.map +1 -0
  146. package/dist/api/enum-values-warnings.mjs +14 -0
  147. package/dist/api/enum-values-warnings.mjs.map +1 -0
  148. package/dist/api/footer-entry.cjs +18 -0
  149. package/dist/api/footer-entry.cjs.map +1 -0
  150. package/dist/api/footer-entry.mjs +15 -0
  151. package/dist/api/footer-entry.mjs.map +1 -0
  152. package/dist/api/footer-sink.cjs +53 -0
  153. package/dist/api/footer-sink.cjs.map +1 -0
  154. package/dist/api/footer-sink.mjs +51 -0
  155. package/dist/api/footer-sink.mjs.map +1 -0
  156. package/dist/api/legacy-callback-warning.cjs +25 -0
  157. package/dist/api/legacy-callback-warning.cjs.map +1 -0
  158. package/dist/api/legacy-callback-warning.mjs +22 -0
  159. package/dist/api/legacy-callback-warning.mjs.map +1 -0
  160. package/dist/api/legacy-ts-helpers.cjs +203 -0
  161. package/dist/api/legacy-ts-helpers.cjs.map +1 -0
  162. package/dist/api/legacy-ts-helpers.mjs +187 -0
  163. package/dist/api/legacy-ts-helpers.mjs.map +1 -0
  164. package/dist/api/legacy-utils.cjs +65 -0
  165. package/dist/api/legacy-utils.cjs.map +1 -0
  166. package/dist/api/legacy-utils.mjs +50 -0
  167. package/dist/api/legacy-utils.mjs.map +1 -0
  168. package/dist/api/openapi-ts.cjs +40 -0
  169. package/dist/api/openapi-ts.cjs.map +1 -0
  170. package/dist/api/openapi-ts.mjs +34 -0
  171. package/dist/api/openapi-ts.mjs.map +1 -0
  172. package/dist/api/path-template-warnings.cjs +21 -0
  173. package/dist/api/path-template-warnings.cjs.map +1 -0
  174. package/dist/api/path-template-warnings.mjs +19 -0
  175. package/dist/api/path-template-warnings.mjs.map +1 -0
  176. package/dist/api/schema-callbacks.cjs +140 -0
  177. package/dist/api/schema-callbacks.cjs.map +1 -0
  178. package/dist/api/schema-callbacks.mjs +136 -0
  179. package/dist/api/schema-callbacks.mjs.map +1 -0
  180. package/dist/api/string-to-ast.cjs +21 -0
  181. package/dist/api/string-to-ast.cjs.map +1 -0
  182. package/dist/api/string-to-ast.mjs +18 -0
  183. package/dist/api/string-to-ast.mjs.map +1 -0
  184. package/dist/api/transform-context.cjs +84 -0
  185. package/dist/api/transform-context.cjs.map +1 -0
  186. package/dist/api/transform-context.mjs +67 -0
  187. package/dist/api/transform-context.mjs.map +1 -0
  188. package/dist/api/transform-schema.cjs +80 -0
  189. package/dist/api/transform-schema.cjs.map +1 -0
  190. package/dist/api/transform-schema.mjs +75 -0
  191. package/dist/api/transform-schema.mjs.map +1 -0
  192. package/dist/api/type-helpers.cjs +85 -0
  193. package/dist/api/type-helpers.cjs.map +1 -0
  194. package/dist/api/type-helpers.mjs +66 -0
  195. package/dist/api/type-helpers.mjs.map +1 -0
  196. package/dist/api/unsupported-feature-warnings.cjs +22 -0
  197. package/dist/api/unsupported-feature-warnings.cjs.map +1 -0
  198. package/dist/api/unsupported-feature-warnings.mjs +20 -0
  199. package/dist/api/unsupported-feature-warnings.mjs.map +1 -0
  200. package/dist/application/print/comment-writer.cjs +95 -0
  201. package/dist/application/print/comment-writer.cjs.map +1 -0
  202. package/dist/application/print/comment-writer.mjs +93 -0
  203. package/dist/application/print/comment-writer.mjs.map +1 -0
  204. package/dist/application/print/declaration-printer.cjs +83 -0
  205. package/dist/application/print/declaration-printer.cjs.map +1 -0
  206. package/dist/application/print/declaration-printer.mjs +81 -0
  207. package/dist/application/print/declaration-printer.mjs.map +1 -0
  208. package/dist/application/print/literal-text.cjs +52 -0
  209. package/dist/application/print/literal-text.cjs.map +1 -0
  210. package/dist/application/print/literal-text.mjs +48 -0
  211. package/dist/application/print/literal-text.mjs.map +1 -0
  212. package/dist/application/print/print-nodes.cjs +38 -0
  213. package/dist/application/print/print-nodes.cjs.map +1 -0
  214. package/dist/application/print/print-nodes.mjs +36 -0
  215. package/dist/application/print/print-nodes.mjs.map +1 -0
  216. package/dist/application/print/print-options.cjs +6 -0
  217. package/dist/application/print/print-options.cjs.map +1 -0
  218. package/dist/application/print/print-options.mjs +4 -0
  219. package/dist/application/print/print-options.mjs.map +1 -0
  220. package/dist/application/print/text-writer.cjs +63 -0
  221. package/dist/application/print/text-writer.cjs.map +1 -0
  222. package/dist/application/print/text-writer.mjs +60 -0
  223. package/dist/application/print/text-writer.mjs.map +1 -0
  224. package/dist/application/print/type-printer.cjs +219 -0
  225. package/dist/application/print/type-printer.cjs.map +1 -0
  226. package/dist/application/print/type-printer.mjs +215 -0
  227. package/dist/application/print/type-printer.mjs.map +1 -0
  228. package/dist/application/stack-overflow.cjs +36 -0
  229. package/dist/application/stack-overflow.cjs.map +1 -0
  230. package/dist/application/stack-overflow.mjs +31 -0
  231. package/dist/application/stack-overflow.mjs.map +1 -0
  232. package/dist/application/transform/document/assignability.cjs +144 -0
  233. package/dist/application/transform/document/assignability.cjs.map +1 -0
  234. package/dist/application/transform/document/assignability.mjs +138 -0
  235. package/dist/application/transform/document/assignability.mjs.map +1 -0
  236. package/dist/application/transform/document/components.cjs +104 -0
  237. package/dist/application/transform/document/components.cjs.map +1 -0
  238. package/dist/application/transform/document/components.mjs +102 -0
  239. package/dist/application/transform/document/components.mjs.map +1 -0
  240. package/dist/application/transform/document/declared-types.cjs +66 -0
  241. package/dist/application/transform/document/declared-types.cjs.map +1 -0
  242. package/dist/application/transform/document/declared-types.mjs +63 -0
  243. package/dist/application/transform/document/declared-types.mjs.map +1 -0
  244. package/dist/application/transform/document/defs-root.cjs +18 -0
  245. package/dist/application/transform/document/defs-root.cjs.map +1 -0
  246. package/dist/application/transform/document/defs-root.mjs +16 -0
  247. package/dist/application/transform/document/defs-root.mjs.map +1 -0
  248. package/dist/application/transform/document/document-member.cjs +13 -0
  249. package/dist/application/transform/document/document-member.cjs.map +1 -0
  250. package/dist/application/transform/document/document-member.mjs +11 -0
  251. package/dist/application/transform/document/document-member.mjs.map +1 -0
  252. package/dist/application/transform/document/document.cjs +109 -0
  253. package/dist/application/transform/document/document.cjs.map +1 -0
  254. package/dist/application/transform/document/document.mjs +106 -0
  255. package/dist/application/transform/document/document.mjs.map +1 -0
  256. package/dist/application/transform/document/exploded-query.cjs +46 -0
  257. package/dist/application/transform/document/exploded-query.cjs.map +1 -0
  258. package/dist/application/transform/document/exploded-query.mjs +43 -0
  259. package/dist/application/transform/document/exploded-query.mjs.map +1 -0
  260. package/dist/application/transform/document/global-type-references.cjs +63 -0
  261. package/dist/application/transform/document/global-type-references.cjs.map +1 -0
  262. package/dist/application/transform/document/global-type-references.mjs +61 -0
  263. package/dist/application/transform/document/global-type-references.mjs.map +1 -0
  264. package/dist/application/transform/document/header.cjs +27 -0
  265. package/dist/application/transform/document/header.cjs.map +1 -0
  266. package/dist/application/transform/document/header.mjs +25 -0
  267. package/dist/application/transform/document/header.mjs.map +1 -0
  268. package/dist/application/transform/document/kept-deprecated.cjs +96 -0
  269. package/dist/application/transform/document/kept-deprecated.cjs.map +1 -0
  270. package/dist/application/transform/document/kept-deprecated.mjs +94 -0
  271. package/dist/application/transform/document/kept-deprecated.mjs.map +1 -0
  272. package/dist/application/transform/document/list-assignability.cjs +54 -0
  273. package/dist/application/transform/document/list-assignability.cjs.map +1 -0
  274. package/dist/application/transform/document/list-assignability.mjs +52 -0
  275. package/dist/application/transform/document/list-assignability.mjs.map +1 -0
  276. package/dist/application/transform/document/media-type.cjs +42 -0
  277. package/dist/application/transform/document/media-type.cjs.map +1 -0
  278. package/dist/application/transform/document/media-type.mjs +38 -0
  279. package/dist/application/transform/document/media-type.mjs.map +1 -0
  280. package/dist/application/transform/document/operation.cjs +45 -0
  281. package/dist/application/transform/document/operation.cjs.map +1 -0
  282. package/dist/application/transform/document/operation.mjs +43 -0
  283. package/dist/application/transform/document/operation.mjs.map +1 -0
  284. package/dist/application/transform/document/parameter.cjs +25 -0
  285. package/dist/application/transform/document/parameter.cjs.map +1 -0
  286. package/dist/application/transform/document/parameter.mjs +23 -0
  287. package/dist/application/transform/document/parameter.mjs.map +1 -0
  288. package/dist/application/transform/document/parameters.cjs +146 -0
  289. package/dist/application/transform/document/parameters.cjs.map +1 -0
  290. package/dist/application/transform/document/parameters.mjs +144 -0
  291. package/dist/application/transform/document/parameters.mjs.map +1 -0
  292. package/dist/application/transform/document/path-item.cjs +82 -0
  293. package/dist/application/transform/document/path-item.cjs.map +1 -0
  294. package/dist/application/transform/document/path-item.mjs +80 -0
  295. package/dist/application/transform/document/path-item.mjs.map +1 -0
  296. package/dist/application/transform/document/path-key-overlaps.cjs +107 -0
  297. package/dist/application/transform/document/path-key-overlaps.cjs.map +1 -0
  298. package/dist/application/transform/document/path-key-overlaps.mjs +105 -0
  299. package/dist/application/transform/document/path-key-overlaps.mjs.map +1 -0
  300. package/dist/application/transform/document/path-template-replace.cjs +48 -0
  301. package/dist/application/transform/document/path-template-replace.cjs.map +1 -0
  302. package/dist/application/transform/document/path-template-replace.mjs +45 -0
  303. package/dist/application/transform/document/path-template-replace.mjs.map +1 -0
  304. package/dist/application/transform/document/paths-enum.cjs +75 -0
  305. package/dist/application/transform/document/paths-enum.cjs.map +1 -0
  306. package/dist/application/transform/document/paths-enum.mjs +72 -0
  307. package/dist/application/transform/document/paths-enum.mjs.map +1 -0
  308. package/dist/application/transform/document/paths.cjs +153 -0
  309. package/dist/application/transform/document/paths.cjs.map +1 -0
  310. package/dist/application/transform/document/paths.mjs +149 -0
  311. package/dist/application/transform/document/paths.mjs.map +1 -0
  312. package/dist/application/transform/document/request-body.cjs +36 -0
  313. package/dist/application/transform/document/request-body.cjs.map +1 -0
  314. package/dist/application/transform/document/request-body.mjs +34 -0
  315. package/dist/application/transform/document/request-body.mjs.map +1 -0
  316. package/dist/application/transform/document/response.cjs +59 -0
  317. package/dist/application/transform/document/response.cjs.map +1 -0
  318. package/dist/application/transform/document/response.mjs +57 -0
  319. package/dist/application/transform/document/response.mjs.map +1 -0
  320. package/dist/application/transform/document/responses.cjs +23 -0
  321. package/dist/application/transform/document/responses.cjs.map +1 -0
  322. package/dist/application/transform/document/responses.mjs +21 -0
  323. package/dist/application/transform/document/responses.mjs.map +1 -0
  324. package/dist/application/transform/document/root-type-aliases.cjs +70 -0
  325. package/dist/application/transform/document/root-type-aliases.cjs.map +1 -0
  326. package/dist/application/transform/document/root-type-aliases.mjs +67 -0
  327. package/dist/application/transform/document/root-type-aliases.mjs.map +1 -0
  328. package/dist/application/transform/document/template-key-match.cjs +128 -0
  329. package/dist/application/transform/document/template-key-match.cjs.map +1 -0
  330. package/dist/application/transform/document/template-key-match.mjs +125 -0
  331. package/dist/application/transform/document/template-key-match.mjs.map +1 -0
  332. package/dist/application/transform/document/type-assignability.cjs +192 -0
  333. package/dist/application/transform/document/type-assignability.cjs.map +1 -0
  334. package/dist/application/transform/document/type-assignability.mjs +190 -0
  335. package/dist/application/transform/document/type-assignability.mjs.map +1 -0
  336. package/dist/application/transform/document/type-key.cjs +70 -0
  337. package/dist/application/transform/document/type-key.cjs.map +1 -0
  338. package/dist/application/transform/document/type-key.mjs +68 -0
  339. package/dist/application/transform/document/type-key.mjs.map +1 -0
  340. package/dist/application/transform/document/type-resolution.cjs +131 -0
  341. package/dist/application/transform/document/type-resolution.cjs.map +1 -0
  342. package/dist/application/transform/document/type-resolution.mjs +125 -0
  343. package/dist/application/transform/document/type-resolution.mjs.map +1 -0
  344. package/dist/application/transform/document/webhooks.cjs +19 -0
  345. package/dist/application/transform/document/webhooks.cjs.map +1 -0
  346. package/dist/application/transform/document/webhooks.mjs +17 -0
  347. package/dist/application/transform/document/webhooks.mjs.map +1 -0
  348. package/dist/application/transform/document-entries.cjs +17 -0
  349. package/dist/application/transform/document-entries.cjs.map +1 -0
  350. package/dist/application/transform/document-entries.mjs +14 -0
  351. package/dist/application/transform/document-entries.mjs.map +1 -0
  352. package/dist/application/transform/footer/document-footer.cjs +150 -0
  353. package/dist/application/transform/footer/document-footer.cjs.map +1 -0
  354. package/dist/application/transform/footer/document-footer.mjs +148 -0
  355. package/dist/application/transform/footer/document-footer.mjs.map +1 -0
  356. package/dist/application/transform/footer/enum-naming.cjs +138 -0
  357. package/dist/application/transform/footer/enum-naming.cjs.map +1 -0
  358. package/dist/application/transform/footer/enum-naming.mjs +131 -0
  359. package/dist/application/transform/footer/enum-naming.mjs.map +1 -0
  360. package/dist/application/transform/footer/enum-values-check.cjs +129 -0
  361. package/dist/application/transform/footer/enum-values-check.cjs.map +1 -0
  362. package/dist/application/transform/footer/enum-values-check.mjs +127 -0
  363. package/dist/application/transform/footer/enum-values-check.mjs.map +1 -0
  364. package/dist/application/transform/footer/evaluation.cjs +33 -0
  365. package/dist/application/transform/footer/evaluation.cjs.map +1 -0
  366. package/dist/application/transform/footer/evaluation.mjs +26 -0
  367. package/dist/application/transform/footer/evaluation.mjs.map +1 -0
  368. package/dist/application/transform/footer/shared-enum-names.cjs +60 -0
  369. package/dist/application/transform/footer/shared-enum-names.cjs.map +1 -0
  370. package/dist/application/transform/footer/shared-enum-names.mjs +57 -0
  371. package/dist/application/transform/footer/shared-enum-names.mjs.map +1 -0
  372. package/dist/application/transform/footer/type-evaluation.cjs +246 -0
  373. package/dist/application/transform/footer/type-evaluation.cjs.map +1 -0
  374. package/dist/application/transform/footer/type-evaluation.mjs +244 -0
  375. package/dist/application/transform/footer/type-evaluation.mjs.map +1 -0
  376. package/dist/application/transform/footer/type-rules.cjs +172 -0
  377. package/dist/application/transform/footer/type-rules.cjs.map +1 -0
  378. package/dist/application/transform/footer/type-rules.mjs +166 -0
  379. package/dist/application/transform/footer/type-rules.mjs.map +1 -0
  380. package/dist/application/transform/helper-types.cjs +68 -0
  381. package/dist/application/transform/helper-types.cjs.map +1 -0
  382. package/dist/application/transform/helper-types.mjs +65 -0
  383. package/dist/application/transform/helper-types.mjs.map +1 -0
  384. package/dist/application/transform/literal-type.cjs +36 -0
  385. package/dist/application/transform/literal-type.cjs.map +1 -0
  386. package/dist/application/transform/literal-type.mjs +34 -0
  387. package/dist/application/transform/literal-type.mjs.map +1 -0
  388. package/dist/application/transform/numbered-names.cjs +18 -0
  389. package/dist/application/transform/numbered-names.cjs.map +1 -0
  390. package/dist/application/transform/numbered-names.mjs +16 -0
  391. package/dist/application/transform/numbered-names.mjs.map +1 -0
  392. package/dist/application/transform/ref-pointer/generated-location.cjs +138 -0
  393. package/dist/application/transform/ref-pointer/generated-location.cjs.map +1 -0
  394. package/dist/application/transform/ref-pointer/generated-location.mjs +136 -0
  395. package/dist/application/transform/ref-pointer/generated-location.mjs.map +1 -0
  396. package/dist/application/transform/ref-pointer/generated-shape.cjs +171 -0
  397. package/dist/application/transform/ref-pointer/generated-shape.cjs.map +1 -0
  398. package/dist/application/transform/ref-pointer/generated-shape.mjs +162 -0
  399. package/dist/application/transform/ref-pointer/generated-shape.mjs.map +1 -0
  400. package/dist/application/transform/ref-pointer/inline-cycles.cjs +44 -0
  401. package/dist/application/transform/ref-pointer/inline-cycles.cjs.map +1 -0
  402. package/dist/application/transform/ref-pointer/inline-cycles.mjs +42 -0
  403. package/dist/application/transform/ref-pointer/inline-cycles.mjs.map +1 -0
  404. package/dist/application/transform/ref-pointer/original-index.cjs +62 -0
  405. package/dist/application/transform/ref-pointer/original-index.cjs.map +1 -0
  406. package/dist/application/transform/ref-pointer/original-index.mjs +60 -0
  407. package/dist/application/transform/ref-pointer/original-index.mjs.map +1 -0
  408. package/dist/application/transform/ref-pointer/pointer-type.cjs +60 -0
  409. package/dist/application/transform/ref-pointer/pointer-type.cjs.map +1 -0
  410. package/dist/application/transform/ref-pointer/pointer-type.mjs +57 -0
  411. package/dist/application/transform/ref-pointer/pointer-type.mjs.map +1 -0
  412. package/dist/application/transform/ref-pointer/pointer-walk.cjs +66 -0
  413. package/dist/application/transform/ref-pointer/pointer-walk.cjs.map +1 -0
  414. package/dist/application/transform/ref-pointer/pointer-walk.mjs +56 -0
  415. package/dist/application/transform/ref-pointer/pointer-walk.mjs.map +1 -0
  416. package/dist/application/transform/ref-pointer/typed-walk.cjs +124 -0
  417. package/dist/application/transform/ref-pointer/typed-walk.cjs.map +1 -0
  418. package/dist/application/transform/ref-pointer/typed-walk.mjs +122 -0
  419. package/dist/application/transform/ref-pointer/typed-walk.mjs.map +1 -0
  420. package/dist/application/transform/ref-type.cjs +62 -0
  421. package/dist/application/transform/ref-type.cjs.map +1 -0
  422. package/dist/application/transform/ref-type.mjs +55 -0
  423. package/dist/application/transform/ref-type.mjs.map +1 -0
  424. package/dist/application/transform/schema/access-flags.cjs +38 -0
  425. package/dist/application/transform/schema/access-flags.cjs.map +1 -0
  426. package/dist/application/transform/schema/access-flags.mjs +36 -0
  427. package/dist/application/transform/schema/access-flags.mjs.map +1 -0
  428. package/dist/application/transform/schema/array-type.cjs +136 -0
  429. package/dist/application/transform/schema/array-type.cjs.map +1 -0
  430. package/dist/application/transform/schema/array-type.mjs +134 -0
  431. package/dist/application/transform/schema/array-type.mjs.map +1 -0
  432. package/dist/application/transform/schema/composition-type.cjs +142 -0
  433. package/dist/application/transform/schema/composition-type.cjs.map +1 -0
  434. package/dist/application/transform/schema/composition-type.mjs +140 -0
  435. package/dist/application/transform/schema/composition-type.mjs.map +1 -0
  436. package/dist/application/transform/schema/core-type.cjs +86 -0
  437. package/dist/application/transform/schema/core-type.cjs.map +1 -0
  438. package/dist/application/transform/schema/core-type.mjs +84 -0
  439. package/dist/application/transform/schema/core-type.mjs.map +1 -0
  440. package/dist/application/transform/schema/discriminated-union.cjs +30 -0
  441. package/dist/application/transform/schema/discriminated-union.cjs.map +1 -0
  442. package/dist/application/transform/schema/discriminated-union.mjs +27 -0
  443. package/dist/application/transform/schema/discriminated-union.mjs.map +1 -0
  444. package/dist/application/transform/schema/discriminator-property.cjs +22 -0
  445. package/dist/application/transform/schema/discriminator-property.cjs.map +1 -0
  446. package/dist/application/transform/schema/discriminator-property.mjs +20 -0
  447. package/dist/application/transform/schema/discriminator-property.mjs.map +1 -0
  448. package/dist/application/transform/schema/enum-rule.cjs +163 -0
  449. package/dist/application/transform/schema/enum-rule.cjs.map +1 -0
  450. package/dist/application/transform/schema/enum-rule.mjs +160 -0
  451. package/dist/application/transform/schema/enum-rule.mjs.map +1 -0
  452. package/dist/application/transform/schema/inherited-discriminator.cjs +29 -0
  453. package/dist/application/transform/schema/inherited-discriminator.cjs.map +1 -0
  454. package/dist/application/transform/schema/inherited-discriminator.mjs +26 -0
  455. package/dist/application/transform/schema/inherited-discriminator.mjs.map +1 -0
  456. package/dist/application/transform/schema/object-type.cjs +186 -0
  457. package/dist/application/transform/schema/object-type.cjs.map +1 -0
  458. package/dist/application/transform/schema/object-type.mjs +182 -0
  459. package/dist/application/transform/schema/object-type.mjs.map +1 -0
  460. package/dist/application/transform/schema/presence-members.cjs +59 -0
  461. package/dist/application/transform/schema/presence-members.cjs.map +1 -0
  462. package/dist/application/transform/schema/presence-members.mjs +57 -0
  463. package/dist/application/transform/schema/presence-members.mjs.map +1 -0
  464. package/dist/application/transform/schema/required-variants.cjs +45 -0
  465. package/dist/application/transform/schema/required-variants.cjs.map +1 -0
  466. package/dist/application/transform/schema/required-variants.mjs +42 -0
  467. package/dist/application/transform/schema/required-variants.mjs.map +1 -0
  468. package/dist/application/transform/schema/schema-transform.cjs +72 -0
  469. package/dist/application/transform/schema/schema-transform.cjs.map +1 -0
  470. package/dist/application/transform/schema/schema-transform.mjs +68 -0
  471. package/dist/application/transform/schema/schema-transform.mjs.map +1 -0
  472. package/dist/application/transform/schema/unevaluated-properties.cjs +61 -0
  473. package/dist/application/transform/schema/unevaluated-properties.cjs.map +1 -0
  474. package/dist/application/transform/schema/unevaluated-properties.mjs +59 -0
  475. package/dist/application/transform/schema/unevaluated-properties.mjs.map +1 -0
  476. package/dist/application/transform/schema-comment.cjs +130 -0
  477. package/dist/application/transform/schema-comment.cjs.map +1 -0
  478. package/dist/application/transform/schema-comment.mjs +125 -0
  479. package/dist/application/transform/schema-comment.mjs.map +1 -0
  480. package/dist/application/transform/shared-types.cjs +8 -0
  481. package/dist/application/transform/shared-types.cjs.map +1 -0
  482. package/dist/application/transform/shared-types.mjs +6 -0
  483. package/dist/application/transform/shared-types.mjs.map +1 -0
  484. package/dist/application/transform/type-combinators.cjs +49 -0
  485. package/dist/application/transform/type-combinators.cjs.map +1 -0
  486. package/dist/application/transform/type-combinators.mjs +42 -0
  487. package/dist/application/transform/type-combinators.mjs.map +1 -0
  488. package/dist/cli/cli-arguments.cjs +145 -0
  489. package/dist/cli/cli-arguments.cjs.map +1 -0
  490. package/dist/cli/cli-arguments.mjs +137 -0
  491. package/dist/cli/cli-arguments.mjs.map +1 -0
  492. package/dist/cli/cli-errors.cjs +81 -0
  493. package/dist/cli/cli-errors.cjs.map +1 -0
  494. package/dist/cli/cli-errors.mjs +77 -0
  495. package/dist/cli/cli-errors.mjs.map +1 -0
  496. package/dist/cli/cli-output.cjs +42 -0
  497. package/dist/cli/cli-output.cjs.map +1 -0
  498. package/dist/cli/cli-output.mjs +35 -0
  499. package/dist/cli/cli-output.mjs.map +1 -0
  500. package/dist/cli/docs-links.cjs +6 -0
  501. package/dist/cli/docs-links.cjs.map +1 -0
  502. package/dist/cli/docs-links.mjs +4 -0
  503. package/dist/cli/docs-links.mjs.map +1 -0
  504. package/dist/cli/fix-option.cjs +19 -0
  505. package/dist/cli/fix-option.cjs.map +1 -0
  506. package/dist/cli/fix-option.mjs +16 -0
  507. package/dist/cli/fix-option.mjs.map +1 -0
  508. package/dist/cli/help-text.cjs +44 -0
  509. package/dist/cli/help-text.cjs.map +1 -0
  510. package/dist/cli/help-text.mjs +42 -0
  511. package/dist/cli/help-text.mjs.map +1 -0
  512. package/dist/cli/main.cjs +67 -0
  513. package/dist/cli/main.cjs.map +1 -0
  514. package/dist/cli/main.d.cts +2 -0
  515. package/dist/cli/main.d.mts +2 -0
  516. package/dist/cli/main.d.ts +2 -0
  517. package/dist/cli/main.mjs +59 -0
  518. package/dist/cli/main.mjs.map +1 -0
  519. package/dist/cli/redocly-apis.cjs +69 -0
  520. package/dist/cli/redocly-apis.cjs.map +1 -0
  521. package/dist/cli/redocly-apis.mjs +66 -0
  522. package/dist/cli/redocly-apis.mjs.map +1 -0
  523. package/dist/cli/ref-limits.cjs +14 -0
  524. package/dist/cli/ref-limits.cjs.map +1 -0
  525. package/dist/cli/ref-limits.mjs +12 -0
  526. package/dist/cli/ref-limits.mjs.map +1 -0
  527. package/dist/cli/run-cli.cjs +113 -0
  528. package/dist/cli/run-cli.cjs.map +1 -0
  529. package/dist/cli/run-cli.mjs +111 -0
  530. package/dist/cli/run-cli.mjs.map +1 -0
  531. package/dist/domain/assert-never.cjs +8 -0
  532. package/dist/domain/assert-never.cjs.map +1 -0
  533. package/dist/domain/assert-never.mjs +6 -0
  534. package/dist/domain/assert-never.mjs.map +1 -0
  535. package/dist/domain/errors.cjs +52 -0
  536. package/dist/domain/errors.cjs.map +1 -0
  537. package/dist/domain/errors.mjs +48 -0
  538. package/dist/domain/errors.mjs.map +1 -0
  539. package/dist/domain/ir/constructors.cjs +93 -0
  540. package/dist/domain/ir/constructors.cjs.map +1 -0
  541. package/dist/domain/ir/constructors.mjs +74 -0
  542. package/dist/domain/ir/constructors.mjs.map +1 -0
  543. package/dist/domain/ir/identifier-text.cjs +29 -0
  544. package/dist/domain/ir/identifier-text.cjs.map +1 -0
  545. package/dist/domain/ir/identifier-text.mjs +25 -0
  546. package/dist/domain/ir/identifier-text.mjs.map +1 -0
  547. package/dist/domain/ir/newer-identifier-ranges.cjs +109 -0
  548. package/dist/domain/ir/newer-identifier-ranges.cjs.map +1 -0
  549. package/dist/domain/ir/newer-identifier-ranges.mjs +106 -0
  550. package/dist/domain/ir/newer-identifier-ranges.mjs.map +1 -0
  551. package/dist/domain/ir/normalize.cjs +32 -0
  552. package/dist/domain/ir/normalize.cjs.map +1 -0
  553. package/dist/domain/ir/normalize.mjs +29 -0
  554. package/dist/domain/ir/normalize.mjs.map +1 -0
  555. package/dist/domain/ir/property-name.cjs +19 -0
  556. package/dist/domain/ir/property-name.cjs.map +1 -0
  557. package/dist/domain/ir/property-name.mjs +16 -0
  558. package/dist/domain/ir/property-name.mjs.map +1 -0
  559. package/dist/domain/ir/raw-text-escapes.cjs +25 -0
  560. package/dist/domain/ir/raw-text-escapes.cjs.map +1 -0
  561. package/dist/domain/ir/raw-text-escapes.mjs +22 -0
  562. package/dist/domain/ir/raw-text-escapes.mjs.map +1 -0
  563. package/dist/domain/openapi/admitted-values.cjs +75 -0
  564. package/dist/domain/openapi/admitted-values.cjs.map +1 -0
  565. package/dist/domain/openapi/admitted-values.mjs +72 -0
  566. package/dist/domain/openapi/admitted-values.mjs.map +1 -0
  567. package/dist/domain/openapi/alias-expansion.cjs +50 -0
  568. package/dist/domain/openapi/alias-expansion.cjs.map +1 -0
  569. package/dist/domain/openapi/alias-expansion.mjs +45 -0
  570. package/dist/domain/openapi/alias-expansion.mjs.map +1 -0
  571. package/dist/domain/openapi/binary-content.cjs +48 -0
  572. package/dist/domain/openapi/binary-content.cjs.map +1 -0
  573. package/dist/domain/openapi/binary-content.mjs +45 -0
  574. package/dist/domain/openapi/binary-content.mjs.map +1 -0
  575. package/dist/domain/openapi/components-object.cjs +29 -0
  576. package/dist/domain/openapi/components-object.cjs.map +1 -0
  577. package/dist/domain/openapi/components-object.mjs +24 -0
  578. package/dist/domain/openapi/components-object.mjs.map +1 -0
  579. package/dist/domain/openapi/discriminated-union.cjs +68 -0
  580. package/dist/domain/openapi/discriminated-union.cjs.map +1 -0
  581. package/dist/domain/openapi/discriminated-union.mjs +62 -0
  582. package/dist/domain/openapi/discriminated-union.mjs.map +1 -0
  583. package/dist/domain/openapi/discriminator-conflicts.cjs +143 -0
  584. package/dist/domain/openapi/discriminator-conflicts.cjs.map +1 -0
  585. package/dist/domain/openapi/discriminator-conflicts.mjs +141 -0
  586. package/dist/domain/openapi/discriminator-conflicts.mjs.map +1 -0
  587. package/dist/domain/openapi/json-pointer.cjs +31 -0
  588. package/dist/domain/openapi/json-pointer.cjs.map +1 -0
  589. package/dist/domain/openapi/json-pointer.mjs +27 -0
  590. package/dist/domain/openapi/json-pointer.mjs.map +1 -0
  591. package/dist/domain/openapi/media-type-object.cjs +14 -0
  592. package/dist/domain/openapi/media-type-object.cjs.map +1 -0
  593. package/dist/domain/openapi/media-type-object.mjs +11 -0
  594. package/dist/domain/openapi/media-type-object.mjs.map +1 -0
  595. package/dist/domain/openapi/parameter-object.cjs +13 -0
  596. package/dist/domain/openapi/parameter-object.cjs.map +1 -0
  597. package/dist/domain/openapi/parameter-object.mjs +10 -0
  598. package/dist/domain/openapi/parameter-object.mjs.map +1 -0
  599. package/dist/domain/openapi/path-item-object.cjs +35 -0
  600. package/dist/domain/openapi/path-item-object.cjs.map +1 -0
  601. package/dist/domain/openapi/path-item-object.mjs +30 -0
  602. package/dist/domain/openapi/path-item-object.mjs.map +1 -0
  603. package/dist/domain/openapi/path-templates.cjs +23 -0
  604. package/dist/domain/openapi/path-templates.cjs.map +1 -0
  605. package/dist/domain/openapi/path-templates.mjs +21 -0
  606. package/dist/domain/openapi/path-templates.mjs.map +1 -0
  607. package/dist/domain/openapi/unsupported-features.cjs +87 -0
  608. package/dist/domain/openapi/unsupported-features.cjs.map +1 -0
  609. package/dist/domain/openapi/unsupported-features.mjs +84 -0
  610. package/dist/domain/openapi/unsupported-features.mjs.map +1 -0
  611. package/dist/domain/output-fixes.cjs +101 -0
  612. package/dist/domain/output-fixes.cjs.map +1 -0
  613. package/dist/domain/output-fixes.mjs +94 -0
  614. package/dist/domain/output-fixes.mjs.map +1 -0
  615. package/dist/domain/warnings.cjs +15 -0
  616. package/dist/domain/warnings.cjs.map +1 -0
  617. package/dist/domain/warnings.mjs +12 -0
  618. package/dist/domain/warnings.mjs.map +1 -0
  619. package/dist/index.cjs +98 -0
  620. package/dist/index.cjs.map +1 -0
  621. package/dist/index.d.cts +841 -0
  622. package/dist/index.d.mts +841 -0
  623. package/dist/index.d.ts +841 -0
  624. package/dist/index.mjs +27 -0
  625. package/dist/index.mjs.map +1 -0
  626. package/dist/transform/components-object.cjs +15 -0
  627. package/dist/transform/components-object.cjs.map +1 -0
  628. package/dist/transform/components-object.mjs +11 -0
  629. package/dist/transform/components-object.mjs.map +1 -0
  630. package/dist/transform/header-object.cjs +12 -0
  631. package/dist/transform/header-object.cjs.map +1 -0
  632. package/dist/transform/header-object.mjs +10 -0
  633. package/dist/transform/header-object.mjs.map +1 -0
  634. package/dist/transform/media-type-object.cjs +12 -0
  635. package/dist/transform/media-type-object.cjs.map +1 -0
  636. package/dist/transform/media-type-object.mjs +10 -0
  637. package/dist/transform/media-type-object.mjs.map +1 -0
  638. package/dist/transform/operation-object.cjs +26 -0
  639. package/dist/transform/operation-object.cjs.map +1 -0
  640. package/dist/transform/operation-object.mjs +21 -0
  641. package/dist/transform/operation-object.mjs.map +1 -0
  642. package/dist/transform/parameter-object.cjs +12 -0
  643. package/dist/transform/parameter-object.cjs.map +1 -0
  644. package/dist/transform/parameter-object.mjs +10 -0
  645. package/dist/transform/parameter-object.mjs.map +1 -0
  646. package/dist/transform/path-item-object.cjs +12 -0
  647. package/dist/transform/path-item-object.cjs.map +1 -0
  648. package/dist/transform/path-item-object.mjs +10 -0
  649. package/dist/transform/path-item-object.mjs.map +1 -0
  650. package/dist/transform/paths-object.cjs +11 -0
  651. package/dist/transform/paths-object.cjs.map +1 -0
  652. package/dist/transform/paths-object.mjs +9 -0
  653. package/dist/transform/paths-object.mjs.map +1 -0
  654. package/dist/transform/request-body-object.cjs +12 -0
  655. package/dist/transform/request-body-object.cjs.map +1 -0
  656. package/dist/transform/request-body-object.mjs +10 -0
  657. package/dist/transform/request-body-object.mjs.map +1 -0
  658. package/dist/transform/response-object.cjs +12 -0
  659. package/dist/transform/response-object.cjs.map +1 -0
  660. package/dist/transform/response-object.mjs +10 -0
  661. package/dist/transform/response-object.mjs.map +1 -0
  662. package/dist/transform/responses-object.cjs +12 -0
  663. package/dist/transform/responses-object.cjs.map +1 -0
  664. package/dist/transform/responses-object.mjs +10 -0
  665. package/dist/transform/responses-object.mjs.map +1 -0
  666. package/dist/transform/schema-object.cjs +21 -0
  667. package/dist/transform/schema-object.cjs.map +1 -0
  668. package/dist/transform/schema-object.mjs +16 -0
  669. package/dist/transform/schema-object.mjs.map +1 -0
  670. package/package.json +115 -4
  671. package/src/adapters/node-file-system/node-file-system.ts +44 -0
  672. package/src/adapters/redocly-loader/alias-limit.ts +20 -0
  673. package/src/adapters/redocly-loader/allowed-hosts.ts +62 -0
  674. package/src/adapters/redocly-loader/bundled-ref-repair.ts +65 -0
  675. package/src/adapters/redocly-loader/malformed-refs.ts +61 -0
  676. package/src/adapters/redocly-loader/redocly-config-source.ts +78 -0
  677. package/src/adapters/redocly-loader/redocly-schema-loader.ts +262 -0
  678. package/src/adapters/redocly-loader/ref-access.ts +146 -0
  679. package/src/adapters/redocly-loader/ref-holders.ts +43 -0
  680. package/src/adapters/redocly-loader/remote-fetch.ts +104 -0
  681. package/src/adapters/redocly-loader/schema-load-errors.ts +124 -0
  682. package/src/adapters/redocly-loader/schema-source.ts +151 -0
  683. package/src/adapters/redocly-loader/unsupported-keys.ts +102 -0
  684. package/src/adapters/terminal-logger/terminal-logger.ts +98 -0
  685. package/src/adapters/type-ast-bridge/footer-nodes.ts +38 -0
  686. package/src/adapters/type-ast-bridge/ir-declarations-to-typescript.ts +100 -0
  687. package/src/adapters/type-ast-bridge/ir-to-typescript.ts +223 -0
  688. package/src/adapters/type-ast-bridge/lazy-node.ts +24 -0
  689. package/src/adapters/type-ast-bridge/load-typescript.ts +84 -0
  690. package/src/adapters/type-ast-bridge/print-typescript.ts +33 -0
  691. package/src/adapters/type-ast-bridge/typescript-raw-text.ts +49 -0
  692. package/src/adapters/type-ast-bridge/typescript-to-ir.ts +294 -0
  693. package/src/adapters/type-ast-bridge/typescript-types.ts +8 -0
  694. package/src/api/ast-to-string.ts +59 -0
  695. package/src/api/comment-header.ts +7 -0
  696. package/src/api/default-ports.ts +44 -0
  697. package/src/api/discriminator-conflict-warnings.ts +43 -0
  698. package/src/api/discriminator-enum-names.ts +26 -0
  699. package/src/api/discriminator-enum-parent.ts +129 -0
  700. package/src/api/discriminator-enum.ts +115 -0
  701. package/src/api/discriminator-other-owners.ts +97 -0
  702. package/src/api/discriminator-patch.ts +147 -0
  703. package/src/api/discriminator-scan.ts +260 -0
  704. package/src/api/document-declarations.ts +41 -0
  705. package/src/api/document-refs.ts +71 -0
  706. package/src/api/document-run.ts +177 -0
  707. package/src/api/enum-values-warnings.ts +21 -0
  708. package/src/api/footer-entry.ts +23 -0
  709. package/src/api/footer-sink.ts +67 -0
  710. package/src/api/legacy-callback-warning.ts +29 -0
  711. package/src/api/legacy-ts-helpers.ts +311 -0
  712. package/src/api/legacy-utils.ts +118 -0
  713. package/src/api/openapi-ts.ts +62 -0
  714. package/src/api/path-template-warnings.ts +27 -0
  715. package/src/api/schema-callbacks.ts +211 -0
  716. package/src/api/string-to-ast.ts +27 -0
  717. package/src/api/transform-context.ts +93 -0
  718. package/src/api/transform-schema.ts +123 -0
  719. package/src/api/type-helpers.ts +130 -0
  720. package/src/api/unsupported-feature-warnings.ts +33 -0
  721. package/src/application/ports/file-system.ts +12 -0
  722. package/src/application/ports/logger.ts +16 -0
  723. package/src/application/ports/redocly-config-source.ts +20 -0
  724. package/src/application/ports/schema-loader.ts +32 -0
  725. package/src/application/print/comment-writer.ts +91 -0
  726. package/src/application/print/declaration-printer.ts +100 -0
  727. package/src/application/print/literal-text.ts +62 -0
  728. package/src/application/print/print-nodes.ts +62 -0
  729. package/src/application/print/print-options.ts +11 -0
  730. package/src/application/print/text-writer.ts +83 -0
  731. package/src/application/print/type-printer.ts +287 -0
  732. package/src/application/stack-overflow.ts +54 -0
  733. package/src/application/transform/document/assignability.ts +203 -0
  734. package/src/application/transform/document/components.ts +189 -0
  735. package/src/application/transform/document/declared-types.ts +93 -0
  736. package/src/application/transform/document/defs-root.ts +25 -0
  737. package/src/application/transform/document/document-member.ts +20 -0
  738. package/src/application/transform/document/document.ts +215 -0
  739. package/src/application/transform/document/exploded-query.ts +91 -0
  740. package/src/application/transform/document/global-type-references.ts +78 -0
  741. package/src/application/transform/document/header.ts +34 -0
  742. package/src/application/transform/document/kept-deprecated.ts +135 -0
  743. package/src/application/transform/document/list-assignability.ts +87 -0
  744. package/src/application/transform/document/media-type.ts +78 -0
  745. package/src/application/transform/document/operation.ts +64 -0
  746. package/src/application/transform/document/parameter.ts +45 -0
  747. package/src/application/transform/document/parameters.ts +265 -0
  748. package/src/application/transform/document/path-item.ts +168 -0
  749. package/src/application/transform/document/path-key-overlaps.ts +201 -0
  750. package/src/application/transform/document/path-template-replace.ts +90 -0
  751. package/src/application/transform/document/paths-enum.ts +127 -0
  752. package/src/application/transform/document/paths.ts +273 -0
  753. package/src/application/transform/document/request-body.ts +50 -0
  754. package/src/application/transform/document/response.ts +109 -0
  755. package/src/application/transform/document/responses.ts +29 -0
  756. package/src/application/transform/document/root-type-aliases.ts +107 -0
  757. package/src/application/transform/document/template-key-match.ts +183 -0
  758. package/src/application/transform/document/type-assignability.ts +268 -0
  759. package/src/application/transform/document/type-key.ts +80 -0
  760. package/src/application/transform/document/type-resolution.ts +163 -0
  761. package/src/application/transform/document/webhooks.ts +22 -0
  762. package/src/application/transform/document-entries.ts +28 -0
  763. package/src/application/transform/footer/document-footer.ts +212 -0
  764. package/src/application/transform/footer/enum-naming.ts +210 -0
  765. package/src/application/transform/footer/enum-values-check.ts +171 -0
  766. package/src/application/transform/footer/evaluation.ts +47 -0
  767. package/src/application/transform/footer/shared-enum-names.ts +86 -0
  768. package/src/application/transform/footer/type-evaluation.ts +294 -0
  769. package/src/application/transform/footer/type-rules.ts +269 -0
  770. package/src/application/transform/helper-types.ts +92 -0
  771. package/src/application/transform/literal-type.ts +54 -0
  772. package/src/application/transform/numbered-names.ts +20 -0
  773. package/src/application/transform/ref-pointer/generated-location.ts +211 -0
  774. package/src/application/transform/ref-pointer/generated-shape.ts +275 -0
  775. package/src/application/transform/ref-pointer/inline-cycles.ts +56 -0
  776. package/src/application/transform/ref-pointer/original-index.ts +95 -0
  777. package/src/application/transform/ref-pointer/pointer-type.ts +92 -0
  778. package/src/application/transform/ref-pointer/pointer-walk.ts +96 -0
  779. package/src/application/transform/ref-pointer/typed-walk.ts +192 -0
  780. package/src/application/transform/ref-type.ts +102 -0
  781. package/src/application/transform/schema/access-flags.ts +63 -0
  782. package/src/application/transform/schema/array-type.ts +213 -0
  783. package/src/application/transform/schema/composition-type.ts +255 -0
  784. package/src/application/transform/schema/core-type.ts +119 -0
  785. package/src/application/transform/schema/discriminated-union.ts +58 -0
  786. package/src/application/transform/schema/discriminator-property.ts +33 -0
  787. package/src/application/transform/schema/enum-rule.ts +280 -0
  788. package/src/application/transform/schema/inherited-discriminator.ts +54 -0
  789. package/src/application/transform/schema/object-type.ts +289 -0
  790. package/src/application/transform/schema/presence-members.ts +96 -0
  791. package/src/application/transform/schema/required-variants.ts +88 -0
  792. package/src/application/transform/schema/schema-context.ts +136 -0
  793. package/src/application/transform/schema/schema-rule.ts +29 -0
  794. package/src/application/transform/schema/schema-transform.ts +99 -0
  795. package/src/application/transform/schema/unevaluated-properties.ts +105 -0
  796. package/src/application/transform/schema-comment.ts +196 -0
  797. package/src/application/transform/shared-types.ts +9 -0
  798. package/src/application/transform/transform-context.ts +51 -0
  799. package/src/application/transform/type-combinators.ts +57 -0
  800. package/src/cli/cli-arguments.ts +208 -0
  801. package/src/cli/cli-dependencies.ts +47 -0
  802. package/src/cli/cli-errors.ts +127 -0
  803. package/src/cli/cli-output.ts +67 -0
  804. package/src/cli/docs-links.ts +6 -0
  805. package/src/cli/fix-option.ts +29 -0
  806. package/src/cli/help-text.ts +52 -0
  807. package/src/cli/main.ts +73 -0
  808. package/src/cli/redocly-apis.ts +95 -0
  809. package/src/cli/ref-limits.ts +16 -0
  810. package/src/cli/run-cli.ts +131 -0
  811. package/src/domain/assert-never.ts +8 -0
  812. package/src/domain/errors.ts +76 -0
  813. package/src/domain/ir/constructors.ts +142 -0
  814. package/src/domain/ir/identifier-text.ts +49 -0
  815. package/src/domain/ir/newer-identifier-ranges.ts +109 -0
  816. package/src/domain/ir/nodes.ts +225 -0
  817. package/src/domain/ir/normalize.ts +51 -0
  818. package/src/domain/ir/property-name.ts +28 -0
  819. package/src/domain/ir/raw-text-escapes.ts +37 -0
  820. package/src/domain/openapi/admitted-values.ts +113 -0
  821. package/src/domain/openapi/alias-expansion.ts +72 -0
  822. package/src/domain/openapi/binary-content.ts +74 -0
  823. package/src/domain/openapi/components-object.ts +52 -0
  824. package/src/domain/openapi/discriminated-union.ts +109 -0
  825. package/src/domain/openapi/discriminator-conflicts.ts +251 -0
  826. package/src/domain/openapi/document-object.ts +12 -0
  827. package/src/domain/openapi/header-object.ts +9 -0
  828. package/src/domain/openapi/json-pointer.ts +46 -0
  829. package/src/domain/openapi/media-type-object.ts +26 -0
  830. package/src/domain/openapi/operation-object.ts +13 -0
  831. package/src/domain/openapi/parameter-object.ts +34 -0
  832. package/src/domain/openapi/path-item-object.ts +70 -0
  833. package/src/domain/openapi/path-templates.ts +31 -0
  834. package/src/domain/openapi/request-body-object.ts +7 -0
  835. package/src/domain/openapi/response-object.ts +14 -0
  836. package/src/domain/openapi/schema-object.ts +61 -0
  837. package/src/domain/openapi/unsupported-features.ts +139 -0
  838. package/src/domain/output-fixes.ts +136 -0
  839. package/src/domain/warnings.ts +20 -0
  840. package/src/index.ts +67 -0
  841. package/src/transform/components-object.ts +27 -0
  842. package/src/transform/header-object.ts +19 -0
  843. package/src/transform/media-type-object.ts +19 -0
  844. package/src/transform/operation-object.ts +36 -0
  845. package/src/transform/parameter-object.ts +19 -0
  846. package/src/transform/parameters-array.ts +19 -0
  847. package/src/transform/path-item-object.ts +22 -0
  848. package/src/transform/paths-enum.ts +8 -0
  849. package/src/transform/paths-object.ts +15 -0
  850. package/src/transform/request-body-object.ts +19 -0
  851. package/src/transform/response-object.ts +19 -0
  852. package/src/transform/responses-object.ts +19 -0
  853. package/src/transform/schema-object.ts +36 -0
  854. package/src/transform/webhooks-object.ts +15 -0
  855. package/src/types/generator-options.ts +278 -0
  856. package/src/types/openapi-common.ts +100 -0
  857. package/src/types/openapi-document.ts +196 -0
  858. package/src/types/openapi-path-item.ts +130 -0
  859. package/src/types/openapi-request.ts +209 -0
  860. package/src/types/openapi-response.ts +81 -0
  861. package/src/types/openapi-schema.ts +169 -0
  862. package/src/types/openapi-security.ts +116 -0
  863. package/src/types.ts +12 -0
@@ -0,0 +1,50 @@
1
+ import { parseRef } from '@redocly/openapi-core/lib/ref-utils.js';
2
+ import { defaultLogger } from './default-ports.mjs';
3
+
4
+ function resolveDocumentRef(schema, $ref, options) {
5
+ const { visited = [] } = options;
6
+ const logger = options.logger ?? defaultLogger(options.silent ?? false);
7
+ const { pointer } = parseRef($ref);
8
+ if (!pointer.length) {
9
+ return void 0;
10
+ }
11
+ let node = schema;
12
+ for (const key of pointer) {
13
+ if (node && typeof node === "object" && node[key]) {
14
+ node = node[key];
15
+ } else {
16
+ logger.warn(`Could not resolve $ref "${$ref}"`);
17
+ return void 0;
18
+ }
19
+ }
20
+ if (node && typeof node === "object" && node.$ref) {
21
+ if (visited.includes(node.$ref)) {
22
+ logger.warn(`Could not resolve circular $ref "${$ref}"`);
23
+ return void 0;
24
+ }
25
+ return resolveDocumentRef(schema, node.$ref, {
26
+ ...options,
27
+ logger,
28
+ visited: [...visited, node.$ref]
29
+ });
30
+ }
31
+ return node;
32
+ }
33
+ function walkDocument(obj, cb, path = []) {
34
+ if (!obj || typeof obj !== "object") {
35
+ return;
36
+ }
37
+ if (Array.isArray(obj)) {
38
+ for (let i = 0; i < obj.length; i++) {
39
+ walkDocument(obj[i], cb, path.concat(i));
40
+ }
41
+ return;
42
+ }
43
+ cb(obj, path);
44
+ for (const k of Object.keys(obj)) {
45
+ walkDocument(obj[k], cb, path.concat(k));
46
+ }
47
+ }
48
+
49
+ export { resolveDocumentRef, walkDocument };
50
+ //# sourceMappingURL=document-refs.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-refs.mjs","sources":["../../src/api/document-refs.ts"],"sourcesContent":["import { parseRef } from \"@redocly/openapi-core/lib/ref-utils.js\";\nimport type { Logger } from \"../application/ports/logger.js\";\nimport { defaultLogger } from \"./default-ports.js\";\n\n/** `$ref` resolution and the document walk that the generator's pre-pass uses. */\n\nexport interface ResolveRefOptions {\n silent: boolean;\n visited?: string[];\n /** @internal Where warnings go; the default terminal logger (respecting `silent`) if absent. */\n logger?: Logger;\n}\n\n/** Resolve a `$ref` in a document; warns and returns undefined when it cannot. */\nexport function resolveDocumentRef<T>(\n schema: any,\n $ref: string,\n options: ResolveRefOptions,\n): T | undefined {\n const { visited = [] } = options;\n const logger = options.logger ?? defaultLogger(options.silent ?? false);\n const { pointer } = parseRef($ref);\n if (!pointer.length) {\n return undefined;\n }\n let node = schema;\n for (const key of pointer) {\n if (node && typeof node === \"object\" && node[key]) {\n node = node[key];\n } else {\n logger.warn(`Could not resolve $ref \"${$ref}\"`);\n return undefined;\n }\n }\n\n // if this is also a $ref, keep tracing\n if (node && typeof node === \"object\" && node.$ref) {\n if (visited.includes(node.$ref)) {\n logger.warn(`Could not resolve circular $ref \"${$ref}\"`);\n return undefined;\n }\n return resolveDocumentRef(schema, node.$ref, {\n ...options,\n logger,\n visited: [...visited, node.$ref],\n });\n }\n\n return node;\n}\n\n/** Call `cb` for every object in a JSON-serializable (non-circular) value, depth first. */\nexport function walkDocument(\n obj: unknown,\n cb: (value: Record<string, unknown>, path: (string | number)[]) => void,\n path: (string | number)[] = [],\n): void {\n if (!obj || typeof obj !== \"object\") {\n return;\n }\n if (Array.isArray(obj)) {\n for (let i = 0; i < obj.length; i++) {\n walkDocument(obj[i], cb, path.concat(i));\n }\n return;\n }\n cb(obj as Record<string, unknown>, path);\n for (const k of Object.keys(obj)) {\n walkDocument((obj as Record<string, unknown>)[k], cb, path.concat(k));\n }\n}\n"],"names":[],"mappings":";;;AAcO,SAAS,kBAAA,CACd,MAAA,EACA,IAAA,EACA,OAAA,EACe;AACf,EAAA,MAAM,EAAE,OAAA,GAAU,EAAC,EAAE,GAAI,OAAA;AACzB,EAAA,MAAM,SAAS,OAAA,CAAQ,MAAA,IAAU,aAAA,CAAc,OAAA,CAAQ,UAAU,KAAK,CAAA;AACtE,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,QAAA,CAAS,IAAI,CAAA;AACjC,EAAA,IAAI,CAAC,QAAQ,MAAA,EAAQ;AACnB,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,IAAI,IAAA,GAAO,MAAA;AACX,EAAA,KAAA,MAAW,OAAO,OAAA,EAAS;AACzB,IAAA,IAAI,QAAQ,OAAO,IAAA,KAAS,QAAA,IAAY,IAAA,CAAK,GAAG,CAAA,EAAG;AACjD,MAAA,IAAA,GAAO,KAAK,GAAG,CAAA;AAAA,IACjB,CAAA,MAAO;AACL,MAAA,MAAA,CAAO,IAAA,CAAK,CAAA,wBAAA,EAA2B,IAAI,CAAA,CAAA,CAAG,CAAA;AAC9C,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,EACF;AAGA,EAAA,IAAI,IAAA,IAAQ,OAAO,IAAA,KAAS,QAAA,IAAY,KAAK,IAAA,EAAM;AACjD,IAAA,IAAI,OAAA,CAAQ,QAAA,CAAS,IAAA,CAAK,IAAI,CAAA,EAAG;AAC/B,MAAA,MAAA,CAAO,IAAA,CAAK,CAAA,iCAAA,EAAoC,IAAI,CAAA,CAAA,CAAG,CAAA;AACvD,MAAA,OAAO,MAAA;AAAA,IACT;AACA,IAAA,OAAO,kBAAA,CAAmB,MAAA,EAAQ,IAAA,CAAK,IAAA,EAAM;AAAA,MAC3C,GAAG,OAAA;AAAA,MACH,MAAA;AAAA,MACA,OAAA,EAAS,CAAC,GAAG,OAAA,EAAS,KAAK,IAAI;AAAA,KAChC,CAAA;AAAA,EACH;AAEA,EAAA,OAAO,IAAA;AACT;AAGO,SAAS,YAAA,CACd,GAAA,EACA,EAAA,EACA,IAAA,GAA4B,EAAC,EACvB;AACN,EAAA,IAAI,CAAC,GAAA,IAAO,OAAO,GAAA,KAAQ,QAAA,EAAU;AACnC,IAAA;AAAA,EACF;AACA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG;AACtB,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,QAAQ,CAAA,EAAA,EAAK;AACnC,MAAA,YAAA,CAAa,IAAI,CAAC,CAAA,EAAG,IAAI,IAAA,CAAK,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,IACzC;AACA,IAAA;AAAA,EACF;AACA,EAAA,EAAA,CAAG,KAAgC,IAAI,CAAA;AACvC,EAAA,KAAA,MAAW,CAAA,IAAK,MAAA,CAAO,IAAA,CAAK,GAAG,CAAA,EAAG;AAChC,IAAA,YAAA,CAAc,IAAgC,CAAC,CAAA,EAAG,IAAI,IAAA,CAAK,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,EACtE;AACF;;"}
@@ -0,0 +1,122 @@
1
+ 'use strict';
2
+
3
+ const path = require('node:path');
4
+ const node_url = require('node:url');
5
+ const schemaLoadErrors = require('../adapters/redocly-loader/schema-load-errors.cjs');
6
+ const stackOverflow = require('../application/stack-overflow.cjs');
7
+ const outputFixes = require('../domain/output-fixes.cjs');
8
+ const discriminatorConflictWarnings = require('./discriminator-conflict-warnings.cjs');
9
+ const discriminatorScan = require('./discriminator-scan.cjs');
10
+ const documentRefs = require('./document-refs.cjs');
11
+ const pathTemplateWarnings = require('./path-template-warnings.cjs');
12
+ const unsupportedFeatureWarnings = require('./unsupported-feature-warnings.cjs');
13
+
14
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; }
15
+
16
+ const path__default = /*#__PURE__*/_interopDefaultCompat(path);
17
+
18
+ function sourceCwd(options) {
19
+ const { cwd } = options;
20
+ if (cwd instanceof URL) {
21
+ return cwd.pathname.endsWith("/") ? cwd : new URL(`${cwd.pathname}/`, cwd);
22
+ }
23
+ const directory = path__default.resolve(cwd === void 0 ? process.cwd() : cwd.toString());
24
+ return node_url.pathToFileURL(path__default.join(directory, path__default.sep));
25
+ }
26
+ function refAccessOf(options, cwd) {
27
+ const { localRefRoot, remoteRefHosts } = options;
28
+ const localRoot = typeof localRefRoot === "string" ? node_url.pathToFileURL(path__default.resolve(node_url.fileURLToPath(cwd), localRefRoot)) : localRefRoot;
29
+ return {
30
+ ...localRoot === void 0 ? {} : { localRoot },
31
+ ...remoteRefHosts === void 0 ? {} : { remoteHosts: remoteRefHosts }
32
+ };
33
+ }
34
+ function callbackOptions(options) {
35
+ return {
36
+ irCallbacks: options.irCallbacks === true,
37
+ postTransform: typeof options.postTransform === "function" ? options.postTransform : void 0,
38
+ transform: typeof options.transform === "function" ? options.transform : void 0,
39
+ transformProperty: typeof options.transformProperty === "function" ? options.transformProperty : void 0
40
+ };
41
+ }
42
+ function contextFlags(options) {
43
+ return {
44
+ additionalProperties: options.additionalProperties ?? false,
45
+ alphabetize: options.alphabetize ?? false,
46
+ arrayLength: options.arrayLength ?? false,
47
+ binaryAsBlob: options.binaryAsBlob ?? false,
48
+ defaultNonNullable: options.defaultNonNullable ?? true,
49
+ emptyObjectsUnknown: options.emptyObjectsUnknown ?? false,
50
+ enum: options.enum ?? false,
51
+ enumValues: options.enumValues ?? false,
52
+ conditionalEnums: options.conditionalEnums ?? false,
53
+ dedupeEnums: options.dedupeEnums ?? false,
54
+ excludeDeprecated: options.excludeDeprecated ?? false,
55
+ exportType: options.exportType ?? false,
56
+ immutable: options.immutable ?? false,
57
+ rootTypes: options.rootTypes ?? false,
58
+ rootTypesNoSchemaPrefix: options.rootTypesNoSchemaPrefix ?? false,
59
+ rootTypesKeepCasing: options.rootTypesKeepCasing ?? false,
60
+ pathParamsAsTypes: options.pathParamsAsTypes ?? false,
61
+ propertiesRequiredByDefault: options.propertiesRequiredByDefault ?? false,
62
+ silent: options.silent ?? false,
63
+ ...options.inject === void 0 ? {} : { inject: options.inject },
64
+ makePathsEnum: options.makePathsEnum ?? false,
65
+ generatePathParams: options.generatePathParams ?? false,
66
+ readWriteMarkers: options.readWriteMarkers ?? false,
67
+ ...callbackOptions(options)
68
+ };
69
+ }
70
+ function outputFixesOf(options, logger) {
71
+ const names = outputFixes.outputFixNamesOf(options.fix ?? []);
72
+ for (const notice of outputFixes.ineffectiveFixNotices(names, (option) => options[option] === true)) {
73
+ logger.warn(notice);
74
+ }
75
+ return [...outputFixes.resolveOutputFixes(names)];
76
+ }
77
+ function warnAboutDocument(schema, fix, logger) {
78
+ stackOverflow.withStackOverflowReported("transform", () => unsupportedFeatureWarnings.warnUnsupportedFeatures(schema, logger));
79
+ stackOverflow.withStackOverflowReported(
80
+ "transform",
81
+ () => discriminatorConflictWarnings.warnDiscriminatorValueConflicts(schema, fix, logger)
82
+ );
83
+ pathTemplateWarnings.warnIdenticalPathTemplates(schema, logger);
84
+ }
85
+ async function createDocumentRun(source, options, ports) {
86
+ if (!source) {
87
+ throw schemaLoadErrors.sourceEmptyError("Empty schema. Please specify a URL, file path, or Redocly Config");
88
+ }
89
+ const { logger } = ports;
90
+ const fix = outputFixesOf(options, logger);
91
+ const silent = options.silent ?? false;
92
+ const cwd = sourceCwd(options);
93
+ const schema = await ports.loader.load({
94
+ source,
95
+ cwd,
96
+ shouldLint: options.lint ?? true,
97
+ refAccess: refAccessOf(options, cwd)
98
+ });
99
+ warnAboutDocument(schema, fix, logger);
100
+ const ctx = {
101
+ ...contextFlags(options),
102
+ fix,
103
+ // The scan walks every schema before the transform does, so on a larger stack, where loading
104
+ // passed, it is the first step to run out.
105
+ discriminators: stackOverflow.withStackOverflowReported(
106
+ "transform",
107
+ () => discriminatorScan.findDiscriminators(schema, {
108
+ silent,
109
+ logger,
110
+ fixes: new Set(fix)
111
+ })
112
+ ),
113
+ injectFooter: [],
114
+ redoc: ports.redoc,
115
+ resolve: ($ref) => documentRefs.resolveDocumentRef(schema, $ref, { silent, logger }),
116
+ logger
117
+ };
118
+ return { schema, ctx };
119
+ }
120
+
121
+ exports.createDocumentRun = createDocumentRun;
122
+ //# sourceMappingURL=document-run.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-run.cjs","sources":["../../src/api/document-run.ts"],"sourcesContent":["import path from \"node:path\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\nimport type { Config as RedoclyConfig } from \"@redocly/openapi-core\";\nimport { sourceEmptyError } from \"../adapters/redocly-loader/schema-load-errors.js\";\nimport type { Logger } from \"../application/ports/logger.js\";\nimport type { RefAccess, SchemaLoader } from \"../application/ports/schema-loader.js\";\nimport { withStackOverflowReported } from \"../application/stack-overflow.js\";\nimport {\n ineffectiveFixNotices,\n type OutputFix,\n outputFixNamesOf,\n resolveOutputFixes,\n} from \"../domain/output-fixes.js\";\nimport type { GeneratorOptions, GlobalContext, OpenAPI3, SchemaSource } from \"../types.js\";\nimport { warnDiscriminatorValueConflicts } from \"./discriminator-conflict-warnings.js\";\nimport { findDiscriminators } from \"./discriminator-scan.js\";\nimport { resolveDocumentRef } from \"./document-refs.js\";\nimport { warnIdenticalPathTemplates } from \"./path-template-warnings.js\";\nimport { warnUnsupportedFeatures } from \"./unsupported-feature-warnings.js\";\n\n/** The ports of one generator run, wired by the Node API or the CLI (ENGINEERING_PLAN 4.5). */\nexport interface GeneratorPorts {\n readonly loader: SchemaLoader;\n readonly logger: Logger;\n /** The Redocly config the loader uses; the run's context exposes it as `ctx.redoc`. */\n readonly redoc: RedoclyConfig;\n /** A monotonic time in milliseconds, for debug durations. */\n readonly now: () => number;\n}\n\n/** A validated, bundled document and the context of one generator run. */\nexport interface DocumentRun {\n readonly schema: OpenAPI3;\n readonly ctx: GlobalContext;\n}\n\n/** The context fields that are user flags, with the original defaults. */\ntype ContextFlags = Omit<\n GlobalContext,\n | \"discriminators\"\n | \"injectFooter\"\n | \"redoc\"\n | \"resolve\"\n | \"runFooter\"\n | \"legacyCallbackWarnings\"\n | \"logger\"\n | \"fix\"\n>;\n\n/**\n * The directory that relative `$ref`s of an inline source resolve against, as a URL that ends in\n * a slash. A path is resolved and encoded (`#`, `%`, spaces); a URL without the slash gets one.\n */\nfunction sourceCwd(options: GeneratorOptions): URL {\n const { cwd } = options;\n if (cwd instanceof URL) {\n return cwd.pathname.endsWith(\"/\") ? cwd : new URL(`${cwd.pathname}/`, cwd);\n }\n const directory = path.resolve(cwd === undefined ? process.cwd() : cwd.toString());\n return pathToFileURL(path.join(directory, path.sep));\n}\n\n/** The `$ref` limits of the options; a relative local root resolves against the cwd. */\nfunction refAccessOf(options: GeneratorOptions, cwd: URL): RefAccess {\n const { localRefRoot, remoteRefHosts } = options;\n const localRoot =\n typeof localRefRoot === \"string\"\n ? pathToFileURL(path.resolve(fileURLToPath(cwd), localRefRoot))\n : localRefRoot;\n return {\n ...(localRoot === undefined ? {} : { localRoot }),\n ...(remoteRefHosts === undefined ? {} : { remoteHosts: remoteRefHosts }),\n };\n}\n\nfunction callbackOptions(options: GeneratorOptions) {\n return {\n irCallbacks: options.irCallbacks === true,\n postTransform: typeof options.postTransform === \"function\" ? options.postTransform : undefined,\n transform: typeof options.transform === \"function\" ? options.transform : undefined,\n transformProperty:\n typeof options.transformProperty === \"function\" ? options.transformProperty : undefined,\n };\n}\n\nfunction contextFlags(options: GeneratorOptions): ContextFlags {\n return {\n additionalProperties: options.additionalProperties ?? false,\n alphabetize: options.alphabetize ?? false,\n arrayLength: options.arrayLength ?? false,\n binaryAsBlob: options.binaryAsBlob ?? false,\n defaultNonNullable: options.defaultNonNullable ?? true,\n emptyObjectsUnknown: options.emptyObjectsUnknown ?? false,\n enum: options.enum ?? false,\n enumValues: options.enumValues ?? false,\n conditionalEnums: options.conditionalEnums ?? false,\n dedupeEnums: options.dedupeEnums ?? false,\n excludeDeprecated: options.excludeDeprecated ?? false,\n exportType: options.exportType ?? false,\n immutable: options.immutable ?? false,\n rootTypes: options.rootTypes ?? false,\n rootTypesNoSchemaPrefix: options.rootTypesNoSchemaPrefix ?? false,\n rootTypesKeepCasing: options.rootTypesKeepCasing ?? false,\n pathParamsAsTypes: options.pathParamsAsTypes ?? false,\n propertiesRequiredByDefault: options.propertiesRequiredByDefault ?? false,\n silent: options.silent ?? false,\n ...(options.inject === undefined ? {} : { inject: options.inject }),\n makePathsEnum: options.makePathsEnum ?? false,\n generatePathParams: options.generatePathParams ?? false,\n readWriteMarkers: options.readWriteMarkers ?? false,\n ...callbackOptions(options),\n };\n}\n\n/**\n * The fixes of the options, `all` expanded; fails with `OPTION_FIX_UNKNOWN` for another name.\n * A fix named without the option it needs is reported, since it changes nothing.\n */\nfunction outputFixesOf(options: GeneratorOptions, logger: Logger): readonly OutputFix[] {\n const names = outputFixNamesOf(options.fix ?? []);\n for (const notice of ineffectiveFixNotices(names, (option) => options[option] === true)) {\n logger.warn(notice);\n }\n return [...resolveOutputFixes(names)];\n}\n\n/** The warnings about the loaded document itself, before it is transformed. */\nfunction warnAboutDocument(schema: OpenAPI3, fix: readonly OutputFix[], logger: Logger): void {\n withStackOverflowReported(\"transform\", () => warnUnsupportedFeatures(schema, logger));\n withStackOverflowReported(\"transform\", () =>\n warnDiscriminatorValueConflicts(schema, fix, logger),\n );\n warnIdenticalPathTemplates(schema, logger);\n}\n\n/**\n * Load the source through the ports, then build the run's context from the options. The fix names\n * are checked first, so a typo fails before the document is read.\n */\nexport async function createDocumentRun(\n source: SchemaSource,\n options: GeneratorOptions,\n ports: GeneratorPorts,\n): Promise<DocumentRun> {\n if (!source) {\n throw sourceEmptyError(\"Empty schema. Please specify a URL, file path, or Redocly Config\");\n }\n const { logger } = ports;\n const fix = outputFixesOf(options, logger);\n const silent = options.silent ?? false;\n const cwd = sourceCwd(options);\n const schema = await ports.loader.load({\n source,\n cwd,\n shouldLint: options.lint ?? true,\n refAccess: refAccessOf(options, cwd),\n });\n warnAboutDocument(schema, fix, logger);\n const ctx: GlobalContext = {\n ...contextFlags(options),\n fix,\n // The scan walks every schema before the transform does, so on a larger stack, where loading\n // passed, it is the first step to run out.\n discriminators: withStackOverflowReported(\"transform\", () =>\n findDiscriminators(schema, {\n silent,\n logger,\n fixes: new Set(fix),\n }),\n ),\n injectFooter: [],\n redoc: ports.redoc,\n resolve: ($ref) => resolveDocumentRef(schema, $ref, { silent, logger }),\n logger,\n };\n return { schema, ctx };\n}\n"],"names":["path","pathToFileURL","fileURLToPath","outputFixNamesOf","ineffectiveFixNotices","resolveOutputFixes","withStackOverflowReported","warnUnsupportedFeatures","warnDiscriminatorValueConflicts","warnIdenticalPathTemplates","sourceEmptyError","findDiscriminators","resolveDocumentRef"],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ import path from 'node:path';
2
+ import { pathToFileURL, fileURLToPath } from 'node:url';
3
+ import { sourceEmptyError } from '../adapters/redocly-loader/schema-load-errors.mjs';
4
+ import { withStackOverflowReported } from '../application/stack-overflow.mjs';
5
+ import { outputFixNamesOf, ineffectiveFixNotices, resolveOutputFixes } from '../domain/output-fixes.mjs';
6
+ import { warnDiscriminatorValueConflicts } from './discriminator-conflict-warnings.mjs';
7
+ import { findDiscriminators } from './discriminator-scan.mjs';
8
+ import { resolveDocumentRef } from './document-refs.mjs';
9
+ import { warnIdenticalPathTemplates } from './path-template-warnings.mjs';
10
+ import { warnUnsupportedFeatures } from './unsupported-feature-warnings.mjs';
11
+
12
+ function sourceCwd(options) {
13
+ const { cwd } = options;
14
+ if (cwd instanceof URL) {
15
+ return cwd.pathname.endsWith("/") ? cwd : new URL(`${cwd.pathname}/`, cwd);
16
+ }
17
+ const directory = path.resolve(cwd === void 0 ? process.cwd() : cwd.toString());
18
+ return pathToFileURL(path.join(directory, path.sep));
19
+ }
20
+ function refAccessOf(options, cwd) {
21
+ const { localRefRoot, remoteRefHosts } = options;
22
+ const localRoot = typeof localRefRoot === "string" ? pathToFileURL(path.resolve(fileURLToPath(cwd), localRefRoot)) : localRefRoot;
23
+ return {
24
+ ...localRoot === void 0 ? {} : { localRoot },
25
+ ...remoteRefHosts === void 0 ? {} : { remoteHosts: remoteRefHosts }
26
+ };
27
+ }
28
+ function callbackOptions(options) {
29
+ return {
30
+ irCallbacks: options.irCallbacks === true,
31
+ postTransform: typeof options.postTransform === "function" ? options.postTransform : void 0,
32
+ transform: typeof options.transform === "function" ? options.transform : void 0,
33
+ transformProperty: typeof options.transformProperty === "function" ? options.transformProperty : void 0
34
+ };
35
+ }
36
+ function contextFlags(options) {
37
+ return {
38
+ additionalProperties: options.additionalProperties ?? false,
39
+ alphabetize: options.alphabetize ?? false,
40
+ arrayLength: options.arrayLength ?? false,
41
+ binaryAsBlob: options.binaryAsBlob ?? false,
42
+ defaultNonNullable: options.defaultNonNullable ?? true,
43
+ emptyObjectsUnknown: options.emptyObjectsUnknown ?? false,
44
+ enum: options.enum ?? false,
45
+ enumValues: options.enumValues ?? false,
46
+ conditionalEnums: options.conditionalEnums ?? false,
47
+ dedupeEnums: options.dedupeEnums ?? false,
48
+ excludeDeprecated: options.excludeDeprecated ?? false,
49
+ exportType: options.exportType ?? false,
50
+ immutable: options.immutable ?? false,
51
+ rootTypes: options.rootTypes ?? false,
52
+ rootTypesNoSchemaPrefix: options.rootTypesNoSchemaPrefix ?? false,
53
+ rootTypesKeepCasing: options.rootTypesKeepCasing ?? false,
54
+ pathParamsAsTypes: options.pathParamsAsTypes ?? false,
55
+ propertiesRequiredByDefault: options.propertiesRequiredByDefault ?? false,
56
+ silent: options.silent ?? false,
57
+ ...options.inject === void 0 ? {} : { inject: options.inject },
58
+ makePathsEnum: options.makePathsEnum ?? false,
59
+ generatePathParams: options.generatePathParams ?? false,
60
+ readWriteMarkers: options.readWriteMarkers ?? false,
61
+ ...callbackOptions(options)
62
+ };
63
+ }
64
+ function outputFixesOf(options, logger) {
65
+ const names = outputFixNamesOf(options.fix ?? []);
66
+ for (const notice of ineffectiveFixNotices(names, (option) => options[option] === true)) {
67
+ logger.warn(notice);
68
+ }
69
+ return [...resolveOutputFixes(names)];
70
+ }
71
+ function warnAboutDocument(schema, fix, logger) {
72
+ withStackOverflowReported("transform", () => warnUnsupportedFeatures(schema, logger));
73
+ withStackOverflowReported(
74
+ "transform",
75
+ () => warnDiscriminatorValueConflicts(schema, fix, logger)
76
+ );
77
+ warnIdenticalPathTemplates(schema, logger);
78
+ }
79
+ async function createDocumentRun(source, options, ports) {
80
+ if (!source) {
81
+ throw sourceEmptyError("Empty schema. Please specify a URL, file path, or Redocly Config");
82
+ }
83
+ const { logger } = ports;
84
+ const fix = outputFixesOf(options, logger);
85
+ const silent = options.silent ?? false;
86
+ const cwd = sourceCwd(options);
87
+ const schema = await ports.loader.load({
88
+ source,
89
+ cwd,
90
+ shouldLint: options.lint ?? true,
91
+ refAccess: refAccessOf(options, cwd)
92
+ });
93
+ warnAboutDocument(schema, fix, logger);
94
+ const ctx = {
95
+ ...contextFlags(options),
96
+ fix,
97
+ // The scan walks every schema before the transform does, so on a larger stack, where loading
98
+ // passed, it is the first step to run out.
99
+ discriminators: withStackOverflowReported(
100
+ "transform",
101
+ () => findDiscriminators(schema, {
102
+ silent,
103
+ logger,
104
+ fixes: new Set(fix)
105
+ })
106
+ ),
107
+ injectFooter: [],
108
+ redoc: ports.redoc,
109
+ resolve: ($ref) => resolveDocumentRef(schema, $ref, { silent, logger }),
110
+ logger
111
+ };
112
+ return { schema, ctx };
113
+ }
114
+
115
+ export { createDocumentRun };
116
+ //# sourceMappingURL=document-run.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-run.mjs","sources":["../../src/api/document-run.ts"],"sourcesContent":["import path from \"node:path\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\nimport type { Config as RedoclyConfig } from \"@redocly/openapi-core\";\nimport { sourceEmptyError } from \"../adapters/redocly-loader/schema-load-errors.js\";\nimport type { Logger } from \"../application/ports/logger.js\";\nimport type { RefAccess, SchemaLoader } from \"../application/ports/schema-loader.js\";\nimport { withStackOverflowReported } from \"../application/stack-overflow.js\";\nimport {\n ineffectiveFixNotices,\n type OutputFix,\n outputFixNamesOf,\n resolveOutputFixes,\n} from \"../domain/output-fixes.js\";\nimport type { GeneratorOptions, GlobalContext, OpenAPI3, SchemaSource } from \"../types.js\";\nimport { warnDiscriminatorValueConflicts } from \"./discriminator-conflict-warnings.js\";\nimport { findDiscriminators } from \"./discriminator-scan.js\";\nimport { resolveDocumentRef } from \"./document-refs.js\";\nimport { warnIdenticalPathTemplates } from \"./path-template-warnings.js\";\nimport { warnUnsupportedFeatures } from \"./unsupported-feature-warnings.js\";\n\n/** The ports of one generator run, wired by the Node API or the CLI (ENGINEERING_PLAN 4.5). */\nexport interface GeneratorPorts {\n readonly loader: SchemaLoader;\n readonly logger: Logger;\n /** The Redocly config the loader uses; the run's context exposes it as `ctx.redoc`. */\n readonly redoc: RedoclyConfig;\n /** A monotonic time in milliseconds, for debug durations. */\n readonly now: () => number;\n}\n\n/** A validated, bundled document and the context of one generator run. */\nexport interface DocumentRun {\n readonly schema: OpenAPI3;\n readonly ctx: GlobalContext;\n}\n\n/** The context fields that are user flags, with the original defaults. */\ntype ContextFlags = Omit<\n GlobalContext,\n | \"discriminators\"\n | \"injectFooter\"\n | \"redoc\"\n | \"resolve\"\n | \"runFooter\"\n | \"legacyCallbackWarnings\"\n | \"logger\"\n | \"fix\"\n>;\n\n/**\n * The directory that relative `$ref`s of an inline source resolve against, as a URL that ends in\n * a slash. A path is resolved and encoded (`#`, `%`, spaces); a URL without the slash gets one.\n */\nfunction sourceCwd(options: GeneratorOptions): URL {\n const { cwd } = options;\n if (cwd instanceof URL) {\n return cwd.pathname.endsWith(\"/\") ? cwd : new URL(`${cwd.pathname}/`, cwd);\n }\n const directory = path.resolve(cwd === undefined ? process.cwd() : cwd.toString());\n return pathToFileURL(path.join(directory, path.sep));\n}\n\n/** The `$ref` limits of the options; a relative local root resolves against the cwd. */\nfunction refAccessOf(options: GeneratorOptions, cwd: URL): RefAccess {\n const { localRefRoot, remoteRefHosts } = options;\n const localRoot =\n typeof localRefRoot === \"string\"\n ? pathToFileURL(path.resolve(fileURLToPath(cwd), localRefRoot))\n : localRefRoot;\n return {\n ...(localRoot === undefined ? {} : { localRoot }),\n ...(remoteRefHosts === undefined ? {} : { remoteHosts: remoteRefHosts }),\n };\n}\n\nfunction callbackOptions(options: GeneratorOptions) {\n return {\n irCallbacks: options.irCallbacks === true,\n postTransform: typeof options.postTransform === \"function\" ? options.postTransform : undefined,\n transform: typeof options.transform === \"function\" ? options.transform : undefined,\n transformProperty:\n typeof options.transformProperty === \"function\" ? options.transformProperty : undefined,\n };\n}\n\nfunction contextFlags(options: GeneratorOptions): ContextFlags {\n return {\n additionalProperties: options.additionalProperties ?? false,\n alphabetize: options.alphabetize ?? false,\n arrayLength: options.arrayLength ?? false,\n binaryAsBlob: options.binaryAsBlob ?? false,\n defaultNonNullable: options.defaultNonNullable ?? true,\n emptyObjectsUnknown: options.emptyObjectsUnknown ?? false,\n enum: options.enum ?? false,\n enumValues: options.enumValues ?? false,\n conditionalEnums: options.conditionalEnums ?? false,\n dedupeEnums: options.dedupeEnums ?? false,\n excludeDeprecated: options.excludeDeprecated ?? false,\n exportType: options.exportType ?? false,\n immutable: options.immutable ?? false,\n rootTypes: options.rootTypes ?? false,\n rootTypesNoSchemaPrefix: options.rootTypesNoSchemaPrefix ?? false,\n rootTypesKeepCasing: options.rootTypesKeepCasing ?? false,\n pathParamsAsTypes: options.pathParamsAsTypes ?? false,\n propertiesRequiredByDefault: options.propertiesRequiredByDefault ?? false,\n silent: options.silent ?? false,\n ...(options.inject === undefined ? {} : { inject: options.inject }),\n makePathsEnum: options.makePathsEnum ?? false,\n generatePathParams: options.generatePathParams ?? false,\n readWriteMarkers: options.readWriteMarkers ?? false,\n ...callbackOptions(options),\n };\n}\n\n/**\n * The fixes of the options, `all` expanded; fails with `OPTION_FIX_UNKNOWN` for another name.\n * A fix named without the option it needs is reported, since it changes nothing.\n */\nfunction outputFixesOf(options: GeneratorOptions, logger: Logger): readonly OutputFix[] {\n const names = outputFixNamesOf(options.fix ?? []);\n for (const notice of ineffectiveFixNotices(names, (option) => options[option] === true)) {\n logger.warn(notice);\n }\n return [...resolveOutputFixes(names)];\n}\n\n/** The warnings about the loaded document itself, before it is transformed. */\nfunction warnAboutDocument(schema: OpenAPI3, fix: readonly OutputFix[], logger: Logger): void {\n withStackOverflowReported(\"transform\", () => warnUnsupportedFeatures(schema, logger));\n withStackOverflowReported(\"transform\", () =>\n warnDiscriminatorValueConflicts(schema, fix, logger),\n );\n warnIdenticalPathTemplates(schema, logger);\n}\n\n/**\n * Load the source through the ports, then build the run's context from the options. The fix names\n * are checked first, so a typo fails before the document is read.\n */\nexport async function createDocumentRun(\n source: SchemaSource,\n options: GeneratorOptions,\n ports: GeneratorPorts,\n): Promise<DocumentRun> {\n if (!source) {\n throw sourceEmptyError(\"Empty schema. Please specify a URL, file path, or Redocly Config\");\n }\n const { logger } = ports;\n const fix = outputFixesOf(options, logger);\n const silent = options.silent ?? false;\n const cwd = sourceCwd(options);\n const schema = await ports.loader.load({\n source,\n cwd,\n shouldLint: options.lint ?? true,\n refAccess: refAccessOf(options, cwd),\n });\n warnAboutDocument(schema, fix, logger);\n const ctx: GlobalContext = {\n ...contextFlags(options),\n fix,\n // The scan walks every schema before the transform does, so on a larger stack, where loading\n // passed, it is the first step to run out.\n discriminators: withStackOverflowReported(\"transform\", () =>\n findDiscriminators(schema, {\n silent,\n logger,\n fixes: new Set(fix),\n }),\n ),\n injectFooter: [],\n redoc: ports.redoc,\n resolve: ($ref) => resolveDocumentRef(schema, $ref, { silent, logger }),\n logger,\n };\n return { schema, ctx };\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ const warnings = require('../domain/warnings.cjs');
4
+
5
+ const DOCS_BASE_URL = "https://github.com/openapi-typesafe/openapi-typesafe/blob/main/docs";
6
+ const DOCS_URL = `${DOCS_BASE_URL}/advanced.md#enum-values-arrays`;
7
+ function excludedValuesWarning(name, excluded) {
8
+ const values = excluded.map((value) => JSON.stringify(value)).join(", ");
9
+ return warnings.warningText(
10
+ `${name}: the generated type at the location of this enum does not admit ${values}; other keywords of the document exclude these values (an allOf of enums with other values, or a discriminator value the enum does not list). The array is typed by its own values. See ${DOCS_URL}`,
11
+ warnings.WARNING_CODES.ENUM_VALUES_EXCLUDED
12
+ );
13
+ }
14
+
15
+ exports.excludedValuesWarning = excludedValuesWarning;
16
+ //# sourceMappingURL=enum-values-warnings.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enum-values-warnings.cjs","sources":["../../src/api/enum-values-warnings.ts"],"sourcesContent":["import { WARNING_CODES, warningText } from \"../domain/warnings.js\";\n\nconst DOCS_BASE_URL = \"https://github.com/openapi-typesafe/openapi-typesafe/blob/main/docs\";\nconst DOCS_URL = `${DOCS_BASE_URL}/advanced.md#enum-values-arrays`;\n\n/**\n * The warning for an `--enum-values` array whose schema's location in the generated types admits\n * none or only some of its values (ADR-027): the schema contradicts itself, for example an `allOf`\n * of enums with different values or a discriminator value that the property enum does not list.\n */\nexport function excludedValuesWarning(name: string, excluded: readonly unknown[]): string {\n const values = excluded.map((value) => JSON.stringify(value)).join(\", \");\n return warningText(\n `${name}: the generated type at the location of this enum does not admit ${values}; ` +\n \"other keywords of the document exclude these values (an allOf of enums with other \" +\n \"values, or a discriminator value the enum does not list). The array is typed by its own \" +\n \"values. \" +\n `See ${DOCS_URL}`,\n WARNING_CODES.ENUM_VALUES_EXCLUDED,\n );\n}\n"],"names":["warningText","WARNING_CODES"],"mappings":";;;;AAEA,MAAM,aAAA,GAAgB,qEAAA;AACtB,MAAM,QAAA,GAAW,GAAG,aAAa,CAAA,+BAAA,CAAA;AAO1B,SAAS,qBAAA,CAAsB,MAAc,QAAA,EAAsC;AACxF,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,GAAA,CAAI,CAAC,KAAA,KAAU,IAAA,CAAK,SAAA,CAAU,KAAK,CAAC,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AACvE,EAAA,OAAOA,oBAAA;AAAA,IACL,CAAA,EAAG,IAAI,CAAA,iEAAA,EAAoE,MAAM,2LAIxE,QAAQ,CAAA,CAAA;AAAA,IACjBC,sBAAA,CAAc;AAAA,GAChB;AACF;;"}
@@ -0,0 +1,14 @@
1
+ import { warningText, WARNING_CODES } from '../domain/warnings.mjs';
2
+
3
+ const DOCS_BASE_URL = "https://github.com/openapi-typesafe/openapi-typesafe/blob/main/docs";
4
+ const DOCS_URL = `${DOCS_BASE_URL}/advanced.md#enum-values-arrays`;
5
+ function excludedValuesWarning(name, excluded) {
6
+ const values = excluded.map((value) => JSON.stringify(value)).join(", ");
7
+ return warningText(
8
+ `${name}: the generated type at the location of this enum does not admit ${values}; other keywords of the document exclude these values (an allOf of enums with other values, or a discriminator value the enum does not list). The array is typed by its own values. See ${DOCS_URL}`,
9
+ WARNING_CODES.ENUM_VALUES_EXCLUDED
10
+ );
11
+ }
12
+
13
+ export { excludedValuesWarning };
14
+ //# sourceMappingURL=enum-values-warnings.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enum-values-warnings.mjs","sources":["../../src/api/enum-values-warnings.ts"],"sourcesContent":["import { WARNING_CODES, warningText } from \"../domain/warnings.js\";\n\nconst DOCS_BASE_URL = \"https://github.com/openapi-typesafe/openapi-typesafe/blob/main/docs\";\nconst DOCS_URL = `${DOCS_BASE_URL}/advanced.md#enum-values-arrays`;\n\n/**\n * The warning for an `--enum-values` array whose schema's location in the generated types admits\n * none or only some of its values (ADR-027): the schema contradicts itself, for example an `allOf`\n * of enums with different values or a discriminator value that the property enum does not list.\n */\nexport function excludedValuesWarning(name: string, excluded: readonly unknown[]): string {\n const values = excluded.map((value) => JSON.stringify(value)).join(\", \");\n return warningText(\n `${name}: the generated type at the location of this enum does not admit ${values}; ` +\n \"other keywords of the document exclude these values (an allOf of enums with other \" +\n \"values, or a discriminator value the enum does not list). The array is typed by its own \" +\n \"values. \" +\n `See ${DOCS_URL}`,\n WARNING_CODES.ENUM_VALUES_EXCLUDED,\n );\n}\n"],"names":[],"mappings":";;AAEA,MAAM,aAAA,GAAgB,qEAAA;AACtB,MAAM,QAAA,GAAW,GAAG,aAAa,CAAA,+BAAA,CAAA;AAO1B,SAAS,qBAAA,CAAsB,MAAc,QAAA,EAAsC;AACxF,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,GAAA,CAAI,CAAC,KAAA,KAAU,IAAA,CAAK,SAAA,CAAU,KAAK,CAAC,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AACvE,EAAA,OAAO,WAAA;AAAA,IACL,CAAA,EAAG,IAAI,CAAA,iEAAA,EAAoE,MAAM,2LAIxE,QAAQ,CAAA,CAAA;AAAA,IACjB,aAAA,CAAc;AAAA,GAChB;AACF;;"}
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ const footerNodes = require('../adapters/type-ast-bridge/footer-nodes.cjs');
4
+ const loadTypescript = require('../adapters/type-ast-bridge/load-typescript.cjs');
5
+
6
+ function isIrDeclaration(entry) {
7
+ return typeof entry.kind === "string";
8
+ }
9
+ function declaresTypeAlias(entry, name) {
10
+ if (!isIrDeclaration(entry)) {
11
+ return footerNodes.isTypeAliasNamed(loadTypescript.loadTypeScript(), entry, name);
12
+ }
13
+ return (entry.kind === "typeAlias" || entry.kind === "rawDeclaration") && entry.name === name;
14
+ }
15
+
16
+ exports.declaresTypeAlias = declaresTypeAlias;
17
+ exports.isIrDeclaration = isIrDeclaration;
18
+ //# sourceMappingURL=footer-entry.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"footer-entry.cjs","sources":["../../src/api/footer-entry.ts"],"sourcesContent":["import { isTypeAliasNamed } from \"../adapters/type-ast-bridge/footer-nodes.js\";\nimport { loadTypeScript } from \"../adapters/type-ast-bridge/load-typescript.js\";\nimport type { ts } from \"../adapters/type-ast-bridge/typescript-types.js\";\nimport type { IrDeclaration } from \"../domain/ir/nodes.js\";\n\n/** A footer entry: a declaration in IR, or a TypeScript node added by user code. */\nexport type FooterEntry = IrDeclaration | ts.Node;\n\n/** IR nodes have a string `kind`; TypeScript nodes have a numeric `SyntaxKind`. */\nexport function isIrDeclaration(entry: FooterEntry): entry is IrDeclaration {\n return typeof entry.kind === \"string\";\n}\n\n/**\n * Whether the entry declares a type alias with this name: an IR type alias, a named raw\n * declaration (the helper types), or a user's TypeScript type alias. Helpers are added once.\n */\nexport function declaresTypeAlias(entry: FooterEntry, name: string): boolean {\n if (!isIrDeclaration(entry)) {\n return isTypeAliasNamed(loadTypeScript(), entry, name);\n }\n return (entry.kind === \"typeAlias\" || entry.kind === \"rawDeclaration\") && entry.name === name;\n}\n"],"names":["isTypeAliasNamed","loadTypeScript"],"mappings":";;;;;AASO,SAAS,gBAAgB,KAAA,EAA4C;AAC1E,EAAA,OAAO,OAAO,MAAM,IAAA,KAAS,QAAA;AAC/B;AAMO,SAAS,iBAAA,CAAkB,OAAoB,IAAA,EAAuB;AAC3E,EAAA,IAAI,CAAC,eAAA,CAAgB,KAAK,CAAA,EAAG;AAC3B,IAAA,OAAOA,4BAAA,CAAiBC,6BAAA,EAAe,EAAG,KAAA,EAAO,IAAI,CAAA;AAAA,EACvD;AACA,EAAA,OAAA,CAAQ,MAAM,IAAA,KAAS,WAAA,IAAe,MAAM,IAAA,KAAS,gBAAA,KAAqB,MAAM,IAAA,KAAS,IAAA;AAC3F;;;"}
@@ -0,0 +1,15 @@
1
+ import { isTypeAliasNamed } from '../adapters/type-ast-bridge/footer-nodes.mjs';
2
+ import { loadTypeScript } from '../adapters/type-ast-bridge/load-typescript.mjs';
3
+
4
+ function isIrDeclaration(entry) {
5
+ return typeof entry.kind === "string";
6
+ }
7
+ function declaresTypeAlias(entry, name) {
8
+ if (!isIrDeclaration(entry)) {
9
+ return isTypeAliasNamed(loadTypeScript(), entry, name);
10
+ }
11
+ return (entry.kind === "typeAlias" || entry.kind === "rawDeclaration") && entry.name === name;
12
+ }
13
+
14
+ export { declaresTypeAlias, isIrDeclaration };
15
+ //# sourceMappingURL=footer-entry.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"footer-entry.mjs","sources":["../../src/api/footer-entry.ts"],"sourcesContent":["import { isTypeAliasNamed } from \"../adapters/type-ast-bridge/footer-nodes.js\";\nimport { loadTypeScript } from \"../adapters/type-ast-bridge/load-typescript.js\";\nimport type { ts } from \"../adapters/type-ast-bridge/typescript-types.js\";\nimport type { IrDeclaration } from \"../domain/ir/nodes.js\";\n\n/** A footer entry: a declaration in IR, or a TypeScript node added by user code. */\nexport type FooterEntry = IrDeclaration | ts.Node;\n\n/** IR nodes have a string `kind`; TypeScript nodes have a numeric `SyntaxKind`. */\nexport function isIrDeclaration(entry: FooterEntry): entry is IrDeclaration {\n return typeof entry.kind === \"string\";\n}\n\n/**\n * Whether the entry declares a type alias with this name: an IR type alias, a named raw\n * declaration (the helper types), or a user's TypeScript type alias. Helpers are added once.\n */\nexport function declaresTypeAlias(entry: FooterEntry, name: string): boolean {\n if (!isIrDeclaration(entry)) {\n return isTypeAliasNamed(loadTypeScript(), entry, name);\n }\n return (entry.kind === \"typeAlias\" || entry.kind === \"rawDeclaration\") && entry.name === name;\n}\n"],"names":[],"mappings":";;;AASO,SAAS,gBAAgB,KAAA,EAA4C;AAC1E,EAAA,OAAO,OAAO,MAAM,IAAA,KAAS,QAAA;AAC/B;AAMO,SAAS,iBAAA,CAAkB,OAAoB,IAAA,EAAuB;AAC3E,EAAA,IAAI,CAAC,eAAA,CAAgB,KAAK,CAAA,EAAG;AAC3B,IAAA,OAAO,gBAAA,CAAiB,cAAA,EAAe,EAAG,KAAA,EAAO,IAAI,CAAA;AAAA,EACvD;AACA,EAAA,OAAA,CAAQ,MAAM,IAAA,KAAS,WAAA,IAAe,MAAM,IAAA,KAAS,gBAAA,KAAqB,MAAM,IAAA,KAAS,IAAA;AAC3F;;"}
@@ -0,0 +1,53 @@
1
+ 'use strict';
2
+
3
+ const footerNodes = require('../adapters/type-ast-bridge/footer-nodes.cjs');
4
+ const loadTypescript = require('../adapters/type-ast-bridge/load-typescript.cjs');
5
+ const footerEntry = require('./footer-entry.cjs');
6
+
7
+ const OPERATIONS_NAME = "operations";
8
+ class ContextFooterSink {
9
+ footer;
10
+ constructor(footer) {
11
+ this.footer = footer;
12
+ }
13
+ hasTypeAlias(name) {
14
+ return this.footer.some((entry) => footerEntry.declaresTypeAlias(entry, name));
15
+ }
16
+ add(declaration) {
17
+ this.footer.push(declaration);
18
+ }
19
+ /**
20
+ * Add a member to the `operations` interface, declared first (exported) when missing, so it
21
+ * comes before any declaration `build` adds. A user's TypeScript `operations` interface gets
22
+ * the member in place, as in the original.
23
+ */
24
+ addOperation(build) {
25
+ const existing = this.findOperations();
26
+ if (existing !== null && !footerEntry.isIrDeclaration(existing.entry)) {
27
+ const ts = loadTypescript.loadTypeScript();
28
+ const node = footerNodes.asInterfaceNamed(ts, existing.entry, OPERATIONS_NAME);
29
+ if (node) {
30
+ footerNodes.appendMember(ts, node, build());
31
+ }
32
+ return;
33
+ }
34
+ const index = existing?.index ?? this.footer.push(emptyOperations()) - 1;
35
+ const member = build();
36
+ const operations = this.footer[index];
37
+ this.footer[index] = { ...operations, members: [...operations.members, member] };
38
+ }
39
+ /** The first `operations` interface: the generator's (IR) or a user's (TypeScript). */
40
+ findOperations() {
41
+ const index = this.footer.findIndex(
42
+ (entry2) => footerEntry.isIrDeclaration(entry2) ? entry2.kind === "interface" && entry2.name === OPERATIONS_NAME : footerNodes.asInterfaceNamed(loadTypescript.loadTypeScript(), entry2, OPERATIONS_NAME) !== null
43
+ );
44
+ const entry = this.footer[index];
45
+ return entry === void 0 ? null : { entry, index };
46
+ }
47
+ }
48
+ function emptyOperations() {
49
+ return { kind: "interface", name: OPERATIONS_NAME, isExported: true, members: [], comments: [] };
50
+ }
51
+
52
+ exports.ContextFooterSink = ContextFooterSink;
53
+ //# sourceMappingURL=footer-sink.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"footer-sink.cjs","sources":["../../src/api/footer-sink.ts"],"sourcesContent":["import { appendMember, asInterfaceNamed } from \"../adapters/type-ast-bridge/footer-nodes.js\";\nimport { loadTypeScript } from \"../adapters/type-ast-bridge/load-typescript.js\";\nimport type { FooterSink } from \"../application/transform/footer/document-footer.js\";\nimport type {\n IrDeclaration,\n IrInterfaceDeclaration,\n IrPropertySignature,\n} from \"../domain/ir/nodes.js\";\nimport { declaresTypeAlias, type FooterEntry, isIrDeclaration } from \"./footer-entry.js\";\n\nconst OPERATIONS_NAME = \"operations\";\n\n/**\n * The footer of a run is its `ctx.injectFooter` list. The generator adds IR declarations; user\n * code may add IR declarations or TypeScript nodes (ENGINEERING_PLAN 6.2).\n */\nexport class ContextFooterSink implements FooterSink {\n private readonly footer: FooterEntry[];\n\n constructor(footer: FooterEntry[]) {\n this.footer = footer;\n }\n\n hasTypeAlias(name: string): boolean {\n return this.footer.some((entry) => declaresTypeAlias(entry, name));\n }\n\n add(declaration: IrDeclaration): void {\n this.footer.push(declaration);\n }\n\n /**\n * Add a member to the `operations` interface, declared first (exported) when missing, so it\n * comes before any declaration `build` adds. A user's TypeScript `operations` interface gets\n * the member in place, as in the original.\n */\n addOperation(build: () => IrPropertySignature): void {\n const existing = this.findOperations();\n if (existing !== null && !isIrDeclaration(existing.entry)) {\n const ts = loadTypeScript();\n const node = asInterfaceNamed(ts, existing.entry, OPERATIONS_NAME);\n if (node) {\n appendMember(ts, node, build());\n }\n return;\n }\n const index = existing?.index ?? this.footer.push(emptyOperations()) - 1;\n const member = build();\n const operations = this.footer[index] as IrInterfaceDeclaration;\n this.footer[index] = { ...operations, members: [...operations.members, member] };\n }\n\n /** The first `operations` interface: the generator's (IR) or a user's (TypeScript). */\n private findOperations(): { entry: FooterEntry; index: number } | null {\n const index = this.footer.findIndex((entry) =>\n isIrDeclaration(entry)\n ? entry.kind === \"interface\" && entry.name === OPERATIONS_NAME\n : asInterfaceNamed(loadTypeScript(), entry, OPERATIONS_NAME) !== null,\n );\n const entry = this.footer[index];\n return entry === undefined ? null : { entry, index };\n }\n}\n\nfunction emptyOperations(): IrInterfaceDeclaration {\n return { kind: \"interface\", name: OPERATIONS_NAME, isExported: true, members: [], comments: [] };\n}\n"],"names":["declaresTypeAlias","isIrDeclaration","loadTypeScript","asInterfaceNamed","appendMember","entry"],"mappings":";;;;;;AAUA,MAAM,eAAA,GAAkB,YAAA;AAMjB,MAAM,iBAAA,CAAwC;AAAA,EAClC,MAAA;AAAA,EAEjB,YAAY,MAAA,EAAuB;AACjC,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAAA,EAChB;AAAA,EAEA,aAAa,IAAA,EAAuB;AAClC,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAK,CAAC,UAAUA,6BAAA,CAAkB,KAAA,EAAO,IAAI,CAAC,CAAA;AAAA,EACnE;AAAA,EAEA,IAAI,WAAA,EAAkC;AACpC,IAAA,IAAA,CAAK,MAAA,CAAO,KAAK,WAAW,CAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAa,KAAA,EAAwC;AACnD,IAAA,MAAM,QAAA,GAAW,KAAK,cAAA,EAAe;AACrC,IAAA,IAAI,aAAa,IAAA,IAAQ,CAACC,2BAAA,CAAgB,QAAA,CAAS,KAAK,CAAA,EAAG;AACzD,MAAA,MAAM,KAAKC,6BAAA,EAAe;AAC1B,MAAA,MAAM,IAAA,GAAOC,4BAAA,CAAiB,EAAA,EAAI,QAAA,CAAS,OAAO,eAAe,CAAA;AACjE,MAAA,IAAI,IAAA,EAAM;AACR,QAAAC,wBAAA,CAAa,EAAA,EAAI,IAAA,EAAM,KAAA,EAAO,CAAA;AAAA,MAChC;AACA,MAAA;AAAA,IACF;AACA,IAAA,MAAM,KAAA,GAAQ,UAAU,KAAA,IAAS,IAAA,CAAK,OAAO,IAAA,CAAK,eAAA,EAAiB,CAAA,GAAI,CAAA;AACvE,IAAA,MAAM,SAAS,KAAA,EAAM;AACrB,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA;AACpC,IAAA,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA,GAAI,EAAE,GAAG,UAAA,EAAY,OAAA,EAAS,CAAC,GAAG,UAAA,CAAW,OAAA,EAAS,MAAM,CAAA,EAAE;AAAA,EACjF;AAAA;AAAA,EAGQ,cAAA,GAA+D;AACrE,IAAA,MAAM,KAAA,GAAQ,KAAK,MAAA,CAAO,SAAA;AAAA,MAAU,CAACC,MAAAA,KACnCJ,2BAAA,CAAgBI,MAAK,CAAA,GACjBA,OAAM,IAAA,KAAS,WAAA,IAAeA,MAAAA,CAAM,IAAA,KAAS,kBAC7CF,4BAAA,CAAiBD,6BAAA,EAAe,EAAGG,MAAAA,EAAO,eAAe,CAAA,KAAM;AAAA,KACrE;AACA,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA;AAC/B,IAAA,OAAO,KAAA,KAAU,MAAA,GAAY,IAAA,GAAO,EAAE,OAAO,KAAA,EAAM;AAAA,EACrD;AACF;AAEA,SAAS,eAAA,GAA0C;AACjD,EAAA,OAAO,EAAE,IAAA,EAAM,WAAA,EAAa,IAAA,EAAM,eAAA,EAAiB,UAAA,EAAY,IAAA,EAAM,OAAA,EAAS,EAAC,EAAG,QAAA,EAAU,EAAC,EAAE;AACjG;;"}
@@ -0,0 +1,51 @@
1
+ import { asInterfaceNamed, appendMember } from '../adapters/type-ast-bridge/footer-nodes.mjs';
2
+ import { loadTypeScript } from '../adapters/type-ast-bridge/load-typescript.mjs';
3
+ import { declaresTypeAlias, isIrDeclaration } from './footer-entry.mjs';
4
+
5
+ const OPERATIONS_NAME = "operations";
6
+ class ContextFooterSink {
7
+ footer;
8
+ constructor(footer) {
9
+ this.footer = footer;
10
+ }
11
+ hasTypeAlias(name) {
12
+ return this.footer.some((entry) => declaresTypeAlias(entry, name));
13
+ }
14
+ add(declaration) {
15
+ this.footer.push(declaration);
16
+ }
17
+ /**
18
+ * Add a member to the `operations` interface, declared first (exported) when missing, so it
19
+ * comes before any declaration `build` adds. A user's TypeScript `operations` interface gets
20
+ * the member in place, as in the original.
21
+ */
22
+ addOperation(build) {
23
+ const existing = this.findOperations();
24
+ if (existing !== null && !isIrDeclaration(existing.entry)) {
25
+ const ts = loadTypeScript();
26
+ const node = asInterfaceNamed(ts, existing.entry, OPERATIONS_NAME);
27
+ if (node) {
28
+ appendMember(ts, node, build());
29
+ }
30
+ return;
31
+ }
32
+ const index = existing?.index ?? this.footer.push(emptyOperations()) - 1;
33
+ const member = build();
34
+ const operations = this.footer[index];
35
+ this.footer[index] = { ...operations, members: [...operations.members, member] };
36
+ }
37
+ /** The first `operations` interface: the generator's (IR) or a user's (TypeScript). */
38
+ findOperations() {
39
+ const index = this.footer.findIndex(
40
+ (entry2) => isIrDeclaration(entry2) ? entry2.kind === "interface" && entry2.name === OPERATIONS_NAME : asInterfaceNamed(loadTypeScript(), entry2, OPERATIONS_NAME) !== null
41
+ );
42
+ const entry = this.footer[index];
43
+ return entry === void 0 ? null : { entry, index };
44
+ }
45
+ }
46
+ function emptyOperations() {
47
+ return { kind: "interface", name: OPERATIONS_NAME, isExported: true, members: [], comments: [] };
48
+ }
49
+
50
+ export { ContextFooterSink };
51
+ //# sourceMappingURL=footer-sink.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"footer-sink.mjs","sources":["../../src/api/footer-sink.ts"],"sourcesContent":["import { appendMember, asInterfaceNamed } from \"../adapters/type-ast-bridge/footer-nodes.js\";\nimport { loadTypeScript } from \"../adapters/type-ast-bridge/load-typescript.js\";\nimport type { FooterSink } from \"../application/transform/footer/document-footer.js\";\nimport type {\n IrDeclaration,\n IrInterfaceDeclaration,\n IrPropertySignature,\n} from \"../domain/ir/nodes.js\";\nimport { declaresTypeAlias, type FooterEntry, isIrDeclaration } from \"./footer-entry.js\";\n\nconst OPERATIONS_NAME = \"operations\";\n\n/**\n * The footer of a run is its `ctx.injectFooter` list. The generator adds IR declarations; user\n * code may add IR declarations or TypeScript nodes (ENGINEERING_PLAN 6.2).\n */\nexport class ContextFooterSink implements FooterSink {\n private readonly footer: FooterEntry[];\n\n constructor(footer: FooterEntry[]) {\n this.footer = footer;\n }\n\n hasTypeAlias(name: string): boolean {\n return this.footer.some((entry) => declaresTypeAlias(entry, name));\n }\n\n add(declaration: IrDeclaration): void {\n this.footer.push(declaration);\n }\n\n /**\n * Add a member to the `operations` interface, declared first (exported) when missing, so it\n * comes before any declaration `build` adds. A user's TypeScript `operations` interface gets\n * the member in place, as in the original.\n */\n addOperation(build: () => IrPropertySignature): void {\n const existing = this.findOperations();\n if (existing !== null && !isIrDeclaration(existing.entry)) {\n const ts = loadTypeScript();\n const node = asInterfaceNamed(ts, existing.entry, OPERATIONS_NAME);\n if (node) {\n appendMember(ts, node, build());\n }\n return;\n }\n const index = existing?.index ?? this.footer.push(emptyOperations()) - 1;\n const member = build();\n const operations = this.footer[index] as IrInterfaceDeclaration;\n this.footer[index] = { ...operations, members: [...operations.members, member] };\n }\n\n /** The first `operations` interface: the generator's (IR) or a user's (TypeScript). */\n private findOperations(): { entry: FooterEntry; index: number } | null {\n const index = this.footer.findIndex((entry) =>\n isIrDeclaration(entry)\n ? entry.kind === \"interface\" && entry.name === OPERATIONS_NAME\n : asInterfaceNamed(loadTypeScript(), entry, OPERATIONS_NAME) !== null,\n );\n const entry = this.footer[index];\n return entry === undefined ? null : { entry, index };\n }\n}\n\nfunction emptyOperations(): IrInterfaceDeclaration {\n return { kind: \"interface\", name: OPERATIONS_NAME, isExported: true, members: [], comments: [] };\n}\n"],"names":["entry"],"mappings":";;;;AAUA,MAAM,eAAA,GAAkB,YAAA;AAMjB,MAAM,iBAAA,CAAwC;AAAA,EAClC,MAAA;AAAA,EAEjB,YAAY,MAAA,EAAuB;AACjC,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAAA,EAChB;AAAA,EAEA,aAAa,IAAA,EAAuB;AAClC,IAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAK,CAAC,UAAU,iBAAA,CAAkB,KAAA,EAAO,IAAI,CAAC,CAAA;AAAA,EACnE;AAAA,EAEA,IAAI,WAAA,EAAkC;AACpC,IAAA,IAAA,CAAK,MAAA,CAAO,KAAK,WAAW,CAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAa,KAAA,EAAwC;AACnD,IAAA,MAAM,QAAA,GAAW,KAAK,cAAA,EAAe;AACrC,IAAA,IAAI,aAAa,IAAA,IAAQ,CAAC,eAAA,CAAgB,QAAA,CAAS,KAAK,CAAA,EAAG;AACzD,MAAA,MAAM,KAAK,cAAA,EAAe;AAC1B,MAAA,MAAM,IAAA,GAAO,gBAAA,CAAiB,EAAA,EAAI,QAAA,CAAS,OAAO,eAAe,CAAA;AACjE,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,YAAA,CAAa,EAAA,EAAI,IAAA,EAAM,KAAA,EAAO,CAAA;AAAA,MAChC;AACA,MAAA;AAAA,IACF;AACA,IAAA,MAAM,KAAA,GAAQ,UAAU,KAAA,IAAS,IAAA,CAAK,OAAO,IAAA,CAAK,eAAA,EAAiB,CAAA,GAAI,CAAA;AACvE,IAAA,MAAM,SAAS,KAAA,EAAM;AACrB,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA;AACpC,IAAA,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA,GAAI,EAAE,GAAG,UAAA,EAAY,OAAA,EAAS,CAAC,GAAG,UAAA,CAAW,OAAA,EAAS,MAAM,CAAA,EAAE;AAAA,EACjF;AAAA;AAAA,EAGQ,cAAA,GAA+D;AACrE,IAAA,MAAM,KAAA,GAAQ,KAAK,MAAA,CAAO,SAAA;AAAA,MAAU,CAACA,MAAAA,KACnC,eAAA,CAAgBA,MAAK,CAAA,GACjBA,OAAM,IAAA,KAAS,WAAA,IAAeA,MAAAA,CAAM,IAAA,KAAS,kBAC7C,gBAAA,CAAiB,cAAA,EAAe,EAAGA,MAAAA,EAAO,eAAe,CAAA,KAAM;AAAA,KACrE;AACA,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA;AAC/B,IAAA,OAAO,KAAA,KAAU,MAAA,GAAY,IAAA,GAAO,EAAE,OAAO,KAAA,EAAM;AAAA,EACrD;AACF;AAEA,SAAS,eAAA,GAA0C;AACjD,EAAA,OAAO,EAAE,IAAA,EAAM,WAAA,EAAa,IAAA,EAAM,eAAA,EAAiB,UAAA,EAAY,IAAA,EAAM,OAAA,EAAS,EAAC,EAAG,QAAA,EAAU,EAAC,EAAE;AACjG;;"}
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ const defaultPorts = require('./default-ports.cjs');
4
+
5
+ const IR_CALLBACKS_GUIDE_URL = "https://github.com/openapi-typesafe/openapi-typesafe/blob/main/docs/node.md#ir-callbacks";
6
+ const USES = {
7
+ transform: "`transform` returned a TypeScript node",
8
+ postTransform: "`postTransform` receives TypeScript nodes",
9
+ transformProperty: "`transformProperty` receives TypeScript nodes"
10
+ };
11
+ function message(name) {
12
+ return `${USES[name]}. This form works in 1.x through the TypeScript bridge and is removed in 2.0. Use irCallbacks: true and return IR or type text instead: ${IR_CALLBACKS_GUIDE_URL}`;
13
+ }
14
+ function warnLegacyCallback(ctx, name) {
15
+ ctx.legacyCallbackWarnings ??= /* @__PURE__ */ new Set();
16
+ if (ctx.legacyCallbackWarnings.has(name)) {
17
+ return;
18
+ }
19
+ ctx.legacyCallbackWarnings.add(name);
20
+ (ctx.logger ?? defaultPorts.defaultLogger(ctx.silent)).warn(message(name));
21
+ }
22
+
23
+ exports.IR_CALLBACKS_GUIDE_URL = IR_CALLBACKS_GUIDE_URL;
24
+ exports.warnLegacyCallback = warnLegacyCallback;
25
+ //# sourceMappingURL=legacy-callback-warning.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-callback-warning.cjs","sources":["../../src/api/legacy-callback-warning.ts"],"sourcesContent":["import type { GlobalContext, LegacyCallbackName } from \"../types.js\";\nimport { defaultLogger } from \"./default-ports.js\";\n\n/** Where the IR callbacks are documented; the warning points users there. */\nexport const IR_CALLBACKS_GUIDE_URL =\n \"https://github.com/openapi-typesafe/openapi-typesafe/blob/main/docs/node.md#ir-callbacks\";\n\nconst USES: Readonly<Record<LegacyCallbackName, string>> = {\n transform: \"`transform` returned a TypeScript node\",\n postTransform: \"`postTransform` receives TypeScript nodes\",\n transformProperty: \"`transformProperty` receives TypeScript nodes\",\n};\n\nfunction message(name: LegacyCallbackName): string {\n return (\n `${USES[name]}. This form works in 1.x through the TypeScript bridge and is removed in 2.0. ` +\n `Use irCallbacks: true and return IR or type text instead: ${IR_CALLBACKS_GUIDE_URL}`\n );\n}\n\n/** Warn once per run and callback; `silent` runs record the use but print nothing. */\nexport function warnLegacyCallback(ctx: GlobalContext, name: LegacyCallbackName): void {\n ctx.legacyCallbackWarnings ??= new Set();\n if (ctx.legacyCallbackWarnings.has(name)) {\n return;\n }\n ctx.legacyCallbackWarnings.add(name);\n (ctx.logger ?? defaultLogger(ctx.silent)).warn(message(name));\n}\n"],"names":["defaultLogger"],"mappings":";;;;AAIO,MAAM,sBAAA,GACX;AAEF,MAAM,IAAA,GAAqD;AAAA,EACzD,SAAA,EAAW,wCAAA;AAAA,EACX,aAAA,EAAe,2CAAA;AAAA,EACf,iBAAA,EAAmB;AACrB,CAAA;AAEA,SAAS,QAAQ,IAAA,EAAkC;AACjD,EAAA,OACE,CAAA,EAAG,IAAA,CAAK,IAAI,CAAC,2IACgD,sBAAsB,CAAA,CAAA;AAEvF;AAGO,SAAS,kBAAA,CAAmB,KAAoB,IAAA,EAAgC;AACrF,EAAA,GAAA,CAAI,sBAAA,yBAA+B,GAAA,EAAI;AACvC,EAAA,IAAI,GAAA,CAAI,sBAAA,CAAuB,GAAA,CAAI,IAAI,CAAA,EAAG;AACxC,IAAA;AAAA,EACF;AACA,EAAA,GAAA,CAAI,sBAAA,CAAuB,IAAI,IAAI,CAAA;AACnC,EAAA,CAAC,GAAA,CAAI,UAAUA,0BAAA,CAAc,GAAA,CAAI,MAAM,CAAA,EAAG,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAC,CAAA;AAC9D;;;"}
@@ -0,0 +1,22 @@
1
+ import { defaultLogger } from './default-ports.mjs';
2
+
3
+ const IR_CALLBACKS_GUIDE_URL = "https://github.com/openapi-typesafe/openapi-typesafe/blob/main/docs/node.md#ir-callbacks";
4
+ const USES = {
5
+ transform: "`transform` returned a TypeScript node",
6
+ postTransform: "`postTransform` receives TypeScript nodes",
7
+ transformProperty: "`transformProperty` receives TypeScript nodes"
8
+ };
9
+ function message(name) {
10
+ return `${USES[name]}. This form works in 1.x through the TypeScript bridge and is removed in 2.0. Use irCallbacks: true and return IR or type text instead: ${IR_CALLBACKS_GUIDE_URL}`;
11
+ }
12
+ function warnLegacyCallback(ctx, name) {
13
+ ctx.legacyCallbackWarnings ??= /* @__PURE__ */ new Set();
14
+ if (ctx.legacyCallbackWarnings.has(name)) {
15
+ return;
16
+ }
17
+ ctx.legacyCallbackWarnings.add(name);
18
+ (ctx.logger ?? defaultLogger(ctx.silent)).warn(message(name));
19
+ }
20
+
21
+ export { IR_CALLBACKS_GUIDE_URL, warnLegacyCallback };
22
+ //# sourceMappingURL=legacy-callback-warning.mjs.map