openapi-typesafe 0.0.0 → 1.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (678) 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 +42 -0
  25. package/dist/adapters/redocly-loader/redocly-config-source.cjs.map +1 -0
  26. package/dist/adapters/redocly-loader/redocly-config-source.mjs +35 -0
  27. package/dist/adapters/redocly-loader/redocly-config-source.mjs.map +1 -0
  28. package/dist/adapters/redocly-loader/redocly-schema-loader.cjs +169 -0
  29. package/dist/adapters/redocly-loader/redocly-schema-loader.cjs.map +1 -0
  30. package/dist/adapters/redocly-loader/redocly-schema-loader.mjs +167 -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 +145 -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 +139 -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 +204 -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 +201 -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-enum.cjs +44 -0
  105. package/dist/api/discriminator-enum.cjs.map +1 -0
  106. package/dist/api/discriminator-enum.mjs +42 -0
  107. package/dist/api/discriminator-enum.mjs.map +1 -0
  108. package/dist/api/discriminator-scan.cjs +168 -0
  109. package/dist/api/discriminator-scan.cjs.map +1 -0
  110. package/dist/api/discriminator-scan.mjs +165 -0
  111. package/dist/api/discriminator-scan.mjs.map +1 -0
  112. package/dist/api/document-declarations.cjs +28 -0
  113. package/dist/api/document-declarations.cjs.map +1 -0
  114. package/dist/api/document-declarations.mjs +26 -0
  115. package/dist/api/document-declarations.mjs.map +1 -0
  116. package/dist/api/document-refs.cjs +53 -0
  117. package/dist/api/document-refs.cjs.map +1 -0
  118. package/dist/api/document-refs.mjs +50 -0
  119. package/dist/api/document-refs.mjs.map +1 -0
  120. package/dist/api/document-run.cjs +107 -0
  121. package/dist/api/document-run.cjs.map +1 -0
  122. package/dist/api/document-run.mjs +101 -0
  123. package/dist/api/document-run.mjs.map +1 -0
  124. package/dist/api/footer-entry.cjs +18 -0
  125. package/dist/api/footer-entry.cjs.map +1 -0
  126. package/dist/api/footer-entry.mjs +15 -0
  127. package/dist/api/footer-entry.mjs.map +1 -0
  128. package/dist/api/footer-sink.cjs +53 -0
  129. package/dist/api/footer-sink.cjs.map +1 -0
  130. package/dist/api/footer-sink.mjs +51 -0
  131. package/dist/api/footer-sink.mjs.map +1 -0
  132. package/dist/api/legacy-callback-warning.cjs +25 -0
  133. package/dist/api/legacy-callback-warning.cjs.map +1 -0
  134. package/dist/api/legacy-callback-warning.mjs +22 -0
  135. package/dist/api/legacy-callback-warning.mjs.map +1 -0
  136. package/dist/api/legacy-ts-helpers.cjs +203 -0
  137. package/dist/api/legacy-ts-helpers.cjs.map +1 -0
  138. package/dist/api/legacy-ts-helpers.mjs +187 -0
  139. package/dist/api/legacy-ts-helpers.mjs.map +1 -0
  140. package/dist/api/legacy-utils.cjs +65 -0
  141. package/dist/api/legacy-utils.cjs.map +1 -0
  142. package/dist/api/legacy-utils.mjs +50 -0
  143. package/dist/api/legacy-utils.mjs.map +1 -0
  144. package/dist/api/openapi-ts.cjs +40 -0
  145. package/dist/api/openapi-ts.cjs.map +1 -0
  146. package/dist/api/openapi-ts.mjs +34 -0
  147. package/dist/api/openapi-ts.mjs.map +1 -0
  148. package/dist/api/schema-callbacks.cjs +140 -0
  149. package/dist/api/schema-callbacks.cjs.map +1 -0
  150. package/dist/api/schema-callbacks.mjs +136 -0
  151. package/dist/api/schema-callbacks.mjs.map +1 -0
  152. package/dist/api/string-to-ast.cjs +21 -0
  153. package/dist/api/string-to-ast.cjs.map +1 -0
  154. package/dist/api/string-to-ast.mjs +18 -0
  155. package/dist/api/string-to-ast.mjs.map +1 -0
  156. package/dist/api/transform-context.cjs +82 -0
  157. package/dist/api/transform-context.cjs.map +1 -0
  158. package/dist/api/transform-context.mjs +65 -0
  159. package/dist/api/transform-context.mjs.map +1 -0
  160. package/dist/api/transform-schema.cjs +31 -0
  161. package/dist/api/transform-schema.cjs.map +1 -0
  162. package/dist/api/transform-schema.mjs +26 -0
  163. package/dist/api/transform-schema.mjs.map +1 -0
  164. package/dist/api/type-helpers.cjs +85 -0
  165. package/dist/api/type-helpers.cjs.map +1 -0
  166. package/dist/api/type-helpers.mjs +66 -0
  167. package/dist/api/type-helpers.mjs.map +1 -0
  168. package/dist/api/unsupported-feature-warnings.cjs +17 -0
  169. package/dist/api/unsupported-feature-warnings.cjs.map +1 -0
  170. package/dist/api/unsupported-feature-warnings.mjs +15 -0
  171. package/dist/api/unsupported-feature-warnings.mjs.map +1 -0
  172. package/dist/application/print/comment-writer.cjs +95 -0
  173. package/dist/application/print/comment-writer.cjs.map +1 -0
  174. package/dist/application/print/comment-writer.mjs +93 -0
  175. package/dist/application/print/comment-writer.mjs.map +1 -0
  176. package/dist/application/print/declaration-printer.cjs +83 -0
  177. package/dist/application/print/declaration-printer.cjs.map +1 -0
  178. package/dist/application/print/declaration-printer.mjs +81 -0
  179. package/dist/application/print/declaration-printer.mjs.map +1 -0
  180. package/dist/application/print/literal-text.cjs +52 -0
  181. package/dist/application/print/literal-text.cjs.map +1 -0
  182. package/dist/application/print/literal-text.mjs +48 -0
  183. package/dist/application/print/literal-text.mjs.map +1 -0
  184. package/dist/application/print/print-nodes.cjs +38 -0
  185. package/dist/application/print/print-nodes.cjs.map +1 -0
  186. package/dist/application/print/print-nodes.mjs +36 -0
  187. package/dist/application/print/print-nodes.mjs.map +1 -0
  188. package/dist/application/print/print-options.cjs +6 -0
  189. package/dist/application/print/print-options.cjs.map +1 -0
  190. package/dist/application/print/print-options.mjs +4 -0
  191. package/dist/application/print/print-options.mjs.map +1 -0
  192. package/dist/application/print/text-writer.cjs +63 -0
  193. package/dist/application/print/text-writer.cjs.map +1 -0
  194. package/dist/application/print/text-writer.mjs +60 -0
  195. package/dist/application/print/text-writer.mjs.map +1 -0
  196. package/dist/application/print/type-printer.cjs +214 -0
  197. package/dist/application/print/type-printer.cjs.map +1 -0
  198. package/dist/application/print/type-printer.mjs +210 -0
  199. package/dist/application/print/type-printer.mjs.map +1 -0
  200. package/dist/application/stack-overflow.cjs +36 -0
  201. package/dist/application/stack-overflow.cjs.map +1 -0
  202. package/dist/application/stack-overflow.mjs +31 -0
  203. package/dist/application/stack-overflow.mjs.map +1 -0
  204. package/dist/application/transform/document/components.cjs +104 -0
  205. package/dist/application/transform/document/components.cjs.map +1 -0
  206. package/dist/application/transform/document/components.mjs +102 -0
  207. package/dist/application/transform/document/components.mjs.map +1 -0
  208. package/dist/application/transform/document/defs-root.cjs +18 -0
  209. package/dist/application/transform/document/defs-root.cjs.map +1 -0
  210. package/dist/application/transform/document/defs-root.mjs +16 -0
  211. package/dist/application/transform/document/defs-root.mjs.map +1 -0
  212. package/dist/application/transform/document/document-member.cjs +13 -0
  213. package/dist/application/transform/document/document-member.cjs.map +1 -0
  214. package/dist/application/transform/document/document-member.mjs +11 -0
  215. package/dist/application/transform/document/document-member.mjs.map +1 -0
  216. package/dist/application/transform/document/document.cjs +86 -0
  217. package/dist/application/transform/document/document.cjs.map +1 -0
  218. package/dist/application/transform/document/document.mjs +83 -0
  219. package/dist/application/transform/document/document.mjs.map +1 -0
  220. package/dist/application/transform/document/header.cjs +27 -0
  221. package/dist/application/transform/document/header.cjs.map +1 -0
  222. package/dist/application/transform/document/header.mjs +25 -0
  223. package/dist/application/transform/document/header.mjs.map +1 -0
  224. package/dist/application/transform/document/kept-deprecated.cjs +96 -0
  225. package/dist/application/transform/document/kept-deprecated.cjs.map +1 -0
  226. package/dist/application/transform/document/kept-deprecated.mjs +94 -0
  227. package/dist/application/transform/document/kept-deprecated.mjs.map +1 -0
  228. package/dist/application/transform/document/media-type.cjs +42 -0
  229. package/dist/application/transform/document/media-type.cjs.map +1 -0
  230. package/dist/application/transform/document/media-type.mjs +38 -0
  231. package/dist/application/transform/document/media-type.mjs.map +1 -0
  232. package/dist/application/transform/document/operation.cjs +45 -0
  233. package/dist/application/transform/document/operation.cjs.map +1 -0
  234. package/dist/application/transform/document/operation.mjs +43 -0
  235. package/dist/application/transform/document/operation.mjs.map +1 -0
  236. package/dist/application/transform/document/parameter.cjs +25 -0
  237. package/dist/application/transform/document/parameter.cjs.map +1 -0
  238. package/dist/application/transform/document/parameter.mjs +23 -0
  239. package/dist/application/transform/document/parameter.mjs.map +1 -0
  240. package/dist/application/transform/document/parameters.cjs +114 -0
  241. package/dist/application/transform/document/parameters.cjs.map +1 -0
  242. package/dist/application/transform/document/parameters.mjs +112 -0
  243. package/dist/application/transform/document/parameters.mjs.map +1 -0
  244. package/dist/application/transform/document/path-item-conflicts.cjs +51 -0
  245. package/dist/application/transform/document/path-item-conflicts.cjs.map +1 -0
  246. package/dist/application/transform/document/path-item-conflicts.mjs +49 -0
  247. package/dist/application/transform/document/path-item-conflicts.mjs.map +1 -0
  248. package/dist/application/transform/document/path-item.cjs +82 -0
  249. package/dist/application/transform/document/path-item.cjs.map +1 -0
  250. package/dist/application/transform/document/path-item.mjs +80 -0
  251. package/dist/application/transform/document/path-item.mjs.map +1 -0
  252. package/dist/application/transform/document/path-key-overlaps.cjs +57 -0
  253. package/dist/application/transform/document/path-key-overlaps.cjs.map +1 -0
  254. package/dist/application/transform/document/path-key-overlaps.mjs +55 -0
  255. package/dist/application/transform/document/path-key-overlaps.mjs.map +1 -0
  256. package/dist/application/transform/document/paths-enum.cjs +75 -0
  257. package/dist/application/transform/document/paths-enum.cjs.map +1 -0
  258. package/dist/application/transform/document/paths-enum.mjs +72 -0
  259. package/dist/application/transform/document/paths-enum.mjs.map +1 -0
  260. package/dist/application/transform/document/paths.cjs +127 -0
  261. package/dist/application/transform/document/paths.cjs.map +1 -0
  262. package/dist/application/transform/document/paths.mjs +125 -0
  263. package/dist/application/transform/document/paths.mjs.map +1 -0
  264. package/dist/application/transform/document/request-body.cjs +36 -0
  265. package/dist/application/transform/document/request-body.cjs.map +1 -0
  266. package/dist/application/transform/document/request-body.mjs +34 -0
  267. package/dist/application/transform/document/request-body.mjs.map +1 -0
  268. package/dist/application/transform/document/response.cjs +59 -0
  269. package/dist/application/transform/document/response.cjs.map +1 -0
  270. package/dist/application/transform/document/response.mjs +57 -0
  271. package/dist/application/transform/document/response.mjs.map +1 -0
  272. package/dist/application/transform/document/responses.cjs +23 -0
  273. package/dist/application/transform/document/responses.cjs.map +1 -0
  274. package/dist/application/transform/document/responses.mjs +21 -0
  275. package/dist/application/transform/document/responses.mjs.map +1 -0
  276. package/dist/application/transform/document/root-type-aliases.cjs +69 -0
  277. package/dist/application/transform/document/root-type-aliases.cjs.map +1 -0
  278. package/dist/application/transform/document/root-type-aliases.mjs +65 -0
  279. package/dist/application/transform/document/root-type-aliases.mjs.map +1 -0
  280. package/dist/application/transform/document/webhooks.cjs +19 -0
  281. package/dist/application/transform/document/webhooks.cjs.map +1 -0
  282. package/dist/application/transform/document/webhooks.mjs +17 -0
  283. package/dist/application/transform/document/webhooks.mjs.map +1 -0
  284. package/dist/application/transform/document-entries.cjs +17 -0
  285. package/dist/application/transform/document-entries.cjs.map +1 -0
  286. package/dist/application/transform/document-entries.mjs +14 -0
  287. package/dist/application/transform/document-entries.mjs.map +1 -0
  288. package/dist/application/transform/footer/document-footer.cjs +88 -0
  289. package/dist/application/transform/footer/document-footer.cjs.map +1 -0
  290. package/dist/application/transform/footer/document-footer.mjs +86 -0
  291. package/dist/application/transform/footer/document-footer.mjs.map +1 -0
  292. package/dist/application/transform/footer/enum-naming.cjs +121 -0
  293. package/dist/application/transform/footer/enum-naming.cjs.map +1 -0
  294. package/dist/application/transform/footer/enum-naming.mjs +115 -0
  295. package/dist/application/transform/footer/enum-naming.mjs.map +1 -0
  296. package/dist/application/transform/helper-types.cjs +68 -0
  297. package/dist/application/transform/helper-types.cjs.map +1 -0
  298. package/dist/application/transform/helper-types.mjs +65 -0
  299. package/dist/application/transform/helper-types.mjs.map +1 -0
  300. package/dist/application/transform/literal-type.cjs +36 -0
  301. package/dist/application/transform/literal-type.cjs.map +1 -0
  302. package/dist/application/transform/literal-type.mjs +34 -0
  303. package/dist/application/transform/literal-type.mjs.map +1 -0
  304. package/dist/application/transform/numbered-names.cjs +18 -0
  305. package/dist/application/transform/numbered-names.cjs.map +1 -0
  306. package/dist/application/transform/numbered-names.mjs +16 -0
  307. package/dist/application/transform/numbered-names.mjs.map +1 -0
  308. package/dist/application/transform/ref-type.cjs +57 -0
  309. package/dist/application/transform/ref-type.cjs.map +1 -0
  310. package/dist/application/transform/ref-type.mjs +54 -0
  311. package/dist/application/transform/ref-type.mjs.map +1 -0
  312. package/dist/application/transform/schema/array-type.cjs +105 -0
  313. package/dist/application/transform/schema/array-type.cjs.map +1 -0
  314. package/dist/application/transform/schema/array-type.mjs +103 -0
  315. package/dist/application/transform/schema/array-type.mjs.map +1 -0
  316. package/dist/application/transform/schema/composition-type.cjs +107 -0
  317. package/dist/application/transform/schema/composition-type.cjs.map +1 -0
  318. package/dist/application/transform/schema/composition-type.mjs +105 -0
  319. package/dist/application/transform/schema/composition-type.mjs.map +1 -0
  320. package/dist/application/transform/schema/core-type.cjs +84 -0
  321. package/dist/application/transform/schema/core-type.cjs.map +1 -0
  322. package/dist/application/transform/schema/core-type.mjs +82 -0
  323. package/dist/application/transform/schema/core-type.mjs.map +1 -0
  324. package/dist/application/transform/schema/discriminator-property.cjs +21 -0
  325. package/dist/application/transform/schema/discriminator-property.cjs.map +1 -0
  326. package/dist/application/transform/schema/discriminator-property.mjs +19 -0
  327. package/dist/application/transform/schema/discriminator-property.mjs.map +1 -0
  328. package/dist/application/transform/schema/enum-rule.cjs +107 -0
  329. package/dist/application/transform/schema/enum-rule.cjs.map +1 -0
  330. package/dist/application/transform/schema/enum-rule.mjs +105 -0
  331. package/dist/application/transform/schema/enum-rule.mjs.map +1 -0
  332. package/dist/application/transform/schema/object-type.cjs +173 -0
  333. package/dist/application/transform/schema/object-type.cjs.map +1 -0
  334. package/dist/application/transform/schema/object-type.mjs +170 -0
  335. package/dist/application/transform/schema/object-type.mjs.map +1 -0
  336. package/dist/application/transform/schema/presence-members.cjs +59 -0
  337. package/dist/application/transform/schema/presence-members.cjs.map +1 -0
  338. package/dist/application/transform/schema/presence-members.mjs +57 -0
  339. package/dist/application/transform/schema/presence-members.mjs.map +1 -0
  340. package/dist/application/transform/schema/schema-transform.cjs +72 -0
  341. package/dist/application/transform/schema/schema-transform.cjs.map +1 -0
  342. package/dist/application/transform/schema/schema-transform.mjs +68 -0
  343. package/dist/application/transform/schema/schema-transform.mjs.map +1 -0
  344. package/dist/application/transform/schema/unevaluated-properties.cjs +61 -0
  345. package/dist/application/transform/schema/unevaluated-properties.cjs.map +1 -0
  346. package/dist/application/transform/schema/unevaluated-properties.mjs +59 -0
  347. package/dist/application/transform/schema/unevaluated-properties.mjs.map +1 -0
  348. package/dist/application/transform/schema-comment.cjs +84 -0
  349. package/dist/application/transform/schema-comment.cjs.map +1 -0
  350. package/dist/application/transform/schema-comment.mjs +81 -0
  351. package/dist/application/transform/schema-comment.mjs.map +1 -0
  352. package/dist/application/transform/shared-types.cjs +8 -0
  353. package/dist/application/transform/shared-types.cjs.map +1 -0
  354. package/dist/application/transform/shared-types.mjs +6 -0
  355. package/dist/application/transform/shared-types.mjs.map +1 -0
  356. package/dist/application/transform/type-combinators.cjs +49 -0
  357. package/dist/application/transform/type-combinators.cjs.map +1 -0
  358. package/dist/application/transform/type-combinators.mjs +42 -0
  359. package/dist/application/transform/type-combinators.mjs.map +1 -0
  360. package/dist/cli/cli-arguments.cjs +137 -0
  361. package/dist/cli/cli-arguments.cjs.map +1 -0
  362. package/dist/cli/cli-arguments.mjs +129 -0
  363. package/dist/cli/cli-arguments.mjs.map +1 -0
  364. package/dist/cli/cli-errors.cjs +80 -0
  365. package/dist/cli/cli-errors.cjs.map +1 -0
  366. package/dist/cli/cli-errors.mjs +76 -0
  367. package/dist/cli/cli-errors.mjs.map +1 -0
  368. package/dist/cli/cli-output.cjs +37 -0
  369. package/dist/cli/cli-output.cjs.map +1 -0
  370. package/dist/cli/cli-output.mjs +30 -0
  371. package/dist/cli/cli-output.mjs.map +1 -0
  372. package/dist/cli/docs-links.cjs +6 -0
  373. package/dist/cli/docs-links.cjs.map +1 -0
  374. package/dist/cli/docs-links.mjs +4 -0
  375. package/dist/cli/docs-links.mjs.map +1 -0
  376. package/dist/cli/fix-option.cjs +19 -0
  377. package/dist/cli/fix-option.cjs.map +1 -0
  378. package/dist/cli/fix-option.mjs +16 -0
  379. package/dist/cli/fix-option.mjs.map +1 -0
  380. package/dist/cli/help-text.cjs +44 -0
  381. package/dist/cli/help-text.cjs.map +1 -0
  382. package/dist/cli/help-text.mjs +42 -0
  383. package/dist/cli/help-text.mjs.map +1 -0
  384. package/dist/cli/main.cjs +62 -0
  385. package/dist/cli/main.cjs.map +1 -0
  386. package/dist/cli/main.d.cts +2 -0
  387. package/dist/cli/main.d.mts +2 -0
  388. package/dist/cli/main.d.ts +2 -0
  389. package/dist/cli/main.mjs +54 -0
  390. package/dist/cli/main.mjs.map +1 -0
  391. package/dist/cli/redocly-apis.cjs +65 -0
  392. package/dist/cli/redocly-apis.cjs.map +1 -0
  393. package/dist/cli/redocly-apis.mjs +62 -0
  394. package/dist/cli/redocly-apis.mjs.map +1 -0
  395. package/dist/cli/ref-limits.cjs +14 -0
  396. package/dist/cli/ref-limits.cjs.map +1 -0
  397. package/dist/cli/ref-limits.mjs +12 -0
  398. package/dist/cli/ref-limits.mjs.map +1 -0
  399. package/dist/cli/run-cli.cjs +100 -0
  400. package/dist/cli/run-cli.cjs.map +1 -0
  401. package/dist/cli/run-cli.mjs +98 -0
  402. package/dist/cli/run-cli.mjs.map +1 -0
  403. package/dist/domain/assert-never.cjs +8 -0
  404. package/dist/domain/assert-never.cjs.map +1 -0
  405. package/dist/domain/assert-never.mjs +6 -0
  406. package/dist/domain/assert-never.mjs.map +1 -0
  407. package/dist/domain/errors.cjs +50 -0
  408. package/dist/domain/errors.cjs.map +1 -0
  409. package/dist/domain/errors.mjs +46 -0
  410. package/dist/domain/errors.mjs.map +1 -0
  411. package/dist/domain/ir/constructors.cjs +89 -0
  412. package/dist/domain/ir/constructors.cjs.map +1 -0
  413. package/dist/domain/ir/constructors.mjs +71 -0
  414. package/dist/domain/ir/constructors.mjs.map +1 -0
  415. package/dist/domain/ir/identifier-text.cjs +29 -0
  416. package/dist/domain/ir/identifier-text.cjs.map +1 -0
  417. package/dist/domain/ir/identifier-text.mjs +25 -0
  418. package/dist/domain/ir/identifier-text.mjs.map +1 -0
  419. package/dist/domain/ir/newer-identifier-ranges.cjs +109 -0
  420. package/dist/domain/ir/newer-identifier-ranges.cjs.map +1 -0
  421. package/dist/domain/ir/newer-identifier-ranges.mjs +106 -0
  422. package/dist/domain/ir/newer-identifier-ranges.mjs.map +1 -0
  423. package/dist/domain/ir/normalize.cjs +32 -0
  424. package/dist/domain/ir/normalize.cjs.map +1 -0
  425. package/dist/domain/ir/normalize.mjs +29 -0
  426. package/dist/domain/ir/normalize.mjs.map +1 -0
  427. package/dist/domain/ir/property-name.cjs +19 -0
  428. package/dist/domain/ir/property-name.cjs.map +1 -0
  429. package/dist/domain/ir/property-name.mjs +16 -0
  430. package/dist/domain/ir/property-name.mjs.map +1 -0
  431. package/dist/domain/ir/raw-text-escapes.cjs +25 -0
  432. package/dist/domain/ir/raw-text-escapes.cjs.map +1 -0
  433. package/dist/domain/ir/raw-text-escapes.mjs +22 -0
  434. package/dist/domain/ir/raw-text-escapes.mjs.map +1 -0
  435. package/dist/domain/openapi/alias-expansion.cjs +50 -0
  436. package/dist/domain/openapi/alias-expansion.cjs.map +1 -0
  437. package/dist/domain/openapi/alias-expansion.mjs +45 -0
  438. package/dist/domain/openapi/alias-expansion.mjs.map +1 -0
  439. package/dist/domain/openapi/binary-content.cjs +48 -0
  440. package/dist/domain/openapi/binary-content.cjs.map +1 -0
  441. package/dist/domain/openapi/binary-content.mjs +45 -0
  442. package/dist/domain/openapi/binary-content.mjs.map +1 -0
  443. package/dist/domain/openapi/components-object.cjs +29 -0
  444. package/dist/domain/openapi/components-object.cjs.map +1 -0
  445. package/dist/domain/openapi/components-object.mjs +24 -0
  446. package/dist/domain/openapi/components-object.mjs.map +1 -0
  447. package/dist/domain/openapi/json-pointer.cjs +31 -0
  448. package/dist/domain/openapi/json-pointer.cjs.map +1 -0
  449. package/dist/domain/openapi/json-pointer.mjs +27 -0
  450. package/dist/domain/openapi/json-pointer.mjs.map +1 -0
  451. package/dist/domain/openapi/media-type-object.cjs +14 -0
  452. package/dist/domain/openapi/media-type-object.cjs.map +1 -0
  453. package/dist/domain/openapi/media-type-object.mjs +11 -0
  454. package/dist/domain/openapi/media-type-object.mjs.map +1 -0
  455. package/dist/domain/openapi/parameter-object.cjs +13 -0
  456. package/dist/domain/openapi/parameter-object.cjs.map +1 -0
  457. package/dist/domain/openapi/parameter-object.mjs +10 -0
  458. package/dist/domain/openapi/parameter-object.mjs.map +1 -0
  459. package/dist/domain/openapi/path-item-object.cjs +35 -0
  460. package/dist/domain/openapi/path-item-object.cjs.map +1 -0
  461. package/dist/domain/openapi/path-item-object.mjs +30 -0
  462. package/dist/domain/openapi/path-item-object.mjs.map +1 -0
  463. package/dist/domain/openapi/unsupported-features.cjs +87 -0
  464. package/dist/domain/openapi/unsupported-features.cjs.map +1 -0
  465. package/dist/domain/openapi/unsupported-features.mjs +84 -0
  466. package/dist/domain/openapi/unsupported-features.mjs.map +1 -0
  467. package/dist/domain/output-fixes.cjs +66 -0
  468. package/dist/domain/output-fixes.cjs.map +1 -0
  469. package/dist/domain/output-fixes.mjs +59 -0
  470. package/dist/domain/output-fixes.mjs.map +1 -0
  471. package/dist/index.cjs +98 -0
  472. package/dist/index.cjs.map +1 -0
  473. package/dist/index.d.cts +812 -0
  474. package/dist/index.d.mts +812 -0
  475. package/dist/index.d.ts +812 -0
  476. package/dist/index.mjs +27 -0
  477. package/dist/index.mjs.map +1 -0
  478. package/dist/transform/components-object.cjs +14 -0
  479. package/dist/transform/components-object.cjs.map +1 -0
  480. package/dist/transform/components-object.mjs +10 -0
  481. package/dist/transform/components-object.mjs.map +1 -0
  482. package/dist/transform/header-object.cjs +12 -0
  483. package/dist/transform/header-object.cjs.map +1 -0
  484. package/dist/transform/header-object.mjs +10 -0
  485. package/dist/transform/header-object.mjs.map +1 -0
  486. package/dist/transform/media-type-object.cjs +12 -0
  487. package/dist/transform/media-type-object.cjs.map +1 -0
  488. package/dist/transform/media-type-object.mjs +10 -0
  489. package/dist/transform/media-type-object.mjs.map +1 -0
  490. package/dist/transform/operation-object.cjs +26 -0
  491. package/dist/transform/operation-object.cjs.map +1 -0
  492. package/dist/transform/operation-object.mjs +21 -0
  493. package/dist/transform/operation-object.mjs.map +1 -0
  494. package/dist/transform/parameter-object.cjs +12 -0
  495. package/dist/transform/parameter-object.cjs.map +1 -0
  496. package/dist/transform/parameter-object.mjs +10 -0
  497. package/dist/transform/parameter-object.mjs.map +1 -0
  498. package/dist/transform/path-item-object.cjs +12 -0
  499. package/dist/transform/path-item-object.cjs.map +1 -0
  500. package/dist/transform/path-item-object.mjs +10 -0
  501. package/dist/transform/path-item-object.mjs.map +1 -0
  502. package/dist/transform/paths-object.cjs +11 -0
  503. package/dist/transform/paths-object.cjs.map +1 -0
  504. package/dist/transform/paths-object.mjs +9 -0
  505. package/dist/transform/paths-object.mjs.map +1 -0
  506. package/dist/transform/request-body-object.cjs +12 -0
  507. package/dist/transform/request-body-object.cjs.map +1 -0
  508. package/dist/transform/request-body-object.mjs +10 -0
  509. package/dist/transform/request-body-object.mjs.map +1 -0
  510. package/dist/transform/response-object.cjs +12 -0
  511. package/dist/transform/response-object.cjs.map +1 -0
  512. package/dist/transform/response-object.mjs +10 -0
  513. package/dist/transform/response-object.mjs.map +1 -0
  514. package/dist/transform/responses-object.cjs +12 -0
  515. package/dist/transform/responses-object.cjs.map +1 -0
  516. package/dist/transform/responses-object.mjs +10 -0
  517. package/dist/transform/responses-object.mjs.map +1 -0
  518. package/dist/transform/schema-object.cjs +21 -0
  519. package/dist/transform/schema-object.cjs.map +1 -0
  520. package/dist/transform/schema-object.mjs +16 -0
  521. package/dist/transform/schema-object.mjs.map +1 -0
  522. package/package.json +115 -4
  523. package/src/adapters/node-file-system/node-file-system.ts +44 -0
  524. package/src/adapters/redocly-loader/alias-limit.ts +20 -0
  525. package/src/adapters/redocly-loader/allowed-hosts.ts +62 -0
  526. package/src/adapters/redocly-loader/bundled-ref-repair.ts +65 -0
  527. package/src/adapters/redocly-loader/malformed-refs.ts +61 -0
  528. package/src/adapters/redocly-loader/redocly-config-source.ts +43 -0
  529. package/src/adapters/redocly-loader/redocly-schema-loader.ts +246 -0
  530. package/src/adapters/redocly-loader/ref-access.ts +146 -0
  531. package/src/adapters/redocly-loader/ref-holders.ts +43 -0
  532. package/src/adapters/redocly-loader/remote-fetch.ts +104 -0
  533. package/src/adapters/redocly-loader/schema-load-errors.ts +124 -0
  534. package/src/adapters/redocly-loader/schema-source.ts +151 -0
  535. package/src/adapters/redocly-loader/unsupported-keys.ts +102 -0
  536. package/src/adapters/terminal-logger/terminal-logger.ts +98 -0
  537. package/src/adapters/type-ast-bridge/footer-nodes.ts +38 -0
  538. package/src/adapters/type-ast-bridge/ir-declarations-to-typescript.ts +100 -0
  539. package/src/adapters/type-ast-bridge/ir-to-typescript.ts +220 -0
  540. package/src/adapters/type-ast-bridge/lazy-node.ts +24 -0
  541. package/src/adapters/type-ast-bridge/load-typescript.ts +84 -0
  542. package/src/adapters/type-ast-bridge/print-typescript.ts +33 -0
  543. package/src/adapters/type-ast-bridge/typescript-raw-text.ts +49 -0
  544. package/src/adapters/type-ast-bridge/typescript-to-ir.ts +280 -0
  545. package/src/adapters/type-ast-bridge/typescript-types.ts +8 -0
  546. package/src/api/ast-to-string.ts +59 -0
  547. package/src/api/comment-header.ts +7 -0
  548. package/src/api/default-ports.ts +44 -0
  549. package/src/api/discriminator-enum.ts +76 -0
  550. package/src/api/discriminator-scan.ts +272 -0
  551. package/src/api/document-declarations.ts +41 -0
  552. package/src/api/document-refs.ts +71 -0
  553. package/src/api/document-run.ts +159 -0
  554. package/src/api/footer-entry.ts +23 -0
  555. package/src/api/footer-sink.ts +67 -0
  556. package/src/api/legacy-callback-warning.ts +29 -0
  557. package/src/api/legacy-ts-helpers.ts +311 -0
  558. package/src/api/legacy-utils.ts +118 -0
  559. package/src/api/openapi-ts.ts +62 -0
  560. package/src/api/schema-callbacks.ts +211 -0
  561. package/src/api/string-to-ast.ts +27 -0
  562. package/src/api/transform-context.ts +87 -0
  563. package/src/api/transform-schema.ts +39 -0
  564. package/src/api/type-helpers.ts +130 -0
  565. package/src/api/unsupported-feature-warnings.ts +26 -0
  566. package/src/application/ports/file-system.ts +12 -0
  567. package/src/application/ports/logger.ts +16 -0
  568. package/src/application/ports/redocly-config-source.ts +16 -0
  569. package/src/application/ports/schema-loader.ts +32 -0
  570. package/src/application/print/comment-writer.ts +91 -0
  571. package/src/application/print/declaration-printer.ts +100 -0
  572. package/src/application/print/literal-text.ts +62 -0
  573. package/src/application/print/print-nodes.ts +62 -0
  574. package/src/application/print/print-options.ts +11 -0
  575. package/src/application/print/text-writer.ts +83 -0
  576. package/src/application/print/type-printer.ts +281 -0
  577. package/src/application/stack-overflow.ts +54 -0
  578. package/src/application/transform/document/components.ts +189 -0
  579. package/src/application/transform/document/defs-root.ts +25 -0
  580. package/src/application/transform/document/document-member.ts +20 -0
  581. package/src/application/transform/document/document.ts +157 -0
  582. package/src/application/transform/document/header.ts +34 -0
  583. package/src/application/transform/document/kept-deprecated.ts +135 -0
  584. package/src/application/transform/document/media-type.ts +78 -0
  585. package/src/application/transform/document/operation.ts +64 -0
  586. package/src/application/transform/document/parameter.ts +45 -0
  587. package/src/application/transform/document/parameters.ts +200 -0
  588. package/src/application/transform/document/path-item-conflicts.ts +79 -0
  589. package/src/application/transform/document/path-item.ts +168 -0
  590. package/src/application/transform/document/path-key-overlaps.ts +112 -0
  591. package/src/application/transform/document/paths-enum.ts +127 -0
  592. package/src/application/transform/document/paths.ts +211 -0
  593. package/src/application/transform/document/request-body.ts +50 -0
  594. package/src/application/transform/document/response.ts +109 -0
  595. package/src/application/transform/document/responses.ts +29 -0
  596. package/src/application/transform/document/root-type-aliases.ts +106 -0
  597. package/src/application/transform/document/webhooks.ts +22 -0
  598. package/src/application/transform/document-entries.ts +28 -0
  599. package/src/application/transform/footer/document-footer.ts +127 -0
  600. package/src/application/transform/footer/enum-naming.ts +181 -0
  601. package/src/application/transform/helper-types.ts +92 -0
  602. package/src/application/transform/literal-type.ts +54 -0
  603. package/src/application/transform/numbered-names.ts +20 -0
  604. package/src/application/transform/ref-type.ts +97 -0
  605. package/src/application/transform/schema/array-type.ts +152 -0
  606. package/src/application/transform/schema/composition-type.ts +183 -0
  607. package/src/application/transform/schema/core-type.ts +115 -0
  608. package/src/application/transform/schema/discriminator-property.ts +28 -0
  609. package/src/application/transform/schema/enum-rule.ts +157 -0
  610. package/src/application/transform/schema/object-type.ts +271 -0
  611. package/src/application/transform/schema/presence-members.ts +96 -0
  612. package/src/application/transform/schema/schema-context.ts +110 -0
  613. package/src/application/transform/schema/schema-rule.ts +29 -0
  614. package/src/application/transform/schema/schema-transform.ts +99 -0
  615. package/src/application/transform/schema/unevaluated-properties.ts +105 -0
  616. package/src/application/transform/schema-comment.ts +116 -0
  617. package/src/application/transform/shared-types.ts +9 -0
  618. package/src/application/transform/transform-context.ts +51 -0
  619. package/src/application/transform/type-combinators.ts +57 -0
  620. package/src/cli/cli-arguments.ts +198 -0
  621. package/src/cli/cli-dependencies.ts +42 -0
  622. package/src/cli/cli-errors.ts +125 -0
  623. package/src/cli/cli-output.ts +53 -0
  624. package/src/cli/docs-links.ts +6 -0
  625. package/src/cli/fix-option.ts +29 -0
  626. package/src/cli/help-text.ts +52 -0
  627. package/src/cli/main.ts +67 -0
  628. package/src/cli/redocly-apis.ts +91 -0
  629. package/src/cli/ref-limits.ts +16 -0
  630. package/src/cli/run-cli.ts +114 -0
  631. package/src/domain/assert-never.ts +8 -0
  632. package/src/domain/errors.ts +74 -0
  633. package/src/domain/ir/constructors.ts +137 -0
  634. package/src/domain/ir/identifier-text.ts +49 -0
  635. package/src/domain/ir/newer-identifier-ranges.ts +109 -0
  636. package/src/domain/ir/nodes.ts +224 -0
  637. package/src/domain/ir/normalize.ts +51 -0
  638. package/src/domain/ir/property-name.ts +28 -0
  639. package/src/domain/ir/raw-text-escapes.ts +37 -0
  640. package/src/domain/openapi/alias-expansion.ts +72 -0
  641. package/src/domain/openapi/binary-content.ts +74 -0
  642. package/src/domain/openapi/components-object.ts +52 -0
  643. package/src/domain/openapi/document-object.ts +12 -0
  644. package/src/domain/openapi/header-object.ts +9 -0
  645. package/src/domain/openapi/json-pointer.ts +46 -0
  646. package/src/domain/openapi/media-type-object.ts +26 -0
  647. package/src/domain/openapi/operation-object.ts +13 -0
  648. package/src/domain/openapi/parameter-object.ts +30 -0
  649. package/src/domain/openapi/path-item-object.ts +70 -0
  650. package/src/domain/openapi/request-body-object.ts +7 -0
  651. package/src/domain/openapi/response-object.ts +14 -0
  652. package/src/domain/openapi/schema-object.ts +59 -0
  653. package/src/domain/openapi/unsupported-features.ts +139 -0
  654. package/src/domain/output-fixes.ts +95 -0
  655. package/src/index.ts +67 -0
  656. package/src/transform/components-object.ts +25 -0
  657. package/src/transform/header-object.ts +19 -0
  658. package/src/transform/media-type-object.ts +19 -0
  659. package/src/transform/operation-object.ts +36 -0
  660. package/src/transform/parameter-object.ts +19 -0
  661. package/src/transform/parameters-array.ts +19 -0
  662. package/src/transform/path-item-object.ts +22 -0
  663. package/src/transform/paths-enum.ts +8 -0
  664. package/src/transform/paths-object.ts +15 -0
  665. package/src/transform/request-body-object.ts +19 -0
  666. package/src/transform/response-object.ts +19 -0
  667. package/src/transform/responses-object.ts +19 -0
  668. package/src/transform/schema-object.ts +36 -0
  669. package/src/transform/webhooks-object.ts +15 -0
  670. package/src/types/generator-options.ts +267 -0
  671. package/src/types/openapi-common.ts +100 -0
  672. package/src/types/openapi-document.ts +196 -0
  673. package/src/types/openapi-path-item.ts +130 -0
  674. package/src/types/openapi-request.ts +209 -0
  675. package/src/types/openapi-response.ts +81 -0
  676. package/src/types/openapi-schema.ts +169 -0
  677. package/src/types/openapi-security.ts +116 -0
  678. package/src/types.ts +12 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"declaration-printer.cjs","sources":["../../../src/application/print/declaration-printer.ts"],"sourcesContent":["import { assertNever } from \"../../domain/assert-never.js\";\nimport type {\n IrComment,\n IrConstArrayDeclaration,\n IrDeclaration,\n IrEnumDeclaration,\n IrEnumMember,\n IrInterfaceDeclaration,\n IrTypeAliasDeclaration,\n} from \"../../domain/ir/nodes.js\";\nimport { writeLeadingComment } from \"./comment-writer.js\";\nimport { printEscapedString, printNumberLiteral } from \"./literal-text.js\";\nimport type { TextWriter } from \"./text-writer.js\";\nimport { writeMember, writeMultiLineList, writeType } from \"./type-printer.js\";\n\n/** Enum initializers and array elements are expressions: strings use printer escaping. */\nfunction printValue(value: string | number): string {\n return typeof value === \"number\" ? printNumberLiteral(value) : printEscapedString(value);\n}\n\nfunction writeHead(\n writer: TextWriter,\n declaration: { comments: readonly IrComment[]; isExported: boolean },\n): void {\n for (const comment of declaration.comments) {\n writeLeadingComment(writer, comment);\n }\n if (declaration.isExported) {\n writer.write(\"export \");\n }\n}\n\nfunction writeInterface(writer: TextWriter, declaration: IrInterfaceDeclaration): void {\n writeHead(writer, declaration);\n writer.write(`interface ${declaration.name} {`);\n writeMultiLineList(\n writer,\n declaration.members,\n { delimiter: \"\", isLineBreakWhenEmpty: true },\n (member) => writeMember(writer, member),\n );\n writer.write(\"}\");\n}\n\nfunction writeTypeAlias(writer: TextWriter, declaration: IrTypeAliasDeclaration): void {\n writeHead(writer, declaration);\n writer.write(`type ${declaration.name} = `);\n writeType(writer, declaration.type);\n writer.write(\";\");\n}\n\nfunction writeEnumMember(writer: TextWriter, member: IrEnumMember): void {\n for (const comment of member.comments) {\n writeLeadingComment(writer, comment);\n }\n writer.write(`${member.name} = ${printValue(member.value)}`);\n}\n\nfunction writeEnum(writer: TextWriter, declaration: IrEnumDeclaration): void {\n writeHead(writer, declaration);\n writer.write(`enum ${declaration.name} {`);\n writeMultiLineList(\n writer,\n declaration.members,\n { delimiter: \",\", isLineBreakWhenEmpty: true },\n (member) => writeEnumMember(writer, member),\n );\n writer.write(\"}\");\n}\n\nfunction writeConstArray(writer: TextWriter, declaration: IrConstArrayDeclaration): void {\n writeHead(writer, declaration);\n writer.write(`const ${declaration.name}: `);\n writeType(writer, declaration.type);\n writer.write(` = [${declaration.values.map(printValue).join(\", \")}];`);\n}\n\n/** Write one top-level declaration, starting on a new line. */\nexport function writeDeclaration(writer: TextWriter, declaration: IrDeclaration): void {\n writer.writeLine();\n switch (declaration.kind) {\n case \"interface\":\n writeInterface(writer, declaration);\n break;\n case \"typeAlias\":\n writeTypeAlias(writer, declaration);\n break;\n case \"enum\":\n writeEnum(writer, declaration);\n break;\n case \"constArray\":\n writeConstArray(writer, declaration);\n break;\n case \"rawDeclaration\":\n writer.write(declaration.text);\n break;\n default:\n assertNever(declaration);\n }\n}\n"],"names":["printNumberLiteral","printEscapedString","writeLeadingComment","writeMultiLineList","writeMember","writeType","assertNever"],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import { assertNever } from '../../domain/assert-never.mjs';
2
+ import { writeLeadingComment } from './comment-writer.mjs';
3
+ import { printNumberLiteral, printEscapedString } from './literal-text.mjs';
4
+ import { writeType, writeMultiLineList, writeMember } from './type-printer.mjs';
5
+
6
+ function printValue(value) {
7
+ return typeof value === "number" ? printNumberLiteral(value) : printEscapedString(value);
8
+ }
9
+ function writeHead(writer, declaration) {
10
+ for (const comment of declaration.comments) {
11
+ writeLeadingComment(writer, comment);
12
+ }
13
+ if (declaration.isExported) {
14
+ writer.write("export ");
15
+ }
16
+ }
17
+ function writeInterface(writer, declaration) {
18
+ writeHead(writer, declaration);
19
+ writer.write(`interface ${declaration.name} {`);
20
+ writeMultiLineList(
21
+ writer,
22
+ declaration.members,
23
+ { delimiter: "", isLineBreakWhenEmpty: true },
24
+ (member) => writeMember(writer, member)
25
+ );
26
+ writer.write("}");
27
+ }
28
+ function writeTypeAlias(writer, declaration) {
29
+ writeHead(writer, declaration);
30
+ writer.write(`type ${declaration.name} = `);
31
+ writeType(writer, declaration.type);
32
+ writer.write(";");
33
+ }
34
+ function writeEnumMember(writer, member) {
35
+ for (const comment of member.comments) {
36
+ writeLeadingComment(writer, comment);
37
+ }
38
+ writer.write(`${member.name} = ${printValue(member.value)}`);
39
+ }
40
+ function writeEnum(writer, declaration) {
41
+ writeHead(writer, declaration);
42
+ writer.write(`enum ${declaration.name} {`);
43
+ writeMultiLineList(
44
+ writer,
45
+ declaration.members,
46
+ { delimiter: ",", isLineBreakWhenEmpty: true },
47
+ (member) => writeEnumMember(writer, member)
48
+ );
49
+ writer.write("}");
50
+ }
51
+ function writeConstArray(writer, declaration) {
52
+ writeHead(writer, declaration);
53
+ writer.write(`const ${declaration.name}: `);
54
+ writeType(writer, declaration.type);
55
+ writer.write(` = [${declaration.values.map(printValue).join(", ")}];`);
56
+ }
57
+ function writeDeclaration(writer, declaration) {
58
+ writer.writeLine();
59
+ switch (declaration.kind) {
60
+ case "interface":
61
+ writeInterface(writer, declaration);
62
+ break;
63
+ case "typeAlias":
64
+ writeTypeAlias(writer, declaration);
65
+ break;
66
+ case "enum":
67
+ writeEnum(writer, declaration);
68
+ break;
69
+ case "constArray":
70
+ writeConstArray(writer, declaration);
71
+ break;
72
+ case "rawDeclaration":
73
+ writer.write(declaration.text);
74
+ break;
75
+ default:
76
+ assertNever(declaration);
77
+ }
78
+ }
79
+
80
+ export { writeDeclaration };
81
+ //# sourceMappingURL=declaration-printer.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"declaration-printer.mjs","sources":["../../../src/application/print/declaration-printer.ts"],"sourcesContent":["import { assertNever } from \"../../domain/assert-never.js\";\nimport type {\n IrComment,\n IrConstArrayDeclaration,\n IrDeclaration,\n IrEnumDeclaration,\n IrEnumMember,\n IrInterfaceDeclaration,\n IrTypeAliasDeclaration,\n} from \"../../domain/ir/nodes.js\";\nimport { writeLeadingComment } from \"./comment-writer.js\";\nimport { printEscapedString, printNumberLiteral } from \"./literal-text.js\";\nimport type { TextWriter } from \"./text-writer.js\";\nimport { writeMember, writeMultiLineList, writeType } from \"./type-printer.js\";\n\n/** Enum initializers and array elements are expressions: strings use printer escaping. */\nfunction printValue(value: string | number): string {\n return typeof value === \"number\" ? printNumberLiteral(value) : printEscapedString(value);\n}\n\nfunction writeHead(\n writer: TextWriter,\n declaration: { comments: readonly IrComment[]; isExported: boolean },\n): void {\n for (const comment of declaration.comments) {\n writeLeadingComment(writer, comment);\n }\n if (declaration.isExported) {\n writer.write(\"export \");\n }\n}\n\nfunction writeInterface(writer: TextWriter, declaration: IrInterfaceDeclaration): void {\n writeHead(writer, declaration);\n writer.write(`interface ${declaration.name} {`);\n writeMultiLineList(\n writer,\n declaration.members,\n { delimiter: \"\", isLineBreakWhenEmpty: true },\n (member) => writeMember(writer, member),\n );\n writer.write(\"}\");\n}\n\nfunction writeTypeAlias(writer: TextWriter, declaration: IrTypeAliasDeclaration): void {\n writeHead(writer, declaration);\n writer.write(`type ${declaration.name} = `);\n writeType(writer, declaration.type);\n writer.write(\";\");\n}\n\nfunction writeEnumMember(writer: TextWriter, member: IrEnumMember): void {\n for (const comment of member.comments) {\n writeLeadingComment(writer, comment);\n }\n writer.write(`${member.name} = ${printValue(member.value)}`);\n}\n\nfunction writeEnum(writer: TextWriter, declaration: IrEnumDeclaration): void {\n writeHead(writer, declaration);\n writer.write(`enum ${declaration.name} {`);\n writeMultiLineList(\n writer,\n declaration.members,\n { delimiter: \",\", isLineBreakWhenEmpty: true },\n (member) => writeEnumMember(writer, member),\n );\n writer.write(\"}\");\n}\n\nfunction writeConstArray(writer: TextWriter, declaration: IrConstArrayDeclaration): void {\n writeHead(writer, declaration);\n writer.write(`const ${declaration.name}: `);\n writeType(writer, declaration.type);\n writer.write(` = [${declaration.values.map(printValue).join(\", \")}];`);\n}\n\n/** Write one top-level declaration, starting on a new line. */\nexport function writeDeclaration(writer: TextWriter, declaration: IrDeclaration): void {\n writer.writeLine();\n switch (declaration.kind) {\n case \"interface\":\n writeInterface(writer, declaration);\n break;\n case \"typeAlias\":\n writeTypeAlias(writer, declaration);\n break;\n case \"enum\":\n writeEnum(writer, declaration);\n break;\n case \"constArray\":\n writeConstArray(writer, declaration);\n break;\n case \"rawDeclaration\":\n writer.write(declaration.text);\n break;\n default:\n assertNever(declaration);\n }\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ 'use strict';
2
+
3
+ const NAMED_ESCAPES = /* @__PURE__ */ new Map([
4
+ [9, "\\t"],
5
+ [11, "\\v"],
6
+ [12, "\\f"],
7
+ [8, "\\b"],
8
+ [13, "\\r"],
9
+ [10, "\\n"],
10
+ [92, "\\\\"],
11
+ [34, '\\"']
12
+ ]);
13
+ const NULL_CODE = 0;
14
+ const FIRST_PRINTABLE_ASCII = 32;
15
+ const LAST_ASCII = 127;
16
+ const DIGIT_ZERO = 48;
17
+ const DIGIT_NINE = 57;
18
+ function toUtf16Escape(code) {
19
+ return `\\u${code.toString(16).toUpperCase().padStart(4, "0")}`;
20
+ }
21
+ function isDigit(code) {
22
+ return code >= DIGIT_ZERO && code <= DIGIT_NINE;
23
+ }
24
+ function escapeCodeUnit(code, nextCode) {
25
+ if (code === NULL_CODE) {
26
+ return isDigit(nextCode) ? "\\x00" : "\\0";
27
+ }
28
+ const named = NAMED_ESCAPES.get(code);
29
+ if (named !== void 0) {
30
+ return named;
31
+ }
32
+ const isPlainAscii = code >= FIRST_PRINTABLE_ASCII && code <= LAST_ASCII;
33
+ return isPlainAscii ? String.fromCharCode(code) : toUtf16Escape(code);
34
+ }
35
+ function printEscapedString(value) {
36
+ let escaped = "";
37
+ for (let index = 0; index < value.length; index++) {
38
+ escaped += escapeCodeUnit(value.charCodeAt(index), value.charCodeAt(index + 1));
39
+ }
40
+ return `"${escaped}"`;
41
+ }
42
+ function printStringLiteral(value, encoding) {
43
+ return encoding === "json" ? JSON.stringify(value) : printEscapedString(value);
44
+ }
45
+ function printNumberLiteral(value) {
46
+ return value < 0 ? `-${String(Math.abs(value))}` : String(value);
47
+ }
48
+
49
+ exports.printEscapedString = printEscapedString;
50
+ exports.printNumberLiteral = printNumberLiteral;
51
+ exports.printStringLiteral = printStringLiteral;
52
+ //# sourceMappingURL=literal-text.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literal-text.cjs","sources":["../../../src/application/print/literal-text.ts"],"sourcesContent":["import type { IrStringEncoding } from \"../../domain/ir/nodes.js\";\n\n/**\n * Escapes TypeScript's printer uses inside a double-quoted string literal (its `escapeString`).\n * Other characters below U+0020 use `\\uXXXX`; so does every non-ASCII code unit\n * (`escapeNonAsciiString`).\n */\nconst NAMED_ESCAPES: ReadonlyMap<number, string> = new Map([\n [0x09, \"\\\\t\"],\n [0x0b, \"\\\\v\"],\n [0x0c, \"\\\\f\"],\n [0x08, \"\\\\b\"],\n [0x0d, \"\\\\r\"],\n [0x0a, \"\\\\n\"],\n [0x5c, \"\\\\\\\\\"],\n [0x22, '\\\\\"'],\n]);\nconst NULL_CODE = 0x00;\nconst FIRST_PRINTABLE_ASCII = 0x20;\nconst LAST_ASCII = 0x7f;\nconst DIGIT_ZERO = 0x30;\nconst DIGIT_NINE = 0x39;\n\nfunction toUtf16Escape(code: number): string {\n return `\\\\u${code.toString(16).toUpperCase().padStart(4, \"0\")}`;\n}\n\nfunction isDigit(code: number): boolean {\n return code >= DIGIT_ZERO && code <= DIGIT_NINE;\n}\n\n/** `\\0` must not be followed by a digit, or it would read as an octal escape. */\nfunction escapeCodeUnit(code: number, nextCode: number): string {\n if (code === NULL_CODE) {\n return isDigit(nextCode) ? \"\\\\x00\" : \"\\\\0\";\n }\n const named = NAMED_ESCAPES.get(code);\n if (named !== undefined) {\n return named;\n }\n const isPlainAscii = code >= FIRST_PRINTABLE_ASCII && code <= LAST_ASCII;\n return isPlainAscii ? String.fromCharCode(code) : toUtf16Escape(code);\n}\n\n/** A double-quoted string literal as the TypeScript printer writes a synthesized one. */\nexport function printEscapedString(value: string): string {\n let escaped = \"\";\n for (let index = 0; index < value.length; index++) {\n escaped += escapeCodeUnit(value.charCodeAt(index), value.charCodeAt(index + 1));\n }\n return `\"${escaped}\"`;\n}\n\n/** A string literal in the given encoding (see `IrStringEncoding`). */\nexport function printStringLiteral(value: string, encoding: IrStringEncoding): string {\n return encoding === \"json\" ? JSON.stringify(value) : printEscapedString(value);\n}\n\n/** A number as the original writes it: the absolute value's `String()` text, with a minus sign. */\nexport function printNumberLiteral(value: number): string {\n return value < 0 ? `-${String(Math.abs(value))}` : String(value);\n}\n"],"names":[],"mappings":";;AAOA,MAAM,aAAA,uBAAiD,GAAA,CAAI;AAAA,EACzD,CAAC,GAAM,KAAK,CAAA;AAAA,EACZ,CAAC,IAAM,KAAK,CAAA;AAAA,EACZ,CAAC,IAAM,KAAK,CAAA;AAAA,EACZ,CAAC,GAAM,KAAK,CAAA;AAAA,EACZ,CAAC,IAAM,KAAK,CAAA;AAAA,EACZ,CAAC,IAAM,KAAK,CAAA;AAAA,EACZ,CAAC,IAAM,MAAM,CAAA;AAAA,EACb,CAAC,IAAM,KAAK;AACd,CAAC,CAAA;AACD,MAAM,SAAA,GAAY,CAAA;AAClB,MAAM,qBAAA,GAAwB,EAAA;AAC9B,MAAM,UAAA,GAAa,GAAA;AACnB,MAAM,UAAA,GAAa,EAAA;AACnB,MAAM,UAAA,GAAa,EAAA;AAEnB,SAAS,cAAc,IAAA,EAAsB;AAC3C,EAAA,OAAO,CAAA,GAAA,EAAM,IAAA,CAAK,QAAA,CAAS,EAAE,CAAA,CAAE,aAAY,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,CAAA;AAC/D;AAEA,SAAS,QAAQ,IAAA,EAAuB;AACtC,EAAA,OAAO,IAAA,IAAQ,cAAc,IAAA,IAAQ,UAAA;AACvC;AAGA,SAAS,cAAA,CAAe,MAAc,QAAA,EAA0B;AAC9D,EAAA,IAAI,SAAS,SAAA,EAAW;AACtB,IAAA,OAAO,OAAA,CAAQ,QAAQ,CAAA,GAAI,OAAA,GAAU,KAAA;AAAA,EACvC;AACA,EAAA,MAAM,KAAA,GAAQ,aAAA,CAAc,GAAA,CAAI,IAAI,CAAA;AACpC,EAAA,IAAI,UAAU,MAAA,EAAW;AACvB,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,MAAM,YAAA,GAAe,IAAA,IAAQ,qBAAA,IAAyB,IAAA,IAAQ,UAAA;AAC9D,EAAA,OAAO,eAAe,MAAA,CAAO,YAAA,CAAa,IAAI,CAAA,GAAI,cAAc,IAAI,CAAA;AACtE;AAGO,SAAS,mBAAmB,KAAA,EAAuB;AACxD,EAAA,IAAI,OAAA,GAAU,EAAA;AACd,EAAA,KAAA,IAAS,KAAA,GAAQ,CAAA,EAAG,KAAA,GAAQ,KAAA,CAAM,QAAQ,KAAA,EAAA,EAAS;AACjD,IAAA,OAAA,IAAW,cAAA,CAAe,MAAM,UAAA,CAAW,KAAK,GAAG,KAAA,CAAM,UAAA,CAAW,KAAA,GAAQ,CAAC,CAAC,CAAA;AAAA,EAChF;AACA,EAAA,OAAO,IAAI,OAAO,CAAA,CAAA,CAAA;AACpB;AAGO,SAAS,kBAAA,CAAmB,OAAe,QAAA,EAAoC;AACpF,EAAA,OAAO,aAAa,MAAA,GAAS,IAAA,CAAK,UAAU,KAAK,CAAA,GAAI,mBAAmB,KAAK,CAAA;AAC/E;AAGO,SAAS,mBAAmB,KAAA,EAAuB;AACxD,EAAA,OAAO,KAAA,GAAQ,CAAA,GAAI,CAAA,CAAA,EAAI,MAAA,CAAO,IAAA,CAAK,GAAA,CAAI,KAAK,CAAC,CAAC,CAAA,CAAA,GAAK,MAAA,CAAO,KAAK,CAAA;AACjE;;;;"}
@@ -0,0 +1,48 @@
1
+ const NAMED_ESCAPES = /* @__PURE__ */ new Map([
2
+ [9, "\\t"],
3
+ [11, "\\v"],
4
+ [12, "\\f"],
5
+ [8, "\\b"],
6
+ [13, "\\r"],
7
+ [10, "\\n"],
8
+ [92, "\\\\"],
9
+ [34, '\\"']
10
+ ]);
11
+ const NULL_CODE = 0;
12
+ const FIRST_PRINTABLE_ASCII = 32;
13
+ const LAST_ASCII = 127;
14
+ const DIGIT_ZERO = 48;
15
+ const DIGIT_NINE = 57;
16
+ function toUtf16Escape(code) {
17
+ return `\\u${code.toString(16).toUpperCase().padStart(4, "0")}`;
18
+ }
19
+ function isDigit(code) {
20
+ return code >= DIGIT_ZERO && code <= DIGIT_NINE;
21
+ }
22
+ function escapeCodeUnit(code, nextCode) {
23
+ if (code === NULL_CODE) {
24
+ return isDigit(nextCode) ? "\\x00" : "\\0";
25
+ }
26
+ const named = NAMED_ESCAPES.get(code);
27
+ if (named !== void 0) {
28
+ return named;
29
+ }
30
+ const isPlainAscii = code >= FIRST_PRINTABLE_ASCII && code <= LAST_ASCII;
31
+ return isPlainAscii ? String.fromCharCode(code) : toUtf16Escape(code);
32
+ }
33
+ function printEscapedString(value) {
34
+ let escaped = "";
35
+ for (let index = 0; index < value.length; index++) {
36
+ escaped += escapeCodeUnit(value.charCodeAt(index), value.charCodeAt(index + 1));
37
+ }
38
+ return `"${escaped}"`;
39
+ }
40
+ function printStringLiteral(value, encoding) {
41
+ return encoding === "json" ? JSON.stringify(value) : printEscapedString(value);
42
+ }
43
+ function printNumberLiteral(value) {
44
+ return value < 0 ? `-${String(Math.abs(value))}` : String(value);
45
+ }
46
+
47
+ export { printEscapedString, printNumberLiteral, printStringLiteral };
48
+ //# sourceMappingURL=literal-text.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literal-text.mjs","sources":["../../../src/application/print/literal-text.ts"],"sourcesContent":["import type { IrStringEncoding } from \"../../domain/ir/nodes.js\";\n\n/**\n * Escapes TypeScript's printer uses inside a double-quoted string literal (its `escapeString`).\n * Other characters below U+0020 use `\\uXXXX`; so does every non-ASCII code unit\n * (`escapeNonAsciiString`).\n */\nconst NAMED_ESCAPES: ReadonlyMap<number, string> = new Map([\n [0x09, \"\\\\t\"],\n [0x0b, \"\\\\v\"],\n [0x0c, \"\\\\f\"],\n [0x08, \"\\\\b\"],\n [0x0d, \"\\\\r\"],\n [0x0a, \"\\\\n\"],\n [0x5c, \"\\\\\\\\\"],\n [0x22, '\\\\\"'],\n]);\nconst NULL_CODE = 0x00;\nconst FIRST_PRINTABLE_ASCII = 0x20;\nconst LAST_ASCII = 0x7f;\nconst DIGIT_ZERO = 0x30;\nconst DIGIT_NINE = 0x39;\n\nfunction toUtf16Escape(code: number): string {\n return `\\\\u${code.toString(16).toUpperCase().padStart(4, \"0\")}`;\n}\n\nfunction isDigit(code: number): boolean {\n return code >= DIGIT_ZERO && code <= DIGIT_NINE;\n}\n\n/** `\\0` must not be followed by a digit, or it would read as an octal escape. */\nfunction escapeCodeUnit(code: number, nextCode: number): string {\n if (code === NULL_CODE) {\n return isDigit(nextCode) ? \"\\\\x00\" : \"\\\\0\";\n }\n const named = NAMED_ESCAPES.get(code);\n if (named !== undefined) {\n return named;\n }\n const isPlainAscii = code >= FIRST_PRINTABLE_ASCII && code <= LAST_ASCII;\n return isPlainAscii ? String.fromCharCode(code) : toUtf16Escape(code);\n}\n\n/** A double-quoted string literal as the TypeScript printer writes a synthesized one. */\nexport function printEscapedString(value: string): string {\n let escaped = \"\";\n for (let index = 0; index < value.length; index++) {\n escaped += escapeCodeUnit(value.charCodeAt(index), value.charCodeAt(index + 1));\n }\n return `\"${escaped}\"`;\n}\n\n/** A string literal in the given encoding (see `IrStringEncoding`). */\nexport function printStringLiteral(value: string, encoding: IrStringEncoding): string {\n return encoding === \"json\" ? JSON.stringify(value) : printEscapedString(value);\n}\n\n/** A number as the original writes it: the absolute value's `String()` text, with a minus sign. */\nexport function printNumberLiteral(value: number): string {\n return value < 0 ? `-${String(Math.abs(value))}` : String(value);\n}\n"],"names":[],"mappings":"AAOA,MAAM,aAAA,uBAAiD,GAAA,CAAI;AAAA,EACzD,CAAC,GAAM,KAAK,CAAA;AAAA,EACZ,CAAC,IAAM,KAAK,CAAA;AAAA,EACZ,CAAC,IAAM,KAAK,CAAA;AAAA,EACZ,CAAC,GAAM,KAAK,CAAA;AAAA,EACZ,CAAC,IAAM,KAAK,CAAA;AAAA,EACZ,CAAC,IAAM,KAAK,CAAA;AAAA,EACZ,CAAC,IAAM,MAAM,CAAA;AAAA,EACb,CAAC,IAAM,KAAK;AACd,CAAC,CAAA;AACD,MAAM,SAAA,GAAY,CAAA;AAClB,MAAM,qBAAA,GAAwB,EAAA;AAC9B,MAAM,UAAA,GAAa,GAAA;AACnB,MAAM,UAAA,GAAa,EAAA;AACnB,MAAM,UAAA,GAAa,EAAA;AAEnB,SAAS,cAAc,IAAA,EAAsB;AAC3C,EAAA,OAAO,CAAA,GAAA,EAAM,IAAA,CAAK,QAAA,CAAS,EAAE,CAAA,CAAE,aAAY,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,CAAA;AAC/D;AAEA,SAAS,QAAQ,IAAA,EAAuB;AACtC,EAAA,OAAO,IAAA,IAAQ,cAAc,IAAA,IAAQ,UAAA;AACvC;AAGA,SAAS,cAAA,CAAe,MAAc,QAAA,EAA0B;AAC9D,EAAA,IAAI,SAAS,SAAA,EAAW;AACtB,IAAA,OAAO,OAAA,CAAQ,QAAQ,CAAA,GAAI,OAAA,GAAU,KAAA;AAAA,EACvC;AACA,EAAA,MAAM,KAAA,GAAQ,aAAA,CAAc,GAAA,CAAI,IAAI,CAAA;AACpC,EAAA,IAAI,UAAU,MAAA,EAAW;AACvB,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,MAAM,YAAA,GAAe,IAAA,IAAQ,qBAAA,IAAyB,IAAA,IAAQ,UAAA;AAC9D,EAAA,OAAO,eAAe,MAAA,CAAO,YAAA,CAAa,IAAI,CAAA,GAAI,cAAc,IAAI,CAAA;AACtE;AAGO,SAAS,mBAAmB,KAAA,EAAuB;AACxD,EAAA,IAAI,OAAA,GAAU,EAAA;AACd,EAAA,KAAA,IAAS,KAAA,GAAQ,CAAA,EAAG,KAAA,GAAQ,KAAA,CAAM,QAAQ,KAAA,EAAA,EAAS;AACjD,IAAA,OAAA,IAAW,cAAA,CAAe,MAAM,UAAA,CAAW,KAAK,GAAG,KAAA,CAAM,UAAA,CAAW,KAAA,GAAQ,CAAC,CAAC,CAAA;AAAA,EAChF;AACA,EAAA,OAAO,IAAI,OAAO,CAAA,CAAA,CAAA;AACpB;AAGO,SAAS,kBAAA,CAAmB,OAAe,QAAA,EAAoC;AACpF,EAAA,OAAO,aAAa,MAAA,GAAS,IAAA,CAAK,UAAU,KAAK,CAAA,GAAI,mBAAmB,KAAK,CAAA;AAC/E;AAGO,SAAS,mBAAmB,KAAA,EAAuB;AACxD,EAAA,OAAO,KAAA,GAAQ,CAAA,GAAI,CAAA,CAAA,EAAI,MAAA,CAAO,IAAA,CAAK,GAAA,CAAI,KAAK,CAAC,CAAC,CAAA,CAAA,GAAK,MAAA,CAAO,KAAK,CAAA;AACjE;;"}
@@ -0,0 +1,38 @@
1
+ 'use strict';
2
+
3
+ const declarationPrinter = require('./declaration-printer.cjs');
4
+ const printOptions = require('./print-options.cjs');
5
+ const textWriter = require('./text-writer.cjs');
6
+ const typePrinter = require('./type-printer.cjs');
7
+
8
+ const DECLARATION_KINDS = /* @__PURE__ */ new Set([
9
+ "interface",
10
+ "typeAlias",
11
+ "enum",
12
+ "constArray",
13
+ "rawDeclaration"
14
+ ]);
15
+ const MEMBER_KINDS = /* @__PURE__ */ new Set(["property", "indexSignature"]);
16
+ function writePrintable(writer, node) {
17
+ if (DECLARATION_KINDS.has(node.kind)) {
18
+ declarationPrinter.writeDeclaration(writer, node);
19
+ return;
20
+ }
21
+ writer.writeLine();
22
+ if (MEMBER_KINDS.has(node.kind)) {
23
+ typePrinter.writeMember(writer, node);
24
+ } else {
25
+ typePrinter.writeType(writer, node);
26
+ }
27
+ }
28
+ function printFragments(nodes, options = printOptions.DEFAULT_PRINT_OPTIONS) {
29
+ const writer = new textWriter.TextWriter(options);
30
+ for (const node of nodes) {
31
+ writePrintable(writer, node);
32
+ }
33
+ writer.writeLine();
34
+ return writer.text;
35
+ }
36
+
37
+ exports.printFragments = printFragments;
38
+ //# sourceMappingURL=print-nodes.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"print-nodes.cjs","sources":["../../../src/application/print/print-nodes.ts"],"sourcesContent":["import type { IrDeclaration, IrMember, IrType } from \"../../domain/ir/nodes.js\";\nimport { writeDeclaration } from \"./declaration-printer.js\";\nimport { DEFAULT_PRINT_OPTIONS, type PrintOptions } from \"./print-options.js\";\nimport { TextWriter } from \"./text-writer.js\";\nimport { writeMember, writeType } from \"./type-printer.js\";\n\n/**\n * Print declarations as a TypeScript file body: one declaration per line, a line break at the end,\n * and nothing for an empty list. Pure and deterministic (ENGINEERING_PLAN §4.3).\n */\nexport function printNodes(\n declarations: readonly IrDeclaration[],\n options: PrintOptions = DEFAULT_PRINT_OPTIONS,\n): string {\n const writer = new TextWriter(options);\n for (const declaration of declarations) {\n writeDeclaration(writer, declaration);\n }\n writer.writeLine();\n return writer.text;\n}\n\n/** Anything the IR printer can print at the top level of a file. */\nexport type IrPrintable = IrDeclaration | IrMember | IrType;\n\nconst DECLARATION_KINDS: ReadonlySet<string> = new Set<IrDeclaration[\"kind\"]>([\n \"interface\",\n \"typeAlias\",\n \"enum\",\n \"constArray\",\n \"rawDeclaration\",\n]);\nconst MEMBER_KINDS: ReadonlySet<string> = new Set<IrMember[\"kind\"]>([\"property\", \"indexSignature\"]);\n\nfunction writePrintable(writer: TextWriter, node: IrPrintable): void {\n if (DECLARATION_KINDS.has(node.kind)) {\n writeDeclaration(writer, node as IrDeclaration);\n return;\n }\n writer.writeLine();\n if (MEMBER_KINDS.has(node.kind)) {\n writeMember(writer, node as IrMember);\n } else {\n writeType(writer, node as IrType);\n }\n}\n\n/**\n * Print declarations, members or types, one per line, as the TypeScript printer prints such nodes\n * placed in a file (the original `astToString` accepted any node).\n */\nexport function printFragments(\n nodes: readonly IrPrintable[],\n options: PrintOptions = DEFAULT_PRINT_OPTIONS,\n): string {\n const writer = new TextWriter(options);\n for (const node of nodes) {\n writePrintable(writer, node);\n }\n writer.writeLine();\n return writer.text;\n}\n"],"names":["writeDeclaration","writeMember","writeType","DEFAULT_PRINT_OPTIONS","TextWriter"],"mappings":";;;;;;;AAyBA,MAAM,iBAAA,uBAA6C,GAAA,CAA2B;AAAA,EAC5E,WAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAC,CAAA;AACD,MAAM,+BAAoC,IAAI,GAAA,CAAsB,CAAC,UAAA,EAAY,gBAAgB,CAAC,CAAA;AAElG,SAAS,cAAA,CAAe,QAAoB,IAAA,EAAyB;AACnE,EAAA,IAAI,iBAAA,CAAkB,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA,EAAG;AACpC,IAAAA,mCAAA,CAAiB,QAAQ,IAAqB,CAAA;AAC9C,IAAA;AAAA,EACF;AACA,EAAA,MAAA,CAAO,SAAA,EAAU;AACjB,EAAA,IAAI,YAAA,CAAa,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA,EAAG;AAC/B,IAAAC,uBAAA,CAAY,QAAQ,IAAgB,CAAA;AAAA,EACtC,CAAA,MAAO;AACL,IAAAC,qBAAA,CAAU,QAAQ,IAAc,CAAA;AAAA,EAClC;AACF;AAMO,SAAS,cAAA,CACd,KAAA,EACA,OAAA,GAAwBC,kCAAA,EAChB;AACR,EAAA,MAAM,MAAA,GAAS,IAAIC,qBAAA,CAAW,OAAO,CAAA;AACrC,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,cAAA,CAAe,QAAQ,IAAI,CAAA;AAAA,EAC7B;AACA,EAAA,MAAA,CAAO,SAAA,EAAU;AACjB,EAAA,OAAO,MAAA,CAAO,IAAA;AAChB;;"}
@@ -0,0 +1,36 @@
1
+ import { writeDeclaration } from './declaration-printer.mjs';
2
+ import { DEFAULT_PRINT_OPTIONS } from './print-options.mjs';
3
+ import { TextWriter } from './text-writer.mjs';
4
+ import { writeMember, writeType } from './type-printer.mjs';
5
+
6
+ const DECLARATION_KINDS = /* @__PURE__ */ new Set([
7
+ "interface",
8
+ "typeAlias",
9
+ "enum",
10
+ "constArray",
11
+ "rawDeclaration"
12
+ ]);
13
+ const MEMBER_KINDS = /* @__PURE__ */ new Set(["property", "indexSignature"]);
14
+ function writePrintable(writer, node) {
15
+ if (DECLARATION_KINDS.has(node.kind)) {
16
+ writeDeclaration(writer, node);
17
+ return;
18
+ }
19
+ writer.writeLine();
20
+ if (MEMBER_KINDS.has(node.kind)) {
21
+ writeMember(writer, node);
22
+ } else {
23
+ writeType(writer, node);
24
+ }
25
+ }
26
+ function printFragments(nodes, options = DEFAULT_PRINT_OPTIONS) {
27
+ const writer = new TextWriter(options);
28
+ for (const node of nodes) {
29
+ writePrintable(writer, node);
30
+ }
31
+ writer.writeLine();
32
+ return writer.text;
33
+ }
34
+
35
+ export { printFragments };
36
+ //# sourceMappingURL=print-nodes.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"print-nodes.mjs","sources":["../../../src/application/print/print-nodes.ts"],"sourcesContent":["import type { IrDeclaration, IrMember, IrType } from \"../../domain/ir/nodes.js\";\nimport { writeDeclaration } from \"./declaration-printer.js\";\nimport { DEFAULT_PRINT_OPTIONS, type PrintOptions } from \"./print-options.js\";\nimport { TextWriter } from \"./text-writer.js\";\nimport { writeMember, writeType } from \"./type-printer.js\";\n\n/**\n * Print declarations as a TypeScript file body: one declaration per line, a line break at the end,\n * and nothing for an empty list. Pure and deterministic (ENGINEERING_PLAN §4.3).\n */\nexport function printNodes(\n declarations: readonly IrDeclaration[],\n options: PrintOptions = DEFAULT_PRINT_OPTIONS,\n): string {\n const writer = new TextWriter(options);\n for (const declaration of declarations) {\n writeDeclaration(writer, declaration);\n }\n writer.writeLine();\n return writer.text;\n}\n\n/** Anything the IR printer can print at the top level of a file. */\nexport type IrPrintable = IrDeclaration | IrMember | IrType;\n\nconst DECLARATION_KINDS: ReadonlySet<string> = new Set<IrDeclaration[\"kind\"]>([\n \"interface\",\n \"typeAlias\",\n \"enum\",\n \"constArray\",\n \"rawDeclaration\",\n]);\nconst MEMBER_KINDS: ReadonlySet<string> = new Set<IrMember[\"kind\"]>([\"property\", \"indexSignature\"]);\n\nfunction writePrintable(writer: TextWriter, node: IrPrintable): void {\n if (DECLARATION_KINDS.has(node.kind)) {\n writeDeclaration(writer, node as IrDeclaration);\n return;\n }\n writer.writeLine();\n if (MEMBER_KINDS.has(node.kind)) {\n writeMember(writer, node as IrMember);\n } else {\n writeType(writer, node as IrType);\n }\n}\n\n/**\n * Print declarations, members or types, one per line, as the TypeScript printer prints such nodes\n * placed in a file (the original `astToString` accepted any node).\n */\nexport function printFragments(\n nodes: readonly IrPrintable[],\n options: PrintOptions = DEFAULT_PRINT_OPTIONS,\n): string {\n const writer = new TextWriter(options);\n for (const node of nodes) {\n writePrintable(writer, node);\n }\n writer.writeLine();\n return writer.text;\n}\n"],"names":[],"mappings":";;;;;AAyBA,MAAM,iBAAA,uBAA6C,GAAA,CAA2B;AAAA,EAC5E,WAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAC,CAAA;AACD,MAAM,+BAAoC,IAAI,GAAA,CAAsB,CAAC,UAAA,EAAY,gBAAgB,CAAC,CAAA;AAElG,SAAS,cAAA,CAAe,QAAoB,IAAA,EAAyB;AACnE,EAAA,IAAI,iBAAA,CAAkB,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA,EAAG;AACpC,IAAA,gBAAA,CAAiB,QAAQ,IAAqB,CAAA;AAC9C,IAAA;AAAA,EACF;AACA,EAAA,MAAA,CAAO,SAAA,EAAU;AACjB,EAAA,IAAI,YAAA,CAAa,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA,EAAG;AAC/B,IAAA,WAAA,CAAY,QAAQ,IAAgB,CAAA;AAAA,EACtC,CAAA,MAAO;AACL,IAAA,SAAA,CAAU,QAAQ,IAAc,CAAA;AAAA,EAClC;AACF;AAMO,SAAS,cAAA,CACd,KAAA,EACA,OAAA,GAAwB,qBAAA,EAChB;AACR,EAAA,MAAM,MAAA,GAAS,IAAI,UAAA,CAAW,OAAO,CAAA;AACrC,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,cAAA,CAAe,QAAQ,IAAI,CAAA;AAAA,EAC7B;AACA,EAAA,MAAA,CAAO,SAAA,EAAU;AACjB,EAAA,OAAO,MAAA,CAAO,IAAA;AAChB;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ const DEFAULT_PRINT_OPTIONS = { indentSize: 4, newLine: "\n" };
4
+
5
+ exports.DEFAULT_PRINT_OPTIONS = DEFAULT_PRINT_OPTIONS;
6
+ //# sourceMappingURL=print-options.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"print-options.cjs","sources":["../../../src/application/print/print-options.ts"],"sourcesContent":["/**\n * Formatting rules of the printer as data (ENGINEERING_PLAN §4.3). The defaults reproduce the\n * TypeScript printer that the original generator used: 4-space indentation and LF line endings.\n */\nexport interface PrintOptions {\n /** Columns per indentation level; also the tab width used when re-indenting comment lines. */\n readonly indentSize: number;\n readonly newLine: string;\n}\n\nexport const DEFAULT_PRINT_OPTIONS: PrintOptions = { indentSize: 4, newLine: \"\\n\" };\n"],"names":[],"mappings":";;AAUO,MAAM,qBAAA,GAAsC,EAAE,UAAA,EAAY,CAAA,EAAG,SAAS,IAAA;;"}
@@ -0,0 +1,4 @@
1
+ const DEFAULT_PRINT_OPTIONS = { indentSize: 4, newLine: "\n" };
2
+
3
+ export { DEFAULT_PRINT_OPTIONS };
4
+ //# sourceMappingURL=print-options.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"print-options.mjs","sources":["../../../src/application/print/print-options.ts"],"sourcesContent":["/**\n * Formatting rules of the printer as data (ENGINEERING_PLAN §4.3). The defaults reproduce the\n * TypeScript printer that the original generator used: 4-space indentation and LF line endings.\n */\nexport interface PrintOptions {\n /** Columns per indentation level; also the tab width used when re-indenting comment lines. */\n readonly indentSize: number;\n readonly newLine: string;\n}\n\nexport const DEFAULT_PRINT_OPTIONS: PrintOptions = { indentSize: 4, newLine: \"\\n\" };\n"],"names":[],"mappings":"AAUO,MAAM,qBAAA,GAAsC,EAAE,UAAA,EAAY,CAAA,EAAG,SAAS,IAAA;;"}
@@ -0,0 +1,63 @@
1
+ 'use strict';
2
+
3
+ const LINE_FEED = 10;
4
+ const CARRIAGE_RETURN = 13;
5
+ const LINE_SEPARATOR = 8232;
6
+ const PARAGRAPH_SEPARATOR = 8233;
7
+ function isLineBreak(code) {
8
+ return code === LINE_FEED || code === CARRIAGE_RETURN || code === LINE_SEPARATOR || code === PARAGRAPH_SEPARATOR;
9
+ }
10
+ class TextWriter {
11
+ #options;
12
+ #output = "";
13
+ #indent = 0;
14
+ #isAtLineStart = true;
15
+ constructor(options) {
16
+ this.#options = options;
17
+ }
18
+ get indent() {
19
+ return this.#indent;
20
+ }
21
+ get options() {
22
+ return this.#options;
23
+ }
24
+ get text() {
25
+ return this.#output;
26
+ }
27
+ increaseIndent() {
28
+ this.#indent++;
29
+ }
30
+ decreaseIndent() {
31
+ this.#indent--;
32
+ }
33
+ /** Write text, indenting it first when it starts a line. */
34
+ write(text) {
35
+ if (text.length === 0) {
36
+ return;
37
+ }
38
+ const prefix = this.#isAtLineStart ? this.indentString(this.#indent) : "";
39
+ this.rawWrite(prefix + text);
40
+ }
41
+ /** Write text exactly as given. */
42
+ rawWrite(text) {
43
+ this.#output += text;
44
+ this.#updateLineStart(text);
45
+ }
46
+ /** End the current line; does nothing when nothing has been written on it yet. */
47
+ writeLine() {
48
+ if (!this.#isAtLineStart) {
49
+ this.rawWrite(this.#options.newLine);
50
+ }
51
+ }
52
+ indentString(level) {
53
+ return " ".repeat(level * this.#options.indentSize);
54
+ }
55
+ // Like TypeScript: any write leaves the writer mid-line unless the text ends with a line break.
56
+ #updateLineStart(text) {
57
+ this.#isAtLineStart = text.length > 0 && isLineBreak(text.charCodeAt(text.length - 1));
58
+ }
59
+ }
60
+
61
+ exports.TextWriter = TextWriter;
62
+ exports.isLineBreak = isLineBreak;
63
+ //# sourceMappingURL=text-writer.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-writer.cjs","sources":["../../../src/application/print/text-writer.ts"],"sourcesContent":["import type { PrintOptions } from \"./print-options.js\";\n\nconst LINE_FEED = 0x0a;\nconst CARRIAGE_RETURN = 0x0d;\nconst LINE_SEPARATOR = 0x2028;\nconst PARAGRAPH_SEPARATOR = 0x2029;\n\n/** Line breaks as the TypeScript scanner defines them (`isLineBreak`). */\nexport function isLineBreak(code: number): boolean {\n return (\n code === LINE_FEED ||\n code === CARRIAGE_RETURN ||\n code === LINE_SEPARATOR ||\n code === PARAGRAPH_SEPARATOR\n );\n}\n\n/**\n * Output buffer with indentation, modeled on the TypeScript printer's text writer: `write` indents\n * text that starts a line, `rawWrite` never does, and `writeLine` does nothing at the start of a\n * line. Matching these rules is what makes comment re-indentation byte-identical to the original.\n */\nexport class TextWriter {\n readonly #options: PrintOptions;\n #output = \"\";\n #indent = 0;\n #isAtLineStart = true;\n\n constructor(options: PrintOptions) {\n this.#options = options;\n }\n\n get indent(): number {\n return this.#indent;\n }\n\n get options(): PrintOptions {\n return this.#options;\n }\n\n get text(): string {\n return this.#output;\n }\n\n increaseIndent(): void {\n this.#indent++;\n }\n\n decreaseIndent(): void {\n this.#indent--;\n }\n\n /** Write text, indenting it first when it starts a line. */\n write(text: string): void {\n if (text.length === 0) {\n return;\n }\n const prefix = this.#isAtLineStart ? this.indentString(this.#indent) : \"\";\n this.rawWrite(prefix + text);\n }\n\n /** Write text exactly as given. */\n rawWrite(text: string): void {\n this.#output += text;\n this.#updateLineStart(text);\n }\n\n /** End the current line; does nothing when nothing has been written on it yet. */\n writeLine(): void {\n if (!this.#isAtLineStart) {\n this.rawWrite(this.#options.newLine);\n }\n }\n\n indentString(level: number): string {\n return \" \".repeat(level * this.#options.indentSize);\n }\n\n // Like TypeScript: any write leaves the writer mid-line unless the text ends with a line break.\n #updateLineStart(text: string): void {\n this.#isAtLineStart = text.length > 0 && isLineBreak(text.charCodeAt(text.length - 1));\n }\n}\n"],"names":[],"mappings":";;AAEA,MAAM,SAAA,GAAY,EAAA;AAClB,MAAM,eAAA,GAAkB,EAAA;AACxB,MAAM,cAAA,GAAiB,IAAA;AACvB,MAAM,mBAAA,GAAsB,IAAA;AAGrB,SAAS,YAAY,IAAA,EAAuB;AACjD,EAAA,OACE,SAAS,SAAA,IACT,IAAA,KAAS,eAAA,IACT,IAAA,KAAS,kBACT,IAAA,KAAS,mBAAA;AAEb;AAOO,MAAM,UAAA,CAAW;AAAA,EACb,QAAA;AAAA,EACT,OAAA,GAAU,EAAA;AAAA,EACV,OAAA,GAAU,CAAA;AAAA,EACV,cAAA,GAAiB,IAAA;AAAA,EAEjB,YAAY,OAAA,EAAuB;AACjC,IAAA,IAAA,CAAK,QAAA,GAAW,OAAA;AAAA,EAClB;AAAA,EAEA,IAAI,MAAA,GAAiB;AACnB,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,EACd;AAAA,EAEA,IAAI,OAAA,GAAwB;AAC1B,IAAA,OAAO,IAAA,CAAK,QAAA;AAAA,EACd;AAAA,EAEA,IAAI,IAAA,GAAe;AACjB,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,EACd;AAAA,EAEA,cAAA,GAAuB;AACrB,IAAA,IAAA,CAAK,OAAA,EAAA;AAAA,EACP;AAAA,EAEA,cAAA,GAAuB;AACrB,IAAA,IAAA,CAAK,OAAA,EAAA;AAAA,EACP;AAAA;AAAA,EAGA,MAAM,IAAA,EAAoB;AACxB,IAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,SAAS,IAAA,CAAK,cAAA,GAAiB,KAAK,YAAA,CAAa,IAAA,CAAK,OAAO,CAAA,GAAI,EAAA;AACvE,IAAA,IAAA,CAAK,QAAA,CAAS,SAAS,IAAI,CAAA;AAAA,EAC7B;AAAA;AAAA,EAGA,SAAS,IAAA,EAAoB;AAC3B,IAAA,IAAA,CAAK,OAAA,IAAW,IAAA;AAChB,IAAA,IAAA,CAAK,iBAAiB,IAAI,CAAA;AAAA,EAC5B;AAAA;AAAA,EAGA,SAAA,GAAkB;AAChB,IAAA,IAAI,CAAC,KAAK,cAAA,EAAgB;AACxB,MAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,QAAA,CAAS,OAAO,CAAA;AAAA,IACrC;AAAA,EACF;AAAA,EAEA,aAAa,KAAA,EAAuB;AAClC,IAAA,OAAO,GAAA,CAAI,MAAA,CAAO,KAAA,GAAQ,IAAA,CAAK,SAAS,UAAU,CAAA;AAAA,EACpD;AAAA;AAAA,EAGA,iBAAiB,IAAA,EAAoB;AACnC,IAAA,IAAA,CAAK,cAAA,GAAiB,IAAA,CAAK,MAAA,GAAS,CAAA,IAAK,WAAA,CAAY,KAAK,UAAA,CAAW,IAAA,CAAK,MAAA,GAAS,CAAC,CAAC,CAAA;AAAA,EACvF;AACF;;;"}
@@ -0,0 +1,60 @@
1
+ const LINE_FEED = 10;
2
+ const CARRIAGE_RETURN = 13;
3
+ const LINE_SEPARATOR = 8232;
4
+ const PARAGRAPH_SEPARATOR = 8233;
5
+ function isLineBreak(code) {
6
+ return code === LINE_FEED || code === CARRIAGE_RETURN || code === LINE_SEPARATOR || code === PARAGRAPH_SEPARATOR;
7
+ }
8
+ class TextWriter {
9
+ #options;
10
+ #output = "";
11
+ #indent = 0;
12
+ #isAtLineStart = true;
13
+ constructor(options) {
14
+ this.#options = options;
15
+ }
16
+ get indent() {
17
+ return this.#indent;
18
+ }
19
+ get options() {
20
+ return this.#options;
21
+ }
22
+ get text() {
23
+ return this.#output;
24
+ }
25
+ increaseIndent() {
26
+ this.#indent++;
27
+ }
28
+ decreaseIndent() {
29
+ this.#indent--;
30
+ }
31
+ /** Write text, indenting it first when it starts a line. */
32
+ write(text) {
33
+ if (text.length === 0) {
34
+ return;
35
+ }
36
+ const prefix = this.#isAtLineStart ? this.indentString(this.#indent) : "";
37
+ this.rawWrite(prefix + text);
38
+ }
39
+ /** Write text exactly as given. */
40
+ rawWrite(text) {
41
+ this.#output += text;
42
+ this.#updateLineStart(text);
43
+ }
44
+ /** End the current line; does nothing when nothing has been written on it yet. */
45
+ writeLine() {
46
+ if (!this.#isAtLineStart) {
47
+ this.rawWrite(this.#options.newLine);
48
+ }
49
+ }
50
+ indentString(level) {
51
+ return " ".repeat(level * this.#options.indentSize);
52
+ }
53
+ // Like TypeScript: any write leaves the writer mid-line unless the text ends with a line break.
54
+ #updateLineStart(text) {
55
+ this.#isAtLineStart = text.length > 0 && isLineBreak(text.charCodeAt(text.length - 1));
56
+ }
57
+ }
58
+
59
+ export { TextWriter, isLineBreak };
60
+ //# sourceMappingURL=text-writer.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-writer.mjs","sources":["../../../src/application/print/text-writer.ts"],"sourcesContent":["import type { PrintOptions } from \"./print-options.js\";\n\nconst LINE_FEED = 0x0a;\nconst CARRIAGE_RETURN = 0x0d;\nconst LINE_SEPARATOR = 0x2028;\nconst PARAGRAPH_SEPARATOR = 0x2029;\n\n/** Line breaks as the TypeScript scanner defines them (`isLineBreak`). */\nexport function isLineBreak(code: number): boolean {\n return (\n code === LINE_FEED ||\n code === CARRIAGE_RETURN ||\n code === LINE_SEPARATOR ||\n code === PARAGRAPH_SEPARATOR\n );\n}\n\n/**\n * Output buffer with indentation, modeled on the TypeScript printer's text writer: `write` indents\n * text that starts a line, `rawWrite` never does, and `writeLine` does nothing at the start of a\n * line. Matching these rules is what makes comment re-indentation byte-identical to the original.\n */\nexport class TextWriter {\n readonly #options: PrintOptions;\n #output = \"\";\n #indent = 0;\n #isAtLineStart = true;\n\n constructor(options: PrintOptions) {\n this.#options = options;\n }\n\n get indent(): number {\n return this.#indent;\n }\n\n get options(): PrintOptions {\n return this.#options;\n }\n\n get text(): string {\n return this.#output;\n }\n\n increaseIndent(): void {\n this.#indent++;\n }\n\n decreaseIndent(): void {\n this.#indent--;\n }\n\n /** Write text, indenting it first when it starts a line. */\n write(text: string): void {\n if (text.length === 0) {\n return;\n }\n const prefix = this.#isAtLineStart ? this.indentString(this.#indent) : \"\";\n this.rawWrite(prefix + text);\n }\n\n /** Write text exactly as given. */\n rawWrite(text: string): void {\n this.#output += text;\n this.#updateLineStart(text);\n }\n\n /** End the current line; does nothing when nothing has been written on it yet. */\n writeLine(): void {\n if (!this.#isAtLineStart) {\n this.rawWrite(this.#options.newLine);\n }\n }\n\n indentString(level: number): string {\n return \" \".repeat(level * this.#options.indentSize);\n }\n\n // Like TypeScript: any write leaves the writer mid-line unless the text ends with a line break.\n #updateLineStart(text: string): void {\n this.#isAtLineStart = text.length > 0 && isLineBreak(text.charCodeAt(text.length - 1));\n }\n}\n"],"names":[],"mappings":"AAEA,MAAM,SAAA,GAAY,EAAA;AAClB,MAAM,eAAA,GAAkB,EAAA;AACxB,MAAM,cAAA,GAAiB,IAAA;AACvB,MAAM,mBAAA,GAAsB,IAAA;AAGrB,SAAS,YAAY,IAAA,EAAuB;AACjD,EAAA,OACE,SAAS,SAAA,IACT,IAAA,KAAS,eAAA,IACT,IAAA,KAAS,kBACT,IAAA,KAAS,mBAAA;AAEb;AAOO,MAAM,UAAA,CAAW;AAAA,EACb,QAAA;AAAA,EACT,OAAA,GAAU,EAAA;AAAA,EACV,OAAA,GAAU,CAAA;AAAA,EACV,cAAA,GAAiB,IAAA;AAAA,EAEjB,YAAY,OAAA,EAAuB;AACjC,IAAA,IAAA,CAAK,QAAA,GAAW,OAAA;AAAA,EAClB;AAAA,EAEA,IAAI,MAAA,GAAiB;AACnB,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,EACd;AAAA,EAEA,IAAI,OAAA,GAAwB;AAC1B,IAAA,OAAO,IAAA,CAAK,QAAA;AAAA,EACd;AAAA,EAEA,IAAI,IAAA,GAAe;AACjB,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,EACd;AAAA,EAEA,cAAA,GAAuB;AACrB,IAAA,IAAA,CAAK,OAAA,EAAA;AAAA,EACP;AAAA,EAEA,cAAA,GAAuB;AACrB,IAAA,IAAA,CAAK,OAAA,EAAA;AAAA,EACP;AAAA;AAAA,EAGA,MAAM,IAAA,EAAoB;AACxB,IAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,SAAS,IAAA,CAAK,cAAA,GAAiB,KAAK,YAAA,CAAa,IAAA,CAAK,OAAO,CAAA,GAAI,EAAA;AACvE,IAAA,IAAA,CAAK,QAAA,CAAS,SAAS,IAAI,CAAA;AAAA,EAC7B;AAAA;AAAA,EAGA,SAAS,IAAA,EAAoB;AAC3B,IAAA,IAAA,CAAK,OAAA,IAAW,IAAA;AAChB,IAAA,IAAA,CAAK,iBAAiB,IAAI,CAAA;AAAA,EAC5B;AAAA;AAAA,EAGA,SAAA,GAAkB;AAChB,IAAA,IAAI,CAAC,KAAK,cAAA,EAAgB;AACxB,MAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,QAAA,CAAS,OAAO,CAAA;AAAA,IACrC;AAAA,EACF;AAAA,EAEA,aAAa,KAAA,EAAuB;AAClC,IAAA,OAAO,GAAA,CAAI,MAAA,CAAO,KAAA,GAAQ,IAAA,CAAK,SAAS,UAAU,CAAA;AAAA,EACpD;AAAA;AAAA,EAGA,iBAAiB,IAAA,EAAoB;AACnC,IAAA,IAAA,CAAK,cAAA,GAAiB,IAAA,CAAK,MAAA,GAAS,CAAA,IAAK,WAAA,CAAY,KAAK,UAAA,CAAW,IAAA,CAAK,MAAA,GAAS,CAAC,CAAC,CAAA;AAAA,EACvF;AACF;;"}