@baseplate-dev/core-generators 0.1.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 (304) hide show
  1. package/LICENSE +390 -0
  2. package/dist/constants/core-packages.d.ts +21 -0
  3. package/dist/constants/core-packages.d.ts.map +1 -0
  4. package/dist/constants/core-packages.js +26 -0
  5. package/dist/constants/core-packages.js.map +1 -0
  6. package/dist/constants/index.d.ts +2 -0
  7. package/dist/constants/index.d.ts.map +1 -0
  8. package/dist/constants/index.js +2 -0
  9. package/dist/constants/index.js.map +1 -0
  10. package/dist/constants/node.d.ts +3 -0
  11. package/dist/constants/node.d.ts.map +1 -0
  12. package/dist/constants/node.js +3 -0
  13. package/dist/constants/node.js.map +1 -0
  14. package/dist/generators/docker/docker-compose/docker-compose.generator.d.ts +17 -0
  15. package/dist/generators/docker/docker-compose/docker-compose.generator.d.ts.map +1 -0
  16. package/dist/generators/docker/docker-compose/docker-compose.generator.js +83 -0
  17. package/dist/generators/docker/docker-compose/docker-compose.generator.js.map +1 -0
  18. package/dist/generators/docker/docker-compose/postgres.d.ts +8 -0
  19. package/dist/generators/docker/docker-compose/postgres.d.ts.map +1 -0
  20. package/dist/generators/docker/docker-compose/postgres.js +22 -0
  21. package/dist/generators/docker/docker-compose/postgres.js.map +1 -0
  22. package/dist/generators/docker/docker-compose/redis.d.ts +8 -0
  23. package/dist/generators/docker/docker-compose/redis.d.ts.map +1 -0
  24. package/dist/generators/docker/docker-compose/redis.js +21 -0
  25. package/dist/generators/docker/docker-compose/redis.js.map +1 -0
  26. package/dist/generators/docker/docker-compose/types.d.ts +5 -0
  27. package/dist/generators/docker/docker-compose/types.d.ts.map +1 -0
  28. package/dist/generators/docker/docker-compose/types.js +2 -0
  29. package/dist/generators/docker/docker-compose/types.js.map +1 -0
  30. package/dist/generators/docker/index.d.ts +2 -0
  31. package/dist/generators/docker/index.d.ts.map +1 -0
  32. package/dist/generators/docker/index.js +2 -0
  33. package/dist/generators/docker/index.js.map +1 -0
  34. package/dist/generators/index.d.ts +3 -0
  35. package/dist/generators/index.d.ts.map +1 -0
  36. package/dist/generators/index.js +3 -0
  37. package/dist/generators/index.js.map +1 -0
  38. package/dist/generators/node/_composers/index.d.ts +2 -0
  39. package/dist/generators/node/_composers/index.d.ts.map +1 -0
  40. package/dist/generators/node/_composers/index.js +2 -0
  41. package/dist/generators/node/_composers/index.js.map +1 -0
  42. package/dist/generators/node/_composers/node.d.ts +4 -0
  43. package/dist/generators/node/_composers/node.d.ts.map +1 -0
  44. package/dist/generators/node/_composers/node.js +18 -0
  45. package/dist/generators/node/_composers/node.js.map +1 -0
  46. package/dist/generators/node/eslint/eslint.generator.d.ts +33 -0
  47. package/dist/generators/node/eslint/eslint.generator.d.ts.map +1 -0
  48. package/dist/generators/node/eslint/eslint.generator.js +110 -0
  49. package/dist/generators/node/eslint/eslint.generator.js.map +1 -0
  50. package/dist/generators/node/eslint/generated/ts-templates.d.ts +9 -0
  51. package/dist/generators/node/eslint/generated/ts-templates.d.ts.map +1 -0
  52. package/dist/generators/node/eslint/generated/ts-templates.js +14 -0
  53. package/dist/generators/node/eslint/generated/ts-templates.js.map +1 -0
  54. package/dist/generators/node/eslint/react-rules.d.ts +2 -0
  55. package/dist/generators/node/eslint/react-rules.d.ts.map +1 -0
  56. package/dist/generators/node/eslint/react-rules.js +59 -0
  57. package/dist/generators/node/eslint/react-rules.js.map +1 -0
  58. package/dist/generators/node/eslint/templates/eslint.config.js +219 -0
  59. package/dist/generators/node/eslint/vitest-rules.d.ts +2 -0
  60. package/dist/generators/node/eslint/vitest-rules.d.ts.map +1 -0
  61. package/dist/generators/node/eslint/vitest-rules.js +17 -0
  62. package/dist/generators/node/eslint/vitest-rules.js.map +1 -0
  63. package/dist/generators/node/index.d.ts +9 -0
  64. package/dist/generators/node/index.d.ts.map +1 -0
  65. package/dist/generators/node/index.js +9 -0
  66. package/dist/generators/node/index.js.map +1 -0
  67. package/dist/generators/node/node/node.generator.d.ts +72 -0
  68. package/dist/generators/node/node/node.generator.d.ts.map +1 -0
  69. package/dist/generators/node/node/node.generator.js +149 -0
  70. package/dist/generators/node/node/node.generator.js.map +1 -0
  71. package/dist/generators/node/node/package-dependencies-container.d.ts +41 -0
  72. package/dist/generators/node/node/package-dependencies-container.d.ts.map +1 -0
  73. package/dist/generators/node/node/package-dependencies-container.js +104 -0
  74. package/dist/generators/node/node/package-dependencies-container.js.map +1 -0
  75. package/dist/generators/node/node-git-ignore/node-git-ignore.generator.d.ts +15 -0
  76. package/dist/generators/node/node-git-ignore/node-git-ignore.generator.d.ts.map +1 -0
  77. package/dist/generators/node/node-git-ignore/node-git-ignore.generator.js +75 -0
  78. package/dist/generators/node/node-git-ignore/node-git-ignore.generator.js.map +1 -0
  79. package/dist/generators/node/prettier/prettier.generator.d.ts +33 -0
  80. package/dist/generators/node/prettier/prettier.generator.d.ts.map +1 -0
  81. package/dist/generators/node/prettier/prettier.generator.js +191 -0
  82. package/dist/generators/node/prettier/prettier.generator.js.map +1 -0
  83. package/dist/generators/node/ts-utils/generated/ts-import-maps.d.ts +21 -0
  84. package/dist/generators/node/ts-utils/generated/ts-import-maps.d.ts.map +1 -0
  85. package/dist/generators/node/ts-utils/generated/ts-import-maps.js +22 -0
  86. package/dist/generators/node/ts-utils/generated/ts-import-maps.js.map +1 -0
  87. package/dist/generators/node/ts-utils/generated/ts-templates.d.ts +7 -0
  88. package/dist/generators/node/ts-utils/generated/ts-templates.d.ts.map +1 -0
  89. package/dist/generators/node/ts-utils/generated/ts-templates.js +32 -0
  90. package/dist/generators/node/ts-utils/generated/ts-templates.js.map +1 -0
  91. package/dist/generators/node/ts-utils/templates/arrays.ts +13 -0
  92. package/dist/generators/node/ts-utils/templates/normalize-types.ts +12 -0
  93. package/dist/generators/node/ts-utils/templates/nulls.ts +33 -0
  94. package/dist/generators/node/ts-utils/templates/string.ts +11 -0
  95. package/dist/generators/node/ts-utils/ts-utils.generator.d.ts +17 -0
  96. package/dist/generators/node/ts-utils/ts-utils.generator.d.ts.map +1 -0
  97. package/dist/generators/node/ts-utils/ts-utils.generator.js +48 -0
  98. package/dist/generators/node/ts-utils/ts-utils.generator.js.map +1 -0
  99. package/dist/generators/node/typescript/compiler-types.d.ts +178 -0
  100. package/dist/generators/node/typescript/compiler-types.d.ts.map +1 -0
  101. package/dist/generators/node/typescript/compiler-types.js +70 -0
  102. package/dist/generators/node/typescript/compiler-types.js.map +1 -0
  103. package/dist/generators/node/typescript/typescript.generator.d.ts +117 -0
  104. package/dist/generators/node/typescript/typescript.generator.d.ts.map +1 -0
  105. package/dist/generators/node/typescript/typescript.generator.js +198 -0
  106. package/dist/generators/node/typescript/typescript.generator.js.map +1 -0
  107. package/dist/generators/node/vitest/generated/ts-templates.d.ts +9 -0
  108. package/dist/generators/node/vitest/generated/ts-templates.d.ts.map +1 -0
  109. package/dist/generators/node/vitest/generated/ts-templates.js +15 -0
  110. package/dist/generators/node/vitest/generated/ts-templates.js.map +1 -0
  111. package/dist/generators/node/vitest/templates/global-setup.ts +5 -0
  112. package/dist/generators/node/vitest/templates/vitest.config.ts +5 -0
  113. package/dist/generators/node/vitest/vitest.generator.d.ts +26 -0
  114. package/dist/generators/node/vitest/vitest.generator.d.ts.map +1 -0
  115. package/dist/generators/node/vitest/vitest.generator.js +93 -0
  116. package/dist/generators/node/vitest/vitest.generator.js.map +1 -0
  117. package/dist/index.d.ts +7 -0
  118. package/dist/index.js +7 -0
  119. package/dist/index.js.map +1 -0
  120. package/dist/providers/index.d.ts +3 -0
  121. package/dist/providers/index.d.ts.map +1 -0
  122. package/dist/providers/index.js +3 -0
  123. package/dist/providers/index.js.map +1 -0
  124. package/dist/providers/project.d.ts +5 -0
  125. package/dist/providers/project.d.ts.map +1 -0
  126. package/dist/providers/project.js +3 -0
  127. package/dist/providers/project.js.map +1 -0
  128. package/dist/providers/scopes.d.ts +3 -0
  129. package/dist/providers/scopes.d.ts.map +1 -0
  130. package/dist/providers/scopes.js +4 -0
  131. package/dist/providers/scopes.js.map +1 -0
  132. package/dist/renderers/index.d.ts +2 -0
  133. package/dist/renderers/index.d.ts.map +1 -0
  134. package/dist/renderers/index.js +2 -0
  135. package/dist/renderers/index.js.map +1 -0
  136. package/dist/renderers/typescript/actions/index.d.ts +4 -0
  137. package/dist/renderers/typescript/actions/index.d.ts.map +1 -0
  138. package/dist/renderers/typescript/actions/index.js +4 -0
  139. package/dist/renderers/typescript/actions/index.js.map +1 -0
  140. package/dist/renderers/typescript/actions/render-ts-fragment-action.d.ts +12 -0
  141. package/dist/renderers/typescript/actions/render-ts-fragment-action.d.ts.map +1 -0
  142. package/dist/renderers/typescript/actions/render-ts-fragment-action.js +25 -0
  143. package/dist/renderers/typescript/actions/render-ts-fragment-action.js.map +1 -0
  144. package/dist/renderers/typescript/actions/render-ts-template-file-action.d.ts +32 -0
  145. package/dist/renderers/typescript/actions/render-ts-template-file-action.d.ts.map +1 -0
  146. package/dist/renderers/typescript/actions/render-ts-template-file-action.js +65 -0
  147. package/dist/renderers/typescript/actions/render-ts-template-file-action.js.map +1 -0
  148. package/dist/renderers/typescript/actions/render-ts-template-group-action.d.ts +58 -0
  149. package/dist/renderers/typescript/actions/render-ts-template-group-action.d.ts.map +1 -0
  150. package/dist/renderers/typescript/actions/render-ts-template-group-action.js +69 -0
  151. package/dist/renderers/typescript/actions/render-ts-template-group-action.js.map +1 -0
  152. package/dist/renderers/typescript/extractor/extract-ts-template-variables.d.ts +18 -0
  153. package/dist/renderers/typescript/extractor/extract-ts-template-variables.d.ts.map +1 -0
  154. package/dist/renderers/typescript/extractor/extract-ts-template-variables.js +38 -0
  155. package/dist/renderers/typescript/extractor/extract-ts-template-variables.js.map +1 -0
  156. package/dist/renderers/typescript/extractor/index.d.ts +2 -0
  157. package/dist/renderers/typescript/extractor/index.d.ts.map +1 -0
  158. package/dist/renderers/typescript/extractor/index.js +2 -0
  159. package/dist/renderers/typescript/extractor/index.js.map +1 -0
  160. package/dist/renderers/typescript/extractor/organize-ts-template-imports.d.ts +26 -0
  161. package/dist/renderers/typescript/extractor/organize-ts-template-imports.d.ts.map +1 -0
  162. package/dist/renderers/typescript/extractor/organize-ts-template-imports.js +175 -0
  163. package/dist/renderers/typescript/extractor/organize-ts-template-imports.js.map +1 -0
  164. package/dist/renderers/typescript/extractor/preprocess-code-for-extraction-hack.d.ts +17 -0
  165. package/dist/renderers/typescript/extractor/preprocess-code-for-extraction-hack.d.ts.map +1 -0
  166. package/dist/renderers/typescript/extractor/preprocess-code-for-extraction-hack.js +46 -0
  167. package/dist/renderers/typescript/extractor/preprocess-code-for-extraction-hack.js.map +1 -0
  168. package/dist/renderers/typescript/extractor/templates/imports-file.d.ts +2 -0
  169. package/dist/renderers/typescript/extractor/templates/imports-file.d.ts.map +1 -0
  170. package/dist/renderers/typescript/extractor/templates/imports-file.js +35 -0
  171. package/dist/renderers/typescript/extractor/templates/imports-file.js.map +1 -0
  172. package/dist/renderers/typescript/extractor/ts-template-file-extractor.d.ts +167 -0
  173. package/dist/renderers/typescript/extractor/ts-template-file-extractor.d.ts.map +1 -0
  174. package/dist/renderers/typescript/extractor/ts-template-file-extractor.js +279 -0
  175. package/dist/renderers/typescript/extractor/ts-template-file-extractor.js.map +1 -0
  176. package/dist/renderers/typescript/extractor/write-ts-project-exports.d.ts +96 -0
  177. package/dist/renderers/typescript/extractor/write-ts-project-exports.d.ts.map +1 -0
  178. package/dist/renderers/typescript/extractor/write-ts-project-exports.js +139 -0
  179. package/dist/renderers/typescript/extractor/write-ts-project-exports.js.map +1 -0
  180. package/dist/renderers/typescript/fragments/creators.d.ts +29 -0
  181. package/dist/renderers/typescript/fragments/creators.d.ts.map +1 -0
  182. package/dist/renderers/typescript/fragments/creators.js +53 -0
  183. package/dist/renderers/typescript/fragments/creators.js.map +1 -0
  184. package/dist/renderers/typescript/fragments/index.d.ts +4 -0
  185. package/dist/renderers/typescript/fragments/index.d.ts.map +1 -0
  186. package/dist/renderers/typescript/fragments/index.js +3 -0
  187. package/dist/renderers/typescript/fragments/index.js.map +1 -0
  188. package/dist/renderers/typescript/fragments/types.d.ts +65 -0
  189. package/dist/renderers/typescript/fragments/types.d.ts.map +1 -0
  190. package/dist/renderers/typescript/fragments/types.js +2 -0
  191. package/dist/renderers/typescript/fragments/types.js.map +1 -0
  192. package/dist/renderers/typescript/fragments/utils.d.ts +51 -0
  193. package/dist/renderers/typescript/fragments/utils.d.ts.map +1 -0
  194. package/dist/renderers/typescript/fragments/utils.js +134 -0
  195. package/dist/renderers/typescript/fragments/utils.js.map +1 -0
  196. package/dist/renderers/typescript/import-maps/index.d.ts +4 -0
  197. package/dist/renderers/typescript/import-maps/index.d.ts.map +1 -0
  198. package/dist/renderers/typescript/import-maps/index.js +3 -0
  199. package/dist/renderers/typescript/import-maps/index.js.map +1 -0
  200. package/dist/renderers/typescript/import-maps/transform-ts-imports-with-map.d.ts +19 -0
  201. package/dist/renderers/typescript/import-maps/transform-ts-imports-with-map.d.ts.map +1 -0
  202. package/dist/renderers/typescript/import-maps/transform-ts-imports-with-map.js +54 -0
  203. package/dist/renderers/typescript/import-maps/transform-ts-imports-with-map.js.map +1 -0
  204. package/dist/renderers/typescript/import-maps/ts-import-map.d.ts +10 -0
  205. package/dist/renderers/typescript/import-maps/ts-import-map.d.ts.map +1 -0
  206. package/dist/renderers/typescript/import-maps/ts-import-map.js +39 -0
  207. package/dist/renderers/typescript/import-maps/ts-import-map.js.map +1 -0
  208. package/dist/renderers/typescript/import-maps/types.d.ts +28 -0
  209. package/dist/renderers/typescript/import-maps/types.d.ts.map +1 -0
  210. package/dist/renderers/typescript/import-maps/types.js +2 -0
  211. package/dist/renderers/typescript/import-maps/types.js.map +1 -0
  212. package/dist/renderers/typescript/imports/builder.d.ts +49 -0
  213. package/dist/renderers/typescript/imports/builder.d.ts.map +1 -0
  214. package/dist/renderers/typescript/imports/builder.js +47 -0
  215. package/dist/renderers/typescript/imports/builder.js.map +1 -0
  216. package/dist/renderers/typescript/imports/index.d.ts +8 -0
  217. package/dist/renderers/typescript/imports/index.d.ts.map +1 -0
  218. package/dist/renderers/typescript/imports/index.js +7 -0
  219. package/dist/renderers/typescript/imports/index.js.map +1 -0
  220. package/dist/renderers/typescript/imports/merge-ts-import-declarations.d.ts +20 -0
  221. package/dist/renderers/typescript/imports/merge-ts-import-declarations.d.ts.map +1 -0
  222. package/dist/renderers/typescript/imports/merge-ts-import-declarations.js +114 -0
  223. package/dist/renderers/typescript/imports/merge-ts-import-declarations.js.map +1 -0
  224. package/dist/renderers/typescript/imports/normalize-module-specifier.d.ts +40 -0
  225. package/dist/renderers/typescript/imports/normalize-module-specifier.d.ts.map +1 -0
  226. package/dist/renderers/typescript/imports/normalize-module-specifier.js +133 -0
  227. package/dist/renderers/typescript/imports/normalize-module-specifier.js.map +1 -0
  228. package/dist/renderers/typescript/imports/sort-imports/get-import-sort-group.d.ts +31 -0
  229. package/dist/renderers/typescript/imports/sort-imports/get-import-sort-group.d.ts.map +1 -0
  230. package/dist/renderers/typescript/imports/sort-imports/get-import-sort-group.js +169 -0
  231. package/dist/renderers/typescript/imports/sort-imports/get-import-sort-group.js.map +1 -0
  232. package/dist/renderers/typescript/imports/sort-imports/index.d.ts +2 -0
  233. package/dist/renderers/typescript/imports/sort-imports/index.d.ts.map +1 -0
  234. package/dist/renderers/typescript/imports/sort-imports/index.js +2 -0
  235. package/dist/renderers/typescript/imports/sort-imports/index.js.map +1 -0
  236. package/dist/renderers/typescript/imports/sort-imports/sort-import-declarations.d.ts +32 -0
  237. package/dist/renderers/typescript/imports/sort-imports/sort-import-declarations.d.ts.map +1 -0
  238. package/dist/renderers/typescript/imports/sort-imports/sort-import-declarations.js +72 -0
  239. package/dist/renderers/typescript/imports/sort-imports/sort-import-declarations.js.map +1 -0
  240. package/dist/renderers/typescript/imports/ts-morph-operations.d.ts +42 -0
  241. package/dist/renderers/typescript/imports/ts-morph-operations.d.ts.map +1 -0
  242. package/dist/renderers/typescript/imports/ts-morph-operations.js +145 -0
  243. package/dist/renderers/typescript/imports/ts-morph-operations.js.map +1 -0
  244. package/dist/renderers/typescript/imports/ts-path-maps.d.ts +18 -0
  245. package/dist/renderers/typescript/imports/ts-path-maps.d.ts.map +1 -0
  246. package/dist/renderers/typescript/imports/ts-path-maps.js +39 -0
  247. package/dist/renderers/typescript/imports/ts-path-maps.js.map +1 -0
  248. package/dist/renderers/typescript/imports/types.d.ts +73 -0
  249. package/dist/renderers/typescript/imports/types.d.ts.map +1 -0
  250. package/dist/renderers/typescript/imports/types.js +2 -0
  251. package/dist/renderers/typescript/imports/types.js.map +1 -0
  252. package/dist/renderers/typescript/index.d.ts +9 -0
  253. package/dist/renderers/typescript/index.d.ts.map +1 -0
  254. package/dist/renderers/typescript/index.js +9 -0
  255. package/dist/renderers/typescript/index.js.map +1 -0
  256. package/dist/renderers/typescript/renderers/file.d.ts +18 -0
  257. package/dist/renderers/typescript/renderers/file.d.ts.map +1 -0
  258. package/dist/renderers/typescript/renderers/file.js +91 -0
  259. package/dist/renderers/typescript/renderers/file.js.map +1 -0
  260. package/dist/renderers/typescript/renderers/index.d.ts +3 -0
  261. package/dist/renderers/typescript/renderers/index.d.ts.map +1 -0
  262. package/dist/renderers/typescript/renderers/index.js +3 -0
  263. package/dist/renderers/typescript/renderers/index.js.map +1 -0
  264. package/dist/renderers/typescript/renderers/template.d.ts +21 -0
  265. package/dist/renderers/typescript/renderers/template.d.ts.map +1 -0
  266. package/dist/renderers/typescript/renderers/template.js +132 -0
  267. package/dist/renderers/typescript/renderers/template.js.map +1 -0
  268. package/dist/renderers/typescript/templates/creators.d.ts +10 -0
  269. package/dist/renderers/typescript/templates/creators.d.ts.map +1 -0
  270. package/dist/renderers/typescript/templates/creators.js +9 -0
  271. package/dist/renderers/typescript/templates/creators.js.map +1 -0
  272. package/dist/renderers/typescript/templates/index.d.ts +3 -0
  273. package/dist/renderers/typescript/templates/index.d.ts.map +1 -0
  274. package/dist/renderers/typescript/templates/index.js +3 -0
  275. package/dist/renderers/typescript/templates/index.js.map +1 -0
  276. package/dist/renderers/typescript/templates/types.d.ts +119 -0
  277. package/dist/renderers/typescript/templates/types.d.ts.map +1 -0
  278. package/dist/renderers/typescript/templates/types.js +43 -0
  279. package/dist/renderers/typescript/templates/types.js.map +1 -0
  280. package/dist/renderers/typescript/utils/index.d.ts +2 -0
  281. package/dist/renderers/typescript/utils/index.d.ts.map +1 -0
  282. package/dist/renderers/typescript/utils/index.js +2 -0
  283. package/dist/renderers/typescript/utils/index.js.map +1 -0
  284. package/dist/renderers/typescript/utils/ts-code-utils.d.ts +200 -0
  285. package/dist/renderers/typescript/utils/ts-code-utils.d.ts.map +1 -0
  286. package/dist/renderers/typescript/utils/ts-code-utils.js +431 -0
  287. package/dist/renderers/typescript/utils/ts-code-utils.js.map +1 -0
  288. package/dist/utils/extract-packages.d.ts +8 -0
  289. package/dist/utils/extract-packages.d.ts.map +1 -0
  290. package/dist/utils/extract-packages.js +10 -0
  291. package/dist/utils/extract-packages.js.map +1 -0
  292. package/dist/utils/index.d.ts +2 -0
  293. package/dist/utils/index.d.ts.map +1 -0
  294. package/dist/utils/index.js +2 -0
  295. package/dist/utils/index.js.map +1 -0
  296. package/dist/writers/index.d.ts +2 -0
  297. package/dist/writers/index.d.ts.map +1 -0
  298. package/dist/writers/index.js +2 -0
  299. package/dist/writers/index.js.map +1 -0
  300. package/dist/writers/json.d.ts +21 -0
  301. package/dist/writers/json.d.ts.map +1 -0
  302. package/dist/writers/json.js +14 -0
  303. package/dist/writers/json.js.map +1 -0
  304. package/package.json +88 -0
@@ -0,0 +1,72 @@
1
+ import { mapGroupBy } from '@baseplate-dev/utils';
2
+ import { sortBy } from 'es-toolkit';
3
+ import { getImportSortGroup } from './get-import-sort-group.js';
4
+ /**
5
+ * Default options for sorting import declarations
6
+ */
7
+ const defaultSortOptions = {
8
+ groups: [
9
+ 'type',
10
+ ['builtin', 'external'],
11
+ 'internal-type',
12
+ 'internal',
13
+ ['parent-type', 'sibling-type', 'index-type'],
14
+ ['parent', 'sibling', 'index'],
15
+ ['side-effect', 'side-effect-style'],
16
+ 'unknown',
17
+ ],
18
+ ignoreCase: true,
19
+ internalPatterns: [],
20
+ };
21
+ /**
22
+ * Sorts import declarations according to the specified group order,
23
+ * preserving the order of side-effect imports.
24
+ *
25
+ * @param importDeclarations - Array of import declarations to sort
26
+ * @param options - Configuration options for sorting
27
+ * @returns Array of arrays, where each inner array contains imports of the same group
28
+ */
29
+ export function sortImportDeclarations(importDeclarations, options = {}) {
30
+ // Merge with default options
31
+ const { internalPatterns, groups, ignoreCase, } = {
32
+ ...defaultSortOptions,
33
+ ...options,
34
+ };
35
+ const allowedSortGroups = groups.flatMap((group) => typeof group === 'string' ? [group] : group);
36
+ const declarationsWithMetadata = importDeclarations.map((importDeclaration) => {
37
+ const sortGroup = getImportSortGroup(importDeclaration, {
38
+ internalPatterns,
39
+ allowedSortGroups,
40
+ });
41
+ return {
42
+ importDeclaration,
43
+ sortGroup,
44
+ isSideEffect: sortGroup === 'side-effect' || sortGroup === 'side-effect-style',
45
+ };
46
+ });
47
+ const groupedDeclarations = mapGroupBy(declarationsWithMetadata, (declarationWithMetadata) => {
48
+ const { sortGroup } = declarationWithMetadata;
49
+ return groups.findIndex((group) => typeof group === 'string'
50
+ ? group === sortGroup
51
+ : group.includes(sortGroup));
52
+ });
53
+ // Create result buckets for each group
54
+ const declarationGroups = [
55
+ ...groups.map((_, idx) => groupedDeclarations.get(idx) ?? []),
56
+ groupedDeclarations.get(-1) ?? [],
57
+ ].filter((group) => group.length > 0);
58
+ return declarationGroups.map((group) => {
59
+ // Sort non-side-effect imports by source and side-effect imports are left as-is
60
+ const nonSideEffectImports = group.filter((declarationWithMetadata) => !declarationWithMetadata.isSideEffect);
61
+ const sideEffectImports = group.filter((declarationWithMetadata) => declarationWithMetadata.isSideEffect);
62
+ return [
63
+ ...sortBy(nonSideEffectImports, [
64
+ (declarationWithMetadata) => ignoreCase
65
+ ? declarationWithMetadata.importDeclaration.moduleSpecifier.toLowerCase()
66
+ : declarationWithMetadata.importDeclaration.moduleSpecifier,
67
+ ]),
68
+ ...sideEffectImports,
69
+ ].map((declarationWithMetadata) => declarationWithMetadata.importDeclaration);
70
+ });
71
+ }
72
+ //# sourceMappingURL=sort-import-declarations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort-import-declarations.js","sourceRoot":"","sources":["../../../../../src/renderers/typescript/imports/sort-imports/sort-import-declarations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { type CodeBlockWriter, type ImportDeclaration, type SourceFile } from 'ts-morph';
2
+ import type { TsImportDeclaration } from './types.js';
3
+ /**
4
+ * Get all side effect imports from a source file
5
+ * @param file - The source file to get side effect imports from
6
+ * @returns All side effect imports from the source file
7
+ */
8
+ export declare function getSideEffectImportsFromSourceFile(file: SourceFile): ImportDeclaration[];
9
+ /**
10
+ * Get all ts-morph import declarations from a source file that are not side effect imports
11
+ * @param file - The source file to get import declarations from
12
+ * @returns All ts-morph import declarations from the source file that are not side effect imports
13
+ */
14
+ export declare function getTsMorphImportDeclarationsFromSourceFile(file: SourceFile): ImportDeclaration[];
15
+ /**
16
+ * Convert ts-morph import declarations to TsImportDeclaration
17
+ * @param declaration - The import declaration to convert
18
+ * @returns The converted import declaration
19
+ */
20
+ export declare function convertTsMorphImportDeclarationToTsImportDeclaration(declaration: ImportDeclaration): TsImportDeclaration;
21
+ /**
22
+ * Write import declarations with a CodeBlockWriter
23
+ * @param writer - The CodeBlockWriter to write to
24
+ * @param imports - The import declarations to write grouped by sections
25
+ */
26
+ export declare function writeGroupedImportDeclarationsWithCodeBlockWriter(writer: CodeBlockWriter, imports: TsImportDeclaration[][]): void;
27
+ /**
28
+ * Replace import declarations in a source file preserving the leading trivia and any
29
+ * directives that may be present.
30
+ *
31
+ * Note: It currently does not handle comments above the first import statement and will
32
+ * push it below the imports.
33
+ *
34
+ * @param sourceFile - The source file to replace import declarations in
35
+ * @param oldImportDeclarations - The old import declarations to replace
36
+ * @param newImportDeclarations - The new import declarations to replace with
37
+ */
38
+ export declare function replaceImportDeclarationsInSourceFile(sourceFile: SourceFile, oldImportDeclarations: ImportDeclaration[], newImportDeclarations: TsImportDeclaration[][], { beforeImportsWriter, afterImportsWriter, }?: {
39
+ beforeImportsWriter?: (writer: CodeBlockWriter) => void;
40
+ afterImportsWriter?: (writer: CodeBlockWriter) => void;
41
+ }): void;
42
+ //# sourceMappingURL=ts-morph-operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-morph-operations.d.ts","sourceRoot":"","sources":["../../../../src/renderers/typescript/imports/ts-morph-operations.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EAEtB,KAAK,UAAU,EAChB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAWtD;;;;GAIG;AACH,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,UAAU,GACf,iBAAiB,EAAE,CAErB;AAED;;;;GAIG;AACH,wBAAgB,0CAA0C,CACxD,IAAI,EAAE,UAAU,GACf,iBAAiB,EAAE,CAIrB;AAED;;;;GAIG;AACH,wBAAgB,oDAAoD,CAClE,WAAW,EAAE,iBAAiB,GAC7B,mBAAmB,CAYrB;AAkDD;;;;GAIG;AACH,wBAAgB,iDAAiD,CAC/D,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,mBAAmB,EAAE,EAAE,GAC/B,IAAI,CAON;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qCAAqC,CACnD,UAAU,EAAE,UAAU,EACtB,qBAAqB,EAAE,iBAAiB,EAAE,EAC1C,qBAAqB,EAAE,mBAAmB,EAAE,EAAE,EAC9C,EACE,mBAAmB,EACnB,kBAAkB,GACnB,GAAE;IACD,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IACxD,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;CACnD,GACL,IAAI,CAiDN"}
@@ -0,0 +1,145 @@
1
+ import { Node, } from 'ts-morph';
2
+ function isSideEffectImport(declaration) {
3
+ return (!declaration.isTypeOnly() &&
4
+ declaration.getNamespaceImport() === undefined &&
5
+ declaration.getDefaultImport() === undefined &&
6
+ declaration.getNamedImports().length === 0);
7
+ }
8
+ /**
9
+ * Get all side effect imports from a source file
10
+ * @param file - The source file to get side effect imports from
11
+ * @returns All side effect imports from the source file
12
+ */
13
+ export function getSideEffectImportsFromSourceFile(file) {
14
+ return file.getImportDeclarations().filter(isSideEffectImport);
15
+ }
16
+ /**
17
+ * Get all ts-morph import declarations from a source file that are not side effect imports
18
+ * @param file - The source file to get import declarations from
19
+ * @returns All ts-morph import declarations from the source file that are not side effect imports
20
+ */
21
+ export function getTsMorphImportDeclarationsFromSourceFile(file) {
22
+ return file
23
+ .getImportDeclarations()
24
+ .filter((declaration) => !isSideEffectImport(declaration));
25
+ }
26
+ /**
27
+ * Convert ts-morph import declarations to TsImportDeclaration
28
+ * @param declaration - The import declaration to convert
29
+ * @returns The converted import declaration
30
+ */
31
+ export function convertTsMorphImportDeclarationToTsImportDeclaration(declaration) {
32
+ return {
33
+ moduleSpecifier: declaration.getModuleSpecifier().getLiteralValue(),
34
+ isTypeOnly: declaration.isTypeOnly(),
35
+ namespaceImport: declaration.getNamespaceImport()?.getText(),
36
+ defaultImport: declaration.getDefaultImport()?.getText(),
37
+ namedImports: declaration.getNamedImports().map((namedImport) => ({
38
+ name: namedImport.getName(),
39
+ alias: namedImport.getAliasNode()?.getText(),
40
+ isTypeOnly: namedImport.isTypeOnly(),
41
+ })),
42
+ };
43
+ }
44
+ function writeImportDeclaration(writer, importDeclaration) {
45
+ const { namespaceImport, defaultImport, namedImports = [], moduleSpecifier: source, isTypeOnly, } = importDeclaration;
46
+ const hasNamedImports = namedImports.length > 0;
47
+ if (!!namespaceImport && (!!defaultImport || hasNamedImports)) {
48
+ throw new Error('Cannot have an import with both namespace and named/default imports!');
49
+ }
50
+ writer.write('import');
51
+ if (!!namespaceImport || !!defaultImport || hasNamedImports) {
52
+ writer.conditionalWrite(isTypeOnly, ' type');
53
+ if (namespaceImport) {
54
+ writer.write(` * as ${namespaceImport}`);
55
+ }
56
+ if (defaultImport) {
57
+ writer.write(` ${defaultImport}`);
58
+ }
59
+ if (hasNamedImports) {
60
+ writer.conditionalWrite(!!defaultImport, ',');
61
+ // sort named imports
62
+ writer.write(' ');
63
+ writer.write('{');
64
+ for (const [i, namedImport] of namedImports.entries()) {
65
+ writer.conditionalWrite(i !== 0, ',');
66
+ writer.conditionalWrite(namedImport.isTypeOnly, ' type');
67
+ writer.write(` ${namedImport.name}`);
68
+ if (namedImport.alias) {
69
+ writer.write(` as ${namedImport.alias}`);
70
+ }
71
+ }
72
+ writer.write(' }');
73
+ }
74
+ writer.write(' from');
75
+ }
76
+ writer.write(' ');
77
+ writer.quote(source);
78
+ writer.write(';\n');
79
+ }
80
+ /**
81
+ * Write import declarations with a CodeBlockWriter
82
+ * @param writer - The CodeBlockWriter to write to
83
+ * @param imports - The import declarations to write grouped by sections
84
+ */
85
+ export function writeGroupedImportDeclarationsWithCodeBlockWriter(writer, imports) {
86
+ for (const importSection of imports) {
87
+ for (const importDeclaration of importSection) {
88
+ writeImportDeclaration(writer, importDeclaration);
89
+ }
90
+ writer.write('\n');
91
+ }
92
+ }
93
+ /**
94
+ * Replace import declarations in a source file preserving the leading trivia and any
95
+ * directives that may be present.
96
+ *
97
+ * Note: It currently does not handle comments above the first import statement and will
98
+ * push it below the imports.
99
+ *
100
+ * @param sourceFile - The source file to replace import declarations in
101
+ * @param oldImportDeclarations - The old import declarations to replace
102
+ * @param newImportDeclarations - The new import declarations to replace with
103
+ */
104
+ export function replaceImportDeclarationsInSourceFile(sourceFile, oldImportDeclarations, newImportDeclarations, { beforeImportsWriter, afterImportsWriter, } = {}) {
105
+ const firstLine = sourceFile.getFullText().split('\n').at(0);
106
+ // Get first non-directive node and insert after that node
107
+ const firstNonDirectiveNode = oldImportDeclarations.at(0)?.getFullStart() === 0
108
+ ? undefined
109
+ : sourceFile.getStatements().find((node) => {
110
+ // look for things like "use client"
111
+ if (!Node.isExpressionStatement(node))
112
+ return true;
113
+ const children = node.forEachChildAsArray();
114
+ if (children.length !== 1)
115
+ return true;
116
+ const child = children[0];
117
+ return !Node.isStringLiteral(child);
118
+ });
119
+ const insertionPosition = firstNonDirectiveNode?.getNonWhitespaceStart() ?? 0;
120
+ // special case shebang to remove the first line if it's a shebang
121
+ const firstNonDirectiveNodeHasShebang = firstNonDirectiveNode
122
+ ?.getFullText()
123
+ .startsWith('#!');
124
+ for (const importDeclaration of oldImportDeclarations) {
125
+ importDeclaration.remove();
126
+ }
127
+ sourceFile.insertText(insertionPosition, (writer) => {
128
+ if (beforeImportsWriter) {
129
+ beforeImportsWriter(writer);
130
+ }
131
+ writeGroupedImportDeclarationsWithCodeBlockWriter(writer, newImportDeclarations);
132
+ if (afterImportsWriter) {
133
+ afterImportsWriter(writer);
134
+ }
135
+ });
136
+ // and special case handling if the first non directive node has a shebang
137
+ if (firstNonDirectiveNodeHasShebang) {
138
+ sourceFile.replaceWithText(sourceFile.getFullText().replaceAll(`${firstLine}\n`, ''));
139
+ }
140
+ // re-insert the first line if it's a shebang since ts-morph will remove it with the import
141
+ if (firstLine?.startsWith('#!')) {
142
+ sourceFile.insertText(0, `${firstLine}\n\n`);
143
+ }
144
+ }
145
+ //# sourceMappingURL=ts-morph-operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-morph-operations.js","sourceRoot":"","sources":["../../../../src/renderers/typescript/imports/ts-morph-operations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { TsPathMapEntry } from './types.js';
2
+ /**
3
+ * Generate TsPathMapEntry list from baseUrl and paths.
4
+ *
5
+ * @param baseUrl The base URL of the project
6
+ * @param paths The paths to generate the TsPathMapEntry list from
7
+ * @returns A list of TsPathMapEntry
8
+ */
9
+ export declare function generatePathMapEntries(baseUrl: string | undefined, paths: Record<string, string[]>): TsPathMapEntry[];
10
+ /**
11
+ * Convert TsPathMapEntry list to regexes matching internal modules.
12
+ * Handles entries with and without a single wildcard '*'.
13
+ *
14
+ * @param entries The TsPathMapEntry list to convert to regexes
15
+ * @returns A list of regexes
16
+ */
17
+ export declare function pathMapEntriesToRegexes(entries: TsPathMapEntry[]): RegExp[];
18
+ //# sourceMappingURL=ts-path-maps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-path-maps.d.ts","sourceRoot":"","sources":["../../../../src/renderers/typescript/imports/ts-path-maps.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAC9B,cAAc,EAAE,CAYlB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,EAAE,CAQ3E"}
@@ -0,0 +1,39 @@
1
+ import { escapeRegExp } from 'es-toolkit';
2
+ import path from 'node:path';
3
+ /**
4
+ * Generate TsPathMapEntry list from baseUrl and paths.
5
+ *
6
+ * @param baseUrl The base URL of the project
7
+ * @param paths The paths to generate the TsPathMapEntry list from
8
+ * @returns A list of TsPathMapEntry
9
+ */
10
+ export function generatePathMapEntries(baseUrl, paths) {
11
+ return Object.entries(paths).flatMap(([alias, targets]) => {
12
+ if (targets.length !== 1) {
13
+ throw new Error('We do not support tsconfig paths with multiple values');
14
+ }
15
+ return [
16
+ {
17
+ from: alias,
18
+ to: `./${path.posix.join(baseUrl ?? '.', targets[0]).replaceAll('\\', '/')}`,
19
+ },
20
+ ];
21
+ });
22
+ }
23
+ /**
24
+ * Convert TsPathMapEntry list to regexes matching internal modules.
25
+ * Handles entries with and without a single wildcard '*'.
26
+ *
27
+ * @param entries The TsPathMapEntry list to convert to regexes
28
+ * @returns A list of regexes
29
+ */
30
+ export function pathMapEntriesToRegexes(entries) {
31
+ return entries.map(({ from }) => {
32
+ if (from.includes('*')) {
33
+ const [prefix, suffix] = from.split('*');
34
+ return new RegExp(`^${escapeRegExp(prefix)}.*${escapeRegExp(suffix)}$`);
35
+ }
36
+ return new RegExp(`^${escapeRegExp(from)}$`);
37
+ });
38
+ }
39
+ //# sourceMappingURL=ts-path-maps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-path-maps.js","sourceRoot":"","sources":["../../../../src/renderers/typescript/imports/ts-path-maps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAA2B,EAC3B,KAA+B;IAE/B,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE;QACxD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO;YACL;gBACE,IAAI,EAAE,KAAK;gBACX,EAAE,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;aAC7E;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAyB;IAC/D,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;QAC9B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACzC,OAAO,IAAI,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,KAAK,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,IAAI,MAAM,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Represents a named import
3
+ */
4
+ export interface TsNamedImport {
5
+ /**
6
+ * Name of the import
7
+ */
8
+ name: string;
9
+ /**
10
+ * Optional alias for the import
11
+ */
12
+ alias?: string;
13
+ /**
14
+ * Whether the import is a type-only import
15
+ */
16
+ isTypeOnly?: boolean;
17
+ }
18
+ /**
19
+ * Represents a single import declaration
20
+ */
21
+ export interface TsImportDeclaration {
22
+ /**
23
+ * The module specifier for the import
24
+ */
25
+ moduleSpecifier: string;
26
+ /**
27
+ * Whether the import is a type-only import
28
+ */
29
+ isTypeOnly?: boolean;
30
+ /**
31
+ * The namespace import, e.g. `* as React`
32
+ */
33
+ namespaceImport?: string;
34
+ /**
35
+ * The default import, e.g. `import React from 'react'`
36
+ */
37
+ defaultImport?: string;
38
+ /**
39
+ * The named imports, e.g. `import { React } from 'react'`
40
+ */
41
+ namedImports?: TsNamedImport[];
42
+ }
43
+ /**
44
+ * Represents a mapping entry for TypeScript path aliases.
45
+ * Used to convert a path alias to a project directory location with their baseUrl included.
46
+ *
47
+ * Only final * is accepted
48
+ *
49
+ * @example
50
+ * For tsconfig.json:
51
+ * ```json
52
+ * {
53
+ * "baseUrl": "./src",
54
+ * "paths": {
55
+ * "@src/*": ["./*"]
56
+ * }
57
+ * }
58
+ * ```
59
+ * The corresponding PathMapEntry would be:
60
+ * ```ts
61
+ * {
62
+ * from: "@src/*",
63
+ * to: "./src/*"
64
+ * }
65
+ * ```
66
+ */
67
+ export interface TsPathMapEntry {
68
+ /** The alias to map from (e.g. "@src/*") */
69
+ from: string;
70
+ /** The project relative path to map to (e.g. "./src/app/*") */
71
+ to: string;
72
+ }
73
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/renderers/typescript/imports/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,YAAY,CAAC,EAAE,aAAa,EAAE,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,WAAW,cAAc;IAC7B,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,EAAE,EAAE,MAAM,CAAC;CACZ"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/renderers/typescript/imports/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ export * from './actions/index.js';
2
+ export * from './extractor/index.js';
3
+ export * from './fragments/index.js';
4
+ export * from './import-maps/index.js';
5
+ export * from './imports/index.js';
6
+ export * from './renderers/index.js';
7
+ export * from './templates/index.js';
8
+ export * from './utils/index.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/renderers/typescript/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,9 @@
1
+ export * from './actions/index.js';
2
+ export * from './extractor/index.js';
3
+ export * from './fragments/index.js';
4
+ export * from './import-maps/index.js';
5
+ export * from './imports/index.js';
6
+ export * from './renderers/index.js';
7
+ export * from './templates/index.js';
8
+ export * from './utils/index.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/renderers/typescript/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { TsPositionedHoistedFragment } from '../fragments/types.js';
2
+ import type { SortImportDeclarationsOptions } from '../imports/index.js';
3
+ import type { TsTemplateFileVariableValue } from '../templates/types.js';
4
+ import type { RenderTsTemplateOptions } from './template.js';
5
+ export interface RenderTsCodeFileTemplateOptions extends RenderTsTemplateOptions {
6
+ importSortOptions?: Partial<SortImportDeclarationsOptions>;
7
+ resolveModule?: (moduleSpecifier: string) => string;
8
+ }
9
+ interface RenderTsCodeFileTemplateInput {
10
+ templateContents: string;
11
+ variables?: Record<string, TsTemplateFileVariableValue>;
12
+ importMapProviders?: Record<string, unknown>;
13
+ positionedHoistedFragments?: TsPositionedHoistedFragment[];
14
+ options?: RenderTsCodeFileTemplateOptions;
15
+ }
16
+ export declare function renderTsCodeFileTemplate({ templateContents, variables, importMapProviders, positionedHoistedFragments, options, }: RenderTsCodeFileTemplateInput): string;
17
+ export {};
18
+ //# sourceMappingURL=file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../../src/renderers/typescript/renderers/file.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,2BAA2B,EAC5B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAEzE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAa7D,MAAM,WAAW,+BACf,SAAQ,uBAAuB;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC3D,aAAa,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,MAAM,CAAC;CACrD;AAgHD,UAAU,6BAA6B;IACrC,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;IACxD,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,0BAA0B,CAAC,EAAE,2BAA2B,EAAE,CAAC;IAC3D,OAAO,CAAC,EAAE,+BAA+B,CAAC;CAC3C;AAED,wBAAgB,wBAAwB,CAAC,EACvC,gBAAgB,EAChB,SAAc,EACd,kBAAuB,EACvB,0BAA+B,EAC/B,OAAY,GACb,EAAE,6BAA6B,GAAG,MAAM,CAkCxC"}
@@ -0,0 +1,91 @@
1
+ import { Project } from 'ts-morph';
2
+ import { transformTsImportsWithMap } from '../import-maps/transform-ts-imports-with-map.js';
3
+ import { sortImportDeclarations } from '../imports/index.js';
4
+ import { mergeTsImportDeclarations } from '../imports/merge-ts-import-declarations.js';
5
+ import { convertTsMorphImportDeclarationToTsImportDeclaration, getSideEffectImportsFromSourceFile, getTsMorphImportDeclarationsFromSourceFile, replaceImportDeclarationsInSourceFile, } from '../imports/ts-morph-operations.js';
6
+ import { renderTsTemplateToTsCodeFragment } from './template.js';
7
+ function mergeImportsAndHoistedFragments(file, imports, hoistedFragments, importMaps, positionedHoistedFragments, { resolveModule, importSortOptions, includeMetadata, }) {
8
+ // Get the import declarations from the source file
9
+ const importDeclarationsFromFile = getTsMorphImportDeclarationsFromSourceFile(file);
10
+ // Convert the import declarations to TsImportDeclaration
11
+ const tsImportDeclarations = [
12
+ ...transformTsImportsWithMap(importDeclarationsFromFile.map(convertTsMorphImportDeclarationToTsImportDeclaration), importMaps),
13
+ ...imports,
14
+ ];
15
+ const normalizedTsImportDeclarations = tsImportDeclarations.map((declaration) => ({
16
+ ...declaration,
17
+ moduleSpecifier: resolveModule
18
+ ? resolveModule(declaration.moduleSpecifier)
19
+ : declaration.moduleSpecifier,
20
+ }));
21
+ // Sort and group the import declarations
22
+ const groupedImportDeclarations = sortImportDeclarations(mergeTsImportDeclarations(normalizedTsImportDeclarations), importSortOptions);
23
+ // Combine the hoisted fragments with the positioned hoisted fragments
24
+ // Note: Positioned hoisted fragments are currently limited in their functionality
25
+ // such as not supporting hoisted fragments and no deduplication of keys.
26
+ // This can be improved in the future but since the use-case is very limited,
27
+ // we'll just throw an error if this happens.
28
+ const sortedPositionedHoistedFragments = positionedHoistedFragments.sort((a, b) => a.key.localeCompare(b.key));
29
+ if (new Set(sortedPositionedHoistedFragments.map((f) => f.key)).size !==
30
+ sortedPositionedHoistedFragments.length) {
31
+ throw new Error('Positioned hoisted fragments must have unique keys');
32
+ }
33
+ const afterImportsHoistedFragments = [
34
+ ...hoistedFragments,
35
+ ...sortedPositionedHoistedFragments.filter((f) => f.position === 'afterImports'),
36
+ ];
37
+ const beforeImportsHoistedFragments = sortedPositionedHoistedFragments.filter((f) => f.position === 'beforeImports');
38
+ function writeHoistedFragments(writer, fragments) {
39
+ for (const h of fragments) {
40
+ if (includeMetadata) {
41
+ writer.writeLine(`/* HOISTED:${h.key}:START */`);
42
+ }
43
+ writer.writeLine(h.contents);
44
+ if (includeMetadata) {
45
+ writer.writeLine(`/* HOISTED:${h.key}:END */`);
46
+ }
47
+ writer.writeLine('');
48
+ }
49
+ }
50
+ replaceImportDeclarationsInSourceFile(file, importDeclarationsFromFile, groupedImportDeclarations, {
51
+ beforeImportsWriter: (writer) => {
52
+ writeHoistedFragments(writer, beforeImportsHoistedFragments);
53
+ },
54
+ afterImportsWriter: (writer) => {
55
+ writeHoistedFragments(writer, afterImportsHoistedFragments);
56
+ },
57
+ });
58
+ // Resolve any side effect imports if necessary
59
+ if (resolveModule) {
60
+ const sideEffectImports = getSideEffectImportsFromSourceFile(file);
61
+ for (const importDeclaration of sideEffectImports) {
62
+ const moduleSpecifier = importDeclaration
63
+ .getModuleSpecifier()
64
+ .getLiteralValue();
65
+ const resolvedModuleSpecifier = resolveModule(moduleSpecifier);
66
+ importDeclaration.setModuleSpecifier(resolvedModuleSpecifier);
67
+ }
68
+ }
69
+ }
70
+ export function renderTsCodeFileTemplate({ templateContents, variables = {}, importMapProviders = {}, positionedHoistedFragments = [], options = {}, }) {
71
+ // Render the template into a code fragment
72
+ const { contents, imports, hoistedFragments } = renderTsTemplateToTsCodeFragment(templateContents, variables, {
73
+ prefix: options.prefix,
74
+ ...options,
75
+ });
76
+ if (!imports?.length &&
77
+ !hoistedFragments?.length &&
78
+ Object.keys(importMapProviders).length === 0 &&
79
+ !/^import\s+/gm.test(contents)) {
80
+ return contents;
81
+ }
82
+ // Create a ts-morph project and source file
83
+ const project = new Project({
84
+ useInMemoryFileSystem: true,
85
+ });
86
+ const file = project.createSourceFile('./file.ts', contents);
87
+ // Merge in imports and hoisted fragments
88
+ mergeImportsAndHoistedFragments(file, imports ?? [], hoistedFragments ?? [], new Map(Object.entries(importMapProviders)), positionedHoistedFragments, options);
89
+ return file.getFullText();
90
+ }
91
+ //# sourceMappingURL=file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../../../src/renderers/typescript/renderers/file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './file.js';
2
+ export * from './template.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/renderers/typescript/renderers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './file.js';
2
+ export * from './template.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/renderers/typescript/renderers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { TsCodeFragment } from '../fragments/types.js';
2
+ import type { TsTemplateFileVariableValue } from '../templates/types.js';
3
+ export interface RenderTsTemplateOptions {
4
+ /**
5
+ * Whether to include metadata in the rendered template to allow reverse generation.
6
+ */
7
+ includeMetadata?: boolean;
8
+ /**
9
+ * The prefix to use for the template variables.
10
+ */
11
+ prefix?: string;
12
+ }
13
+ /**
14
+ * Render a template to a code fragment.
15
+ * @param template - The template to render.
16
+ * @param variables - The variables to render the template with.
17
+ * @param options - The options for the render.
18
+ * @returns The rendered code fragment.
19
+ */
20
+ export declare function renderTsTemplateToTsCodeFragment(template: string, variables: Record<string, TsTemplateFileVariableValue>, options?: RenderTsTemplateOptions): TsCodeFragment;
21
+ //# sourceMappingURL=template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../../src/renderers/typescript/renderers/template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAIzE,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAcD;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,EACtD,OAAO,GAAE,uBAA4B,GACpC,cAAc,CAsLhB"}